/*
@version $Id: api.js 55 2009-09-20 11:57:32Z roosit $
@copyright Copyright (C) 2008 Abricos All rights reserved.
@license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
*/

/**
 * Модуль комментариев.
 * 
 * @module Comment
 * @namespace Brick.mod.comment
 */
var Component = new Brick.Component();
Component.requires = { yahoo: ['dom'] };
Component.entryPoint = function(){
	
	var Dom = YAHOO.util.Dom,
		E = YAHOO.util.Event,
		L = YAHOO.lang;
	
	var NS = this.namespace;
	
	/**
	 * API модуля
	 * 
	 * @class API
	 * @extends Brick.Component.API
	 * @static
	 */
	var API = NS.API;
	
	/**
	 * Построить дерево комментариев на странице.
	 * 
	 * @method buildComments
	 * @static
	 * @param {Object} oArgs Объект параметров:<br>
	 * oArgs.elementId - Идентификатор HTML элемента, который содержит 
	 * в себе список комментариев: имя пользователя, идентификатор и текст комментария.<br>
	 * oArgs.dbContentId - Идентификатор из таблицы контента на сервера. <br>
	 * oArgs.data - Сопутствующие данные комментариев.
	 */
	API.buildComments = function(oArgs){
		API.fn('comment', function(){
			var widget = new NS.Builder(oArgs.elementId, oArgs.dbContentId, oArgs.data);
			API.dsRequest();
		});
	};
	
	/**
	 * Открыть панель "Список комментариев"
	 * 
	 * @method showCommentListPanel
	 * @static
	 */
	API.showCommentListPanel = function(){
		API.fn('manager', function(){
			var widget = new NS.CommentListPanel();
			API.dsRequest();
		});
	};
	
	/**
	 * Показать виджет "Список комментариев"
	 * 
	 * @method showCommentListWidget
	 * @static
	 * @param {Object} container Идентификатор HTML элемента или 
	 * HTML элемент, контейнер  в котором будет показан виджет.
	 */
	API.showCommentListWidget = function(container){
		API.fn('manager', function(){
			var widget = new NS.CommentListWidget(container);
			API.addWidget('CommentListWidget', widget);
			API.dsRequest();
		});
	};

	
	/**
	 * Запросить DataSet произвести обновление данных.
	 * 
	 * @method dsRequest
	 */
	API.dsRequest = function(){
		if (!Brick.objectExists('Brick.mod.comment.data')){
			return;
		}
		Brick.mod.comment.data.request(true);
	};

	/**
	 * Привелегии пользователя.
	 * 
	 * @class Action
	 * @static
	 */
	API.Action = {
		/**
		 * Доступ на чтение комментариев
		 * 
		 * @property COMMENTS_VIEW
		 * @default 10
		 */
		COMMENTS_VIEW: '10',
		
		/**
		 * Доступ на запись комментария
		 * 
		 * @property COMMENT_WRITE
		 * @default 20
		 */
		COMMENT_WRITE: '20',

		/**
		 * Доступ на администрирование комментариев
		 * 
		 * @property COMMENTS_ADMIN
		 * @default 50
		 */
		COMMENTS_ADMIN: '50'
	};
};
