unfriend finder

Download Unfriend Finder

If you can't read please download the document

Upload: endri-tri-w

Post on 09-Sep-2014

961 views

Category:

Documents


61 download

TRANSCRIPT

// ==UserScript== // @name Unfriend Finder // @namespace unfriend_finder // @description Script that allows you to know who has removed you on faceboo k. // @author http://www.facebook.com/doudou // @homepage http://www.unfriendfinder.com/ // @include htt*://*.facebook.com/* // @icon http://images.unfriendfinder.net/logoGM.png // @version 31 // @encoding UTF-8 // @exclude htt*://*static*.facebook.com* // @exclude htt*://*channel*.facebook.com* // @exclude htt*://developers.facebook.com/* // @exclude htt*://upload.facebook.com/* // @exclude htt*://www.facebook.com/common/blank.html // @exclude htt*://*onnect.facebook.com/* // @exclude htt*://*acebook.com/connect* // @exclude htt*://*.facebook.com/plugins/* // @exclude htt*://*.facebook.com/l.php* // @exclude htt*://*.facebook.com/ai.php* // @exclude htt*://*.facebook.com/extern/* // @exclude htt*://*.facebook.com/pagelet/* // @exclude htt*://api.facebook.com/static/* // @exclude htt*://*.facebook.com/contact_importer/* // @exclude htt*://*.facebook.com/ajax/* // ==/UserScript== // // // // Unfriend Finder is Copyright (c) 2009-2011, Edouar d Gatouillat // http://www.unfriendfinder.com // Unfriend Finder is licensed under a Creative Commons Attribution-Noncommercia l-No Derivative Works 3.0 Unported License // License information is available here: http://creativecommons.or g/licenses/by-nc-nd/3.0/us/ // This full copyright section must be included in redistribut ions of this script // // // // Unfriend Finder // Last changes: September 20 2011 8:00pm, dev build 31.940 // // Main Changes: // // Version 31: // [*] Redrawn 16x16 "Unfriend" and "Pending Request" icons. // [+] Added beta support of the new FriendButton in the pending requests. // [*] Fixed issue in reset feature in settings. // [*] Fixed "Remove Connection" on pending requests. // [+] Added support of browser history on filters. // [*] Fixed bluebar links in new UI. // [+] Support for Internet Explorer, still few bugs but the script is working. // [+] Support for Safari on iPhone. // [*] Fixed hiding lists issue when "Unfriends" filter is clicked before the p age has finished loading. // [*] Fixed "Hide All" link in Unfriends lists. // [+] Added Facebook hoverCard on profiles.

// [+] Added new layout, "Blocks" style on unfriends list. // [*] Fixed issue with Greasemonkey in Ajax Requests. // [*] Fixed increasing notifications bug. // [*] Fixed filter compatibility for Google Chrome, Safari and Opera. // [+] Added support of webkitNotification on Chrome (Not supported by other br owsers). // [+] Added ability to Rearrange "Unfriends" filter in the Favorites (new UI). // [+] Added ability to Add/Remove "Unfriends" filter to/from the Favorites (ne w UI). // [*] Fixed Messages section. // // Version 30: // [*] Fixed Filters for the new UI. // [*] Fixed 'Cancel All' feature on pending requests. // [*] Fixed display issues when switching from Group/Friends or other view to Unfriends Finder section. // [*] Fixed other various display issues. // [*] Updated Unfriends info box on profile. // [+] Added Esperanto, thanks to Lucas Larson. // [+] Added , thanks to Binod Adhikary. // [+] Added , thanks to Shahed Faisal. // [*] Updated non-execution for fanpages. // // Version 29: // [*] Fixed issue when trying to cancel a friend request. // [*] Languages updated. // [*] Fixed broken notifications. // [*] Fixed display issues. // [+] Added Latvieu, thanks to Viesturs Eihent ls. // // Version 28: // [*] Fixed Spammy Links issue. // [*] Languages updated, thanks to Jay Ranson for English UK, Benjamin Schwarz for Deutsch, and Cneyt Oktay for Turkish. // [*] Fixed " was in your friendlist" issue. // [+] Added , thanks to Bhooshan Harake. // [+] Added , thanks to Jal Desai. // // Version 27: // [+] Added loading indicator in filter to show loading when checking unfriend s. // [-] Removed reminder beepers on unfriends/ignored requests. // [*] Fixed issues with repeating notifications. // [*] Fixed issue with ability to Always Hide/Block an unfriend with Shift/Shi ft+Ctrl key. // [*] Changed Fanpage ID after being deleted by Facebook. // [*] Fixed issue with multiple instance of Bottop-right nub and Settings link in menubar. // [*] Probably fixed cache issue when Pending Request. // [*] Fixed issue with Information box on profile, which was not displayed in previous versions due to a Facebook change. // [*] Won't notify more than 3 times the same Unfriend. // [*] Fixed display issues. // [*] Fixed binding key issues on Opera. // [+] Added , thanks to Jungwook Lee. // [+] Added , thanks to Globe Vgl. // [+] Added Euskara, thanks to Arkaitz Luzuriaga. // [+] Added Lingua Latina, thanks to Sawyer Morgan. // // Version 26:

// [*] Added @exclude for useless pages. // [+] Added paging for Unfriends & Reappeared. // [+] Added paging settings. // [*] Sorted profiles in lists by dates on Chrome. // [*] Fixed the loss of links with FFixer when having too much links in menuba r. // [*] Fixed bug with beepers on Chrome. // [*] Fixed crash when 3rd party cookies were not enabled. Using Ajax() instea d of XMLHttpRequest on Greasemonkey. // [*] Fixed HTTPS issue. // [+] Added dates when adding pending requests. // [*] Fixed wrong status set to 'Deleted or Hidden' due to a Facebook change. // [+] Added Nub container in bottom-right to bind beepers. // [+] Added an option in this container to temporary enable/disable the script . // [+] Added Filipino, thanks to Sebastian Gallup. // [+] Added , thanks to Quji Bichia, Beqa Arabuli, // [+] Added , thanks to Bhooshan Harake. // // Version 25: // [+] Added lag warning when having more than about 40 Unfriends in list. // [+] Added warning for people using remote script with Chrome. Users have to update to official version. // [*] Performances improved. // [*] Fixed incompatibilities with Firefox 4. // [*] Fixed issues with loading indicators on the filters. // [*] Fixed design bugs. // [*] Fixed triggers when removing friend. // [*] Updated notifications. // [*] Fixed issue when getting a lot of unfriends in one time. // [*] Translations updated. // [+] Added Espaol (Mexico), thanks to Saul Soto. // [*] Japanese updated, thanks to Masami Hirata. // [*] Greek updated, thanks to Puerto Rojo. // // Version 24: // [+] Added new panel to Facebook's Login screen. // [*] Performances improved. // [*] Updated to work with new Facebook Messages. // [+] Added Az rbaycan dili, thanks to Tural lisoy and Ferid Babayev. // [*] Fixed issues with tutorial. // [*] Updated new Profile integration. // // Version 23: // [*] Changed links to the new Community Page. // [+] Added slenska, thanks to Aron Gumundsson. // [+] New option to only show the number of new unfriends in the counters (Men ubar & Filter) // [*] Fixed bug when displaying unfriend, indicator was loading continuously // [*] Fixed "Cancel all pending Requests" feature, adding delay between each c ancellation. // [*] Welcome box updated as a little tutorial to set up and understand the sc ript for new users. // Thanks to Jay Ranson for the texts. // [*] Many other improvements. // // Version 22: // [*] Fixed a bug affecting the navigation keys on Facebook. // [*] Fixed a new bug when removing a pending request from the profile itself, the script said that the user ignored

// the friend request. // [+] Added the possibility to report the Update bubble after two days. // [+] Added a feature that displays the old name of a profile under its new na me. // [+] Added a close box to hide a notification from the script. // [+] Added links to Hide all unfriends, reappeared, ignored/accepted requests , and to cancel all pending requests. // [*] Fixed lag while typing on Chrome. // [*] Fixed filter issue on Chrome after some Facebook changes. // [*] Changed design on lists. // [*] Fixed design issues. // [-] Removed "Debug" in Settings, it's now recommended to use tools like Fire bug or Javascript Console to get debug messages. // [-] Removed overlays on welcome and help messages. // // Version 21: // [*] Appearance updated // [*] Updated Filters style. // [+] Added a check for redondant deactivated profiles. They will not show up if deactivated after 1day of reactivation. // [*] Languages updated. Thanks to all contributors. // [+] Re-added Beeper for reactivated profiles. // [*] Performances improved. // // Version 20: // [*] Major rebuilt, code rewrited with more classes. // [+] Added Chrome compatibility. // [+] Added Opera compatibility. // [+] Added Safari compatibility, only on MacOS X. // [*] Changed the way to get the Env.user value. // [*] Fixed a bug that marked all new friends as "Reactivated". // [-] Removed GoogleSearch, unused and not working anymore. // [+] Added the ability to hide information message about unfriend/ignored req uest. // [+] Added the ability to reset certain values from the Reset tools in Settin gs. // [+] Added Message Center, in replacement of FanPage stream. // [+] Added Catal , thanks to Hielo Tekmeka. // [+] Added , thanks to . // // Version 19: // [*] Fixed filter issue with different Facebook HTML. // [*] Changed the friends database to friends_page_search.php, more powerful. // [*] Fixed awaiting requests bug. // [*] Fixed broken notifications. // [*] Fixed broken information message when removing a friend. // [*] Fixed "Unfriends" filter position under "Friends". // [+] Added Portugus, thanks to Afonso Sousa, Ricardo Godinho & Claudia Panizza. // [+] Added Bosanski, thanks to Adnan Jusic. // [+] Added Shqip, thanks to Agon Ramizi. // [+] Added , thanks to Ivaylo Mateev. // [+] Added etina, thanks to Marek Bodinger. // [+] Added Bahasa Indonesia, thanks to Dhadan Mstr Dee. // [+] Added Polski, thanks to Michal Dobrowolski. // [+] Added Magyar, thanks to Peter Csaszar-Cs. // // Version 17: // [+] Added a Like Box. // [+] Added automatic language tool, to help you choose the right language acc ording to Facebook's

