/** Generated by js.php */
var Bookmark = {};

Bookmark.MAIN_CONTENT_BOOKMARK_LIST_ID = 'mainContentBookmarkList';



// The main action of the bookmarks part following the action which has been made
// Can be get or search
Bookmark.MAIN_ACTION = null;

// For searching the user's bookmark
Bookmark.USER_ID = null;

Bookmark.isAdmin = false;

Bookmark.NB_RESULTS = 20;
opened_private_comment = 0

Bookmark.listTemplate = new Template('#{PRIVATE_INFO}<br><br>#{PAGER}<ul id="'+Bookmark.MAIN_CONTENT_BOOKMARK_LIST_ID+'"></ul>#{PAGER}');
Bookmark.taggedListTemplate = new Template('#{SUMMARY}<br><br>#{PAGER}<ul id="taggedBookmarksList"></ul>#{PAGER}');

Bookmark.itemTemplate = new Template("<li id='mainContentBookmark#{TAG_SEARCH}_#{BOOKMARK_ID}' bookmarkId='#{BOOKMARK_ID}' urlId='#{URL_ID}' url='#{URL_ADDRESS}'>"+
										"<img id='mainContentBookmark#{TAG_SEARCH}Img_#{BOOKMARK_ID}' class='statusIcon' align='bottom' src='/img/icons/crystal/16x16/actions/#{IMG_NAME}.gif'/> "+
										"<a id='mainContentBookmark#{TAG_SEARCH}Link_#{BOOKMARK_ID}' class='bookmarkName' href='javascript:;'>#{BOOKMARK_NAME}</a>"+
										"<a href='javascript:;' id='mainContentBookmark#{TAG_SEARCH}CommentLink_#{BOOKMARK_ID}' style='color: rgb(85, 85, 85);'> - "+_mlt("COMMENT")+" - </a>"+
										"<span id='mainContentBookmark#{TAG_SEARCH}StarsContainer_#{BOOKMARK_ID}' class='starsContainer' default='#{DEFAULT_MARK}'>"+
											"<img id='mainContentBookmark#{TAG_SEARCH}Mark_#{BOOKMARK_ID}_1' src='/img/starGray.gif' value='1' class=\"mark\" style='left:-1px'/>"+
											"<img id='mainContentBookmark#{TAG_SEARCH}Mark_#{BOOKMARK_ID}_2' src='/img/starGray.gif' value='2' class=\"mark\" style='left:-1px'/>"+
											"<img id='mainContentBookmark#{TAG_SEARCH}Mark_#{BOOKMARK_ID}_3' src='/img/starGray.gif' value='3' class=\"mark\" style='left:-1px'/>"+
											"<img id='mainContentBookmark#{TAG_SEARCH}Mark_#{BOOKMARK_ID}_4' src='/img/starGray.gif' value='4' class=\"mark\" style='left:-1px'/>"+
											"<img id='mainContentBookmark#{TAG_SEARCH}Mark_#{BOOKMARK_ID}_5' src='/img/starGray.gif' value='5' class=\"mark\" style='left:-1px'/>"+
										"</span> #{LINKED_FOLDER}"+
										"<div id='mainContentBookmark#{TAG_SEARCH}Comment_#{BOOKMARK_ID}' style='display:none' class='commentContainer'>"+
											"<textarea id='mainContentBookmark#{TAG_SEARCH}CommentTextArea_#{BOOKMARK_ID}' class='textareaCommentEditable'>#{COMMENT}</textarea><br>"+
											"<a id='mainContentBookmark#{TAG_SEARCH}CommentCloseLink_#{BOOKMARK_ID}' href='javascript:;' >"+_mlt('CLOSE')+"</a>"+
										"</div>"+
									"</li>");

Bookmark.linkedFolderTemplate = new Template("<span><a class='selected_tab' href='javascript:;' id='mainContentBookmark#{TAG_SEARCH}LinkedGroup_#{BOOKMARK_ID}'>#{GROUP_NAME}</a><a class='unselected_tab' href='javascript:;' id='mainContentBookmark#{TAG_SEARCH}LinkedFolder_#{BOOKMARK_ID}'>#{FOLDER_NAME}</a></span>");


