
function FriendPickerList(){this.list=new Array();}
FriendPickerList.prototype.SetUpFriendPicker=function(){this.list[this.list.length]=new FriendPicker();return this.list.length-1;}
FriendPickerList.prototype.Get=function(index){return this.list[index];}
FriendPickerList.prototype.CloseAll=function(index){for(var i=0;i<this.list.length;i++)
{this.list[i].Close();}}
var fpList=new FriendPickerList();function FriendPicker(){this.search=new Search();this.itemCol=[];this.editItem=null;this.selIndex=-1;this.selData=null;this.blockFlogao=null;this.blockVoteme=null;this.hasFocus=true;this.canClose=true;this.resultDiv=null;this.lastNetwork=null;this.lastSearch=null;this.searchData=null;this.pageData=null;this.Value='';this.enabled=true;this.emptyMessage='';this.fpListIndex;}
FriendPicker.prototype.AddData=function(data,fpIndex){var fp;if(fpIndex!=undefined)
fp=fpList.Get(fpIndex);else
fp=fpList.Get(data[1]);try{if(typeof(isGroupFriendList)=='undefined')
{var searchItem={};searchItem.NETWORK=window.top.myNetWork.toLowerCase();searchItem.FID=window.top.myUid;searchItem.NAME=window.top.myName;if(data[0]!='ERROR'&&data[0]!='WARNING'){data[0].unshift(searchItem);}
else
{var arr=new Array();arr.push(searchItem);data[0]=arr;}}}catch(e){}
fp.search.AddData(data[0],'NAME');for(var itemCount=0;itemCount<fp.itemCol.length;itemCount++){if(fp.enabled!=false)
fp.itemCol[itemCount].txt.disabled=false;}};FriendPicker.prototype.AddDependency=function(infoId,fpIndex){powerTemplateManager.SetTemplate(7639,'',1,70000);powerInfoManager.AddInfo(infoId,fpList.Get(fpIndex).AddData,7639,fpIndex);};FriendPicker.prototype.SetUp=function(txtId,networkPicker,defMsg,linkSelectAllMessage,isMultiple,startEditHandler,selectHandler,resultDivClass,refererID,selData,emptyMsg,enabled,fpListIndex){var txtDiv=GetElement(txtId);this.fpListIndex=fpListIndex;this.CreateResultDiv(resultDivClass);var hidValue=createHidden(txtId+'value','');txtDiv.parentNode.appendChild(hidValue);var referer=(refererID?GetElement(refererID):txtDiv);var _editItem={'txt':txtDiv,'networkPicker':networkPicker,'hidValue':hidValue,'defMsg':defMsg,'isMultiple':isMultiple,'selectHandler':selectHandler,'referer':referer,'linkSelectAllMessage':linkSelectAllMessage};this.itemCol.push(_editItem);this.enabled=enabled;if(refererID=='multipleFriendPicker')
{this.blockFlogao=true;this.blockVoteme=true;}
var itemIndex=this.itemCol.length-1;var fp=fpList.Get(this.fpListIndex);txtDiv.setAttribute('autocomplete','off');txtDiv.disabled=true;txtDiv.onfocus=function(){fp.hasFocus=true;fp.canClose=false;fp.StartEdit(itemIndex);if(startEditHandler){Evaluate(startEditHandler);}};txtDiv.onkeydown=function(event){fp.Navigate(GetKeyCode(event));};txtDiv.onkeyup=function(event){fp.Update(GetKeyCode(event));};this.emptyMessage=emptyMsg;document.body.onclick=function(e){CheckMouseClickInsideObject(e,'fpResultDiv'+this.fpListIndex,null,function(){setTimeout('fpList.CloseAll()',200);})};txtDiv.onblur=function(){fp.hasFocus=false;fp.canClose=true;};if(selData){}
else{txtDiv.value=defMsg;}};FriendPicker.prototype.CreateResultDiv=function(className){this.resultDiv={};var resultDiv=createDiv('fpResultDiv'+this.fpListIndex);resultDiv.className=className;AppendToBody(resultDiv);var fp=fpList.Get(this.fpListIndex);resultDiv.onmouseover=function(){fp.canClose=false;};resultDiv.onmouseout=function(){if(!fp.hasFocus){fp.canClose=true;}};Display(resultDiv,false);this.resultDiv.scrollingDiv=new ScrollingDiv(resultDiv.id,20,fp.KeepOpen,fp.ApendResultItem,this.fpListIndex);this.resultDiv.panel=resultDiv;};FriendPicker.prototype.KeepOpen=function(fpIndex){fpList.Get(fpIndex[0]).canClose=false;};FriendPicker.prototype.StartEdit=function(itemIndex){if(this.editItem===null){var _editItem=this.itemCol[itemIndex];this.editItem=_editItem;_editItem.txt.value='';if(this.editItem.isMultiple){this.RenderHeader();}
this.selData=null;this.ShowData('',_editItem.networkPicker);var offsetTop=(document.all?3:2);slideMenu.Open(_editItem.txt,this.resultDiv.panel,_editItem.referer,false,3,2,false,offsetTop,0);if(this.editItem.isMultiple==true){var pos=GetElementPos(this.resultDiv.panel);if(navigator.appName=='Microsoft Internet Explorer')
{SetStyle(this.editItem.resultDivHeader,"absolute",null,pos.top,pos.left,null,null);SetStyle(this.resultDiv.panel,"absolute",null,pos.top+20,null,null,null);}
else
{this.editItem.resultDivHeader.setAttribute("style","position:absolute;top:"+pos.top+"px;left:"+pos.left+"px");pos.top=pos.top+20;this.resultDiv.panel.setAttribute("style","position:absolute;top:"+pos.top+"px;left:"+pos.left+"px");}}}
else
{var _editItem=this.itemCol[itemIndex];_editItem.txt.value='';}};FriendPicker.prototype.RenderHeader=function(){if(this.editItem.resultDivHeader!==null){this.editItem.resultDivHeader=createDiv('fpResult_header');this.editItem.resultDivHeader.innerHTML="<div class=\"fpResult_header\">"+"<a href=# onclick=\"javascript:fpList.Get("+this.fpListIndex+").SelectAll();return false;\" >"+this.editItem.linkSelectAllMessage+"</a>"+"<img src=\"http://static.power.com/images/bt_close_picker.gif\" onclick=\"javascript:fpList.Get("+this.fpListIndex+").Close(true);\">"+"</div>";Display(this.editItem.resultDivHeader,false);AppendToBody(this.editItem.resultDivHeader);}}
FriendPicker.prototype.Navigate=function(keyCode){switch(keyCode){case 40:return this.ShowNext();case 38:return this.ShowPrevious();}}
FriendPicker.prototype.Update=function(keyCode){switch(keyCode){case 40:case 38:return;case 13:if(this.selIndex!=-1){setTimeout('fpList.Get('+this.fpListIndex+').Select()',200);}
return;}
this.ShowData(this.editItem.txt.value,this.editItem.networkPicker);};FriendPicker.prototype.ApendResultItem=function(fpIndex){var fp=fpList.Get(fpIndex[0]);fp.pageData++;var searchData=fp.search.Find(fp.lastNetwork,fp.lastSearch,1,fp.pageData);if(searchData&&searchData.length==1){fp.resultDiv.panel.innerHTML+=fp.GetResultItemsData(searchData,fp.resultDiv.panel.childNodes.length,fp.lastSearch.length);};};FriendPicker.prototype.ShowData=function(lastSearch,lastNetwork){this.ClearSelection();var _editItem=this.editItem;if(typeof(lastNetwork)=='undefined')
{lastNetwork.value="power";}
if(this.lastSearch!==lastSearch||this.lastNetwork!==lastNetwork){this.resultDiv.panel.innerHTML='';this.resultDiv.scrollingDiv.maxScrollDone=0;this.resultDiv.panel.scrollTop=0;this.pageData=0;this.searchData=[];this.lastNetwork=(lastNetwork!=null?lastNetwork.value:'');this.search.older=[];this.lastSearch=lastSearch;var searchData=this.search.Find(this.lastNetwork,lastSearch,15,this.pageData);this.resultDiv.panel.innerHTML=this.GetResultItemsData(searchData,0,lastSearch.length);}
if(this.editItem.resultDivHeader!==null){if(this.editItem.isMultiple==true){Display(this.editItem.resultDivHeader,true);}}};FriendPicker.prototype.GetResultItemsData=function(searchData,itemsIndex,lastTokenLength){var resultData='',name,searchItem;if(searchData.length>0)
{for(var itemCount=0;itemCount<searchData.length;itemCount++){searchItem=searchData[itemCount];name=searchItem.data.NAME;name=this.FormatName(name,searchItem.tokenIndex,lastTokenLength);if((this.blockFlogao==null)||(this.blockVoteme==null))
{this.searchData.push(searchData[itemCount]);resultData+="<div class=\"pw_item"+itemsIndex%2+"\" id=\"_fpItem"+itemsIndex+"\" onmouseover=\"javascript:fpList.Get("+this.fpListIndex+").ShowItem("+itemsIndex+");\" onclick=\"javascript:fpList.Get("+this.fpListIndex+").Select();\"><div class=\"lg_"+searchItem.data.NETWORK.toLowerCase()+"\" title=\""+searchItem.data.NAME+"\">"+name+"</div></div>";}else{if((searchItem.data.NETWORK.toLowerCase()!='flogao')&&(searchItem.data.NETWORK.toLowerCase()!='voteme'))
{this.searchData.push(searchData[itemCount]);resultData+="<div class=\"pw_item"+itemsIndex%2+"\" id=\"_fpItem"+itemsIndex+"\" onmouseover=\"javascript:fpList.Get("+this.fpListIndex+").ShowItem("+itemsIndex+");\" onclick=\"javascript:fpList.Get("+this.fpListIndex+").Select();\"><div class=\"lg_"+searchItem.data.NETWORK.toLowerCase()+"\" title=\""+searchItem.data.NAME+"\">"+name+"</div></div>";}}
itemsIndex++;}}
else
{resultData+="<div ><div >"+fpList.Get(this.fpListIndex).emptyMessage+"</div></div>";}
return resultData;};FriendPicker.prototype.FormatName=function(name,tokenIndex,lastTokenLength,lengthToCut,lenghtToCutFirstName){if(lengthToCut==null)lengthToCut=30;if(lenghtToCutFirstName==null)lenghtToCutFirstName=18;if(name.length>=lengthToCut){name=name.substr(0,lengthToCut)+'...';}
if(name.indexOf(' ')==-1){name=name.substr(0,lenghtToCutFirstName)+'...';}
if(tokenIndex<lengthToCut){name=name.substr(0,tokenIndex)+'<b>'+name.substr(tokenIndex,lastTokenLength)+'</b>'+name.substr(tokenIndex+lastTokenLength,name.length-tokenIndex+lastTokenLength);}
return name;}
FriendPicker.prototype.Focus=function(keyCode){var txt=this.editItem.txt;txt.focus();if(txt.createTextRange){var range=txt.createTextRange();range.move("word",txt.value.length);range.select();}};FriendPicker.prototype.Select=function(){var _editItem=this.editItem;var _selItem=this.searchData[this.selIndex];var _selData=_selItem.data;if(_editItem.isMultiple){_editItem.txt.value=_editItem.defMsg;}
else{_editItem.txt.value=this.FormatName(_selData.NAME,300,null,26);}
this.selData=_selData;this.Close(true);if(_editItem.selectHandler){Evaluate(_editItem.selectHandler,_selData);}};FriendPicker.prototype.SelectAll=function(){var _editItem=this.editItem;for(var itemCount=0;itemCount<this.resultDiv.panel.childNodes.length;itemCount++){if(MultipleFriendSelector==null||MultipleFriendSelector.CanUpdate(true))
{this.selIndex=itemCount;this.Select();this.editItem=_editItem;}
else
break;}
this.selIndex=-1;this.editItem==null;};FriendPicker.prototype.ShowNext=function(){this.ShowItem(this.selIndex+1);this.resultDiv.scrollingDiv.DoScroll(this.selIndex);};FriendPicker.prototype.ShowPrevious=function(){this.ShowItem(this.selIndex-1);this.resultDiv.scrollingDiv.DoScroll(this.selIndex);};FriendPicker.prototype.ShowItem=function(itemIndex){if(this.editItem){this.ClearSelection();if(itemIndex<0){itemIndex=0;}
var _totalItems=this.resultDiv.panel.childNodes.length;if(itemIndex>=_totalItems){itemIndex=_totalItems-1;}
var item=GetElement('_fpItem'+itemIndex);if(item!==null){item.className='pw_fw_selitem';}
this.selIndex=itemIndex;}};FriendPicker.prototype.SetValue=function(network,uid,name){this.itemCol[0].txt.value=name;this.itemCol[0].hidValue.value=network.toLowerCase()+'|'+uid+'|'+name;fpList.Get(this.fpListIndex).Value=this.itemCol[0].hidValue.value;if(this.itemCol[0].selectHandler){this.itemCol[0].selectHandler.call();}}
FriendPicker.prototype.ClearSelection=function(){var item=GetElement('_fpItem'+this.selIndex);if(item!==null){item.className='pw_item'+this.selIndex%2;}
this.selIndex=-1;};FriendPicker.prototype.Close=function(closeNow){if((closeNow!==null&&closeNow)||this.canClose){var _editItem=this.editItem;var fp=fpList.Get(this.fpListIndex);if(_editItem){_editItem.txt.blur();Display(this.resultDiv.panel,false);if(this.editItem.resultDivHeader!=null)
Display(this.editItem.resultDivHeader,false);if(this.selData===null){_editItem.txt.value=_editItem.defMsg;_editItem.hidValue.value='';fp.Value='';}
else{_editItem.hidValue.value=this.selData.NETWORK+'|'+this.selData.FID+'|'+this.selData.NAME;fp.Value=_editItem.hidValue.value;}
this.editItem=null;}}};FriendPicker.prototype.GetArrayData=function(){return GetArrayData(this.Value,";");}
var MultipleFriendSelector={panel:null,selected:[],lock:false,hidValue:null,Value:'',maxFriendsSelected:null,cannotMultipleFriendsMessage:null,idPowerPanel:null,fpIndex:null,SetUp:function(panelId,maxFriendsSelected,cannotMultipleFriendsMessage,idPowerPanel,fpIndex){this.panel=GetElement(panelId);this.selected=[];this.lock=false;this.hidValue=createHidden(panelId+'value','');this.panel.appendChild(this.hidValue);this.maxFriendsSelected=maxFriendsSelected;this.cannotMultipleFriendsMessage=cannotMultipleFriendsMessage;this.idPowerPanel=idPowerPanel;this.fpIndex=fpIndex;},ArrayIndex:function(network,uid){var _friend;for(var friendCount=0;friendCount<this.selected.length;friendCount++){_friend=this.selected[friendCount];if(_friend.network==network&&_friend.uid==uid){return friendCount;}}
return-1;},ChildIndex:function(objectId){var _child;for(var childCount=0;childCount<this.panel.childNodes.length;childCount++){_child=this.panel.childNodes[childCount];if(_child.id&&_child.id.toLowerCase()==objectId.toLowerCase()){return childCount;}}
return-1;},UpdateValue:function(){var _friend,_hidValue='';for(var friendCount=0;friendCount<this.selected.length;friendCount++){_friend=this.selected[friendCount];_hidValue+=_friend.network+'|'+_friend.uid+'|'+escape(_friend.username)+',';}
this.hidValue.value=_hidValue;this.Value=_hidValue;this.panel.scrollTop=this.panel.offsetHeight;},Add:function(network,uid,username){if(this.CanUpdate(true))
{var selectedFriend=new SelectedFriend(this,network,uid,username,this.fpIndex),_friend;if(this.ArrayIndex(network,uid,'array')==-1){this.selected.push(selectedFriend);var panelIndex=this.ChildIndex(this.panel.id+'friendPicker');this.panel.insertBefore(selectedFriend.ToObject(),this.panel.childNodes[panelIndex]);}
this.UpdateValue();}},Remove:function(network,uid){if(!this.lock){var arrayIndex=this.ArrayIndex(network,uid);if(arrayIndex!=-1){this.selected.splice(arrayIndex,1);}
var childIndex=this.ChildIndex(network+uid);if(childIndex!=-1){this.panel.removeChild(this.panel.childNodes[childIndex]);}
this.UpdateValue();}
else{this.lock=false;}},CanUpdate:function(showAlert){var arrData=GetArrayData(this.Value,",");if(arrData==null||this.maxFriendsSelected==null||this.maxFriendsSelected>arrData.length)
{return true;}
else
{if(showAlert==true)
{if(this.idPowerPanel!='')
window.top.ErrorMessage.Show(this.cannotMultipleFriendsMessage,this.idPowerPanel);else
window.top.ErrorMessage.Show(this.cannotMultipleFriendsMessage);}
return false;}}};function GetArrayData(value,separator){if(value!='')
{var arr=value.split(separator);var arrRet=new Array();for(var i=0;i<arr.length;i++)
arrRet[i]=arr[i].split("|");return arrRet;}
else
return null;}
function SelectedFriend(parent,network,uid,username){this.parent=parent;this.network=network;this.uid=uid;this.username=username;}
SelectedFriend.prototype.ToObject=function(){var parent=this.parent;var network=this.network;var uid=this.uid;var div=createDiv(this.network+this.uid,'pw_fpselitem');if(fpList.Get(this.parent.fpIndex).enabled)
div.onclick=function(){parent.Remove(network,uid);};var networkDiv=createDiv('','pw_'+this.network.toLowerCase()+'item');networkDiv.onclick=function(){parent.lock=true;};networkDiv.innerHTML=this.username;div.appendChild(networkDiv);return div;};function Tree(){this.root=null;this.count=0;this.retVars=null;}
Tree.prototype.Add=function(items,valuePropertyName){var _ic,_searchRes,_newNode;if(items.length===0){return;}
if(this.root===null){_ic=parseInt(items.length/2);_newNode=new Node(items[_ic],valuePropertyName);items.splice(_ic,1);this.count++;this.root=_newNode;}
for(_ic=0;_ic<items.length;_ic++){_newNode=new Node(items[_ic],valuePropertyName);_searchRes=this.GetNode(RemoveLatinChars(items[_ic][valuePropertyName]),this.root);this.count++;if(_searchRes.comp>0){_searchRes.node.dir=_newNode;}
else{_searchRes.node.esq=_newNode;}}};Tree.prototype.GetNode=function(str,node){var compRes=node.Compare(str);if(compRes>0){if(node.dir!==null){return this.GetNode(str,node.dir);}}
else{if(node.esq!==null){return this.GetNode(str,node.esq);}}
return{node:node,comp:compRes};};Tree.prototype.Sort=function(){this.retVars=[];this.Visit(this.root);return this.retVars;};Tree.prototype.Visit=function(node){var esq=node.esq;if(esq!==null){this.Visit(esq);}
this.retVars.push(node);var dir=node.dir;if(dir!==null){this.Visit(dir);}};function Node(data,valuePropertyName){this.esq=null;this.dir=null;this.value=RemoveLatinChars(data[valuePropertyName]);this.data=data;}
Node.prototype.Compare=function(value){if(this.value<value){return 1;}
if(this.value>value){return-1;}
return 0;};Node.prototype.IndexOf=function(value){return this.value.indexOf(value);};function Search(){this.data=null;this.tree=new Tree();this.older=[];}
Search.prototype.AddData=function(data,valuePropertyName){this.tree.Add(data,valuePropertyName);this.data=this.tree.Sort();this.older=[];};Search.prototype.Find=function(network,str,count,page){var lookUpData,lookUpResult;var _str=RemoveLatinChars(str);network=network.toLowerCase();var oldData=this.GetOlder(str);if((oldData===null)||(oldData.matchType=='continue'&&oldData.key!==_str)){lookUpData=this.LookUp(network,_str,this.data,0,count);if(lookUpData.lastIndex==this.data.length){this.older.push({'key':_str,'matchType':'complete','pages':null,'data':lookUpData.results});}
else{this.older.push({'key':_str,'matchType':'continue','pages':[0,lookUpData.lastIndex],'data':null});}}
else if(oldData.matchType=='complete'){if(oldData.key==_str){return oldData.data;}
else{lookUpData=this.LookUp(network,_str,oldData.data,0,count);this.older.push({'key':_str,'matchType':'complete','pages':null,'data':lookUpData.results});}}
else{lookUpData=this.LookUp(network,_str,this.data,oldData.pages[page]+1,count);if(oldData.pages.length<=page+1){oldData.pages.push(lookUpData.lastIndex);}}
return lookUpData.results;};Search.prototype.LookUp=function(network,str,array,startAt,count){var item,itemCount,strIndex,results=[];for(itemCount=startAt;itemCount<array.length;itemCount++){item=array[itemCount];if(network==''||network=='power'||item.data.NETWORK==network){strIndex=item.value.indexOf(str);if(strIndex!==-1){results.push({'value':item.value,'tokenIndex':strIndex,'data':item.data});}
if(results.length>=count){break;}}}
return{'results':results,'lastIndex':itemCount};};Search.prototype.GetOlder=function(str){var oldKey=str,_old,first=true;while(oldKey!==''||first){for(var oldCount=0;oldCount<this.older.length;oldCount++){_old=this.older[oldCount];if(RemoveLatinChars(_old.key)==oldKey){return _old;}}
oldKey=oldKey.substr(0,oldKey.length-1);first=false;}
return null;};function ScrollingDiv(panelId,itemHeight,scrollingHandler,addDataHandler,fpIndex){this.panel=GetElement(panelId);this.pageHeight=itemHeight;this.addDataHandler=addDataHandler;this.fpIndex=fpIndex;var theScrolling=this;this.panel.onscroll=function(){if(scrollingHandler){Evaluate(scrollingHandler,fpIndex);};theScrolling.HandleScrolling();}
this.maxScrollDone=0;}
ScrollingDiv.prototype.DoScroll=function(itemIndex){var itemOffset=(itemIndex+1)*this.pageHeight;if(itemOffset>this.panel.offsetHeight+this.panel.scrollTop){this.panel.scrollTop=itemOffset-this.panel.offsetHeight+(2/3*this.pageHeight);this.HandleScrolling();}
if(itemIndex==0){this.panel.scrollTop=0;}
else{while(itemOffset<this.panel.scrollTop){this.panel.scrollTop-=this.pageHeight;}}};ScrollingDiv.prototype.HandleScrolling=function(){while(this.panel.scrollTop>this.maxScrollDone+this.pageHeight){this.maxScrollDone+=this.pageHeight;Evaluate(this.addDataHandler,this.fpIndex);}};