// [+] Added , thanks to Gene Gisin. // [+] Added Bahasa Melayu thanks to Bateri Eye N C. // [+] Added thanks to Flora Bui. // [+] Added Dansk thanks to Nick Kristensen. // [*] Fixed display bugs. // [*] Fixed issue with "Always Hide" feature. // [*] Updated other languages. // [*] Updated the Settings button on the Welcome screen. // [*] Enhanced the "Update profile picture" feature. // // Version 16: // [+] Added Leet Speak thanks to Foulques Du Peloux De Praron. :)) // [+] Added Arabic thanks to Gassan Khoury. // [+] Added Hebrew thanks to Omri Ossie & Gassan Khoury. // [+] Added English (Upside Down) language. // [+] Added "Awaiting requests" & "Settings" filter. // [+] Added settings to the Homepage, old settings will be removed in future v ersions. // [*] Updated broken notifications due to Facebook changes. // [*] Fixed uiButton design, after Facebook changes. // [*] Updated left filter. // [*] Fixed the 'undefined' bug in Unfriends List. // [*] Fixed "Always Hide" feature. // // Version 15: // [*] Major rebuilt, code rewrited, using more classes, waiting the Facebook p age to be fully loaded, minimizing errors. // [*] Updated the way to differentiate unfriends and deactivated profiles. // [+] Added Swedish thanks to Torbjrn Lygren. // [+] Added Traditional Chinese thanks to acedia0915. // [+] Added Finnish thanks to Teemu Pohjalainen. // [+] Added Dutch thanks to Emmanuel Gounaropoulos. // [+] Added Greek thanks to Emmanuel Gounaropoulos and Panayiotis Panos. // [+] Added German thanks to Simon Zllner. // [+] Added Croatian thanks to Karmela Mestrovic. // [+] Added Norwegian thanks to -Mats Bakken. // [+] Added Turkish thanks to Emre Kep. // [+] Re-added Beeper that Facebook removed. // [+] Highlighting new unfriends/reappeared/requests ignored and accepted. // [+] Displaying old filters on every /friends/?filter=* page. // [+] Added "Always Hide" function to hide permanently redondant Unfriends. // Hold shift key when clicking "Hide". // [+] Unfriends check date are stored and displayed on lists. // [+] Cancel detection of unfriend when removing friend by yourself, can be di sabled by setting. // [+] Opacity of profile picture changed to 0.4 for profiles deactivated. // [+] Added contextual Help on first v15 launch. // [+] Added a tool to export/import all data. // [+] Added new setting Beeper when changing a setting. // [+] Added new reappeared Beeper when a profile is reactivated. // [+] Added new friend Beeper when someone accept your friend request. // [-] Script won't hide right ads anymore, use an adblock or another script to hide Facebook ads. // [*] Fixed a lot of display bugs. // [*] Fixed Multi-notification bug for the same profile, due to a Facebook iss ue. // [*] Enhanced notifications, maximum 5 notifications are displayed. // [*] Fixed "Update Profile Pictures" setting, that sometimes gives silhouette . // Using the new graph API.

// [*] Rebuilded Welcome messages. // [*] Updated the way to write that the profile was in your friendlist/ignored your friend request. // // Version 14: // [*] Fixed Facebook changes that hide the filter on the left. // [*] Fixed Beeper display bug. // [*] Hiding loading indicator when got no unfriends but many reappeared profi les. // [*] Fixed the "Showing Button" Loop due to Facebook Connect. // // Version 13: // [*] Fixed Missing link in menubar. // [*] Language update: Slovesnky // // Version 11: // [+] Added new list layout to fit in the Facebook Redesign // [+] Added Simplified Chinese, thanks to Luke Davies & Richard Li (Grammar Co rrection) // [*] Fixed "Profile Picture Cache" of facebook. // [*] New settings handler, more flexible. // // Version 10: // [*] Fixed Facebook redesign bug. // [+] Added Armenian ( ), thanks to Aram Bayadyan. // [?] Script copyrighted and released under Creative Commons. // // Version 9: // [*] Fixed critical bug. // [*] Updated Serbian // // Version 8 : // [*] Fixed bug that gives lots of notifications on ignored requests. // [*] Languages: Serbian and Slovakian completed. // [*] Fixed different bugs when removing unfriend/awaiting request. // [*] Lots of little display and behavior enhancements on lists. // [+] Animation when hiding Unfriend/Awaiting request/Reappeared. // [*] Fixed Tooltips display and behvior. // [*] Displaying "No Unfriend" and "No Awaiting Request" when removing the last item of the list. // [*] Lots of little display and behavior enhancements on notifications and be eper. // [*] Fixed Beeper selection. // [*] Hide Beeper when opening notification tab. // [*] Fixed notification fade animation to white. // [*] Hide notification counter when notification tab is already open. // [*] Improving notifications engine on id storage. // // Version 7 : // [*] Tiny bug fixed about \u prefix for non-ascii chars in Unfriend or awaiti ng names. // [+] Added new languages : French, Espaol, Italiano. Serbian, Slovakian, in pro gress. // [+] Added facebook Dialog integration. // [*] Notifications enabled by default. // [+] Added getting started's contextual dialog to lead new user to a better e xperience. // [*] Fixed "No Unfriends" display on other lists // [*] Fixed other display issues. // [+] Added new information on the profile box, to know is current profile was

in your friendlist or ignored your last friend request. // [+] Added emergency reset in the Greasemonkey Menu. // // Version 6 : // [*] Fixed notifications. // [*] Fixed "undefined" names // [*] Fixed "Unfriend" list replaced by the "Recently Updated" list // [*] Fixed awaiting requests that reappears after being removed. // [+] Added "BeeperBox" to notify user from Unfriends, Ignored requests, and n ew script version. // // Version 5 : // [*] Fixed critical bug, Unfriends and Awaiting requests are hidden. // // Version 4 : // [+] Core rewrited with class collections to handle more easily lists. // [+] Added update checker with button in toolbar. // [+] Added the state "Reappeared" // [*] Due to a facebook bug, changing url to retrieve all friends. Removed sup erfriends.php, added typeahead_search.php // [+] Fixed graphic bug on Unfriends bubble. // [+] Command registered for refreshing menubar link. (Access by rightclicking greasemonkey's head in firefox statusbar) // [+] Added googleSearch functionnality, to automatically search for profiles without information. // [+] Added notifications. // [+] Added settings panel : // [+] Added panel to manage profile display // [+] Added panel to export or import backups //no privacy issues. // [+] Added panel to manage googleSearch // [?] Language can't be changed at this time. // [+] Added panel to reset all settings. // // Version 3 : // [*] Fixed several bugs on design // [+] Ignored/Confirmed friend requests are shown // [*] Ability to remove pending request from "Awaiting List" // [*] Hiding tooltip "Hide unfriend", when removing one. // [+] Fixed bug "missing unfriends infos" // [+] Added the state "Profile being deactivated" // // For questions about all changes, check and post on : // // Fanpage : http://www.facebook.com/pages/Unfriend-Finder/173714342679390 // Group : http://www.facebook.com/group.php?gid=98534953863 // //Script parameters var core; var LANG; var script; var innerScript; var FAILURE = 0; var Facebook = this['unsafeWindow'] window; var startTime = (new Date()).getTime(); var protocol = (location.protocol==='https:'?'https:':'http:'); var Params = { version: 31, built: 940, preview: false,

dev: false, ready: false, started: false, debug: false, enabled: true, iFrame: false, isPage: false, canRun: (getFromId('blueBar')?true:false), mobile:/(iphone touch m)\.facebook\.com/.test(location.href), newFBUser: false, timeLoop: 60, //Interval of checkings in seconds. Set to 0 to disable 'real time checking'. timeoutLoad: 2.5, timerFooter: 2, maxNotifications: 6, //maximum of notifications/beepers displayed hideFacebookBug: true, autoHideAfter: 4, //Auto Hide Unfriend after x detections (Facebook bug) lang: null, profilePicRegex: /(?:class=\\"img\\" )?src(?:\\)?=\\"([^"]*)\\" alt(?:\\)?=\ \"([^"]*)\\" id(?:\\)?=\\"profile_pic\\"/, maxItemsInList: { reappeared: 5, unfriend: 20, accepted: 5, ignored: 5, both: 10, pending: 30 }, protocol: protocol, host: location.host, isFan: false, groupJoigned: false, showId: false, links: { page: protocol+'//www.facebook.com/pages/Unfriend-Finder/173714342679390 ', group: protocol+'//www.facebook.com/group.php?gid=98534953863', twitter: 'http://twitter.com/unfriendfinder', donate: 'http://www.unfriendfinder.com/donate', forum: 'http://www.unfriendfinder.com/forum', update: 'http://www.unfriendfinder.net/unfriend_finder.user.js', rsrc: (location.protocol==='https:'?'https://s-static.ak.facebook.com/rs rc.php':'http://b.static.ak.fbcdn.net/rsrc.php') }, images: { noPicture: (location.protocol==='https:'?'https://s-static.ak.facebook.c om':'http://b.static.ak.fbcdn.net')+'/pics/q_silhouette.gif', silhouette: { male: (location.protocol==='https:'?'https://s-static.ak.facebook.co m':'http://b.static.ak.fbcdn.net')+'/images/profile/blankSilhouetteMale.png', female: (location.protocol==='https:'?'https://s-static.ak.facebook. com':'http://b.static.ak.fbcdn.net')+'/images/profile/blankSilhouetteFemale.png' }, smallIndicator: (location.protocol==='https:'?'https://s-static.ak.faceb ook.com':'http://b.static.ak.fbcdn.net')+'/images/loaders/indicator_blue_small.g if', bigIndicator: (location.protocol==='https:'?'https://s-static.ak.faceboo k.com/rsrc.php':'http://b.static.ak.fbcdn.net/rsrc.php')+'/z5R48/hash/ejut8v2y.g if', dottedDelimiter: (location.protocol==='https:'?'https://s-static.ak.face

book.com/rsrc.php':'http://b.static.ak.fbcdn.net/rsrc.php')+'/zAX12/hash/75lchh0 v.gif', blank: (location.protocol==='https:'?'https://s-static.ak.facebook.com/r src.php':'http://b.static.ak.fbcdn.net/rsrc.php')+'/z12E0/hash/8q2anwu7.gif', fanImageSmall: (location.protocol==='https:'?'https://fbcdn-profile-a.ak amaihd.net/hprofile-ak-snc4/hs236.ash2/50512_119492378113154_8293078_q.jpg':'htt p://profile.ak.fbcdn.net/hprofile-ak-snc4/hs236.ash2/50512_119492378113154_82930 78_q.jpg'), fanImage: (location.protocol==='https:'?'https://fbcdn-profile-a.akamaih d.net/hprofile-ak-snc4/hs236.ash2/50512_119492378113154_8293078_n.jpg':'http://p rofile.ak.fbcdn.net/hprofile-ak-snc4/hs236.ash2/50512_119492378113154_8293078_n. jpg') }, icons: { unfriends: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAYAAA 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 +OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0A"+ "dh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3u jS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOw"+ "vSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS 7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2"+ "Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarniv N7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw"+ "8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FY mKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm"+