Bookmark.toolbar = new ToolbarEx('bookmarkToolbarId',
									[
										{
											image: '/img/icons/crystal/16x16/actions/network.png',
											events : {'click': function(event){if(!User.isTestUser){window.open(Event.element(event).up('LI').getAttribute('url'));hitUrl(Event.element(event).up('LI').getAttribute('urlId'),'private');}else{Common.displayRightTestUserErrorDialog();}}},
											helpText : _mlt('OPEN_BOOKMARK','Ouvrir ce favori')
										},
										{
											image: '/img/icons/crystal/16x16/actions/edit.png',
											events : {'click':function(event) {if(!User.isTestUser){dialog('editBookmark',{source:'/bookmarks/edit_form/'+Event.element(event).up('LI').getAttribute('bookmarkId'),size:'300,700'}).display();}else{Common.displayRightTestUserErrorDialog();}}},
											helpText : _mlt('EDIT_BOOKMARK','Modifier ce favori')
										},{
											image: '/img/icons/crystal/16x16/actions/editdelete.png',
											events : {'click':function(event){if(!User.isTestUser){dialog('deleteBookmark',{size:'300,160',source:'/bookmarks/confirmDelete/'+Event.element(event).up('LI').getAttribute('bookmarkId')}).display();}else{Common.displayRightTestUserErrorDialog();}}},
											helpText : _mlt('DELETE_BOOKMARK','Supprimer ce favori')
										},
										{
											image: '/img/icons/crystal/16x16/actions/editmove.png',
											events : {'click':function(event){if(!User.isTestUser){dialog('moveBookmark',{size:'350,200',source:'/bookmarks/move_form/'+Event.element(event).up('LI').getAttribute('bookmarkId')}).display();}else{Common.displayRightTestUserErrorDialog();}}},
											helpText : _mlt('MOVE_BOOKMARK','Déplacer ce favori')
										} ,
										{
											image: '/img/puce.gif',
											events : {'click':function(event){if(!User.isTestUser){dialog('shareBookmark',{size:'400,550',source:'/communauties/share_bookmark_form/'+Event.element(event).up('LI').getAttribute('bookmarkId')}).display();}else{Common.displayRightTestUserErrorDialog();}}},
											helpText : _mlt('SHARE_BOOKMARK','Partager ce favori')
										}
									]
								);
								

/**
*	Generate the dom of the bookmark list
*
**/
generateBookmarkList = function(xhr,json) {
	try {
		if (!json) json = eval('('+xhr.responseText+')');
		
		if ((json.infos.bookmarks.action == 'get') || (json.infos.bookmarks.action == 'search')){
			Bookmark.MAIN_ACTION = json.infos.bookmarks.action;
		}
		
		Bookmark.isAdmin = json.infos.bookmarks.isAdmin;
		var container = $('genericBookmarksContainer');
		if(!container) container = $('bookmarksContainer');

		container.innerHTML = '';
		var privateInfo = "";
		if ((json.errors) && (json.errors.bookmarks)) {
			privateInfo = json.errors.bookmarks;
			new Insertion.Bottom(container, Bookmark.listTemplate.evaluate({PRIVATE_INFO:privateInfo}));
		} else {
		
			if (json.infos.bookmarks.summary) {
				privateInfo = json.infos.bookmarks.summary;
			}
		
			var pager = '';
			if ((json.infos.bookmarks.nb_matches) && (json.infos.bookmarks.nb_matches > 20)) {
				pager = generateBookmarkPager(json.infos.bookmarks.nb_matches,json.infos.bookmarks.criteria);
			}
			
			new Insertion.Bottom(container, Bookmark.listTemplate.evaluate({PAGER:pager,PRIVATE_INFO:privateInfo}));
			var bookmarksList = $(Bookmark.MAIN_CONTENT_BOOKMARK_LIST_ID);
			json.bookmarks.each( function(el) { generateBookmarkListElement(el, bookmarksList) });
		}
		
	}
	catch (e) {
		if (console) console.error(e);
	}
}

generateTaggedBookmarkList = function(xhr) {
	$('taggedBookmarksContainer').innerHTML = '';
	try {
		var json = eval('(' + xhr.responseText + ')');
		if(!json.bookmarks.length) {
			$('taggedBookmarksContainer').innerHTML = _mlt('NO_BOOKMARK_FOUND', 'Aucun favori trouvé');
		} else {
			var pager;
			
			if ((json.nb_matches) && (json.nb_matches > 20)) {
				pager = Common.getPager('searchTaggedBookmarks(\'' + json.criteria + '\')', json.nb_matches);
			} else {
				pager = '';
			}
			
			$('taggedBookmarksContainer').innerHTML = Bookmark.taggedListTemplate.evaluate({PAGER: pager, SUMMARY: json.summary});
			var bookmarksList = $('taggedBookmarksList');	
			
			json.bookmarks.each( function(el) { generateBookmarkListElement(el, bookmarksList,true) });
			
			
		}
	} catch(e) {
		if(console) console.error(e);
	}
}

generateBookmarkListElement = function(bookmark, container,tagSearch) {
	if (!tagSearch) tagSearch = false;
	try {
		var imgName = 'webexport';
		if (bookmark.private == 1) imgName = 'filelocked';
		
		var name = bookmark.name;
		if (name.length > 60) {
			name = name.substring(0,60)+'...';
		}
		
		// Linked Group
		var groupName = '';
		if (bookmark["group"]) {
			groupName = '('+bookmark["group"]["name"];
			if (bookmark["folder_name"]) {
				groupName += ' :';
			} else {
				groupName += ')';
			}
		} 
		
		// Linked Folder
		var folderName = '';
		if (bookmark["folder_name"]) {
			if (!bookmark["group"]) {
				folderName = '(';
			}
			folderName += bookmark["folder_name"]+')';
		} 
		
		var tagSearchTemplateElement = '';
		if (tagSearch) tagSearchTemplateElement = 'Tag';
		
		var linked = {BOOKMARK_ID : bookmark["bookmark_id"],TAG_SEARCH: tagSearchTemplateElement, GROUP_NAME: groupName, FOLDER_NAME: folderName}
		var linkedFolder = Bookmark.linkedFolderTemplate.evaluate(linked);
		
		
		var bookmarkListElement = {
			BOOKMARK_ID: bookmark["bookmark_id"],
			TAG_SEARCH: tagSearchTemplateElement,
			URL_ID:bookmark['url_id'],
			URL_ADDRESS:bookmark.address,
			IMG_NAME: imgName, 
			BOOKMARK_NAME: name,
			DEFAULT_MARK: (bookmark['my_mark'] == null ? 0 : bookmark['my_mark']),
			COMMENT:bookmark.comment,
			LINKED_FOLDER:linkedFolder
		};
		new Insertion.Bottom(container,Bookmark.itemTemplate.evaluate(bookmarkListElement));
		// Ajout des évenements
		if ((Bookmark.isAdmin) || ((bookmark["isAdmin"]) && (bookmark["isAdmin"]) == true)) {
			Event.observe($('mainContentBookmark'+tagSearchTemplateElement+'Link_'+bookmark['bookmark_id']),"click",function() {Bookmark.toolbar.displayIn($('mainContentBookmark'+tagSearchTemplateElement+'_'+bookmark["bookmark_id"]));});
		} else {
			Event.observe($('mainContentBookmark'+tagSearchTemplateElement+'Link_'+bookmark['bookmark_id']),"click",function() {window.open($('mainContentBookmark_'+bookmark["bookmark_id"]).getAttribute('url'));hitUrl($('mainContentBookmark_'+bookmark["bookmark_id"]).getAttribute('urlId'),'private');});
		}
		
		Event.observe($('mainContentBookmark'+tagSearchTemplateElement+'CommentLink_'+bookmark['bookmark_id']),"click",toggleComment);
		
		Event.observe($('mainContentBookmark'+tagSearchTemplateElement+'CommentTextArea_'+bookmark['bookmark_id']),'blur',function(event) {new Ajax.Request("/bookmarks/comment/"+bookmark['bookmark_id']+"/"+encodeURIComponent($('mainContentBookmark'+tagSearchTemplateElement+'CommentTextArea_'+bookmark['bookmark_id']).value))})
		Event.observe($('mainContentBookmark'+tagSearchTemplateElement+'CommentCloseLink_'+bookmark['bookmark_id']),'click',toggleComment);
		generateMarks(
			$('mainContentBookmark'+tagSearchTemplateElement+'StarsContainer_' + bookmark['bookmark_id']).getElementsBySelector('img.mark'), 
			$('mainContentBookmark'+tagSearchTemplateElement+'StarsContainer_' + bookmark['bookmark_id']),
			bookmark['my_mark']);
			
		if (bookmark["group"]) {
			Event.observe('mainContentBookmark'+tagSearchTemplateElement+'LinkedGroup_'+bookmark['bookmark_id'],'click',function(){Group.getUsers(bookmark['group'])});
		} else {
			$('mainContentBookmark'+tagSearchTemplateElement+'LinkedGroup_'+bookmark['bookmark_id']).hide();
		}
		if (bookmark["folder_name"]) {
			Event.observe('mainContentBookmark'+tagSearchTemplateElement+'LinkedFolder_'+bookmark['bookmark_id'],'click',function(){openFolder(bookmark['folder_id'])});
		} else {
			$('mainContentBookmark'+tagSearchTemplateElement+'LinkedFolder_'+bookmark['bookmark_id']).hide();
		}
		
		
	} catch (e) {
		if (console) console.error(e);
	}
}

generateMarks = function(stars, container, value) {
	stars.each(function(img, index) {
		if(index < value) {
			img.src = '/img/starBlue.gif';
		} else {
			img.src = '/img/starGray.gif';
		}
		
		Event.observe(img, 'mouseover', overMark);
		Event.observe(img, 'click', setMark);
	});
	Event.observe(container, 'mouseout', resetMark);
}

getBookmarks = function(folderId,start) {
	var userIdUrl = '';
	
	if (Bookmark.USER_ID) userIdUrl = Bookmark.USER_ID;
	
	if (!start) start = 0;
	clearBookmarkContainer();
	new Ajax.Request('/bookmarks/get/'+folderId+'/'+start+'/'+Bookmark.NB_RESULTS+'/'+userIdUrl,{onComplete: generateBookmarkList});
}

searchBookmarks = function(criteria,start, fromTags) {
	clearNavigator();
	$('privateSubMenuDiv').setStyle({display:'none'});
	$('mainContentClearResultsButton').show();
	if (!start) {
		clearBookmarkContainer();
		
		// si start n'est pas défini on n'est pas en train
		// de manipuler le pageR => on doit éventuellement
		// lancer la recherche dans les tags
		if(fromTags) {
			new Insertion.Bottom($('bookmarksContainer'), '<h2>' + _mlt('TAGGED_BOOKMARKS_PV_RESULTS', 'Résultats par tag') + '</h2>');
			new Insertion.Bottom($('bookmarksContainer'), '<div id="taggedBookmarksContainer"></div>');
			new Insertion.Bottom($('bookmarksContainer'), '<h2>' + _mlt('GENERIC_RESULTS', 'Résultats par mot clé') + '</h2>');
			new Insertion.Bottom($('bookmarksContainer'), '<div id="genericBookmarksContainer"></div>');
			searchTaggedBookmarks(criteria, 0);
		}
		start = '';
	}
	
	var container = $('genericBookmarksContainer');
	if(!container) container = $('bookmarksContainer');
	new Insertion.Top(container, Common.loadingTemplate);
	new Ajax.Request('/bookmarks/search/'+criteria+'/'+start,{onComplete: function(xhr,json) {
		generateBookmarkList(xhr,json);
		$('mainContentCriteria').value = decodeURIComponent(criteria);
		activeSearchButton();
	}});
}

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

searchTaggedBookmarks = function(criteria, start) {
	var container = $('taggedBookmarksList');
	if(!container) container = $('taggedBookmarksContainer');
	container.innerHTML = Common.loadingTemplate;
	new Ajax.Request('/tags/search_bookmarks/' + criteria + '/' + start, {
		onSuccess: generateTaggedBookmarkList
	});
}

// Criteria can be the folderId or the search criteria depending to the function which generate the bookmarks list
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 / Bookmark.NB_RESULTS);
	for(var i = 0 ; i < totalPages ; i++) {
		var completeAction = action+(i * Bookmark.NB_RESULTS);
		
		if ((Bookmark.USER_ID) && (Bookmark.USER_ID != '')) {
			completeAction += ","+Bookmark.USER_ID;
		}
		
		completeAction += ");";
		pagesElementList += Common.pagerElement.evaluate({ACTION: completeAction,NUMBER: (i + 1)});
	}
	return Common.pagerTemplate.evaluate({TOTAL_PAGES: totalPages, PAGES_LIST: pagesElementList});
}

//-- lien pour ajouter un dossier --//
addBookmarkInMyBookmarks = function(){
	if(!User.isTestUser) {
		dialog('addBookmark',{
			source:'/bookmarks/create_form/'+$(Folder.FOLDER_NAVIGATOR_ID).getAttribute('folderId'),
			size:'370,575'}).display();
	}
	else{
		Common.displayRightTestUserErrorDialog();
	}
}

deleteBookmark = function(bookmark_id,communautyFolderId,isCommunauty,communautyId)
{
	new Ajax.Request("/bookmarks/delete/"+bookmark_id+"/"+communautyFolderId+"/"+isCommunauty+"/"+communautyId,
	{
		onSuccess: function(xhr) {
		try {
			var result = eval('(' + xhr.responseText + ')');
			if(result.error) {
				dialog('deleteBookmarkErrorDlg', {
					title: _mlt("DELETE_BOOKMARK_ERROR",'Erreur lors de la suppression du bookmark'),
					content:result.error,
					size:'200,80',
					type:'info'
				}).display();
			} else {
				open_bookmark_toolbar_id = -1;
				if(Communauty.currentCommunauty <= 0) {
					Element.remove(Element.up($('bookmarkToolbarId'), 'LI'));
				} else {
					Element.remove( Element.up($('communautyBookmarkToolbar'), 'LI') ); 
				}
				closeDialog();
			}
		} catch(e) { console.info(e); }
		}
		
	});
}


// Fonction encore utilisées ?

/**
/*	mise à jour de la liste des dossiers
*/
// récupération du bookmark dont la barre d'outils est ouverte
getActiveFolder = function()
{
	return Element.up($('folderToolbar'),'li')
}


/**
* Active ou désactive la recherche en fonction de la taille du terme de recherche
*/
activePrivateSearchButton = function()
{
	if(!$('criterium')) return;

	if ($('criterium').value.length >= 3)
	{
		$('submit_search_button').disabled= false;
	}
	else
	{
		$('submit_search_button').disabled= true;
	}
}


