/** Generated by js.php */
/**
 * Fonctions javascript relatives à la gestion des communautés.
 * La faute d'orthographe (community => communauty) est historique.
 */
var Communauty = {
	COMMUNAUTIES_LIST_ID: 'communautiesListDiv',
	
	NAVIGATOR_NB_COLUMNS: 3,
	
	/**
	 * Identifiant de la communauté en cours.
	 */
	currentCommunauty: -1,
	
	/**
	 * Identifiant du dossier de communauté en cours.
	 */
	currentFolder: -1,
	
	currentAccessLevel: -1,
	
	PUBLIC_COMMUNAUTY: 0,
	
	PRIVATE_COMMUNAUTY: 1,
	
	/**
	 * Items de menu généraux (disponibles
	 * hors communauté).
	 */
	generalSubMenuItems: [
		'communautySubMenuAddCommunauty',
		'communautySubMenuInviteCommunauty'
		],
	
	/**
	 * Sous-menus contextuels, différents selon les droits d'accès
	 * de l'utilisateur.
	 */
	contextSubMenus : {
		ADMIN: [
			'communautySubMenuAddCommunauty',
			'communautySubMenuManageMemberCommunauty',
			'communautySubMenuAddFolderCommunauty',
			'communautySubMenuAddBookmarkCommunauty',
			'communautySubMenuInviteCommunauty',
			'communautySubMenuSubscribeCommunauty'
		],
		CONTRIB: [
			'communautySubMenuAddCommunauty',
			'communautySubMenuAddFolderCommunauty',
			'communautySubMenuAddBookmarkCommunauty',
			'communautySubMenuSubscribeCommunauty',
			'communautySubMenuInviteCommunauty'
		],
		READER: [
			'communautySubMenuAddCommunauty',
			'communautySubMenuInviteCommunauty',
			'communautySubMenuSubscribeCommunauty',
			'communautySubMenuLeaveCommunauty'
		],
		VISITOR: [
			'communautySubMenuAddCommunauty',
			'communautySubMenuJoinCommunauty'
		]
	},
		
	subMenuId: 'communautySubMenuDiv'
};

Communauty.navigatorContainerTemplate=  "<hr><div id=\"" + Communauty.COMMUNAUTIES_LIST_ID + "\"></div>"+
		"<div style='clear:both;'></div><hr>";

/**
 * Templates utilisés pour lister les communautés/
 */
Communauty.communautyElementTemplates = {
// Template used for communities for which user is administrator
	ADMIN: new Template("<div id=\"communauty_#{COMMUNAUTY_ID}\" communautyFolderId=\"#{COMMUNAUTY_FOLDER_ID}\" class=\"navigatorElement\" communautyId=\"#{COMMUNAUTY_ID}\" title=\"#{CREATED_BY}\">" +
		"<img align=\"bottom\" src=\"/img/communauties/communauty_admin_#{VISIBILITY_SUFFIX}.gif\" class=\"navigatorImg\"/>&nbsp;"+
		"<a id=\"communautyNavigatorElementLink_#{COMMUNAUTY_ID}\" communautyFolderId=\"#{COMMUNAUTY_FOLDER_ID}\" communautyId=\"#{COMMUNAUTY_ID}\" class=\"navigatorElementLink\">#{COMMUNAUTY_NAME}</a>"+
		"</div>"),
// Template used for communities for which user is moderator
	CONTRIB: new Template("<div id=\"communauty_#{COMMUNAUTY_ID}\" communautyFolderId=\"#{COMMUNAUTY_FOLDER_ID}\" class=\"navigatorElement\" communautyId=\"#{COMMUNAUTY_ID}\" title=\"#{CREATED_BY}\">" +
		"<img align=\"bottom\" src=\"/img/communauties/communauty_reader_#{VISIBILITY_SUFFIX}.gif\" class=\"navigatorImg\"/>&nbsp;"+
		"<a id=\"communautyNavigatorElementLink_#{COMMUNAUTY_ID}\" communautyFolderId=\"#{COMMUNAUTY_FOLDER_ID}\" communautyId=\"#{COMMUNAUTY_ID}\" class=\"navigatorElementLink\">#{COMMUNAUTY_NAME}</a>"+
		"</div>"),
// Template used for communities for which user is reader
	READER: new Template("<div id=\"communauty_#{COMMUNAUTY_ID}\" communautyFolderId=\"#{COMMUNAUTY_FOLDER_ID}\" class=\"navigatorElement\" communautyId=\"#{COMMUNAUTY_ID}\" title=\"#{CREATED_BY}\">" +
		"<img align=\"bottom\" src=\"/img/communauties/communauty_reader_#{VISIBILITY_SUFFIX}.gif\" class=\"navigatorImg\"/>&nbsp;"+
		"<a id=\"communautyNavigatorElementLink_#{COMMUNAUTY_ID}\" communautyFolderId=\"#{COMMUNAUTY_FOLDER_ID}\" communautyId=\"#{COMMUNAUTY_ID}\" class=\"navigatorElementLink\">#{COMMUNAUTY_NAME}</a>"+
		"</div>")
};

Communauty.folderItemTemplate = new Template("<div id=\"folder_#{FOLDER_ID}\" class=\"navigatorElement\">" +
		"<img align=\"bottom\" src=\"/img/icons/crystal/16x16/actions/folder.gif\" class=\"navigatorImg\"/>&nbsp;"+
		"<a id=\"communautyNavigatorElementLink_#{FOLDER_ID}\" class=\"navigatorElementLink\">#{FOLDER_NAME}</a>"+
		"</div>");

Communauty.bookmarkItemTemplate = new Template("<li id=\"bookmark_#{BOOKMARK_ID}\" urlId=\"#{URL_ID}\" url=\"#{URL_ADDRESS}\">"+
										"<span class=\"bookmarkTitle\"><img class=\"statusIcon\" align=\"bottom\" src=\"/img/communauties/bookmark.gif\"/> "+
										"<a class=\"bookmarkName\" href=\"javascript:;\">#{BOOKMARK_NAME}</a></span>"+
										"<a href=\"javascript:;\" id=\"mainContentBookmarkCommentLink_#{BOOKMARK_ID}\" style=\"color: rgb(85, 85, 85);\"> - "+_mlt("COMMENT","Commentaire")+" - </a>"+
										"<span id=\"mainContentBookmarkStarsContainer_#{BOOKMARK_ID}\" class=\"starsContainer\" default=\"#{DEFAULT_MARK}\">"+
											"<img id=\"mainContentBookmarkMark_#{BOOKMARK_ID}_1\" src=\"/img/starGray.gif\" value=\"1\" class=\"mark\" style=\"left:-1px\"/>"+
											"<img id=\"mainContentBookmarkMark_#{BOOKMARK_ID}_2\" src=\"/img/starGray.gif\" value=\"2\" class=\"mark\" style=\"left:-1px\"/>"+
											"<img id=\"mainContentBookmarkMark_#{BOOKMARK_ID}_3\" src=\"/img/starGray.gif\" value=\"3\" class=\"mark\" style=\"left:-1px\"/>"+
											"<img id=\"mainContentBookmarkMark_#{BOOKMARK_ID}_4\" src=\"/img/starGray.gif\" value=\"4\" class=\"mark\" style=\"left:-1px\"/>"+
											"<img id=\"mainContentBookmarkMark_#{BOOKMARK_ID}_5\" src=\"/img/starGray.gif\" value=\"5\" class=\"mark\" style=\"left:-1px\"/>"+
										"</span> #{LINKED_PART}"+
										"<div id=\"mainContentBookmarkComment_#{BOOKMARK_ID}\" style=\"display:none\" class=\"commentContainer\">"+
											"<textarea id=\"mainContentBookmarkCommentTextArea_#{BOOKMARK_ID}\" class=\"textareaCommentEditable\">#{COMMENT}</textarea><br>"+
											"<a id=\"mainContentBookmarkCommentCloseLink_#{BOOKMARK_ID}\" href=\"javascript:;\" >"+_mlt('CLOSE', 'Fermer')+"</a>"+
										"</div>"+
									"</li>");

Communauty.listTemplate = new Template("#{PAGER}<ul id=\"mainContentBookmarkList\"></ul>#{PAGER}");

Communauty.linkedPartTemplate = new Template("<span><a class='selected_tab' href='javascript:;' id='mainContentCommunautyLinkedCommunauty_#{BOOKMARK_ID}'>#{COMMUNAUTY_NAME}</a><a class='unselected_tab' href='javascript:;' id='mainContentCommunautyLinkedFolder_#{BOOKMARK_ID}'>#{FOLDER_NAME}</a></span>");

Communauty.toolbar = new ToolbarEx('communautyToolbar', [
 	{
 		image: '/img/communauties/open.png',
 		helpText: _mlt('OPEN_COMMUNAUTY_HELP','Ouvrir cette Coomunauté'),
 		events: {
 			'click': function() { Communauty.openCommunauty(); }
 		}
 	},
 	{
 		image: '/img/communauties/edit.png',
 		helpText: _mlt('EDIT_COMMUNAUTY_HELP','Modifier cette Coomunauté'),
 		events: {
 			// Passer le pointeur de fonction directement provoque une erreur interne sous FF (?!)
 			'click': function() { Communauty.editCommunautyForm(); }
 		}
 	},
 	{
 		image: '/img/communauties/delete.png',
 		helpText: _mlt('DELETE_COMMUNAUTY_HELP','Supprimer cette Coomunauté'),
 		events: {
 			'click': function() { Communauty.deleteCommunautyForm(); }
 		}
 	}
 ]);
 
 /**
  * Toolbars des dossiers.
  * les droits se donnent par communauté, il n'y en
  * a donc qu'une d'affichée à un instant donné.
  */
 Communauty.foldersToolbars = {
 	CONTRIB: new ToolbarEx('communautyFolderToolbarContrib', [
 	{
 		image: '/img/communauties/open.png',
 		helpText: _mlt('OPEN_FOLDER_HELP','Ouvrir ce dossier'),
 		events: {
 			'click': function() { Communauty.openFolder(); }
 		}
 	},
 	{
 		image: '/img/communauties/add_bookmark.png',
 		helpText: _mlt('ADD_BOOKMARK_HELP','Ajouter un favori'),
 		events: {
 			// Passer le pointeur de fonction directement provoque une erreur interne sous FF (?!)
 			'click': function() { Communauty.addBookmark(Communauty.getToolbarFolderId()); }
 		}
 	}]),
 	
 	ADMIN: new ToolbarEx('communautyFolderToolbarAdmin',
 	[{
 		image: '/img/communauties/open.png',
 		helpText: _mlt('OPEN_FOLDER_HELP','Ouvrir ce dossier'),
 		events: {
 			'click': function() { Communauty.openFolder(); }
 		}
 	},
 	{
 		image: '/img/communauties/edit.png',
 		helpText: _mlt('EDIT_FOLDER_HELP','Modifier ce dossier'),
 		events: {
 			'click': function() { Communauty.editFolderForm(); }
 		}
 	},
 	{
 		image: '/img/communauties/delete_folder.png',
 		helpText: _mlt('DELETE_FOLDER_HELP', 'Supprimer ce dossier'),
 		events: {
 			'click': function() { Communauty.deleteFolderForm(); }
 		}
 	},
 	{
 		image: '/img/communauties/move_folder.png',
 		helpText: _mlt('MOVE_FOLDER_HELP', 'Déplacer ce dossier'),
 		events: {
 			'click': function() { Communauty.moveFolderForm(); }
 		}
 	},
 	{
 		image: '/img/communauties/add_bookmark.png',
 		helpText: _mlt('ADD_BOOKMARK_HELP','Ajouter un favori'),
 		events: {
 			'click': function() { Communauty.addBookmark(Communauty.getToolbarFolderId()); }
 		}
 	}])	
 }

 /**
  * Toolbar des favoris dans la communauté.
  * N'est affichée que pour les administrateurs de la communauté
  * et les contributeurs 
  */
 Communauty.bookmarkToolbar = new ToolbarEx('communautyBookmarkToolbar',
 	[{
 		image: '/img/bookmarks/open.png',
 		helpText: _mlt('OPEN_BOOKMARK_HELP','Ouvrir ce favori (dans une nouvelle fenêtre)'),
 		events: {
 			'click': function(e) { window.open(Event.element(e).up('LI').getAttribute('url'));hitUrl(Event.element(e).up('LI').getAttribute('urlId'),'private'); }
 		}
 	},
 	{
 		image: '/img/bookmarks/edit.png',
 		helpText: _mlt('EDIT_BOOKMARK_HELP','Modifier ce favori'),
 		events: {
 			'click': function() { Communauty.editBookmarkForm(); }
 		}
 	},
 	{
 		image: '/img/bookmarks/delete.png',
 		helpText: _mlt('DELETE_BOOKMARK_HELP','Supprimer ce favori'),
 		events: {
 			'click': function() { Communauty.deleteBookmarkForm(); }
 		}
 	},
 	{
 		image: '/img/bookmarks/move.png',
 		helpText: _mlt('MOVE_BOOKMARK_HELP','Déplacer ce favori'),
 		events: {
 			'click': function() { Communauty.moveBookmarkForm(); }
 		}
 	}]
 );


/**
 * Construit le sous-menu de communauté en masquant les éléments
 * non pertinents selon que l'utilisateur est connecté ou non. 
 */
Communauty.buildSubMenu = function() {
	// On n'affiche rien si l'utilisateur n'est
	// pas connecté.
	if(User.isLogged == false) return;
	
	if(Communauty.currentCommunauty <= 0) {
		// Pas de communauté en cours => affichage du menu général
		$$('ul#communautySubMenuList li').each(function(el) {
			if(Communauty.generalSubMenuItems.indexOf(el.getAttribute('id')) < 0) {
				Element.hide(el);
			} else {
				Element.show(el);
			}
		});
	} else {
		// si l'utilisateur est dans une coomunauté, on affiche tout.
		var subMenuItems = Communauty.contextSubMenus[Communauty.currentAccessLevel];
		$$('ul#communautySubMenuList li').each(function(el) {
			if(subMenuItems.indexOf(el.getAttribute('id')) < 0) {
				Element.hide(el);
			} else {
				Element.show(el);
			}
		});
	}
}

Communauty.generateNavigator = function() {
	if(User.isLogged == false) return;
	
	$('navigator').innerHTML = Communauty.navigatorContainerTemplate;
	$(Communauty.COMMUNAUTIES_LIST_ID).innerHTML = Common.loadingTemplate;
	
	if(Communauty.currentCommunauty <= 0) {
		// Pas de communauté en cours, on liste toutes les communautés.
		Communauty.generateCommunautiesNavigator();
		Communauty.buildSubMenu();
	} else {
		Communauty.generateFoldersNavigator();
	}
}

Communauty.generateFoldersNavigator = function() {
	new Ajax.Request('/communauties/open_folder/' + Communauty.currentCommunauty + '/' + Communauty.currentFolder,
	{
		method: 'get',
		onFailure: internalErrorDialog,
		onSuccess: function(xhr) {
			var json = eval( '(' + xhr.responseText + ')' );
			var communautiesContainer = $(Communauty.COMMUNAUTIES_LIST_ID);
			if(json.error) {
				communautiesContainer.innerHTML = json.error;
			} else {
				Communauty.currentAccessLevel = json["access_level"];
				communautiesContainer.innerHTML = '';
				var toolbar = Communauty.foldersToolbars[Communauty.currentAccessLevel];
				var toolbarId;
				// dans le cas des Readers on n'a pas de TB.
				if(toolbar) toolbarId = toolbar.getId();
				
				var infoPathCompleteArray = '';
				if (json.infoPath) {
					infoPathCompleteArray = json.infoPath;
				}
		
				PathInfo.generatePath(infoPathCompleteArray,'Communauty.openFolder',false);
				
				if(json.folders.length) {
					json.folders.each(function(el, i) {
						if(i && i % Communauty.NAVIGATOR_NB_COLUMNS == 0) {
							new Insertion.Bottom(communautiesContainer, '<div style="clear:both"></div>');
						}
					
						new Insertion.Bottom(communautiesContainer,
							Communauty.folderItemTemplate.evaluate({
									FOLDER_ID: el.folder_id,
									FOLDER_NAME:el.name.stripTags()
								})
						);
						
						var container = $('folder_' + el.folder_id);$
						
						if(Communauty.currentAccessLevel == 'READER' ||
							Communauty.currentAccessLevel == 'VISITOR') {
							Event.observe(container, 'click', function() {
								Communauty.openFolder(el.folder_id)
							});
						} else {
							Event.observe(container, 'click', function(e) {
								if(!Element.up(Event.element(e), '#' + toolbarId)) {
									toolbar.toggleIn(container);
								}
							});
						}
					});
				} else {
					communautiesContainer.innerHTML = _mlt("NO_SUBFOLDER",'Aucun sous dossier dans ce dossier');
				}
				
				Communauty.currentAccessLevel = json.access_level;
				Communauty.buildSubMenu();
			}
		}
	});
}

Communauty.generateCommunautiesNavigator = function() {
	new Ajax.Request(
		'/communauties/get',
		{
			method: 'post',
			onFailure: internalErrorDialog,
			onSuccess: function(xhr) {
				var json = eval( '(' + xhr.responseText + ')' );
				if(json.error) {
					errorDialog(json.error);
				} else {
					$('bookmarksContainer').innerHTML = '';
					
					var communautiesContainer = $(Communauty.COMMUNAUTIES_LIST_ID);
					communautiesContainer.innerHTML = '';
					
					json.each(function(el, i) {
						if(i && i % Communauty.NAVIGATOR_NB_COLUMNS == 0) {
							new Insertion.Bottom(communautiesContainer, '<div style="clear:both"></div>');
						}
						
						// Génère l'élement de liste contenant le nom de la communauté et
						// l'icône
						new Insertion.Bottom(communautiesContainer, 
							Communauty.communautyElementTemplates[el.CommunautyUser.access_level].evaluate({
								COMMUNAUTY_ID: el.Communauty.communauty_id,
								COMMUNAUTY_FOLDER_ID: el.CommunautyFolder.communauty_folder_id,
								COMMUNAUTY_NAME:el.Communauty.name.stripTags(),
								VISIBILITY_SUFFIX: (el.Communauty.visibility == Communauty.PUBLIC_COMMUNAUTY ? 'public' : 'private' ),
								CREATED_BY: _mlt('CREATED_BY', 'Créée par %s').replace('%s', el.Creator.login)
							})
						);
						
						var container = $('communauty_' + el.Communauty.communauty_id);
						
						if(el.CommunautyUser.access_level == 'ADMIN') {
							Event.observe(container, "click", function (e) {
							
								// On ne toggle que si le clic n'a pas eu lieu dans la
								// toolbar elle-même
								if(!Element.up(Event.element(e), '#communautyToolbar')) {
									Communauty.toolbar.toggleIn(container);
								}
								// Met à jour les privilèges courants de l'utilisateur
								Communauty.currentAccessLevel = el.CommunautyUser.access_level;
								
							});
						} else {
							// Pas besoin de toolbar si l'utilisateur n'est pas admin
							// on se contente d'ouvrir la communauté sur le click.
							Event.observe(container, "click", function(e) {
								Communauty.hideToolbar();
								
								// Met à jour les privilèges courants de l'utilisateur.
								Communauty.currentAccessLevel = el.CommunautyUser.access_level;
								Communauty.openCommunauty(el.Communauty.communauty_id,el.CommunautyFolder.communauty_folder_id);
							});
						}
					});
				}
			}
		}
	);
}

Communauty.hideToolbar = function() {
	Communauty.toolbar.hide();
}

Communauty.getToolbarCommunautyId = function() {
	return Communauty.toolbar.getContainer().getAttribute('id').replace('communauty_', '');
}

Communauty.getToolbarCommunautyFolderId = function() {
	return Communauty.toolbar.getContainer().getAttribute('communautyfolderid');
}


Communauty.getToolbarFolderId = function() {
	return Communauty.foldersToolbars[Communauty.currentAccessLevel].getContainer().getAttribute('id').replace('folder_', '');
}

Communauty.getToolbarBookmarkId = function() {
	return Communauty.bookmarkToolbar.getContainer().getAttribute('id').replace('bookmark_', '');
}

// -- Édition de communauté (modification du nom) -- //

Communauty.editCommunautyForm = function() {
	var communauty_id = Communauty.getToolbarCommunautyId();
	dialog('editCommunautyDlg',
		{
			source:'/communauties/edit_form/' + communauty_id,
			size:'220,120'
		}).display();
}

Communauty.editCommunautyFormSetup = function() {
	$('editCommunautyName').focus();
	Event.observe($('editCommunautyForm'), 'submit', Communauty.editCommunautyFormSave);
}

Communauty.editCommunautyFormSave = function(e) {
	Event.stop(e);
	var form = Event.findElement(e, 'form');
	var name = $F(form['data[Communauty][name]']);
	var visibility = $('editCommunautyVisibility');
	
	if(/^\s*$/.test(name)) {
		errorDialog(_mlt("COMMUNAUTY_NAME_ERROR"));
		return false;
	} else {
		var communauty_id = $F(form['data[Communauty][communauty_id]']);
		new Ajax.Request(form.getAttribute('action'), {
			method: form.getAttribute('method'),
			parameters: Form.serialize(form),
			onComplete: function() {
				Form.enable(form);
			},
			onSuccess: function(xhr) {
				try {
					Form.enable(form);
					if(ajaxErrorOrClose(xhr)) {
						$$('div#communauty_' + communauty_id + ' a.navigatorElementLink')[0].innerHTML = name.stripTags();			
						var orgSrc = $$('div#communauty_' + communauty_id + ' img.navigatorImg')[0].src;
						$$('div#communauty_' + communauty_id + ' img.navigatorImg')[0].src = 
							orgSrc.replace(/(private|public)/, (visibility.checked ? 'private' : 'public')); 
						updateModule(COMMUNAUTIES_MODULE);
					}
				} catch(e) {
					if(console) console.info(e);
				}
			}
		})
		Form.disable(form);
	}
}

// --- Suppression de communauté --- //

Communauty.deleteCommunautyForm = function() {
	var communauty_id = Communauty.getToolbarCommunautyId();
	dialog('deleteCommunautyDlg',
		{
			title:_mlt("CONFIRM_DELETE_TITLE"),
			content:_mlt("CONFIRM_DELETE_COMMUNAUTY",'Etes-vous sûr de vouloir supprimer cette Coomunauté')+' ?',
			size:'200,80',
			okAction:'Communauty.deleteCommunauty(' + communauty_id + ')',
			type:'confirm'
		}
	).display();
}


Communauty.deleteCommunauty = function() {
	var communauty_id = Communauty.getToolbarCommunautyId();
	new Ajax.Request(
		'/communauties/delete/'+communauty_id,
		{
			onSuccess: function(xhr) {
				if(ajaxErrorOrClose(xhr)) {
					Communauty.generateNavigator();
				} 
			}
		});
}

// --- Ajout de communauté --- //

Communauty.createCommunautyForm = function() {
	dialog('createCommunautyDlg',
		{
			source:'/communauties/create_form',
			size:'220,120'
		}).display();
}

Communauty.createCommunautyFormSetup = function() {
	Event.observe($('createCommunautyForm'), 'submit', Communauty.createCommunautyFormSave);
	$('createCommunautyName').focus();
}

Communauty.createCommunautyFormSave = function(e) {
	Event.stop(e);
	var form = Event.findElement(e, 'form');
	var name = $F(form['data[Communauty][name]']);
	if(/^\s*$/.test(name)) {
		errorDialog(_mlt("COMMUNAUTY_NAME_ERROR"));
		return false;
	} else {
		new Ajax.Request(form.getAttribute('action'), {
			method: form.getAttribute('method'),
			parameters: Form.serialize(form),
			onComplete: function(xhr) {
				try {
					Form.enable(form);
					if(ajaxErrorOrClose(xhr)) {
						Communauty.currentCommunauty = -1;
						Communauty.generateNavigator();
					}
				} catch(e) {
					if(console) console.info(e);
				}
			}
		})
		Form.disable(form);
	}
}

// --- Invitation d'utilisateur --- //

Communauty.inviteUserForm = function(e) {
	var communauty_id = (Communauty.currentCommunauty <= 0 ? 0 : Communauty.currentCommunauty);
	dialog('inviteCommunauty',{
		source:'/communauties/invite_communauty/' + communauty_id,
		size:'255,350'
		}
	).display();
}


// --- Gestion des dossiers --- //
Communauty.moveFolderForm = function() {
	dialog('moveCommunautyFolderDlg',
	{
		size:'200,120',
		source:'/communauties/move_folder/'+ Communauty.getToolbarFolderId()
	}).display();
}

Communauty.moveFolderSave = function(e) {
	Event.stop(e);
	var form = Event.findElement(e, 'form');
	
	new Ajax.Request('/communauties/move_folder/' + $F(form.communauty_folder_id) + '/' + $F(form.selectCategory),
		{
			method: 'post',
			parameters: Form.serialize(form),
			onSuccess: function(xhr) {
				var results = eval('(' + xhr.responseText + ')');
				if(results.error) {
					dialog('communautyMoveFolderError', {
						title: _mlt("COMMUNAUTY_MOVE_FOLDER_ERROR",'Erreur lors du déplacement du dossier'),
						content:results.error,
						size:'200,80',
						type:'info'
					}).display();
				} else {
					closeDialog();
					Communauty.openFolder(results.parent_id);
				}
			}
		}
	);
}

Communauty.editFolderSave = function(e) {
	Event.stop(e);
	var form = Event.findElement(e, 'form');
	
	var folder_id = $F(form['data[CommunautyFolder][communauty_folder_id]']);
	var folder_name = $F(form['data[CommunautyFolder][name]']);
	if(/^\s*$/.test(folder_name)) {
		alert(_mlt("FOLDER_NAME_ERROR","Veuillez saisir un nom pour le dossier")+'.');
		return;
	}
	
	new Ajax.Request(
		'/communauties/edit_folder/' + folder_id,
		{
			method: 'post',
			parameters: Form.serialize(form),
			onSuccess: function(xhr) {
				var results = eval('(' + xhr.responseText + ')');
				if(results.error) {
					dialog('editCommunautyFolderErrorDlg', {
						title: _mlt("COMMUNAUTY_EDIT_FOLDER_ERROR",'Erreur lors de la modification du dossier'),
						content:results.error,
						size:'200,80',
						type:'info'
					}).display();
				} else {
					closeDialog();
					Communauty.generateNavigator();
				}
			}
		}
	);
}

Communauty.editFolderForm = function() {
	dialog('editCommunautyFolderDlg',
		{
			size:'300,150',
			source:'/communauties/edit_folder/' + Communauty.getToolbarFolderId()
		}).display();
}

Communauty.deleteFolderForm = function() {
	var folder_id = Communauty.getToolbarFolderId();
	dialog('deleteCommunautyFolderDlg',
		{
			title:_mlt("CONFIRM_DELETE_TITLE"),
			content:_mlt("CONFIRM_DELETE_FOLDER",'Etes-vous sûr de vouloir supprimer ce dossier ?'),
			size:'200,80',
			okAction:'Communauty.deleteFolder(' + folder_id + ')',
			type:'confirm'
		}
	).display();
}

Communauty.deleteFolder = function(folder_id) {
	new Ajax.Request(
		'/communauties/delete_folder/' + folder_id,
		{
			method:'post',
			onSuccess: function(xhr) {
				if(ajaxErrorOrClose(xhr)) {
					Communauty.generateNavigator();
				}
			}
		}
	);
}

//-- Naviguer dans une communauté --//

Communauty.openFolder = function(folder_id) {
	if(!folder_id) {
		Communauty.currentFolder = Communauty.getToolbarFolderId();
	} else {
		Communauty.currentFolder = folder_id;
	}
	
	Communauty.generateNavigator();
	Communauty.generateBookmarks();
}

Communauty.generateBookmarks = function(start) {
	if(!start) start = 0;
	
	$('bookmarksContainer').innerHTML = Common.loadingTemplate;
	
	new Ajax.Request('/communauties/get_bookmarks/' + Communauty.currentCommunauty + '/' + Communauty.currentFolder + '/' + start,
	{
		method: 'get',
		onSuccess: Communauty.generateBookmarkElement
	});
}

Communauty.generateBookmarkElement = function(xhr,json) {
	var json = eval( '(' + xhr.responseText + ')' );
	if(json.error) {
		$('bookmarksContainer').innerHTML = json.error;
		return;
	}
	var bookmarks = json.bookmarks;
	if(bookmarks.length == 0) {
		$('bookmarksContainer').innerHTML = _mlt("NO_BOOKMARKS",'Aucun favori dans ce dossier');
	} else {
		$('bookmarksContainer').innerHTML = '';
		
		var pager = Common.getPager('Communauty.generateBookmarks()', json.total);
		new Insertion.Bottom($('bookmarksContainer'), Communauty.listTemplate.evaluate({PAGER:pager}));
		
		var container = $('mainContentBookmarkList');
		bookmarks.each(function(b) {
		
			// Linked Part
			var communautyName = '';
			var folderName = '';
			if (b.Communauty) {
				communautyName = '('+b.Communauty.name;
				if (b.CommunautyFolder.parent_id != 0) {
					communautyName += ' :';
					folderName = b.CommunautyFolder.name+')';
				} else {
					communautyName += ')';
				}
			} 
			
			var linkedPart = Communauty.linkedPartTemplate.evaluate({BOOKMARK_ID : b.Bookmark.bookmark_id, COMMUNAUTY_NAME: communautyName, FOLDER_NAME: folderName});
	
			new Insertion.Bottom(container, 
				Communauty.bookmarkItemTemplate.evaluate({
					BOOKMARK_ID:b.Bookmark.bookmark_id,
					BOOKMARK_NAME: b.Bookmark.name,
					COMMENT: b.Bookmark.comment,
					DEFAULT_MARK: b.Mark.value,
					URL_ID: b.Url.url_id,
					URL_ADDRESS: b.Url.address,
					LINKED_PART: linkedPart
				}));
			
			Event.observe($('mainContentBookmarkCommentLink_'+b.Bookmark.bookmark_id),"click",toggleComment);
			Event.observe($('mainContentBookmarkCommentTextArea_'+b.Bookmark.bookmark_id),'blur',function(event) {new Ajax.Request("/bookmarks/comment/"+b.Bookmark.bookmark_id+"/"+encodeURIComponent($('mainContentBookmarkCommentTextArea_'+b.Bookmark.bookmark_id).value))})
			Event.observe($('mainContentBookmarkCommentCloseLink_'+b.Bookmark.bookmark_id),'click',toggleComment);
			
			if (b.Communauty) {
				Event.observe('mainContentCommunautyLinkedCommunauty_'+b.Bookmark.bookmark_id,'click',function(){Communauty.openCommunauty(b.Communauty.communauty_id)});
				if (b.CommunautyFolder.parent_id != 0) {
					Event.observe('mainContentCommunautyLinkedFolder_'+b.Bookmark.bookmark_id,'click',function(){Communauty.openCommunauty(b.Communauty.communauty_id,b.CommunautyFolder.communauty_folder_id)});
				}
				else {
					$('mainContentCommunautyLinkedFolder_'+b.Bookmark.bookmark_id).hide();
				}
			} else {
				$('mainContentCommunautyLinkedCommunauty_'+b.Bookmark.bookmark_id).hide();
				$('mainContentCommunautyLinkedFolder_'+b.Bookmark.bookmark_id).hide();
			}
			
			var bookmark = $('bookmark_' + b.Bookmark.bookmark_id);
			
			
			Event.observe(bookmark.getElementsBySelector('span.bookmarkTitle')[0], 'click', function(e) {
				if(!Element.up(Event.element(e), '#' + Communauty.bookmarkToolbar.getId())) {
					Communauty.bookmarkToolbar.toggleIn(bookmark);
				}
			});
			
			var starContainer = $('bookmark_' + b.Bookmark.bookmark_id).getElementsBySelector('.starsContainer')[0];
			generateMarks(starContainer.getElementsBySelector('img.mark'), starContainer, b.Mark.value);	
		});
	}
}

generateBookmarkPager = function(nbMatches,criteria) {
	
	var action = '';
	if (Bookmark.MAIN_ACTION == 'get') {
		action = "getBookmarks("+criteria+",";
	} else if (Bookmark.MAIN_ACTION == 'search') {
		action = "searchBookmarks('"+criteria+"',";
	}
	
	var pagesElementList = '';
	var totalPages = Math.ceil(nbMatches / (20 - 1));
	for(var i = 0 ; i < totalPages ; i++) {
		var completeAction = action+(i * 20)+");";
		pagesElementList += Common.pagerElement.evaluate({ACTION: completeAction,NUMBER: (i + 1)});
	}
	return Common.pagerTemplate.evaluate({TOTAL_PAGES: totalPages, PAGES_LIST: pagesElementList});
}

Communauty.openCommunauty = function(communauty_id, folder_id) {
	// TODO Gérer le niveau d'accès ici.
	
	

	if(!communauty_id) {
		Communauty.currentCommunauty = Communauty.getToolbarCommunautyId();
	} else {
		Communauty.currentCommunauty = communauty_id;
	}
	if(!folder_id) {
		Communauty.currentFolder = Communauty.getToolbarCommunautyFolderId();
	} else {
		Communauty.currentFolder = folder_id;
	}
	Communauty.generateNavigator();
	Communauty.generateBookmarks();
}

Communauty.search = function(criteria, start) {
	clearNavigator();
	$('privateSubMenuDiv').setStyle({display:'none'});
	$('mainContentClearResultsButton').show();
	if (!start) start = '';
	new Ajax.Request('/communauties/search/'+criteria+'/'+start,{onComplete: Communauty.generateBookmarkElement});
}

Communauty.displayCommunautyMembers = function() {
	dialog('CommunautyMembers', {
		source: '/communauties/listMembers/' + Communauty.currentCommunauty,
		size: '700,400'
	}).display();
}


Communauty.addFolder = function(){
	dialog('addFolderCommunautyDlg',{
		source:'/communauties/add_folder/'+ Communauty.currentCommunauty + '/' + Communauty.currentFolder,
		size:'220,130'}).display();
}


//-- Ajout une url dans la communauté --//
Communauty.addBookmark = function(folder_id){
	if(!folder_id) {
		folder_id = Communauty.currentFolder;
	}
	dialog('addBookmarkCommunauty',{
		source:'/communauties/add_bookmark_form/' + Communauty.currentCommunauty + (folder_id > '0' ? '/' + folder_id : ''),
		size:'320,400'
		}
	).display();
}

Communauty.subscribe = function() {
	dialog('subscribeCommunautyDlg',
	{source: 'communauties/subscribe/'+Communauty.currentCommunauty, size: '400,240'}).display();
}

Communauty.subscribeSave = function() {
	$('communautySubMenuSubscribeCommunauty').down('a').innerHTML = _mlt('UNSUBSCRIBE_ALERTS', 'Se désabonner des alertes');
	updateModule(TRIGGERED_ALERTS_MODULE);
	closeDialog('subscribeCommunautyDlg');
}

Communauty.unsubscribeSave = function() {
	$('communautySubMenuSubscribeCommunauty').down('a').innerHTML = _mlt("SUBSCRIBE_ALERTS", 'S\'abonner aux alertes');
	updateModule(TRIGGERED_ALERTS_MODULE)
	closeDialog('subscribeCommunautyDlg');
}


Communauty.joinSave = function(communauty_id){
	new Ajax.Request('/communauties/saveCommunauty/'+communauty_id);
	switchToCommunauty(communauty_id);
}

Communauty.join = function(communauty_id){
	var communauty_id = $('bookmarksContainer').getAttribute('communautyid');
	
	dialog('joinCommunautyDlg',{
		title:_mlt('JOIN_COMMUNAUTY',"S\'abonner &agrave; la coomunaut&eacute;"),
		content:_mlt('JOIN_COMMUNAUTY_CONFIRM',"Etes-vous s&ucirc;r de vouloir rejoindre cette Coomunaut&eacute;"),
		size:'220,80',
		okAction:'Communauty.joinSave(' + Communauty.currentCommunauty + ');closeDialog()',
		type:'confirm'}).display();
}

Communauty.leaveSave = function() {
	new Ajax.Request('/communauties/leave/' + Communauty.currentCommunauty,
		{
			onSuccess: function() {
				switchToCommunauty();
			}
		});
}

Communauty.leave = function(){
	new Ajax.Request("/modules/incrementCounter/"+BOOKMARK_MODULE);

	dialog('leaveCommunautyDlg',{
		title:_mlt('LEAVE_COMMUNAUTY','Quitter la coomunaut&eacute;'),
		content:_mlt('LEAVE_COMMUNAUTY_CONFIRM','Etes-vous s&ucirc;r de vouloir quitter la Coomunaut&eacute;'),
		size:'220,80',
		okAction:'leaveCommunautyConfirm();closeDialog()',
		type:'confirm'}).display();
}

Communauty.editBookmarkForm = function() {
	dialog('editBookmarkDlg',
		{
			source:'/bookmarks/edit_form/' + Communauty.getToolbarBookmarkId(),
			size:'370,575'
		}).display();
}

Communauty.deleteBookmarkForm = function() {
	dialog('deleteBookmarkDlg',
		{
			size:'300,160',
			source:'/bookmarks/confirmDelete/' + Communauty.getToolbarBookmarkId() + 
				'/' + Communauty.currentFolder + '/1/' + Communauty.currentCommunauty
		}).display();
}

Communauty.moveBookmarkForm = function() {
	dialog('moveBookmarkDlg',
		{
			size:'250,130',
			source:'/bookmarks/move_form/' + Communauty.getToolbarBookmarkId()
		}).display();
}

Communauty.askJoinCommunauty = function(a){
	var communauty_id = a.getAttribute('communautyid');	
	var folder_id = a.getAttribute('communautyfolderid');
	
	if(User.isLogged) {
		if (!($('switchMenu'))) {
			new Ajax.Updater('module_2_content','/communauties/searchFromBookmarkPortlet/'+communauty_id+'/'+folder_id);	
		} else { 
			switchToCommunauty(communauty_id,folder_id);
		}
	} else {
		dialog('askJoinCommunauty',{
		title: _mlt("ASK_JOIN_COMMUNAUTY_TITLE",'Rejoindre une Coomunauté'),
		content: _mlt("PLEASE_OPEN_ACCOUNT_COMMUNAUTY",'Veuillez ouvrir un compte afin de pouvoir rejoindre votre coomunauté'),
		size:'220,80',
		type:'infos'}).display();
	}
}