"4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7 ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtx"+ "wPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTra dox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5"+ "SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPK y2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L1"+ "58Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H 9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzy"+ "aeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcd x3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAe"+ "iUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAABBRJREFUeNpMwTEBADAMgDD4 pqnyapy+S6z4WREkOPs6AAAA//9ixFDx7////4WdmxhO/QxjOFb3gwEAAAD/"+ "/2L8//8/w/LtF/5HehowwlQt3HD+f3yAISMDAwMD494Tt/8LC3AzCPFzMvQuPMTw4f0fhp+ //jAI/TzIMHXqVAYAAAAA///CsAMdMF648fQ/AwMDg766FCMDAwNDVMmq/ww"+ "MDAzLesIQVjiaqzB8+vyDgZ+XgzGrcfP/C4yhDCK8kgybCu8zMl648ew/AwMDw/wNpxkYGB gYXr78wcDAwMCwvC+MgYGBgQEAAAD//2L8//8/w7o9l////P2XgZ2VmSHIRZ"+ "cR3R21k/b9V5ETZLjz6D1Dc54TI0bI9S48+F9KjJ/h2auPDGHu+gy9Cw8xMDAwMEwo92NkY GBg2HH4zv+Xbz8ziAvzMmxa3scwbdo0uH7GCzee/b927yXDuw/f4KZmRVoxF"+ "HZuYphQ7scYWbTqv4edKoOB6Ru4fOZcX4ZjdT8gBqAH47W7r/7zcLExMEIdKishgOLk7KK0 /ww/WRlg+gAiGA+EAOP///8Zdh69+Z+FmZnB2UKFEZuipqkH/v/+/YehucCF"+ "EasBq3Ze+s/EyMAQ4qaH1YA5q8/+//f/H0NamCl2A05dfvyfgYGBwUxXlrGgc9N/BgYGhqI 4OwY5SYj/02o2/GdgYGCY1RLAyMDA8J+BgYEhOzubYerUqZBA/PT1539ebna"+ "4qYWdmxiK4+3gAejarPn/6//7cPljdT8YsrKyGKZNm8bIuHLHxf+h7noM05Yfgyu4/egN3I A5a87+n3fNmmF68ma4vL60K8IAWFKFAViSZWBgYCiOt2Mo69qF4mdYEmZgYG"+ "DIyspiwIjGxy8+wAU+f/3FoKUshhJwWVlZcHlGjj8MANLK3yWBMA7jz2teXU1BNlhDhYjcZ EMQNRj0YymhzcH+gcC23KVcq+2OcC4CJwenCPqxBNEiDXE4aFAH0QWZYZp63"+ "xZP37uUFJ/15X15+H6fz/NaHri4zdLY6AjeP0pYXfCyXjOxs5+mQvEbw+IgEvFN1nWOACCj aqTmddQNA8KAA96pcfh97q5NhKNJWp73QBAcqFRquLzL4ewwxHoykH3SUa2b"+ "Blzw+yaYHa1Oo92KJikwNwNRdKJcruHmPofTgxCzo2eOXj5KsD8opq8fiUBgYAguSczcqdk ufDjsjAPAdixN05Mu5F90HO8Fmblzrn2a4VEUpWUgo2r0/FrAekCyxNlyqdF"+ "QdsgAILybpFnJjZS2Zok7L67BmhA2Ol8jNf+GumFgIyCBB5LXZ7GMmHLenAAR8FX6QVy+ws qiB4LTgZOHMHhgeTW+iBY+jAFDVfzbhu1WYMo+iXaKRCIky3KnM/Rdx/3qdw"+ "C0I8vSCIZ9FwAAAABJRU5ErkJggg==", awaitings: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAYAAA 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 +OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0A"+ "dh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3u jS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOw"+ "vSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS 7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2"+ "Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarniv N7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw"+ "8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FY mKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm"+ "4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7 ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtx"+ "wPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTra dox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5"+ "SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPK y2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L1"+ "58Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H 9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzy"+ "aeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcd x3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAe"+ "iUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAABF5JREFUeNpi/P//PwMyYEQX AAAAAP//whRYtu38/1OXHzMYqMkwxPjpMgAAAAD//wBCAL3/Af///wCnt9D/"+ "ydLiAI93TgABAAABobDP/1xOLQA9hAwAAb3I2/8TEAsA7fD1AEE3JABheK4A+fr8AAcGBAD aCloAAAAA///CsAMdMF648fS/nroUw+evPxnqpuxkePX6B8MDvjgGEV5JhvX"+ "5tyFWMDAwMDiaqzB8/vqToaJnFwMDAwPDBcZQBhFeSQbGCzee/WdgYGBYsPEMQ3+ZL2Nk0a r/DAwMDEt7gxmYGJkZAQAAAP//Yvz//z/Duj2X///8/ZeBnZWZIdBFl6Gwcx"+ "MDAwMDQ1OOOwMfNztj7aR9/1XkBBnuPHrPsPeDF8Oxuh8MDAwMDH79ipCQ61148L+UGD/Ds 1cfGYrj7RkZGBgY/jMw/C/q2szQX+bLuOPwnf8v335mEBfmZfCwVWFkYGBgs"+ "Gri+H+45gvEidfuvYT7WktJnGHBxjMMfWW+DIwMDIyRRav+e9ipwuV3HLrNsLQ3mMGmmZvh WN0PRqzB+J+B4f/nrz8Z+LjZGbEFrVUTx38RXkmGTYX3GQGEkj9IAnEcxT+/"+ "u4uGQwhyEZRwiCYdglpyb5MW16ZqrslFLsh2lxwKae6PgzR1TkXlkEhoEASBRVBLkykoZ/d tyLs4F9/+Hu/7/byJHCZJiQj23bMYus5SIoZ1YAP4swDYK16J4wxpyiYXO22"+ "vxf8JZ3ZLNAW3D68UsmkfuhdSOm+IKy4bmUVSeZNwKEJl+4VU3vxrcP/4LgDLiZgC6PQGsl us+o/cylUE4Gh/TY3wSSCgXG0JwPxcWMWjswEzwOFJXQCu623VjWZ9c83qK3"+ "V62ZQf1wVA1zQyq0k8/gClckOmDA0AZ+hy/LTCTa6LrhlqNPaPAIbkQiQQ4E3X09vMejBgH GOnN5CQOe3XH1e6EJev709qVl8B/NJS/S4JhVH0fM/Mlz9KSBGpwTB4NCQNg"+ "WDUYNFmQ0OQgXNDNJjUFEI1NdTWH+Haa6shiFp1MpFAoRTpBalZij9uQ7zH+/wRNHS2+8G9 99x77vm4AtcPWRq3m/H2/olKrc7WV2a1gnoMOrKdI5nK1S+MiMNwOW3seDeo"+ "NdRDPUKOQCpToExOQbvTgdEgYHVBgs1i0ox5frAGAFysJxKOJSjo98JoFNBotCAXNqBUi7g 7rIGIsHhiBQAudtjcPIFsXkGzzRPonpgA0pNQV70VS9DS/BREcQj1egtXxR8"+ "C3RMHjkTSk+AkkG/TRCAwMJhFIwv6p3u0jZ5eAgDO9kM9UmzHZfJMOJB7USAIxC7ioR7t+2 4glSnQc6mMSq2hJYxaTJh0jQFgzCe56bfG4b0Ezc244XJYtfyS8oFkuggisL"+ "w9Qt2NtRtIPhYok3uF6iU9DIIAyeOET3LzH5DuwjejCVoOeKF6TY9mq4Ob+yfk7RHuXXVAX xv1g/q5qxsYZLFB6Nb9zwT+E98DALinKYhuso9YAAAAAElFTkSuQmCC", deactivated: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYA 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 Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW"+ "0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo 3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaH"+ "OwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTX qS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZ"+ "O2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarn ivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWB"+ "qw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+ FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aX"+ "Dm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7 R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXH"+ "txwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDT radox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PF"+ "l5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4d PKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9"+ "L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv 3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89k"+ "zyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXf cdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQA"+ "AeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAmhJREFUeNoEwUENADAIBL Au4Y0X1KARlbe2kri77O4r6G5QMDPgAwAA//9i+f//P0KUgYGBgeXFixf/GR"+ "gYGAAAAAD//4JL7dix47+HhwcjXFl9ff1/S0tLhpaWlv81NTWMAAAAAP//PM6xCQBRCMDQI L91Ft3Dcd3FxkmsvOLAPjxy5RkAmbkiQkT8A1XFzBARvO5eMwOgu/epKu5+x"+ "gcAAP//ZI+xDQAgCARfOrYxsWEGhnEOJiLOYm/tBmJFYbz68/f/lJpZ1Fox50TvvTyiJA8y 878m2XsjIrDW+kPuHkSE1hoAQEQwxohzDlS1XAAAAP//bJEhDoQwFEQfpBoB"+ "dyEIbGVxaPxPegUOgOUShKQKLBbJPbAE/1ftJmUZ/TIzmYk6Hceh67rS9/1/n33f9bouyrJ kWRZ1ziUREELAWgvAtm0452KHqqp+Ud+3IqBt22SaJjXG0HXd+yZpmvKUARj"+ "HUfM8pygKAOZ51vM88d4nRkS0aRqe62ZZhoioGYaB+755U13XfCgnQ1ULgSAM/wuXTSLIug ajJsUmtn0H30KxmcwWg0mfwLfwKQRB2KQY7Bvshj3hck85HvD+8Wf4Zvhn5u"+ "Mi/tS2rb6uC4wxcM4hpURd1+Su9ufOrKpKCyFAKX17SZKgLEvd9z15BPk23TfdQoqiwDAME

EJAaw1CCKZpQpZlzyGe5xHOuVZKgTEGpRQsy0IYhs8yWddVj+MIx3Heu7RtG"+ "5RSNE2j0zRFFEXkA9J1nT7PE77vw3EcBEHw0c00TcRxjOM4MM+z3vcdrusiz/Pfl962DYZh QEr5r0CXZQEAvAYAadLU7xdNrj0AAAAASUVORK5CYII=" }, Facebox: { Fades: { Step: 0.1, Timer: 5 }, Langs: true }, Beeper: { enabled: true, timer: 7, //Duration of displaying beepers unfriend: true, ignored: true, deactivated: true, reappeared: true, settings: true, newversion: true, newfriend: true, messages: true }, Logging: { times: true, errors: true, infos: true, warnings: true, debug: true, messages: true }, Ajax: { Headers: { 'Content-type': 'application/x-www-form-urlencoded', 'Pragma' : 'no-cache' } }, Paging: { }, defaultHelps: { menubar: false, filter: false, awaitings: false, settings: false, oldList: false }, defaultSettings: { deactivated: true, reappeared: true, accepted: true, ignored: true, icons: true, uid: false, displayBlocks: false, notifUnfriend: true, notifIgnored: true, webkitNotifications: false, updatePicture: true, hideInMenubar: false, onlyShowNewUnfriends: true, dissociateLists: true, showTime: true, logging: false,

}; var Strings = { };

}, defaultLanguage: null, _0x4d22: "Unfriend Finder", filterName: 'navItem_app_01', versionChanged: false, url: window.location.href, env: { }, settings: { }

hideOwnUnfriends: true, paging: 20, hideNub: false, newManagementLists: false

var ErrorHandler = function(exception, from) { Console.error(exception.constructor.name+(from?' from '+from:'')+' :\n'+exce ption.message); } //Copy properties from object to object function Extend(target, source) { if (typeof source === 'object') { var property; for (property in source) { if (source.hasOwnProperty(property)) { if (source[property] != null) { if (/Object/.test(source[property].constructor)) { if (property in target) void(0); else target[property] = {}; Extend(target[property], source[property]); } else try { target[property] = source[property]; } catch (exception) { new ErrorHandler(exception, 'Extend()'); } } } } } return target; }; function ExtendNew(target, source){ if (!target) target = {}; if (typeof source === 'object') { var property; for (property in source) { if (source.hasOwnProperty(property)) { if (typeof source[property] === 'object') { if (property in target) void(0); else { target[property] = {}; ExtendNew(target[property], source[property]); } } else try { if (property in target) void(0); else target[property] = source[property];

} }

} catch (exception) { new ErrorHandler(exception, 'ExtendNew()'); }

};

} return target;

initEnv(); footer(); /* html-xpath, an implementation of DOM Level 3 XPath for Internet Explorer 5+ Copyright (C) 2004 Dimitri Glazkov This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software */ if (Params.env.isIE) { document.DomL3XPathRelease = "0.0.3.0"; var XPathException = new _XPathExceptionHandler(); function _XPathExceptionHandler() { this.INVALID_EXPRESSION_ERR = 51; this.TYPE_ERR = 52; this.NOT_IMPLEMENTED_ERR = -1; this.RUNTIME_ERR = -2; this.ThrowNotImplemented = function(message) { ThrowError(this.NOT_IMPLEMENTED_ERR, "This functionality is not impl emented.", message); } this.ThrowInvalidExpression = function(message) { ThrowError(this.INVALID_EXPRESSION_ERR, "Invalid expression", messag } this.ThrowType = function(message) { ThrowError(this.TYPE_ERR, "Type error", message); } this.Throw = function(message) { ThrowError(this.RUNTIME_ERR, "Run-time error", message); } function ThrowError(code, description, message) {

e);

var error = new Error(code, "DOM-L3-XPath " + document.DomL3XPathRel ease + ": " + description + (message ? ", \"" + message + "\"": "")); error.code = code; error.name = "XPathException"; throw error; } } var DOMException = new _DOMExceptionHandler(); function _DOMExceptionHandler() { this.ThrowInvalidState = function(message) { ThrowError(13, "The state of the object is no longer valid", message }

);

function ThrowError(code, description, message) { var error = new Error(code, "DOM : " + description + (message ? ", \ "" + message + "\"": "")); error.code = code; error.name = "DOMException"; throw error; } } function XPathExpression(expression, resolver) { this.expressionString = expression; this.resolver = resolver; this.evaluate = function(contextNode,type,result) { return (result && result.constructor == XPathResult ? result.initial ize(this, contextNode, resolver, type) : new XPathResult(this, contextNode, reso lver, type)); } this.toString = function() { return "[XPathExpression]"; }

}

// XPathNSResolver function XPathNSResolver(node) { this.node = node; // String lookupNamespaceURI(String prefix) this.lookupNamespaceURI = function(prefix) { XPathException.ThrowNotImplemented(); return null; } this.toString = function() { return "[XPathNSResolver]"; }

}

XPathResult.ANY_TYPE = 0; XPathResult.NUMBER_TYPE = 1; XPathResult.STRING_TYPE = 2; XPathResult.BOOLEAN_TYPE = 3; XPathResult.UNORDERED_NODE_ITERATOR_TYPE = 4;

XPathResult.ORDERED_NODE_ITERATOR_TYPE = 5; XPathResult.UNORDERED_SNAPSHOT_TYPE = 6; XPathResult.ORDERED_SNAPSHOT_TYPE = 7; XPathResult.ANY_UNORDERED_NODE_TYPE = 8; XPathResult.FIRST_ORDERED_NODE_TYPE = 9; function XPathResult(expression, contextNode, resolver, type) { this.initialize = function(expression, contextNode, resolver, type) { this._domResult = null; this._expression = expression; this._contextNode = contextNode; this._resolver = resolver; if (type) { this.resultType = type; this._isIterator = (type == XPathResult.UNORDERED_NODE_ITERATOR_ TYPE type == XPathResult.ORDERED_NODE_ITERATOR_TYPE type == XPathResult.AN Y_TYPE); this._isSnapshot = (type == XPathResult.UNORDERED_SNAPSHOT_TYPE type == XPathResult.ORDERED_SNAPSHOT_TYPE); this._isNodeSet = type > XPathResult.BOOLEAN_TYPE; } else { this.resultType = XPathResult.ANY_TYPE; this._isIterator = true; this._isSnapshot = false; this._isNodeSet = true; } return this; }; this.initialize(expression, contextNode, resolver, type); this.getInvalidIteratorState = function() { return documentChangeDetected() !this._isIterator; }; this.getSnapshotLength = function() { if (!this._isSnapshot) XPathException.ThrowType("Snapshot is not an expected result type"); activateResult(this); return this._domResult.length; }; this.iterateNext = function() { if (!this._isIterator) XPathException.ThrowType("Iterator is not an expected result type"); activateResult(this); if (documentChangeDetected()) DOMException.ThrowInvalidState("iterat eNext"); return getNextNode(this); }; this.snapshotItem = function(index) { if (!this._isSnapshot) XPathException.ThrowType("Snapshot is not an expected result type"); return getItemNode(this, index); }; this.toString = function() { return "[XPathResult]"; };

this.getStringValue = function() { if (this.resultType != XPathResult.STRING_TYPE) XPathException.Throw Type("The expression can not be converted to return String"); return getNodeText(this); }; this.getNumberValue = function() { if (this.resultType != XPathResult.NUMBER_TYPE) XPathException.Throw Type("The expression can not be converted to return Number"); var number = parseInt(getNodeText(this)); if (isNaN(number)) XPathException.ThrowType("The result can not be c onverted to Number"); return number; }; this.getBooleanValue = function() { if (this.resultType != XPathResult.BOOLEAN_TYPE) XPathException.Thro wType("The expression can not be converted to return Boolean"); var text = getNodeText(this); bool = (text ? text.toLowerCase() : null); if (bool == "false" bool == "true") return bool; XPathException.ThrowType("The result can not be converted to Boolean }

");

this.getSingleNodeValue = function() { if (this.resultType != XPathResult.ANY_UNORDERED_NODE_TYPE && this.r esultType != XPathResult.FIRST_ORDERED_NODE_TYPE) XPathException.ThrowType("The expression can not be converted to return single Node value"); return getSingleNode(this); }; function documentChangeDetected() { return document._XPathMsxmlDocumentHelper.documentChangeDetected(); } function getNodeText(result) { activateResult(result); return result._textResult; } function findNode(result, current) { switch(current.nodeType) { case 1: var id = current.attributes.getNamedItem("id"); if (id) return document.getElementById(id.value); XPathException.Throw("unable to locate element in XML tree") case 2: var id = current.selectSingleNode("..").attributes.getNamedItem( if (id) { var node = document.getElementById(id.text); if (node) return node.attributes.getNamedItem(current.nodeNa } XPathException.Throw("unable to locate attribute in XML tree"); case 3:

; "id");

me);

"id");

var id = current.selectSingleNode("..").attributes.getNamedItem(

if (id) { var node = document.getElementById(id.value); if (node) { for(child in node.childNodes) { if (child.nodeType == 3 && child.nodeValue == curren t.nodeValue) return child; } } } XPathException.Throw("unable to locate text in XML tree"); } XPathException.Throw("unknown node type"); } function activateResult(result) { if (!result._domResult) { try { var expression = result._expression.expressionString; if (result._contextNode != document && expression.indexOf("/ /") != 0) expression = "//*[@id = '" + result._contextNode.id + "']" + (expressi on.indexOf("/") == 0 ? "" : "/") + expression; if (result._isNodeSet) result._domResult = document._XPathMs xmlDocumentHelper.getDom().selectNodes(expression); else { result._domResult = true; result._textResult = document._XPathMsxmlDocumentHelper. getTextResult(expression); } } catch(error) { XPathException.ThrowInvalidExpression(error.description); }

}

}

function getSingleNode(result) { var node = getItemNode(result, 0); result._domResult = null; return node; } function getItemNode(result, index) { activateResult(result); var current = result._domResult.item(index); return (current ? findNode(result, current) : null); } function getNextNode(result) { var current = result._domResult.nextNode; if (current) { return findNode(result, current); } result._domResult = null; return null; }

}

document._XPathMsxmlDocumentHelper = new _XPathMsxmlDocumentHelper(); function _XPathMsxmlDocumentHelper() { this.getDom = function() { activateDom(this); return this.dom; } this.getXml = function() { activateDom(this); return this.dom.xml; } this.getTextResult = function(expression) { expression = expression.replace(//g, ">"). replace(/"/g, "\""); var xslText = "" + "" + ""; var xsl = new ActiveXObject("Msxml2.DOMDocument"); xsl.loadXML(xslText); try { var result = this.getDom().transformNode(xsl); } catch(error) { alert("Error: " + error.description); } return result; } this.reset = function() { this.dom = null; } function onPropertyChangeEventHandler() { document._propertyChangeDetected = true; } this.documentChangeDetected = function() { return (document.ignoreDocumentChanges ? false : this._currentElemen tCount != document.all.length document._propertyChangeDetected); } function activateDom(helper) { if (!helper.dom) { var dom = new ActiveXObject("Msxml2.DOMDocument"); dom.async = false; dom.resolveExternals = false; loadDocument(dom, helper); helper.dom = dom; helper._currentElementCount = document.all.length; document._propertyChangeDetected = false; } else { if (helper.documentChangeDetected()) { var dom = helper.dom; dom.load("");

}

}

}

loadDocument(dom, helper); helper._currentElementCount = document.all.length; document._propertyChangeDetected = false;

function loadDocument(dom, helper) { return loadNode(dom, dom, document.body, helper); } function loadNode(dom, domParentNode, node, helper) { if (node.nodeType == 3) { domParentNode.appendChild(dom.createTextNode(node.nodeValue)); } else { var domNode = dom.createElement(node.nodeName.toLowerCase()); if (!node.id) { node.id = node.uniqueID; } domParentNode.appendChild(domNode); loadAttributes(dom, domNode, node); var length = node.childNodes.length; for(var i = 0; i < length; i ++ ) { loadNode(dom, domNode, node.childNodes[i], helper); } node.attachEvent("onpropertychange", onPropertyChangeEventHandle } }

r);

function loadAttributes(dom, domParentNode, node) { for (var i = 0; i < node.attributes.length; i ++ ) { var attribute = node.attributes[i]; var attributeValue = attribute.nodeValue; if (attributeValue && attribute.specified) { var domAttribute = dom.createAttribute(attribute.nodeName); domAttribute.value = attributeValue; domParentNode.setAttributeNode(domAttribute); } } } } document.reloadDom = function() { document._XPathMsxmlDocumentHelper.reset(); }; document.createExpression = function(expression, resolver) { return new XPathExpression(expression, resolver); }; document.createNSResolver = function(nodeResolver) { return new XPathNSResolver(nodeResolver); }; document.evaluate = function(expression, contextNode, resolver, type, result

) {

return document.createExpression(expression, resolver).evaluate(contextN ode, type, result); }; } var xPathSelector = function(__constructor) { var xps = this; var xpath = __constructor; xps.getSingleNodeValue = function() { try { return document.evaluate(xpath, document, null, 9, null).singleNodeV alue; } catch (exception) { new ErrorHandler(exception, 'xPathSelector::getSingleNodeValue'); return null; } }; xps.getMultipleNodeValues = function() { try { return document.evaluate(xpath, document, null, 0, null); } catch (exception) { new ErrorHandler(exception, 'xPathSelector::getMultipleNodeValues'); return null; } }; xps.numberValues = function() { try { return document.evaluate("count("+xpath+")", document, null, 0, null ).numberValue; } catch (exception) { new ErrorHandler(exception, 'xPathSelector::numberValues'); return -1; } }; }; xps.toString = function() { return '[xPath Selector "'+xpath+'"]'; }

try { Params.settings = eval(getKey('settings', stringify(Params.defaultSettings ))); } catch (exception) { Params.settings = Params.defaultSettings; new ErrorHandler(e xception); } ExtendNew(Params.settings, Params.defaultSettings); setKey('settings', stringify(Params.settings)); Params.enabled = (getKey('enabled', 'enabled') == 'enabled'?true:false); Params.database = 'page_search'; //can be 'page_search' (old database), or 'firs t_degree' (new database, but without awaiting requests). Params.newFBUser = ((new xPathSelector(".//ul[@id='pageNav']/li/a[contains(@href , 'www.facebook.com/?sk=ff')]")).getSingleNodeValue()?true:false); Params.isPage = ((new xPathSelector(".//ul[@id='pageNav']/li[@id='navAccount']/u l/li/form[contains(@action, '/identity_switch.php')]")).getSingleNodeValue()?tru e:false); try { Params.iFrame = (window.top != self); } catch (exception) { new ErrorHandl er(exception); } try { if (Params.mobile) Params.mobileId = getFromId('m_user_DEPRECATED').value; } catch (exception) { new ErrorHandler(exception); }

function getFromId(_id) { return document.getElementById(_id) };

null;

function getCoreFilter() { if (getFromId(Params.settings.previousFilter)) return getFromId(Params.setti ngs.previousFilter); return getFromId('navItem_nf') getFromId('navItem_app_4748854339'); } function getSideNav() { if (getCoreFilter().id == 'navItem_nf') return getFromId('navItem_nf').paren tNode; else { if (Params.settings.previousFilter == 'unfavorited') return (new xPathSe lector(".//div[@id='appsNav']/ul")).getSingleNodeValue(); else return getCoreFilter().parentNode; } } function evalName(name) { return eval('"'+name.replace(/"/g, '\"')+'"'); } var xHTMLElement = function(__constructor) { var htmlelement = this; htmlelement.element = null; var event; htmlelement.build = function() { try { if (!__constructor.element) return false; htmlelement.element = document.createElement(__constructor.element); if (__constructor.listeners) { for (event in __constructor.listeners) { if (typeof __constructor.listeners[event] == 'function') Eve ntMgr.addListener(htmlelement.element, event, __constructor.listeners[event]); } delete __constructor.listeners;

} try { Extend(htmlelement.element, __constructor); } catch (exception ) { new ErrorHandler(exception, 'htmlelement.Extend()'); } if (__constructor.parentNode) { htmlelement.appendTo(__constructor.parentNode); delete __constructor.parentNode;

}

};

return htmlelement; } catch (exception) { new ErrorHandler(exception, 'htmlelement.build()'); return false; }

htmlelement.appendTo = function(__parent) {

try { if (__parent) { if (htmlelement.element.before) __parent.insertBefore(htmlelemen t.element, htmlelement.element.before); else if (htmlelement.element.after) { if (htmlelement.element.after.nextSibling) __parent.insertBe fore(htmlelement.element, htmlelement.element.after.nextSibling); else __parent.appendChild(htmlelement.element); } else __parent.appendChild(htmlelement.element); } return htmlelement; } catch (exception) { alert('Error '+exception.message) new ErrorHandler(exception, 'htmlelement.appendTo()'); return false; } }; htmlelement.getElement = function() { return htmlelement.element; }; htmlelement.toString = function() { return '[object xHTMLElement]'; }; }; return htmlelement.build();

var Console = { time: function($str) { if (!Params.debug) return; try { if (Params.Logging.times) console.time($str); } catch (exception) { ; } }, error: function($str) { if (!Params.debug) return; try { if (Params.Logging.errors) console.error($str); } catch (exception) { ; } }, info: function($str) { if (!Params.debug) return; try { if (Params.Logging.infos) console.info($str); } catch (exception) { ; } }, warn: function($str) { if (!Params.debug) return; try { if (Params.Logging.warnings) console.warn($str); } catch (exception) { ; } } , debug: function($str) { if (!Params.debug) return; try { if (Params.Logging.debug) console.debug($str); } catch (exception) { ; } }, log: function($str) { if (!Params.debug) return; try { if (Params.Logging.messages) console.log($str); } catch (exception) { ; }

};

}, timeEnd: function($str) { if (!Params.debug) return; try { if (Params.Logging.times) console.timeEnd($str); } catch (exception) { ; } }

//Versions compatibility if (parseInt(getKey('version', '0'), 10) < parseInt(Params.version, 10)) Params. versionChanged = true; setKey('version', Params.version); //Cross-Browser injection to bypass unsafeWindow function inject(o, persistent) { if (head = document.querySelector("body")) { s = document.createElement('script'); s.innerHTML = o; head.appendChild(s); if (!persistent) head.removeChild(s); } }; //Transform object into a string function stringify($object) { try { if (this['uneval']) return uneval($object); //Firefox else if (this['JSON']) { if (typeof $object == 'object') return '('+JSON.stringify($object)+' )'; else return JSON.stringify($object); } //Chrome/Opera } catch (exception) { new ErrorHandler(exception, 'stringify()'); } }; //Transform object into an array function toArray($object) { var ret = []; var property; for (property in $object) { if ($object.hasOwnProperty(property)) ret.push($object[property]); } return ret; } if (!document.getElementsByClassName) document.getElementsByClassName = function ($className) { try { var elements = new Array(), children = (new xPathSelector(".//*[contains (concat(' ', @class, ' '), ' "+$className+" ')]")).getMultipleNodeValues(), chil d; while (child = children.iterateNext()) { elements.push(child); } return elements; } catch (exception) { new ErrorHandler(exception, 'document.getElementsByClass Name()'); return new Array(); } }; function rand(n) {

do {

}

f = Math.floor(Math.random()*n+1); if (((f > 48) && (f < 57)) ((f > 97) && (f < 122))) break; } while (Infinity); return f;

function randNumber() { return String.fromCharCode(rand(57)); } var Dispatcher = { FILTER_EVENT: 'filter', NOTIFICATION: 'notification', signals: {}, queue: {}, current: null, inform: function (_signal, _params, _context) { var callback; if (callback = this.signals[_signal].callback) { callback.apply((_context ? _context : this), (_params ? _params : [] )); this.signals[_signal].executed++; } }, registerCallback: function (_signal, _callback) { if (callback = this.signals[_signal]) { alert('Existing signal: ' + _signal); return false; } this.signals[_signal] = { signal: _signal, callback: _callback, executed: 0 }; } }; Dispatcher.registerCallback('onload', function(a, b) { alert('loaded\n'+this+'\n'+a+'\n'+b); }); var EventMgr = { EVENTS: { mouseout: 'mouseout', mousein: 'mousein', mousemove: 'mousemove', mouseover: 'mouseover', mousedown: 'mousedown', mouseup: 'mouseup', readystatechange: 'readystatechange', load: 'load', change: 'change', click: 'click', keydown: 'keydown', keyup: 'keyup', DOMNodeInserted: 'DOMNodeInserted', DOMAttrModified: 'DOMAttrModified', DOMSubtreeModified: 'DOMSubtreeModified', hashChanged: 'hashchange',

popState: 'popstate' }, addListener: function(el, evt, f) { try { if ((el.addEventListener) && (this.EVENTS[evt]) && (typeof f == "f unction")) el.addEventListener(evt, f, false); return evt; } catch (exception) { new ErrorHandler(exception, 'EventMgr.addListener('+ f.toString()+')'); return false; } }, removeListener: function(el, evt, f) { try { if ((el.addEventListener) && (this.EVENTS[evt]) && (typeof f == "f unction")) el.removeEventListener(evt, f, false); return evt; } catch (exception) { new ErrorHandler(exception, 'EventMgr.removeListener ()'); return false; } } }; var CSS3 = { DISPLAY: { none: 'none', block: 'block', compact: 'compact', inline: 'inline', inlineBlock: 'inline-block', listItem: 'list-item', marker: 'marker', runIn: 'run-in', table: 'table', inlineTable: 'inline-table', tableCaption: 'table-caption', tableCell: 'table-cell', tableColumn: 'table-column', tableColumnGroup: 'table-column-group', tableHeaderGroup: 'table-header-group', tableFooterGroup: 'table-footer-group', tableRow: 'table-row', tableRowGroup: 'table-row-group' }, addClass: function(el, newclass) { try { var c = CSS3.listClass(el), d = c.split(' '); var n; newclass = newclass.split(' '); for (n = 0;n 0)) core.Beeper.Hide(); } catch (exception) { new ErrorHandler(exception, 'UFNubToggler.click( )'); } }) if (Params.newVersion == true) { if (updateNubPane = getFromId('updateNubPane')) { getFromId('updatePane').innerHTML = LANG.notif_version+' '+LANG.here+'.'; CSS3.display(updateNubPane, CSS3.DISPLAY.block);

}

}

EventMgr.addListener(getFromId('actionShowSettings'), EventMgr.EVENTS.cl ick, function() { if (getFromId('UFfilterTextSettings')) core.filter.select('settings' ); else core.href(Params.protocol+'//'+Params.host+'/?sk=ufs'); inject("Toggler.toggle(document.getElementById('UFNubToggler'));"); }); if (Params.enabled) { getFromId('actionShowSettings').innerHTML = Params._0x4d22+' '+LANG. settings; setMenuCommand('takeTourLink', 'Take a tour!', function() { setKey(core.user_id+'_takeTour', '1'); core.href(Params.protocol+'//'+Params.host+'/'); }); setMenuCommand('takeTourLink', 'Show tutorial', function() { inject("Toggler.toggle(document.getElementById('UFNubToggler')); "); core.loadWelcomeFacebox(); }); setMenuCommand('checkUpdateAction', 'Check for updates', function() { getFromId('actionLink_checkUpdateAction').innerHTML = ''; core.checkForUpdate(true); }); setMenuCommand('emergencyReset', 'Reset values to default', function (){ if (!core.dialogs['resetFacebox']) core.dialogs['resetFacebox'] = new Facebox({ id: 'resetFacebox', title: LANG.resettitle, body: LANG.resetbody, buttons: [{ name: 'delete_story', value: LANG.reset_, id: 'reset_button', handler: function() { core.dialogs['resetFacebox'].showReset(); setTimeout(function() { setKey(core.user_id + '_unfriends', '({})'); setKey(core.user_id + '_friends', '({})'); setKey(core.user_id + '_toNotify', '({})'); setKey(core.user_id + '_unfriendsInfos', '({})') ; setKey(core.user_id + '_awaitingsIgnored', '({}) '); setKey(core.user_id + '_keepAwaitingList', '({}) '); setKey(core.user_id + '_reappeared', '({})'); setKey(core.user_id + '_deactivated', '({})'); setKey(core.user_id + '_keepAwaitingsTime', '({} )'); setKey(core.user_id + '_messages', '({})'); setKey(core.user_id + '_helps', '({})'); setKey('settings', stringify(Params.defaultSetti

ngs));

},{

}, disabled: false, closer: false, type: 'blue'

setKey('language', ''); setKey(core.user_id + '_lastUpdateCheck', 1); setKey('coreStarted', '0'); core.href(Params.protocol+'//'+Params.host+'/'); }, 1500);

}

});

}] }); core.dialogs['resetFacebox'].Show();

name: 'cancel', value: LANG.btn_cancel, id: 'cancel_button', handler: function() { void(0); }, disabled: false, closer: true, type: 'gray'

setMenuCommand('disableScript', (Params.enabled?'Disable':'Enable'), fun ction() { if (Params.enabled) { if (!core.dialogs['disableFacebox']) core.dialogs['disableFacebo x'] = new Facebox({ id: 'disableFacebox', title: 'You\'re about to temporarily dis able Unfriend Finder.Confirmation de dsactivation tempo raire du script', body: ''+ 'While disabled, the script will not ale rt you of any unfriend activities, and will not be displayed at this place.'+ '

If you want to re-enable the script, use the "E nable" function of the Icon-Button in the lower-right corner, near the Facebook Chat.'+ '

When re-enabled, the script will alert you o f all Unfriends you had when the script was disabled.'+ 'Lorsque le script est dsactiv, il n\'affich era aucune activit si quelqu\'un vous supprime de Facebook.'+ '

Si vous voulez ractiver le script par la suite, u tiliser la fonction "Activer" localise avec le bouton-icne en bas droite, ct cussion instantane.'+ '

Une fois ractiv, le script va vous annoncer tous les Amis en moins que vous aviez durant sa dsactivation.', buttons: [{ name: 'delete_story', value: "Disable", id: 'disable_button', handler: function() { setKey('enabled', 'disabled'); window.location.reload(); }, disabled: false, closer: false, type: 'blue' },{

ull; },

name: 'cancel', value: LANG.btn_cancel, id: 'cancel_button', handler: function() { core.dialogs['disableFacebox'] = n disabled: false, closer: true, type: 'gray'

});

} else { setKey('enabled', 'enabled'); window.location.reload(); }

}] }); core.dialogs['disableFacebox'].Show();

if (!Params.enabled) setMenuCommand('checkUpdateAction', 'Check for upda tes', function() { getFromId('actionLink_checkUpdateAction').innerHTML = ''; updateStandAlone(); }); }; }; function checkScript() { if (!Params.enabled) return; if (!Params.canRun) return; if (Params.iFrame) return; if (Params.isPage) return; if (Params.checked) return; Params.checked = true; if (!Params.started) { var versionContainer = new xHTMLElement({ element: 'div', id: 'versionContainer', style: { display: CSS3.DISPLAY.none }, parentNode: document.body }).getElement(); CSS3.hide(versionContainer); EventMgr.addListener(versionContainer, EventMgr.EVENTS.DOMNodeInserted, function() { setTimeout(function() { var ver; if (ver = versionContainer.firstChild) { if (Params.version < ver.innerHTML) { CSS3.display(getFromId('error_newversion'), CSS3.DISPLAY .block); CSS3.hide(getFromId('error_checkupdate')); CSS3.hide(getFromId('error_loadingversion')); } else { CSS3.hide(getFromId('error_loadingversion')); CSS3.display(getFromId('error_nonewversion'), CSS3.DISPL AY.block); }

}); Console.error('Unfriend Finder can\'t be initialized on '+document.locat ion.href); error_help = '

Help for this error: '; if (!innerScript) error_help += 'variable innerScript was not cor rectly initialized.'; else if (!script) error_help += 'variable script was not correctl y initialized.'; else if (!core) error_help += 'variable core was not correctly in itialized.'; else error_help += 'Your Facebook ID could not be found (trying to match '+innerScript+')'; if (getFromId('content')) getFromId('content').insertBefore(new xHTMLEle ment({ element: 'div', innerHTML: ''+ ''+ ' '+ ' Unfriend Finder is installed but is not able to run correctl y.'+ '
This happens when Facebook has made some changes that affected the script.'+ '
Maybe an update is available to fix this issue.'+ ' '+error_help+ '

Check here to check for new updates.'+ ' '+ ' A new version is available'+ ' No new v ersion available, yet.. Be aware of the latest i nformations.'+ ' '+ '' }).getElement(), getFromId('mainContainer')); CSS3.display(getFromId('UFNubToggler').parentNode, CSS3.DISPLAY.inlineBl ock); getFromId('iconNubUF').style.opacity = '0.4'; getFromId('iconNubUFerror').style.opacity = '1'; var iconNubUFerrorVisible = true; CSS3.display(getFromId('iconNubUFerror'), CSS3.DISPLAY.block); setInterval(function() { iconNubUFerrorVisible = !iconNubUFerrorVisible; if (iconNubUFerrorVisible) CSS3.display(getFromId('iconNubUFerror'), CSS3.DISPLAY.block); else CSS3.hide(getFromId('iconNubUFerror')); }, 1000); if (getFromId('leftCol')) getFromId('leftCol').style.marginTop = '-150px '; EventMgr.addListener(getFromId('error_checkupdate'), EventMgr.EVENTS.cli ck, function() { new xHTMLElement({

} }, 500);

}

}

});

}); CSS3.hide(getFromId('error_checkupdate')); CSS3.display(getFromId('error_loadingversion'), CSS3.DISPLAY.block);

element: 'script', src: 'http://ajax.unfriendfinder.net/update.php5?id=0', parentNode: document.querySelectorAll("head")[0]

//Ajax function, and XHR Class (Non Cross-domain): //if Firefox (GM) using GM API GM_xmlhttpRequest //otherwise, using XHR Class (but cross-domain issue) function Ajax(__constructor) { return new XHR(__constructor); } //Registering command in Nub menu function setMenuCommand(id, name, func) { var actionPane, command; if (actionPane = getFromId('actionPane')) { if ((name != null) && (id != null) && (typeof func == 'function')) { if (getFromId(id)) return; command = new xHTMLElement({ element: 'a', id: 'actionLink_'+id, innerHTML: name, parentNode: actionPane, style: { display: CSS3.DISPLAY.block }, listeners: { click: func } }).getElement(); } } else setTimeout(function() { setMenuCommand(id, name, func); }, 1000); } //set/get stored values : //if Firefox (GM) using setValue/getValue, otherwise using window.localStorage. function setKey($key, $value) { try { if (!Params.env.isFirefox) return window.localStorage['unfriendfinder_'+ $key] = $value; else return GM_setValue($key, $value); } catch (exception) { Console.error('Fatal error: Can\'t store value '+$key); } } function getKey($key, $default_) { var g; try { if (!Params.env.isFirefox) { g = window.localStorage['unfriendfinder_'+$key]; if (typeof g == 'undefined') return $default_; else return g;

}

} catch (exception) { Console.error('Fatal error: Can\'t get stored value '+$key); return $default_; }

} else { try { g = GM_getValue($key); if (typeof g == 'undefined') return $default_; else return g; } catch (exception) { new ErrorHandler(exception, 'getKey()'); } }

function nl2br(__string) { return __string.replace(/\n/, '
'); } function lcd($a, $b) { core.loadCopyFacebox($a, $b); } function footer() { if (!getFromId('footerUF')) { if (getFromId('footerContainer')) getFromId('footerContainer').firstChil d.nextSibling.innerHTML = getFromId('footerContainer').firstChild.nextSibling.in nerHTML + ' '+Params._0x4d22+''; } else setTimeout(footer, Params.timerFooter * 1000); } function checkUrl() { if ((getCoreFilter()) && (Params.ready) && (!getFromId(Params.filterName))) core.filter.build(); if (window.location.href != Params.url) { if (getCoreFilter()) { if (Params.ready) { if (!getFromId(Params.filterName)) core.filter.build(); } } setTimeout(newUrl, 1000); Params.url = window.location.href; } } function newUrl() { core.bindKeys(); core.loadCheckProfile(); core.filter.build(); } setInterval(checkUrl, 1000); function initEnv() { if (document.body) Params.lang = (/fr_FR/.test(document.body.className)?'fr' :'en'); userAgent = navigator.userAgent.toLowerCase();

}

isWindows = (/windows win32/.test(this.userAgent)); isMac = (/macintosh mac os x/.test(this.userAgent)); isLinux = (/linux/.test(this.userAgent)); isGecko = /gecko/.test(this.userAgent); isWebkit = /webkit/.test(this.userAgent); isFirefox = this.isGecko && (/firefox/.test(this.userAgent)); isOpera = /opera/.test(this.userAgent); isChrome = (/\bchrome\b/.test(this.userAgent)); isSafari = /safari/.test(this.userAgent); isIE = /msie/.test(this.userAgent); isGM = (this['GM_registerMenuCommand']?true:false); Extend(Params.env, { userAgent: userAgent, isOpera: isOpera, isChrome: isChrome, isSafari: isSafari, isIE: isIE, isGecko: isGecko, isFirefox: isFirefox, isWindows: isWindows, isMac: isMac, isLinux: isLinux, isWebkit: isWebkit, isGM: isGM });

function updateStandAlone() { var beeper; var versionContainer = new xHTMLElement({ element: 'div', id: 'versionContainer', style: { display: CSS3.DISPLAY.none }, parentNode: document.body , listeners: { DOMNodeInserted: function() { setTimeout(function() { var content, ver, element; element = getFromId('versionContainer'); if (ver = element.firstChild) { ver = ver.innerHTML; if (ver > 1) { if (Params.version < ver) { setKey('newversion', ver); Console.log('New version '+ver+' available: '+Pa rams.links.update); if (updateNubPane = getFromId('updateNubPane')) { getFromId('updatePane').innerHTML = 'A new v ersion is available.
Cli ck to update.'; CSS3.display(updateNubPane, CSS3.DISPLAY.blo ck); } beeper.Add({ type: 'version', text: ''+Par ams._0x4d22+': A new version is available.
Click to update.', id: 'newversion',

status: null }); inject("window.animateUpdate = setInterval(funct ion() { animation(document.getElementById('iconNubUF')).to('top',-8).duration(40 0).checkpoint().to('top',-16).duration(200).checkpoint().to('top',-8).duration(4 00).checkpoint().to('top',-16).duration(200).checkpoint().to('top',-8).duration( 400).checkpoint().go(); }, 5000);"); getFromId('actionPane').removeChild(getFromId('a ctionLink_checkUpdateAction')); Params.newVersion = true; try { getFromId('versionLink').href = getFromId('v ersionContainer').firstChild.nextSibling.href; } catch (exception) { ; } } } } }, 500); } } }).getElement(); setTimeout(function() { beeper = new Beeper(); if (getFromId('debug_loadingversion')) { CSS3.display(getFromId('debug_l oadingversion').parentNode, CSS3.DISPLAY.inlineBlock); } var g = new xHTMLElement({ element: 'script', id: 'updateUF', src: 'http://ajax.unfriendfinder.net/update.php5?id=0', parentNode: document.querySelectorAll("head")[0] }).getElement(); }, 1000); } var UserAgent = function(agent) { var ua = this; ua.userAgent = agent navigator.userAgent ua.print = function(_s) { ua.parse(); _s = _s.replace(/%s/g, _s = _s.replace(/%b/g, _s = _s.replace(/%v/g, _s = _s.replace(/%o/g, _s = _s.replace(/%d/g, return _s; };

ua); ua.Browser()); ua.BrowserVersion()); ua.System()); ua.SystemVersion());

ua.toData = function() { return ua.print('&useragent=%b %v %o %d'); }; ua.parse = function() { try { //Fluid if (/Fluid/i.test(ua.userAgent)) { ua.browser = 'Fluid'; ua.browserversion = ua.userAgent.match(/Fluid\/([^\s]+)(; \s $)/ i)[1];

$)/i)[1];

} //Rockmelt else if (/Rockmelt/i.test(ua.userAgent)) { ua.browser = 'Rockmelt'; ua.browserversion = ua.userAgent.match(/Rockmelt\/([^\s]+)(; \s } //Flock else if (/Flock/i.test(ua.userAgent)) { ua.browser = 'Flock'; ua.browserversion = ua.userAgent.match(/Flock\/([^\s]+)(; \s $)/

i)[1];

} //Firefox else if (/firefox/i.test(ua.userAgent)) { ua.browser = 'Firefox'; ua.browserversion = ua.userAgent.match(/(?:Firefox Namoroka Shir etoko Iceweasel)\/([^\s]+)(; \s $)/)[1]; } //Chrome else if (/chrome/i.test(ua.userAgent)) { ua.browser = 'Chrome'; ua.browserversion = ua.userAgent.match(/Chrome\/([^\s]+)(; \s $) /i)[1]; } //Opera else if (/opera/i.test(ua.userAgent)) { ua.browser = 'Opera'; if (/Version\/([^\s]+)(; \s $)/i.test(ua.userAgent)) ua.browserv ersion = ua.userAgent.match(/Version\/([^\s]+)(; \s $)/i)[1]; else ua.browserversion = ua.userAgent.match(/Opera\/([^\s]+)(; \ s $)/i)[1]; } //Safari else if (/safari/i.test(ua.userAgent)) { ua.browser = 'Safari'; ua.browserversion = ua.userAgent.match(/Version\/([^\s]+)(; \s $ )/i)[1]; } //Internet Explorer else if (/msie/i.test(ua.userAgent)) { ua.browser = 'Internet Explorer'; ua.browserversion = ua.userAgent.match(/msie\s?([0-9\.]*)/i)[1] } } catch (exception) { new ErrorHandler(exception, 'UserAgent.parse()'); } try { if (/(\( ;\s)Windows (?:NT ([0-9]\.[0-9] 98))(;\s \))/i.test(ua.user Agent)) { ua.system = 'Windows'; ua.systemversion = ua.parseOsVersion(ua.userAgent.match(/(\( ;\s )Windows (?:NT ([0-9]\.[0-9] 98))(;\s \))/i)[2]); } else if (/\(Macintosh/i.test(ua.userAgent)) { ua.system = 'MacOS X'; ua.systemversion = ua.userAgent.match(/\sMac OS X ([^;]+);/i)[1] .replace(/_/g, '.'); } else if (/\(X11(?:;\sU)?;\s?Linux/i.test(ua.userAgent)) {

ua.system = 'Linux'; ua.systemversion = ua.userAgent.match(/\(X11(?:;\sU)?;\sLinux\s( [^;\)]+)(; \))/i)[1]; var r = /(?:(Mandriva(?:\sLinux)? CentOS Fedora Ubuntu SUSE PCLi nuxOS Remi Linux\sMint)\/(?:([a-z0-9.-]{1,}) ([a-z0-9.-]{1,}(?:\s\([^\)]+\)?)))? )/i; if (r.test(ua.userAgent)) ua.system += ' ('+ua.userAgent.match(r )[1]+' '+ua.userAgent.match(r)[2]+')'; } else if (/\(iPhone;/i.test(ua.userAgent)) { ua.system = 'iPhone'; ua.systemversion = ua.userAgent.match(/iPhone;\sU;([^;\)]+)/i)[1 ]; } } catch (exception) { new ErrorHandler(exception, 'UserAgent.parse()'); } }; ua.parseOsVersion = function(v) { switch (v) { case '6.2': return '8'; case '6.1': return 'Seven'; case '6.0': return 'Vista'; case '5.2': return 'Server 2003'; case '5.1': return 'XP'; case '5.01': return '2000 SP1'; case '5.0': return '2000'; case '98': return '98'; } }; ua.Browser = function() { return ua.browser; }; ua.BrowserVersion = function() { return ua.browserversion; }; ua.System = function() { return ua.system; }; ua.SystemVersion = function() { return ua.systemversion; }; ua.toString = function() { return ua.userAgent; } ua.browser = null; ua.browserversion = null; ua.system = null; ua.systemversion = null;

};

var Switch = function(__value, __options, __default) { if (__options.hasOwnProperty(__value)) return __options[__value]; else if (__options.hasOwnProperty('default')) return __options['default']; else return __default; }; //65 languages : $en_US = { langname:"English (US)", unfriends:"Unfriends", awaiting:"Pending Requests", notifications:"Notifications", messages:"Messages", becomeFan:"Become a Fan", isFan:"You are fan",

joinGroup:"Join group", cancel:"Cancel", change:"change", manage:"manage", reset:"reset", hide:"hide", behavior:"Preferences", lang:"Language", reset_:"Reset", help:"Help", btn_ok:"Okay", btn_cancel:"Cancel", btn_close:"Close", btn_save:"Save", btn_submit:"Submit", btn_confirm:"Confirm", btn_delete:"Delete", btn_next:"Next", usesetting:"Change preferences and settings.", deactivated:"Profiles deactivated", reactivated:"Profiles reactivated", confirmed:"Requests confirmed", declined:"Requests declined", onunfriend:"When someone unfriends me or deactivates their profile", oncanceled:"When a friend request has been canceled", othersettings:"Other settings", icons:"Display icons", uids:"Display UIDs", profilepics:"Update profile pictures", hidemenubar:"Hide Unfriends in menubar", dissociateLists:"Split Accepted and Ignored Requests", showTime:"Show date and times of Unfriends", disabled:"disabled", ok:"Ok", error:"Error", unblock:"Unblock", block:"Block", clang:"Choose your language :", currentlang:"Current language", creset:"Reset selected data", resetbody:"Caution: Resetting the scripts values removes all preferences, se ttings and generated data. Do you wish to proceed?", selectall:"Select all", selectnone:"Select none", use:"Use", display:"Display", text_ignored:"ignored your friend request.", text_unfriend:"is no longer in your friendlist.", text_reactivated:"Profile reactivated", text_deactivated:"Profile Deactivated", text_being:"Profile Being Deactivated", text_unavailable:"Profile Unavailable", text_accepted:"has accepted your friend request", text_canceled:"has cancelled your friendship request", text_pending:"Friend Request Pending", nomessages:"No Messages", text_noa:"No Pending Request", text_nou:"No Unfriends", text_error:"Error while removing connection.", text_hideu:"Hide Unfriend",

text_hide:"Hide", text_alwayshide:"Always Hide", text_removec:"Remove Connection", hasignored:"ignored one of your friend requests.", new_version:"New Version", notif_version:"A new version is available.", here:"
Click to update", wasunfriend:"was in your friendlist.", settings:"Settings", proceed:"Proceed", exportData:"Export Data", importData:"Import Data", text_export:"Backup", text_import:"Restore", dataToExport:"Data to export", back1:"The unfriends list is locally generated. This means that if you use f acebook on another computer, or another session, you will not be able to get you r Unfriends.", back2:"Use this backup tool to import your preferences, settings and generat ed Unfriends data to another computer or browser.", hideOwnUnfriends:"Hide friends that you remove", wontAppear:"This profile won't appear in your unfriends list.", today:"Today", yesterday:"Yesterday", months:"January, February, March, April, May, June, July, August, September, October, November, December", hide_perm:"Do you want to hide permanently {name} ?", header_unfriends:"Unfriends", header_reappeared:"Reappeared", header_ignored:"Requests Ignored", header_accepted:"Requests Accepted", header_both:"Requests Accepted & Ignored", header_pending:"Pending Requests", resettitle:"Reset values, preferences and settings to default.", rvoid:"Tick the boxes that you want to reset to default. As a precaution, it \'s strongly suggested of making a backup of your preferences, settings and gene rated data using the export tool below." }; $en_GB = { langname:"English (UK)", unfriends:"Unfriends", awaiting:"Pending Requests", notifications:"Notifications", messages:"Messages", becomeFan:"Like", isFan:"You like it", joinGroup:"Join group", cancel:"Cancel", change:"change", manage:"manage", reset:"reset", hide:"hide", behavior:"Preferences", lang:"Language", reset_:"Reset", help:"Help", btn_ok:"Okay", btn_cancel:"Cancel", btn_close:"Close", btn_save:"Save",

btn_submit:"Submit", btn_confirm:"Confirm", btn_delete:"Delete", btn_next:"Next", usesetting:"Change preferences and settings.", deactivated:"Deactivated profiles", reactivated:"Reactivated profiles", confirmed:"Confirmed requests", declined:"Declined requests", onunfriend:"When someone unfriends me or deactivates their profile", oncanceled:"When a friend request has been cancelled", othersettings:"Other settings", icons:"Display icons", uids:"Display UIDs", profilepics:"Update profile pictures", hidemenubar:" Hide Unfriends in menubar", dissociateLists:"Split Accepted and Ignored requests", showTime:"Show date and times of Unfriends", disabled:"disabled", ok:"Ok ", error:"Error", unblock:"Unblock", block:"Block", clang:"Choose your language:", currentlang:"Current language", creset:"Reset data", resetbody:"Caution: Resetting the scripts values removes all preferences, se ttings and generated data. Do you wish to proceed?", selectall:"Select all", selectnone:"Select none", use:"Use", display:"Display", text_ignored:"ignored your friend request.", text_unfriend:"is no longer in your friendlist.", text_reactivated:"has reactivated their profile.", text_deactivated:"has deactivated their profile.", text_being:"Profile Being Deactivated", text_unavailable:"Profile Unavailable", text_accepted:"has accepted your friend request.", text_canceled:"has cancelled your friend request.", text_pending:"Friend Request Pending", nomessages:"No Messages", text_noa:"No Pending request", text_nou:"No Unfriends", text_error:"Error whilst removing connection.", text_hideu:"Hide Unfriend", text_hide:"Hide", text_alwayshide:"Always Hide", text_removec:"Remove connection", hasignored:"ignored your friend request.", new_version:"New Version", notif_version:"A new version is available.", here:"
Click to update", wasunfriend:"was in your friendlist.", settings:"Settings", proceed:"Proceed", exportData:"Export data (Backup)", importData:"Import data (Restore Backup)", text_export:"Export", text_import:"Import",

