// ==UserScript== // @name FacebookDeletes // @namespace FacebookDeletes // @version_timestamp 1256731017321 // @include http://www.facebook.com/* // @include https://www.facebook.com/* // @require http://sizzlemctwizzle.com/updater.php?id=43404 // ==/UserScript== // To display: FriendListFlyoutController.show(document.getElementById('u....' )); // Use the id= of the "<a href" tag // To get lists friends are on: var d='...'; new AsyncRequest().setURI("/ajax/friends/status.php").setData({friend: d}).setHandler(function(g) { var f = g.getPayload(); alert(JSON.stringify(f));}).send(); // not working @require http:///updater.usotools.co.cc/43404.js //var SUC_script_num = 43404; // Change this to the number given to the script by userscripts.org (check the address bar) //try{function updateCheck(forced){if ((forced) || (parseInt(GM_getValue('SUC_last_update', '0')) + (86400000*7) <= (new Date().getTime()))){try{GM_xmlhttpRequest({method: 'GET',url: 'http://userscripts.org/scripts/source/'+SUC_script_num+'.meta.js?'+new Date().getTime(),headers: {'Cache-Control': 'no-cache'},onload: function(resp){var local_version, remote_version, rt, script_name;rt=resp.responseText;GM_setValue('SUC_last_update', new Date().getTime()+'');remote_version=parseInt(/@uso:version\s*(.*?)\s*$/m.exec(rt)[1]);local_version=parseInt(GM_getValue('SUC_current_version', '-1'));if(local_version!=-1){script_name = (/@name\s*(.*?)\s*$/m.exec(rt))[1];GM_setValue('SUC_target_script_name', script_name);if (remote_version > local_version){if(confirm('There is an update available for the Greasemonkey script "'+script_name+'."\nWould you like to go to the install page now?')){GM_openInTab('http://userscripts.org/scripts/show/'+SUC_script_num);GM_setValue('SUC_current_version', remote_version);}}else if (forced)alert('No update is available for "'+script_name+'."');}else GM_setValue('SUC_current_version', remote_version+'');}});}catch (err){if (forced)alert('An error occurred while checking for updates:\n'+err);}}}GM_registerMenuCommand(GM_getValue('SUC_target_script_name', '???') + ' - Manual Update Check', function(){updateCheck(true);});updateCheck(false);}catch(err){} var FacebookDeletes={ users:null, FindByXPath:function(obj,xpath) { try { var q=document.evaluate(xpath,obj,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null); } catch(e) { if(GM_log) { GM_log('bad xpath:'+xpath); } } if(q && q.singleNodeValue) { return q.singleNodeValue; } return null; }, ClickWin:function(win,obj,evtName) { var evt = win.document.createEvent("MouseEvents"); evt.initMouseEvent(evtName, true, true, win, 0, 0, 0, 0, 0, false, false, false, false, 0, null); return !obj.dispatchEvent(evt); }, Click:function(obj) { return this.ClickWin(window,obj,'click'); }, FindParentId:function(id,obj) { while(obj && obj.tagName!="BODY") { if(obj.id==id) { return obj; } obj=obj.parentNode; } return null; }, /* Click:function(obj) { var evt = document.createEvent("MouseEvents"); evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); return !obj.dispatchEvent(evt); }, */ FindProfiles:function() { var uidr=new RegExp('profile.php.*id=([0-9]+)','i'); var imgr=new RegExp('/q([0-9]+)_','i'); var imgr2=new RegExp('/([0-9]+)_([0-9]+)_([0-9]+)_q','i'); var content=document.getElementById('content'); var hrefs=content.getElementsByTagName('a'); var currentUser={}; var users=[]; for(var h=0; h<hrefs.length; h++) { var href=hrefs[h]; var p=this.FindParentId("pagelet_friend_list_suggestions",href); if(p) continue; // if(href.href.indexOf('profile.php')>=0) { var uidm=uidr.exec(href.href); if(uidm && uidm.length>1) { currentUser.uid=uidm[1]; } var uid=href.getAttribute('data-profileid'); if(uid) { currentUser.uid=uid; } currentUser.href=href.href; currentUser.hrefObj=href; if(href.innerHTML.indexOf('<img')>=0) { var img=href.getElementsByTagName('img')[0]; currentUser.img=img.src; if(currentUser.uid==undefined) { var imgm=imgr.exec(img.src); if(!imgm) { imgm=imgr2.exec(img.src); } if(imgm && imgm.length>1) { currentUser.uid=imgm[2]; } } //} else if(href.className=='UIObjectListing_Title') { } else if(href.parentNode.className=='fsl fwb fcb') { currentUser.name=href.innerHTML; currentUser.div=href.parentNode; // var st=this.FindByXPath(href.parentNode,".//div[contains(@class,'uiTextSubtitle')]"); var st=this.FindByXPath(href.parentNode,".//div[contains(@class,'fsm fwm fcg')]"); if(st) { currentUser.subText=st.textContent; } if(currentUser.uid && currentUser.img) { //GM_log('user:'+unsafeWindow.JSON.stringify(currentUser)); users.push(currentUser); } currentUser={}; } } // } return users; }, ChooseUsersTimer:function() { var millis=this.ChooseUsers(); window.setTimeout(function() { FacebookDeletes.ChooseUsersTimer(); },millis); }, SetMessage:function(mess) { var d=document.getElementById('FacebookDeletesMessage'); if(d) d.innerHTML=mess; }, ChooseUsers:function() { // var obj=document.getElementById('friends_page_title'); var obj=document.getElementById('pagelet_friends_tab'); if(!obj) { obj=document.getElementById('content'); } if(!obj) { return 2000; } var hasnodelete=this.FindByXPath(document,"//input[@className='nodelete']"); if(hasnodelete) { return 5000; } var users=this.FindProfiles(); if(users.length<=0) { // facebook maybe on another page. return 5000; } var cnt=0; for(var u=0; u<users.length; u++) { var user=users[u]; var inp=this.FindByXPath(user.div,".//input[@class='nodelete']"); if(inp) { continue; } inp=document.createElement('input'); inp.type='checkbox'; inp.className='nodelete'; inp.title="Tick to skip deleting this user."; inp.id='nodelete_'+user.uid; user.div.insertBefore(inp,user.div.childNodes[0]); cnt++; } if(cnt>0) { this.SkipSubText(); } var upButton = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A%2FwD%2FoL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kJCA4HNrskg40AAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAACcElEQVRIx7WWTUgbQRiG351NUhPIIpRVgkYTqdQmkNKAlQq5CF17qpQeG3r1GHrroRcxh94aCoW9eQwEiiAFDQV%2FEBuIMVrsppBgiTE2asSmS9j82GR6qBajaX5s8t5mvmGeeef7%2BGYYXFDXwOgCxw9atVy3gZZOWTQlhjKsqpyTD1NyOiYdffv06G8EAPj%2B%2B8O6zp7VXsv4DbRIyYi%2FoGT2Hend4DoBgDOABi1Ur2Vco%2BvsWQUAtmtgdMF87%2Bntc1e19KuoYHN%2BGl2mERBWXff%2BOP6WqqCcPCAcP2ht9HRb825IWwFszbsbdsTxg1ai5boNjSzeCXkxN%2BuFyWTC3KwXOyFvQxAt120gjVRR5uArJsaGIAgCCCEQBAETY0NIx4N1IbR0ypJ6i%2FLZY%2FyMvYcoihXzoihCl9tEPntcF1QTQmkZ0pIHiUQClNJLMYpweAPSkgeUlq8PiQZmsLbi%2F1MqTGXxnY%2FXVvyIBmauB0nHg5h0CrDb7VcAF0F2ux2vXjxDKrrcHCSfPYYutwm3u7FSdblc6NMfoKCcVI2rqiQC0pIHinwESuk%2FXVzW4uIibvIGWISp%2Bk6%2BLL9FNBKumod62lgPYPvj69qQVHQZUy8nYTQamwYwDAOz2Yx3b6aR2P5QHVJQTtCnP4DL5fqvxuh0OjEy1IHsj72rOfkeEpHci7ekA%2Ft8PthsNhQ7nldCNPww%2Bm2PW9bqabkXeo22EtJz5yHaJcKw6hLaKIZVl0hOPky1E5KTD1NETsekdkLkdExiAKD%2F7pP82RvPtHB%2Fmoz4i7ufZzsIACiZfUcy4i%2B20kEy4i8qmX0HLp%2B8Xf%2Bu34oZ9vy9FGHQAAAAAElFTkSuQmCC'; var downButton = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A%2FwD%2FoL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kJCA4HG%2F773%2FgAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAACeUlEQVRIx7VWTUgbURD%2B3ltN3CDbVFw1VaM1TUpdtRp%2FIFpRF0oqFosIQo7eFgqtvfWQ0ksPvZUcvafn4s1swYtQaIVAD6aCUKNJEBsossJGo8nrxQTjX7J1%2FW5vZna%2FmffNMI%2FgDBo6hpcF0S3xQqOD5Y45GAJhhKvKZ7S9XS29uf7n97dnRQ8AiG1DgzZ782pLp98Kk5CMRY70%2FdRoevvHGgWAUwILTERLp99iszevAgDX0DG8fL9v9mGhKhNBBPFB1ZH%2B10cF0S3hFiGIbonyQqPjNkl4odFBjXeRMbDcMVdVOKR%2BfUXu5Mi8n%2BdP0No1BQAokmTTa0gm4iDk5vozxtDT04OTbAYAQAuOewMKZFk2pYq5uTlwLS9g4YVSEqutDjsHTQiFQjciCIfD%2BL5xiNq7rUUbPRvg8Izj%2FcdFJBIJMMYMX9HW1hZevnkHZ%2FfzEh89H9w1%2FgqeTm%2FxQyPoH%2FSh%2B%2BnbC3Z6cU4JpIkFeL39hppAlmW4nry%2B1EcvM9bU1kPn%2BxAMBisiCIVC2DlogtVWVzkJAIjtQ1gMq4hGo1deG2MM0WgUHz59hsMzfmUS9LoMPb55jIz5L9WncB4Z88Pjm7%2B20mtJCKGQJhbgdDov6EMIgdfbD2liAYTQ%2Fycp6HPHPQtFUUrsiqJA5%2FtQU1tfVjNKuOpcuSB70yMsrWxAVVXk83moqoqllQ2I7UPllwpXnaMZbW%2B3kg5yDQQwPRNAPB7H9EwAroFARZ2X0fZ2qZbeXK90Fnong5B6feidDFY8P1p6c50AQNvjmcPTHW%2FmCmbJWCS7%2FfNLDQUAfT81moxFsmYuq2QsktX3U6M4n%2Fltvbv%2BAcfN2ElnT1E8AAAAAElFTkSuQmCC'; //GM_log('refresh users'); var div=document.getElementById('ChooseUsers'); if(div) { return 5000; } div=document.createElement('div'); //div.setAttribute('style','border:solid 5px black'); var theLists = this.FindFriendLists(); if(theLists==null) { return 1000; } selectNode = '<select size="9" multiple="yes" id="All_Friends_List_Listbox">'; var saveSelectedList = {}; if(GM_getValue && JSON) { var lists ={}; lists = GM_getValue("selectedLists"); if(lists != null) { saveSelectedList = JSON.parse(lists); } } for (var a=0; a<theLists.length;a++) { var i=theLists[a]; var name=i[1]; var num=i[0]; if(saveSelectedList != null && saveSelectedList[name] == 1) { selectNode += '<option selected="selected" value="'+num+'">' + name + '</option><br>\n'; } else { selectNode += '<option value="'+num+'">' + name + '</option><br>\n'; } } selectNode +='</select>'; div.id='ChooseUsers'; div.style.left=20; div.style.top=20; div.style.padding='10px'; div.style.display='block'; div.style.backgroundColor='#fff'; //div.style.border='2px solid #444'; //<a href="javascript:;" id="fbdelete_reload">Reload friend list</a><br /><br /> var html= '<div>' + //'<span title="Click to Open" style="border:ridge 3px grey;cursor: pointer;color:red;width:1em;font-weight:900;font-size:1.8em;background-color:grey" id="arrow_open"></span>' + //'<span title="Click to Close" style="border:ridge 3px grey;cursor: pointer;display:none;color:red;width:1em;font-weight:900;font-size:1.8em;background-color:grey" id="arrow_close"></span>' + '<span title="Click to Open"><img style="width:15px;height:15px;" src=' + downButton + ' id="arrow_open"></img></span>' + '<span title="Click to Close"><img style="width:15px;height:15px;display:none"src=' + upButton + ' id="arrow_close"></img></span>' + '<b style="padding-left:5px;font-size:1.4em;" title="Facebook Delete Friends. Click the arrow left to open or close.">Facebook Delete Friends:</b></div>' + '<div style="padding:20px; display:none" id="friends_delete_widgets_container">' + '<span style="font-size:1.2em;font-weight:bold;color:red;"> Warning, you are about to remove your friends on this page only.<br />If you are not sure click the "highlight only" button to test it out first.<br />'+ 'IMPORTANT: go to the very bottom of the page so that all your friends are on the page or else it will not go through all your friends.</span><br />'+ // '<input type="checkbox" id="BulkDeleteNextPages" />Delete all friends in the next pages too.<br />'+ 'Delete a maximum of <input size="3" id="BulkDeleteMax" /> friends.<br />'+ //'Skip friends with this note: <input type="text" id="BulkDeleteSkipSubText" value="" title="Pending, etc." /> (used for skipping pending friends, friends in certain groups, etc.)<br />'+ //selectNode + '<table style="" >' + '<tr style="width:20%"><td>Skip friends with this note:</td>' + '<td><input type="text" id="BulkDeleteSkipSubText" value="" title="Pending, etc." /></td>'+ '<td>(used for skipping pending friends<br>, friends in certain groups, etc.)</tr>'+ '<tr><td style="padding:5px; text-align:center;color:red;font-weight:bold"> --OR-- </td><td colspan="2"> </td></tr>' + '<tr style="width:20%;"><td>Skip on these friend lists:</td><td colspan="2">' + selectNode + '</td>'+ '<tr><td><input style="width:100%;background:red;" type="submit" value="Highlight Only" title="For testing" id="BulkToggle" /></td>'+ '<td><input style="width:100%;" type="submit" value="Unselect/Select All" id="ToggleAll" /></td>'+ //'<br /><br />'+ '<td><input style="width:100%;font-weight:900;" type="submit" value="Delete all EXCEPT selected" title="Be careful, there is no undo button!" id="BulkDelete" /></td>'+ '</tr></table>'+ '<div id="FacebookDeletesMessage"></div>'+ '</div>'; div.innerHTML=html; obj.parentNode.insertBefore(div,obj); var upClickArrow = document.getElementById('arrow_close'); upClickArrow.addEventListener('click',function() { FacebookDeletes.CloseContainerDiv(); },false); var downClickArrow = document.getElementById('arrow_open'); downClickArrow.addEventListener('click',function() { FacebookDeletes.OpenContainerDiv(); },false); var bulkDeleteObj=document.getElementById('BulkDelete'); bulkDeleteObj.addEventListener('click',function() { FacebookDeletes.BulkDeletes(false); },false); var bulkToggleObj=document.getElementById('BulkToggle'); bulkToggleObj.addEventListener('click',function() { FacebookDeletes.BulkDeletes(true); },false); var toggleAllObj=document.getElementById('ToggleAll'); toggleAllObj.addEventListener('click',function() { FacebookDeletes.ToggleAll(); },false); var skipSubTextObj=document.getElementById('BulkDeleteSkipSubText'); skipSubTextObj.addEventListener('change',function() { FacebookDeletes.SkipSubText(); },false); return 5000; // var reloadObj=document.getElementById('fbdelete_reload'); // reloadObj.addEventListener('click',function() { FacebookDeletes.ChooseUsers(); },false); }, OpenContainerDiv:function() { var arrow = document.getElementById('arrow_open'); var arrow2 = document.getElementById('arrow_close'); arrow.style.display= "none"; arrow2.style.display= "inline"; var toolsDiv = document.getElementById('friends_delete_widgets_container'); toolsDiv.style.display= "block"; }, CloseContainerDiv:function() { var arrow = document.getElementById('arrow_close'); var arrow2 = document.getElementById('arrow_open'); arrow.style.display= "none"; arrow2.style.display= "inline"; var toolsDiv = document.getElementById('friends_delete_widgets_container'); toolsDiv.style.display= "none"; }, BulkDeletesFinished:function() { // reload the page to see the new list. if(!this.bulkDeletesProgress.toggle) { window.setTimeout(function() { // window.history.go(0); },2000); } }, bulkDeletesProgress:null, BulkDeletesNext:function() { if(GM_log) { // GM_log('bulk delete next: '+this.bulkDeletesProgress.u); } var maxObj=document.getElementById('BulkDeleteMax'); if(maxObj && maxObj.value!="" && this.bulkDeletesProgress.total>=parseInt(maxObj.value)) { if(GM_log) GM_log('deletes finished, max limit reached'+maxObj.value); this.BulkDeletesFinished(); return; } if(this.bulkDeletesProgress.u>=this.users.length) { var nextClicked=false; /* var bulkDeleteNextPagesObj=document.getElementById('BulkDeleteNextPages'); if(bulkDeleteNextPagesObj.checked) { if(this.BulkDeleteClickNextPage()) { this.bulkDeletesProgress.u=0; window.setTimeout(function() { FacebookDeletes.BulkDeletes(FacebookDeletes.bulkDeletesProgress.toggle,FacebookDeletes.bulkDeletesProgress.total); },10000); return; } } */ if(!nextClicked) { if(GM_log) { GM_log('deletes finished'); } this.BulkDeletesFinished(); return; } } var deletedCount=this.bulkDeletesProgress.u; this.BulkDeletesNext2(); this.SetMessage('Total deleted: '+this.bulkDeletesProgress.total); window.setTimeout(function() { FacebookDeletes.BulkDeletesNext(); },150); }, BulkDeleteClickNextPage:function() { var forward=this.FindByXPath(document,".//a[@bindpoint='forwardRoot']"); if(!forward) { return false; } var p=forward; while(p && p.tagName!="BODY") { if(p.className.indexOf('Disabled')>=0) { return false; } p=p.parentNode; } if(GM_log) { GM_log('Click next page button'); } this.Click(forward); return true; }, BulkDeletesNext2:function() { var t=this; if(this.bulkDeletesProgress.u>=this.users.length) { return true; } var user=this.users[this.bulkDeletesProgress.u]; var nodelete=document.getElementById('nodelete_'+user.uid); if(this.bulkDeletesProgress.waitForFriendList) { if(this.bulkDeletesProgress.waitForFriendList!='waiting') { if(nodelete.checked) { this.bulkDeletesProgress.waitForFriendList=false; } else { this.bulkDeletesProgress.waitForFriendList='waiting'; t.GetUserFriendLists(user.uid,function(obj) { selectedLists = t.GetSelectedFriendLists(); t.bulkDeletesProgress.skipUser=false; for(var l=0; l<obj.lists.length; l++) { var flid=obj.lists[l]; if(selectedLists[flid]) { var theLists = t.FindFriendLists(); theLists.forEach(function(i) { if(i[0]==flid) { if(GM_log) GM_log('flid:'+flid+'='+i[1]); } }); if(GM_log) GM_log('In friend list, skipping:'+flid+', userid:'+user.uid+','+user.name); t.bulkDeletesProgress.skipUser=true; nodelete.checked=true; break; } } t.bulkDeletesProgress.waitForFriendList=false; }); } } return false; } else if(this.bulkDeletesProgress.waitForConfirm) { var wait=false; var removeConfirm=this.FindByXPath(document,".//input[@name='confirm' and @type='button']"); if(!removeConfirm) { return false; } if(GM_log) { GM_log('Confirm remove'); } this.Click(removeConfirm); this.bulkDeletesProgress.waitForConfirm=wait; if(wait) { return false; } // no more waiting for dialogs, lets go to the next one. this.bulkDeletesProgress.u++; return true; } try { if((nodelete && nodelete.checked) || t.bulkDeletesProgress.skipUser) { this.bulkDeletesProgress.u++; if(GM_log) { GM_log('not removing:'+user.uid+","+user.name+','+nodelete.checked+','+t.bulkDeletesProgress.skipUser); } return true; } if(GM_log) { GM_log('removing:'+user.uid+","+user.name); } this.bulkDeletesProgress.total++; if(this.bulkDeletesProgress.toggle) { user.hrefObj.style.border='2px solid #f00'; this.bulkDeletesProgress.u++; } else { this.RemoveUser(user.uid); user.hrefObj.style.border= null; user.hrefObj.innerHTML+=' (Deleted)'; // we will update this.bulkDeletesProgress.u after waitForConfirm this.bulkDeletesProgress.waitForConfirm=true; return false; } } finally { this.bulkDeletesProgress.skipUser=false; this.bulkDeletesProgress.waitForFriendList=true; } return false; }, IsGroupPage:function() { var group=this.FindByXPath(document,"//a[contains(@href,'/groups/edit.php') and contains(@href,'gid=')]"); if(!group) return null; var m=/gid=([0-9]+)/.exec(group.href); if(!m) return null; return m[1]; }, RemoveUser:function(uid) { var a=document.createElement('script'); var gid=this.IsGroupPage(); if(!gid) { a.innerHTML="new AsyncRequest().setURI('/friends/ajax/remove_friend.php').setData({ friend: '"+uid+"',type:'friend' }).send();"; } else { a.innerHTML="new AsyncRequest().setURI('/ajax/social_graph/remove.php').setData({"+ "fbid: "+uid+",edge_type: 'fan', ban: false, message: '', node_id: "+gid+", class:'MemberManager' "+ "}).send();" ; } document.body.appendChild(a); /* var iframe=document.createElement('iframe'); iframe.width=600; iframe.height=600; iframe.src='http://www.facebook.com/friends/remove.php?remove_friend=1&rr=1&friend_id='+uid; document.body.appendChild(iframe); */ }, signalInput:null, GetUserFriendLists:function(id,func) { var t=this; if(t.signalInput!=null) { t.signalInput.parentNode.removeChild(t.signalInput); } t.signalInput=document.createElement('input'); t.signalInput.type='button'; t.signalInput.id='FBDelete_signalInput'; t.signalInput.style.display='none'; document.body.appendChild(t.signalInput); var onChange=function() { setTimeout(function() { func(unsafeWindow.JSON.parse(t.signalInput.value)); // t.signalInput.removeEventListener('change',onChange); },1); } t.signalInput.addEventListener('click',onChange); var a=document.createElement('script'); a.innerHTML="new AsyncRequest().setURI('/ajax/friends/status.php').setData({friend:"+id+"}).setHandler(function(g) { "+ "var f = g.getPayload(); var del=document.getElementById('FBDelete_signalInput'); del.value=JSON.stringify(f); del.click(); }).send();"; document.body.appendChild(a); }, BulkDeletes:function(toggle,total) { this.SkipSubText(); var users=this.users=this.FindProfiles(); this.bulkDeletesProgress={u:0,'waitForFriendList':true,'waitForConfirm':false,'toggle':toggle,'total':total?total:0}; this.BulkDeletesNext(); }, IterateNoDeletes:function(func) { var inps=document.getElementsByTagName('input'); for(var i=0; i<inps.length; i++) { var inp=inps[i]; if(inp.id.substr(0,9)=="nodelete_") { func(inp,inp.id.substr(9)); } } }, ToggleAll:function() { var firstCheck=null; this.IterateNoDeletes(function(inp,id) { if(firstCheck==null) { firstCheck=inp.checked; } inp.checked=firstCheck?false:true; }); }, SkipSubText:function() { var skipSubTextObj=document.getElementById('BulkDeleteSkipSubText'); if(!skipSubTextObj) { return false; } var selectedLists = document.getElementById("All_Friends_List_Listbox"); if(!selectedLists ) { return false; } var skipSubTextLc =""; if(skipSubTextObj != null) { skipSubTextObj.value.toLowerCase(); } selectedLists = this.GetSelectedFriendLists(); if(skipSubTextLc=="" && selectedLists.length==0) { return false; } var users=this.FindProfiles(); for(var u=0; u<users.length; u++) { var user=users[u]; var inp=document.getElementById('nodelete_'+user.uid); if(!inp) { continue; } if(user.subText!=undefined) { if(skipSubTextLc!= "" && user.subText.toLowerCase().indexOf(skipSubTextLc)>=0) { user.hrefObj.style.border= null; inp.checked=true; continue; } } // var friendLists=unsafeWindow.EditableFriendListPane._memberships[user.uid]; var friendLists={}; if(friendLists==undefined) { if(GM_log) GM_log('no lists found for user:'+user.uid); continue; } for(x in selectedLists) { if(friendLists[x]) { user.hrefObj.style.border=null; inp.checked=true; break; } /* if(selectedLists[x] == "No Friend Lists" && (user.subText == null || user.subText =="" )) { user.hrefObj.style.border= null; inp.checked=true; continue; } if(user.subText.indexOf(selectedLists[x])>=0) { user.hrefObj.style.border= null; inp.checked=true; continue; } */ } } }, /* GetFriendListFromPage:function(id,endFunc) { GM_xmlhttpRequest({ 'url':http://www.facebook.com/friends/edit/?sk=fl_'+id, 'onload':function(r) { var div=document.createElement('div'); div.innerHTML=r.responseText; FindByXPath(editFriendsNameContainer var list=[]; endFunc(list); } }); }, */ GetSelectedFriendLists:function() { var fLists= []; var fListselected={}; var theListbox = document.getElementById("All_Friends_List_Listbox"); if(theListbox == null) {return fLists;} for(var i=0; i<theListbox.options.length; i++) { if(theListbox.options[i].selected) { fLists.push(theListbox.options[i].value); fListselected[theListbox.options[i].value]=theListbox.options[i].innerHTML; } } if(GM_setValue) { if(fListselected != null && JSON) { GM_setValue("selectedLists",JSON.stringify(fListselected) ); } } return fListselected; }, friendList:null, FindFriendLists:function() { var t=this; if(t.friendList!=null) return t.friendList; var fLists= []; var friendListMenu=t.FindByXPath(document,"//div[contains(@class,'FriendListMenu')]"); var friendListsNodes=null; if(friendListMenu!=null) { friendListsNodes = document.evaluate("//span[contains(@class,'itemLabel')]",friendListMenu,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null); } if(friendListsNodes!=null) { for ( var i = 0; i < friendListsNodes.snapshotLength; i++) { var aList = friendListsNodes.snapshotItem(i); var inpNode = this.FindByXPath(aList, ".//input[@name='flid']"); var nameNode = this.FindByXPath(aList, ".//div[contains(@class,'name')]"); // *** only "more friends" has tabIndex==0, more friends: 2427620217000 if(inpNode!=null && nameNode!=null && inpNode.value!="2427620217000" && inpNode.value!="") { fLists.push([inpNode.value,nameNode.innerHTML]); } } t.friendList=fLists; return fLists; } else { var button=t.FindByXPath(document,"//div[contains(@class,'enableFriendListFlyout')]"); unsafeWindow.FriendListFlyoutController.show(button); } return null; }, FindFriendListsOld:function() { var fLists= []; // fLists.push(["No Friend Lists"]); // fLists.push(["Friend Request Pending"]); // var friendListsNodes = document.evaluate('//div[@class="UIFilterList_Item "]',document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null); var friendListsNodes = document.evaluate("//li[contains(@id,'navItem_fl_')]",document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null); for ( var i = 0; i < friendListsNodes.snapshotLength; i++) { var aList = friendListsNodes.snapshotItem(i); var flnum=aList.id.substr(11); var subNode = this.FindByXPath(aList, ".//*[contains(@class,'linkWrap')]"); // var subNode = this.FindByXPath(aList, "a/div/i[contains(@class,'spritemap_6jzm0g')]"); if(subNode != null) { fLists.push([flnum,subNode.firstChild.textContent]); // fLists.push(aList.textContent); } } return fLists; } }; var href=document.location.href; window.addEventListener("load", function(e) { FacebookDeletes.ChooseUsersTimer(); },false); if(GM_registerMenuCommand) { GM_registerMenuCommand('Facebook deletes - Reload users',function() { FacebookDeletes.ChooseUsers(); }); }
Mozilla add on,User script,Grease Monkey Script, greasemonkey userscripts, updater userscripts mafia wars userscripts mafia wars autoplayer userscripts mafia wars wall userscripts scripts userscripts travian greasemonkey greasemonkey download greasemonkey facebook greasemonkey tutorial greasemonkey youtube greasemonkey travian greasemonkey chrome greasemonkey mafia wars greasemonkey mafia wars autoplayer
Monday, December 5, 2011
FacebookDeletes
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment