/*    HTTP Host:  static.ak.fbcdn.net                                          */
/*    Generated:  May 14th 2009 4:13:53 PM PDT                                 */
/*      Machine:  10.16.140.110                                                */
/*       Source:  Global Cache                                                 */
/*     Location:  js/242mhaywwfpc84ww.pkg.js h:148m7n56                        */
/*       Locale:  de_DE                                                        */
/*         Path:  js/242mhaywwfpc84ww.pkg.js                                   */


var ReviewsApp={writeReview:false,writeReviewElem:null,ON_RATING_SET:'reviews/on_rating_set',ON_REVIEW_SUBMITTED:'reviews/on_review_submitted',IMAGE_STAR_ON:null,IMAGE_STAR_OFF:null,IMAGE_STAR_GRAY:null,initialize:function(star_on,star_off,star_gray){ReviewsApp.IMAGE_STAR_ON=star_on;ReviewsApp.IMAGE_STAR_OFF=star_off;ReviewsApp.IMAGE_STAR_GRAY=star_gray;var preload=[star_on,star_gray,star_off];for(var ii=0;ii<preload.length;ii++){(new Image()).src=preload[ii];}}};function reviews_show_editor_dialog(reviewee_id,is_delete){var src='/ajax/applications/reviews/dialog/editor.php?of='+reviewee_id;var button=_tx("Senden");if(is_delete){src+='&delete';button=_tx("L\u00f6schen");}
Dialog.showFormAjax(_tx("Rezension l\u00f6schen"),src,button,true);}
function reviews_show_editor_inline(elem){hide('review_editor_status');toggle(ge('reviews_inline_editor'));ReviewsApp.writeReviewElem=elem;}
function reviews_set_rating(rating){var input=ge('review_rating');input.value=rating;for(var i=1;i<=5;i++){var img=$('review_rating_star'+i).getElementsByTagName('img')[0];if(i<=rating){img.src=ReviewsApp.IMAGE_STAR_ON;}else{img.src=ReviewsApp.IMAGE_STAR_OFF;}}
Arbiter.inform(ReviewsApp.ON_RATING_SET,{element:input});return false;}
function reviews_hover_rating(rating){var input=ge('review_rating');if(!(input.value>0)){for(var i=1;i<=5;i++){var img=$('review_rating_star'+i).getElementsByTagName('img')[0];if(i<=rating){img.src=ReviewsApp.IMAGE_STAR_ON;}else{img.src=ReviewsApp.IMAGE_STAR_GRAY;}}}else{return false;}}
function reviews_submit(reviewee_id,review_id,error_status,error_message){if(error_status){new Dialog().setTitle(error_status).setBody(error_message).setModal(true).setButtons([Dialog.CLOSE]).show();return false;}
var blurb_element=ge('review_blurb');var rating_element=ge('review_rating');var blurb=blurb_element.value;var rating=rating_element.value;var review_id=$('review_id').value;blurb_element.disabled=true;var no_rating=(rating<1)||(rating>5);if(no_rating){var msg=_tx("Du musst noch bewerten");var review_editor_error=$('review_editor_error');set_inner_html(review_editor_error,msg);show(review_editor_error);blurb_element.disabled=false;return false;}else{var reviews_async_response=function(asyncResponse){var msg=_tx("Eintrag erfolgreich abgesendet.");var review_editor_status=$('review_editor_status');set_inner_html(review_editor_status,msg);if(review_id>0){var review_element=ge('review_'+review_id);review_element.parentNode.removeChild(review_element);}
var container_element=ge('new_review_container');var payload=asyncResponse.getPayload();if(payload.reload){window.location.reload();}
if(payload.oid){$('review_id').value=parseInt(payload.oid);}
set_inner_html(container_element,payload.markup);show(review_editor_status);setTimeout(function(){hide(review_editor_status);},3000);hide('review_editor_error');hide('reviews_inline_editor');if(ReviewsApp.writeReview){if(ReviewsApp.writeReviewElem){set_inner_html(ReviewsApp.writeReviewElem,_tx("Rezension aktualisieren"));}
ReviewsApp.writeReview=false;}};new AsyncRequest().setURI('/ajax/applications/reviews/inline/editor.php?of='+reviewee_id).setData({'review_id':review_id,'rating':rating,'blurb':blurb}).setHandler(reviews_async_response).send();blurb_element.disabled=false;return true;}}

function contact_dialog_async_with_form(app_id){var async=new AsyncRequest().setMethod('GET').setReadOnly(true).setData({'app_id':app_id}).setURI('/ajax/apps/contact_developer.php');new Dialog().setAsync(async).show();}

function PlatformCanvasController(app_id,session_key,session_timeout,app_name,callback,api_key){this.sessionKey=session_key;this.appName=app_name;this.appId=app_id;this.callback=callback;this.api_key=api_key;this.isFirstPage=false;this.isIFrame=false;this._movingPage=false;this.sessionRefresh=(session_timeout*900);if(this.appId&&this.sessionKey&&this.sessionRefresh){setTimeout(this.refreshAppSession.bind(this),this.sessionRefresh);}
PlatformCanvasController.singleton=this;}
PlatformCanvasController.AUTO_REFRESH=30000;PlatformCanvasController.prototype.setUpIFrame=function($is_static){PageTransitions.registerHandler(this.handleChange.bind(this));this.isIFrame=true;this.isStatic=$is_static;}
PlatformCanvasController.prototype.autoRefreshAd=function(){if(this.isIFrame){this.isFirstPage=true;$('app'+this.appId+'_iframe_canvas').onload=this._clickRefresh.bind(this);}
this._ignoreNext=true;this._loopRefresh();}
PlatformCanvasController.prototype.requireLogin=function(){var loginResponse=FB.IFrameUtil.CanvasUtilServer.loginResponse;FBML.requireLogin(this.appId,loginResponse.bind(null,true),loginResponse.bind(null,false),null,true,true);}
PlatformCanvasController.prototype.closeLogin=function(){FBML.closeLoginDialog();}
PlatformCanvasController.prototype.showFeedDialog=function(template_bundle_id,template_data,body_general,target_id,user_msg_prompt,user_msg){FBML.showFeedDialog(this.appId,template_bundle_id,template_data,body_general,target_id,FB.IFrameUtil.CanvasUtilServer.loginResponse.bind(null),user_msg_prompt,user_msg);}
PlatformCanvasController.prototype._loopRefresh=function(){if(this._ignoreNext){this._ignoreNext=false;}else{this.refreshAd();}
this._loopRefresh.bind(this).defer(PlatformCanvasController.AUTO_REFRESH);}
PlatformCanvasController.prototype._clickRefresh=function(){this.refreshAd();this._ignoreNext=true;}
PlatformCanvasController.prototype.refreshAppSession=function(){new AsyncRequest().setURI('/ajax/session.php').setData({'app_id':this.appId,'session_key':this.sessionKey}).setReadOnly(true).setHandler(function(response){var payload=response.getPayload();if(payload['session_end']>0){setTimeout(this.refreshAppSession.bind(this),this.sessionRefresh);}}.bind(this)).send();}
PlatformCanvasController.prototype.refreshUrl=function(newUrl){var href=newUrl.href;if(href.startsWith(this.callback)){var newSuffix=new URI(href.substring(this.callback.length));this.changeUrlSuffix(newSuffix,true);}
return false;}
PlatformCanvasController.refreshUrl=function(newUrl){if(PlatformCanvasController.singleton){PlatformCanvasController.singleton.refreshUrl(newUrl);}}
PlatformCanvasController.prototype.changeUrlSuffix=function(suffix,is_refresh){this.currentUri=URI.getRequestURI().getUnqualifiedURI();var newPath=new URI(this.getAppPrefix()+suffix);this.stripFbParams(newPath);var dontAddBackEntry=is_refresh&&PlatformCanvasController.storesIFrameHistory(this.isStatic);if(this.currentUri.toString()!=newPath.toString()){this.currentUri=newPath;this.refreshAd();PageTransitions.go(newPath.toString(),dontAddBackEntry);}}
PlatformCanvasController.prototype.getAppPrefix=function(){return"/"+this.appName+"/";}
PlatformCanvasController.prototype.convertFromApps=function(uri){var prefix=this.getAppPrefix();var suffix=uri.getUnqualifiedURI().toString().substring(prefix.length);return new URI(this.callback+suffix);}
PlatformCanvasController.prototype.convertToApps=function(uri){var suffix=uri.toString().substring(this.callback.length);return new URI(this.getAppPrefix()+suffix);}
PlatformCanvasController.prototype.stripFbParams=function(uri){var queryData=uri.getQueryData();var newQueryData={};for(key in queryData){if((!key.startsWith("fb_")||key.startsWith("fb_force_mode"))&&!key.startsWith("_fb")&&!key.startsWith("quickling_apps")){newQueryData[key]=queryData[key];}}
uri.setQueryData(newQueryData);}
PlatformCanvasController.prototype.refreshAd=function(){if(this.isFirstPage){this.isFirstPage=false;}else{ads_refresh(this.appName,'/canvas.php');}}
PlatformCanvasController.prototype.handleChange=function(uri){if(!uri.getPath().startsWith("/"+this.appName)||this._movingPage){return false;}
var unqualUri=uri.getUnqualifiedURI();this.stripFbParams(unqualUri);if(this.currentUri.toString()!=unqualUri.toString()){FB.IFrameUtil.CanvasUtilServer.loadNewUrl(this.convertFromApps(uri).toString());this.currentUri=unqualUri;}
PageTransitions.transitionComplete();return true;}
PlatformCanvasController.prototype.goURI=function(uri){this._movingPage=true;var decorated_uri=new URI(uri);decorated_uri.addQueryData({_fb_q:true});PageTransitions.go(decorated_uri);}
PlatformCanvasController.storesIFrameHistory=function(is_static){if(ua.ie()){return true;}else if(ua.firefox()){if(is_static){return true;}else{return false;}}else if(ua.safari()){return false;}else{return false;}}
var smartIframes=[];function smartSizingFrameAdded(){window.onresize=_resizeSmartFrames;smartIframes=[];var allIframes=document.getElementsByTagName('iframe');for(var i=0;i<allIframes.length;i++){var frame=allIframes[i];if(frame.className=='smart_sizing_iframe'){smartIframes.push(frame);frame.style.width=frame.parentNode.scrollWidth-2+"px";}}
_resizeSmartFrames();}
if(window.innerHeight){var windowHeight=function(){return window.innerHeight;};}else if(document.documentElement&&document.documentElement.clientHeight){var windowHeight=function(){return document.documentElement.clientHeight;};}else{var windowHeight=function(){return DOMScroll.getScrollRoot().clientHeight;};}
function _resizeSmartFrames(){var height=windowHeight();for(var i=0;i<smartIframes.length;i++){var frame=smartIframes[i];var spaceLeft=height-elementY(frame)-61;frame.style.height=spaceLeft/(smartIframes.length-i)+'px';}}

function ChatTabActions(container){this._container=container;this._actions={};this._actionOrder=[];this._visibilityChanged=false;this._anyVisible=false;this.actionClass='action';}
copy_properties(ChatTabActions.prototype,{anyVisible:function(){return this._anyVisible;},appendAction:function(name,create_element,action){this._addAction(name,create_element,action);this._actionOrder.push(name);return this;},prependAction:function(name,create_element,action){this._addAction(name,create_element,action);this._actionOrder.unshift(name);return this;},setVisible:function(name,visible){var action=this._actions[name];if(action.visible!=visible){action.visible=visible;this._visibilityChanged=true;}
return this;},refresh:function(){if(this._visibilityChanged){this._render();this._visibilityChanged=false;return true;}
return false;},_render:function(){DOM.empty(this._container);var actions=this._actions;var actionOrder=this._actionOrder;this._anyVisible=false;var elements=[];for(var i=0;i<actionOrder.length;++i){var action=actions[actionOrder[i]];if(action.visible){if(this._anyVisible){elements.push($N('span',{className:'divider'},'|'));}
elements.push(action.create_element());this._anyVisible=true;}}
DOM.appendContent(this._container,elements);this._container.style.display=this._anyVisible?'block':'none';},_addAction:function(name,create_element,action){if(typeof create_element=='string'){var text=create_element;create_element=function(){return $N('span',{className:this.actionClass},text);}.bind(this);}
this._actions[name]={create_element:function(){var element=create_element();Event.listen(element,'click',action);return element;},visible:false};this._visibilityChanged=true;}});

function Sound(){}
copy_properties(Sound,{play:function(path){uri=URI(path);if(!uri.getDomain()){path=URI(env_get('static_base')).setPath(uri.getPath()).toString();}
var player;var embed;if(/\.mp3$/.test(path)){player=document['so_sound_player']||window['so_sound_player'];if(player){if(!player.playSound&&player.length){player=player[0];}
if(player.playSound){player.playSound(path);return;}}}
embed=ge('sound');if(!embed){embed=document.createElement('span');embed.setAttribute('id','sound');DOM.getRootElement().appendChild(embed);}
embed.innerHTML='<embed src="'+path+'" autostart="true" loop="false" '+'hidden="true" />';}});

function html_wordwrap(str,wrap_limit,txt_fn){if(typeof wrap_limit=='undefined'){wrap_limit=60;}
if(typeof txt_fn!='function'){txt_fn=htmlize;}
var regex=new RegExp("\\S{"+(wrap_limit+1)+"}",'g');var start=0;var str_remaining=str;var ret_arr=[];var matches=str.match(regex);if(matches){for(var i=0;i<matches.length;i++){var match=matches[i];var match_index=start+str_remaining.indexOf(match);var chunk=str.substring(start,match_index);if(chunk){ret_arr.push(txt_fn(chunk));}
ret_arr.push(txt_fn(match)+'<wbr/>');start=match_index+match.length;str_remaining=str.substring(start);}}
if(str_remaining){ret_arr.push(txt_fn(str_remaining));}
return ret_arr.join('');}
function text_get_hyperlinks(str){if(typeof(str)!='string'){return[];}
return str.match(/(?:(?:ht|f)tps?):\/\/[^\s<]*[^\s<\.)]/ig);}
function html_hyperlink(str,txt_fn,url_fn,reroute){var accepted_delims={'<':'>','*':'*','{':'}','[':']',"'":"'",'"':'"','#':'#','+':'+','-':'-','(':')'};if(typeof(str)=='undefined'||!str.toString){return'';}
if(typeof txt_fn!='function'){txt_fn=htmlize;}
if(typeof url_fn!='function'){url_fn=htmlize;}
var str=str.toString();var http_matches=text_get_hyperlinks(str);var start=0;var str_remaining=str;var ret_arr=[];var str_remaining=str;if(http_matches){var post_form_elem=reroute?ge('post_form_id'):null;var post_form_id=post_form_elem?post_form_elem.value:'';for(var i=0;i<http_matches.length;i++){var http_url=http_matches[i];var http_index=start+str_remaining.indexOf(http_url);var str_len=http_url.length;var non_url=str.substring(start,http_index);if(non_url){ret_arr.push(txt_fn(non_url));}
var trailing='';if(http_index>0){var delim=str[http_index-1];if(typeof accepted_delims[delim]!='undefined'){var end_delim=accepted_delims[delim];var end_delim_index=http_url.indexOf(end_delim);if(end_delim_index!=-1){trailing=txt_fn(http_url.substring(end_delim_index));http_url=http_url.substring(0,end_delim_index);}}}
var http_str=url_fn(http_url);if(reroute){var http_url_quote_escape="http://www.facebook.com/l.php?u="+
URI.encodeComponent(http_url)+'&h='+post_form_id;}else{var http_url_quote_escape=http_url.replace(/"/g,'%22');}
ret_arr.push('<a href="'+http_url_quote_escape+'" target="_blank" rel="nofollow">'+
http_str+'</a>'+trailing);start=http_index+str_len;str_remaining=str.substring(start);}}
if(str_remaining){ret_arr.push(txt_fn(str_remaining));}
return ret_arr.join('');}
function nl2br(text){if(typeof(text)=='undefined'||!text.toString){return'';}
return text.toString().replace(/\n/g,'<br />');}
function is_email(email){return/^([\w!.%+\-])+@([\w\-])+(?:\.[\w\-]+)+$/.test(email);}

function ChatTab(chatDisplay,id,name,firstName,numMissed,missedTime){this.chatDisplay=chatDisplay;this.id=id;this.name=name;this.messageTypes={'msg':{visible:true,user:true,preserveHistory:false},'mf':{visible:true,user:false,preserveHistory:true},'online':{visible:true,user:false,preserveHistory:true}};this.arbiter=new Arbiter();Arbiter.inform(ChatTab.GLOBALMESSAGETYPE.NEWTAB,{tab:this});this.tabRef='chatDisplay.tabs['+this.id+']';this.firstName=firstName;this.tabDisabled=false;this.numMissed=numMissed;this.missedTime=missedTime;this.focused=false;this.lastLogItem=null;this.historyLoaded=false;this.pendingSentMsgs=[];this.failedSentMsgs=[];this.sendingDisplayMsgID=null;this.historyRequestID=0;this.bounceAnimation=null;this.convTextProcessor=this._processConvText.bind(this);this.convTextEmoteProcessor=this._processConvTextEmote.bind(this);this.statusTextProcessor=this._processStatusText.bind(this);this.minTextHeight=presence.inPopoutWindow?this.minTextHeightPopout:this.minTextHeightPopin;this.typingState=this.INACTIVE;this.typingRemoteState=this.INACTIVE;this.typingLastKeystrokeAt=null;this.typingNotifyTimer=null;this.typingCheckTimer=null;this.lastMessageAt=null;this.lastMessageHadOfflineResponse=false;this._buildUI();this.addPopoutChat(id);this.loadData();this.handleVisibility(true);if(presence.inVideoChat){this.videochat_swf=ge(CallCenter.call(this.id)._callSWFID());}}
copy_properties(ChatTab,{GLOBALMESSAGETYPE:{NEWTAB:'chattabs/newtab'},TABMESSAGETYPE:{HISTORYBEGIN:'chattabs/historybegin',HISTORYITER:'chattabs/historyiter',HISTORYEND:'chattabs/historyend',CREATETAB:'chattabs/createtab',RECEIVEMSG:'chattabs/receivemsg',DISPLAYCHAT:'chattabs/displaychat',USERINFOUPDATED:'chattabs/userinfoupdated'}});copy_properties(ChatTab.prototype,{pendingToLogCompareWindow:60000,sendingCheckDelay:55000,sendingDisplayDelay:4000,convWrapLimit:30,statusWrapLimit:19,handleWidth:136,popinWidth:226,popinHeight:250,popoutWidthOffset:180,flPopoutWidthOffset:200,minTextHeightPopin:13,minTextHeightPopout:26,maxTextHeight:77,msgBunchTime:60000,maxHandleLen:16,maxTitleLen:20,bounceDuration:50,bounceOrgPosition:-3,typingNotifyDelay:1000,typingKeystrokeExpiry:7000,INACTIVE:0,TYPING:1,isTabVisible:function(){return this.focused&&(presence.inPopoutWindow||!presence.poppedOut)&&(this.chatInfo.clientWidth>20);},start:function(){this._popSendQueue();},restart:function(){this.getHistory(true);this.handleResize.bind(this).defer();},loadData:function(){if(this.chatDisplay.userInfos[this.id]){this.updateUserInfo();this.arbiter.inform(ChatTab.TABMESSAGETYPE.USERINFOUPDATED,{userInfo:this.chatDisplay.userInfos[this.id]});}else{this.chatDisplay.loadInitialUserInfo(this.id,this.name,this.firstName);}
if(this.chatDisplay.histories[this.id]){this._setHistory(this.chatDisplay.histories[this.id]);}},_onHistoryInitialHandler:function(requestID,response){if(requestID!=this.historyRequestID){presence.debug("tabs: got old history async, ignoring");return false;}},_onHistoryResponse:function(fromRestart,response){var historyPayload=response.getPayload();var userInfo=historyPayload.userInfo;var logItems=historyPayload.history;this.chatDisplay.userInfos[this.id]=userInfo;buddyList.updateItemDisplay(this.id);this.updateUserInfo();this.arbiter.inform(ChatTab.TABMESSAGETYPE.USERINFOUPDATED,{userInfo:userInfo});if(historyPayload.fls){buddyList.setFlids(this.id,historyPayload.fls);}
if(historyPayload.overlay){buddyList.addOverlayInfo(historyPayload.overlay);}
if(!logItems){this._showHistoryError();return;}
var poppedSendQueue=false;if(this.pendingSentMsgs.length>0&&logItems.length>0){var pendingSendMsg=this.pendingSentMsgs[0];for(var i=logItems.length-1;i>=0;i--){var logItem=logItems[i];if(logItem.to==this.id){var timeDiff=Math.abs(pendingSendMsg.time-logItem.time);if(timeDiff<this.pendingToLogCompareWindow&&pendingSendMsg.text==logItem.msg.text){this._setMsgInfoMarkup(pendingSendMsg.msgID,'');this.pendingSentMsgs.shift();this._popSendQueue();this.poppedSendQueue=true;break;}}}
var lastLogTime=logItems[logItems.length-1].time;for(var i=0;i<this.pendingSentMsgs.length;i++){var pendingSendMsg=this.pendingSentMsgs[i];if(pendingSendMsg.time<lastLogTime){pendingSendMsg.time=(++lastLogTime);}}}
var pendingLogMsgs=this.chatDisplay.histories[this.id];if(pendingLogMsgs){if(logItems.length>0){var lastLogItem=logItems[logItems.length-1];var lastTime=lastLogItem.time;for(var i=0;i<pendingLogMsgs.length;i++){var logItem=pendingLogMsgs[i];if(logItem.time>lastTime){logItems.push(logItem);}}}else{logItems=pendingLogMsgs;}}
this._setHistory(logItems);this.chatDisplay.histories[this.id]=logItems;if(fromRestart){if(!poppedSendQueue){this._popSendQueue();}}},_onHistoryError:function(response){this._showHistoryError();},_showHistoryError:function(){show(this.chatHistoryError);this.scrollToBottom();},getHistory:function(fromRestart){var requestID=++(this.historyRequestID);new AsyncRequest().setInitialHandler(this._onHistoryInitialHandler.bind(this,requestID)).setHandler(this._onHistoryResponse.bind(this,fromRestart)).setErrorHandler(this._onHistoryError.bind(this)).setTransportErrorHandler(this._onHistoryError.bind(this)).setMethod('GET').setReadOnly(true).setOption('suppressErrorAlerts',true).setData({'id':this.id}).setURI('/ajax/chat/history.php').send();},_setHistory:function(logItems){this.lastLogItem=null;var markup='';var sentIndex=0;var sentMsgs=[];Array.prototype.push.apply(sentMsgs,this.failedSentMsgs);Array.prototype.push.apply(sentMsgs,this.pendingSentMsgs);var prevItemTime=0;var anyVisibleMessages=false;this.arbiter.inform(ChatTab.TABMESSAGETYPE.HISTORYBEGIN);for(var i=0;i<logItems.length;i++){var logItem=logItems[i];if(typeof this.messageTypes[logItem.type]==undefined){continue;}
if(!this.messageTypes[logItem.type].preserveHistory){anyVisibleMessages=true;}
for(;sentIndex<sentMsgs.length;sentIndex++){var sentMsg=sentMsgs[sentIndex];if(!this.messageTypes[sentMsg.type].preserveHistory){anyVisibleMessages=true;}
if(sentMsg.time>prevItemTime&&sentMsg.time<=logItem.time){if(this.messageTypes[sentMsg.type].visible){markup+=this._renderMsg(presence.user,this.id,sentMsg.time,sentMsg,sentMsg.msgID,sentMsg.isError,sentMsg.infoMarkup);}}else{break;}}
if(logItem.type=='msg'){markup+=this._renderMsg(logItem.from,logItem.to,logItem.time,logItem.msg);}else if(logItem.type=='mf'&&statusControl.getSetting('minifeed')){markup+=this._renderMinifeed(logItem.from,logItem.time,logItem.markup);}else if(logItem.type=='online'){markup+=this._renderVisibilityChange(logItem.time,logItem.text);}else{this.arbiter.inform(ChatTab.TABMESSAGETYPE.HISTORYITER,{item:logItem});}
this.lastLogItem=logItem;prevItemTime=logItem.time;}
this.arbiter.inform(ChatTab.TABMESSAGETYPE.HISTORYEND);for(;sentIndex<sentMsgs.length;sentIndex++){var sentMsg=sentMsgs[sentIndex];if(this.messageTypes[sentMsg.type].visible){markup+=this._renderMsg(presence.user,this.id,sentMsg.time,sentMsg,sentMsg.msgID,sentMsg.isError,sentMsg.infoMarkup);this.lastLogItem={'type':sentMsg.type,'from':presence.user,'to':this.id,'time':sentMsg.time,'msg':sentMsg};}}
hide(this.chatHistoryError);this.chatConvContent.innerHTML=markup;this.scrollToBottom();if(this.actions.setVisible('clearHistory',anyVisibleMessages).refresh()){this.handleResize();}
this.historyLoaded=true;},_onClearHistoryError:function(response){var chat=_tx("Chat");presence.showAsyncError(response,_tx("{Chat}-Verlauf konnte nicht gel\u00f6scht werden",{'Chat':chat}));CSS.removeClass(this.tabHandle,'history_clearing');},_onClearHistoryResponse:function(response){CSS.removeClass(this.tabHandle,'history_clearing');var newHistory=[];for(var i=0;i<this.chatDisplay.histories[this.id].length;i++){var item=this.chatDisplay.histories[this.id][i];if(typeof this.messageTypes[item.type]=='undefined'||this.messageTypes[item.type].preserveHistory){newHistory.push(item);}}
this._setHistory(this.chatDisplay.histories[this.id]=newHistory);},clearHistory:function(){CSS.addClass(this.tabHandle,'history_clearing');new AsyncRequest().setHandler(this._onClearHistoryResponse.bind(this)).setErrorHandler(this._onClearHistoryError.bind(this)).setTransportErrorHandler(this._onClearHistoryError.bind(this)).setData({'clear_history_id':this.id}).setURI(this.chatDisplay.settingsURL).send();},_isCurrentPendingSend:function(msgID){return(this.pendingSentMsgs.length>0&&msgID==this.pendingSentMsgs[0].msgID);},_onSendInitialHandler:function(response){this.lastMessageHadOfflineResponse=false;},_onSendResponse:function(msgID,response){var payload=response.getPayload();if(this._isCurrentPendingSend(msgID)){var pendingMsg=this.pendingSentMsgs[0];pendingMsg.asyncSuccess=true;}
if(payload&&payload.warning){var warningMarkup=this._renderMsgWarningMarkup(payload.warning.title+'<br />'+payload.warning.body);this._setMsgInfoMarkup(msgID,warningMarkup,'msg_warning');}},_onSendTransportError:function(msgID,response){if(!this._isCurrentPendingSend(msgID)){return;}},_onSendError:function(msgID,response){if(!this._isCurrentPendingSend(msgID)){return;}
var payload=response.getPayload();var error=response.getError();var desc=presence.getErrorDescription(response);if(error==kError_Chat_SendOtherNotAvailable){this.lastMessageHadOfflineResponse=true;buddyList.setUnavailable(this.id);for(var i=0;i<this.pendingSentMsgs.length;i++){var msg=this.pendingSentMsgs[i];var msgElement=ge('msg_'+this.id+'_'+msg.msgID);if(msgElement){var onclick=sprintf('onclick="message_dialog.show(%d, %e, %e); return false;"',this.id,'',msg.text);var link=presence.renderLink(this.chatDisplay.messageURL+'&id='+this.id,_tx("als Nachricht versenden"),onclick);var markup=_tx("{message} ({=send as a message})",{'message':this._renderMsgHtmlize(msg),'=send as a message':link});set_inner_html(msgElement,markup);}}}
else if(error==kError_Chat_NotAvailable){this.lastMessageHadOfflineResponse=true;statusControl.setVisibility(false);presence.doSync();}
else if(error==kError_Chat_TooManyMessages){desc=payload.error.title;new ErrorDialog().showError(payload.error.title,payload.error.body);}
else{new ErrorDialog().showError(response.errorSummary,response.errorDescription);}
this._sendErrorAll(desc);},_renderMsgWarningMarkup:function(desc){return'<p class="chat_notice chat_msg_warning">'+
desc+'</p>';},_renderMsgErrorMarkup:function(desc){return'<p class="chat_notice chat_msg_not_sent">'+
desc+'</p>';},_sendErrorAll:function(desc){var errorMarkup=this._renderMsgErrorMarkup(desc);var isFirst=true;while(this.pendingSentMsgs.length){var pendingMsg=this.pendingSentMsgs.shift();pendingMsg.isError=true;if(isFirst){pendingMsg.infoMarkup=errorMarkup;}
this._setMsgInfoMarkup(pendingMsg.msgID,errorMarkup,'msg_error');this.failedSentMsgs.push(pendingMsg);isFirst=false;errorMarkup='';}},_sendError:function(msgID,desc){var errorMarkup=this._renderMsgErrorMarkup(desc);var pendingMsg=this.pendingSentMsgs.shift();pendingMsg.isError=true;pendingMsg.infoMarkup=errorMarkup;this._setMsgInfoMarkup(msgID,errorMarkup,'msg_error');this.failedSentMsgs.push(pendingMsg);this._popSendQueue();this._bumpSendingMessageDisplay(msgID);},_createMessage:function(text,type){var msgID=rand32()+1;var time=presence.getTime();if(this.lastLogItem&&time<this.lastLogItem.time){time=this.lastLogItem.time+1;}
var pendingMsg={text:text,msgID:msgID,type:type,time:time,asyncSuccess:false,isError:false,errorMarkup:''};return pendingMsg;},_flushSmallQueue:function(){if(this.pendingSentMsgs.length==1){this._sendMessage(this.pendingSentMsgs[0],!channelManager.iframeEverLoaded);}},_updateChatActivity:function(pendingMsg,msg){this.lastLogItem={'type':pendingMsg.type,'from':presence.user,'to':this.id,'time':pendingMsg.time,'msg':msg};this.chatDisplay.chatActivityTime=(new Date()).getTime();presence.doSync();},sendInput:function(){var text=this.chatInput.value;if(!text||!text.match(/[^\s]/)){return;}
if(this.actions.setVisible('clearHistory',true).refresh()){this.handleResize();}
this.chatInput.value='';var pendingMsg=this._createMessage(text,'msg');this.pendingSentMsgs.push(pendingMsg);this._flushSmallQueue();var msg={'text':text};var sendMarkup=this._renderMsg(presence.user,this.id,pendingMsg.time,msg,pendingMsg.msgID);this._addConvMarkup(sendMarkup);this._updateChatActivity(pendingMsg,msg);this._resetTypingState();},notifyTypingState:function(state){if(state!=this.typingRemoteState){this.typingRemoteState=state;presence.debug('tabs: notifyTyping('+state+')');if(!channelManager.iframeEverLoaded){return;}
var data={'typ':state,'to':this.id};new AsyncRequest().setHandler(bagofholding).setErrorHandler(bagofholding).setTransportErrorHandler(bagofholding).setData(data).setURI('/ajax/chat/typ.php').send();}},_sendMessage:function(pendingMsg,timeoutOnly){pendingMsg.time=presence.getTime();if(this.lastLogItem&&pendingMsg.time<this.lastLogItem.time){pendingMsg.time=this.lastLogItem.time+1;}
clearTimeout(this.sendingDisplayTimeout);clearTimeout(this.checkMessageSentTimeout);this.sendingDisplayTimeout=setTimeout(this._checkMessageSentShort.bind(this,pendingMsg.msgID),this.sendingDisplayDelay);this.checkMessageSentTimeout=setTimeout(this._checkMessageSentLong.bind(this,pendingMsg.msgID),this.sendingCheckDelay);if(timeoutOnly){return;}
var msgID=pendingMsg.msgID;var history=this.chatDisplay.histories[this.id];var lastConvoTime=null;if(history){for(var i=history.length-1;i>0;i--){if(history[i].type=='msg'){lastConvoTime=history[i].time;break;}}}
var sendData={msg_id:msgID,client_time:pendingMsg.time,to:this.id,num_tabs:this.chatDisplay.numTabs,pvs_time:lastConvoTime};if(pendingMsg.type=='video'){sendData.action=pendingMsg.action;sendData.uid=pendingMsg.uid;var endpoint='/ajax/chat/video.php';}else{sendData.msg_text=pendingMsg.text;var endpoint='/ajax/chat/send.php';}
new AsyncRequest().setInitialHandler(this._onSendInitialHandler.bind(this)).setHandler(this._onSendResponse.bind(this,msgID)).setErrorHandler(this._onSendError.bind(this,msgID)).setTransportErrorHandler(this._onSendTransportError.bind(this,msgID)).setData(sendData).setURI(endpoint).send();},_popSendQueue:function(){if(this.pendingSentMsgs.length==0){return;}
var pendingMsg=this.pendingSentMsgs[0];this._sendMessage(pendingMsg);},_checkMessageSentShort:function(msgID){if(this._isCurrentPendingSend(msgID)){this._setSendingDisplay(this.pendingSentMsgs[0]);}},_checkMessageSentLong:function(msgID){if(this._isCurrentPendingSend(msgID)){if(this.pendingSentMsgs[0].asyncSuccess){this._sendErrorAll(_tx("Es konnte derzeit keine Verbindung zu Facebook-{Chat} hergestellt werden.",{'Chat':_tx("Chat")}));}else if(channelManager.iframeIsLoaded){presence.error('tabs: send took too long; resending and invalidating old one');this._sendMessage(this.pendingSentMsgs[0]);}else{presence.error("tabs: send took too long, but iframe isn't yet loaded.  will check again later.");setTimeout(this._checkMessageSentLong.bind(this,this.pendingSentMsgs[0].msgID),this.sendingCheckDelay);}}},_bumpSendingMessageDisplay:function(msgID){if(msgID==this.sendingDisplayMsgID){this._setMsgInfoMarkup(msgID,'');if(this.pendingSentMsgs.length>0){this._setSendingDisplay(this.pendingSentMsgs[0]);}}},_setSendingDisplay:function(pendingMsg){this.sendingDisplayMsgID=pendingMsg.msgID;pendingMsg.infoMarkup='<p class="chat_notice sending">'+
_tx("Senden:")+'</p>';this._setMsgInfoMarkup(pendingMsg.msgID,pendingMsg.infoMarkup);},_setMsgInfoMarkup:function(pendingMsgID,markup,msgClass){var msgElement=ge('msg_'+this.id+'_'+pendingMsgID);if(!msgElement){return;}
var infoElement=ge('pending_'+this.id+'_'+pendingMsgID);if(infoElement){infoElement.innerHTML=markup;}
if(msgClass){CSS.addClass(msgElement,msgClass);}
this.scrollToBottom();},updateUserInfo:function(){var userInfo=this.chatDisplay.userInfos[this.id];this.chatInfoPic.src=userInfo.thumbSrc;var statusMarkup='&nbsp;';var dateMarkup='&nbsp;';var status;if(status=userInfo.status){var time=userInfo.statusTimeRel;statusMarkup=html_hyperlink(status,this.statusTextProcessor,this.statusTextProcessor);dateMarkup=time;}
if(ua.ie()<7){dateMarkup+='<br />&nbsp;<br />&nbsp;';}
this.chatInfoStatusTime.innerHTML=dateMarkup;this.chatInfoStatus.innerHTML=statusMarkup;CSS.removeClass(this.chatInfo,'hidden');},updateStatus:function(status,time,timeRel){var userInfo=this.chatDisplay.userInfos[this.id];userInfo.status=status;userInfo.statusTime=time;userInfo.statusTimeRel=timeRel;this.chatDisplay.userInfos[this.id]=userInfo;buddyList.updateItemDisplay(this.id);this.updateUserInfo();},tabHitAreaOnClick:function(){if(this.suppressHeaderCollapse){return;}
if(!presence.inVideoChat){if(presence.inPopoutWindow){this.chatDisplay.focusTab(this.id,this.name,this.firstName);}else{this.chatDisplay.toggleTab(this.id,this.name,this.firstName);}}
this.chatDisplay.doStopBlinking();},showChat:function(){if(presence.inVideoChat){animation(this.chatWrapper).to('right','0').duration(300).ease(animation.ease.end).go();animation(this.videochat_swf).to('marginRight','226px').duration(300).ease(animation.ease.end).go();this.arbiter.inform(ChatTab.TABMESSAGETYPE.DISPLAYCHAT,{visible:true});}},tabXOnClick:function(e){if(presence.inVideoChat){animation(this.chatWrapper).to('right','-228px').duration(300).ease(animation.ease.end).go();animation(this.videochat_swf).to('marginRight','0').duration(300).ease(animation.ease.end).go();this.arbiter.inform(ChatTab.TABMESSAGETYPE.DISPLAYCHAT,{visible:false});}else{this.chatDisplay.closeTab(this.id);this.chatDisplay.doStopBlinking();}
$E(e).kill();},headerLinkMouseOver:function(){CSS.addClass(this.chatHeader,'suppress_hover');this.suppressHeaderCollapse=true;},headerLinkMouseOut:function(){CSS.removeClass(this.chatHeader,'suppress_hover');this.suppressHeaderCollapse=false;},chatConvOnMouseDown:function(event){event=$E(event);if(event.button!=0){return;}
this.chatDisplay.doStopBlinking();},chatConvOnMouseUp:function(){if(DOM.getSelectionSupported()&&(DOM.getSelection()=='')){this.focusChatInput();}},focusChatInput:function(){if(!this.tabDisabled&&this.isTabVisible()){this.chatInput.focus();}},_buildUI:function(){var tabCountID='missed_count_'+this.id;var chatWindowWrapperID='chat_window_wrapper_'+this.id;var chatConvID='chat_conv_'+this.id;var chatHistoryErrorID='chat_history_error_'+this.id;var chatHeaderID='chat_header_'+this.id;var chatInfoID='chat_info_'+this.id;var chatInfoLinkID='chat_info_link_'+this.id;var chatInfoPicID='chat_info_pic_'+this.id;var chatInfoStatusID='chat_info_status_'+this.id;var chatInfoStatusTimeID='chat_info_status_time_'+this.id;var chatConvContentID='chat_conv_content_'+this.id;var chatInputID='chat_input_'+this.id;var chatShadowInputID='chat_shadow_input_'+this.id;var chatToolboxID='chat_toolbox_'+this.id;var chat=_tx("Chat");var handleName=htmlize(this.trimName(this.maxHandleLen));var titleName=htmlize(this.trimName(this.maxTitleLen));var chatHeaderLinkMouseOver=' onmouseover="'+this.tabRef+'.headerLinkMouseOver();" onmouseout="'+this.tabRef+'.headerLinkMouseOut();"';var profileURL=this.chatDisplay.profileURL+'?id='+this.id;var chatHeaderPicLink=presence.renderLink(profileURL,'<img class="chat_info_pic" id="'+chatInfoPicID+'" title="View Profile" style="display:block;">',chatHeaderLinkMouseOver);var chatHeaderNameLink=presence.renderLink(profileURL,titleName,chatHeaderLinkMouseOver);var tabMarkupArr=['<div class="tab_button_div" ','onmouseover="CSS.addClass(this, \'hover\')" ','onmouseout="CSS.removeClass(this, \'hover\')">','<div title="',_tx("{Chat}-Fenster anzeigen\/verbergen",{'Chat':chat}),'" ','class="tab_hit_area" ','onclick="',this.tabRef,'.tabHitAreaOnClick()">','<div class="tab_name">',handleName,'</div>','</div>','<div class="tab_count" id="',tabCountID,'"></div>','<div title="',_tx("{Chat}-Fenster schliessen",{'Chat':chat}),'" ','class="tab_x" ','onclick="',this.tabRef,'.tabXOnClick(event)" ','onmouseover="CSS.addClass(this, \'hover\')" ','onmouseout="CSS.removeClass(this, \'hover\')">','</div>','<div class="chat_window_wrapper" id="',chatWindowWrapperID,'">','<div class="chat_window">','<div class="chat_header" id="',chatHeaderID,'" onclick="',this.tabRef,'.tabHitAreaOnClick()">','<div class="header_buttons">','<a title="',_tx("{Chat}-Fenster schliessen",{'Chat':chat}),'" ','class="close" ','onmouseover="CSS.addClass($(\'',chatHeaderID,'\'), \'suppress_hover\')" ','onmouseout="CSS.removeClass($(\'',chatHeaderID,'\'), \'suppress_hover\')" ','onclick="',this.tabRef,'.tabXOnClick(event)">','</a>','<a title="',_tx("{Chat}-Fenster verbergen",{'Chat':chat}),'" ','class="minimize">','</a>','</div>',chatHeaderPicLink,'<div class="chat_header_name">',chatHeaderNameLink,'</div>','</div>','<div class="chat_info" id="',chatInfoID,'">','<span class="chat_info_status" id="',chatInfoStatusID,'"></span><wbr />','<span class="chat_info_status_time" id="',chatInfoStatusTimeID,'"></span>','</div>','<div id="',chatToolboxID,'" class="toolbox">','<div class="chat_actions"></div>','</div>','<div class="chat_conv" id="',chatConvID,'" ','onmousedown="',this.tabRef,'.chatConvOnMouseDown(event)" ','onmouseup="',this.tabRef,'.chatConvOnMouseUp()">','<div class="chat_notice" id="',chatHistoryErrorID,'" style="display:none">',_tx("Der Chat-Verlauf konnte nicht abgerufen werden"),'</div>','<div class="chat_conv_content" id="',chatConvContentID,'"></div>','</div>','<div class="chat_input_div">','<textarea class="chat_shadow_input" id="',chatShadowInputID,'"></textarea>','<div class="chat_input_icon"></div>','<textarea class="chat_input" id="',chatInputID,'" ','onclick="chatDisplay.doStopBlinking()" ','onkeydown="return ',this.tabRef,'.inputKeyDown(event)" ','onkeypress="return ',this.tabRef,'.inputKeyPress(event)" ','></textarea>','</div>','</div>','</div>','</div>'];this.tabHandle=document.createElement('div');var chatTabBar=ge('chat_tab_bar');var otherTab=null;for(var id in this.chatDisplay.tabs){otherTab=this.chatDisplay.tabs[id];}
if(otherTab){chatTabBar.insertBefore(this.tabHandle,otherTab.tabHandle);}else{chatTabBar.appendChild(this.tabHandle);}
this.tabHandle.id='tab_handle_'+this.id;CSS.setClass(this.tabHandle,'tab_handle');this.tabHandle.style.width=this.handleWidth+'px';this.tabHandle.style.display='block';this.tabHandle.innerHTML=tabMarkupArr.join('');this.tabCount=ge(tabCountID);this.chatWrapper=ge(chatWindowWrapperID);this.chatConv=ge(chatConvID);this.chatHistoryError=ge(chatHistoryErrorID);this.chatHeader=ge(chatHeaderID);this.chatInfo=ge(chatInfoID);this.chatInfoLink=ge(chatInfoLinkID);this.chatInfoPic=ge(chatInfoPicID);this.chatInfoStatus=ge(chatInfoStatusID);this.chatInfoStatusTime=ge(chatInfoStatusTimeID);this.chatConvContent=ge(chatConvContentID);this.chatInput=ge(chatInputID);this.chatShadowInput=ge(chatShadowInputID);this.toolbox=ge(chatToolboxID);var chatActions=DOM.find(this.toolbox,'div.chat_actions');this.actions=new ChatTabActions(chatActions);this.actions.appendAction('clearHistory',_tx("{Chat}-Verlauf l\u00f6schen",{'Chat':chat}),this.clearHistory.bind(this));this.arbiter.inform(ChatTab.TABMESSAGETYPE.CREATETAB,{toolbox:this.toolbox});this.actions.refresh();this.popoutChatTabs=presence.inPopoutWindow?ge('open_chats'):null;this.adjustWrapperBottom();this._updateNumMissedDisplay();},adjustWrapperBottom:function(){if(presence.isFF2){var holderBottom=presence.getHolderBottomPosition();CSS.setStyle(this.chatWrapper,'bottom',(holderBottom+24)+'px');}},show:function(){this.tabHandle.style.display='block';},hide:function(){this.tabHandle.style.display='none';},inputKeyDown:function(event){event=$E(event);this.chatDisplay.doStopBlinking();if(this.chatDisplay.gatedFeatures.typ_send){this._updateTyping.bind(this).defer();}
if(event.keyCode==KEYS.RETURN&&!event.shiftKey){if(this.chatInput.value){this.sendInput();}}
if(event.keyCode==KEYS.DELETE||event.keyCode==KEYS.BACKSPACE){this.handleResize.bind(this).defer();}},inputKeyPress:function(event){event=$E(event);this.handleResize.bind(this).defer();if(event.keyCode==KEYS.RETURN&&!event.shiftKey){event.returnValue=false;return false;}},_updateTyping:function(){var state=this.typingState;if(this.chatInput.value.length==0){if(state==this.INACTIVE){}else{this._typingTransition(this.INACTIVE);}}
else if(state==this.TYPING){this._recordKeystroke();}
else if(state==this.INACTIVE){this._typingTransition(this.TYPING);this._recordKeystroke();}},_recordKeystroke:function(){this.typingLastKeystrokeAt=new Date();if(!this.typingCheckTimer){this.typingCheckTimer=setTimeout(this._checkTyping.bind(this),this.typingKeystrokeExpiry);}},_checkTyping:function(){var expiresAt=this.typingLastKeystrokeAt.valueOf()+this.typingKeystrokeExpiry;var now=new Date().valueOf();if(now>expiresAt){this._typingTransition(this.INACTIVE);}else{clearTimeout(this.typingCheckTimer);this.typingCheckTimer=setTimeout(this._checkTyping.bind(this),expiresAt-now+10);}},_typingTransition:function(newState){clearTimeout(this.typingCheckTimer);this.typingCheckTimer=null;typingLastKeystrokeAt=null;presence.debug('typing:'+this.typingState+' -> '+newState);this.typingState=newState;clearTimeout(this.typingNotifyTimer);this.typingNotifyTimer=setTimeout(this.notifyTypingState.bind(this,newState),this.typingNotifyDelay);},_resetTypingState:function(){presence.debug('typing: ** RESET **');this.typingState=this.INACTIVE;this.typingRemoteState=this.INACTIVE;this.typingLastKeystrokeAt=null;clearTimeout(this.typingNotifyTimer);this.typingNotifyTimer=null;clearTimeout(this.typingCheckTimer);this.typingCheckTimer=null;},trimName:function(maxLength){var name=this.name;if(name.length>maxLength){name=name.substring(0,maxLength-2)+'...';}
return name;},handleVisibility:function(onload){var justCameOnline=statusControl.visibility;if(statusControl.visibility){this._enableTab(true,false,justCameOnline,onload);}else{this._disableTab(true,justCameOnline,onload);}
this.handleBuddyAvailability(!onload&&justCameOnline,onload);},handleBuddyAvailability:function(justCameOnline,onload){if(!statusControl.visibility){return;}
var availability=buddyList.getAvailability(this.id);if(availability){this._enableTab(false,availability.i,justCameOnline,onload);}else{this._disableTab(false,justCameOnline,onload);}},_enableTab:function(isYou,isIdle,justCameOnline,onload){onload=onload||false;var wasDisabled=this.tabDisabled;this.tabDisabled=false;if(presence.inPopoutWindow){CSS.removeClass(this.popoutTab,'disabled');CSS.conditionClass(this.popoutTab,'idle',isIdle);}
CSS.removeClass(this.tabHandle,'disabled');CSS.conditionClass(this.tabHandle,'idle',isIdle);if((isYou&&!onload)||(!isYou&&wasDisabled&&!justCameOnline)){this._newVisibilityChange(isYou,onload,true);}},_disableTab:function(isYou,justCameOnline,onload){onload=onload||false;var wasDisabled=this.tabDisabled;this.tabDisabled=true;if(presence.inPopoutWindow){CSS.addClass(this.popoutTab,'disabled');CSS.removeClass(this.popoutTab,'idle');}
CSS.addClass(this.tabHandle,'disabled');CSS.removeClass(this.tabHandle,'idle');if((isYou||onload||!wasDisabled)&&!this.lastMessageHadOfflineResponse&&!justCameOnline){this._newVisibilityChange(isYou,onload,false);}},handleResize:function(){var newConvWidth;var newTextWidth;var newNotAvailWidth;var newTabHeight;var heightExtra=31;var toolboxChildren=this.toolbox.childNodes;for(var i=0;i<toolboxChildren.length;++i){var child=toolboxChildren[i];if(shown(child)){heightExtra+=Vector2.getElementDimensions(child).y;}}
if(presence.inVideoChat||presence.inPopoutWindow){var chatInfoMinHeight=33;heightExtra+=Vector2.getElementDimensions(this.chatInfo).y-chatInfoMinHeight;}
if(presence.inVideoChat){var videoChatWidth=226;newConvWidth=videoChatWidth;newTextWidth=videoChatWidth-28;newNotAvailWidth=videoChatWidth-16;newTabHeight=presence.popoutHeight-77;}else if(presence.inPopoutWindow){var popoutWidth=(presence.popoutWidth>330)?presence.popoutWidth:330;if(presence.sitevars.FL_LIVE){newConvWidth=popoutWidth-this.flPopoutWidthOffset;newTextWidth=popoutWidth-this.flPopoutWidthOffset-28;newNotAvailWidth=popoutWidth-this.flPopoutWidthOffset-16;}else{newConvWidth=popoutWidth-this.popoutWidthOffset;newTextWidth=popoutWidth-this.popoutWidthOffset-28;newNotAvailWidth=popoutWidth-this.popoutWidthOffset-16;}
newTabHeight=presence.popoutHeight-77;}else{newConvWidth=this.popinWidth;newTextWidth=this.popinWidth-28;newNotAvailWidth=this.popinWidth-8;newTabHeight=this.popinHeight;}
this.chatShadowInput.style.width=this.chatInput.style.width=newTextWidth+'px';this.chatShadowInput.value=this.chatInput.value;var textHeight=this.chatShadowInput.scrollHeight;if(!textHeight||presence.isOpera){textHeight=this.minTextHeight;if(this.chatInput.value){var re=new RegExp('([\n]|[^\n]{'+parseInt(newTextWidth/8)+'})','g');var matches=this.chatInput.value.match(re);if(matches){textHeight=(matches.length+1)*this.minTextHeight;}}
if(presence.isSafari2){textHeight+=8;}}
if(ua.ie()){textHeight-=6;}
if(textHeight>this.maxTextHeight){textHeight=this.maxTextHeight;}else if(textHeight<this.minTextHeight){textHeight=this.minTextHeight;}
if(presence.isSafari2){heightExtra-=7;}else if(ua.ie()<7){if(this.tabDisabled){heightExtra+=4;}}
if(!presence.inPopoutWindow||ua.ie()||!presence.sitevars.FL_LIVE){this.chatHeader.style.width=newConvWidth+'px';this.chatInfo.style.width=(newConvWidth-55)+'px';this.chatConv.style.width=newConvWidth+'px';}
this.chatInput.style.height=textHeight+'px';this.chatConv.style.height=Math.max(0,(newTabHeight-heightExtra-textHeight))+'px';this.scrollToBottom();},isUserScrolled:function(){return(this.chatConv.scrollHeight>this.chatConv.scrollTop+this.chatConv.clientHeight);},scrollToBottom:function(){this.chatConv.scrollTop=this.chatConv.scrollHeight;},unfocus:function(){this.focused=false;CSS.removeClass(this.tabHandle,'focused');},focus:function(hidden,chatDisplayLoaded){if(this.focused){return;}
CSS.addClass(this.tabHandle,'focused');this.focused=true;if(!hidden){this._onFocusUIActions();setTimeout(this._onFocusUIActions.bind(this),100);}
if(!this.historyLoaded){this.getHistory(false);}
this._updateNumMissed(0);this._stopBounce();},_onFocusUIActions:function(){this.handleResize();if(ua.ie()<7&&presence.inPopoutWindow){this.chatWrapper.style.top='67px';}
this.focusChatInput();},_startBounce:function(){if(presence.isFF2&&presence.isWindows){return;}
this.bounceAnimation=animation(this.tabCount).to('top',-11).duration(this.bounceDuration+40).checkpoint().to('top',this.bounceOrgPosition).duration(this.bounceDuration).checkpoint().to('top',-11).duration(this.bounceDuration+40).checkpoint().to('top',this.bounceOrgPosition).duration(this.bounceDuration).checkpoint().to('top',-7).duration(this.bounceDuration).checkpoint().to('top',-5).duration(this.bounceDuration).checkpoint().to('top',this.bounceOrgPosition).duration(this.bounceDuration).checkpoint().go();},_stopBounce:function(){if(this.bounceAnimation){this.bounceAnimation.stop();this.bounceAnimation=null;}},close:function(){this.tabHandle.parentNode.removeChild(this.tabHandle);this.closePopoutChat();},addPopoutChat:function(id){if(this.popoutChatTabs){this.popoutTab=document.createElement('div');this.popoutTab.id='popout_tab_'+this.id;this.popoutTab.className='popout_tab_button'
+(this.chatDisplay.gatedFeatures.typ_show?'':' vanilla')
+((id==this.chatDisplay.focused)?' highlight':'');var popoutCountID='popout_missed_'+this.id;this.popoutTab.innerHTML='<div class="popout_tab_hit_area" onclick="'+this.tabRef+'.tabHitAreaOnClick();">'+'<div id="'+popoutCountID+'" class="popout_tab_count"></div>'+'<div class="popout_tab_name">'+this.name+'</div>'+'</div>'+'<div class="popout_tab_x" onclick="'+this.tabRef+'.tabXOnClick(event)"></div>';this.popoutChatTabs.appendChild(this.popoutTab);this.popoutTabCount=ge(popoutCountID);show(ge('popout_chat_tabs'));}},closePopoutChat:function(){if(this.popoutChatTabs){this.popoutChatTabs.removeChild(this.popoutTab);if(this.popoutChatTabs.childNodes.length<=0){hide(ge('popout_chat_tabs'));}}},selectPopoutChat:function(){CSS.addClass(this.popoutTab,'highlight');},deselectPopoutChat:function(){CSS.removeClass(this.popoutTab,'highlight');},_newVisibilityChange:function(isYou,onload,online){var time=presence.getTime();var text;if(isYou){if(online){text=_tx("Du bist online.",{'name':this.firstName});}else{text=_tx("Du bist nicht online.",{'name':this.firstName});}}else{if(online){text=_tx("{name} ist online.",{'name':this.firstName});}else{text=_tx("{name} ist offline.",{'name':this.firstName});}}
var item={'type':'online','time':time,'text':text};var history=this.chatDisplay.getHistory(this.id,true);history.push(item);var markup=this._renderVisibilityChange(time,text);this._addConvMarkup(markup);this.lastLogItem=item;},newMinifeed:function(mfItem){if(mfItem.status){this.updateStatus(mfItem.status,mfItem.time,mfItem.statusTimeRel);}
if(this.lastLogItem&&this.lastLogItem.type=='mf'){return;}
var history=this.chatDisplay.getHistory(this.id,true);history.push(mfItem);var markup=this._renderMinifeed(mfItem.from,mfItem.time,mfItem.markup);this._addConvMarkup(markup);this.lastLogItem=mfItem;},newTyping:function(msgItem){var from=msgItem.from;var to=msgItem.to;var typ=msgItem.st;if(!this.chatDisplay.gatedFeatures.typ_show){return;}
else if((new Date()-this.lastMessageAt)<this.typingNotifyDelay){return;}
presence.debug('typing from '+from+': '+typ);var show_typing=(typ==this.TYPING)&&(this.numMissed==0);if(to!=this.id){if(presence.inPopoutWindow){CSS.conditionClass(this.popoutTab,'typing',show_typing);}
CSS.conditionClass(this.tabHandle,'typing',show_typing);buddyList.setAvailable(this.id);}},_isChatMessage:function(message){return
typeof this.messageTypes[message.type]!='undefined'&&this.messageTypes[message.type].user;},newMsg:function(msgItem){var from=msgItem.from;var to=msgItem.to;var type=msgItem.type;var msg=msgItem.msg;var time=msg.time;var clientTime=msg.clientTime;var msgID=msg.msgID;var shouldRender=true;this.lastMessageAt=new Date();var history=this.chatDisplay.getHistory(this.id,true);var lastMsg=null;for(var i=history.length-1;i>=0;i--){if(this._isChatMessage(history[i])){lastMsg=history[i];break;}}
if(lastMsg&&time<=lastMsg.time){var found=false;for(var i=0;i<history.length;i++){if(this._isChatMessage(history[i])&&time==history[i].time){found=true;break;}}
if(found){presence.warn('tabs: already had this msg');return;}
for(var i=history.length-1;i>=0;i--){var historyItem=history[i];if(this._isChatMessage(historyItem)&&(historyItem.to!=to||(!historyItem.msg.clientTime||historyItem.msg.clientTime<clientTime))){break;}}
presence.warn('tabs: merging new msg due to out-of-order server timestamp');if(i==history.length-1){this.chatDisplay.histories[this.id].push(msgItem);}else{history.splice(i+1,0,msgItem);this._setHistory(history);shouldRender=false;}}else{this.chatDisplay.histories[this.id].push(msgItem);}
if(to!=this.id){if(this.chatDisplay.gatedFeatures.sound&&this.chatDisplay.isSoundWindow&&statusControl.getSetting('sound')){Sound.play('/sound/pop.mp3');}
buddyList.setAvailable(this.id);if(!this.focused){this._updateNumMissed(this.numMissed+1,time);this._startBounce();}
if(presence.inPopoutWindow){CSS.removeClass(this.popoutTab,'typing');}
CSS.removeClass(this.tabHandle,'typing');}else{this._updateNumMissed(0,time);for(var i=0;i<this.pendingSentMsgs.length;i++){if(msgID==this.pendingSentMsgs[i].msgID){var pendingMsg=this.pendingSentMsgs.splice(i,1);this._bumpSendingMessageDisplay(msgID);this._popSendQueue();shouldRender=false;break;}}}
this.arbiter.inform(ChatTab.TABMESSAGETYPE.RECEIVEMSG,{type:type,msgItem:msgItem});shouldRender=this.messageTypes[type].visible&&shouldRender;if(shouldRender){var msgMarkup=this._renderMsg(from,to,time,msg);this._addConvMarkup(msgMarkup);if(this.actions.setVisible('clearHistory',true).refresh()){this.handleResize();}
this.lastLogItem=msgItem;}},getInputElemId:function(){return'chat_input_'+this.id;},_updateNumMissed:function(numMissed,time){if(numMissed==this.numMissed||(time&&time<=this.missedTime)){return;}
if(numMissed>99){numMissed=99;}
this.numMissed=numMissed;this.missedTime=time;this._updateNumMissedDisplay();},_updateNumMissedDisplay:function(){this.tabCount.innerHTML=this.numMissed;if(this.numMissed>0){if(this.popoutTabCount){this.popoutTabCount.style.display='block';this.popoutTabCount.innerHTML=this.numMissed;}else{chatTabSlider.updateMissedCount();}
CSS.addClass(this.tabHandle,'highlight');this.tabCount.style.display='block';}else{if(this.popoutTabCount){this.popoutTabCount.style.display='none';}else{chatTabSlider.updateMissedCount();}
CSS.removeClass(this.tabHandle,'highlight');this.tabCount.style.display='none';}},_addConvMarkup:function(markup){var isUserScrolled=this.isUserScrolled();this.chatConvContent.innerHTML+=markup;if(!isUserScrolled){this.scrollToBottom();}},_renderDateBreak:function(time){var newDate=new Date();newDate.setTime(time);var shouldRender=false;var lastDate=new Date();if(this.lastLogItem){lastDate.setTime(this.lastLogItem.time);}
if(newDate.getDate()!=lastDate.getDate()||newDate.getMonth()!=lastDate.getMonth()){shouldRender=true;}
var markup='';if(shouldRender){var classname='date_divider';if(!this.lastLogItem){classname+=' first';}
markup='<div class="'+classname+'">'+
renderDate(newDate,!presence.inPopoutWindow)+'</div>';}
return markup;},_renderVisibilityChange:function(time,visibilityMarkup){var markup=this._renderDateBreak(time);markup+='<div class="visibility_change">'+'<span class="time_stamp">'+
chatDisplay.renderServerTime(time)+'</span>'+
visibilityMarkup+'</div>';return markup;},_renderMinifeed:function(from,time,storyMarkup){var markup=this._renderDateBreak(time);markup+='<div class="minifeed">'+
storyMarkup+'</div>';return markup;},_renderMsg:function(from,to,time,msg,pendingMsgID,isError,errorMarkup){var fromSelf=from!=this.id;var fromToSelf=fromSelf&&from==to;var msgClass=fromSelf&&!fromToSelf?'self':'other';var markup=this._renderDateBreak(time);if(!markup&&this.lastLogItem&&this.lastLogItem.type=='msg'&&this.lastLogItem.from==from&&time-this.lastLogItem.time<this.msgBunchTime){}else{var pic=this.chatDisplay.userInfos[from]&&presence.inPopoutWindow?'<img src="'+this.chatDisplay.userInfos[from].thumbSrc+'" class="pic" />':'';var name=fromSelf?htmlize(presence.firstName):presence.renderLink(this.chatDisplay.profileURL+'?id='+this.id,htmlize(this.firstName));var timeStr=chatDisplay.renderServerTime(time);markup+='<h5 class="'+msgClass+'">'+
pic+' <span class="time_stamp ts_'+msgClass+'">'+timeStr+'</span>'+
name+'</h5>';}
if(pendingMsgID||errorMarkup){var pendingElementID=pendingMsgID?' id="pending_'+this.id+'_'+pendingMsgID+'"':'';markup+='<div'+pendingElementID+' class="pic_padding">'+
(errorMarkup?errorMarkup:'')+'</div>';}
var msgElementID=pendingMsgID?' id="msg_'+this.id+'_'+pendingMsgID+'"':'';msgClasses='p_'+msgClass+' pic_padding'+
(isError?' msg_error':'');markup+='<p'+msgElementID+' class="'+msgClasses+'">'+
this._renderMsgHtmlize(msg)+'</p>';return markup;},_renderMsgHtmlize:function(msg){var textProcessor=statusControl.showEmoticons?this.convTextEmoteProcessor:this.convTextProcessor;return html_hyperlink(msg.text||'',this._processStyledText.bind(this,textProcessor),this.convTextProcessor,true);},_processStyledText:function(textProcessor,str){return textProcessor(str).replace(/\b_([^_\*]+)_\b/g,'<u>$1</u>').replace(/(\s|^)\*([^_\*]+)\*(?=$|\s)/g,'$1<b>$2</b>');},_processConvText:function(str){return html_wordwrap(str,this.convWrapLimit);},_processConvTextEmote:function(str){return Emote.htmlEmote(str,this.convTextProcessor);},_processStatusText:function(str){return html_wordwrap(str,this.statusWrapLimit);}});function renderDate(date,showRelative){if(showRelative){var today=new Date();today.setHours(0);today.setMinutes(0);today.setSeconds(0);today.setMilliseconds(0);var dayMilliseconds=24*60*60*1000;var diff=today.getTime()-date.getTime();if(diff<=0){return _tx("Heute");}else if(diff<dayMilliseconds){return _tx("Gestern");}}
var month='';switch(date.getMonth()){case 0:month=_tx("Januar");break;case 1:month=_tx("Februar");break;case 2:month=_tx("M\u00e4rz");break;case 3:month=_tx("April");break;case 4:month=_tx("Mai");break;case 5:month=_tx("Juni");break;case 6:month=_tx("Juli");break;case 7:month=_tx("August");break;case 8:month=_tx("September");break;case 9:month=_tx("Oktober");break;case 10:month=_tx("November");break;case 11:month=_tx("Dezember");break;}
return _tx("{month} {date}",{'month':month,'date':date.getDate()});}

function ChatDisplay(userInfos,histories,everSentMessage,activeChats,focusedChat,profileURL,messageURL,gatedFeatures){this.userInfos=userInfos;this.histories=histories;this.everSentMessage=everSentMessage;this.user=presence.user;this.profileURL=profileURL;this.messageURL=messageURL;this.settingsURL='/ajax/chat/settings.php';this.gatedFeatures=gatedFeatures;this.useUICookieCache=gatedFeatures['ui_cookie_cache'];this.renderServerTime=this.gatedFeatures['24h_times']?this._renderServerTime24hr:this._renderServerTime12hr;this._init(activeChats,focusedChat);}
ChatDisplay.prototype={blinkTime:1500,initialBlinkDelay:3000,_init:function(activeChats,focusedChat){this.loaded=false;this.tabs={};this.numTabs=0;this.lastFocused=null;this.newMsgNames=[];this.newMsgNamesIndex=0;this.blinkingTimer=null;this.isSoundWindow=false;this.windowIsFocused=true;this.chatActivityTime=0;if(this.useUICookieCache){this.uiChangeTime=0;this.uiCookieCacheTime=(Env['rep_lag']+presence.sitevars.CHAT_UI_COOKIE_CACHE_WINDOW)*1000;}
this.favIcon=null;this.altFavIcon=null;this.initialFocusedChat=focusedChat;this.initialActiveChats=activeChats;presence.registerResizeHandler(this.handleResize.bind(this));presence.registerStateStorer(this._store.bind(this));presence.registerStateLoader(this._load.bind(this));presence.registerMsgHandler(this._handleMsg.bind(this));presence.registerStartHandler(this.start.bind(this));presence.registerShutdownHandler(this.shutdown.bind(this));presence.registerRestartHandler(this.restart.bind(this));statusControl.registerVisibilityHandler(this.handleVisibility.bind(this));buddyList.registerAvailabilityHandler(this.handleBuddyAvailability.bind(this));Event.listen(window,'focus',this.onWindowFocus.bind(this));Event.listen(window,'blur',this.onWindowBlur.bind(this));},onWindowFocus:function(){this.isWindowFocused=true;this.doStopBlinking();},onWindowBlur:function(){this.isWindowFocused=false;},start:function(){for(var id in this.tabs){this.tabs[id].start();}},shutdown:function(){this._stopBlinking();},restart:function(){for(var id in this.tabs){this.tabs[id].restart();}},loadInitialUserInfo:function(id,name,firstName){if(this.userInfos[id]){return;}
this.userInfos[id]={'name':name,'firstName':firstName,'thumbSrc':'','status':'','statusTime':'','statusTimeRel':''};},_loadInitialTabs:function(activeChats,focusedChat){var firstTab=null;for(var id in activeChats){if(presence.inVideoChat&&id!=presence.inVideoChatWith){continue;}
if(!firstTab){firstTab=id;}
if(this.tabs[id]){continue;}
var tabInfo=activeChats[id];var name,firstName;if(this.userInfos[id]){name=this.userInfos[id].name;firstName=this.userInfos[id].firstName;}else{name=tabInfo.n;if(!name){Util.warn('chat display: trying to load chat tab '+id+', but don\'t have the name');continue;}
firstName=tabInfo.fn?tabInfo.fn:getFirstName(name);}
var numMissed=tabInfo.m||0;var missedTime=tabInfo.t||0;this.tabs[id]=new ChatTab(this,id,name,firstName,numMissed,missedTime);this.numTabs++;}
if(presence.inVideoChat&&!firstTab){focusedChat=presence.inVideoChatWith;}else if(presence.inPopoutWindow&&!focusedChat){focusedChat=firstTab;}
if(focusedChat&&(focusedChat!=this.focused)){this._focusTab(focusedChat);}},load:function(){this._load(presence.state);},_load:function(presenceState){var loadedFromCache=false;if(presenceState){this.isSoundWindow=channelManager.isLowestSubdomain();if(this.blinkingTimer&&presenceState.sb){this._stopBlinking();}
this.chatActivityTime=verifyNumber(presenceState.ct)*1000;if(this.useUICookieCache){var now=presence.getTime();this.uiChangeTime=Math.max(this.uiChangeTime,verifyNumber(presenceState.uct)*1000);if(!this.loaded){if(now-this.uiChangeTime<this.uiCookieCacheTime){if(now-presenceState.ut>60*60*1000){for(var id in presenceState.t){presenceState.t[id].m=0;}}
presence.debug('chatDisplay: loading tabs from cookie cache');this._loadInitialTabs.bind(this,presenceState.t,presenceState.f).defer();loadedFromCache=true;}}}}
if(!this.loaded&&!loadedFromCache){presence.debug('chatDisplay: loading tabs from server state');this._loadInitialTabs.bind(this,this.initialActiveChats,this.initialFocusedChat).defer();this.initialFocusedChat=this.initialActiveChats=false;}
this.loaded=true;},_store:function(presenceState){presenceState.ct=Math.floor(this.chatActivityTime*0.001);presenceState.sb=(this.blinkingTimer==null)?1:0;if(this.useUICookieCache){presenceState.t={};presenceState.f=null;presenceState.uct=0;var now=presence.getTime();if(now-this.uiChangeTime<this.uiCookieCacheTime){for(var id in this.tabs){var tab=this.tabs[id];presenceState.t[id]={n:tab.name,m:tab.numMissed};if(tab.firstName!=getFirstName(tab.name)){presenceState.t[id].fn=tab.firstName;}}
presenceState.f=this.focused;presenceState.uct=Math.floor(this.uiChangeTime*0.001);}}
return presenceState;},handleResize:function(){if(!this.focused){return;}
var tab=this.tabs[this.focused];tab.handleResize();},_sendTabStateChange:function(data){data['window_id']=presence.windowID;new AsyncRequest().setURI(this.settingsURL).setData(data).setHandler(this._onCheckTabStateChangeResponse.bind(this)).setErrorHandler(bagofholding).setTransportErrorHandler(bagofholding).send();},_onCheckTabStateChangeResponse:function(response){var payload=response.getPayload();if(payload.overlay){buddyList.addOverlayInfo(payload.overlay);}},reloadTabs:function(){for(var id in this.tabs){this.tabs[id].loadData();}},_closeTab:function(id){if(!this.tabs[id]){return;}
if(this.focused==id){if(presence.inPopoutWindow){var toFocus=null;var breakNext=false;for(var otherId in this.tabs){if(otherId!=id){toFocus=otherId;if(breakNext){break;}}else if(toFocus){break;}else{breakNext=true;}}
if(toFocus){var tabToFocus=this.tabs[toFocus];this._focusTab(toFocus);}else{this.focused=null;}}else{this.focused=null;}}
this.tabs[id].close();delete this.tabs[id];this.numTabs--;chatTabSlider.close(id);},uiChanged:function(){if(this.useUICookieCache){this.uiChangeTime=presence.getTime();presence.doSync();}},closeTab:function(id){this._closeTab(id);this._sendTabStateChange({'close_chat':id});this.uiChanged();},showVideoChatTab:function(){if(presence.inVideoChat){this.tabs[this.focused].showChat();}},_unfocus:function(){if(!this.focused){return false;}
if(presence.poppedOut)this.tabs[this.focused].deselectPopoutChat();this.tabs[this.focused].unfocus();this.focused=null;return true;},unfocus:function(){var changed=this._unfocus();if(changed){this._sendTabStateChange({'unfocus_chat':1});this.uiChanged();}
this.lastFocused=null;},unfocusNoSync:function(){this._unfocus();},refocus:function(){if(!this.lastFocused||!this.tabs[this.lastFocused]){return null;}
this._focusTab(this.lastFocused);},_focusTab:function(id,name,firstName){if(id==this.focused||presence.inVideoChat&&id!=presence.inVideoChatWith){return;}
if(!this.tabs[id]){if(typeof name=='undefined'){if(!this.userInfos[id]||!this.userInfos[id].name){presence.warn("chat: couldn't create tab "+id+" since no name is specified");return;}
name=this.userInfos[id].name;firstName=this.userInfos[id].firstName;}
this.tabs[id]=new ChatTab(this,id,name,firstName,0);this.numTabs++;chatTabSlider.addTab(id);}
chatTabSlider.gotoTab(id);if(this.focused){this.tabs[this.focused].unfocus();if(presence.poppedOut)this.tabs[this.focused].deselectPopoutChat();}
this.focused=id;this.lastFocused=id;if(this.focused){var loaded=this.loaded;(function(){var hidden=!presence.inPopoutWindow&&presence.poppedOut;if(this.tabs[this.focused]){this.tabs[this.focused].focus(hidden,loaded);}
if(presence.poppedOut){this.tabs[id].selectPopoutChat();}}).bind(this).defer();}},focusTab:function(id,name,firstName){presence.pauseSync();this._focusTab(id,name,firstName);this._sendTabStateChange({'focus_chat':id});this.uiChanged();this.chatActivityTime=(new Date()).getTime();this.doStopBlinking();presence.resumeSync();},toggleTab:function(id,name,firstName){if(this.focused==id){this.unfocus();}else{this.focusTab(id,name,firstName);}},doBlink:function(){if(!this.favIcon){var links=document.getElementsByTagName('link');for(var i=0;i<links.length;i++){if(links[i].rel=='shortcut icon'){this.favIcon=links[i];this.altFavIcon=document.createElement('link');this.altFavIcon.rel='shortcut icon';this.realTitle=document.title;break;}}}
if(this.favIcon.parentNode){if(this.newMsgNames&&this.newMsgNames.length>0){if(this.newMsgNamesIndex>=this.newMsgNames.length){this.newMsgNamesIndex=0;}
var name=this.newMsgNames[this.newMsgNamesIndex++];document.title=_tx("Neue Nachricht von {name}!",{'name':name});}else{document.title=_tx("Neue Nachricht!");}
var p=this.favIcon.parentNode;p.removeChild(this.favIcon);p.appendChild(this.altFavIcon);}else{document.title=this.realTitle;var p=this.altFavIcon.parentNode;p.removeChild(this.altFavIcon);p.appendChild(this.favIcon);}},doStopBlinking:function(force){if(this.blinkingTimer||force){this._stopBlinking();presence.doSync();}},_stopBlinking:function(){if(this.blinkingTimer){if(this.favIcon&&!this.favIcon.parentNode){this.doBlink();}
clearInterval(this.blinkingTimer);this.blinkingTimer=null;this.newMsgNames=[];this.newMsgNamesIndex=0;}},handleBuddyAvailability:function(justCameOnline){for(var id in this.tabs){this.tabs[id].handleBuddyAvailability(justCameOnline);}},_handleMsg:function(channel,obj){if(obj.from){if(obj.from==this.user){var id=obj.to;}else{var id=obj.from;}
var tab=this.tabs[id];}
if(obj.window_id==presence.windowID){return false;}
switch(obj.type){case'unfocus_chat':if(!presence.inVideoChat){this._unfocus();}
return true;case'focus_chat':if(!presence.inVideoChat){this._focusTab(obj.id);}
return true;case'close_chat':if(!presence.inVideoChat){this._closeTab(obj.id);}
return true;case'msg':case'video':if(this.inVideoChat&&(obj.from==presence.inVideoChatWith||obj.to==presence.inVideoChatWith)){break;}
if(obj.from==this.user){var name=obj.to_name;var firstName=obj.to_first_name?obj.to_first_name:getFirstName(name);}else{var name=obj.from_name;var firstName=obj.from_first_name?obj.from_first_name:getFirstName(name);}
this.loadInitialUserInfo(id,name,firstName);var fromMe=(obj.from==this.user);buddyList.setAvailable(id,fromMe);if(!tab){tab=this.tabs[id]=new ChatTab(this,id,name,firstName,0);this.numTabs++;chatTabSlider.addTab(id);if(!this.focused){this.focusTab(id);}else{tab.getHistory();}}
if(presence.inPopoutWindow||!presence.poppedOut){if(fromMe){this.doStopBlinking(true);}else if(this.isWindowFocused){setTimeout(this.doStopBlinking.bind(this,true),500);}else if(!presence.isOpera){this.newMsgNames.push(tab.firstName);if(!this.blinkingTimer){this.blinkingTimer=setTimeout(function(){this.blinkingTimer=setInterval(this.doBlink.bind(this),this.blinkTime);}.bind(this),this.initialBlinkDelay);}}}
obj.time=obj.msg.time;tab.newMsg(obj);return true;case'mf':if(!tab){return false;}
tab.newMinifeed(obj);return true;case'status':if(!tab){return false;}
tab.updateStatus(obj.status,obj.time,obj.statusTimeRel);return true;case'typ':if(tab){tab.newTyping(obj);}else{presence.debug('typing message ignored');}
return true;default:return false;}},handleVisibility:function(){for(var id in this.tabs){this.tabs[id].handleVisibility();}},getHistory:function(id,create){create=create||false;if(!this.histories[id]&&create){this.histories[id]=[];}
return this.histories[id];},_renderServerTime12hr:function(serverTimeMS){var time=new Date();time.setTime(serverTimeMS+presence.timeSkew);var hours=time.getHours();var ampm='am';if(hours>=12){ampm='pm';hours-=12;}
if(hours==0){hours=12;}
var minutes=time.getMinutes();if(minutes<10){minutes='0'+minutes;}
var timeStr=hours+':'+minutes+ampm;return timeStr;},_renderServerTime24hr:function(serverTimeMS){var time=new Date();time.setTime(serverTimeMS+presence.timeSkew);var hours=time.getHours();if(hours<10){hours='0'+hours;}
var minutes=time.getMinutes();if(minutes<10){minutes='0'+minutes;}
var timeStr=hours+':'+minutes;return timeStr;}};function chat_simple_popout(popoutURL){window.open(popoutURL,"fbChatWindow","status=0,toolbar=0,location=0,menubar=0,"+"directories=0,resizable=1,scrollbars=0,"+"width="+Presence.prototype.defWidth+",height="+Presence.prototype.defHeight+",left="+Presence.prototype.defX+",top="+Presence.prototype.defY);}

function typeahead_source(){}
typeahead_source.prototype.cache_results=false;typeahead_source.prototype.enumerable=false;typeahead_source.prototype.allow_fake_results=false;typeahead_source.prototype.search_limit=10;typeahead_source.prototype.bootstrap=bagofholding;typeahead_source.check_match=function(search,value){value=typeahead_source.tokenize(value);for(var i=0,il=search.length;i<il;i++){if(search[i].length){var found=false;for(var j=0,jl=value.length;j<jl;j++){if(value[j].length>=search[i].length&&value[j].substring(0,search[i].length)==search[i]){found=true;value[j]='';break;}}
if(!found){return false;}}}
return true;}
typeahead_source.tokenize=function(text,capture,noflatten){return(noflatten?text:typeahead_source.flatten_string(text)).split(capture?typeahead_source.normalizer_regex_capture:typeahead_source.normalizer_regex);}
typeahead_source.normalizer_regex_str='(?:(?:^| +)["\'.\\-]+ *)|(?: *[\'".\\-]+(?: +|$)|[@_]| +)';typeahead_source.normalizer_regex=new RegExp(typeahead_source.normalizer_regex_str,'g');typeahead_source.normalizer_regex_capture=new RegExp('('+typeahead_source.normalizer_regex_str+')','g');typeahead_source.flatten_string=function(text){if(!typeahead_source.accents){typeahead_source.accents={a:/\u0430|\u00e0|\u00e1|\u00e2|\u00e3|\u00e4|\u00e5/g,b:/\u0431/g,c:/\u0446|\u00e7/g,d:/\u0434|\u00f0/g,e:/\u044d|\u0435|\u00e8|\u00e9|\u00ea|\u00eb/g,f:/\u0444/g,g:/\u0433/g,h:/\u0445/g,i:/\u0438|\u00ec|\u00ed|\u00ee|\u00ef/g,j:/\u0439/g,k:/\u043a/g,l:/\u043b/g,m:/\u043c/g,n:/\u043d|\u00f1/g,o:/\u043e|\u00f8|\u00f6|\u00f5|\u00f4|\u00f3|\u00f2/g,p:/\u043f/g,r:/\u0440/g,s:/\u0441/g,t:/\u0442/g,u:/\u0443|\u044e|\u00fc|\u00fb|\u00fa|\u00f9/g,v:/\u0432/g,y:/\u044b|\u00ff|\u00fd/g,z:/\u0437/g,ae:/\u00e6/g,oe:/\u0153/g,ts:/\u0446/g,ch:/\u0447/g,sh:/\u0448/g,ya:/\u044f/g}}
text=text.toLowerCase();for(var i in typeahead_source.accents){text=text.replace(typeahead_source.accents[i],i);}
return text;}
typeahead_source.prototype.set_owner=function(obj){this.owner=obj;if(this.is_ready){this.owner.update_status(typeaheadpro.STATUS_IDLE);}}
typeahead_source.prototype.ready=function(){if(this.owner&&!this.is_ready){this.is_ready=true;this.owner.update_status(typeaheadpro.STATUS_IDLE);}else{this.is_ready=true;}}
typeahead_source.highlight_found=function(result,search){var html=[];resultv=typeahead_source.tokenize(result,true,true);result=typeahead_source.tokenize(result,true);search=typeahead_source.tokenize(search);search.sort(typeahead_source._sort);for(var i=0,il=resultv.length;i<il;i++){var found=false;for(var j=0,jl=search.length;j<jl;j++){if(search[j]&&result[i].lastIndexOf(search[j],0)!=-1){html.push('<em>',htmlspecialchars(resultv[i].substring(0,search[j].length)),'</em>',htmlspecialchars(resultv[i].substring(search[j].length,resultv[i].length)));found=true;break;}}
if(!found){html.push(htmlspecialchars(resultv[i]));}}
return html.join('');}
typeahead_source._sort=function(a,b){return b.length-a.length;}
typeahead_source.prototype.gen_nomatch=function(){return this.text_nomatch!=null?this.text_nomatch:_tx("Keine Treffer gefunden");}
typeahead_source.prototype.gen_loading=function(){return this.text_loading!=null?this.text_loading:_tx("Wird geladen...");}
typeahead_source.prototype.gen_placeholder=function(){return this.text_placeholder!=null?this.text_placeholder:_tx("Fang tippen an...");}
typeahead_source.prototype.gen_noinput=function(){return this.text_noinput!=null?this.text_noinput:_tx("Fang tippen an...");}
typeahead_source.prototype.onselect_not_found=function(){if(typeof this.tokenizer._ontokennotfound!='undefined'){this.tokenizer._ontokennotfound(this.obj.value);}
if(typeof this.tokenizer.onselect!='undefined'){return this.tokenizer.onselect();}}

function ChatBuddyListTypeahead(obj,inputDiv,flid,excludedIds){this.curStr='';this.clearDiv=null;this.focused=false;this.selected=null;this.selectedIndex=0;this.selectableCount=0;this.minBuddyCount=10;if(buddyList.flLive&&buddyList.flMode){this.minBuddyCount=20;}
this.flid=flid;this.excludedIds=excludedIds;this.id=ChatBuddyListTypeahead.numTypeaheads++;this.obj=obj;this.obj.typeahead=this;this.placeholderText=obj.value;this.inputDiv=inputDiv;this.shouldShowClear=!presence.isSafari2;if(!this.shouldShowClear){obj.onmousedown=this._onmousedown.bind(this);}
addEventBase(this.obj,'focus',this._onfocus.bind(this));addEventBase(this.obj,'blur',this._onblur.bind(this));addEventBase(this.obj,'keyup',function(e){e=$E(e);var keycode=e?e.keyCode:-1;this._onkeyup.bind(this,keycode).defer();}.bind(this));this.captureSubmit();this.buildIndex();buddyList.registerAvailabilityHandler(this.buildIndex.bind(this));}
ChatBuddyListTypeahead.numTypeaheads=0;ChatBuddyListTypeahead.mixin({buildIndex:function(justCameOnline){this.availableListIDs=buddyList.getSortedListUI(this.flid);this.firstLetterIndex={};for(var i=0;i<this.availableListIDs.length;i++){var id=this.availableListIDs[i];var name=typeahead_source.tokenize(chatDisplay.userInfos[id].name);for(var token=0;token<name.length;token++){if(!this.firstLetterIndex[name[token][0]]){this.firstLetterIndex[name[token][0]]={};}
this.firstLetterIndex[name[token][0]][id]=true;}}
this._refreshAvailableList();if(buddyList.availableCount<this.minBuddyCount){hide(this.inputDiv);this.resetSearch(true);}else{show(this.inputDiv);this.search.bind(this,true).defer();}},_onfocus:function(e){this.focused=true;this.captureSubmit();},_onblur:function(e){this.focused=false;if(this.curStr==''){this.hideClear();}},_getAvailableListIDs:function(){if(!this.availableIDs){this._refreshAvailableList();}
return this.availableIDs;},_refreshAvailableList:function(){var ids=this.availableListIDs;if(this.excludedIds){ids=ids.filter((function(id){return this.excludedIds[id]!=1;}).bind(this));}
this.availableIDs=ids;},_onmousedown:function(){setTimeout(function(){this._onkeyup(0);}.bind(this),100);},_onkeyup:function(keycode){switch(keycode){case KEYS.ESC:if(''==this.curStr){buddyList.closeTab();}else{this.resetSearch(true);}
break;case undefined:case KEYS.LEFT:case KEYS.RIGHT:return false;break;case KEYS.UP:this.upArrowPress();break;case KEYS.DOWN:this.downArrowPress();break;case KEYS.RETURN:this.select();break;case KEYS.BACKSPACE:case 0:default:if(this.search()){this.resetSearch(true);}
break;}},focusInput:function(){if(buddyList.availableCount&&buddyList.availableCount>this.minBuddyCount){this.obj.focus();}
this.resetSearch();},captureSubmit:function(){if((!this.capturedForm||this.capturedSubstitute!=this.capturedForm.onsubmit)&&this.obj.form){this.capturedForm=this.obj.form;this.captured_event=this.obj.form.onsubmit;this.capturedSubstitute=this.obj.form.onsubmit=function(){return false;}.bind(this.obj.form);}},resetSearch:function(clear){if(!this.obj){return false;}
if(!this.obj.value||clear){this.curStr='';this.obj.value='';this.hideClear();}
this.selected=null;this.selectedIndex=-1;this.showAll();this.hideClear();buddyList.unfreezeTabSize();},search:function(force){var value=this.obj.value;if(value==this.placeholderText){return true;}
var str=typeahead_source.flatten_string(value);if(!force&&str==this.curStr){return false;}
this.curStr=str;var tokenizedStr=typeahead_source.tokenize(str).sort(typeahead_source._sort);if(!tokenizedStr[0]){return true;}
var quickIndex=this.firstLetterIndex[tokenizedStr[0][0]];buddyList.freezeTabSize();this.showClear();buddyList.suppressNonFriendInfoInBuddyList(this.flid);this.getMatchingFriends(quickIndex,tokenizedStr);this.selected=null;this.selectMatchingFriends();return false;},getMatchingFriends:function(quickIndex,tokenizedStr){var matches=0;var firstMatch;var availableListIDs=this._getAvailableListIDs();for(var i=0;i<availableListIDs.length;i++){var id=availableListIDs[i];var fullName=chatDisplay.userInfos[id].name;if(quickIndex!=undefined&&quickIndex[id]&&typeahead_source.check_match(tokenizedStr,fullName)){var name=typeahead_source.highlight_found(fullName,this.curStr);buddyList.getBuddyItemName(id,this.flid).setContent(HTML(name));buddyList.showBuddyItem(id,false,this.flid);matches++;if(!firstMatch){firstMatch=id;}}else{CSS.removeClass(buddyList.getBuddyItem(id,this.flid),'selected');buddyList.hideBuddy(id,this.flid);}}
if(matches>0){buddyList.hideEmptySearch(this.flid);if(matches==1||(tokenizedStr.length==1&&tokenizedStr[0].length==1)){this.selected=firstMatch;this.selectedIndex=0;CSS.addClass(buddyList.getBuddyItem(firstMatch,this.flid),'selected');}}else{buddyList.showEmptySearch(this.flid);}},selectMatchingFriends:function(){this.selectableCount=0;var availableListIDs=this._getAvailableListIDs();for(var i=0;i<availableListIDs.length;i++){var id=availableListIDs[i];var buddy=buddyList.getBuddyItem(id,this.flid);if(buddy&&CSS.getStyle(buddy,'display')!='none'){if(this.selectedIndex==this.selectableCount){this.selected=id;CSS.addClass(buddy,'selected');Vector2.scrollIntoView(buddy);}else{CSS.removeClass(buddy,'selected');}
this.selectableCount++;}}},downArrowPress:function(){this.selectedIndex++;var max=this.selectableCount-1;if(this.selectedIndex>max){if(buddyList.flLive){this.resetSearch();}else{this.selectedIndex=max;}}
this.selectMatchingFriends();},upArrowPress:function(){this.selectedIndex--;if(this.selectedIndex<0){if(buddyList.flLive){this.selectedIndex=0;}else{this.resetSearch();}}
this.selectMatchingFriends();},showAll:function(){this.obj.value='';buddyList.hideEmptySearch(this.flid);var availableListIDs=this._getAvailableListIDs();for(var i=0;i<availableListIDs.length;i++){var id=availableListIDs[i];var buddy=buddyList.getBuddyItem(id,this.flid);if(buddy){buddyList.updateBuddyItemName(id,this.flid);CSS.removeClass(buddyList.getBuddyItem(id,this.flid),'selected');buddyList.showBuddyItem(id,true,this.flid);}}
buddyList.unsuppressNonFriendInfoInBuddyList(this.flid);},showClear:function(){if(this.clearDiv==null&&this.shouldShowClear){this.clearDiv=document.createElement('div');this.clearDiv.setAttribute('id','clear_search'+this.id);DOM.setContent(this.clearDiv,HTML('<a href="#" class="hide"></a>'));var link=DOM.find(this.clearDiv,'a');link.listen('click',(function(){this.resetSearch(true);return false;}).bind(this));this.inputDiv.appendChild(this.clearDiv);}},hideClear:function(){if(ge('clear_search'+this.id)){this.clearDiv=null;this.inputDiv.removeChild(ge('clear_search'+this.id));}},select:function(){if(this.selected!=null){CSS.removeClass(buddyList.getBuddyItemName(this.selected,this.flid),'selected');buddyList.itemOnClick(this.selected,this.flid);this.resetSearch(true);}}});

function ChatBuddyList(){this.user=presence.user;this.shouldRender=true;this.haveFullList=false;this.errorMode=false;this.shouldShowLoading=false;this.availableCount=0;this.availableList={};this.sortedList=[];this.listChanged=false;this.updateTime=0;this.flLive=false;this.flMode=false;this.flData={};this.flNuxData={};this.otherFriendsFlid='-1';this.botsFlid='-2';this.stopUpdates=false;this.flSortableGroup=null;this.reorderingLists=false;this.sortables={};this.flOpts={};this.externalFlids=[];this.updateOverlay={};this.visibilityRatio={};this.justCameOnline=false;this.maxNameLen=20;this.maxStatusLen=presence.inPopoutWindow?22:28;this.backgroundColor=presence.inPopoutWindow?'#f7f7f7':'#fff';}
copy_properties(ChatBuddyList,{OVERLAY_ONLINE:0,OVERLAY_IDLE:1,OVERLAY_OFFLINE:-1,DEFAULT_OPTS:{fullDisplay:true,showStatuses:true,excludeIds:{}},BUDDY_LIST_INITIALIZED:'buddylist/initialized',BUDDY_CLICKED:'buddylist/buddy_clicked'});ChatBuddyList.prototype={maxItemsToAnimate:10,highlightColor:'#fffbe2',expandAnimDuration:400,compactItemHeight:18,fullItemHeight:31,initError:function(){this.errorMode=true;this._init();},initNoRender:function(availableCount,availableList,updateTime,listChanged,flLive,flMode,flData,flNuxData,updateOverlay){this.shouldRender=false;this.shouldShowLoading=true;this.availableCount=availableCount;this.availableList=availableList;this.updateTime=updateTime;this.listChanged=listChanged;this.updateOverlay=updateOverlay;this.flLive=flLive;this.flMode=flMode;this.flData=flData;this.flNuxData=flNuxData;this._init();if(presence.inPopoutWindow){this._forceUpdate.bind(this).defer();}},initFullList:function(availableList,updateTime,listChanged,flLive,flMode,flData,flNuxData,updateOverlay){this.availableList=availableList;this.updateTime=updateTime;this.listChanged=listChanged;this.haveFullList=true;this.flLive=flLive;this.flMode=flMode;this.flData=flData;this.flNuxData=flNuxData;this.updateOverlay=updateOverlay;this.availableCount=count(this.availableList);this._init();},_init:function(){this.availabilityHandlers=[];this.loaded=false;this.poppedOut=presence.poppedOut;this.buddyListOpen=false;this.clickedClosed=false;this.clickedOpen=false;this.updateDiff=0;this.rendered=false;this.showingError=false;this.numRequestFailures=0;for(var id in this.availableList){this.availableList[id].i=this.availableList[id].i?1:0;}
this.tabID='buddy_list_tab';this.wrapperID='buddy_list';this.contentID='buddy_list_content';this.tabDiv=ge(this.tabID);this.wrapperDiv=ge(this.wrapperID);this.contentDiv=ge(this.contentID);this.buddyListError=ge('buddy_list_error');this.buddyCountSpan=ge('buddy_count');presenceUpdater.register('buddy_list',this._checkUpdater.bind(this),this._onUpdaterResponse.bind(this),this._onUpdaterError.bind(this),this._onUpdaterError.bind(this));presenceCookieManager.register('bl',this._getCookieData.bind(this));presence.registerStateStorer(this._storeState.bind(this));presence.registerStateLoader(this._loadState.bind(this));presence.registerTabOpenHandler(this._tabOpened.bind(this));presence.registerMsgHandler(this._handleMsg.bind(this));statusControl.registerVisibilityHandler(this._handleVisibility.bind(this));this.setCompactDisplay(statusControl.getSetting('compact_buddylist'));this._loadState(presence.state);this._postInit.bind(this).defer();if(this.flLive){Arbiter.subscribe(ListEditorBootstrap.FRIEND_LISTS_CHANGED,this._flManagerHandler.bind(this));}},_postInit:function(){if(presence.inPopoutWindow){this._firstRender();}
if(statusControl.visibility){this._updateCount();}
this.updateDiff=this._computeUpdateTimeDiff();this._mergeOverlay();Arbiter.inform(ChatBuddyList.BUDDY_LIST_INITIALIZED,{},Arbiter.BEHAVIOR_PERSISTENT);},registerAvailabilityHandler:function(fn){this.availabilityHandlers.push(fn);},_storeState:function(presenceState){presenceState.blo=this.buddyListOpen?1:0;presenceState.bvt=parseInt(this.buddyViewTime*0.001);return presenceState;},_loadState:function(presenceState){this.buddyViewTime=verifyNumber(presenceState.bvt)*1000;var openBuddyList=!!presenceState.blo;if(!presence.poppedOut&&this.poppedOut){this._showLoading();this._forceUpdate();}
this.poppedOut=presence.poppedOut;var fn=null;if(!this.poppedOut){if(openBuddyList){fn=this.openTab.bind(this);}else{fn=this.closeTab.bind(this);}}
if(fn){if(this.loaded){fn();}else{fn.defer();}}
this.loaded=true;},setCompactDisplay:function(isCompact){this.isCompactDisplay=isCompact;if(this.isCompactDisplay){this.itemHeight=this.compactItemHeight;}else{this.itemHeight=this.fullItemHeight;}
if(this.rendered){this._render();}},_handleVisibility:function(){if(statusControl.visibility){this._showLoading();this._show();this._forceUpdate();this.justCameOnline=true;}else{this._hide();}},_handleMsg:function(channel,obj){switch(obj.type){case'fl_settings':this.setVisibilityRatio({});if(!this._flChanged(obj.fl_mode,obj.fl_data)){return true;}
if(obj.fl_live!=this.flLive){this._handleFlLiveChanged();}
this._onFlChange(obj.fl_mode,obj.fl_data);return true;case'seen_fl_messaging':if(!this.flNuxSaved){this._saveNuxChangesCallback();}
return true;default:return false;}},_flChanged:function(newFlMode,newFlData){return(newFlMode!=this.flMode||!are_equal(newFlData,this.flData));},_massageNowAvailableList:function(nowAvailableList,newFlMode,newFlData){for(var id in nowAvailableList){var buddyInfo=nowAvailableList[id];if(newFlMode!=this.flMode){if(newFlMode){delete buddyInfo.fl;}else{buddyInfo['fl']=[this.otherFriendsFlid];}}else{var flids=buddyInfo.fl||[];for(var i=0;i<flids.length;i++){var flid=flids[i];if(typeof this.flData[flid]=='undefined'){buddyInfo.fl.remove(flid);}}
if(buddyInfo.fl&&buddyInfo.fl.length==0){buddyInfo.fl=[this.otherFriendsFlid];}}
nowAvailableList[id]=buddyInfo;}
return nowAvailableList;},_handleFlLiveChanged:function(){goURI(URI.getRequestURI().toString(),true);},_onFlChange:function(newFlMode,newFlData){if(!this.flLive){return;}
if(!this.rendered){this.flMode=newFlMode;this.flData=newFlData;return;}
var toAddFlids=[];var toRemoveFlids=[];var onlineFlids=[];var offlineFlids=[];if(this.flMode&&this.flMode==newFlMode){var groupedList=this._groupAvailableListByFl(true);for(var flid in newFlData){if(typeof this.flData[flid]=='undefined'){if(newFlData[flid].h){continue;}
toAddFlids.push(flid);onlineFlids.push(flid);}else{if(this.flData[flid].h!=newFlData[flid].h){if(newFlData[flid].h){toRemoveFlids.push(flid);}else{toAddFlids.push(flid);if(newFlData[flid].o){onlineFlids.push(flid);}}}
else if(this.flData[flid].o!=newFlData[flid].o){if(newFlData[flid].o){onlineFlids.push(flid);}else{offlineFlids.push(flid);}}}}
for(var flid in this.flData){if(typeof newFlData[flid]=='undefined'){toRemoveFlids.push(flid);}}
this.flMode=newFlMode;if(toRemoveFlids.length!=0){this._removeFlidsFromBuddyList(toRemoveFlids,groupedList);}
if(offlineFlids.length!=0){this._goOfflineToLists(offlineFlids,true);}
this.flData=newFlData;if(toAddFlids.length!=0){this._addFlidsToDOM(toAddFlids,groupedList);}
if(onlineFlids.length!=0){this._goOnlineToLists(onlineFlids,true);}}else if(this.flMode&&this.flMode!=newFlMode){var groupedList=this._groupAvailableListByFl(true);toRemoveFlids=keys(this.flData);this.flMode=newFlMode;this.flData=newFlData;this._addFlidsToDOM([null]);this._removeFlidsFromBuddyList(toRemoveFlids,groupedList);this._forceUpdate();}else{for(var flid in newFlData){if(newFlData[flid].h){continue;}
toAddFlids.push(flid);if(newFlData[flid].o){onlineFlids.push(flid);}}
this.flMode=newFlMode;this.flData=newFlData;this._removeFlidsFromDOM([null]);if(toAddFlids.length>0){this._addFlidsToDOM(toAddFlids);}
if(onlineFlids.length>0){this._goOnlineToLists.bind(this,onlineFlids,true).defer();}}},_addFlidsToDOM:function(flids,groupedList){groupedList=groupedList||this._groupAvailableListByFl(true);var allFlids=this._getRenderedFriendLists();var firstFlid=allFlids[0];var parentOfThemAll=$('buddy_list_parent');for(var i=0;i<flids.length;i++){var flid=flids[i];if(this.flMode&&flid){var sacred=typeof this.flData[flid].s!='undefined';var elem=DOM.create('li',{'id':this._getFriendListId(flid),'className':this._getFriendListItemClasses(flid,groupedList)});if(!sacred){elem.listen('mouseover',this._friendListHandleMouseOver.bind(this,flid));elem.listen('mouseout',this._friendListHandleMouseOut.bind(this,flid));}
DOM.setContent(elem,HTML(this._renderFriendListHeader(flid)));DOM.appendContent(elem,HTML(this._renderFriendListContent(flid,[])));if(firstFlid==flid){parentOfThemAll.prependContent(elem);}else{var prevIndex=allFlids.indexOf(flid);var prevFlid=allFlids[prevIndex-1];DOM.insertAfter(ge(this._getFriendListId(prevFlid)),elem);}
this._addFlSortable(flid);this._initFlidSortable(flid,[]);}else{parentOfThemAll.prependContent(HTML(this._renderFriendListContent(null,[])));}}},_removeFlidsFromDOM:function(flids){for(var i=0;i<flids.length;i++){var flid=flids[i];if(flid){if(ge(this._getFriendListId(flid))){DOM.remove($(this._getFriendListId(flid)));this._removeFlSortable(flid);this._destroyFlidSortable(flid);}}else{DOM.remove($(this._getAvailableMarkerId(flid)));DOM.remove($(this._getIdleMarkerId(flid)));}}},loadTypeahead:function(){this.typeahead=new ChatBuddyListTypeahead($("buddy_list_typeahead_input"),$("buddy_list_typeahead"));},getContentWrapper:function(){return this.contentDiv.parentNode;},isWideViewport:function(){return Vector2.getViewportDimensions().x>=1457;},resizeTab:function(force){if(this.resizeFrozen){if(force){this.resizeFrozen=false;}else{return;}}
presence.tabContentResize(this.wrapperID,this.contentID);},freezeTabSize:function(forceLockHeight){if(this.resizeFrozen||this.showingError){return;}
this.resizeFrozen=true;if(forceLockHeight===undefined){forceLockHeight=true;}
presence.tabContentResize(this.wrapperID,this.contentID,forceLockHeight);},unfreezeTabSize:function(){if(!this.resizeFrozen){return;}
this.resizeFrozen=false;this.resizeTab();presence.contentChanged(this.contentID);},_hide:function(){if(presence.inPopoutWindow){CSS.addClass(presence.popoutSidebar,'buddy_list_hidden');}else{CSS.addClass(presence.holder,'buddy_list_hidden');if(this.flLive){this.closeTab();DOM.setContent(this.buddyCountSpan,_tx("Chat (Offline)"));}}},_show:function(){if(presence.inPopoutWindow){CSS.removeClass(presence.popoutSidebar,'buddy_list_hidden');}else{CSS.removeClass(presence.holder,'buddy_list_hidden');if(this.flLive){this.openTab();this._updateCount();}}},toggleTab:function(){if(CSS.hasClass(presence.holder,'buddy_list_hidden')&&!this.flLive){return;}
if(!this.buddyListOpen){this.clickedOpen=true;this.openTab(true);}else{this.clickedClosed=true;this.closeTab();}},_goOnline:function(){statusControl.sendVisibility(true);if(ge('chat_fl_loggedout_callout')){DOM.remove($('chat_fl_loggedout_callout'));}},openTab:function(focusTypeahead){if(this.buddyListOpen){return;}
if(CSS.hasClass(presence.holder,'buddy_list_hidden')){if(this.flLive){this._goOnline();}else{this.buddyListOpen=false;}
return;}
if(!this.rendered){var availableList=this.availableList;this.availableList={};this.shouldShowLoading=true;this._firstRender();presence.openTab(this.wrapperID,this.tabID);this.availableList=availableList;if(this.haveFullList){this._render.bind(this).defer();setTimeout(this._availableListChanged.bind(this,true),10);}}else{presence.openTab(this.wrapperID,this.tabID,this.contentID);}
this.buddyListOpen=true;setTimeout(this._openTabPostProcess.bind(this,focusTypeahead),50);},_openTabPostProcess:function(focusTypeahead){this.buddyViewTime=(new Date()).getTime();var sinceLastUpdate=(presence.getTime()-this.updateTime)*0.001;if(this.showingError||sinceLastUpdate>presence.sitevars.BUDDY_VIEW_FETCH_WINDOW){this._forceUpdate();}
presence.doSync();if(focusTypeahead&&this.typeahead){this.typeahead.focusInput();}},closeTab:function(){if(!this.buddyListOpen){return;}
this.buddyListOpen=false;presence.toggleTab(this.wrapperID,this.tabID,this.contentID);if(statusControl.visibility){setTimeout(this._closeTabPostProcess.bind(this),50);}
if(this.flLive){buddyListDisplay.closeOpenFlyout();this.exitReorderingFlMode();}},_closeTabPostProcess:function(){if(this.typeahead){this.typeahead.resetSearch(true);}
this.buddyViewTime=(new Date()).getTime();presence.doSync();},_tabOpened:function(){if(!this.buddyListOpen){return;}
this.buddyListOpen=false;this.buddyViewTime=(new Date()).getTime();presence.doSync();},_mergeOverlay:function(){if(!this.haveFullList){return;}
var time=presence.getTime();var nowAvail={};var wasAvail=[];for(var id in this.updateOverlay){if(time<this.updateOverlay[id].exp){var buddyInfo=this.availableList[id];if(!chatDisplay.userInfos[id]){continue;}
if(this.updateOverlay[id].ol!=ChatBuddyList.OVERLAY_OFFLINE){if(!buddyInfo){buddyInfo={i:0};if(this.flMode){buddyInfo.fl=[this.otherFriendsFlid];}
nowAvail[id]=buddyInfo;}else{}}else{wasAvail.push(id);}}else{delete this.updateOverlay[id];}}
if(!is_empty(nowAvail)||!is_empty(wasAvail)){this._updateAvailableListWithDiff(nowAvail,wasAvail);}},getAvailability:function(id){if(id==this.user){return statusControl.visibility;}
if(typeof this.availableList[id]!='undefined'){return this.availableList[id];}else{return null;}},setAvailable:function(id,keepIdle){this._manageOverlay(id,ChatBuddyList.OVERLAY_ONLINE);this._addToBuddyList([id],keepIdle);},_addToBuddyList:function(ids,keepIdle){var availDiff={};var wasAvail=[];for(var i=0;i<ids.length;i++){var id=ids[i];var availability=this.getAvailability(id);if(availability&&(availability.i==0||keepIdle)){continue;}
availDiff[id]={i:0};if(this.flMode){if(this.availableList[id]&&this.availableList[id].fl){availDiff[id]['fl']=this.availableList[id].fl;}else{availDiff[id]['fl']=[this.otherFriendsFlid];}}
if(availability&&availability.i==1){wasAvail.push(id);}}
this._updateAvailableListWithDiff(availDiff,wasAvail);},setFlids:function(id,flids){if(!this.getAvailability(id)){return;}
if(this.availableList[id].fl[0]==this.otherFriendsFlid){var nowAvail={};nowAvail[id]=this.availableList[id];nowAvail[id]['fl']=flids;this._updateAvailableListWithDiff(nowAvail,[],this.otherFriendsFlid);}},setUnavailable:function(id){this._manageOverlay(id,ChatBuddyList.OVERLAY_OFFLINE);this._removeFromBuddyList([id]);},_removeFromBuddyList:function(ids,flid){var toRemove=[];for(var i=0;i<ids.length;i++){var id=ids[i];if(!this.getAvailability(id)){continue;}
toRemove.push(id);}
if(toRemove.length>0){this._updateAvailableListWithDiff({},toRemove,flid);}},addOverlayInfo:function(overlay){for(var id in overlay){this._manageOverlay(id,overlay[id].ol);}
this._mergeOverlay();},_manageOverlay:function(id,new_state){var exp=presence.getTime()+60000;this.updateOverlay[id]={'ol':new_state,'exp':exp};if(this.rendered){presenceCookieManager.store();}},hideBuddy:function(id,flid){var flids;if(flid){flids=[flid];}else{flids=this._getUserFlids(id,null,true);}
this._toggleBuddy(id,false,flids);},_toggleBuddy:function(id,show,flids){var newDisplay=show?'block':'none';var listItem,flItem;for(var i=0;i<flids.length;i++){var flid=flids[i];listItem=ge(this._getBuddyListItemId(id,flid));if(listItem){listItem.style.display=newDisplay;}
if(show&&(flItem=ge(this._getFriendListId(flid)))){CSS.removeClass(flItem,'suppress');}}},showBuddyItem:function(id,showAll,flid){showAll=showAll||false;var flids;if(flid){flids=[flid];}else{var flids=this._getUserFlids(id,null,true);if(flids.length>1&&!showAll){var hideFlids=flids.slice(1);this._toggleBuddy(id,false,hideFlids);flids=[flids[0]];}}
this._toggleBuddy(id,true,flids);},getBuddyItem:function(id,flid){flid=this._getUserFlid(id,flid);return ge(this._getBuddyListItemId(id,flid));},getBuddyItemName:function(id,flid){flid=this._getUserFlid(id,flid);return ge(this._getBuddyListItemNameId(id,flid));},updateBuddyItemName:function(id,flid){var userInfo=chatDisplay.userInfos[id];var name=userInfo.name;var nameCapped;if(name.length>this.maxNameLen){nameCapped=name.substring(0,this.maxNameLen-2)+'...';}else{nameCapped=name;}
this.getBuddyItemName(id,flid).innerHTML=nameCapped;},_getUserFlid:function(id,flid){if(flid===null||flid===undefined){var flids=this._getUserFlids(id);flid=flids[0];}
return flid;},showEmptySearch:function(flid){show(this._getEmptySearchId(flid));},hideEmptySearch:function(flid){hide(this._getEmptySearchId(flid));},_getSortedList:function(){if(this.sortedList.length==0&&count(this.availableList)==this.availableCount){this.sortedList=this._sort(keys(this.availableList));}
return this.sortedList;},getSortedListUI:function(flid){if(!flid&&this.flLive&&this.flMode){var groupedList=this._groupAvailableListByFl(true);var list=[];for(var flid in groupedList){list=list.concat(groupedList[flid]);}
return unique(list);}
return this._getSortedList();},getFriendLists:function(){var res={};copy_properties(res,this.flData);delete res[this.otherFriendsFlid];delete res[this.botsFlid];return res;},_getRenderedFriendLists:function(){var flids=[];for(var flid in this.flData){if(!this.flData[flid].h){flids.push(flid);}}
return flids;},_getFriendListsInChat:function(){var flids=this._getRenderedFriendLists();flids.remove(this.otherFriendsFlid);flids.remove(this.botsFlid);return flids;},suppressNonFriendInfoInBuddyList:function(flid){this._updateNonFriendInfoInBuddyList(flid,true);},unsuppressNonFriendInfoInBuddyList:function(flid){this._updateNonFriendInfoInBuddyList(flid,false);},_updateNonFriendInfoInBuddyList:function(flid,suppress){var flids=flid?[flid]:this._getGlobalFlids(true);var idleMarker,flItem;for(var i=0;i<flids.length;i++){var flid=flids[i];if(idleMarker=ge(this._getIdleMarkerId(flid))){CSS.conditionClass(idleMarker,'suppress',suppress);}
if(flid&&(flItem=ge(this._getFriendListId(flid)))){CSS.conditionClass(flItem,'suppress',suppress);}}},_updateCount:function(){if(this.buddyCountSpan){var countText;if(this.flLive){countText=_tx("{Chat} {number-available}",{'Chat':_tx("Chat"),'number-available':'<span class="buddy_count_num">(<strong>'+this.availableCount+'</strong>)</span>'});}else{countText=_tx("Freunde Online {number-available}",{'number-available':'<span class="buddy_count_num">(<strong>'+this.availableCount+'</strong>)</span>'});}
this.buddyCountSpan.innerHTML=countText;}},setVisibilityRatio:function(cvr){this.visibilityRatio=cvr;presence.doSync();},_getCookieData:function(){var availableListCache={};for(var id in chatDisplay.tabs){if(this.availableList[id]){availableListCache[id]=this.availableList[id];}}
var buddyState={'ac':this.availableCount,'al':availableListCache,'ut':parseInt(this.updateTime*0.001),'ud':parseInt(this.updateDiff),'lc':this.listChanged?1:0,'uo':this.updateOverlay,'cvr':this.visibilityRatio};return buddyState;},_computeUpdateTimeDiff:function(){if(!statusControl.visibility||(presence.poppedOut&&!presence.inPopoutWindow)){return Math.round(presence.sitevars.BUDDY_MAX_TIME);}
var newUpdateTime=presence.sitevars.BUDDY_BASE_TIME;var now=presence.getTime();if(!chatDisplay.everSentMessage){newUpdateTime+=presence.sitevars.BUDDY_COST_NEVER_SENT_MESSAGE;}
if(!this.listChanged){newUpdateTime+=presence.sitevars.BUDDY_COST_NO_LIST_CHANGE;}
if(chatTabSlider.numTabs==0){newUpdateTime+=presence.sitevars.BUDDY_COST_NO_CHAT_TABS;}
var chatActivityMins=(now-chatDisplay.chatActivityTime)/60000;if(chatActivityMins>presence.sitevars.BUDDY_MAX_ACTIVITY_MINS){chatActivityMins=presence.sitevars.BUDDY_MAX_ACTIVITY_MINS;}
newUpdateTime+=(presence.sitevars.BUDDY_COST_CHAT_ACTIVITY/presence.sitevars.BUDDY_MAX_ACTIVITY_MINS)*chatActivityMins;if(!presence.poppedOut){var pageLoadMins=(now-presence.pageLoadTime)/60000;if(pageLoadMins<chatActivityMins){if(pageLoadMins>presence.BUDDY_MAX_ACTIVITY_MINS){pageLoadMins=presence.BUDDY_MAX_ACTIVITY_MINS;}
newUpdateTime+=(presence.sitevars.BUDDY_COST_PAGE_ACTIVITY/presence.sitevars.BUDDY_MAX_ACTIVITY_MINS)*pageLoadMins;}
if(!this.buddyListOpen){var buddyViewMins=(now-this.buddyViewTime)/60000;if(buddyViewMins>presence.sitevars.BUDDY_MAX_ACTIVITY_MINS){buddyViewMins=presence.sitevars.BUDDY_MAX_ACTIVITY_MINS;}
newUpdateTime+=(presence.sitevars.BUDDY_COST_VIEW_ACTIVITY/presence.sitevars.BUDDY_MAX_ACTIVITY_MINS)*buddyViewMins;}}
if(!newUpdateTime||newUpdateTime>presence.sitevars.BUDDY_MAX_TIME){newUpdateTime=presence.sitevars.BUDDY_MAX_TIME;}
return Math.round(newUpdateTime);},_checkUpdater:function(time,asyncData,forceUpdate){this.updateDiff=this._computeUpdateTimeDiff();if(forceUpdate||(!this.stopUpdates&&(time-this.updateTime)>this.updateDiff*1000)){asyncData.popped_out=presence.poppedOut;asyncData.available_list=this.haveFullList?this.availableList:{};asyncData.force_render=this.shouldRender;return true;}},_forceUpdate:function(){this.shouldRender=true;presenceUpdater.forceUpdate();},updateUserInfos:function(userInfos){for(var id in userInfos){var userInfo=userInfos[id];if(id==presence.user&&!this.flLive&&(!chatDisplay.userInfos[id]||userInfo.status!=chatDisplay.userInfos[id].status||userInfo.statusTimeRel!=chatDisplay.userInfos[id].statusTimeRel)){StatusEditor.update({'markup':htmlize(userInfo.status)},userInfo.statusTimeRel);}
var statusChanged=(!chatDisplay.userInfos[id]||userInfo.status!=chatDisplay.userInfos[id].status);var shouldUpdate=(statusChanged||userInfo.statusTimeRel!=chatDisplay.userInfos[id].statusTimeRel);chatDisplay.userInfos[id]=userInfos[id];if(shouldUpdate){this.updateItemDisplay(id);if(chatDisplay.tabs[id]){chatDisplay.tabs[id].updateUserInfo();}}}},_collapseItem:function(id,buddyInfo,shouldAnimate,flid){if(this.flMode&&flid){var flids=[flid];}else{var flids=this._getUserFlids(id,buddyInfo);}
for(var i=0;i<flids.length;i++){var flid=flids[i];var elem=ge(this._getBuddyListItemId(id,flid));if(elem){elem.id=this._getBuddyListWasItemId(id,flid);if(shouldAnimate){animation(elem).to('height','0px').duration(this.expandAnimDuration).go();}
this._removeSortable(id,flids[i]);}}},_expandItem:function(id,flid,prevElem,isIdle,shouldAnimate,shouldDelayExpand,showHighlight){var elem=ge(this._getBuddyListItemId(id,flid));if(!elem){var elem=document.createElement('li');elem.id=this._getBuddyListItemId(id,flid);}
if(isIdle){CSS.setClass(elem,'idle');}
elem.innerHTML=this._renderItem(id,flid,isIdle);var itemHeight;if(this.flLive){itemHeight=(flid==this.otherFriendsFlid)?this.compactItemHeight:this.itemHeight;}else{itemHeight=isIdle?this.compactItemHeight:this.itemHeight;}
var opts=this._getFlOpts(flid);if(!opts.fullDisplay){itemHeight=this.compactItemHeight;}
if(!shouldAnimate){elem.style.height=itemHeight+'px';DOM.insertAfter(prevElem,elem);}else{elem.style.height='0px';DOM.insertAfter(prevElem,elem);var anim=animation(elem);if(shouldDelayExpand){anim.duration(this.expandAnimDuration+500).checkpoint();}
anim.from('height','0').to('height',itemHeight+'px').duration(this.expandAnimDuration);if(showHighlight===undefined){showHighlight=!isIdle;}
if(showHighlight){elem.style.backgroundColor=this.highlightColor;anim.checkpoint().duration(3000).checkpoint().to('backgroundColor',this.backgroundColor).duration(500);}
anim.go();}
this._addSortable(id,flid);return elem;},_clearWasAvailableItems:function(wasAvailableIDs,wasAvailableList,flid){if(!this.rendered){return;}
for(var i=0;i<wasAvailableIDs.length;i++){var id=wasAvailableIDs[i];if(wasAvailableList[id]){if(this.flMode&&flid){var flids=[flid];}else{var flids=this._getUserFlids(id,wasAvailableList[id]);}
for(var j=0;j<flids.length;j++){var elem=ge(this._getBuddyListWasItemId(id,flids[j]));if(elem){DOM.remove(elem);delete elem;}}}}
this._showBuddyListEmptyItem();},_showBuddyListEmptyItem:function(){var emptyItem=ge(this._getBuddyListEmptyItemId());if(emptyItem){CSS.conditionClass(emptyItem,'hide_empty_item',this.availableCount!=0);}},_hideBuddyListEmptyItem:function(){var emptyItem=ge(this._getBuddyListEmptyItemId());if(emptyItem){CSS.addClass(emptyItem,'hide_empty_item');}},_updateAvailableListWithDiff:function(nowAvailableList,wasAvailableIDs,flid){if(this.stopUpdates){return;}
var id,isIdle;var shouldDelayExpand=false;var wasAvailableList={};var wasAvailableMultipleLists={};var filterExternalFlids=(flid!=null);for(var i=0;i<wasAvailableIDs.length;i++){var uid=wasAvailableIDs[i];if(this.availableList[uid]){shouldDelayExpand=true;wasAvailableList[wasAvailableIDs[i]]=this.availableList[uid];if(flid&&this.flMode&&this.availableList[uid].fl.length>1){this.availableList[uid].fl.remove(flid);wasAvailableMultipleLists[uid]=1;continue;}
delete this.availableList[uid];}}
this._hideBuddyListEmptyItem();var nowAvailableIDs=keys(nowAvailableList);var shouldAnimate=!flid&&!this.showingError&&!presence.isSafari2&&(wasAvailableIDs.length+nowAvailableIDs.length<this.maxItemsToAnimate);if(this.rendered){for(var i=0;i<wasAvailableIDs.length;i++){if(wasAvailableList[wasAvailableIDs[i]]){this._collapseItem(wasAvailableIDs[i],wasAvailableList[wasAvailableIDs[i]],shouldAnimate,flid);}}
var clearDelay=shouldAnimate?this.expandAnimDuration:0;setTimeout(this._clearWasAvailableItems.bind(this,wasAvailableIDs,wasAvailableList,flid),clearDelay);}
var availableIDs=this.sortedList;if(this.haveFullList){this.sortedList=[];}
this._sort(nowAvailableIDs,nowAvailableList);var nowAvailableID=nowAvailableIDs.shift();var availableID=availableIDs.shift();var compareFunction=this._compareFunction.bind(this,null);var defaultPrevAvailElemIds={},prevIdleElemIds={},prevAvailElemIds={},hasIdle={},hasNotIdle={};var globalFlids=[];if(this.shouldRender){globalFlids=this._getGlobalFlids();for(var i=0;i<globalFlids.length;i++){var flid=globalFlids[i];defaultPrevAvailElemIds[flid]=prevAvailElemIds[flid]=this._getAvailableMarkerId(flid);prevIdleElemIds[flid]=this._getIdleMarkerId(flid);hasIdle[flid]=hasNotIdle[flid]=false;}}
var noResize=false;var flidTracking=function(id,flid,isIdle){var itemID=this._getBuddyListItemId(id,flid);if(isIdle){prevIdleElemIds[flid]=itemID;}else{prevAvailElemIds[flid]=itemID;}
hasIdle[flid]=hasIdle[flid]||isIdle;hasNotIdle[flid]=hasNotIdle[flid]||!isIdle;};var flidTrackingFunc=flidTracking.bind(this);while(true){if(availableID&&wasAvailableList[availableID]&&!wasAvailableMultipleLists[availableID]){availableID=availableIDs.shift();continue;}
if(availableID&&nowAvailableID){if(availableID==nowAvailableID){availableID=availableIDs.shift();continue;}
if(compareFunction(availableID,nowAvailableID,this.availableList[availableID].i,nowAvailableList[nowAvailableID].i)<0){id=availableID;}else{id=nowAvailableID;}}else if(availableID){id=availableID;}else if(nowAvailableID){id=nowAvailableID;}else{break;}
if(id==availableID){availableID=availableIDs.shift();isIdle=this.availableList[id].i;if(this.shouldRender){var flids=this._getUserFlids(id);for(var i=0;i<flids.length;i++){flidTrackingFunc(id,flids[i],isIdle);}}}else{nowAvailableID=nowAvailableIDs.shift();if(this.shouldRender&&this.availableList[id]){var toRemoveFlids=this._getUserFlids(id,this.availableList[id],filterExternalFlids);for(var i=0;i<toRemoveFlids.length;i++){var flid=toRemoveFlids[i];var elem=ge(this._getBuddyListItemId(id,flid));if(elem){this._removeSortable(id,flid);DOM.remove(elem);}}}
this.availableList[id]=nowAvailableList[id];if(this.shouldRender){isIdle=nowAvailableList[id].i;var flids=this._getUserFlids(id,null,filterExternalFlids);for(var i=0;i<flids.length;i++){var flid=flids[i];var prevElem=isIdle?ge(prevIdleElemIds[flid]):ge(prevAvailElemIds[flid]);if(!prevElem){prevElem=ge(defaultPrevAvailElemIds[flid]);}
this._expandItem(id,flid,prevElem,isIdle,shouldAnimate,shouldDelayExpand);noResize=true;flidTrackingFunc(id,flid,isIdle);}}}
if(this.haveFullList){this.sortedList.push(id);}}
if(this.shouldRender){for(var i=0;i<globalFlids.length;i++){var flid=globalFlids[i];var idleMarker=ge(this._getIdleMarkerId(flid));if(idleMarker){if(hasIdle[flid]&&hasNotIdle[flid]){CSS.removeClass(idleMarker,'hide_idle_marker');}else{CSS.addClass(idleMarker,'hide_idle_marker');}}}
var delay=0;if(shouldAnimate){var didExpand=noResize;if(didExpand){delay+=this.expandAnimDuration;}
if(shouldDelayExpand){delay+=this.expandAnimDuration;if(didExpand){delay+=500;}}}
setTimeout(this.resizeTab.bind(this),delay);this._resetFlidClasses();}
this._availableListChanged(noResize);},_sort:function(ids,availableList){availableList=availableList||this.availableList;var compareFunction=this._compareFunction.bind(this,availableList);ids.sort(compareFunction);return ids;},_compareFunction:function(availableList,id1,id2,id1Idle,id2Idle){if(typeof id1Idle=='undefined'){id1Idle=availableList[id1].i;}
if(typeof id2Idle=='undefined'){id2Idle=availableList[id2].i;}
if(id1Idle^id2Idle){return id1Idle?1:-1;}
var id1Name=chatDisplay.userInfos[id1].name.toLowerCase();var id2Name=chatDisplay.userInfos[id2].name.toLowerCase();return(id1Name<id2Name)?-1:1;},_availableListChanged:function(noResize){if(this.haveFullList){this.availableCount=count(this.availableList);}
for(var id in this.availableList){this.availableList[id].i=this.availableList[id].i?1:0;}
if(this.rendered){presenceCookieManager.store();}
presence.contentChanged(this.contentID);if(!noResize){this.resizeTab();}
this._updateCount();for(var i=0;i<this.availabilityHandlers.length;i++){this.availabilityHandlers[i](this.justCameOnline);}
this.justCameOnline=false;},_onUpdaterResponse:function(buddyListResponse,time){if(this.shouldRender&&!buddyListResponse.forcedRender){return;}
this.updateTime=time;if(!statusControl.visibility){return;}
this.flNuxData=buddyListResponse.flNuxData;if(this.stopUpdates){if(this._shouldRenderFullNuxInterstitial()){this._renderFullNuxInterstitial();}
return;}
var hadFullList=this.haveFullList;var flChanged=this._flChanged(buddyListResponse.flMode,buddyListResponse.flData);var nowAvailableListEmpty=is_empty(buddyListResponse.nowAvailableList);this.numRequestFailures=0;this.errorMode=false;this._hideError();this.listChanged=buddyListResponse.listChanged;this.updateUserInfos(buddyListResponse.userInfos);if(flChanged&&buddyListResponse.flLive!=this.flLive){this._handleFlLiveChanged();}
if((hadFullList&&flChanged)||nowAvailableListEmpty){}else{this.flLive=buddyListResponse.flLive;this.flMode=buddyListResponse.flMode;this.flData=buddyListResponse.flData;}
if(this.shouldRender){this.haveFullList=true;if(!this.rendered){this._firstRender();}}else{this.availableCount=buddyListResponse.availableCount;this._updateCount();}
if(!hadFullList||buddyListResponse.wasAvailableIDs.length||!nowAvailableListEmpty){for(var id in this.updateOverlay){if(time<this.updateOverlay[id].exp){if(hadFullList||!this.availableList[id]){delete buddyListResponse.nowAvailableList[id];}else{buddyListResponse.nowAvailableList[id]=this.availableList[id];}
for(var i=0;i<buddyListResponse.wasAvailableIDs.length;i++){if(id==buddyListResponse.wasAvailableIDs[i]){buddyListResponse.wasAvailableIDs.splice(i,1);break;}}}else{delete this.updateOverlay[id];}}
if(hadFullList){if(flChanged&&!nowAvailableListEmpty){buddyListResponse.nowAvailableList=this._massageNowAvailableList(buddyListResponse.nowAvailableList,buddyListResponse.flMode,buddyListResponse.flData);}
this._updateAvailableListWithDiff(buddyListResponse.nowAvailableList,buddyListResponse.wasAvailableIDs);if(flChanged){this._onFlChange(buddyListResponse.flMode,buddyListResponse.flData);}}else{this.availableList=buddyListResponse.nowAvailableList;this._availableListChanged(true);if(this.shouldRender){this._render();}}}else{this._availableListChanged.bind(this).defer();if(flChanged&&nowAvailableListEmpty){this._onFlChange(buddyListResponse.flMode,buddyListResponse.flData);}}},_onUpdaterError:function(response){this.numRequestFailures++;if(this.numRequestFailures>1){this.updateTime=presence.getTime();this.availableCount=0;this._updateCount();this._updateAvailableListWithDiff({},keys(this.availableList));this._showLoadError();}},itemOnClick:function(id,flid){var elem;if((elem=ge(this._getBuddyListItemId(id,flid)))&&elem.activeDrag){return;}
presence.pauseSync();chatDisplay.focusTab(id);if(!this.isSticky()){this.closeTab();}
if(this.typeahead){this.typeahead.resetSearch(true);}
Arbiter.inform(ChatBuddyList.BUDDY_CLICKED,{flid:flid,id:id});presence.resumeSync();},_renderItem:function(id,flid,isIdle){var userInfo=chatDisplay.userInfos[id];var name=userInfo.name;var picSrc=userInfo.thumbSrc;var nameCapped;if(name.length>this.maxNameLen){nameCapped=name.substring(0,this.maxNameLen-2)+'...';}else{nameCapped=name;}
var status,anchorTitle='',statusCapped='';if(status=userInfo.status){if(status.length>this.maxStatusLen){statusCapped=status.substring(0,this.maxStatusLen-2)+'...';}else{statusCapped=status;}
anchorTitle=isIdle?_tx("{Idle} - {name} {status} ({time})",{'name':htmlize(name),'Idle':_tx("Inaktiv"),'status':htmlize(status),'time':userInfo.statusTimeRel}):_tx("{name} {status} ({time})",{'name':htmlize(name),'status':htmlize(status),'time':userInfo.statusTimeRel});}else if(isIdle){anchorTitle=_tx("Inaktiv");}
if(flid){var onclick=sprintf('buddyList.itemOnClick(%d, \'%s\')',id,flid);}else{var onclick=sprintf('buddyList.itemOnClick(%d)',id);}
var markupArr=['<a href="#" class="clearfix" title="',anchorTitle,'" ','onclick="',onclick,';return false;">'];var fullDisplay;if(this.flLive){fullDisplay=!this.isCompactDisplay&&(flid!=this.otherFriendsFlid);}else{fullDisplay=!isIdle&&!this.isCompactDisplay;}
var opts=this._getFlOpts(flid);fullDisplay&=opts.fullDisplay;if(fullDisplay){markupArr=markupArr.concat('<img src="',picSrc,'" width="25px" height="25px" />');}
markupArr=markupArr.concat('<div class="friend_status">','<strong id="',this._getBuddyListItemNameId(id,flid),'">',htmlize(nameCapped),'</strong>');if(fullDisplay&&opts['showStatuses']){markupArr=markupArr.concat('<span>',htmlize(statusCapped),'</span>');}
markupArr=markupArr.concat('</div>','<div class="available_dot"></div>','</a>');return markupArr.join('');},_groupAvailableListByFl:function(groupSorted,emptyGroups){if(!this.flMode||!this.flData){return null;}
groupSorted=groupSorted||false;emptyGroups=emptyGroups||false;var result={};for(var flid in this.flData){result[flid]=[];}
if(emptyGroups){return result;}
var groupId=function(id){var flids=this.availableList[id].fl;if(flids){for(var j=0;j<flids.length;++j){var flid=flids[j];result[flid].push(id);}}};var groupIdFunc=groupId.bind(this);if(groupSorted){var sortedList=this._getSortedList();for(var i=0;i<sortedList.length;i++){groupIdFunc(sortedList[i]);}}else{for(var id in this.availableList){groupIdFunc(id);}}
return result;},_listNameInUse:function(name){for(var flid in this.flData){if(this.flData[flid].n==name){return true;}}
return false;},keyPressNewListInput:function(e){if(event_get_keypress_keycode(e)==KEYS.RETURN){var e=$E(e);var list_name=e.getTarget().value;if(this._listNameInUse(list_name)){new ErrorDialog().showError(_tx("Ein Fehler ist aufgetreten."),_tx("Du kannst denselben Namen nicht f\u00fcr zwei unterschiedliche Listen verwenden. Bitte w\u00e4hle einen einzigartigen Namen f\u00fcr diese Liste aus."))
return;}
var data={'create':list_name};this._saveBuddyListSetting(data,function(){for(var flid in this.flData){if(this.flData[flid].n==list_name){Vector2.scrollIntoView($(this._getFriendListId(flid)));break;}}
if(ge('chat_nux_no_lists')){this.dismissFlNuxCallout('chat_nux_no_lists');}}.bind(this));return e.kill();}},handleFlInChat:function(is_visible,flid){buddyListDisplay.closeOpenFlyout();if(is_visible){this._unHideFriendListFromChat(flid);}else{this._hideFriendListFromChat(flid);}},_unHideFriendListFromChat:function(flid){var noLists=this._getFriendListsInChat().length==0;var flids=[flid];var data={'unhide_from_chat':1,'flids':flids};this.flData[flid].h=0;this._saveBuddyListSetting(data,function(){this._showEmptyListMomentarily(flid);Vector2.scrollIntoView($(this._getFriendListId(flid)));}.bind(this));if(noLists){this._onFlChange(true,this.flData);}else{this._addFlidsToDOM(flids);}},_hideFriendListFromChat:function(flid){var lastList=this._getFriendListsInChat().length==1;var flids=[flid];var data={'hide_from_chat':1,'flids':flids};this.flData[flid].h=1;this._saveBuddyListSetting(data);if(lastList){this._onFlChange(false,this.flData);}else{this._removeFlidsFromBuddyList(flids);}},_friendListHandleSwitchThrown:function(flid){var currentlyOnline=this.flData[flid].o;if(currentlyOnline){this._goOfflineToLists([flid]);}else{this._goOnlineToLists([flid]);}},_friendListHandleSwitchMouseDown:function(flid){var evt=Event.listen(document,'mouseup',function(){evt.remove();this._friendListHandleSwitchThrown(flid);}.bind(this));},_friendListHandleMouseOver:function(flid){if(this.reorderingLists){return;}
CSS.addClass($(this._getFriendListId(flid)),'hover');},_friendListHandleMouseOut:function(flid){CSS.removeClass($(this._getFriendListId(flid)),'hover');},_saveBuddyListSetting:function(data,callback){data['user']=this.user;callback=callback||bagofholding;new AsyncRequest().setData(data).setURI('/ajax/chat/buddy_list_settings.php').setHandler(this._onBuddyListSettingSave.bind(this,callback)).setFinallyHandler(function(){buddyListDisplay.closeOpenFlyout();}).send();},_goOnlineToLists:function(flids,readOnly){readOnly=readOnly||false;var data={'online_to_list':1,'flids':flids,'read_only':readOnly};this._handleFlVisibilityChange(flids,1);this._saveBuddyListSetting(data);},_handleFlVisibilityChange:function(flids,online,callback){for(var i=0;i<flids.length;i++){var flid=flids[i]
var flItem=ge(this._getFriendListId(flid));if(!flItem){continue;}
this.flData[flid].o=online;if(online){CSS.addClass(flItem,'online');CSS.removeClass(flItem,'offline');if(flid==this.otherFriendsFlid){this._showEmptyListMomentarily(flid);}}else{CSS.addClass(flItem,'offline');CSS.removeClass(flItem,'online');}
var tooltip=DOM.find(flItem,'div.titletip strong');DOM.setText(tooltip,this._getFriendListTooltipText(flid));callback&&callback(flid);}},_showEmptyListMomentarily:function(flid){this.shownEmptyFlids=this.shownEmptyFlids||{};this.shownEmptyFlids[flid]=1;var flItem=ge(this._getFriendListId(flid));if(flItem){CSS.addClass(flItem,'show_empty_list');}
(function(){delete this.shownEmptyFlids[flid];var flItem=ge(this._getFriendListId(flid));if(flItem){CSS.removeClass(flItem,'show_empty_list');}}).bind(this).defer(8000);},_goOfflineToLists:function(flids,uiOnly){uiOnly=uiOnly||false;var groupedLists=this._groupAvailableListByFl();this._handleFlVisibilityChange(flids,0,function(flid){var idsToRemove=groupedLists[flid];this._removeFromBuddyList(idsToRemove,flid);}.bind(this));if(!uiOnly){var data={'offline_to_list':1,'flids':flids};this._saveBuddyListSetting(data);}},_removeFlidsFromBuddyList:function(flids,groupedList){groupedList=groupedList||this._groupAvailableListByFl(true);if(!groupedList){return;}
var nowAvailList={};for(var i=0;i<flids.length;i++){var flid=flids[i];var ids=groupedList[flid];if(!ids){continue;}
for(var j=0;j<ids.length;j++){var id=ids[j];var buddyInfo={};buddyInfo['i']=this.availableList[id].i;buddyInfo['fl']=this.availableList[id].fl.clone();if(this.flMode){buddyInfo.fl.remove(flid);if(buddyInfo.fl.length==0){buddyInfo.fl.push(this.otherFriendsFlid);}}else{delete buddyInfo.fl;}
nowAvailList[id]=buddyInfo;}}
if(!is_empty(nowAvailList)){this._updateAvailableListWithDiff(nowAvailList,[]);}
this._removeFlidsFromDOM(flids);},_onBuddyListSettingSave:function(callback,asyncResponse){var payload=asyncResponse.getPayload();if(this.flLive&&payload){if(payload.availableList){this.updateUserInfos(payload.userInfos);var flid;if(payload.flids&&payload.flids.length==1){flid=payload.flids[0];}
this._updateAvailableListWithDiff(payload.availableList,[],flid);}
if(payload.flNuxData){this.flNuxData=payload.flNuxData;}
if(payload.flData){var flMode;if(typeof payload.flMode!='undefined'){flMode=payload.flMode;}else{flMode=true;}
this._onFlChange(flMode,payload.flData);this._resetFlidClasses();}
callback&&callback();}},_flManagerHandler:function(message,data){},_resetFlidClasses:function(){if(!this.flLive||!this.flMode){return;}
var groupedFl=this._groupAvailableListByFl();for(var flid in this.flData){var flItem=ge(this._getFriendListId(flid));if(flItem){CSS.setClass(flItem,this._getFriendListItemClasses(flid,groupedFl));}}},_getFriendListItemClasses:function(flid,groupedFl){var flid_online=this.flData[flid].o;var flid_hidden=this.flData[flid].h;var classes=['friend_list'];if(flid_online){classes.push('online');}else{classes.push('offline');}
if(!flid_hidden&&this.shownEmptyFlids&&this.shownEmptyFlids[flid]){classes.push('show_empty_list');}
if(is_empty(groupedFl[flid])){if(this.availableCount!=0&&(this.flData[flid].c==0||flid==this.otherFriendsFlid)){classes.push('empty_friend_list');}else if(flid_online){classes.push('hide_friend_list');}}
if(flid==this.otherFriendsFlid){classes.push('compact_friend_list');classes.push('other_friends_list');}
if(this.reorderingLists&&(flid==this.otherFriendsFlid||flid==this.botsFlid)){classes.push('suppress');}
return classes.join(' ');},_renderFriendListHeader:function(flid){var fl_name=this.flData[flid].n;var online=this.flData[flid].o;var sacred=typeof this.flData[flid].s!='undefined';var edit_link_onclick='';var edit_link='';if(!sacred&&flid!=this.otherFriendsFlid){edit_link_onclick=sprintf('return !buddyList.reorderingLists ? ListEditorBootstrap.bootstrap(%d) : false;',flid);edit_link=_tx("bearbeiten");}
var markupArr=['<div class="friendlist_status">','<span class="title"><a href="#" onclick="',edit_link_onclick,'">',htmlize(fl_name),'</a></span>','<span class="edit_link">','<a href="#" onclick="',edit_link_onclick,'">',edit_link,'</a>','</span>','</div>'];if(!sacred){var onmousedown=sprintf('buddyList._friendListHandleSwitchMouseDown(%#, this);',flid);markupArr.push('<div class="online_status_container"><a class="online_status" ','onmousedown="',onmousedown,'" ','>','<div class="titletip"><strong>',this._getFriendListTooltipText(flid),'</strong></div>','</a>','</div>');}
return markupArr.join('');},_getFriendListTooltipText:function(flid){return this.flData[flid].o?_tx("Offline gehen"):_tx("Offline gehen");},registerExternalFriendList:function(opts){if(!this.rendered){this._firstRender();}
var flid='xfl_'+this.externalFlids.length;this.externalFlids.push(flid);this.flOpts[flid]=opts;return flid;},_renderFriendListContent:function(flid,ids){var markupArr;var haveFlid=this.flMode&&flid;if(haveFlid){markupArr=['<ul id="',this._getFriendListContainerId(flid),'"','class="friend_list_container">'];}else{markupArr=[];}
markupArr.push('<li id="',this._getAvailableMarkerId(flid),'" class="suppress"></li>');var idleArr=[];var hasIdle=false,hasNotIdle=false;for(var j=0;j<ids.length;j++){var id=ids[j];var idle=this.availableList[id].i;var itemMarkupArr=['<li id="',this._getBuddyListItemId(id,flid),'"',(idle?' class="idle"':''),'>',this._renderItem(id,flid,idle),'</li>'];if(idle){hasIdle=true;idleArr=idleArr.concat(itemMarkupArr);}else{hasNotIdle=true;markupArr=markupArr.concat(itemMarkupArr);}}
var idleMarkerClass=(hasIdle&&hasNotIdle)?'':' hide_idle_marker';markupArr.push('<li id="',this._getIdleMarkerId(flid),'" class="subheader',idleMarkerClass,'"></li>');markupArr=markupArr.concat(idleArr);if(haveFlid){markupArr.push('</ul>');}
return markupArr.join('');},_renderBuddyContent:function(){var emptyItemClass=(this.availableCount?'hide_empty_item':'');var markupArr=['<div id="buddy_list_all" class="subgroup">',this.renderEmptySearch(),'<ul id="buddy_list_parent" class="list_select">','<li id="',this._getBuddyListEmptyItemId(),'" class="info_text ',emptyItemClass,'">',_tx("Es steht niemand zum Chatten zur Verf\u00fcgung."),'</li>'];var flids;var groupedLists={};if(this.flMode){flids=keys(this.flData);groupedLists=this._groupAvailableListByFl(true);}else{flids=[null];}
for(var i=0;i<flids.length;++i){var flid=flids[i];var ids=[];if(this.flMode&&flid){if(this.flData[flid].h){continue;}
var sacred=typeof this.flData[flid].s!='undefined';var onmouseover='',onmouseout='';if(!sacred){onmouseover=sprintf('buddyList._friendListHandleMouseOver(%d);',flid);onmouseout=sprintf('buddyList._friendListHandleMouseOut(%d);',flid);}
markupArr.push('<li id="',this._getFriendListId(flid),'"','onmouseover="',onmouseover,'" ','onmouseout="',onmouseout,'" ','class="',this._getFriendListItemClasses(flid,groupedLists),'">',this._renderFriendListHeader(flid));ids=groupedLists[flid];}else{ids=this._getSortedList();}
markupArr.push(this._renderFriendListContent(flid,ids));if(this.flMode&&flid){markupArr.push('</li>');}}
markupArr.concat(['</ul>','</div>']);return markupArr.join('');},renderEmptySearch:function(flid){var html='<div id="'+this._getEmptySearchId(flid)+'" class="info_text" style="display:none">'+
_tx("Diese\/r FreundIn konnte nicht online gefunden werden.")+'</div>';return html;},_render:function(){this._getSortedList();CSS.conditionClass(this.contentDiv,'compact',this.isCompactDisplay);var content=this._renderBuddyContent();if(this.rendered){CSS.addClass(this.contentDiv,'hidden');}
DOM.empty(this.contentDiv);this.contentDiv.innerHTML=content;presence.contentChanged(this.contentID);if(this.rendered){CSS.addClass(this.wrapperDiv,'presence_menu_offscreen');this._hideError();CSS.removeClass(this.contentDiv,'hidden');this.resizeTab();CSS.removeClass(this.wrapperDiv,'presence_menu_offscreen');this._initDragging();}
if(this.errorMode){this._showLoadError();}
if(this.shouldShowLoading){this._showLoading();this.shouldShowLoading=false;}},_renderFullNuxInterstitial:function(){CSS.addClass(this.wrapperDiv,'fl_nux');if(!this.flNuxData.checked_lists||is_empty(this.flNuxData.checked_lists)){this._showLoading();}else{DOM.setContent(this.contentDiv,this._renderFullNuxInterstitialContent());this._hideError();CSS.removeClass(this.contentDiv,'hidden');}},_renderFullNuxInterstitialContent:function(){var friend_lists=this.getFriendLists();var lists=$N('div',{className:'chat_fl_nux_friend_lists'});for(var flid in friend_lists){var div_id=this._encodeFlid('chat_fl_select',flid);var checkbox_id=this._encodeFlid('chat_fl_checkbox',flid);lists.appendChild(buddyListDisplay._renderToggle(div_id,this.flNuxData.checked_lists[flid],friend_lists[flid].n,checkbox_id));}
var content=$N('div',{className:'chat_fl_nux_content'});var header_text;if(this.flNuxData.used_chat){header_text=_tx("Verwende deine Freundeslisten, um Chat zu organisieren");}else{header_text=_tx("Willkommen beim Chat");}
var header=$N('div',{className:'chat_fl_nux_header'},header_text);content.appendChild(header);content.appendChild($N('div',{className:'chat_fl_nux_messaging'},_tx("Lege fest, welche Listen deinem Chat hinzugef\u00fcgt werden sollen. Du kannst individuell entscheiden, welchen deiner Listen du als offline oder online angezeigt wirst.")));content.appendChild(lists);var button=$N('input',{type:'button',className:'inputbutton',value:_tx("Speichern und fortfahren")});button.listen('click',this._saveNuxChanges.bind(this));content.appendChild($N('div',{className:'chat_fl_nux_save_button'},button));return content;},_renderNuxNoLists:function(){var x_to_close=$N('a',{className:'nux_x_to_close'});x_to_close.listen('click',this.dismissFlNuxCallout.bind(this,'chat_nux_no_lists'));var no_lists=$N('div',{id:'chat_nux_no_lists'},[_tx("Erstelle Freundeslisten, um festzulegen, wer sehen kann, dass du online bist."),$N('span',{className:'chat_fl_nux_no_lists_nub'}),x_to_close]);DOM.insertBefore(no_lists,this.contentDiv);},_saveNuxChanges:function(){var checkboxes=DOM.scry(this.contentDiv,'input[type="checkbox"]');var checkbox,flid,checked;var listsInChat=[];for(var i=0;i<checkboxes.length;++i){checkbox=checkboxes[i];flid=this._extractFlid(checkbox.id);checked=checkbox.checked;if(checked){listsInChat.push(flid);}}
var data={'set_lists_in_chat':1,'flids':listsInChat};this.flNuxSaved=true;this._saveBuddyListSetting(data,this._saveNuxChangesCallback.bind(this));},_saveNuxChangesCallback:function(){this._forceUpdate();CSS.removeClass(this.wrapperDiv,'fl_nux');this.stopUpdates=false;},dismissFlNuxCallout:function(elem_id){DOM.remove(elem_id);this._saveBuddyListSetting({dismiss_fl_callout:1});},_shouldRenderFullNuxInterstitial:function(){return this.flLive&&!this.flNuxData.seen_messaging&&this.flNuxData.has_lists;},_shouldRenderNoListsMessaging:function(){return this.flLive&&!this.flNuxData.seen_messaging&&!this.flNuxData.has_lists&&this.flNuxData.num_friends>=20;},_firstRender:function(){if(this._shouldRenderFullNuxInterstitial()){this.stopUpdates=true;this._renderFullNuxInterstitial();}else{if(this._shouldRenderNoListsMessaging()){this._renderNuxNoLists();}
this._render();this.rendered=true;this.loadTypeahead();}},updateItemDisplay:function(id){var buddyInfo=this.availableList[id];if(!buddyInfo){return;}
var userFlids=this._getUserFlids(id);for(var i=0;i<userFlids.length;i++){var flid=userFlids[i];var item=ge(this._getBuddyListItemId(id,flid));if(!item){return;}
item.innerHTML=this._renderItem(id,flid,buddyInfo.i);}},_showLoadError:function(){this._showError(_tx("Verf\u00fcgbare Freunde konnten nicht geladen werden."));},_showLoading:function(){this._showError(_tx("Wird geladen ..."));},_hideError:function(){this.showingError=false;CSS.removeClass(this.wrapperDiv,'error');},_showError:function(error){this.showingError=true;set_inner_html(this.buddyListError,error);CSS.addClass(this.wrapperDiv,'error');},isSticky:function(){return statusControl.getSetting('sticky_buddylist');},enterReorderingFlMode:function(){if(this.reorderingLists){return;}
this.reorderingLists=true;CSS.addClass(this.wrapperDiv,'reorder_fl');var allFlids=this._getRenderedFriendLists();this.flSortableGroup=new SortableGroup();for(var i=0;i<allFlids.length;i++){var flid=allFlids[i];if(flid==this.otherFriendsFlid||flid==this.botsFlid){CSS.addClass(this._getFriendListId(flid),'suppress');}else{this._addFlSortable(flid);}}
var reorder_alert=$N('div',{id:'reorder_fl_alert'},[$N('span',{className:'helper_text'},_tx("Listen zum Umsortieren mithilfe der Maus verschieben.")),$N('input',{type:'button',className:'inputbutton',value:_tx("Fertig mit Umsortieren"),onclick:this.exitReorderingFlMode.bind(this)})]);DOM.insertBefore(reorder_alert,this.contentDiv);this.freezeTabSize(false);},exitReorderingFlMode:function(){if(!this.reorderingLists){return;}
this._reorderFlids();DOM.remove($('reorder_fl_alert'));CSS.removeClass(this.wrapperDiv,'reorder_fl');var allFlids=this._getRenderedFriendLists();for(var i=0;i<allFlids.length;i++){var flid=allFlids[i];if(flid==this.otherFriendsFlid||flid==this.botsFlid){CSS.removeClass(this._getFriendListId(flid),'suppress');}else{this._removeFlSortable(flid);}}
this.reorderingLists=false;this.unfreezeTabSize.bind(this).defer(50);this.flSortableGroup.destroy();this.flSortableGroup=null;},_addFlSortable:function(flid){if(this.flSortableGroup!=null){this.flSortableGroup.addSortable(flid,$(this._getFriendListId(flid)));animation($(this._getFriendListContainerId(flid))).to('height','0px').to('opacity',0).from(1).blind().hide().ease(animation.ease.end).duration(300).go();}},_removeFlSortable:function(flid){if(this.flSortableGroup!=null){this.flSortableGroup.removeSortable(flid);var container;if(container=ge(this._getFriendListContainerId(flid))){animation(container).to('height','auto').from('0px').to('opacity',1).from(0).blind().show().ease(animation.ease.end).duration(300).go();}}},_reorderFlids:function(){var data={'reorder':1,'flids':this.flSortableGroup.getOrder()};this._saveBuddyListSetting(data);},_getDragKey:function(id,flid){return id+'_'+flid;},_initDragging:function(){if(!this.flLive||!this.flMode){return;}
var groupedLists=this._groupAvailableListByFl();this.sortables={};var flids=this._getRenderedFriendLists();for(var i=0;i<flids.length;i++){var flid=flids[i];var ids=groupedLists[flid];this._initFlidSortable(flid,ids);}},_initFlidSortable:function(flid,ids){if(!flid||!this.flLive||!this.flMode){return;}
if(this.flData[flid].s){return;}
var firstFlid=head(this.sortables);this.sortables[flid]=new SortableGroup();if(firstFlid){firstFlid.link(this.sortables[flid]);}
var emptyMessage=$N('li',{id:this._getEmptyListDropZoneId(flid),className:'list_drop_zone'},$N('span',{className:'list_drop_zone_inner'},_tx("Ziehe Freunde mithilfe der Maus hierher, um sie hier hinzuzuf\u00fcgen")));var root=$(this._getFriendListContainerId(flid));this.sortables[flid].addEmptyMessage(emptyMessage,root).setBoundingBox(this._getBoundingBox()).setDragOverCallback(this._dragOverHandler.bind(this)).setDropCallback(this._dropHandler.bind(this));for(var j=0;j<ids.length;j++){this._addSortable(ids[j],flid);}},_getBoundingBox:function(){return Rect.newFromVectors(new Vector2(0,0),Vector2.getElementDimensions(this.contentDiv));},_destroyFlidSortable:function(flid){if(!flid||!this.flLive||!this.flMode){return;}
if(this.sortables&&this.sortables[flid]){this.sortables[flid].destroy();delete this.sortables[flid];}},_addSortable:function(id,flid){if(!flid||!this.flLive||!this.flMode||!this.flData[flid]){return;}
if(this.flData[flid].s){return;}
if(!this.sortables[flid]){return;}
var key=this._getDragKey(id,flid);if(this.sortables[flid].keyExists(key)){return;}
this.sortables[flid].addSortable(key,ge(this._getBuddyListItemId(id,flid)));},_removeSortable:function(id,flid,otherFlid){if(!flid||!this.flLive||!this.flMode){return;}
if(this.sortables[flid]){this.sortables[flid].removeSortable(this._getDragKey(id,otherFlid||flid));}},_dragOverHandler:function(draggable,droppable){if(CSS.hasClass(droppable,'list_drop_zone')){var flid=this._extractFlid(droppable.id);var parent=$(this._getFriendListId(flid));CSS.addClass(parent,'drag_over');}},_dropHandler:function(key){var temp=key.split('_');if(temp.length!=2){return;}
var id=temp[0];var oldFlid=temp[1];var draggedItem=$(this._getBuddyListItemId(id,oldFlid));if(!draggedItem){return;}
var newFlid=this._extractFlid(draggedItem.parentNode.id);if(newFlid==oldFlid){this._updateUIAfterDragging(id,oldFlid,oldFlid,draggedItem);}else{if(this.flData[oldFlid].s||this.flData[newFlid].s){this._updateUIAfterDragging(id,oldFlid,oldFlid,draggedItem);return;}
var currentFlids=this.availableList[id].fl;var movingList=false;var removingList=false;var saveData=false;if(newFlid==this.otherFriendsFlid){removingList=true;if(currentFlids.length==1){this.availableList[id].fl=[this.otherFriendsFlid];}else{this.availableList[id].fl.remove(oldFlid);saveData=true;DOM.remove(draggedItem);Vector2.scrollIntoView(this.getBuddyItem(id));}}else if(currentFlids.length==1){this.availableList[id].fl=[newFlid];movingList=oldFlid!=this.otherFriendsFlid;}else{movingList=true;this.availableList[id].fl.push(newFlid);this.availableList[id].fl.remove(oldFlid);}
if(saveData||this._updateUIAfterDragging(id,oldFlid,newFlid,draggedItem)){var data;if(removingList){data={'remove_fl':true,'old_flid':oldFlid,'drag_uid':id};}else if(movingList){data={'move_fl':true,'new_flid':newFlid,'old_flid':oldFlid,'drag_uid':id};}else{data={'add_fl':1,'new_flid':newFlid,'drag_uid':id};}
this._saveBuddyListSetting(data);}}
this._resetFlidClasses();},_updateUIAfterDragging:function(id,oldFlid,newFlid,draggedItem){var groupedLists=this._groupAvailableListByFl(true);var sortedList=groupedLists[newFlid];var index=sortedList.indexOf(id);var prevElem;if(index==-1){return false;}else if(index==0){prevElem=$(this._getAvailableMarkerId(newFlid));}else{prevElem=$(this._getBuddyListItemId(sortedList[index-1],newFlid));}
(function(){var shouldAnimate,showHighlight=false;if(sortedList.length!=1){shouldAnimate=showHight=true;}
var newItem=this._expandItem(id,newFlid,prevElem,this.availableList[id].i,shouldAnimate,false,showHighlight);if(oldFlid!=newFlid){DOM.remove(draggedItem);this._removeSortable(id,newFlid,oldFlid);}
Vector2.scrollIntoView(newItem);}).bind(this).defer(500);return true;},_getGlobalFlids:function(filterExternalFlids){var flids=this.flMode&&this.flData?keys(this.flData):[null];return filterExternalFlids?flids:flids.concat(this.externalFlids);},_getUserFlids:function(id,buddyInfo,filterExternalFlids){buddyInfo=buddyInfo||this.availableList[id];var flids=buddyInfo.fl?buddyInfo.fl:[null];if(!filterExternalFlids){if(!buddyInfo.allFlids){buddyInfo.allFlids=this._addExternalFlids(id,flids);}
flids=buddyInfo.allFlids;}
return flids;},_addExternalFlids:function(id,flids){flids=flids.concat();for(var i=0;i<this.externalFlids.length;i++){var flid=this.externalFlids[i];var opts=this._getFlOpts(flid);if(!opts.excludeIds[id]){flids.push(flid);}}
return flids;},_getFlOpts:function(flid){return this.flOpts[flid]||ChatBuddyList.DEFAULT_OPTS;},_getAvailableMarkerId:function(flid){return this._encodeFlid('buddy_list_avail_marker',flid);},_getIdleMarkerId:function(flid){return this._encodeFlid('buddy_list_idle_marker',flid);},_getEmptyListDropZoneId:function(flid){return this._encodeFlid('buddy_list_drop_zone',flid);},_getBuddyListItemId:function(id,flid){return this._encodeFlid('buddy_list_item_'+id,flid);},_getBuddyListItemNameId:function(id,flid){return this._encodeFlid('buddy_list_item_name_'+id,flid);},_getBuddyListWasItemId:function(id,flid){return this._encodeFlid('buddy_list_was_item_'+id,flid);},_getEmptySearchId:function(flid){return this._encodeFlid('buddy_list_empty_search',flid);},_getBuddyListEmptyItemId:function(){return'buddy_list_empty_item';},_encodeFlid:function(elemId,flid){return flid?(flid+'_'+elemId):elemId;},_getFriendListId:function(flid){return this._encodeFlid('friend_list_item',flid);},_extractFlid:function(id){return id.split('_').shift();},_getFriendListContainerId:function(flid){return this._encodeFlid('friend_list_container',flid);},debugPrintUpdateOverlay:function(){Util.log("buddyList.updateOverlay =");var uo=this.updateOverlay;for(var id in uo){Util.log(id+": st = "+uo[id].ol+", expires in = "+
(uo[id].exp-presence.getTime()));}}};

function ChatBuddyListDisplay(buddy_list_panel){this.openFlyout=null;this.openControl=null;if(presence.sitevars.FL_LIVE){presence.registerTabOpenHandler(this._init.bind(this,buddy_list_panel));if(presence.inPopoutWindow){this._init(buddy_list_panel,'buddy_list_tab');}}
this._initialized=false;}
ChatBuddyListDisplay.prototype={_init:function(buddy_list_panel,tab){if(tab=='buddy_list_tab'&&!this._initialized){this.buddy_list_panel=$(buddy_list_panel,true);var lists_callback=this._clickControlPanel.bind(this,'buddy_list_panel_lists_control','buddy_list_panel_lists_flyout',this._getListsFlyoutContent.bind(this));Event.listen(DOM.find(this.buddy_list_panel,'#buddy_list_panel_lists_control a'),'click',lists_callback);var settings_callback=this._clickControlPanel.bind(this,'buddy_list_panel_settings_control','buddy_list_panel_settings_flyout',this._getChatSettingsNodes.bind(this));Event.listen(DOM.find(this.buddy_list_panel,'#buddy_list_panel_settings_control a'),'click',settings_callback);this._initialized=true;}},_clickVisibilityToggle:function(){statusControl.toggleVisibility();this.closeOpenFlyout();},_clickReorderLists:function(){buddyList.enterReorderingFlMode();this.closeOpenFlyout();},_clickControlPanel:function(controlID,flyoutID,markupFunc){if(this.openFlyout){if(this.openFlyout==flyoutID){this.closeOpenFlyout();}else{this.closeOpenFlyout();this._openFlyout(controlID,flyoutID,markupFunc());}}else{this._openFlyout(controlID,flyoutID,markupFunc());}
return false;},_openFlyout:function(controlID,flyoutID,content){DOM.setContent($(flyoutID),content);CSS.removeClass(flyoutID,'hidden_elem');CSS.addClass(controlID,'flyout_open');if(!presence.poppedOut){var flyoutHeight=Vector2.getElementDimensions($(flyoutID)).y;var contentWrapperHeight=Vector2.getElementDimensions(buddyList.getContentWrapper()).y;if(flyoutHeight>contentWrapperHeight){CSS.addClass(flyoutID,'flyout_reversed');}}
this.openFlyout=flyoutID;this.openControl=controlID;},isFlyoutOpen:function(){return this.openFlyout;},closeOpenFlyout:function(){if(!this.openFlyout){return;}
CSS.addClass(this.openFlyout,'hidden_elem');CSS.removeClass(this.openFlyout,'flyout_reversed');CSS.removeClass(this.openControl,'flyout_open');this.openFlyout=null;this.openControl=null;},_getListsFlyoutContent:function(){var new_list_input=$N('input',{className:'inputtext',type:'text'});new_list_input.listen('keypress',buddyList.keyPressNewListInput.bind(buddyList));new TextInputControl(new_list_input).setPlaceholderText(_tx("Gib den Namen einer Liste ein"));var new_list=$N('div',{className:'new_list'},[$N('span',{},_tx("Neue Liste erstellen:")),new_list_input]);var instructions=$N('div',{className:'text'},_tx("Diese Listen im Chat anzeigen:"));var flData=buddyList.getFriendLists();var checklist=new UISelectList();checklist.setCallback(buddyList.handleFlInChat.bind(buddyList));for(var flid in flData){checklist.addItem(flData[flid].n,!flData[flid].h,flid);}
return[instructions,checklist.getElement(),new_list];},_renderListSettingToggle:function(flid,checked,fl_name){return this._renderToggle('list_online_'+flid,checked,fl_name,'list_online_checkbox_'+flid,sprintf('buddyList.handleFlInChat(%d, this);',flid));},_renderChatSettingToggle:function(name,value,label){return this._renderToggle('chat_setting_'+name,value,label,'chat_setting_checkbox_'+name,sprintf('statusControl.sendSettingChange("%s", this.checked);',name));},_renderToggle:function(div_id,checked,label,checkbox_id,onclick){var checkbox=$N('input',{type:'checkbox',id:checkbox_id,name:this._inputName});checkbox.setAttribute('onclick',onclick);checkbox.checked=checked;checkbox.defaultChecked=checked;var labelElem=$N('label',{},label);labelElem.setAttribute('for',checkbox_id);return $N('div',{className:'chat_setting clearfix',id:div_id},[$N('div',{className:'input_box'},[$N('span',{className:'show_loading'},$N('img',{src:'/images/loaders/indicator_blue_small.gif'})),$N('span',{className:'hide_loading'},checkbox)]),labelElem]);},_getChatSettingsNodes:function(){var nodes=[];if(this.buddy_list_panel){var offline_button=$N('a',{className:'go_offline_control'},[$N('div',{className:'menu_icon'}),$N('span',{},_tx("Offline gehen"))]);offline_button.listen('click',this._clickVisibilityToggle.bind(this));var options_actions=$N('div',{className:'options_actions'},offline_button);if(buddyList._getFriendListsInChat().length>1){var reorder_button=$N('a',{className:'list_reorder_control'},[$N('div',{className:'menu_icon'}),$N('span',{},_tx("Listen neu anordnen"))]);reorder_button.listen('click',this._clickReorderLists.bind(this));options_actions.appendChild(reorder_button);}
var popout_button=$N('a',{className:'list_popout_control'},[$N('div',{className:'menu_icon'}),$N('span',{},(presence.poppedOut?_tx("Chat im Hauptfenster anzeigen"):_tx("Chat im eigenen Fenster anzeigen")))]);popout_button.listen('click',presence.popout.bind(presence));options_actions.appendChild(popout_button);nodes.push(options_actions);nodes.push($N('hr',{className:'menu_divider'}));}
var list=[{name:'minifeed',label:_tx("{Feed} im {Chat} anzeigen",{'Feed':_tx("Meldungen"),'Chat':_tx("Chat")})},{name:'sound',label:_tx("Ton f\u00fcr neue Nachrichten abspielen")},{name:'sticky_buddylist',label:_tx("\u201eFreunde Online\u201d-Fenster offen lassen")},{name:'compact_buddylist',label:_tx("Nur die Namen der Freunde Online anzeigen")}];for(var i=0;i<list.length;i++){nodes.push(this._renderChatSettingToggle(list[i].name,statusControl.getSetting(list[i].name),list[i].label));}
return nodes;},toggleOldChatSettings:function(){var chat_settings=$('chat_settings');if(CSS.hasClass(chat_settings,'hidden')){DOM.setContent(chat_settings,this._getChatSettingsNodes());CSS.removeClass(chat_settings,'hidden');}else{CSS.addClass(chat_settings,'hidden');}}};

function ChatStatusControl(visibility,settingsObj){this.user=presence.user;this.visibility=visibility;this.poppedOut=presence.poppedOut;this.settingsObject=settingsObj;this._init();}
ChatStatusControl.prototype={_init:function(){this.visibilityHandlers=[];this.visibilityAsync=null;this.statusControlTab=ge('chat_status_control_tab');this.availabilityToggle=ge('chat_availability_toggle');this.availabilityToggleImage=ge('chat_availability_toggle_image');this.showEmoticons=true;presence.registerStateStorer(this._storeState.bind(this));presence.registerStateLoader(this._loadState.bind(this));},registerVisibilityHandler:function(fn){this.visibilityHandlers.push(fn);},_storeState:function(presenceState){presenceState.vis=this.visibility;presenceState.smf=this.getSetting('minifeed');presenceState.bls=this.getSetting('sticky_buddylist');presenceState.blc=this.getSetting('compact_buddylist');presenceState.snd=this.getSetting('sound');return presenceState;},_loadState:function(presenceState){if(presenceState.vis!=this.visibility){this.setVisibility(presenceState.vis);}
this.setSetting('minifeed',presenceState.smf);this.setSetting('sticky_buddylist',presenceState.bls);this.setSetting('compact_buddylist',presenceState.blc);this.setSetting('sound',presenceState.snd);},_updateAvailabilityUI:function(availability){if(availability==2){availability=1;}
var classes=['unavailable','available','idle'];for(var i=0;i<=classes.length;i++){if(i==availability){if(this.availabilityToggle){CSS.addClass(this.availabilityToggle,classes[i]);}
if(this.statusControlTab){CSS.addClass(this.statusControlTab,classes[i]);}}else{if(this.availabilityToggle){CSS.removeClass(this.availabilityToggle,classes[i]);}
if(this.statusControlTab){CSS.removeClass(this.statusControlTab,classes[i]);}}}},_setIdle:function(){this._updateAvailabilityUI(2);},setVisibility:function(visibility){if(visibility==this.visibility){return;}
this.visibility=visibility;if(visibility){this._updateAvailabilityUI(1);channelManager.isActionRequest=true;channelManager.rebuild(ChannelRebuildReasons.UIRestart);}else{this._updateAvailabilityUI(0);if(!chatDisplay.gatedFeatures['invisible_channel']){channelManager.setReady(false);}}
for(var i=0;i<this.visibilityHandlers.length;i++){this.visibilityHandlers[i]();}},_onVisibilityResponse:function(newVisibility,response){presence.pauseSync();this.setVisibility(newVisibility);if(this.availabilityToggleImage){CSS.removeClass(this.availabilityToggleImage,'availability_loading');}
if(!presence.inPopoutWindow&&!newVisibility){chatDisplay.unfocus();}
presence.resumeSync();if(presence.poppedOut&&presence.sitevars.FL_LIVE){presence.popout();}},_onVisibilityError:function(response){var chat=_tx("Chat");presence.showAsyncError(response,_tx("{Chat}-Verf\u00fcgbarkeit konnte nicht eingestellt werden",{'Chat':chat}));if(this.availabilityToggleImage){CSS.removeClass(this.availabilityToggleImage,'availability_loading');}},toggleVisibility:function(){this.sendVisibility(!this.visibility);},sendVisibility:function(visibility){if(this.visibility==visibility){return;}
if(this.availabilityToggleImage){CSS.addClass(this.availabilityToggleImage,'availability_loading');}
this.visibilityAsync=new AsyncRequest().setHandler(this._onVisibilityResponse.bind(this,visibility)).setErrorHandler(this._onVisibilityError.bind(this)).setTransportErrorHandler(this._onVisibilityError.bind(this)).setData({'visibility':visibility}).setURI(chatDisplay.settingsURL).send();},getSetting:function(name){return this.settingsObject[name];},setSetting:function(name,value){if(this.getSetting(name)==value){return;}
var setting=ge('chat_setting_checkbox_'+name);if(setting){setting.checked=value;}
if(name=='minifeed'){chatDisplay.reloadTabs();}
if(name=='compact_buddylist'){buddyList.setCompactDisplay(value);}
this.settingsObject[name]=value;},_onSettingChangeResponse:function(name,value,response){this.setSetting(name,value);CSS.removeClass($('chat_setting_'+name),'chat_setting_loading');presence.doSync();},_onSettingChangeError:function(name,response){presence.showAsyncError(response,_tx("Diese Einstellung konnte nicht ge\u00e4ndert werden"));CSS.removeClass($('chat_setting_'+name),'chat_setting_loading');},sendSettingChange:function(name,value){CSS.addClass($('chat_setting_'+name),'chat_setting_loading');var data={};data[name]=value;new AsyncRequest().setHandler(this._onSettingChangeResponse.bind(this,name,value)).setErrorHandler(this._onSettingChangeError.bind(this,name)).setTransportErrorHandler(this._onSettingChangeError.bind(this,name)).setData(data).setURI(chatDisplay.settingsURL).send();}};

function ChatTabSlider(){this.handleWidth=141;this.animationTime=210;this._init();}
ChatTabSlider.prototype={_init:function(){this.org_s=0;this.numToShow=0;this.numShift=1;this.shiftByNumTabs=false;this.timer=null;this.skipAnimation=false;this.chatWidth=null;this.tabPos={};this.chat=ge('chat');this.chatTabBar=ge('chat_tab_bar');this.nextTab=ge('chat_next_tab');this.prevTab=ge('chat_previous_tab');this.nextCounter=ge('next_count');this.prevCounter=ge('prev_count');this.numNext=0;this.numPrev=0;this.prevTabs={};this.nextTabs={};this.numMissedNextCounter=ge('next_num_missed');this.numMissedPrevCounter=ge('prev_num_missed');presence.registerStateLoader(this._load.bind(this));presence.registerStateStorer(this._store.bind(this));presence.registerResizeHandler(this._resize.bind(this));},load:function(){this._load(presence.state);this._resize(true);},_load:function(presenceState){var s=0;if(presenceState){s=(presenceState.s?presenceState.s:s);}
this._setPos(s);},_store:function(presenceState){presenceState.s=this._s;return presenceState;},_calculate:function(onload){this._setMaxWidth();if(onload)this.maxWidth-=16;if(presence.poppedOut){this.numToShow=chatDisplay.numTabs;}else{this.numToShow=parseInt(this.maxWidth/this.handleWidth);this.numToShow=this.numToShow>0?this.numToShow:1;}
if(this.shiftByNumTabs)this.numShift=this.numToShow;if(this._s!=null)this._setPos(this._s);},_setMaxWidth:function(){var w=DOMScroll.getScrollRoot().offsetWidth;if(ChatTabSlider.presenceWidthTest){var w=$('presence_ui').offsetWidth;}
var divs=['buddy_list_tab','status_control_tab','presence_notifications_tab','presence_applications_tab','icon_garden','bookmarkable_app'];for(var i=0;i<divs.length;i++){w-=(ge(divs[i])&&$(divs[i]).clientWidth!=undefined)?ge(divs[i]).clientWidth:0;}
this.maxWidth=(presence.poppedOut?w-254:w-138);},_setPos:function(val){if(val<0){val=0;}
this._s=val;this._e=this._s+this.numToShow;},_doSync:function(){var changed=(this.org_s!=this._s);this.org_s=0;if(changed){presence.doSync();}},_build:function(){if(presence.poppedOut){return;}
var all=(this.numToShow>=chatDisplay.numTabs)?true:false;this.setVisibleTabs(all);if(all){this.resetCounters();}else{this.updateCounters();}
this.updateMissedCount();},_resize:function(onload){this.org_s=this._s;this._calculate(onload);this._build();this._doSync();if(chatDisplay.lastFocused!=null){this.gotoTab(chatDisplay.lastFocused);}},addTab:function(id){this._build();},gotoTab:function(id){if(this.tabPos[id]!=0&&!this.tabPos[id])return;var n=parseInt(this.tabPos[id]);if(!this._inRange(n)){var p=(n-this.numToShow)+1;this._setPos(p);this._build();}},close:function(id){if(this.tabPos[id]!=0&&!this.tabPos[id])return;delete this.tabPos[id];this._setPos(((this.numPrev>0||this.numNext>0)&&this._s>0)?this._s-1:0);this._calculate();this._build();},setVisibleTabs:function(all){var c=0;for(var id in chatDisplay.tabs){this.tabPos[id]=c;if(this._inRange(c,id)||all==true){chatDisplay.tabs[id].show();}else{chatDisplay.tabs[id].hide();}
c++;}},_inRange:function(n,id){var s,e=false;if(n>=this._s){s=true;delete this.prevTabs[id];}else{this.prevTabs[id]=id;}
if(n<this._e){e=true;delete this.nextTabs[id];}else{this.nextTabs[id]=id;}
return(s&&e);},updateMissedCount:function(){var prev=0;var next=0;for(var id in this.prevTabs){prev+=chatDisplay.tabs[id]?chatDisplay.tabs[id].numMissed:0;}
this.numMissedPrevCounter.innerHTML=prev;this.numMissedPrevCounter.style.display=prev>0?'block':'none';for(var id in this.nextTabs){next+=chatDisplay.tabs[id]?chatDisplay.tabs[id].numMissed:0;}
this.numMissedNextCounter.innerHTML=next;this.numMissedNextCounter.style.display=next>0?'block':'none';},updateCounters:function(){this.numNext=chatDisplay.numTabs-this._e;this.numPrev=this._s;if(this.numNext<=0){this.numNext=0;CSS.addClass(this.nextTab,'disabled');}else{CSS.removeClass(this.nextTab,'disabled');}
if(this.numPrev<=0){this.numPrev=0;CSS.addClass(this.prevTab,'disabled');}else{CSS.removeClass(this.prevTab,'disabled');}
if(this.numPrev>0||this.numNext>0){show('chat_next_tab');show('chat_previous_tab');}else{hide('chat_next_tab');hide('chat_previous_tab');}
this.nextCounter.innerHTML=this.numNext;this.prevCounter.innerHTML=this.numPrev;},resetCounters:function(){this._setPos(0);this.updateCounters();},shift:function(num){this.org_s=this._s;chatDisplay.unfocusNoSync();this._shift.bind(this,num).defer();},_shift:function(num){this._setPos(this._s<0?0:this._s+num);this._slide(num);if(this.timer||this.skipAnimation){this._slideReset();this.skipAnimation=true;var t=setTimeout(function(){this.skipAnimation=false;}.bind(this),500);}else{this.timer=setTimeout(function(){this._slideReset();}.bind(this),this.animationTime);}},_slide:function(num){this._slideSetup(false);this.setVisibleTabs(true);this.slideInc=(num*(this.handleWidth));this.leftPos=-(num)*(this.numNext*(this.slideInc));this.chatTabBar.style.left=this.leftPos+'px';animation(this.chatTabBar).by('left',this.slideInc).duration(this.animationTime-10).go();},_slideSetup:function(reset){this.chat.style.position=reset?'':'relative';this.chat.style.overflow=reset?'visible':'hidden';if(!this.chatWidth){this.chatWidth=this.chatTabBar.clientWidth;}
if(reset){this.chatWidth=null;}
this.chat.style.width=reset?'':this.chatWidth+'px';this.chatTabBar.style.width=reset?'':chatDisplay.numTabs*this.handleWidth+'px';this.chatTabBar.style.position=reset?'':'absolute';},_slideReset:function(){clearTimeout(this.timer);this.timer=null;this._slideSetup(true);this._build();if(chatDisplay.lastFocused){if(this._inRange(this.tabPos[chatDisplay.lastFocused])){chatDisplay.refocus();}else{chatDisplay.lastFocused=null;}}
this._doSync();},next:function(){if(this.numNext<=0){return;}
this.shift(this.numShift);},prev:function(){if(this.numPrev<=0){return;}
this.shift(-this.numShift);}};

var PrivacyBaseValue={'FACEBOOK_EMPLOYEES':112,'CUSTOM':111,'OPEN':100,'EVERYONE':80,'NETWORKS_FRIENDS_OF_FRIENDS':60,'NETWORKS_FRIENDS':55,'FRIENDS_OF_FRIENDS':50,'ALL_FRIENDS':40,'SELF':10,'NOBODY':0};var PrivacyFriendsValue={'EVERYONE':80,'NETWORKS_FRIENDS':55,'FRIENDS_OF_FRIENDS':50,'ALL_FRIENDS':40,'SOME_FRIENDS':30,'NO_FRIENDS':0};var PrivacySpecialPreset={'ONLY_CORP_NETWORK':200,'COLLEGE_NETWORK_FRIENDS_OF_FRIENDS':201,'COLLEGE_NETWORK_FRIENDS':202};var PrivacyNetworkTypes={'TYPE_COLLEGE':1,'TYPE_HS':2,'TYPE_CORP':3,'TYPE_GEO':4,'TYPE_TEST':50};var PrivacyNetworksAll=1;copy_properties(PrivacyBaseValue,PrivacySpecialPreset);function PrivacyModel(){this.value=PrivacyBaseValue.ALL_FRIENDS;this.friends=PrivacyFriendsValue.ALL_FRIENDS;this.networks=[];this.lists=[];this.lists_x=[];this.list_anon=0;this.ids_anon=[];this.list_x_anon=0;this.ids_x_anon=[];this.tdata={};return this;}
copy_properties(PrivacyModel.prototype,{init:function(value,friends,networks,lists,lists_x,list_anon,ids_anon,list_x_anon,ids_x_anon,tdata){this.value=value;this.friends=friends;this.networks=networks.clone();this.lists=lists.clone();this.lists_x=lists_x.clone();this.list_anon=list_anon;this.ids_anon=ids_anon.clone();this.list_x_anon=list_x_anon;this.ids_x_anon=ids_x_anon.clone();tdata=tdata||{};copy_properties(this.tdata,tdata);},clone:function(){var clone=new PrivacyModel();clone.init(this.value,this.friends,this.networks,this.lists,this.lists_x,this.list_anon,this.ids_anon,this.list_x_anon,this.ids_x_anon,this.tdata);return clone;},getData:function(){var fields=['value','friends','networks','lists','lists_x','list_anon','ids_anon','list_x_anon','ids_x_anon'];var res={};for(var i=0;i<fields.length;++i){var field=fields[i];res[field]=this[field];}
return res;}});

var PrivacyWidgetInstance={}
function PrivacyWidget(root,fbid,range,row,networks,dialog_title,properties){copy_properties(this,{root:$(root),fbid:fbid,range:range,tdata:row.tdata,networks:networks,mode:'basic',dialog_title:dialog_title});this.properties={};copy_properties(this.properties,properties);this.model=new PrivacyModel();this.model.init(row.value,row.friends,row.networks,row.lists,row.lists_x,row.list_anon,row.ids_anon,row.list_x_anon,row.ids_x_anon);this.form=this.root.childNodes[0];this.basic=this.root.childNodes[2];this.advanced=this.root.childNodes[3];this.prompt=this.root.childNodes[4];this.out_of_range={};this.summary_select=this.$('summary_select');this.summary_select.onchange=bind(this,'summary_onselect');this.advanced_select=this.$('advanced_select');this.advanced_select.onchange=bind(this,'adv_onselect');var links=this.root.getElementsByTagName('a');for(var i=0;i<links.length;++i){if(links[i].className){links[i].onclick=bind(this,links[i].className);}}
if(ge('privacy_page_custom_links_'+this.fbid)){var custom_links=this.$('privacy_page_custom_links').getElementsByTagName('a');for(var i=0;i<custom_links.length;++i){if(custom_links[i].className){custom_links[i].onclick=bind(this,custom_links[i].className);}}}
this.$('save').onclick=bind(this,'adv_onclick_save');this.$('cancel').onclick=bind(this,'adv_onclick_cancel');this.$('nothanks').onclick=bind(this,'adv_onclick_nothanks');if(ge('advanced_everyone_'+this.fbid)){this.$('advanced_everyone').getElementsByTagName('input')[0].onclick=bind(this,'adv_onclick_everyone');}else{this.out_of_range['everyone']=true;}
var friend_radios=this.$('advanced_friends_radios').getElementsByTagName('input');for(var i=0;i<friend_radios.length;++i){if(friend_radios[i].getAttribute('type')=="radio"){friend_radios[i].onclick=bind(this,'adv_onclick_friends_radio',friend_radios[i].value);}}
if(ge('advanced_networks_'+this.fbid)){var networks_checks=this.$('advanced_networks').getElementsByTagName('input');for(var i=0;i<networks_checks.length;++i){networks_checks[i].onclick=bind(this,'adv_onclick_networks_checkbox',networks_checks[i].value);}
this.$('advanced_networks_select').onchange=bind(this,'adv_onclick_networks_select');}else{this.out_of_range['networks']=true;}
if(!ge('some_friends_'+this.fbid)){this.out_of_range['some_friends']=true;}
if(!ge('advanced_except_'+this.fbid)){this.out_of_range['except']=true;}
this.undo=[];for(var i=0;i<this.model.networks.length;i++){if(this.model.networks[i]==1){this.model.networks=PrivacyNetworksAll;break;}}
this._model_check_for_valid_value();this.public_search=this.properties.toggle_public_search?ge('_priv_public_search_listing'):null;this.search_net=this.properties.toggle_public_search?ge('_priv_network_type_controls'):null;this.model_write_to_summary();PrivacyWidgetInstance[this.fbid]=this;return this;};copy_properties(PrivacyWidget.prototype,{$:function(elem){return $(elem+'_'+this.fbid);},model_read_from_adv:function(){this.model.value=this.get_model_value(this.adv_reverse_preset_value(false),this.adv_read_custom_ids('except','lists'),this.adv_read_custom_ids('except','names'));if(this.model.value==PrivacyBaseValue.EVERYONE){this.model.friends=PrivacyFriendsValue.EVERYONE;}else{this.model.friends=this.adv_read_friends();}
this.model.networks=this.adv_read_networks();if(!this._model_preset_exists(this.model.value)){var values=this.interpret_value(this.model.value);this.model.value=PrivacyBaseValue.CUSTOM;this.model.friends=values.friends;this.model.networks=values.networks;}
this.model.lists=[];this.model.lists_x=[];this.model.ids_anon=[];this.model.ids_x_anon=[];this._model_read_adv_tokens('lists','some','lists');this._model_read_adv_tokens('ids_anon','some','names');this._model_read_adv_tokens('lists_x','except','lists');this._model_read_adv_tokens('ids_x_anon','except','names');},_model_preset_exists:function(preset){preset=parseInt(preset);var options=this.$('advanced_select').options;for(var i=0;i<options.length;i++){if(options[i].value==preset){return true;}}},_model_check_for_valid_value:function(){if(this.model.value!=PrivacyBaseValue.CUSTOM){if(!this._model_preset_exists(this.model.value)){var valid_values=[];var options=this.$('advanced_select').options;for(var i=0;i<options.length;i++){var special_preset=false;for(var k in PrivacySpecialPreset){if(options[i].value==PrivacySpecialPreset[k]){special_preset=true;}}
if(!special_preset){valid_values.push(options[i].value);}}
valid_values.sort();var values=this.interpret_value(this.model.value);var value_ok=false;if(this.adv_friends_value_exists(values.friends)){value_ok=true;}
if(values.networks===PrivacyNetworksAll||values.networks.length>0){if(valid_values[valid_values.length-1]>PrivacyBaseValue.ALL_FRIENDS){value_ok=true;}else{value_ok=false;}}
if(values.everyone==true){if(this.out_of_range['everyone']==true){value_ok=false;}}
if(value_ok){this.model.value=PrivacyBaseValue.CUSTOM;this.model.friends=values.friends;this.model.networks=values.networks;}else{if(this.model.value>valid_values[valid_values.length-1]){this.model.value=valid_values[valid_values.length-1];}else{this.model.value=valid_values[0];}}}}else{if(this.model.friends==PrivacyFriendsValue.NETWORKS_FRIENDS){this.model.friends=PrivacyFriendsValue.ALL_FRIENDS;this.model.networks=PrivacyNetworksAll;}
if(this.model.friends==PrivacyFriendsValue.NO_FRIENDS&&this.model.networks!==PrivacyNetworksAll&&this.model.networks.length==0){if(this._model_preset_exists(PrivacyBaseValue.NOBODY)){this.model.value=PrivacyBaseValue.NOBODY;}else{this.model.value=PrivacyBaseValue.SELF;this._model_check_for_valid_value();}}
if(this.model.friends==PrivacyFriendsValue.EVERYONE&&this.model.value!=PrivacyBaseValue.EVERYONE){if(!this.adv_friends_value_exists(PrivacyFriendsValue.EVERYONE)){Util.log('Advanced Everyone does not exist');var friends=[];var friend_radios=this.$('advanced_friends_radios').getElementsByTagName('input');for(var i=0;i<friend_radios.length;i++){if(friend_radios[i].type=='radio'){friends.push(friend_radios[i].value);}}
friends.sort();this.model.friends=friends[friends.length-1];this.model.networks=PrivacyNetworksAll;}}}},_model_read_adv_tokens:function(field,type,entity){var ids=this.adv_read_custom_ids(type,entity);for(var i=0;i<ids.length;++i){this.model[field].push(ids[i]);}},model_write_to_adv:function(){this.edit_value(this.model.value,true);if(this.model.value==PrivacyBaseValue.CUSTOM){this.edit_friends(this.model.friends);if(this.model.networks!==PrivacyNetworksAll&&this.model.networks.length==0){this.model.networks=[];}
this.edit_networks(this.model.networks);var select_display_value=this.select_display_value(this.model.value,this.model.friends,this.model.networks,this.model.lists,this.model.ids_anon);this.edit_preset();}
if(!this.out_of_range['some_friends']){DOM.empty(this.$('some_friends_container').firstChild);}
if(!this.out_of_range['except']){DOM.empty(this.$('except_friends_container').firstChild);}
if(!this.out_of_range['some_friends']){this._model_write_adv_token('lists','flid','some');this._model_write_adv_token('ids_anon','i','some');}
if(!this.out_of_range['except']){this._model_write_adv_token('lists_x','flid','except');this._model_write_adv_token('ids_x_anon','i','except');}},_model_write_adv_token:function(source,field,target){var ids=this.model[source];for(var i=0;i<ids.length;++i){var p={};p[field]=ids[i];p.t=this.tdata[ids[i]];this.adv_add_token(p,target);}},model_write_to_form:function(){this.form_save_value('changed',1);this.form_save_value('value',this.model.value);this.form_save_value('friends',this.model.friends);this.form_save_value('list_anon',this.model.list_anon);this.form_save_value('list_x_anon',this.model.list_x_anon);this.form_save_array('networks',this.model.networks);this.form_save_array('lists',this.model.lists);this.form_save_array('ids_anon',this.model.ids_anon);this.form_save_array('lists_x',this.model.lists_x);this.form_save_array('ids_x_anon',this.model.ids_x_anon);if(this.public_search){this.toggle_public_search();}},toggle_public_search:function(){var enable=false;if(this.model.value==PrivacyBaseValue.EVERYONE||this.model.value==PrivacyBaseValue.OPEN||this.model.friends==PrivacyFriendsValue.EVERYONE){this.public_search.style.display='block';}else{this.public_search.style.display='none';enable=true;}
var inputs=this.search_net.getElementsByTagName('input');for(var i=0;i<inputs.length;++i){if(enable){inputs[i].disabled=false;}else{inputs[i].disabled=true;}}
if(enable){this.search_net.style.display='block';}else{this.search_net.style.display='none';}},model_write_to_view:function(){var displaySummary=this.summary_select.options[this.summary_select.options.selectedIndex].innerHTML;DOM.setText($('summary_text_view_'+this.fbid),displaySummary);this.model_write_to_summary('_view');},model_write_to_summary:function(id_suffix){var suffix=id_suffix||'';if(this.model.value!=PrivacyBaseValue.CUSTOM){var values=this.interpret_value(this.model.value);var select_display_value=this.select_display_value(this.model.value,values.friends,values.networks,[],[]);this.model.friends=values.friends;this.model.networks=values.networks;}else{var select_display_value=this.select_display_value(this.model.value,this.model.friends,this.model.networks,this.model.lists,this.model.ids_anon);}
set_form_select_value(this.summary_select,select_display_value);this.summary_toggle_advanced_link(select_display_value);this.summary_update_select_text(select_display_value);var x=false;if(!this.out_of_range['except']){if(this._model_write_summary_lists('lists_x','summary_lists_x'+suffix)){x=true;}
if(this._model_write_summary_lists('ids_x_anon','summary_names_x'+suffix)){x=true;}}
if(x){CSS.removeClass(this.$('summary_except'+suffix),'collapsed');}else{CSS.addClass(this.$('summary_except'+suffix),'collapsed');}
if(select_display_value==PrivacyBaseValue.CUSTOM){if(this.model.friends==PrivacyFriendsValue.EVERYONE){CSS.addClass(this.$('summary_custom'+suffix),'collapsed');CSS.addClass(this.$('summary_networks'+suffix),'collapsed');CSS.addClass(this.$('summary_friends'+suffix),'collapsed');CSS.addClass(this.$('summary_lists'+suffix),'collapsed');CSS.addClass(this.$('summary_names'+suffix),'collapsed');}else{CSS.removeClass(this.$('summary_custom'+suffix),'collapsed');network_names=[];if(this.model.networks.length>0){for(var i=0;i<this.model.networks.length;++i){network_names.push('<li><a href="/networks/?nk='+this.model.networks[i]+'">'+this.networks[this.model.networks[i]]['name']+'</a></li>');}
this.$('summary_networks'+suffix).innerHTML='<ul>'+network_names.join('')+'</ul>';CSS.removeClass(this.$('summary_networks'+suffix),'collapsed');}else if(this.model.networks===PrivacyNetworksAll){this.$('summary_networks'+suffix).innerHTML='<ul><li>'+_tx("Alle meine Netzwerke")+'</li></ul>';CSS.removeClass(this.$('summary_networks'+suffix),'collapsed');}else{CSS.addClass(this.$('summary_networks'+suffix),'collapsed');}
switch(parseInt(this.model.friends)){case PrivacyFriendsValue.ALL_FRIENDS:CSS.addClass(this.$('summary_friends_fof'+suffix),'collapsed');CSS.removeClass(this.$('summary_friends_all'+suffix),'collapsed');CSS.removeClass(this.$('summary_friends'+suffix),'collapsed');CSS.addClass(this.$('summary_friends_only_me'+suffix),'collapsed');break;case PrivacyFriendsValue.FRIENDS_OF_FRIENDS:CSS.addClass(this.$('summary_friends_all'+suffix),'collapsed');CSS.removeClass(this.$('summary_friends_fof'+suffix),'collapsed');CSS.removeClass(this.$('summary_friends'+suffix),'collapsed');CSS.addClass(this.$('summary_friends_only_me'+suffix),'collapsed');break;case PrivacyFriendsValue.NO_FRIENDS:CSS.addClass(this.$('summary_friends_all'+suffix),'collapsed');CSS.addClass(this.$('summary_friends_fof'+suffix),'collapsed');CSS.removeClass(this.$('summary_friends'+suffix),'collapsed');CSS.removeClass(this.$('summary_friends_only_me'+suffix),'collapsed');break;default:CSS.addClass(this.$('summary_friends'+suffix),'collapsed');break;}
if(this.model.friends==PrivacyFriendsValue.SOME_FRIENDS){this._model_write_summary_lists('lists','summary_lists'+suffix);this._model_write_summary_lists('ids_anon','summary_names'+suffix);}else{CSS.addClass(this.$('summary_lists'+suffix),'collapsed');CSS.addClass(this.$('summary_names'+suffix),'collapsed');}}
CSS.removeClass(this.$('summary'+suffix),'simple');CSS.removeClass(this.$('summary'+suffix),'except');if(x){CSS.addClass(this.$('summary'+suffix),'except_custom');}else{CSS.removeClass(this.$('summary'+suffix),'except_custom');}}else{CSS.addClass(this.$('summary_custom'+suffix),'collapsed');CSS.removeClass(this.$('summary'+suffix),'except_custom');CSS.addClass(this.$('summary'+suffix),'simple');if(x&&select_display_value!=PrivacyBaseValue.NOBODY&&select_display_value!=PrivacyBaseValue.SELF){CSS.addClass(this.$('summary'+suffix),'except');}else{CSS.removeClass(this.$('summary'+suffix),'except');}}},_model_write_summary_lists:function(source,target){var elems=this.model[source];var is_list=(source.indexOf('lists')!=-1);if(elems.length>0){if(is_list){var str='<ul>';}else{var str=[];}
if(!is_list){var min=Math.min(2,elems.length);}else{var min=elems.length;}
for(var i=0;i<min;++i){if(is_list){str+='<li>'+this.tdata[elems[i]]+'</li>';}else{str.push('<a href="/profile.php?id='+elems[i]+'">'+this.tdata[elems[i]]+'</a>');}}
if(!is_list){if(elems.length==3){if(is_list){str+='<li>'+this.tdata[elems[2]]+'</li>';}else{str.push('<a href="/profile.php?id='+elems[2]+'">'+this.tdata[elems[2]]+'</a>');}}else if(elems.length>3){str.push(_tx("{num} andere",{'num':String(elems.length-2)}));}
this.$(target).innerHTML=str.join(', ');}else{str+='</ul>';this.$(target).innerHTML=str;}
CSS.removeClass(this.$(target),'collapsed');return true;}else{CSS.addClass(this.$(target),'collapsed');return false;}},model_simplify:function(){},form_save_value:function(elem,value){this.$(elem).value=value;},form_save_array:function(dest,arr){var name=dest+'_'+this.fbid+'[]';var dest=this.$('inputs_'+dest);html='';if(arr instanceof Array){for(var i=0;i<arr.length;++i){html+='<input type="hidden" name="'+name+'" value="'+arr[i]+'" />';}}else{html+='<input type="hidden" name="'+name+'" value="'+arr+'" />';}
dest.innerHTML=html;},adv_onfs_some:function(p){if(p===false){return;}
this.clear();var fbid=this.obj.getAttribute('fbid');var instance=PrivacyWidgetInstance[fbid];instance.adv_add_token(p,'some');instance.dialog.reset_dialog();return false;},adv_onfs_except:function(p){if(p===false){return;}
this.clear();var fbid=this.obj.getAttribute('fbid');var instance=PrivacyWidgetInstance[fbid];instance.adv_add_token(p,'except');instance.dialog.reset_dialog();return false;},adv_add_token:function(p,type){var reverse_types={'some':'except','except':'some'};var id=null;if(p.flid){id=p.flid;}else if(p.i){id=p.i;}
var container_div=this.$(type+'_friends_container');var container=container_div.childNodes[0];var container_inputs=container.getElementsByTagName('input');for(var i=0;i<container_inputs.length;++i){if(container_inputs[i].value==id){return;}}
var container_elements=container.getElementsByTagName('li');if(p.i){var has_names=false;var names_container;var names_container_text;for(var i=0;i<container_elements.length;i++){if(CSS.hasClass(container_elements[i],'friends_names')){has_names=true;names_container=container_elements[i];names_container_text=names_container.childNodes[1];break;}}
if(!has_names){names_container=document.createElement('li');CSS.setClass(names_container,'friends_names clearfix');var icon_div=document.createElement('div');icon_div.appendChild(document.createTextNode(''));CSS.setClass(icon_div,'icon');var text_area=document.createElement('div');CSS.setClass(text_area,'text_area');names_container.appendChild(icon_div);names_container.appendChild(text_area);names_container_text=text_area;if(container.childNodes>0){container.insertBefore(names_container,container.childNodes[0]);}else{container.appendChild(names_container);}}
names_container_text.innerHTML+=this.adv_gen_token(id,p.t);}else{for(var i=0;i<container.childNodes.length;i++){var li=container.childNodes[i];var inputs=li.getElementsByTagName('input');for(var i2=0;i2<inputs.length;i2++){if(inputs[i2].type=='hidden'){if(inputs[i2].value==id){var has_fl=true;}
break;}}
if(has_fl){break;}}
if(!has_fl){var friend_list_li=document.createElement('li');CSS.setClass(friend_list_li,'friends_lists clearfix');var icon_div=document.createElement('div');CSS.setClass(icon_div,'icon');var text_area=document.createElement('div');CSS.setClass(text_area,'text_area');friend_list_li.appendChild(icon_div);friend_list_li.appendChild(text_area);text_area.innerHTML=this.adv_gen_token(id,p.t);container.appendChild(friend_list_li);}}
this.edit_preset();this.tdata[id]=p.t;CSS.removeClass(container_div,'empty');},adv_gen_token:function(id,name){var js='PrivacyWidget.prototype.adv_rem_token(this, '+this.fbid+');';var html='<a class="token"><span><span><span><span>'+
name+'<input type="hidden" name="ids[]" value="'+id+'" />'+'<span class="x" onmouseout="CSS.setClass(this, \'x\');" onmouseover="CSS.setClass(this, \'x_hover\');" onclick="event.cancelBubble=true;'+js+'return false;">&nbsp;</span>'+'</span></span></span></span></a>';return html;},adv_rem_token:function(span,fbid){var instance=PrivacyWidgetInstance[fbid];if(instance.mode=='prompt'){animation(instance.prompt).from('background','#ffeeee').to('background','#fff').duration(250).go();return false;}
instance.dialog.reset_dialog();var anchor=span.parentNode.parentNode.parentNode.parentNode.parentNode;var container=anchor.parentNode.parentNode;var container_parent=container.parentNode;if(CSS.hasClass(container,'friends_lists')){container.parentNode.removeChild(container);}else{container.childNodes[1].removeChild(anchor);if(container.childNodes[1].childNodes.length==0){container.parentNode.removeChild(container);}}
if(container_parent.childNodes.length==0){CSS.addClass(container_parent.parentNode,'empty');}},adv_onselect:function(){this.edit_value(get_form_select_value(this.advanced_select));},adv_onclick_edit_settings:function(){this.edit_value(PrivacyBaseValue.CUSTOM);},adv_onclick_friends_radio:function(value){this.edit_everyone(false);if(value==PrivacyFriendsValue.SOME_FRIENDS){if(!this.out_of_range['some_friends']){CSS.removeClass(this.$('some_friends'),'collapsed');this.$('fs_some').focus();}}else{if(!this.out_of_range['some_friends']){CSS.addClass(this.$('some_friends'),'collapsed');}}
this.edit_preset();},adv_onclick_networks_select:function(value){this.edit_networks(this.adv_read_networks(),(this.adv_read_networks_select()=='some'));this.edit_everyone(false);this.edit_preset();},adv_onclick_networks_checkbox:function(value){this.edit_preset();},adv_onclick_everyone:function(){var checked=this.$('advanced_everyone').getElementsByTagName('input')[0].checked;if(checked){this.edit_friends(PrivacyFriendsValue.EVERYONE);}else if(!this.toggle_everyone){this.edit_networks(PrivacyNetworksAll);}
this.edit_preset();this.toggle_everyone=true;},adv_onclick_cancel:function(){this.model_write_to_summary();if(!this.properties.prevent_dialog_fade_out){this.dialog.fade_out(null,null,function(){this.hide_advanced();}.bind(this));}else{this.dialog.hide();this.hide_advanced();}},adv_onclick_save:function(){var cold=this.model.ids_anon.length;var some_names=this.adv_read_custom_ids('some','names');var cnew=some_names.length;var prompt=false;if(cnew!=cold&&cnew>=3){prompt='some';}
if(!prompt){cold=this.model.ids_x_anon.length;some_names=this.adv_read_custom_ids('except','names');cnew=some_names.length;if(cnew!=cold&&cnew>=3){prompt='except';}}
this.model_read_from_adv();this.model_write_to_form();this.model_write_to_summary();if(prompt){this.adv_show_prompt(prompt);}else{if(!this.properties.prevent_dialog_fade_out){this.dialog.fade_out(null,null,function(){this.root.appendChild(this.advanced);}.bind(this));}else{this.dialog.hide();this.root.appendChild(this.advanced);}}
this.on_save();},adv_show_prompt:function(type){this.mode='prompt';this.$('savelist').onclick=bind(this,'adv_onclick_savelist',type);this.$('savelist').disabled=false;this.$('listname').value='';this.dialog.content.childNodes[0].childNodes[0].innerHTML=_tx("Freundesliste erstellen?");var some_ids=this.adv_read_custom_ids(type,'names');var token_html='';for(var i=0;i<some_ids.length;i++){token_html+=this.adv_gen_token(some_ids[i],this.tdata[some_ids[i]]);}
this.$('prompt_tokens').innerHTML=token_html;var cls='privacy_widget privacy_widget_pop';var id='privacy_pop_'+this.fbid;this.root.appendChild(this.advanced);$(id).appendChild(this.prompt);this.$('listname').focus();},adv_onclick_savelist:function(type){if(!this.$('listname').value){this.$('listname').focus();animation(this.$('listname')).from('background','#ffc0c0').to('background','#ffffff').duration(500).go();return;}
this.$('savelist').disabled=true;var data=serialize_form(this.prompt);new AsyncRequest().setURI('/privacy/ajax/lists.php').setData(data).setHandler(bind(this,'_adv_savelist',type)).setErrorHandler(bind(this,'_adv_savelist',type)).send();},_adv_savelist:function(type,r){if(r.getError()==kError_Privacy_FriendListNameAlreadyExists){this.dialog.is_stackable=true;ErrorDialog.showAsyncError(r);this.$('savelist').disabled=false;return;}
var payload=r.getPayload();if(payload&&(flid=payload.flid)){if(window.friendlist_source){friendlist_source.dirty();}
this.tdata[flid]=r.getPayload().name;if(type=='some'){this.model.ids_anon=[];this.model.lists.push(flid);}else{this.model.ids_x_anon=[];this.model.lists_x.push(flid);}
this.model_write_to_form();this.model_write_to_summary();}
if(!this.properties.prevent_dialog_fade_out){this.dialog.fade_out(null,null,function(){this.root.appendChild(this.prompt);}.bind(this));}else{this.dialog.hide();this.root.appendChild(this.prompt);}},adv_onclick_nothanks:function(){if(!this.properties.prevent_dialog_fade_out){this.dialog.fade_out(null,null,function(){this.root.appendChild(this.prompt);}.bind(this));}else{this.dialog.hide();this.root.appendChild(this.prompt);}},adv_toggle_except:function(){CSS.toggleClass(this.$('advanced_except'),'collapsed');return false;},adv_toggle_networks:function(){CSS.toggleClass(this.$('advanced_networks'),'collapsed');return false;},edit_preset:function(){set_form_select_value(this.$('advanced_select'),this.adv_reverse_preset_value());this.edit_friends(this.adv_read_friends());this.dialog.reset_dialog();},select_display_value:function(value,friends,networks,some_lists,some_names,check_if_exists){if(check_if_exists==null){var check_if_exists=true;}
var current_value=null;if(friends!=null){switch(friends){case PrivacyFriendsValue.EVERYONE:current_value=PrivacyBaseValue.EVERYONE;break;case PrivacyFriendsValue.NETWORKS_FRIENDS:current_value=PrivacyBaseValue.NETWORKS_FRIENDS;break;case PrivacyFriendsValue.SOME_FRIENDS:current_value=PrivacyBaseValue.CUSTOM;break;case PrivacyFriendsValue.ALL_FRIENDS:current_value=PrivacyBaseValue.ALL_FRIENDS;break;case PrivacyFriendsValue.FRIENDS_OF_FRIENDS:current_value=PrivacyBaseValue.FRIENDS_OF_FRIENDS;break;case PrivacyFriendsValue.NO_FRIENDS:current_value=PrivacyBaseValue.SELF;break;}}
if(current_value!=PrivacyBaseValue.EVERYONE){if(networks!==PrivacyNetworksAll&&networks.length!=0){if(networks.length==1&&(friends==PrivacyFriendsValue.NO_FRIENDS)&&this.networks[networks[0]]['type']==PrivacyNetworkTypes.TYPE_CORP&&this.networks[networks[0]]['primary']==true){current_value=PrivacySpecialPreset.ONLY_CORP_NETWORK;}else if(networks.length==1&&(friends==PrivacyFriendsValue.FRIENDS_OF_FRIENDS)&&this.networks[networks[0]]['type']==PrivacyNetworkTypes.TYPE_COLLEGE&&this.networks[networks[0]]['primary']==true){current_value=PrivacySpecialPreset.COLLEGE_NETWORK_FRIENDS_OF_FRIENDS;}else if(networks.length==1&&(friends==PrivacyFriendsValue.ALL_FRIENDS)&&this.networks[networks[0]]['type']==PrivacyNetworkTypes.TYPE_COLLEGE&&this.networks[networks[0]]['primary']==true){current_value=PrivacySpecialPreset.COLLEGE_NETWORK_FRIENDS;}else{current_value=PrivacyBaseValue.CUSTOM;}}
if(networks===PrivacyNetworksAll){if(friends==PrivacyFriendsValue.ALL_FRIENDS){current_value=PrivacyBaseValue.NETWORKS_FRIENDS;}else if(friends==PrivacyFriendsValue.FRIENDS_OF_FRIENDS){current_value=PrivacyBaseValue.NETWORKS_FRIENDS_OF_FRIENDS;}else{current_value=PrivacyBaseValue.CUSTOM;}}}
if(!current_value){if(value==PrivacyBaseValue.EVERYONE){current_value=PrivacyBaseValue.EVERYONE;friends=PrivacyFriendsValue.EVERYONE;}
if(value==PrivacyBaseValue.SELF){current_value=PrivacyBaseValue.SELF;friends=PrivacyFriendsValue.NO_FRIENDS;}}
if(!current_value){current_value=value;}
if(friends===PrivacyFriendsValue.SOME_FRIENDS&&some_lists.length==0&&some_names.length==0&&networks!==PrivacyNetworksAll&&networks.length==0){current_value=PrivacyBaseValue.NOBODY;if(!this._model_preset_exists(current_value)){if(this._model_preset_exists(current_value)){current_value=PrivacyBaseValue.SELF;}else if(this.adv_friends_value_exists(PrivacyFriendsValue.NO_FRIENDS)){current_value=PrivacyBaseValue.SELF;}else{current_value=PrivacyBaseValue.ALL_FRIENDS;}}}
if(friends===PrivacyFriendsValue.NO_FRIENDS&&networks!==PrivacyNetworksAll&&networks.length==0){current_value=PrivacyBaseValue.SELF;}
if(check_if_exists&&!this._model_preset_exists(current_value)){return PrivacyBaseValue.CUSTOM;}
return current_value;},get_model_value:function(display_value,lists_x,ids_anon_x){if(display_value==PrivacyBaseValue.CUSTOM){return display_value;}else{if(display_value===PrivacyBaseValue.NOBODY){return PrivacyBaseValue.NOBODY;}
for(var k in PrivacySpecialPreset){if(display_value==PrivacySpecialPreset[k]){return PrivacyBaseValue.CUSTOM;}}
if(((lists_x&&lists_x.length>0)||(ids_anon_x&&ids_anon_x.length>0))&&display_value!=PrivacyBaseValue.SELF&&display_value!=PrivacyBaseValue.NOBODY){return PrivacyBaseValue.CUSTOM;}
return display_value;}},adv_read_friends:function(){if(this.adv_read_everyone()==true){return PrivacyFriendsValue.EVERYONE;}
var friends=this.$('advanced_friends_radios').getElementsByTagName('input');for(var i=0;i<friends.length;i++){if(friends[i].type=='radio'){if(friends[i].checked){return parseInt(friends[i].value);}}}},adv_friends_value_exists:function(value){if(value==PrivacyFriendsValue.EVERYONE){if(this.out_of_range['everyone']){return false;}else{return true;}}
var friends=this.$('advanced_friends_radios').getElementsByTagName('input');for(var i=0;i<friends.length;i++){if(friends[i].type=='radio'&&parseInt(friends[i].value)===value){return true;}}
return false;},adv_read_everyone:function(){if(!this.out_of_range['everyone']){return this.$('advanced_everyone').getElementsByTagName('input')[0].checked;}},adv_read_custom_ids:function(type,entity){if(type=='some'&&this.out_of_range['some_friends']){return[];}
if(type=='except'&&this.out_of_range['except']){return[];}
var container_div=this.$(type+'_friends_container');var container=container_div.childNodes[0];var returns=[];if(container.childNodes.length>0){for(var i=0;i<container.childNodes.length;i++){if(CSS.hasClass(container.childNodes[i],'friends_'+entity)){var inputs=container.childNodes[i].getElementsByTagName('input');for(var i2=0;i2<inputs.length;i2++){returns.push(inputs[i2].value);}}}}
return returns;},adv_read_networks_select:function(){return get_form_select_value(this.$('advanced_networks_select'));},adv_read_networks:function(){if(this.out_of_range['networks']){return[];}
var select_value=this.adv_read_networks_select();if(select_value!='some'){if(select_value=='none'){return[];}else if(select_value=='all'){return PrivacyNetworksAll;}}
var selected_networks=[];var networks=this.$('advanced_networks_checkboxes').getElementsByTagName('input');for(var i=0;i<networks.length;i++){if(networks[i].checked){selected_networks.push(networks[i].value);}}
return selected_networks;},adv_all_networks:function(){if(this.out_of_range['networks']){return[];}
var inputs=this.$('advanced_networks_checkboxes').getElementsByTagName('input');var networks=[];for(var i=0;i<inputs.length;i++){networks.push(inputs[i].value);}
return networks;},adv_reverse_preset_value:function(check_if_exists){return this.select_display_value(get_form_select_value(this.$('advanced_select')),this.adv_read_friends(),this.adv_read_networks(),this.adv_read_custom_ids('some','lists'),this.adv_read_custom_ids('some','names'),check_if_exists);},interpret_value:function(value){var friends=PrivacyFriendsValue.NO_FRIENDS;var everyone=false;var networks=[];var self=false;value=parseInt(value);switch(value){case PrivacyBaseValue.OPEN:case PrivacyBaseValue.EVERYONE:friends=PrivacyFriendsValue.EVERYONE;everyone=true;break;case PrivacyBaseValue.FRIENDS_OF_FRIENDS:friends=PrivacyFriendsValue.FRIENDS_OF_FRIENDS;networks=[];break;case PrivacyBaseValue.NETWORKS_FRIENDS_OF_FRIENDS:friends=PrivacyFriendsValue.FRIENDS_OF_FRIENDS;networks=PrivacyNetworksAll;break;case PrivacySpecialPreset.COLLEGE_NETWORK_FRIENDS_OF_FRIENDS:friends=PrivacyFriendsValue.FRIENDS_OF_FRIENDS;networks=[];for(var k in this.networks){if(this.networks[k]['primary']==true&&this.networks[k]['type']==PrivacyNetworkTypes.TYPE_COLLEGE){networks.push(k);break;}}
break;case PrivacySpecialPreset.COLLEGE_NETWORK_FRIENDS:friends=PrivacyFriendsValue.ALL_FRIENDS;networks=[];for(var k in this.networks){if(this.networks[k]['primary']==true&&this.networks[k]['type']==PrivacyNetworkTypes.TYPE_COLLEGE){networks.push(k);break;}}
break;case PrivacySpecialPreset.ONLY_CORP_NETWORK:friends=PrivacyFriendsValue.NO_FRIENDS;networks=[];for(var k in this.networks){if(this.networks[k]['primary']==true&&this.networks[k]['type']==PrivacyNetworkTypes.TYPE_CORP){networks.push(k);break;}}
break;case PrivacyBaseValue.NETWORKS_FRIENDS:friends=PrivacyFriendsValue.ALL_FRIENDS;networks=PrivacyNetworksAll;break;case PrivacyBaseValue.ALL_FRIENDS:friends=PrivacyFriendsValue.ALL_FRIENDS;networks=[];break;case PrivacyBaseValue.SELF:friends=PrivacyFriendsValue.NO_FRIENDS;break;case PrivacyBaseValue.NOBODY:friends=PrivacyFriendsValue.SOME_FRIENDS;break;}
return{friends:friends,everyone:everyone,networks:networks,self:self};},edit_value:function(value,hidden){this.undo.push(value);value=parseInt(value);if(value&&value!=PrivacyBaseValue.CUSTOM){var values=this.interpret_value(value);this.edit_networks(values.networks);this.edit_everyone(values.everyone);this.edit_self(values.self);this.edit_friends(values.friends)}else{if(!this.out_of_range['some_friends']){this.edit_friends(PrivacyFriendsValue.SOME_FRIENDS);if(!hidden){this.$('fs_some').focus();}}
this.edit_networks([]);set_form_select_value(this.$('advanced_select'),PrivacyBaseValue.CUSTOM);this.edit_preset();}
if(!this._model_preset_exists(value)){set_form_select_value(this.$('advanced_select'),this.select_display_value(value,this.adv_read_friends(),this.adv_read_networks(),this.adv_read_custom_ids('some','lists'),this.adv_read_custom_ids('some','names')));}},edit_friends:function(friends){if(friends==PrivacyFriendsValue.EVERYONE){this.edit_everyone(true);friends=PrivacyFriendsValue.FRIENDS_OF_FRIENDS;this.edit_networks(PrivacyNetworksAll);}else{this.edit_everyone(false);}
if(!this.friends_radios){var friends_items=this.$('advanced_friends_radios').getElementsByTagName('input');this.friends_radios=[];for(var i=0;i<friends_items.length;i++){if(friends_items[i].type=='radio'){this.friends_radios.push(friends_items[i]);}}}
if(!this.friends_radio_items){var divs=this.$('advanced_friends_radios').getElementsByTagName('div');this.friends_radio_items=[];for(var i=0;i<divs.length;i++){if(CSS.hasClass(divs[i],'advanced_friends_radio_item')){this.friends_radio_items.push(divs[i]);}}}
for(var i=0;i<this.friends_radios.length;++i){var checked=(friends==this.friends_radios[i].value)?'checked':false;this.friends_radios[i].checked=checked;if(checked){CSS.addClass(this.friends_radio_items[i],'selected');}else{CSS.removeClass(this.friends_radio_items[i],'selected');}}
if(!this.out_of_range['some_friends']){if(friends==PrivacyFriendsValue.SOME_FRIENDS){CSS.removeClass(this.$('some_friends'),'collapsed');}else{CSS.addClass(this.$('some_friends'),'collapsed');}}},edit_networks:function(networks,force_some){if(this.out_of_range['networks']){return;}
var select_value;if(networks!==PrivacyNetworksAll&&(networks.length!=0||force_some)){networks_enabled=networks;select_value='some';CSS.removeClass(this.$('advanced_networks'),'no_checkboxes');var networks=this.$('advanced_networks_checkboxes');var inputs=networks.getElementsByTagName('input');for(var i2=0;i2<inputs.length;++i2){on=false;if(networks_enabled.length>0){for(var i=0;i<networks_enabled.length;i++){if(networks_enabled[i]==inputs[i2].value){inputs[i2].checked=true;on=true;}}
if(!on){inputs[i2].checked=false;}}else{inputs[i2].checked=false;}}}
if(networks===PrivacyNetworksAll||networks.length==0){CSS.addClass(this.$('advanced_networks'),'no_checkboxes');if(networks===PrivacyNetworksAll){select_value='all';}else{select_value='none';}}
set_form_select_value(this.$('advanced_networks_select'),select_value);},edit_everyone:function(on){if(!this.out_of_range['everyone']){this.$('advanced_everyone').getElementsByTagName('input')[0].checked=on;if(!this.out_of_range['networks']){if(on){CSS.setOpacity(this.$('advanced_networks'),0.7);CSS.setOpacity(this.$('advanced_friends_radios'),0.7);}else{CSS.setOpacity(this.$('advanced_networks'),1);CSS.setOpacity(this.$('advanced_friends_radios'),1)}}}},edit_self:function(on){if(on){this.edit_friends(PrivacyFriendsValue.NO_FRIENDS);}},set_friends_radio:function(value){var friends_options=this.$('advanced_friends_radios').getElementsByTagName('input');for(var i=0;i<friends_options.length;i++){if(parseInt(friends_options[i].value)==value){friends_options[i].checked=true;break;}}},show_advanced:function(){if(this.dialog&&this.dialog.obj){return false;}
this.mode='advanced';var cls='privacy_widget privacy_widget_pop';var id='privacy_pop_'+this.fbid;this.dialog=new pop_dialog('privacy_widget');if(!this.properties.prevent_dialog_expand_animation){this.dialog.show_loading_title(_tx("Privatsph\u00e4re-Einstellungen bearbeiten"));this.dialog.do_expand_animation=true;}
this.dialog.show_prompt((this.dialog_title?this.dialog_title:_tx("Privatsph\u00e4re-Einstellungen bearbeiten")),'<div class="'+cls+'" id="'+id+'"></div>');$(id).appendChild(this.advanced);this.model_write_to_adv();this.dialog.reset_dialog();return false;},hide_advanced:function(){this.root.appendChild(this.advanced);CSS.setOpacity(this.dialog.obj,1);},summary_onselect:function(){var value=parseInt(get_form_select_value(this.summary_select));this.summary_update_select_text(value);if(value==PrivacyBaseValue.CUSTOM){this.show_advanced();}else{CSS.addClass(this.$('summary'),'simple');if((this.model.lists_x.length>0||this.model.ids_x_anon.length>0)&&value!=PrivacyBaseValue.NOBODY&&value!=PrivacyBaseValue.SELF){CSS.addClass(this.$('summary'),'except');}else{CSS.removeClass(this.$('summary'),'except');}
var values=this.interpret_value(parseInt(value));this.model.friends=values.friends;this.model.networks=values.networks;this.model.value=this.get_model_value(parseInt(value),this.model.lists_x,this.model.ids_x_anon);this.model_write_to_form();this.on_save();}
this.summary_toggle_advanced_link(value);},summary_toggle_advanced_link:function(value){var show_advanced=false;if((this.model.lists_x.length>0||this.model.ids_x_anon.length>0)&&value!=PrivacyBaseValue.NOBODY&&value!=PrivacyBaseValue.SELF){show_advanced=true;}else if(value==PrivacyBaseValue.CUSTOM){show_advanced=true;}
if(show_advanced){this.$('show_advanced_custom').style.display='';}else{this.$('show_advanced_custom').style.display='none';}},summary_update_select_text:function(value){if(value!=PrivacyBaseValue.CUSTOM){value_text=_tx("Benutzerdefiniert...");}else{value_text=_tx("Benutzerdefiniert");}
for(var i=(this.summary_select.options.length-1);i>=0;--i){if(this.summary_select.options[i].value==PrivacyBaseValue.CUSTOM){this.summary_select.options[i].innerHTML=value_text;break;}}},set_on_save_handler:function(handler){this.save_handler=handler;},on_save:function(){if(this.save_handler){this.save_handler(serialize_form(this.root),this);}},is_me_or_nobody:function(){if(this.model.value==PrivacyBaseValue.SELF||this.model.value==PrivacyBaseValue.NOBODY||(this.model.value==PrivacyBaseValue.CUSTOM&&this.model.friends==PrivacyFriendsValue.NO_FRIENDS&&this.model.networks.length==0)){return true;}
return false;}});function privacy_profile_wall_check(form_data,instance){if(instance.is_me_or_nobody()){CSS.addClass($('privacy_profile_wall_setting'),'wall_setting_disabled');$('wall_setting').checked=false;$('wall_setting').disabled=true;$('has_wall_setting').value=0;}else{CSS.removeClass($('privacy_profile_wall_setting'),'wall_setting_disabled');$('wall_setting').disabled=false;$('wall_setting').checked=true;$('has_wall_setting').value=1;}}

function static_source(){this.values=null;this.index=null;this.index_includes_hints=false;this.exclude_ids={};this.parent.construct(this);}
static_source.extend('typeahead_source');static_source.prototype.enumerable=true;static_source.prototype.filter_excluded=function(values){return values.filter((function(value){return!this.exclude_ids[value.i];}).bind(this));}
static_source.prototype.build_index=function(){var index=[];var values=this.values;var gen_id=values.length&&typeof values[0].i=='undefined';for(var i=0,il=values.length;i<il;i++){var tokens=typeahead_source.tokenize(values[i].t);for(var j=0,jl=tokens.length;j<jl;j++){index.push({t:tokens[j],o:values[i]});}
if(this.index_includes_hints&&values[i].s){var tokens=typeahead_source.tokenize(values[i].s);for(var j=0,jl=tokens.length;j<jl;j++){index.push({t:tokens[j],o:values[i]});}}
if(gen_id){values[i].i=i;}}
index.sort(function(a,b){return(a.t==b.t)?0:(a.t<b.t?-1:1)});this.index=index;this.ready();}
static_source.prototype._sort_text_obj=function(a,b){if(a.e&&!b.e){return 1;}
if(!a.e&&b.e){return-1;}
return a.t.localeCompare(b.t);}
static_source.prototype.search_value=function(text){if(!this.is_ready){return;}
var results;if(text==''){results=this.values;}else{var ttext=typeahead_source.tokenize(text).sort(typeahead_source._sort);var index=this.index;var lo=0;var hi=this.index.length-1;var p=Math.floor(hi/2);while(lo<=hi){if(index[p].t>=ttext[0]){hi=p-1;}else{lo=p+1;}
p=Math.floor(lo+((hi-lo)/2));}
var results=[];var stale_keys={};var check_ignore=typeof _ignoreList!='undefined';for(var i=lo;i<index.length&&index[i].t.lastIndexOf(ttext[0],0)!=-1;i++){var elem_id=index[i].o.flid?index[i].o.flid:index[i].o.i;if(typeof stale_keys[elem_id]!='undefined'){continue;}else{stale_keys[elem_id]=true;}
if((!check_ignore||!_ignoreList[elem_id])&&!this.exclude_ids[elem_id]&&(ttext.length==1||typeahead_source.check_match(ttext,index[i].o.t))){results.push(index[i].o);}}}
results.sort(this._sort_text_obj.bind(this));if(this.owner&&this.owner.max_results){results=results.slice(0,this.owner.max_results);}
return results;}
static_source.prototype.set_exclude_ids=function(ids){this.exclude_ids=ids;}

function friend_source(get_param){this.bootstrap=this.bootstrap.bind(this,get_param);this.parent.construct(this);}
friend_source.extend('static_source');friend_source.prototype.text_noinput=friend_source.prototype.text_placeholder=_tx("Gib einen Namen ein");friend_source.friends={};friend_source.friends_index={};friend_source.prototype.cache_results=true;friend_source.prototype.bootstrap=function(get_param){if(friend_source.friends[get_param]){this.values=friend_source.friends[get_param];this.index=friend_source.friends_index[get_param];this.ready();}else{new AsyncRequest().setMethod('GET').setReadOnly(true).setURI('/ajax/typeahead_friends.php?'+get_param).setHandler(function(response){friend_source.friends[get_param]=this.values=this.filter_excluded(response.getPayload().friends);this.build_index();friend_source.friends_index[get_param]=this.index;}.bind(this)).disableNectar().send();}}
friend_source.dirty=function(){friend_source.friends={};friend_source.friends_index={};typeaheadpro.dirty_instances();}
friend_source.prototype.gen_html=function(friend,highlight){var text=friend.n||'&nbsp;';if(friend.n===false){text=_tx("0 Freunde");}else if(typeof(friend.n)=="object"){var names=[];for(var k in friend.n){names.push(friend.n[k]);}
if(names.length>3){text=_tx("{name1}, {name2}, {count} andere",{name1:names[0],name2:names[1],count:names.length-2});}else if(names.length){text=names.join(', ');}else{text=_tx("0 Freunde");}}
return['<div>',typeahead_source.highlight_found(friend.t,highlight),'</div><div><small>',text,'</small></div>'].join('');}
friend_source.prototype.search_value=function(text){if(text=='\x5e\x5f\x5e'){return[{t:text,n:'\x6b\x65\x6b\x65',i:10,it:'http://static.ak.facebook.com/pics/t_default.jpg'}];}
return this.parent.search_value(text);}

function friendlist_source(get_param){this.parent.construct(this,get_param);this.generation=0;}
friendlist_source.extend('friend_source');friendlist_source.master_generation=1;friendlist_source.dirty=function(){friend_source.dirty();friendlist_source.master_generation++;}
friendlist_source.prototype.friend_lists=false;friendlist_source.prototype.text_placeholder=_tx("Namen eines Freundes\/einer Freundesliste eingeben...");friendlist_source.prototype.return_friend_lists=function(){if(!this.friend_lists||(this.generation<friendlist_source.master_generation)||(this.friend_lists&&this.friend_lists.length==0)){this.generation=friendlist_source.master_generation;this.friend_lists=[];var index=this.index;var results=[];var pushed=[];if(!index.length||!(index.length>=1)){return;}
for(var i=0;i<index.length;i++){if(index[i].o.flid&&!pushed[index[i].o.flid]){pushed[index[i].o.flid]=true;results.push(index[i].o);}}
var results_sorted=results.sort(function(a,b){if(a.t>b.t)return 1;else if(a.t<b.t)return-1;else return 0;});this.friend_lists=results_sorted;}
return this.friend_lists;}
friendlist_source.prototype.search_value=function(text){if(text=='**FRIENDLISTS**'){return this.return_friend_lists();}
return this.parent.search_value(text);}
friendlist_source.prototype.gen_nomatch=function(){if(this.showing_icon_list){return _tx("Du hast keine Freundesliste. Benutze die Freunde Seite um eine Liste zu erstellen.");}else{return this.parent.gen_nomatch();}}

function show_edit_app_dialog(app_id,profile_id,visible_tab,handlers){EditAppSettings.setup(app_id,profile_id,true,visible_tab,handlers);}
EditAppSettings={currentTab:undefined,dialogUrl:'/ajax/editapp_dialog.php',callbackUrl:'/ajax/edit_app_settings.php',statusElement:'edit_app_settings_save_fill',appID:0,uiMode:false,setup:function(appID,profileID,uiMode,currentTab,handlers){this.appID=appID;this.profileID=profileID;this.uiMode=uiMode;this.currentTab=currentTab;this.setupHandlers(handlers||{});if(this.uiMode){this.showDialog(this.dialogHandler);}
return this;},_getCurrentTab:function(){if(!this.currentTab){var tabs=['profile','bookmarks','extended'];for(var i=0;i<tabs.length;i++){if(ge(this._getTabId(tabs[i]))){this.currentTab=tabs[i];break;}}}
return this.currentTab;},_getTabId:function(tab){return tab+'_tab_link';},setupHandlers:function(handlers){this.dialogHandler=handlers['dialogHandler']||bagofholding;this.bookmarkHandler=handlers['bookmark']||bagofholding;this.profileHandler=handlers['profile']||bagofholding;this.extendedHandler=handlers['extended']||bagofholding;},showDialog:function(handler){var async=new AsyncRequest().setURI(this.dialogUrl).setData({'app_id':this.appID,'profile_id':this.profileID,'visible_tab':this._getCurrentTab()});new Dialog().setAsync(async).setStackable(true).setHandler(handler||bagofholding).show();return this;},switchTab:function(tabName){CSS.removeClass(this._getTabId(this._getCurrentTab()),'tab_link_selected');hide('app_settings_'+this._getCurrentTab()+'_tab');CSS.addClass(this._getTabId(tabName),'tab_link_selected');show('app_settings_'+tabName+'_tab');this.currentTab=tabName;},setBookmarked:function(bookmarked){var async=new AsyncRequest().setURI(this.callbackUrl).setHandler(this.bookmarkHandler.bind(this,this.appID,bookmarked)).setData({'bookmark':1,'bookmarked':bookmarked,'profile_id':this.profileID,'app_id':this.appID});if(this.uiMode){async.setStatusElement(this.statusElement);}
async.send();},setAllowPublish:function(setting,show_minor_buttons){if(show_minor_buttons){show('app_feed_minor_buttons');}else{$('edit_app_settings_allow_publish_small_radio').checked=false;$('edit_app_settings_allow_publish_medium_radio').checked=false;hide('app_feed_minor_buttons');}
new AsyncRequest().setStatusElement(this.statusElement).setURI(this.callbackUrl).setHandler(bagofholding).setData({'publishing':1,'setting':setting,'profile_id':this.profileID,'app_id':this.appID}).send();return true;},setExtendedPermission:function(permission,allow){var async=new AsyncRequest().setURI(this.callbackUrl).setHandler(this.extendedHandler.bind(this,this.appID,permission)).setData({'extended':1,'permission':permission,'allow':allow,'profile_id':this.profileID,'app_id':this.appID});if(this.uiMode){async.setStatusElement(this.statusElement);}
async.send();return true;},makeProfileChange:function(item,action,box_tab){var async=new AsyncRequest().setURI(this.callbackUrl).setHandler(this.profileHandler.bind(this,item,this.appID)).setData({'profile':1,'item':item,'action':action,'app_id':this.appID,'profile_id':this.profileID,'box_tab':box_tab})
if(this.uiMode){async.setStatusElement(this.statusElement);}
async.send();if(this.uiMode){toggleDisplayNone('app_settings_profile_'+item+'_add');toggleDisplayNone('app_settings_profile_'+item+'_remove');}},savePrivacy:function(privacyData){privacyData['privacy']=1;privacyData['profile_id']=this.profileID;var async=new AsyncRequest().setURI(this.callbackUrl).setHandler(bagofholding).setData(privacyData);if(this.uiMode){async.setStatusElement(this.statusElement);}
async.send();},removeApplication:function(callback,rating,blurb){var handler=callback||bagofholding;var data={remove:1,app_id:this.appID,profile_id:this.profileID};if(rating){data.rating=rating;}
if(blurb){data.blurb=blurb;}
new AsyncRequest().setURI(this.callbackUrl).setHandler(handler).setData(data).send();},blockApplication:function(callback){var handler=callback||bagofholding;new AsyncRequest().setURI(this.callbackUrl).setHandler(handler).setData({'block':1,'app_id':this.appID,'profile_id':this.profileID}).send();},reorderBookmarks:function(appIDs){new AsyncRequest().setURI(this.callbackUrl).setHandler(bagofholding).setData({'reorder_bookmarks':1,'profile_id':this.profileID,'app_ids':appIDs}).send();},setExternalWebsitePolicy:function(setting){new AsyncRequest().setURI(this.callbackUrl).setHandler(bagofholding).setData({external_site:1,app_id:this.appID,profile_id:this.profileID,policy:setting}).send();},setGlobalExternalWebsitePolicy:function(setting){new AsyncRequest().setURI(this.callbackUrl).setHandler(bagofholding).setData({global_external_site:1,profile_id:this.profileID,policy:setting?1:0}).send();},setAlertSetting:function(alert_setting,is_active,callback){var handler=callback||bagofholding;var async=new AsyncRequest().setURI(this.callbackUrl).setHandler(handler).setData({'alerts':1,'alert_setting':alert_setting,'profile_id':this.profileID,'alert_value':is_active?1:0});if(this.uiMode){async.setStatusElement(this.statusElement);}
async.send();},setBlockComposer:function(block,callback){new AsyncRequest().setURI(this.callbackUrl).setHandler(callback||bagofholding).setData({composer:1,blocked_composer:block,profile_id:this.profileID,app_id:this.appID}).send();},killComposerDialog:function(app_name,context,callback){var composer_dialog=new contextual_dialog();var killComposer=function(){this.setBlockComposer(1,callback);composer_dialog.fade_out(100);}.bind(this);var title=_tx("{app-name}-Herausgeber entfernen?",{'app-name':htmlize(app_name)});var content=_tx("Du kannst diese Aktion in den Einstellungen der {app-name}-Anwendung widerrufen.",{'app-name':htmlize(app_name)});var button=_tx("Entfernen");composer_dialog.set_context(context).show_choice(title,content,_tx("Entfernen"),killComposer,_tx("Abbrechen"),function(){composer_dialog.fade_out(100);});},reviveComposerDialog:function(app_name,callback){var title=_tx("Blockierung f\u00fcr {app-name}-Herausgeber aufheben?",{'app-name':htmlize(app_name)});var content='<p>'+_tx("M\u00f6chtest den Herausgeber dieser Anwendung wirklich Zugang zu deinem Profil geben?")+'</p>';var button=_tx("Blockierung aufheben");new Dialog().setTitle(title).setBody(content).setButtons([{'name':'remove','label':button},Dialog.CANCEL]).setHandler(this.setBlockComposer.bind(this,0,callback)).show();}}

var
kError_Global_ValidationError=1346001,kError_Login_GenericError=1348009,kError_Chat_NotAvailable=1356002,kError_Chat_SendOtherNotAvailable=1356003,kError_Async_NotLoggedIn=1357001,kError_Async_LoginChanged=1357003,kError_Async_CSRFCheckFailed=1357004,kError_Chat_TooManyMessages=1356008,kError_Platform_CallbackValidationFailure=1349007,kError_Platform_ApplicationResponseInvalid=1349008,kError_FBPayments_Unknown=1383001,kError_FBPayments_InvalidParameters=1383002,kError_Gifts_NoGiftSelected=1391001,kError_Gifts_NoReceiverSpecified=1391003,kError_Gifts_NoMessageAttached=1391004,kError_RestrictionMessage_Featureblock=1395001,kError_RestrictionMessage_Featurewarning=1395002,kError_RestrictionMessage_Spamwarning=1395003,kError_Async_InternalCaptchaRequired=1357007,kError_Recruiting_MessageDeliveryFailed=1405001,kError_FBPayments_PaymentFailure=1383003,kError_Intern_UnknownError=1408001,kError_Privacy_FriendListNameAlreadyExists=1409001,kError_Mobile_InvalidWapLocale=1347008,kError_Gifts_MessageTooLong=1391007,kError_Inbox_DuplicateMessages=1415001,kError_Async_ConfirmationRequired=1357008,kError_Gifter_GiftNotMoved=1416001,kError_Gifter_GiftNotCreated=1416002,kError_Gifter_GiftNotUpdated=1416003,kError_Gifter_DesignerNotAdded=1416004,kError_Gifter_GiftsNotLoaded=1416005,kError_Megaphone_InvalidHideData=1419001,kError_Megaphone_StoryNotFound=1419002,kError_Megaphone_InternalError=1419003,kError_Megaphone_HandleHideFailed=1419004,kError_Screenname_LimiteExceeded=1423001,kError_Screenname_AllocationError=1423002,kError_OpenId_RegistrationGeneralError=1428001,kError_OpenId_SignatureError=1428002,kError_OpenId_MissingRequiredInformation=1428003,kError_OpenId_ProtocolError=1428004,kError_OpenId_ProtocolErrorWithMessage=1428005,kError_OpenId_EmailAlreadyTaken=1428006,kError_Inbox_ThreadsUnavailable=1415002,kError_OpenId_CancelResponse=1428010,kError_OpenId_SetupNeededResponse=1428011,kError_FBPayments_InvalidOperation=1383004,kError_FBPayments_PermissionDenied=1383005,kError_FBPayments_DatabaseError=1383006,kError_FBPayments_InvalidApp=1383007,kError_FBPayments_AppNoResponse=1383008,kError_FBPayments_AppErrorResponse=1383009,kError_FBPayments_UserCanceled=1383010;

function dropmenu(clickTarget){if(this==window){return new dropmenu(clickTarget);}else{this.className=null;this.menu=null;this.menuClickArea=null;this.showHandler=null;this.hideHandler=null;this.alignment=null;this.direction=null;this.isShown=false;this.canHide=false;this.show_hooks=[];this.hide_hooks=[];this.clickTarget=$(clickTarget);this.displayTarget=$(clickTarget);this.id=null;this.rtl=false;this._clickToHide=true;this._markupContentCallback=bagofholding;this.clickHandle=this.clickTarget.listen('click',this.toggle.bind(this));this.container=$('dropmenu_container')||document.body;return this;}}
dropmenu.ALIGN_RIGHT=1;dropmenu.ALIGN_LEFT=2;dropmenu.DIRECTION_UP=3;dropmenu.DIRECTION_DOWN=4;dropmenu.INSTANCES={};dropmenu.prototype.setPosition=function(alignment){this.alignment=alignment;return this;}
dropmenu.prototype.setDirection=function(direction){this.direction=direction;return this;}
dropmenu.prototype.setMenuClickArea=function(id){this.menuClickArea=$(id);return this;}
dropmenu.prototype.setDisplayTarget=function(id){this.displayTarget=$(id);return this;}
dropmenu.prototype.setClickToHide=function(click_to_hide){this._clickToHide=click_to_hide;return this;}
dropmenu.prototype.setMarkupContent=function(id,className,markup){this.menuContent=markup;this.className=className;this.id=id;return this;}
dropmenu.prototype.setMarkupContentCallback=function(fn){this._markupContentCallback=fn;return this;}
dropmenu.prototype._getMarkupContent=function(){return this.menuContent||this._markupContentCallback();}
dropmenu.prototype.registerHTMLMenu=function(menu_id){this.registered_menu_id=menu_id;return this;}
dropmenu.prototype.addHook=function(type,fn){this[type+'_hooks'].push(fn);return this;}
dropmenu.prototype.removeHook=function(type,fn){for(var i=0;i<this[type+'_hooks'].length;i++){if(fn==this[type+'_hooks'][i]){this[type+'_hooks'].splice(i,1);return true;}}
return this;}
dropmenu.prototype.toggle=function(e){if(!this.isShown){this._show();this.canHide=false;}else{this._hide();}
$E(e).prevent();}
dropmenu.prototype.show=function(){this._show();}
dropmenu.prototype.hide=function(){if(!this.menu){return;}
this._hide();}
dropmenu.prototype.destroy=function(){if(this.menu&&this.menu.parentNode){this.menu.parentNode.removeChild(this.menu);this.menu=null;}}
dropmenu.prototype._buildMenu=function(){if(intl_locale_is_rtl()&&!this.rtl){this.alignment=(this.alignment==dropmenu.ALIGN_RIGHT)?dropmenu.ALIGN_LEFT:dropmenu.ALIGN_RIGHT;this.rtl=true;}
if(this.registered_menu_id){this.menu=$(this.registered_menu_id);if(this.alignment||this.direction){this.container.appendChild(this.menu);}}else{this._buildDynamicMenu();}
dropmenu.INSTANCES[this.id]=this;this.menuClickArea=this.menuClickArea||DOM.scry(this.menu,'div.menu_content');this.menuClickArea.onclick=chain(this.menuClickArea.onclick,Event.stop);var menu_links=DOM.scry(this.menu,'a');for(var i=0;i<menu_links.length;i++){addEventBase(menu_links[i],'click',function(){if(this._clickToHide){this._hide();}}.bind(this),this.menu_id+'_link_'+i);}}
dropmenu.prototype._buildDynamicMenu=function(){this.menu=document.createElement('div');this.menu.className='dropdown_menu hidden_elem '+(this.className?' '+this.className:'');this.menu.id='dropdown_menu_'+this.id;var markupContent=this._getMarkupContent();if(!is_scalar(markupContent)){DOM.setContent(this.menu,markupContent);}else{set_inner_html(this.menu,markupContent);}
this.container.appendChild(this.menu);}
dropmenu.prototype._positionMenu=function(){if(this.alignment||this.direction||(!this.alignment&&!this.direction&&!this.registered_menu_id)){if(this.menu.parentNode!=this.container){this.container.appendChild(this.menu);}
var menuPos=Vector2.getElementPosition(this.displayTarget,'document');var contPos=Vector2.getElementPosition(this.container,'document');var x=menuPos.x-contPos.x;var y=menuPos.y-contPos.y+this.displayTarget.offsetHeight;if(this.alignment==dropmenu.ALIGN_RIGHT||this.direction==dropmenu.DIRECTION_UP){CSS.removeClass(this.menu,'hidden_elem');this.menu.style.left='-9999px';this.menu.style.top='-9999px';if(this.alignment==dropmenu.ALIGN_RIGHT){var menu_width=this.menu.offsetWidth;x=x+this.displayTarget.offsetWidth-menu_width;}
if(this.direction==dropmenu.DIRECTION_UP){var menu_height=this.menu.offsetHeight;y=y-this.displayTarget.offsetHeight-menu_height+1;}
CSS.addClass(this.menu,'hidden_elem');}
this.menu.style.left=x+'px';this.menu.style.top=y+'px';}}
dropmenu.prototype._onclick=function(event){this._hide();return false;}
dropmenu.prototype._show=function(){if(!this.menu){this._buildMenu();}
this._positionMenu();CSS.removeClass(this.menu,'hidden_elem');var hide=this._documentHideHandler.bind(this);this.click_event=addEventBase(document.body,'click',hide,this.menu.id);onbeforeunloadRegister(hide);this.isShown=true;for(var i=0;i<this.show_hooks.length;i++){this.show_hooks[i]();}}
dropmenu.prototype._documentHideHandler=function(e){if(!this.canHide){this.canHide=true;}else{this._hide();}}
dropmenu.prototype._hide=function(){if(this.menu){CSS.addClass(this.menu,'hidden_elem');removeEventBase(document.body,'click',this.click_event,this.menu.id);}
this.click_event=null;this.isShown=false;for(var i=0;i<this.hide_hooks.length;i++){this.hide_hooks[i]();}
if(!this.registered_menu_id){this.destroy();}}
dropmenu.prototype._build_menu_shim=function(){this.shim=null;if(ua.ie()<7){this.shim=document.createElement('iframe');CSS.setClass(shim,'iframe_shim');this.container.appendChild(this.shim);}}
dropmenu.getExistingInstance=function(id){return dropmenu.INSTANCES[id];}
function flyout_menu(clickTarget){if(this==window){return new flyout_menu(clickTarget);}else{this.title='';this.parent.construct(this,clickTarget);}}
flyout_menu.extend('dropmenu');flyout_menu.prototype.setMarkupContent=function(id,className,title,markup){this.parent.setMarkupContent(id,className,markup);this.title=title;return this;}
flyout_menu.prototype.setIconPosition=function(iconElem){this.iconElem=iconElem;return this;}
flyout_menu.prototype._buildDynamicMenu=function(){this.menu=document.createElement('div');CSS.addClass(this.menu,(this.className||'')+' flyout_menu hidden_elem');if(this.alignment==dropmenu.ALIGN_RIGHT){CSS.addClass(this.menu,'flyout_menu_left');}
this.menu.id='flyout_menu_'+this.id;var menuContentId='content_'+this.id;var html=[];html.push('<div class="flyout_menu_header_shadow">');html.push('<div class="flyout_menu_header clearfix">');html.push('<div class="flyout_menu_mask"></div>');html.push('<div class="flyout_menu_title">'+this.title+'</div>');html.push('</div></div>');html.push('<div class="flyout_menu_content_shadow">');html.push('<div class="menu_content" id="content_'+this.id+'">');html.push('</div></div>');set_inner_html(this.menu,html.join(''));this.container.appendChild(this.menu);var markupContent=this._getMarkupContent();if(!is_scalar(markupContent)){DOM.setContent($(menuContentId),markupContent);}else{set_inner_html($(menuContentId),markupContent);}
this.menuClickArea=$(menuContentId);}
flyout_menu.prototype._positionMenu=function(){if(this.alignment||(!this.alignment&&!this.registered_menu_id)){var x;var icon_anchor=this.iconElem?this.iconElem:this.clickTarget;switch(this.alignment){case dropmenu.ALIGN_LEFT:case null:x=elementX(icon_anchor)-elementX(this.container);break;case dropmenu.ALIGN_RIGHT:this.menu.style.left='-9999px';this.menu.style.top='-9999px';CSS.removeClass(this.menu,'hidden_elem');var menuWidth=Vector2.getElementDimensions(this.menu).x;var right_anchor_pos=Rect.getElementBounds(icon_anchor).r-elementX(this.container);var padding=4;x=right_anchor_pos-menuWidth+padding*2;CSS.addClass(this.menu,'hidden_elem');break;}
var y=elementY(icon_anchor)-elementY(this.container);this.menu.style.left=x+'px';this.menu.style.top=y+'px';}}
function hover_menu(clickTarget){if(this==window){return new hover_menu(clickTarget);}else{this.parent.construct(this,clickTarget);this.timeOut=0;this.clickHandle.remove();this.enterTimer=null;this.exitTimer=null;}}
hover_menu.extend('dropmenu');hover_menu.prototype.setTimeoutInterval=function(time){this.timeOut=time;return this;}
hover_menu.prototype._clickTarget_onmouseover=function(target,e){this.enterTimer=setTimeout(function(){this._show();}.bind(this),this.timeOut);clearTimeout(this.exitTimer);}
hover_menu.prototype._clickTarget_onmouseout=function(target,e){e=e||window.event;var relatedTarget=(e.relatedTarget)?e.relatedTarget:e.toElement;if(DOM.contains(target,relatedTarget)){return;}
if(!DOM.contains(this.menu,relatedTarget)){this.exitTimer=setTimeout(function(){this._hide();}.bind(this),this.timeOut);}
clearTimeout(this.enterTimer);}
hover_menu.prototype._menu_onmouseover=function(target,e){clearTimeout(this.exitTimer);}
hover_menu.prototype._menu_onmouseout=function(target,e){e=e||window.event;var relatedTarget=(e.relatedTarget)?e.relatedTarget:e.toElement;if(DOM.contains(target,relatedTarget)){return;}
this.exitTimer=setTimeout(function(){this._hide();}.bind(this),this.timeOut);clearTimeout(this.enterTimer);}
hover_menu.prototype.initialize=function(){if(!this.menu){this._buildMenu();}
this.clickTarget.listen('mouseover',this._clickTarget_onmouseover.bind(this,this.clickTarget));this.clickTarget.listen('mouseout',this._clickTarget_onmouseout.bind(this,this.clickTarget));this.menu.listen('mouseout',this._menu_onmouseout.bind(this,this.menu));this.menu.listen('mouseover',this._menu_onmouseover.bind(this,this.menu));this._positionMenu();return this;}

function intl_locale_selector_dialog(uri){var dialog=new Dialog().setContentWidth(550).setStackable(true).setShowLoading(true);new AsyncRequest().setURI('/ajax/intl/language_dialog.php').setData({'uri':uri}).setReadOnly(true).setHandler(function(asyncResponse){var payload=asyncResponse.getPayload();dialog.setTitle(payload.dialog_title);dialog.setBody(payload.dialog_body);dialog.setButtons([Dialog.OK]);dialog.show();}).send();return false;}

function SortableGroup(){this.namespace='sortable'+(++SortableGroup.instanceCount);this.draggables={};this.droppables={};this.sortables={};this.linkedGroups=[];this.linkedGroups.onlinkjump=bagofholding;this.rootNode=null;this.boundingBox=null;this.neverEmpty=false;this.hasEmptyMessage=false;this.isDroppable=true;this.anchor=null;}
SortableGroup.instanceCount=0;SortableGroup.prototype.gutter=15;SortableGroup.prototype.setBoundingBox=function(bounding_box){this.boundingBox=bounding_box;for(var k in this.draggables){this.draggables[k].setBoundingBox(this.boundingBox);}
return this;}
SortableGroup.prototype.setDroppable=function(val){this.isDroppable=val;return this;}
SortableGroup.prototype._initializeAdded=function(key,obj){if(this.rootNode===null){this.rootNode=obj.parentNode;if(!this.linkedGroups.placeholder){this.linkedGroups.placeholder=this.placeholder=$N(obj.tagName,{className:'dragPlaceholder',style:{padding:'0px'}});}else{this.placeholder=this.linkedGroups.placeholder;}}else if(this.rootNode!=obj.parentNode){throw new Error('All sortables of a collection must share the same parentNode');}
if(key in this.draggables){throw new Error('All sortables must have a unique key');}}
SortableGroup.prototype.addSortable=function(key,obj,handle){this._initializeAdded(key,obj);this.sortables[key]=obj;this.draggables[key]=(new Draggable(obj)).setNamespace(this.namespace).setGutter(this.gutter).setUseAbsolute(true).setGrabHandler(this.grabHandler.bind(this,key)).setDropHandler(this.dropHandler.bind(this,key)).setKey('key',key).setBoundingBox(this.boundingBox);if(handle){this.draggables[key].addHandle(handle);}
this.droppables[key]=(new Droppable(obj)).setNamespace(this.namespace).setDragOverHandler(this._dragOverHandlerShim.bind(null,this,key));return this;}
SortableGroup.prototype.addEmptyMessage=function(obj,root){var key='placeholder';if(obj.parentNode!=root){root.appendContent(obj);}
this._initializeAdded(key,obj);this.hasEmptyMessage=true;this.sortables[key]=obj;this.droppables[key]=(new Droppable(obj)).setNamespace(this.namespace).setDragOverHandler(this._dragOverHandlerShim.bind(null,this,key));return this;}
SortableGroup.prototype.setNeverEmpty=function(neverEmpty){this.neverEmpty=neverEmpty;}
SortableGroup.prototype.link=function(sortgroup){sortgroup.linkedGroups=this.linkedGroups;if(!this.linkedGroups.length){this.linkedGroups.push(this);}
this.linkedGroups.push(sortgroup);for(var i=0;i<this.linkedGroups.length;i++){if(this.linkedGroups[i].namespace!=this.namespace){this.linkedGroups[i].namespace=this.namespace;for(var j in this.linkedGroups[i].droppables){this.linkedGroups[i].droppables[j].setNamespace(this.namespace);this.linkedGroups[i].draggables[j].setNamespace(this.namespace);}}}
return this;}
SortableGroup.prototype.getOrder=function(){if(!this.rootNode){return[];}
var ret=[],childNodes=this.rootNode.childNodes;for(var i=0;i<childNodes.length;i++){for(var k in this.sortables){if(this.sortables[k]==childNodes[i]){ret.push(k);break;}}}
return ret;}
SortableGroup.prototype.migrateLinkedSortable=function(key){for(var i=0;i<this.linkedGroups.length;i++){if(key in this.linkedGroups[i].draggables){this.sortables[key]=this.linkedGroups[i].sortables[key];this.draggables[key]=this.linkedGroups[i].draggables[key];this.draggables[key].setGrabHandler(this.grabHandler.bind(this,key)).setDropHandler(this.dropHandler.bind(this,key));this.droppables[key]=this.linkedGroups[i].droppables[key];this.droppables[key].setDragOverHandler(this._dragOverHandlerShim.bind(null,this,key));delete this.linkedGroups[i].sortables[key];delete this.linkedGroups[i].draggables[key];delete this.linkedGroups[i].droppables[key];return true;}}
return false;}
SortableGroup.prototype.setLinkJumpHandler=function(func){this.linkedGroups.onlinkjump=func;return this;}
SortableGroup.prototype.onorderchange=bagofholding;SortableGroup.prototype.setOrderChangeHandler=function(func){this.onorderchange=func;return this;}
SortableGroup.prototype.ongrabcallback=bagofholding;SortableGroup.prototype.setGrabCallback=function(func){this.ongrabcallback=func;return this;}
SortableGroup.prototype._checkLastRemaining=function(draggable){var oneNodeLeft=this.hasEmptyMessage?2:1;return this.neverEmpty&&this.rootNode.childNodes.length==oneNodeLeft;}
SortableGroup.prototype.grabHandler=function(draggableKey){if(this._checkLastRemaining()){this.draggables[draggableKey].killDrag();return;}
CSS.setClass(this.placeholder,this.sortables[draggableKey].className);CSS.addClass(this.placeholder,'droppable_placeholder');CSS.addClass(this.sortables[draggableKey],'drag');Vector2.getElementDimensions(this.sortables[draggableKey]).setElementDimensions(this.placeholder);this.rootNode.insertBefore(this.placeholder,this.sortables[draggableKey]);this.ongrabcallback(draggableKey);if(!this.isDroppable){var sortable=this.sortables[draggableKey];this.anchor=sortable.nextSibling;if(!this.anchor){this.anchor=$N('div');sortable.parentNode.appendChild(this.anchor);}}}
SortableGroup.prototype.ondropcallback=bagofholding;SortableGroup.prototype.setDropCallback=function(func){this.ondropcallback=func;return this;}
SortableGroup.prototype.dropHandler=function(draggableKey){if(this._checkLastRemaining()){this.draggables[draggableKey].resetPosition();return;}
CSS.removeClass(this.sortables[draggableKey],'drag');this.draggables[draggableKey].resetPosition();this.rootNode.insertBefore(this.sortables[draggableKey],this.placeholder);this.rootNode.removeChild(this.placeholder);for(var i=0;i<this.linkedGroups.length;i++){if(this.linkedGroups[i].anchor){delete this.linkedGroups[i].anchor;}}
this.ondropcallback(draggableKey);this.onorderchange();}
SortableGroup.prototype._dragOverHandlerShim=function(that,droppableKey,draggable){that.dragOverHandler(droppableKey,draggable.getKey('key'));};SortableGroup.prototype.dragOverHandler=function(droppableKey,draggableKey){if(!this.isDroppable&&!this.anchor){return;}
var jumped=false;if(!(draggableKey in this.draggables)){if(!this.migrateLinkedSortable(draggableKey)){throw new Error('Draggable dropped onto a foreign droppable!');}
jumped=true;}
var before=true,childNodes=this.rootNode.childNodes,draggable=this.sortables[draggableKey],droppable=this.sortables[droppableKey];if(!this.anchor){for(var i=0;i<childNodes.length;i++){if(childNodes[i]==droppable){break;}else if(childNodes[i]==draggable){before=false;break;}}}else{droppable=this.anchor;}
if(before||this.anchor){this.rootNode.insertBefore(this.placeholder,droppable);}else{this.rootNode.insertBefore(this.placeholder,droppable.nextSibling);}
this.rootNode.insertBefore(draggable,this.placeholder);this.ondragover(draggable,droppable);if(jumped){this.linkedGroups.onlinkjump.call(this,draggableKey);}}
SortableGroup.prototype.ondragover=bagofholding;SortableGroup.prototype.setDragOverCallback=function(func){this.ondragover=func;return this;}
SortableGroup.prototype.destroy=function(){for(var k in this.droppables){this.droppables[k].destroy();}
for(var k in this.draggables){this.draggables[k].destroy();}
this.droppables=this.draggables=this.rootNode=null;this.linkedGroups.remove(this);for(var i=0;i<this.linkedGroups.length;i++){this.linkedGroups[i].linkedGroups=this.linkedGroups;}}
SortableGroup.prototype.removeSortable=function(key){if(key in this.sortables){this.draggables[key].destroy();this.droppables[key].destroy();delete this.draggables[key];delete this.droppables[key];delete this.sortables[key];}}
SortableGroup.prototype.keyExists=function(key){return this.sortables[key];}

function search_typeaheadpro(obj,source,properties){this.parent.construct(this,obj,source,properties);this._onunload_registered=false;}
search_typeaheadpro.extend('typeaheadpro');search_typeaheadpro.prototype.auto_select=false;search_typeaheadpro.prototype.less_than_n_chars=false;search_typeaheadpro.prototype.dirty_results=function(){this.parent.dirty_results();if(!this._onunload_registered){this._onunload_registered=true;onunloadRegister(bind(this,function(){this.clear();this.blur();search_friend_source.hasSubmitted=false;search_friend_source.already_logged=false;this._onunload_registered=false;}));}}
search_typeaheadpro.prototype.show=function(){this.dropdown.style.border='0px none';if(this.suggestions.length){CSS.addClass(this.list,'typeahead_list_with_shadow');}else{CSS.removeClass(this.list,'typeahead_list_with_shadow');}
var typeahead_width=191;if(!this.less_than_n_chars){CSS.addClass(this.dropdown,'typeahead_search');this.parent.show();var anchor_dimensions=Vector2.getElementDimensions(this.anchor);this.dropdown.style.left=(elementX(this.anchor)-(typeahead_width-anchor_dimensions.x)+4)+'px';this.dropdown.style.width=typeahead_width+'px';}else{this.hide();}}
search_typeaheadpro.prototype.select_suggestion=function(index){this.log_data.sm=this.log_data.sm?this.log_data.sm:'mouse';if(this.suggestions&&this.suggestions.length>index){this.log_data.ty=index>=0?this.suggestions[index].ty:'fs';this.log_data.i=index>=0?this.suggestions[index].i:'0';this.log_data.f=this.suggestions.length>0?0:1;}
this.log_data.si=index;search_typeahead_log_data(this);if(this.suggestions&&this.source.history!=undefined&&this.suggestions.length>index&&index>=0){this.suggestions[index].o=-1;this.source.history[this.suggestions[index].i]=-1;}
return this.parent.select_suggestion.call(this,index);}
search_typeaheadpro.prototype.hide=function(){this.parent.hide();}
search_typeaheadpro.prototype.search_cache=function(text){return undefined;}
search_typeaheadpro.prototype.found_suggestions=function(suggestions,text,fake_data){var auto_select=ADVANCED_SEARCH_TYPEAHEAD&&suggestions&&suggestions.length==1;if(auto_select){suggestions.push({t:text,i:text.trim().replace(/ /g,'+'),ty:'search'});}
this.parent.found_suggestions(suggestions,text,fake_data);if(suggestions.length>0&&suggestions[0].ty=='search'){this.parent.set_suggestion(0);}
if(this.suggestion_count>0){CSS.addClass(this.list.firstChild.firstChild,'suggestions_top_border');CSS.removeClass(this.list,'no_border_list');CSS.addClass(this.list.lastChild.lastChild,'suggestions_bottom_border');}else{CSS.addClass(this.list,'no_border_list');}
if(auto_select){this.set_suggestion(0);}}
search_typeaheadpro.prototype._onkeydown=function(e){this.last_key=e?event_get_keypress_keycode(e):-1;this.interactive=true;if(this.last_key==KEYS.TAB&&this.suggestions.length>0){var next_tab_index=this.selectedindex+(e.shiftKey?-1:1);if(next_tab_index<-1||next_tab_index>=this.suggestions.length){return true;}
this.log_data.kt+=1;return false;}
this.parent._onkeydown(e);}
search_typeaheadpro.prototype._onkeypress=function(e){this.last_key=e?event_get_keypress_keycode(e):-1;this.interactive=true;if(this.last_key==KEYS.TAB&&this.suggestions.length>0){var next_tab_index=this.selectedindex+(e.shiftKey?-1:1);if(next_tab_index>=-1&&next_tab_index<this.suggestions.length){this.set_suggestion(next_tab_index);this.last_key_suggestion=(new Date()).getTime();return false;}}
return this.parent._onkeypress(e);}
function search_typeahead_onselect(friend){if(friend&&!search_friend_source.hasSubmitted){search_friend_source.hasSubmitted=true;}else{return false;}
var url=friend.u;if(!url){var type_info=search_friend_source.url_templates[friend.ty];if(type_info){url=sprintf(type_info.default_url,escapeURI(friend.i));}}
if(!url){return undefined;}else if(url.indexOf('?')!=-1){goURI(url+'&ref=ts');}else{goURI(url+'?ref=ts');}
bind(this,this.blur).defer();return false;};function search_typeahead_wstest(query){new AsyncSignal('/ajax/search/web.php',{q:query}).send();};function search_typeahead_log_data(source){var log_data=source.udata;for(var key in source.log_data){log_data[key]=source.log_data[key];}
search_typeahead_log(log_data,'onsubmit');}
function search_typeahead_onsubmit(friend){return!search_friend_source.hasSubmitted;}
window.ADVANCED_SEARCH_TYPEAHEAD=false;

function search_friend_source(get_param,manual_init){this.get_param=get_param;this.parent.construct(this);if(!manual_init){this.initialize();}}
search_friend_source.extend('static_source');search_friend_source.prototype.text_noinput=search_friend_source.prototype.text_placeholder=search_friend_source.prototype.text_nomatch='';search_friend_source.prototype.cache_results=true;search_friend_source.prototype.updated_pics={};search_friend_source.prototype._allowed_types=null;search_friend_source.prototype.initialize=function(callback){var current_time=(new Date()).getTime();new AsyncRequest().setMethod('GET').setReadOnly(true).setURI('/ajax/typeahead_search.php?'+this.get_param).setErrorHandler(function(){}).setTransportErrorHandler(function(){}).setHandler(function(response){var payload=response.getPayload();this.values=payload.entries;this.build_index.bind(this).defer();search_typeahead_log(this.udata,'getdata',current_time);var now_minus_5_min=((new Date()).getTime()/1000)-60*5;if(payload.gen_time<now_minus_5_min){new AsyncRequest().setMethod('GET').setReadOnly(true).setURI('/ajax/recent_pics.php').setData({ref_time:payload.gen_time}).setErrorHandler(function(){}).setTransportErrorHandler(function(){}).setHandler(function(response){this.updated_pics=response.getPayload().updated_pics;}.bind(this)).send();}
if(callback){callback();}}.bind(this)).disableNectar().send();};search_friend_source.url_templates={};search_friend_source.loaded_images={};search_friend_source.TYPES={USER:'u',CONNECTION:'c',FOLLOWER:'fl',PAGE:'p',APP:'a',GROUP:'g',EVENT:'e',SEARCH:'search',WEB:'web'};search_friend_source.prototype.build_index=function(){var history=this.history?this.history.entries:undefined;if(history!=undefined){this.values=this.values.each(function(value){value.o=history[value.i]!=undefined?history[value.i]:value.o;return value;});}
this.parent.build_index();};search_friend_source.image_load=function(image_elm,insertion_time,user_id){var current_time=(new Date()).getTime();search_friend_source.loaded_images[user_id]=true;if((current_time-insertion_time)<100){CSS.setOpacity(image_elm,1);}else{animation(image_elm).to('opacity',1).duration(100).go();}};search_friend_source.prototype.gen_html=function(friend,highlight){var icon_url=friend.it;if(!icon_url&&friend.ty&&search_friend_source.url_templates[friend.ty]){icon_url=search_friend_source.url_templates[friend.ty].icon;}
if(this.updated_pics[friend.i]){icon_url=this.updated_pics[friend.i];}
switch(friend.ty){case search_friend_source.TYPES.USER:case search_friend_source.TYPES.CONNECTION:case search_friend_source.TYPES.PAGE:if(!icon_url){return['<div>',typeahead_source.highlight_found(friend.t,highlight),'</div><div><small>',friend.n||'&nbsp;','</small></div>'].join('');}else{if(!search_friend_source.loaded_images[friend.i]){var insertion_time=(new Date()).getTime();var attrs=sprintf('onload="search_friend_source.image_load(this, %d, %d);" style="opacity:0;filter:alpha(opacity=0);"',insertion_time,friend.i);}
return['<img ',attrs,' alt="" src="',icon_url,'"/>','<div class="with_pic"><span>',typeahead_source.highlight_found(friend.t,highlight),'</span><small>',friend.n||'&nbsp;','</small></div>'].join('');}
break;case search_friend_source.TYPES.SEARCH:return['<div class="app"><div class="icon" style="background-image: url(',icon_url,')">&nbsp;</div>','<span>',friend.t,'</span></div>'].join('');break;default:return['<div class="app clearfix"><div class="icon" style="background-image: url(',icon_url,')">&nbsp;</div>','<span>',typeahead_source.highlight_found(friend.t,highlight),'</span></div>'].join('');}};search_friend_source.prototype.allowTypes=function(type_arr){this._allowed_types=type_arr;return this;};search_friend_source.prototype.search_value=function(text){var results;var enough_tokens=false;var tokens=typeahead_source.tokenize(text);for(var i=0;i<tokens.length;i++){if(tokens[i]!=''){enough_tokens=true;break;}}
if(enough_tokens){this.owner.less_than_n_chars=false;results=this.parent.search_value(text);}else if(this.is_ready){this.owner.less_than_n_chars=true;results=[];}
var non_people_search=(results&&results.length)?false:true;if(results){for(var i=0;i<results.length;i++){if((results[i].ty!=search_friend_source.TYPES.USER)&&(results[i].ty!=search_friend_source.TYPES.CONNECTION)){non_people_search=true;break;}}}
if(results&&non_people_search&&enough_tokens&&search_friend_source.WEBSEARCH_USER){results.push({t:_tx("Facebook durchsuchen"),ty:search_friend_source.TYPES.SEARCH,i:text});results.push({t:_tx("Internet durchsuchen"),ty:search_friend_source.TYPES.WEB,i:text});}
if(results&&this._allowed_types){results=results.filter(function(result){return this._allowed_types.contains(result.ty);}.bind(this));}
return results;};search_friend_source.prototype._sort_text_obj=function(a,b){var history=this.history?this.history.entries:undefined;if(history!=undefined){a.o=history[a.i]||a.o;b.o=history[b.i]||b.o;}
if(a.o!=b.o){return a.o-b.o;}
return a.t.localeCompare(b.t);};search_friend_source.WEBSEARCH_USER=false;window.ADVANCED_SEARCH_TYPEAHEAD=false;

function MenuBar(core_menu_id){this.core_menu_id=core_menu_id;this.core_menu=$(core_menu_id);this.menus=DOM.scry(this.core_menu,'li.fb_menu');this.timeout=250;}
copy_properties(MenuBar.prototype,{setTimeoutInterval:function(timeout){this.timeout=timeout;return this;},init:function(){var token=Event.listen(this.core_menu,'mouseover',function(e){var eventTarget=e.getTarget();var menuShown=false;for(var i=0;i<this.menus.length;i++){var menu=this.menus[i];var dropdown_id=menu.id+'_dropdown';if(ge(dropdown_id)){var menu_anchor=menu.firstChild.firstChild;var dropdown=$(dropdown_id);var hMenu=hover_menu(menu_anchor).registerHTMLMenu(dropdown_id).setPosition(dropmenu.ALIGN_LEFT).setTimeoutInterval(this.timeout).addHook('show',bind(this,'_onShowCallback',menu_anchor,dropdown)).addHook('hide',bind(this,'_onHideCallback',menu_anchor)).initialize();if(!menuShown&&DOM.contains(menu,eventTarget)){hMenu.show();menuShown=true;}}}
token.remove();}.bind(this));},_onShowCallback:function(clickTarget,menuElement){CSS.addClass(clickTarget,'hover');var scroller=window['ScrollArea']&&ScrollArea.getInnerInstance(menuElement);if(scroller){scroller.moveTo(0);}},_onHideCallback:function(clickTarget){CSS.removeClass(clickTarget,'hover');}});

var EditAppsController={BOOKMARKS_VIEW:'bookmarks',currentView:'',bookmarkedApps:[],sortableGroup:null,reviewMarkup:null,ownedApps:null,ratingSetSubscription:null,init:function(profileID,reviewMarkup,ownedApps){this.profileID=profileID;this.reviewMarkup=reviewMarkup;this.ownedApps=ownedApps;},setView:function(view){this.currentView=view;},switchView:function(view){goURI(new URI('/editapps.php').addQueryData({'v':view}).toString());},removeBookmarkedApp:function(appID){return this.changeBookmarkSetting(appID,0);},undoRemoveBookmarkedApp:function(appID){return this.changeBookmarkSetting(appID,1);},changeBookmarkSetting:function(appID,setting){EditAppSettings.setup(appID,this.profileID,false,null,{bookmark:this.changeBookmarkCallback}).setBookmarked(setting);return true;},changeBookmarkCallback:function(appID,setting){if(ge('editapps_bookmarked_'+appID)){if(setting){EditAppsController.addSortable(appID);}else{EditAppsController.sortableGroup.removeSortable(appID);}
toggleDisplayNone('editapps_bookmarked_'+appID);toggleDisplayNone('editapps_bookmarked_'+appID+'_undo');}},removeProfileApp:function(section,appID,boxTabID){return this.changeProfileSetting(section,appID,boxTabID,'del');},undoRemoveProfileApp:function(section,appID,boxTabID){return this.changeProfileSetting(section,appID,boxTabID,'add');},changeProfileSetting:function(section,appID,boxTabID,action){EditAppSettings.setup(appID,this.profileID,false,null,{profile:EditAppsController.changeProfileCallback}).makeProfileChange(section,action,boxTabID);return true;},changeProfileCallback:function(section,appID){if(ge('editapps_'+section+'_'+appID)){toggleDisplayNone('editapps_'+section+'_'+appID);toggleDisplayNone('editapps_'+section+'_'+appID+'_undo');}},removeAppSuccessDialog:function(callback,appName,isRemovableApp,response){if(isRemovableApp){var title=_tx("Anwendung entfernt");var body=_tx("Du hast {application-name} entfernt.",{'application-name':appName});}else{var title=_tx("Anwendung entfernt");var body=_tx("Du hast alle Integrationspunkte f\u00fcr {application-name} entfernt. {application-name} kann nicht komplett entfernt werden.",{'application-name':appName});}
new Dialog().setTitle(title).setBody(body).setButtons([Dialog.OK]).setHandler(callback.bind(this,response)).show();},onRatingSet:function(element){var textarea=$('app_remove_review_text');CSS.removeClass(textarea,'hidden');new TextAreaControl(textarea).setPlaceholderText(_tx("Warum entfernst du diese Anwendung?")).setAutogrow(true);},removeApplication:function(appId,rawAppName,handler,isRemovableApp){var appName=htmlize(rawAppName);var title=_tx("{application-name} entfernen?",{'application-name':appName});var application_link='<a href="/editapps.php">'+_tx("Anwendungen-Seite")+'</a>';if(!isRemovableApp){var content='<p>'+
_tx("Du kannst eine Facebook-Anwendung nicht vollst\u00e4ndig entfernen. Dadurch wird {application-name} von deinen Lesezeichen entfernt und jegliche Profilreiter oder -felder gel\u00f6scht. Die Anwendung wird aber weiterhin in deinem {applications-link} aufgef\u00fchrt.",{'applications-link':application_link,'application-name':appName})+'</p>'+'<p><strong>'+
_tx("M\u00f6chtest du alle Integrationspunkte f\u00fcr {application-name} entfernen?",{'application-name':appName})+'</strong></p>'+'<input type="hidden" name="remove_appId" value="'+appId+'" />';}else{var content='<p>'+
_tx("Wenn du {application-name} entfernst, hat die Anwendung keinen Zugang zu deinen Daten mehr und wird von deinem Profil, deinen Lesezeichen und {applications-link} entfernt.",{'application-name':appName,'applications-link':application_link})+'</p>';if(EditAppsController.reviewMarkup){if(!this.ratingSetSubscription){this.ratingSetSubscription=Arbiter.subscribe(ReviewsApp.ON_RATING_SET,this.onRatingSet.bind(this));}
var stars=HTML(EditAppsController.reviewMarkup).getNodes()[0];var prompt=$N('span',{className:'leave_rating_label'},_tx("Optional - Bewerte {application-name}:",{'application-name':rawAppName}));var textarea=$N('textarea',{className:'hidden',id:'app_remove_review_text'});var rating_markup=$N('div',null,[prompt,stars,textarea]);if(EditAppsController.ownedApps&&!EditAppsController.ownedApps.contains(parseInt(appId,10))){content+=rating_markup.innerHTML;}}
content+='<input type="hidden" name="remove_appId" value="'+appId+'" />';}
var remove_button={'name':'remove','label':_tx("Entfernen")};var buttons=[remove_button,Dialog.CANCEL];content='<div class="remove_application_dialog">'+
content+'</div>';new Dialog().setTitle(title).setBody(content).setButtons(buttons).setHandler(function(){var blurb_textarea=ge('app_remove_review_text');var blurb='';if(blurb_textarea){blurb=blurb_textarea.value;if(blurb==_tx("Warum entfernst du diese Anwendung?")){blurb='';}}
var review_rating=ge('review_rating');var rating=null;if(review_rating){rating=parseInt(review_rating.value,10);}
var remove_handler=EditAppsController.removeAppSuccessDialog.bind(this,handler,appName,isRemovableApp);EditAppSettings.setup(appId,this.profileID,false).removeApplication(remove_handler,rating,blurb);}).show();return false;},removeExtendedPermission:function(appID,permission){this.setExtendedPermission(appID,permission,false);},undoRemoveExtendedPermission:function(appID,permission){this.setExtendedPermission(appID,permission,true);},setExtendedPermission:function(appID,permission,value){EditAppSettings.setup(appID,this.profileID,false,null,{extended:this.setExtendedPermissionCallback}).setExtendedPermission(permission,value);return true;},setExtendedPermissionCallback:function(appID,permission){toggleDisplayNone('editapps_extperm_'+permission+'_'+appID);toggleDisplayNone('editapps_extperm_'+permission+'_'+appID+'_undo');},setBookmarkedApps:function(appIds){this.bookmarkedApps=appIds;this.sortableGroup=new SortableGroup();this.sortableGroup.setOrderChangeHandler(function(){EditAppSettings.reorderBookmarks(this.sortableGroup.getOrder());}.bind(this));for(var i=0;i<this.bookmarkedApps.length;i++){this.addSortable(this.bookmarkedApps[i]);}},addSortable:function(appId){var obj=$('editapps_bookmarked_wrapper_'+appId);this.sortableGroup.addSortable(appId,obj);},saveGlobalExternalWebsitePolicy:function(setting){EditAppSettings.setGlobalExternalWebsitePolicy(setting);return true;}}

function fbpage_show_viewer_settings_dialog(fbpage_id,title){var src='/ajax/pages/viewer_settings.php?id='+fbpage_id;Dialog.showFormAjax(title,src,_tx("Speichern"),true);return false;}
function fbpage_set_fan_status(elem,fbpage_id,action_is_add,reload){var handler=function(asyncResponse){_fbpage_show_change_status_feedback(elem,asyncResponse.getPayload());};var data={'fbpage_id':fbpage_id,'add':action_is_add,'reload':reload};new AsyncRequest().setURI('/ajax/pages/fan_status.php').setData(data).setHandler(bind(this,handle_require_email_conf_response,handler,null,null)).send();return false;}
function fbpage_set_favorite_status(elem,fbpage_id,action_is_add){var handler=function(){_fbpage_show_change_status_feedback(elem,this.getUserData());};var data={'fbpage_id':fbpage_id,'add':action_is_add};var async=new AsyncRequest().setMethod('POST').setURI('/ajax/pages/favorite_status.php').setData(data);new Dialog().setAsync(async).setCloseHandler(handler).show();return false;}
function _fbpage_show_change_status_feedback(elem,data){if(!data||!elem){return;}
if(data.reload){window.location.reload();}else if(data.feedback){var newElem=document.createElement('span');newElem.innerHTML=data.feedback;CSS.setClass(newElem,'fan_status_inactive');elem.parentNode.replaceChild(newElem,elem);var handler=function(){if(data.can_repeat_action){newElem.parentNode.replaceChild(elem,newElem);}}
animation(newElem).duration(3000).checkpoint().to('backgroundColor','#FFFFFF').duration(1000).ondone(handler).go();}}
function fbpage_verification_reason_dialog(){new Dialog().setTitle(_tx("Wozu wird das gebraucht?")).setBody(_tx("Damit Musik an deine Seite hochgeladen werden kann, m\u00fcssen wir dich auffordern, eine g\u00fcltige Form einer rechtsg\u00fcltigen Legitimation einzureichen, die dich, den Administrator der Seite, identifiziert.  Durch Einreichung einer g\u00fcltigen Form einer rechtsg\u00fcltigen Legitimation best\u00e4tigst du, dass du entweder die Urheberrechte an dem Inhalt, den du hochladen m\u00f6chtest, besitzt, oder dass du durch den Urheberrechtsinhaber dazu autorisiert wurdest, diesen urheberrechtlich gesch\u00fctzten Inhalt an deine Seite hochzuladen.  Wenn du m\u00f6chtest, kannst du auf deiner Legitimation sensible Informationen mit Ausnahme deines Namens und des Bildes unkenntlich machen.  Zurzeit akzeptieren wir nur P\u00e4sse mit Foto, Schulausweise und F\u00fchrerscheine. ")).setButtons([Dialog.OK]).show();return false;}
function pages_show_block_app(app_id,action,source){var async=new AsyncRequest().setMethod('POST').setData({app_id:app_id,action:action,source:source}).setURI('/ajax/apps/block.php');new Dialog().setAsync(async).show();}
function pages_change_block_wording(app_id){hide('block_'+app_id);}
function pages_promote_sms_fanning(fan,vanity_url,shortcode){new Dialog().setTitle(_tx("Gewinne mehr Fans durch SMS")).setBody(_tx("Teile deinen Freunden mit, dass sie von ihrem Handy aus eine SMS mit \u201e{fan} {name}\u201c an {mobile-number} senden k\u00f6nnen, um umgehend als Fan hinzugef\u00fcgt zu werden. Dabei k\u00f6nnen die \u00fcblichen Geb\u00fchren f\u00fcr SMS anfallen.",{'fan':fan,'name':vanity_url,'mobile-number':shortcode})).setButtons(Dialog.OK).show();return false;}
function fbpages_app_add(app_id){var async=new AsyncRequest().setURI('/ajax/apps/show_profile_add_dialog.php').setMethod('GET').setReadOnly(true).setData({profile_id:app_id});new Dialog().setAsync(async).show();return false;}
function fbpages_app_on_add(obj){var uri='/ajax/apps/add_to_profile.php';var data={profile_id:obj.profile_id,target_profile_id:obj.id};var handler=function(){ObjectBrowserController.getController(obj.element).removeItem(obj.id);};new AsyncRequest().setURI(uri).setMethod('POST').setData(data).setHandler(handler).send();}

var details_shown=false;function toggle_stored_cc(obj){if(obj.checked==true){show('cvv2_div');hide_new_cc();}else{hide('cvv2_div');show_new_cc();}}
function hide_cc_payment(){hide('card_payment');hide('cvv2_div');hide_new_cc();var sel_cc=ge('cc_id');if(sel_cc){sel_cc.checked=false;}}
function show_cc_payment(){show('card_payment');}
function hide_new_cc(){hide('cc_input');hide('enter_new_card');}
function show_new_cc(){show('cc_input');show('enter_new_card');if(details_shown){toggleStoredCreditCardDetails();}}
function toggleStoredCreditCardDetails(){var link=ge('toggle_stored_credit_card_details_link');if(!details_shown){show('stored_credit_card_details');link.innerHTML=_tx("Details verbergen");details_shown=true;}else{hide('stored_credit_card_details');link.innerHTML=_tx("Details anzeigen");details_shown=false;}}
function show_csc_info(cc_type){var csc_description=_tx("Eine Kartenpr\u00fcfnummer (KPN) ist eine Sicherheitsfunktion von Scheck- und Kreditkarten, die bei der Bek\u00e4mpfung von Kreditkartenbetrug hilft. Die folgende Graphik zeigt, wo sich die Kartenpr\u00fcfnummer auf deiner Kreditkarte befindet.");var csc_div_style='float: left;';var paragraph_style='text-align: center; margin: 5px 0;';var amex_html='';amex_html+='<div style="'+csc_div_style+'">';amex_html+='<img src="/images/cvv2_types/amex_csc.gif" alt="" />';amex_html+='<p style="'+paragraph_style+'">'+'American Express'+'</p>';amex_html+='</div>';var non_amex_html='';non_amex_html+='<div style="margin-right: 8px;'+csc_div_style+'">';non_amex_html+='<img src="/images/cvv2_types/backofcard.gif" alt="" />';non_amex_html+='<p style="'+paragraph_style+'">'+'Visa, Mastercard, JCB'+'</p>';non_amex_html+='</div>';var html='';html+='<div class="clearfix">';html+='<p>'+csc_description+'</p>';if(cc_type==null){html+=non_amex_html;html+=amex_html;}else if(cc_type==65){html+=amex_html;}else{html+=non_amex_html;}
html+='</div>';new Dialog().setClassName('csc_type').setTitle(_tx("Was ist eine Kartenpr\u00fcfnummer?")).setBody(html).setButtons([Dialog.OK]).show();}
function show_csc_validation_info(){var html='';html+='<div class="clearfix">';html+='<div style="float: left">';html+='<p style="text-align: left; margin: 5px 0;">';html+=_tx("Um den Missbrauch von Kreditkarten zu bek\u00e4mpfen, haben wir die Validierung durch den Sicherheits-Code (CVN) eingef\u00fchrt. F\u00fcr Kreditkarten, die wir bereits gespeichert haben bedeutet dies, dass diese einmalig durch die CVN f\u00fcr eine sp\u00e4tere Verwendung validiert werden m\u00fcssen. Du wirst in Zukunft nicht mehr darauf hingewiesen, sobald Deine Kreditkarte validiert worden ist.");html+='</p>';html+='</div>';html+='</div>';new Dialog().setClassName('validation').setTitle(_tx("Weshalb ist eine CSC-Pr\u00fcfung erforderlich?")).setBody(html).setButtons([Dialog.OK]).show();}
function get_selected_cc_type(cc_select_name,dialog_pro){if(dialog_pro){cc_type=get_form_select_value(get_dialog_pro_elem(cc_select_name));}else{cc_type=get_form_select_value(ge(cc_select_name));}
return cc_type;}
function validate_csc(cc_select_name,dialog_pro){if(dialog_pro){var cvv2_elem=get_dialog_pro_elem('cc_cvv2');}else{var cvv2_elem=ge('cc_cvv2');}
var cc_type=get_selected_cc_type(cc_select_name,dialog_pro);if(cc_type==65){if(cvv2_elem.value.length!=4){cvv2_elem.style.border="1px solid red;"}else{cvv2_elem.style.border="";}}else{if(cvv2_elem.value.length!=3){cvv2_elem.style.border="1px solid red;"}else{cvv2_elem.style.border="";}}}
function get_dialog_pro_elem(elem_name){var candidates=document.getElementsByName(elem_name);var i;var result=null;for(i=0;i<candidates.length;i++){var candidate=candidates[i];if(DOM.contains('pop_dialog_table',candidate)){result=candidate;}}
return result;}

function ApplicationDock(bookmarks,recentApps,bookmarkableApp){this.sortedBookmarks=[];this.undoTimeouts={}
this.menuLoaded=false;this.menuOpen=false;this.menuWrapperID='presence_applications';this.applicationTabID='presence_applications_tab';this.applicationMenuContentID='presence_applications_content';this.menuWrapper=$(this.menuWrapperID,true);this.applicationTab=$(this.applicationTabID,true);this.applicationMenuContainer=$(this.applicationMenuContentID,true);this.iconGardenRoot=$('application_icon_garden_root',true);this.bookmarkableAppWrapper=$('bookmarkable_app',true);this.bookmarkableAppContainer=$('presence_applications_bookmark_app',true);this.sortableRoot=null;this.sortableGroup=null;this.extendedSortableGroup=null;this.extendedSortableRoot=null;this.iconGardenSortableGroup=null;this.currentIconGardenDraggableKey=null;this.recentSortableGroup=null;this.recentSortableRoot=null;this.lastBookmarkedApp=null;this.logTabOpen=false;this.logBMClick=false;this.topBookmark=null;this.recentApps=null;this.sortedRecentApps=null;this.bookmarks=bookmarks;this.recentApps=recentApps;this.bookmarkableApp=bookmarkableApp;this.suppressReset=false;this.removedBookmarks={};}
copy_properties(ApplicationDock,{NUM_SHOWN:6,BOOKMARKS_CHANGED:'bookmarks_changed',SaveBookmarksSource:{ICON_GARDEN:1,APPLICATION_MENU:2,BOOKMARK_CURRENT_APP:3},ANIM_DURATION:200,UNDO_ANIM_HIDE_DELAY:5000,RECENT_APPS_ANIM_HIDE_DELAY:1000});ApplicationDock.prototype={_init:function(){if(!is_empty(this.bookmarkableApp)){this._renderBookmarkableApp();}
(function(){this.sortedBookmarks=this._getSortedList();this._initIconGardenSortables();presence.registerMsgHandler(this._handleMsg.bind(this));}).bind(this).defer();},_getSortedList:function(applications){applications=applications||this.bookmarks;var array=keys(applications);this._sort(array,applications);return array;},_ensureSortedRecentApps:function(){if(!this.sortedRecentApps){this.sortedRecentApps=this._getSortedList(this.recentApps);}},_sort:function(array,applications){var compareFunction=this._sortApps.bind(null,applications);array.sort(compareFunction);},_sortApps:function(applications,id1,id2){return applications[id1].order-applications[id2].order;},_renderApplicationMenu:function(){DOM.setContent(this.applicationMenuContainer,HTML(this._renderAppMenuContent()));},_renderAppMenuContent:function(){var markupArr=[];var bookmarksDividerRendered=false;if(count(this.recentApps)>0){markupArr.push('<div id="application_menu_recent_apps_container">');markupArr.push(this._renderAppMenuDivider(_tx("K\u00fcrzlich verwendet")));markupArr.push('<ul id="application_menu_recent_apps">');this._ensureSortedRecentApps();for(var i=0;i<this.sortedRecentApps.length;i++){var appID=this.sortedRecentApps[i];markupArr.push(this._renderAppMenuItem(appID));}
markupArr.push('</ul>');markupArr.push('</div>');if(this.sortedBookmarks.length){bookmarksDividerRendered=true;markupArr.push(this._renderAppMenuDivider(_tx("Lesezeichen")));}}
if(this.sortedBookmarks.length){if(!bookmarksDividerRendered){markupArr.push(this._renderAppMenuDivider(_tx("Lesezeichen")));}
markupArr.push('<ul id="application_menu_root">');for(var i=0;i<this.sortedBookmarks.length;i++){var appID=this.sortedBookmarks[i];if(i==ApplicationDock.NUM_SHOWN){markupArr.push('</ul>',this._renderAppMenuDivider(),'<ul id="application_menu_extended_root">');}
markupArr.push(this._renderAppMenuItem(appID,null,true));}
markupArr.push('</ul>');}
return markupArr.join('');},_renderAppMenuItem:function(appID){var removeBookmarkButtonStr='';var undoRemoveStr='';removeBookmarkButtonStr=sprintf('<div class="del_button" id="%s"></div>',this._getAppMenuRemoveItemId(appID));undoRemoveStr=['<div class="app_menu_undo_remove_bookmark" id="',this._getAppMenuUndoRemoveItemId(appID),'"><div class="app_menu_undo_remove_bookmark_link"><a href="#" id="',this._getAppMenuUndoRemoveItemLinkId(appID),'">',_tx("R\u00fcckg\u00e4ngig"),'</a></div><div>',_tx("Lesezeichen entfernt"),'</div></div>'].join('');return['<li id="',this._getApplicationMenuItemId(appID),'"><div id="',this._getApplicationMenuLinkContainerId(appID),'">',removeBookmarkButtonStr,this._renderApplicationMenuItem(appID),'</div>',undoRemoveStr,'</li>',].join('');},_renderAppMenuDivider:function(dividerText){return['<div class="application_menu_divider">',dividerText||'','</div>'].join('');},_renderApplicationMenuItem:function(appID){var appInfo=this._getAppInfo(appID);var isFacebookURI=URI(appInfo.href||'').isFacebookURI();var markupArr=['<a id="',this._getApplicationMenuLinkId(appID),'"',isFacebookURI?'':' target="_blank"',' href="',appInfo.href,'" class="item">','<div class="item">',appInfo.new_icon_img,'</div>',htmlize(appInfo.name),'</a>'];return markupArr.join('');},_getApplicationMenuItemId:function(appID){return'application_menu_'+appID;},_getApplicationMenuLinkContainerId:function(appID){return'application_menu_link_container_'+appID;},_getApplicationMenuLinkId:function(appID){return'application_menu_link_'+appID;},render:function(){this._init();return this;},toggleTab:function(){if(!this.menuOpen){this._openTab();}else{this._closeTab();}},_openTab:function(){if(this.menuOpen){return;}
if(!this.menuLoaded){this._renderApplicationMenu();this._initApplicationMenu.bind(this).defer();this.menuLoaded=true;}
presence.openTab(this.menuWrapperID,this.applicationTabID,this.applicationMenuContentID);this.menuOpen=true;if(this.logTabOpen){AsyncRequest.pingURI('/ajax/abtest_multi_async.php',{test_names:['PLATFORM_APPDOCK_APPBUTTON','APPS_MENU_TEST'],actions:['APPLICATIONS_MENU_OPEN']});}},_closeTab:function(){presence.toggleTab(this.menuWrapperID,this.applicationTabID,this.applicationMenuContentID);this.menuOpen=false;},_initApplicationMenu:function(){this.sortableRoot=$('application_menu_root');this.sortableGroup=new SortableGroup();var source=ApplicationDock.SaveBookmarksSource.APPLICATION_MENU;this.sortableGroup.setOrderChangeHandler(this._saveBookmarksOrder.bind(this,source));var sortableGroup=this.sortableGroup;for(var i=0;i<this.sortedBookmarks.length;i++){var appID=this.sortedBookmarks[i];if(i==ApplicationDock.NUM_SHOWN){this._initExtendedApplicationMenuSortables();sortableGroup=this.extendedSortableGroup;}
this._addApplicationMenuSortable(appID,sortableGroup);this._initEventHandlers(appID);}
if(this.recentApps&&count(this.recentApps)>0){this.recentSortableRoot=$('application_menu_recent_apps');this.recentSortableGroup=new SortableGroup();this.recentSortableGroup.setDroppable(false);this.sortableGroup.link(this.recentSortableGroup);for(var appID in this.recentApps){this._addApplicationMenuSortable(appID,this.recentSortableGroup);}}},_initEventHandlers:function(appID){var menuLinkID=this._getApplicationMenuLinkId(appID);$(menuLinkID).listen('click',this._menuClick.bind(this,appID,menuLinkID));var item=$(this._getApplicationMenuItemId(appID));item.listen('mouseover',CSS.addClass.bind(CSS,item,'hover'));item.listen('mouseout',CSS.removeClass.bind(CSS,item,'hover'));this._registerRemoveItemHandler(appID,this._getAppMenuRemoveItemId(appID),false);this._registerRemoveItemHandler(appID,this._getAppMenuUndoRemoveItemLinkId(appID),true);},_registerRemoveItemHandler:function(appID,elemID,setting){$(elemID).listen('click',(function(e){this._setBookmarked(appID,setting);return $E(e).kill();}).bind(this));},_setBookmarked:function(appID,setting){this.suppressReset=true;var sortableGroup;var item=ge(this._getApplicationMenuItemId(appID));if(item.parentNode==this.sortableRoot){sortableGroup=this.sortableGroup;}else{sortableGroup=this.extendedSortableGroup;}
if(setting){this._addApplicationMenuSortable(appID,sortableGroup);var source=ApplicationDock.SaveBookmarksSource.APPLICATION_MENU;this._saveBookmarksOrder.bind(this,source).defer();delete this.removedBookmarks[appID];}else{if(!this.removedBookmarks[appID]){this.removedBookmarks[appID]=this.bookmarks[appID];}
sortableGroup.removeSortable(appID);this._removeBookmark(appID);}
this._animateSetBookmarked(appID,setting);},_removeBookmark:function(appID){new AsyncRequest().setURI('/ajax/edit_app_settings.php').setData({'bookmark':1,'bookmarked':false,'app_id':appID}).setHandler(this._removeBookmarkHandler.bind(this,appID)).send();},_removeBookmarkHandler:function(appID){this.sortedBookmarks.remove(appID);this._resetIconGarden();},_animateSetBookmarked:function(appID,setting){var itemElem=ge(this._getApplicationMenuLinkContainerId(appID));var undoElem=ge(this._getAppMenuUndoRemoveItemId(appID));var hiddenElem,shownElem;if(!setting){hiddenElem=itemElem;shownElem=undoElem;}else{hiddenElem=undoElem;shownElem=itemElem;}
hide(hiddenElem);animation(shownElem).show().from('opacity',0).to('opacity',1).duration(ApplicationDock.ANIM_DURATION).go();if(!setting){this.undoTimeouts[appID]=(function(){var item=ge(this._getApplicationMenuItemId(appID));if(item){animation(item).to('height',0).duration(ApplicationDock.ANIM_DURATION).hide().ondone(this._onsortableLinkJump.bind(this,null)).go();}}).bind(this).defer(ApplicationDock.UNDO_ANIM_HIDE_DELAY);}else{clearTimeout(this.undoTimeouts[appID]);delete this.undoTimeouts[appID];}},_menuClick:function(appID,menuLinkID){if(ApplicationDock.presenceWidthTest){AsyncRequest.pingURI('/ajax/abtest_async.php',{test_name:'APP_DOCK_TEST',action:'USED_APP_MENU'});}
var appInfo=this._getAppInfo(appID);var logAction=appInfo.logAction;if(logAction){AsyncRequest.pingURI('/ajax/abtest_async.php',{test_name:'APPS_MENU_TEST',action:logAction});}},_getAppInfo:function(appID){return this.bookmarks[appID]||this.recentApps[appID]||this.removedBookmarks[appID];},_initExtendedApplicationMenuSortables:function(){this.extendedSortableGroup=new SortableGroup();this.extendedSortableRoot=$('application_menu_extended_root');this.sortableGroup.link(this.extendedSortableGroup);this.sortableGroup.setLinkJumpHandler(this._onsortableLinkJump.bind(this));var source=ApplicationDock.SaveBookmarksSource.APPLICATION_MENU;this.extendedSortableGroup.setOrderChangeHandler(this._saveBookmarksOrder.bind(this,source));},_addApplicationMenuSortable:function(appID,sortableGroup){var obj=$(this._getApplicationMenuItemId(appID));var handle=$(this._getApplicationMenuLinkId(appID));sortableGroup.addSortable(appID,obj,handle);},_resetApplicationMenu:function(){if(!this.menuLoaded){return;}
this.sortableGroup.destroy();if(this.extendedSortableGroup){this.extendedSortableGroup.destroy();}
if(this.recentSortableGroup){this.recentSortableGroup.destroy();}
this._renderApplicationMenu();this._initApplicationMenu.bind(this).defer();},_onsortableLinkJump:function(key){var order=this.sortableGroup.getOrder(),migrateKey=null;if(order.length>ApplicationDock.NUM_SHOWN){for(var i=order.length-1;i>=0;i--){if(order[i]!=key){migrateKey=order[i];break;}}
DOM.prependContent(this.extendedSortableRoot,$(this._getApplicationMenuItemId(migrateKey)));this.extendedSortableGroup.migrateLinkedSortable(migrateKey);}else if(order.length<ApplicationDock.NUM_SHOWN){order=this.extendedSortableGroup.getOrder();for(var i=0;i<order.length;i++){if(order[i]!=key){migrateKey=order[i];break;}}
DOM.appendContent(this.sortableRoot,$(this._getApplicationMenuItemId(migrateKey)));this.sortableGroup.migrateLinkedSortable(migrateKey);}
var order=this.recentSortableGroup.getOrder();if(order.length<this.sortedRecentApps.length){this.recentAppBookmarked=key;}else if(this.recentAppBookmarked){delete this.recentAppBookmarked;}},_saveBookmarksOrder:function(source){this._processNewBookmark();var order=this._getOrder(source);new AsyncRequest().setURI('/ajax/edit_app_settings.php').setData({reorder_bookmarks:1,app_ids:order}).setHandler(this._saveBookmarksHandler.bind(this,order,source)).send();},_processNewBookmark:function(){if(this.recentAppBookmarked){var appID=this.recentAppBookmarked;this.sortedRecentApps.remove(appID);this._initEventHandlers(appID);this.bookmarks[appID]=this.recentApps[appID];delete this.recentApps[appID];delete this.recentAppBookmarked;if(!this.sortedRecentApps.length){(function(){animation($('application_menu_recent_apps_container')).to('height',0).to('opacity',0).duration(ApplicationDock.ANIM_DURATION).hide().go()}).defer(ApplicationDock.RECENT_APPS_ANIM_HIDE_DELAY);}}},_getOrder:function(source){if(source==ApplicationDock.SaveBookmarksSource.APPLICATION_MENU){order=this.sortableGroup.getOrder();}else{order=this.iconGardenSortableGroup.getOrder();if(source==ApplicationDock.SaveBookmarksSource.BOOKMARK_CURRENT_APP){order.push(this._getAppShaftedByBookmarkableApp());}}
if(this.extendedSortableGroup){order=order.concat(this.extendedSortableGroup.getOrder());}else if(!this.menuLoaded&&this.sortedBookmarks.length>ApplicationDock.NUM_SHOWN){order=order.concat(this.sortedBookmarks.slice(ApplicationDock.NUM_SHOWN));}
order=unique(order);return order;},_saveBookmarksHandler:function(appIDs,source){this._updateSortedList(appIDs);switch(source){case ApplicationDock.SaveBookmarksSource.APPLICATION_MENU:this._resetIconGarden();break;case ApplicationDock.SaveBookmarksSource.ICON_GARDEN:case ApplicationDock.SaveBookmarksSource.BOOKMARK_CURRENT_APP:this._resetApplicationMenu();if(this.lastBookmarkedApp){this._openTab();var menuItem=$(this._getApplicationMenuItemId(this.lastBookmarkedApp));var gardenItem=$(this._getApplicationIconGardenItemId(this.lastBookmarkedApp));animation(menuItem).from('backgroundColor','#FFF9B7').to('backgroundColor','#FFFFFF').ease(animation.ease.begin).duration(4000).ondone(CSS.setStyle.bind(this,menuItem,'backgroundColor','')).go();animation(gardenItem).from('backgroundColor','#FFF9B7').to('backgroundColor','#EAEAEA').ease(animation.ease.begin).duration(4000).ondone(CSS.setStyle.bind(this,gardenItem,'backgroundColor','')).go();}
break;}},_updateSortedList:function(appIDs){this.sortedBookmarks=[];for(var i=0;i<appIDs.length;i++){this.sortedBookmarks.push(appIDs[i]);}},_getIconGardenElem:function(appID){var appInfo=this._getAppInfo(appID);var link=$N('a',{id:this._getApplicationIconGardenLinkId(appID),href:appInfo.href},HTML(appInfo.new_icon_img+'<div class="titletip">'+'<strong>'+htmlize(appInfo.name)+'</strong>'+'</div>'));link.listen('mouseover',this.mouseOverIconGarden.bind(this,appID));link.listen('mouseout',this.mouseOutIconGarden.bind(this,appID));if(!URI(appInfo.href||'').isFacebookURI()){link.setAttribute('target','_blank');}
return $N('div',{id:this._getApplicationIconGardenItemId(appID),className:'icon_garden_elem'},link);},mouseOverIconGarden:function(appID){if(shown(this.menuWrapper)){return;}
if(!this.currentIconGardenDraggableKey||this.currentIconGardenDraggableKey!=appID){CSS.addClass(this._getApplicationIconGardenItemId(appID),'hover');}},mouseOutIconGarden:function(appID){CSS.removeClass(this._getApplicationIconGardenItemId(appID),'hover');},_grabCallback:function(appID){this.currentIconGardenDraggableKey=appID;},_dropCallback:function(appID){this.currentIconGardenDraggableKey=null;},_getApplicationIconGardenItemId:function(appID){return'application_icon_garden_'+appID;},_getApplicationIconGardenLinkId:function(appID){return'application_icon_garden_link_'+appID;},_getAppMenuRemoveItemId:function(appID){return'application_remove_item_'+appID;},_getAppMenuUndoRemoveItemId:function(appID){return'application_undo_remove_item_'+appID;},_getAppMenuUndoRemoveItemLinkId:function(appID){return'application_undo_remove_item_link_'+appID;},_initIconGardenSortables:function(){this.iconGardenSortableGroup=new SortableGroup();var source=ApplicationDock.SaveBookmarksSource.ICON_GARDEN;this.iconGardenSortableGroup.setOrderChangeHandler(this._saveBookmarksOrder.bind(this,source));for(var i=0,length=Math.min(this.sortedBookmarks.length,ApplicationDock.NUM_SHOWN);i<length;i++){var appID=this.sortedBookmarks[i];this._addIconGardenSortable(appID);}},_addIconGardenSortable:function(appID){var obj=$(this._getApplicationIconGardenItemId(appID));var handle=$(this._getApplicationIconGardenLinkId(appID));this.iconGardenSortableGroup.addSortable(appID,obj,handle).setGrabCallback(this._grabCallback.bind(this)).setDropCallback(this._dropCallback.bind(this));if(ApplicationDock.presenceWidthTest){handle.listen('click',function(){AsyncRequest.pingURI('/ajax/abtest_async.php',{action:'USED_APP_DOCK',test_name:'APP_DOCK_TEST'});});}
if(this.logBMClick||this.logTabOpen){var actions=['APPLICATIONS_GARDEN_CLICK'];var test_names=['PLATFORM_APPDOCK_APPBUTTON','PLATFORM_BOOKMARK_BUTTON_LOCATION','APPS_MENU_TEST'];handle.listen('click',AsyncRequest.pingURI.bind(AsyncRequest,'/ajax/abtest_multi_async.php',{'actions':actions,'test_names':test_names}));}},_resetIconGarden:function(){this.iconGardenSortableGroup.destroy();DOM.empty(this.iconGardenRoot);for(var i=0,length=Math.min(this.sortedBookmarks.length,ApplicationDock.NUM_SHOWN);i<length;i++){var appID=this.sortedBookmarks[i];DOM.appendContent(this.iconGardenRoot,this._getIconGardenElem(appID));}
this._initIconGardenSortables.bind(this).defer();},_renderBookmarkableApp:function(){DOM.setContent(this.bookmarkableAppContainer,HTML(this._renderBookmarkableAppContent()));var link=DOM.find(this.bookmarkableAppContainer,'a');link.listen('click',this.bookmarkCurrentApp.bind(this,false));if(this.topBookmark&&ge('sidebar_ads')){this.bookmarkTopContainer=$N('div',{'className':'bookmark_top_container'});DOM.setContent(this.bookmarkTopContainer,HTML(this.topBookmark));var bookmarkTop=DOM.find(this.bookmarkTopContainer,'div.bookmark_dummy');DOM.insertBefore(this.bookmarkTopContainer,$('sidebar_ads'));DOM.replace(bookmarkTop,HTML(this._renderBookmarkableAppContent('top')));var link=DOM.find(this.bookmarkTopContainer,'a');link.listen('click',this.bookmarkCurrentApp.bind(this,true));}
CSS.removeClass(this.bookmarkableAppWrapper,'hidden_elem');},_hideBookmarkableApp:function(){CSS.addClass(this.bookmarkableAppWrapper,'hidden_elem');if(this.bookmarkTopContainer){hide(this.bookmarkTopContainer);}},_renderBookmarkableAppContent:function(){var appInfo=values(this.bookmarkableApp)[0];var markupArr=['<a',' onmouseover="applicationDock.mouseOverBookmarkableApp();return false;"',' onmouseout="applicationDock.mouseOutBookmarkableApp();return false;"',' href="#">','<span class="bookmark_app_plus"></span>',appInfo.new_icon_img,'<span class="bookmark_text">',_tx("Lesezeichen f\u00fcr"),' ',htmlize(appInfo.name),'</span>','</a>'];return markupArr.join('');},mouseOverBookmarkableApp:function(){CSS.addClass(this.bookmarkableAppWrapper,'hover');},mouseOutBookmarkableApp:function(){CSS.removeClass(this.bookmarkableAppWrapper,'hover');},setBookmarkableApp:function(bookmarkableApp){this.bookmarkableApp=bookmarkableApp;if(is_empty(bookmarkableApp)){this._hideBookmarkableApp();}else{this._renderBookmarkableApp();}
return this;},setTopBookmarkWrap:function(topBookmarkWrap){this.topBookmark=topBookmarkWrap;return this;},setADLogging:function(logState){this.logTabOpen=logState;return this;},setBMLogging:function(logState){this.logBMClick=logState;return this;},_getAppShaftedByBookmarkableApp:function(){return this.sortedBookmarks[ApplicationDock.NUM_SHOWN-1];},bookmarkCurrentApp:function(fromTop){var appID=keys(this.bookmarkableApp)[0];var existingApp=this.bookmarks[appID];this.bookmarks[appID]=this.bookmarkableApp[appID];var div=this._getIconGardenElem(appID);if(this.sortedBookmarks.length>=ApplicationDock.NUM_SHOWN){this.iconGardenRoot.replaceChild(div,this.iconGardenRoot.lastChild);this.iconGardenSortableGroup.removeSortable(this._getAppShaftedByBookmarkableApp());}else{this.iconGardenRoot.appendChild(div);}
this._addIconGardenSortable.bind(this,appID).defer();this._hideBookmarkableApp();this.lastBookmarkedApp=appID;if(this.logBMClick){var result={test_name:'PLATFORM_BOOKMARK_BUTTON_LOCATION'};result.action=fromTop?'PLATFORM_BOOKMARK_TOP':'PLATFORM_BOOKMARK_BOTTOM';AsyncRequest.pingURI('/ajax/abtest_async.php',result);}
this._saveBookmarksOrder.bind(this,ApplicationDock.SaveBookmarksSource.BOOKMARK_CURRENT_APP).defer();},_handleMsg:function(channel,obj){if(obj.type=='bookmarks'){var newSortedList=this._getSortedList(obj.bookmarks);if(!are_equal(this.sortedBookmarks,newSortedList)){this.bookmarks=obj.bookmarks;this.sortedBookmarks=newSortedList;if(!this.suppressReset){this._resetApplicationMenu();this._resetIconGarden();}
this.suppressReset=false;}
var message={sender:this,applications:this.sortedBookmarks};Arbiter.inform(ApplicationDock.BOOKMARKS_CHANGED,message);return true;}
return false;}}

function ScrollArea(scroll_div_id,content_div_id,down_arrow_id,up_arrow_id){if(this===window){Util.error('You\'re doing this wrong.  This is a class and should be '+'with new ScrollArea(...);');return;}
copy_properties(this,{scroll_div:$(scroll_div_id),content_div:$(content_div_id),down_arrow:$(down_arrow_id),up_arrow:$(up_arrow_id)});copy_properties(this,{auto_move_interval:null,allow_page_scroll:true,max_height:false});this.down_arrow.onmouseout=bind(this,'_endAutoMove',ScrollArea.DOWN);this.down_arrow.onmouseover=bind(this,'_startAutoMove',ScrollArea.HOVER_INTERVAL,ScrollArea.DOWN);this.up_arrow.onmouseout=bind(this,'_endAutoMove',ScrollArea.UP);this.up_arrow.onmouseover=bind(this,'_startAutoMove',ScrollArea.HOVER_INTERVAL,ScrollArea.UP);this.scroll_div.onmouseover=bind(this,'_disallowPageScroll');this.scroll_div.onmouseout=bind(this,'_allowPageScroll');ScrollWheel.addHandler(this._pageScrollResponse.bind(this));ScrollArea.instances.push(this);this.update();}
copy_properties(ScrollArea,{HOVER_INTERVAL:50,MOUSE_WHEEL_MULTIPLE:-8,UP:1,DOWN:2,instances:[],build:function(id,content,max_height){var content_id=id+'_content';var scroll_id=id+'_scroll';var down_id=id+'_down';var up_id=id+'_up';var content_node=$N('div',{'className':'scroll_area_content','id':content_id},content);var down_node=$N('a',{'className':'arrow down_arrow','id':down_id},HTML('<span>&nbsp;</span>'));down_node.listen('click',Event.kill);var up_node=$N('a',{'className':'arrow up_arrow','id':up_id},HTML('<span>&nbsp;</span>'));up_node.listen('click',Event.kill);var scroller_node=$N('div',{'className':'scroll_area_scroll','id':scroll_id});scroller_node.appendChild(content_node);scroller_node.appendChild(down_node);scroller_node.appendChild(up_node);var wrapper_node=$N('div',{'id':id},scroller_node);(function(scroll_id,content_id,down_id,up_id,max_height){new ScrollArea(scroll_id,content_id,down_id,up_id).setMaxHeight(max_height);}).bind(this,scroll_id,content_id,down_id,up_id,max_height).defer();return wrapper_node;},getInnerInstance:function(element){for(var i=0;i<ScrollArea.instances.length;i++){if(DOM.contains(element,ScrollArea.instances[i].scroll_div)){return ScrollArea.instances[i];}}
return false;}});copy_properties(ScrollArea.prototype,{_startAutoMove:function(interval_time,direction){if(direction==ScrollArea.UP){this.up_arrow.addClass('arrow_hover');this.up_arrow.addClass('up_arrow_hover');}else{this.down_arrow.addClass('arrow_hover');this.down_arrow.addClass('down_arrow_hover');}
var move_fn=bind(this,this.moveBy,(direction==ScrollArea.UP)?-11:11);this.auto_move_interval=setInterval(move_fn,interval_time);},_endAutoMove:function(direction){if(direction==ScrollArea.UP){this.up_arrow.removeClass('arrow_hover');this.up_arrow.removeClass('up_arrow_hover');}else{this.down_arrow.removeClass('arrow_hover');this.down_arrow.removeClass('down_arrow_hover')}
clearInterval(this.auto_move_interval);},_disallowPageScroll:function(){this.allow_page_scroll=false;},_allowPageScroll:function(){this.allow_page_scroll=true;},_pageScrollResponse:function(delta){if(!this.allow_page_scroll){var round_fn=delta>0?Math.ceil:Math.floor;this.moveBy(ScrollArea.MOUSE_WHEEL_MULTIPLE*round_fn(delta));}
return this.allow_page_scroll;},_scrollTop:function(){return(-1*parseInt(this.content_div.style.marginTop))||0;},_setScrollTop:function(new_top){new_top=this._enforceRange(new_top);this.content_div.style.marginTop=-new_top+'px';},_isAtTop:function(){return this._scrollTop()==0;},_isAtBottom:function(){var scrollTop=this._scrollTop();return scrollTop==this._enforceRange(scrollTop+1);},_enforceRange:function(test_val){var new_top;var hidden_content_height=Vector2.getElementDimensions(this.content_div).y-
Vector2.getElementDimensions(this.scroll_div).y;if(test_val<0){new_top=0;}else if(test_val>hidden_content_height){new_top=hidden_content_height;}else{new_top=test_val;}
return new_top;},setMaxHeight:function(new_max){this.max_height=new_max;return this;},moveBy:function(distance){var current_top=this._scrollTop();var new_top=current_top+distance;this._setScrollTop(new_top);this.update();return this;},moveTo:function(destination){this._setScrollTop(destination);this.update();return this;},update:function(){var content_size=Vector2.getElementDimensions(this.content_div);var scroll_size=Vector2.getElementDimensions(this.scroll_div);if(content_size.y){if(content_size.y>=this.max_height&&scroll_size.y!=this.max_height){this.scroll_div.style.height=this.max_height+'px';}else if(content_size.y<this.max_height&&scroll_size.y!=content_size.y){this.scroll_div.style.height=content_size.y+'px';}}
this._isAtTop()?CSS.addClass(this.scroll_div,'at_top'):CSS.removeClass(this.scroll_div,'at_top');this._isAtBottom()?CSS.addClass(this.scroll_div,'at_bottom'):CSS.removeClass(this.scroll_div,'at_bottom');return this;}});ScrollWheel=function(){var _listenerAttached=false;var _callbacks=[];var _handle=function(event){var delta=0;event=$E(event);if(event.wheelDelta){delta=event.wheelDelta/120;if(ua.opera()){delta=-delta;}}else if(event.detail){delta=-event.detail/3;}
if(delta){for(var i=0;i<_callbacks.length;i++){if(!_callbacks[i](delta)){Event.kill(event);return;}}}};return{addHandler:function(callback){if(!_listenerAttached){if(window.addEventListener){window.addEventListener('DOMMouseScroll',_handle,false);}
window.onmousewheel=document.onmousewheel=_handle;_listenerAttached=true;}
_callbacks.push(callback);}};}();

function StatusEditor(root,profile_id){this.rootElem=root;this.profile_id=profile_id;this.statusInput=DOM.find(root,'input.status_input');this.placeholder=this.getPlaceholder();this.emptyValue=this.statusInput.value;this.initialValue='';this.location_id=false;this.locationEnabled=false;this._attach();var ix=StatusEditor.instances.push(this)-1;onunloadRegister(function(){delete StatusEditor.instances[ix];});}
StatusEditor.instances=[];StatusEditor.update=function(payload,time,initiator){StatusEditor.instances.forEach(function(editor){if(editor!=initiator){editor._onUpdate(payload,time);}});}
StatusEditor.poll=function(){new AsyncRequest().setURI('/ajax/poll_status.php').setMethod('GET').setReadOnly(true).setOption('bundle',true).setHandler(function(r){var payload=r.getPayload();StatusEditor.update(payload,null);}).send();}
StatusEditor.prototype._onUpdate=bagofholding;StatusEditor.prototype.getPlaceholder=function(){var placeholder=DOM.find(this.rootElem,'input.status_placeholder_input');return placeholder;}
StatusEditor.prototype._attach=function(){this.statusInput.listen('keypress',this.onkeypress.bind(this));this.statusInput.listen('blur',this.onInputBlur.bind(this));this.placeholder.listen('focus',this._onFocused.bind(this));var loc_anchors=DOM.scry(this.rootElem,'a.location_add_button');for(var i=0;i<loc_anchors.length;i++){loc_anchors[i].listen('click',this._onAddLocation.bind(this));show(loc_anchors[i]);}
if(this.locationEnabled){DOM.find(this.rootElem,'a.location_remove_button').listen('click',this._onRemoveLocation.bind(this));}}
StatusEditor.prototype.onkeypress=function(event){switch(event_get_keypress_keycode(event)){case KEYS.ESC:this.statusInput.value=this.emptyValue;this.statusInput.blur();break;case KEYS.RETURN:this.post();return $E(event).kill();}}
StatusEditor.prototype.onInputBlur=function(){var trimmed=trim(this.statusInput.value);if(this.isNonedit(trimmed)){this.reset();}}
StatusEditor.prototype.clear=function(){new AsyncRequest().setURI('/updatestatus.php').setData({'profile_id':this.profile_id,'clear':1}).setHandler(function(){this._onCleared();StatusEditor.update({'markup':''},null,this);}.bind(this)).send();return false;}
StatusEditor.prototype._onCleared=bagofholding;StatusEditor.prototype._onFocused=bagofholding;StatusEditor.prototype._onAddLocation=bagofholding;StatusEditor.prototype._onRemoveLocation=bagofholding;StatusEditor.prototype.setLocationSelector=function(selector){var location_handler=function(loc){if(this.location_id!==false){this.location_id=loc.id;}}.bind(this);this._locationSelector=selector;selector.setLocationHandler(location_handler);this.locationEnabled=true;}
StatusEditor.prototype.startEdit=function(value){this.statusInput.value=value;this.initialValue=value;this.placeholder.focus();}
StatusEditor.prototype.reset=function(){CSS.removeClass(this.rootElem,'placeholder_off');this.placeholder.getControl().setFocused(false);}
StatusEditor.prototype.isNonedit=function(text){return!text||(text==trim(this.emptyValue))||(this.initialValue&&(text==this.initialValue));}
StatusEditor.prototype.post=function(abtest_data,extra_post_params){var text=trim(this.statusInput.value);if(this.isNonedit(text)){return;}
this.statusInput.disabled=true;CSS.addClass(this.rootElem,'disabled');this.statusInput.blur();var data={'profile_id':this.profile_id,'status':text};var page_uri=URI.getRequestURI();if(page_uri.getPath()=='/profile.php'){data['profile']=true;}else if(page_uri.getPath()=='/home.php'||page_uri.getPath()=='/widgets/livefeed.php'){if(window.HomeFeed){var homefeed=HomeFeed.getInstance();if(homefeed){data['home_tab_id']=homefeed.tabId;}}}
if(abtest_data!=undefined&&abtest_data['test_name']&&abtest_data['action']){copy_properties(data,abtest_data);}else{data['test_name']='INLINE_STATUS_EDITOR';data['action']='OTHER_UPDATE';}
if(this.publish_all){data['publish_all']=1;}
if(this.app_id){data['app_id']=this.app_id;}
if(this.location_id){data['location_id']=this.location_id;}
if(extra_post_params){copy_properties(data,extra_post_params);}
new AsyncRequest().setURI('/updatestatus.php').setData(data).setFinallyHandler(function(){this.statusInput.disabled=false;CSS.removeClass(this.rootElem,'disabled');}.bind(this)).setHandler(bind(this,handle_require_email_conf_response,function(r){this.reset();this.initialValue=this.statusInput.value;var payload=r.getPayload();this._onPosted(payload);StatusEditor.update(payload,null,this);}.bind(this),null,null)).send();}
StatusEditor.prototype._onPosted=bagofholding;function HomeStatusEditor(root,profile_id,is_friends){this.parent.construct(this,root,profile_id);if(this.showsStatusBody()){this.statusBody=DOM.find(root,'div.status_body');DOM.find(root,'a.status_clear_link').onclick=this.clear.bind(this);}
this.postButton=DOM.find(root,'input[type="submit"]');this.postButton.listen('click',this.post.shield(this));this.is_friends=is_friends;}
HomeStatusEditor.extend('StatusEditor');HomeStatusEditor.prototype.showsStatusBody=function(){return true;}
HomeStatusEditor.prototype.post=function(){this.statusMessage=this.statusInput.value;var action_message=this.is_friends?'FRIENDS_UPDATE':'HOME_UPDATE';this.parent.post({test_name:'INLINE_STATUS_EDITOR',action:action_message});}
HomeStatusEditor.prototype._onPosted=function(payload){this._onUpdate(payload);}
HomeStatusEditor.prototype._onUpdate=function(payload,time){var status=payload.markup;if(!status){this._onCleared();}
if(this.showsStatusBody()&&status){DOM.find(this.rootElem,'span.status_text').setContent(HTML(status));DOM.find(this.rootElem,'span.status_time').setContent(HTML(time||_tx("gerade eben")));var status_location=DOM.scry(this.rootElem,'span.status_location')[0];if(!payload.location_label){if(status_location){hide(status_location);}}else{if(!status_location){DOM.insertAfter(DOM.find(this.rootElem,'span.status_time'),$N('span',{className:'status_location'},[_tx("nahe {location}",{location:''}),$N('a',{href:payload.location_href,target:'_blank'},payload.location_label)]));}
show(status_location);}
if(CSS.hasClass(this.statusBody,'status_empty')){CSS.removeClass(this.statusBody,'status_empty');animation(this.statusBody).to('height','auto').from('0px').to('opacity',1).from(0).blind().show().duration(300).ease(animation.ease.end).go();}else{animation(this.statusBody).to('opacity',1).from(0).duration(300).go();}}
var homefeed=window.HomeFeed&&HomeFeed.getInstance();if(homefeed){if(payload.feed){var tabId=homefeed.tabId;if(tabId==payload.feed_tab){var container=document.createElement('div');CSS.setClass(container,'just_updated_status');container.style.display='none';DOM.setContent(container,HTML(payload.feed));var newsfeedWrapper=$('newsfeed_wrapper');var topStories=DOM.scry(newsfeedWrapper,'div.tab_top_stories')[0];newsfeedWrapper.prependContent(container);if(topStories&&topStories.firstChild&&CSS.hasClass(topStories.firstChild,'one_liner_cluster')){animation(topStories.firstChild).to('padding-top','0px').duration(300).go();}
animation(container).to('height','auto').from('0px').to('opacity',1).from(0).blind().show().duration(300).ease(animation.ease.end).go();}}
if(payload.top_status_stories&&homefeed.tabId==HomeFeed.TAB_TOP_STORIES){var newsfeedWrapper=$('newsfeed_wrapper');var topStories=DOM.scry(newsfeedWrapper,'div.tab_top_stories')[0];if(topStories&&topStories.firstChild&&CSS.hasClass(topStories.firstChild,'one_liner_cluster')){var old_status_stories=DOM.scry(topStories.firstChild,'div.status_story_wrapper');old_status_stories.forEach(function(story){story.remove();});DOM.prependContent(topStories.firstChild,HTML(payload.top_status_stories));}}}}
HomeStatusEditor.prototype._onCleared=function(){CSS.addClass(this.statusBody,'status_empty');animation(this.statusBody).to('height','0px').to('opacity',0).from(1).blind().hide().duration(300).ease(animation.ease.end).go();}
HomeStatusEditor.prototype._onAddLocation=function(target){CSS.addClass(this.rootElem,'location_composer_shown');var loc=this._locationSelector.getLocation();if(loc){this.location_id=loc.id;}
return false;}
HomeStatusEditor.prototype._onRemoveLocation=function(target){CSS.removeClass(this.rootElem,'location_composer_shown');this.location_id=null;return false;}
function LiveFeedWidgetStatusEditor(root,profile_id){this.parent.construct(this,root,profile_id);this.publish_line=ge('status_publish_all_line');this.publish_line_hover=false;if(this.publish_line){this.publish_line.listen('mouseover',function(){this.publish_line_hover=true;}.bind(this));this.publish_line.listen('mouseout',function(){this.publish_line_hover=false;}.bind(this));}}
LiveFeedWidgetStatusEditor.extend('HomeStatusEditor');LiveFeedWidgetStatusEditor.prototype.showsStatusBody=function(){return false;}
LiveFeedWidgetStatusEditor.prototype.setApplicationId=function(app_id){this.app_id=app_id;}
LiveFeedWidgetStatusEditor.prototype.setPublishAll=function(status){this.publish_all=status;}
LiveFeedWidgetStatusEditor.prototype._onFocused=function(value){this.parent._onFocused(value);if(this.publish_line){this.publish_line.addClass('show_publish_checkbox');}}
LiveFeedWidgetStatusEditor.prototype.reset=function(value){if(this.publish_line_hover){return;}
this.parent.reset();if(this.publish_line){this.publish_line.removeClass('show_publish_checkbox');}}
LiveFeedWidgetStatusEditor.prototype.post=function(abtest_data){if(ge('status_publish_all')){this.setPublishAll(ge('status_publish_all').checked);}
var homefeed=HomeFeed.getInstance();if(homefeed){homefeed.temporarilySuspendCdn(1);var tabId=homefeed.getTab();if(tabId==HomeFeed.TAB_LIVEWIDGET_EVERYONE&&!this.publish_all){this.showNotification();}}
this.parent.post();}
LiveFeedWidgetStatusEditor.prototype.showNotification=function(){var notificationLine=ge('status_notification_line');if(notificationLine){animation(notificationLine).to('opacity',1).from('opacity',0).show().duration(1000).checkpoint().duration(3000).checkpoint().to('opacity',0).from('opacity',1).duration(1000).hide().go();}}
LiveFeedWidgetStatusEditor.savePublishAllSetting=function(widgetAppId){if(ge('status_publish_all')){var publishAll=ge('status_publish_all').checked;new AsyncSignal('/ajax/live_feed_settings.php',{'publish_all':publishAll,'widget_app_id':widgetAppId}).send();}}
function ChatStatusEditor(root,profile_id,isEmpty){this.parent.construct(this,root,profile_id);this.statusBody=DOM.find(root,'div.chat_status_body');this.isEmpty=isEmpty;};ChatStatusEditor.prototype._attach=function(){this.parent._attach();DOM.find(this.rootElem,'a.status_clear_link').onclick=this.clear.bind(this);var edit_links=DOM.scry(this.rootElem,'a.status_edit_link');for(var i=0;i<edit_links.length;i++){edit_links[i].onclick=this.startEdit.bind(this,this.emptyValue);}}
ChatStatusEditor.prototype.reset=function(){this.parent.reset();CSS.removeClass(this.rootElem,'edit');if(this.isEmpty){CSS.addClass(this.statusBody,'status_empty');}else{CSS.removeClass(this.statusBody,'status_empty');}}
ChatStatusEditor.prototype.post=function(){this.statusMessage=this.statusInput.value;this.parent.post({test_name:'INLINE_STATUS_EDITOR',action:'CHAT_UPDATE'},{'chat':1});}
ChatStatusEditor.prototype._onUpdate=function(payload,time){var status=payload.markup;if(status){this.isEmpty=false;$('chat_su_text').setContent(HTML(status));$('chat_su_time').setContent(HTML(time||_tx("gerade eben")));}else{this.isEmpty=true;$('chat_su_text').setContent('');$('chat_su_time').setContent('');}
this.statusInput.value=this.emptyValue;this.reset();}
ChatStatusEditor.prototype._onCleared=function(){this._onUpdate({markup:''});}
ChatStatusEditor.prototype.startEdit=function(value){CSS.addClass(this.rootElem,'edit');this.parent.startEdit(value);}
ChatStatusEditor.prototype._onPosted=function(payload){this._onUpdate(payload);}
ChatStatusEditor.extend('StatusEditor');

function Tabset(id,selectedId){if(!Tabset.instances){Tabset.instances={};}
Tabset.instances[id]=this;onunloadRegister(function(){Tabset.instances={}});this.id=id;this.selectedId=selectedId;}
Tabset.getInstance=function(id){if(Tabset.instances&&Tabset.instances[id]){return Tabset.instances[id];}
return null;}
Tabset.prototype.getFullTabId=function(tabId){return this.id+'_'+tabId;}
Tabset.prototype.selectTab=function(tabId,func,beforeClickFunc){if(beforeClickFunc&&!beforeClickFunc()){return false;}
if(this.selectedId){this.lastSelected=this.selectedId;CSS.removeClass(ge(this.selectedId),'Tabset_selected');}
this.selectedId=tabId;CSS.addClass(ge(this.selectedId),'Tabset_selected');if(func){return func();}
return true;}
Tabset.prototype.unselect=function(){if(this.selectedId){CSS.removeClass($(this.selectedId),'Tabset_selected');}}
Tabset.prototype.hasTabElem=function(id){return ge(this.id+'_'+id);}
Tabset.prototype.getTabElem=function(id){return $(this.id+'_'+id);}

function UserHistory(userid){var current_time=(new Date()).getTime();new AsyncRequest().setMethod('GET').setReadOnly(true).setURI('/ajax/browse_history.php').setData({'u':userid}).setErrorHandler(function(){}).setTransportErrorHandler(function(){}).setHandler(function(response){var dt=(new Date()).getTime()-current_time;userhistory_log_response({'dt':dt});this.entries=response.getPayload().entries;}.bind(this)).send();}
function userhistory_log_response(data){data['evt']='uh';new AsyncSignal('/ajax/typeahead_log.php',data).send();}

if (window.Bootloader) { Bootloader.done(["js\/242mhaywwfpc84ww.pkg.js"]); }