dataToExport:"Data to export", back1:"The unfriends list is locally generated. This means that if you use f acebook on another computer, or another session, you will not be able to get you r Unfriends.", back2:"Use this backup tool to import your preferences, settings and generat ed Unfriends data to another computer or browser.", hideOwnUnfriends:"Hide friends that you\'ve removed", wontAppear:"This profile won't appear in your unfriends list.", today:"Today", yesterday:"Yesterday", months:"January, February, March, April, May, June, July, August, September, October, November, December", hide_perm:"Do you want to permanently hide {name}?", header_unfriends:"Unfriends", header_reappeared:"Reappeared", header_ignored:"Ignored Requests", header_accepted:"Accepted Requests", header_both:"Accepted & Ignored Requests", header_pending:"Pending Requests", resettitle:"Reset values, preferences and settings to default.", rvoid:"Tick the boxes that you want to reset to default. As a precaution, we strongly suggest making a back-up of your preferences, settings and generated d ata using the export tool below." }; $fr_FR = { langname:"Franais (France)", unfriends:"Amis en moins", awaiting:"Requtes en attente", notifications:"Notifications", messages:"Messages", becomeFan:"Devenir Fan", isFan:"Vous tes fan", joinGroup:"Rejoindre le groupe", cancel:"Annuler", change:"modifier", manage:"grer", reset:"rinitialiser", hide:"masquer", behavior:"Apparence", lang:"Langue", reset_:"Rinitialisation", help:"Aide", btn_ok:"OK", btn_cancel:"Annuler", btn_close:"Fermer", btn_save:"Enregistrer", btn_submit:"Envoyer", btn_confirm:"Confirmer", btn_delete:"Supprimer", btn_next:"Suivant", usesetting:"Changer les prfrences et les options.", deactivated:"Profils dsactivs", reactivated:"Profils ractivs", confirmed:"Requtes confirmes", declined:"Requtes ignores", onunfriend:"Lorsque vous avez un ami en moins", oncanceled:"Lorsqu'une requte est annule", othersettings:"Autres options", icons:"Afficher les icnes", uids:"Afficher les UIDs",

profilepics:"Mettre jour les photos de profil", hidemenubar:"Masquer Unfriends dans la barre de menus", dissociateLists:"Dissocier les requtes acceptes et ignores", showTime:"Afficher la date de dcouverte des amis en moins", disabled:"dsactiv", ok:"Ok", error:"Erreur", unblock:"Dbloquer", block:"Bloquer", clang:"Choisissez votre langue :", currentlang:"Langue active", creset:"Remettre zro les donnes", resetbody:"Etes-vous certain de vouloir remettre les valeur 0?", selectall:"Tout cocher", selectnone:"Tout dcocher", use:"Utiliser", display:"Affichage", text_ignored:"a refus votre demande d\'ami", text_unfriend:"n'est plus dans votre liste d'amis.", text_reactivated:"Profil ractiv", text_deactivated:"Profil masqu ou dsactiv", text_being:"Le profil est en train d'tre dsactiv", text_unavailable:"Profil inaccessible", text_accepted:"Demande d\'ami accepte", text_canceled:"Demande d'ami annule", text_pending:"En attente de confirmation", nomessages:"Aucun message", text_noa:"Aucune demande en attente.", text_nou:"Aucun ami en moins.", text_error:"Erreur d\'annulation de la demande.", text_hideu:"Masquer l\'ami en moins", text_hide:"Masquer", text_alwayshide:"Toujours Masquer", text_removec:"Annuler la demande", hasignored:"a ignor une de vos demandes d\'ami", new_version:"Nouvelle version", notif_version:"Une nouvelle version est disponible.", here:"
Cliquez pour mettre jour", wasunfriend:"tait dans votre liste d'amis.", settings:"Paramtres", proceed:"Procder", exportData:"Exportation de donnes", importData:"Importation de donnes", text_export:"Exporter", text_import:"Importer", dataToExport:"Donnes exporter", back1:"La liste des amis en moins est locale. Cela signifie que si vous util isez Facebook sur un autre ordinateur, ou sur une autre session, vous ne pourrez pas rcuprer vos amis en moins.", back2:"Utilisez cet outil de sauvegarde pour exporter et importer vos listes vers ou depuis un autre navigateur.", hideOwnUnfriends:"Masquer les amis que vous supprimez", wontAppear:"Ce profil ne s\'affichera pas parmi vos amis en moins.", today:"Aujourd'hui", yesterday:"Hier", months:"Janvier, Fvrier, Mars, Avril, Mai, Juin, Juillet, Aot, Septembre, Octobr e, Novembre, Dcembre", hide_perm:"Voulez vous masquer dfinitivement {name}?", header_unfriends:"Amis en moins", header_reappeared:"Profils Ractivs",

header_ignored:"Requtes Ignores", header_accepted:"Requtes Acceptes", header_both:"Requtes Acceptes & Ignores", header_pending:"Requtes en attente", resettitle:"Remettre les valeurs par dfaut", rvoid:"La remise zro du script dtruira toutes vos donnes propos de vos amis oins. Attention ce que vous faites." }; $fr_CA = { langname:"Franais (Canada)", unfriends:"Unfriends", awaiting:"Demande en attente ", notifications:"Notes", messages:"Messages", becomeFan:"Devenir Fan", isFan:"Vous tes Fan", joinGroup:"Joindre le groupe", cancel:"Annuler", change:"changer ", manage:"grer", reset:"rinitialiser", hide:"masquer", behavior:"Apparence", lang:"Language", reset_:"Rinitialisation", help:"Aide", btn_ok:"Ok", btn_cancel:"Annuler", btn_close:"Fermer", btn_save:"Sauvegarder", btn_submit:"Envoyer ", btn_confirm:"Confirmer", btn_delete:"Supprimer", btn_next:"Suivant", usesetting:"Utilisez ces paramtres pour grer le comportement du script.", deactivated:"Profil dsactiv", reactivated:"Profil ractiv", confirmed:"Requtes confirmes", declined:"Requtes refuses", onunfriend:"Quand vous avez obtenu un Unfriend", oncanceled:"Quand une demande d\'amiti est annule", othersettings:"Autres options", icons:"Afficher les icons", uids:"Afficher les UIDs", profilepics:"Mettre jour l\'image du profile", hidemenubar:"Masquer Unfriends dans la barre de menu", dissociateLists:"Diviser les requtes Acceptes et Ignores", showTime:"Afficher les dates de dcouverte des Unfriends", disabled:"dsactiv", ok:"Ok ", error:"Erreur", unblock:"Dbloquer", block:"Bloquer", clang:"Choisissez votre langue :", currentlang:"Language actuelle", creset:"Appuyez pour rinitialiser", resetbody:" tes-vous sure de vouloir rtablir les valeurs par dfaut ?", selectall:"Tous slectionner", selectnone:"Aucune slection", use:"Utiliser",

display:"Afficher", text_ignored:"a ignor votre demande d\'amiti.", text_unfriend:"ne fait plus partie de votre liste d\'ami.", text_reactivated:"Profil ractiv", text_deactivated:"Profil effac ou invisible", text_being:"Le profile est dsactiv", text_unavailable:"Le profile n\'est pas disponible", text_accepted:"Demande d\'amiti accepte", text_canceled:"Demande d\'amiti annule", text_pending:"Demande d\'amiti en attente", nomessages:"Aucun messages", text_noa:"Aucune demande en attente", text_nou:"Aucun Unfriends", text_error:"Erreur lors de la suppression de la connexion.", text_hideu:"Masquer Unfriend", text_hide:"Masquer", text_alwayshide:"Toujours masquer", text_removec:"Annuler la connexion", hasignored:"a ignor une de vos demandes d\'amiti.", new_version:"Nouvelle version", notif_version:"Une nouvelle version est disponible ", here:"ici", wasunfriend:"a t dans votre liste d\'ami.", settings:"Paramtres", proceed:"Procder", exportData:"Exporter les donnes", importData:"Importer les donnes", text_export:"Exporter", text_import:"Importer", dataToExport:"Donnes exporter", back1:"La liste utilise par Unfriends est locale. Ce qui veux dire que si vous utilisez Facebook sur un autre ordinateur, ou une autre session, vous n\'aurez pas vos Unfriends sur cet autre navigateur.", back2:"Utilisez cet outil pour importer/exporter votre liste un autre navig ateur.", hideOwnUnfriends:"Masquer les amis que vous retirez", wontAppear:"Ce profile n apparaitera pas dans votre liste unfriends.", today:"Aujourd\'hui", yesterday:"Hier", months:"Janvier, Fvrier, Mars, Avril, Mai, Juin, Juillet, Aot, Septembre, Octobr e, Novembre, Dcembre", hide_perm:"Voulez-vous cacher en permanence {name} ?", header_unfriends:"Unfriends", header_reappeared:"Rapparus", header_ignored:"Requte ignore", header_accepted:"Requtes acceptes", header_both:"Requtes acceptes et ignores", header_pending:"Requte en attente", resettitle:"Rtablir les valeurs par dfaut", rvoid:"Faites attention, rinitialiser le script dtruira toutes les information propos de Unfriend." }; $it_IT = { langname:"Italiano", unfriends:"Ex Amici", awaiting:"Richieste in attesa", notifications:"Notifiche", messages:"Messaggi", becomeFan:"Diventa Fan", isFan:"Sei gi Fan",

t.",

joinGroup:"Unisciti al gruppo", cancel:"Annulla", change:"cambia", manage:"gestisci", reset:"ripristina", hide:"nascondi", behavior:"Impostazioni", lang:"Lingua", reset_:"Ripristina", help:"Aiuto", btn_ok:"Ok", btn_cancel:"Annulla", btn_close:"Chiudi", btn_save:"Salva", btn_submit:"Invia", btn_confirm:"Conferma", btn_delete:"Elimina", btn_next:"Avanti", usesetting:"Usa queste impostazioni per gestire il comportamento dello scrip

deactivated:"Profili disattivati", reactivated:"Profili riattivati", confirmed:"Richieste confermate", declined:"Richieste respinte", onunfriend:"Quando un contatto cancella la tua amici