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

/**
 * @module TinyMCE
 * @namespace Brick.mod.tinymce
 */

var TINYMCE_VERSION = '3.3.9.2'; 

var Component = new Brick.Component();
Component.requires = {
	ext: [{
		name: 'tinymce',
		fullpath: '/modules/tinymce/lib/'+TINYMCE_VERSION+'/tiny_mce_gzip.js',
		type: 'js'
	}]
};
Component.entryPoint = function(){
	
	var Dom = YAHOO.util.Dom,
		E = YAHOO.util.Event,
		L = YAHOO.lang;
	
	var NS = this.namespace,
		API = NS.API;

	/**
	 * API модуля TinyMCE
	 * @class API
	 * @static
	 */
	
	/**
	 * Загрузить редактор TinyMCE, по окончанию загрузки выполнить callback.
	 * 
	 * @method loadTinyMCE
	 * @static
	 * @param {Function} callback Функция, которая будет выполнена по окончанию 
	 * загрузки редактора TinyMCE.
	 */
	API.loadTinyMCE = function(callback){
		
		var loadComplete = function(){
			NS.Loader.loadEvent.unsubscribe(loadComplete);
			callback();
		};
		NS.Loader.loadEvent.subscribe(loadComplete);
		NS.Loader.start();
	};
	
	/**
	 * Создать текстовый редактор <a href="Brick.widget.Editor.html">Brick.widget.Editor</a>.
	 * 
	 * @method initEditor
	 * @static
	 * @param {Object} obj Объект параметров: 
	 * obj.element - идентификатор HTML элемента TEXTAREA,
	 * obj.onSuccess - обработчик события окончания загрузки визуального редактора, в параметрах 
	 * передается объект экземпляра класса <a href="Brick.widget.Editor.html">Brick.widget.Editor</a>.
	 */
	API.initEditor = function(obj){
		obj = obj || {};
		Brick.Component.API.fireFunction('tinymce', 'v_editor', function(){
			var Editor = Brick.widget.Editor;
			var editor = new Editor(obj.element, {
				'mode': Editor.MODE_VISUAL,
				'veName': 'tinymce'
			});
			
			if (L.isFunction(obj.onSuccess)){
				obj.onSuccess(editor);
			}
		});
	};

(function(){
	/**
	 * Загрузчик редактора TinyMCE.
	 * @class Loader
	 * @static
	 */
	var Loader = {};
	var _isloadlib = false;
	
	/**
	 * Начать загрузку текстового редактора TinyMCE.
	 * 
	 * @method start
	 * @static
	 */
	Loader.start = function(){
		if (_isloadlib){
			Loader.loadEvent.fire();
			return;
		}
		tinyMCE_GZ.init({
			baseURL: '/modules/tinymce/lib/'+TINYMCE_VERSION,
			themes : 'advanced',
			plugins : 'safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,'+
				'emotions,iespell,insertdatetime,preview,media,searchreplace,print,'+
				'contextmenu,paste,directionality,fullscreen,noneditable,visualchars,'+
				'nonbreaking,xhtmlxtras',
			languages : 'en,ru', 
			disk_cache : true, 
			version: TINYMCE_VERSION
		}, 
		function() {
			_isloadlib = true;
			Loader.loadEvent.fire();
		});
	};
	/**
	 * Событие окончания загрузки редактора TinyMCE.
	 * 
	 * @event loadEvent
	 * @static
	 */
	Loader.loadEvent = new YAHOO.util.CustomEvent('loadEvent');
	
	NS.Loader = Loader;
	
})();	
	
};
