
var Friends=SingletonClass.create({initialize:function(){this._friendsList=null;this._isMyList=false;this._currentPage=1;this._stackbox=Stackbox.get();var bits=window.location.href.split('/');this._avatarUID=bits.length==5?bits[4]:null;document.observe('dom:loaded',this._injectDOM.bindAsEventListener(this));},populateFriendsList:function(offset){if(!this._onFriendsPage)return;if(!offset||offset<0)offset=0;var index=offset;var experienceLvl,imageLink,nameLink,lairLink,victoryLink,friendsLink;for(var i=0;i<this._numFriendsPerPage;i++)
{index=offset+i;if(index<this._friendsList.length){$('friendUID'+i).value=this._friendsList[index].UID;$('experienceLvl'+i).setStyle({backgroundImage:'url(/images/experienceLvl/'+this._friendsList[index].experienceIcon+')'});$('experienceLvl'+i).update(this._friendsList[index].experienceLevel);nameLink="<a href=\""+this._friendsList[index].lair+"\" class=\"avatarNameLink\">"+this._friendsList[index].name+"</a>";$('avatarNameDisplay'+i).update(nameLink);if(this._friendsList[index].UID==$F($('friendsListForm')['UID'])||(!this._isMyList&&this._friendsList[index].friend==1))
{$('removeFriendButton'+i).hide();$('addFriendButton'+i).hide();}
else if(this._friendsList[index].friend==1)
{$('removeFriendButton'+i).show();$('addFriendButton'+i).hide();}
else{$('removeFriendButton'+i).hide();$('addFriendButton'+i).show();}
$('viewLair'+i).select('a')[0].href=this._friendsList[index].lair;$('viewVictories'+i).select('a')[0].href=this._friendsList[index].victories;$('viewFriends'+i).select('a')[0].href=this._friendsList[index].friendsList;imageLink="<a href=\""+this._friendsList[index].lair+"\" ><img src=\""+this._friendsList[index].image+"\" alt=\""+this._friendsList[index].name+"\" /></a>";$('avatarImage'+i).update(imageLink);$('friendInfo'+i).show();}
else{$('friendInfo'+i).hide();$('friendUID'+i).value='';$('avatarNameDisplay'+i).update('');$('experienceLvl'+i).update('');$('viewLair'+i).writeAttribute('path','');$('viewVictories'+i).writeAttribute('path','');$('viewFriends'+i).writeAttribute('path','');$('avatarImage'+i).update('');}}
this._displayPageSelector(offset);},clearSearch:function(){$('friendsListForm')['avatarName1'].selectedIndex=0;$('friendsListForm')['avatarName2'].selectedIndex=0;$('friendsListForm')['avatarName3'].selectedIndex=0;if($('friendsListForm')['globalSearch']){$('friendsListForm')['globalSearch'].checked=false;}
this.searchFriends();},searchFriends:function(){$('noFriendFound').hide();if($F($('friendsListForm')['avatarName1'])==0&&$F($('friendsListForm')['avatarName2'])==0&&$F($('friendsListForm')['avatarName3'])==0&&$('friendsListForm')['globalSearch']&&$F($('friendsListForm')['globalSearch'])==1)
{return;}
var subAction=$('friendsListForm')['globalSearch']&&$F($('friendsListForm')['globalSearch'])==1?'searchAll':'search';var avatarName1=$('friendsListForm')['avatarName1'].options[$('friendsListForm')['avatarName1'].selectedIndex].text;var avatarName2=$('friendsListForm')['avatarName2'].options[$('friendsListForm')['avatarName2'].selectedIndex].text;var avatarName3=$('friendsListForm')['avatarName3'].options[$('friendsListForm')['avatarName3'].selectedIndex].text;var searchString=avatarName3.substring(0,1)==','?avatarName1+' '+avatarName2+avatarName3:avatarName1+' '+avatarName2+' '+avatarName3;new Ajax.Request('/index.php',{method:'post',parameters:{actionType:'ajax',action:'friends',subAction:subAction,UID:this._avatarUID,search:avatarName1+' '+avatarName2+' '+avatarName3},onSuccess:this.searchFriends_onSuccess.bindAsEventListener(this)});return true;},searchFriends_onSuccess:function(transport){var response=transport.responseText.evalJSON();switch(response.status){case'success':this._friendsList=response.friends;this._isMyList=response.isMyList;this._currentPage=1;if(this._friendsList.length<=0){$('noFriendFound').show();}
else{$('noFriendFound').hide();}
this.populateFriendsList(0);break;case'error':this._stackbox.popContent();var failBtn="<div class='check' onclick='Stackbox.get().deactivate()'></div>";this._stackbox.activate({content:"<div class='alertBox'><p>"+response.msg+"</p>"+failBtn+"</div>",overlay_callback:this._stackbox.deactivate.bindAsEventListener(this._stackbox)});break;case'redirect':window.location.href=response.redirect;break;}},confirmAddFriend:function(index){friendUID=$F($('friendsListForm')['friendUID'+index]);avatarName=$('avatarNameDisplay'+index).select('a.avatarNameLink')[0].innerHTML;new Ajax.Request('/index.php',{method:'post',parameters:{actionType:'ajax',action:'friends',subAction:'confirmAdd',UID:friendUID,avatarName:avatarName},onSuccess:this._confirm_onSuccess.bindAsEventListener(this)});return true;},confirmAddFriendByUID:function(friendUID,avatarName){new Ajax.Request('/index.php',{method:'post',parameters:{actionType:'ajax',action:'friends',subAction:'confirmAdd',redirect:window.location.href,UID:friendUID,avatarName:avatarName},onSuccess:this._confirm_onSuccess.bindAsEventListener(this)});return true;},addFriend:function(friendUID){new Ajax.Request('/index.php',{method:'post',parameters:{actionType:'ajax',action:'friends',subAction:'add',UID:friendUID},onSuccess:this.addFriend_onSuccess.bindAsEventListener(this)});return true;},addFriend_onSuccess:function(transport){var response=transport.responseText.evalJSON();switch(response.status){case'success':this._stackbox.deactivate();for(var i=0;i<this._numFriendsPerPage;i++)
{if($('friendUID'+i)&&$F($('friendUID'+i))==response.UID)
{if(!this._isMyList)
{$('addFriendButton'+i).hide();$('removeFriendButton'+i).hide();}
else{$('addFriendButton'+i).hide();$('removeFriendButton'+i).show();}
break;}}
break;case'error':this._stackbox.popContent();var failBtn="<div class='check' onclick='Stackbox.get().deactivate()'></div>";this._stackbox.activate({content:"<div class='alertBox'><p>"+response.msg+"</p>"+failBtn+"</div>",overlay_callback:this._stackbox.deactivate.bindAsEventListener(this._stackbox)});break;case'redirect':window.location.href=response.redirect;break;}},confirmRemoveFriend:function(index){friendUID=$F($('friendsListForm')['friendUID'+index]);avatarName=$('avatarNameDisplay'+index).select('a.avatarNameLink')[0].innerHTML;new Ajax.Request('/index.php',{method:'post',parameters:{actionType:'ajax',action:'friends',subAction:'confirmRemove',UID:friendUID,avatarName:avatarName},onSuccess:this._confirm_onSuccess.bindAsEventListener(this)});return true;},removeFriend:function(index){new Ajax.Request('/index.php',{method:'post',parameters:{actionType:'ajax',action:'friends',subAction:'remove',UID:friendUID},onSuccess:this.removeFriend_onSuccess.bindAsEventListener(this)});return true;},removeFriend_onSuccess:function(transport){var response=transport.responseText.evalJSON();switch(response.status){case'success':this._stackbox.deactivate();if(this._isMyList)
{var firstIndexOnPage=(this._currentPage-1)*this._numFriendsPerPage;var lastIndexOnPage=firstIndexOnPage+this._numFriendsPerPage-1<this._friendsList.length?firstIndexOnPage+this._numFriendsPerPage-1:this._friendsList.length-1;for(var i=firstIndexOnPage;i<=lastIndexOnPage;i++)
{if(this._friendsList[i]['UID']==response.UID)
{this._friendsList.splice(i,1);break;}}
var pageToDisplay=(this._currentPage-1)*this._numFriendsPerPage<this._friendsList.length?(this._currentPage-1)*this._numFriendsPerPage:(this._currentPage-2)*this._numFriendsPerPage;this.populateFriendsList(pageToDisplay);}
else{for(var i=0;i<this._numFriendsPerPage;i++)
{if($('friendUID'+i)&&$F($('friendUID'+i))==response.UID)
{$('removeFriendButton'+i).hide();$('addFriendButton'+i).show();break;}}}
break;case'error':this._stackbox.popContent();var failBtn="<div class='check' onclick='Stackbox.get().deactivate()'></div>";this._stackbox.activate({content:"<div class='alertBox'><p>"+response.msg+"</p>"+failBtn+"</div>",overlay_callback:this._stackbox.deactivate.bindAsEventListener(this._stackbox)});break;case'redirect':window.location.href=response.redirect;break;}},_injectDOM:function(e){this._onFriendsPage=$('friendsList')?true:false;this._getList();},_getList:function(){if(!this._onFriendsPage)return;new Ajax.Request('/index.php',{method:"post",asynchronous:false,parameters:{actionType:'ajax',action:'friends',subAction:'get',UID:this._avatarUID},onSuccess:this._getList_onSuccess.bindAsEventListener(this)});},_getList_onSuccess:function(transport){var response=transport.responseText.evalJSON();switch(response.status){case'success':this._friendsList=response.friends;this._isMyList=response.isMyList;this.populateFriendsList((this._currentPage-1)*this._numFriendsPerPage);break;case'error':var checkBtn="<div class='check' onclick='Stackbox.get().deactivate()'></div>";this._stackbox.activate({content:"<div class='alertBox'><p>"+response.msg+"</p>"+checkBtn+"</div>",overlay_callback:this._stackbox.deactivate.bindAsEventListener(this._stackbox)});break;case'redirect':window.location.href=response.redirect;break;}},_displayPageSelector:function(offset){var numPages=Math.ceil(this._friendsList.length/this._numFriendsPerPage);this._currentPage=Math.floor(offset/this._numFriendsPerPage)+1;var firstPage,lastPage;if(numPages<10){firstPage=1;lastPage=numPages;}
else{if(this._currentPage<=5){firstPage=1;lastPage=10;}
else if(this._currentPage>=numPages-4){firstPage=numPages-9;lastPage=numPages;}
else{firstPage=this._currentPage-4;lastPage=this._currentPage+5;}}
var listStr="";if(this._currentPage>1){var pageList=$('pageList');var listStr=" <span class=\"pageLink\" onclick=\"Friends.get().populateFriendsList(0)\">&laquo;</span>";var prevOffset=offset<this._numFriendsPerPage?0:offset-this._numFriendsPerPage;listStr+=" <span class=\"pageLink\" onclick=\"Friends.get().populateFriendsList("+prevOffset+")\">&lsaquo;</span>";}
else if(numPages>1){var listStr=" <span class=\"noclick\">&laquo;</span> <span class=\"noclick\">&lsaquo;</span>";}
if(numPages>1)
{for(var j=firstPage-1;j<lastPage;j++){if(j+1==this._currentPage){listStr+=" <span class=\"selected\">"+(j+1)+"</span>";}
else{listStr+=" <span class=\"pageLink\" onclick=\"Friends.get().populateFriendsList("+j*this._numFriendsPerPage+")\">"+(j+1)+"</span>";}}}
if(this._currentPage<numPages){var nextOffset=this._currentPage==lastPage?(lastPage-1)*this._numFriendsPerPage:this._currentPage*this._numFriendsPerPage;listStr+=" <span class=\"pageLink\" onclick=\"Friends.get().populateFriendsList("+nextOffset+")\">&rsaquo;</span>";var lastOffset=(numPages-1)*this._numFriendsPerPage;listStr+=" <span class=\"pageLink\" onclick=\"Friends.get().populateFriendsList("+lastOffset+")\">&raquo;</span>";}
else if(numPages>1){listStr+=" <span class=\"noclick\">&rsaquo;</span> <span class=\"noclick\">&raquo;</span>";}
$('pageListTop').update(listStr);$('pageListBottom').update(listStr);},_confirm_onSuccess:function(transport){var response=transport.responseText.evalJSON();if(response.status=='success'){this._stackbox.activate({content:response.msg});FLIR.replace('div.friendConfirmText',new FLIRStyle({mode:'fancyfonts',ff_BlurEdges:true}));}
else if(response.status=='error'){var failBtn="<div class='check' onclick='Stackbox.get().deactivate()'></div>";this._stackbox.activate({content:"<div class='alertBox'><p>"+response.msg+"</p>"+failBtn+"</div>",overlay_callback:this._stackbox.deactivate.bindAsEventListener(this._stackbox)});}
else if(response.status=='redirect'){window.location.href=response.redirect;}},_onFriendsPage:false,_stackbox:null,_friendsList:null,_isMyList:true,_avatarUID:null,_currentPage:1,_numFriendsPerPage:10});