diff --git a/www/extras/yui-webgui/build/friendManager/friendManager.js b/www/extras/yui-webgui/build/friendManager/friendManager.js
new file mode 100644
index 000000000..dad4ad717
--- /dev/null
+++ b/www/extras/yui-webgui/build/friendManager/friendManager.js
@@ -0,0 +1,129 @@
+/*** The WebGUI Friend Manager
+ * Requires: YAHOO, Dom, Event
+ */
+
+//Container for functions used by many datatables.
+if ( typeof WebGUI == "undefined" ) {
+ WebGUI = {};
+}
+if ( typeof WebGUI.FriendManager == "undefined" ) {
+ WebGUI.FriendManager = {};
+}
+if ( typeof WebGUI.FriendManager.tables == "undefined" ) {
+ WebGUI.FriendManager.tables = {};
+}
+
+/*---------------------------------------------------------------------------
+ WebGUI.FriendManager.initManager ( )
+ Initialize the i18n interface, and then call the function to build
+ the DataTables.
+*/
+WebGUI.FriendManager.initI18N = function (o) {
+ WebGUI.FriendManager.i18n
+ = new WebGUI.i18n( {
+ namespaces : {
+ "WebGUI" : [
+ "50",
+ "89",
+ ],
+ "Account_Friends" : [
+ "title",
+ ],
+ "Account_FriendManager" : [
+ "friends count",
+ ]
+ },
+ onpreload : {
+ fn : WebGUI.FriendManager.initTables
+ }
+ } );
+};
+
+/*---------------------------------------------------------------------------
+ Initialize objects that are shared across many datatables.
+*/
+WebGUI.FriendManager.responseSchema
+ = {
+ resultsList: 'records',
+ fields: [
+ { key: 'userId', parser: 'string' },
+ { key: 'username', parser: 'string' },
+ { key: 'friendsCount', parser: 'number' },
+ { key: 'friends', parser: 'string' },
+ { key: 'groups', parser: 'string' },
+ ],
+ metaFields: {
+ totalRecords: "recordsReturned" // Access to value in the server response
+ }
+ };
+
+WebGUI.FriendManager.formatUsername = function ( el, oRecord, oColumn, oData ) {
+ var userId = oRecord.getData('userId');
+ el.innerHTML = '' + oData + '';
+}
+
+WebGUI.FriendManager.formatGroups = function ( el, oRecord, oColumn, oData ) {
+ var userId = oRecord.getData('userId');
+ el.innerHTML = '';
+ var groups = oData.split("\n");
+ for (var idx=0; idx < groups.length; idx++) {
+ var group = groups[idx];
+ var groupUri = encodeURI(group);
+ if (el.innerHTML) {
+ el.innerHTML += ' ';
+ }
+ el.innerHTML += ''+group+'';
+ }
+}
+
+//Per object code
+
+WebGUI.FriendManager.MakeTable = function (groupId, containerId) {
+ var that = this;
+
+ if (typeof WebGUI.FriendManager.ColumnDefs == "undefined" ) {
+ WebGUI.FriendManager.ColumnDefs = [ // sortable:true enables sorting
+ { key:"groups", sortable: false, formatter: WebGUI.FriendManager.formatGroups,
+ label:WebGUI.FriendManager.i18n.get('WebGUI', '89' ), },
+ { key:"username", sortable: true, formatter: WebGUI.FriendManager.formatUsername,
+ label:WebGUI.FriendManager.i18n.get('WebGUI', '50' ), },
+ { key:"friendsCount", sortable: true,
+ label:WebGUI.FriendManager.i18n.get('Account_FriendManager', 'friends count' ), },
+ { key:"friends", sortable: false,
+ label:WebGUI.FriendManager.i18n.get('Account_Friends', 'title' ), },
+ { key:"userId", label:"userId", sortable: true},
+ ];
+ }
+
+ // Initialize the data table
+ var myPaginator = new YAHOO.widget.Paginator({
+ containers : ['pagination'],
+ pageLinks : 7,
+ rowsPerPage : 15,
+ template : "{CurrentPageReport} {PreviousPageLink} {PageLinks} {NextPageLink}"
+ });
+
+ that.DataSource
+ = new YAHOO.util.DataSource('?op=account;module=friendManager;do=getFriendsAsJson;groupId='+groupId+';',{connTimeout:30000} );
+ that.DataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
+ that.DataSource.responseSchema = WebGUI.FriendManager.responseSchema;
+ that.DataTable = new YAHOO.widget.DataTable(
+ containerId,
+ WebGUI.FriendManager.ColumnDefs,
+ that.DataSource,
+ {
+ initialRequest : '',
+ paginator : myPaginator,
+ sortedBy : { "key" : "username", "dir" : YAHOO.widget.DataTable.CLASS_ASC },
+ }
+ );
+
+ that.DataTable.handleDataReturnPayload = function(oRequest, oResponse, oPayload) {
+ oPayload.totalRecords = oResponse.meta.totalRecords;
+ return oPayload;
+ }
+
+ return that;
+
+};
+