201c19570c2286bbdf6b4167217660020d135028
[ckeditor.git] / skins / ckeditor / _source / core / ckeditor.js
1 /*
2 Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
3 For licensing, see LICENSE.html or http://ckeditor.com/license
4 */
5
6 /**
7 * @fileOverview Contains the third and last part of the {@link CKEDITOR} object
8 * definition.
9 */
10
11 // Remove the CKEDITOR.loadFullCore reference defined on ckeditor_basic.
12 delete CKEDITOR.loadFullCore;
13
14 /**
15 * Holds references to all editor instances created. The name of the properties
16 * in this object correspond to instance names, and their values contains the
17 * {@link CKEDITOR.editor} object representing them.
18 * @type {Object}
19 * @example
20 * alert( <b>CKEDITOR.instances</b>.editor1.name ); // "editor1"
21 */
22 CKEDITOR.instances = {};
23
24 /**
25 * The document of the window holding the CKEDITOR object.
26 * @type {CKEDITOR.dom.document}
27 * @example
28 * alert( <b>CKEDITOR.document</b>.getBody().getName() ); // "body"
29 */
30 CKEDITOR.document = new CKEDITOR.dom.document( document );
31
32 /**
33 * Adds an editor instance to the global {@link CKEDITOR} object. This function
34 * is available for internal use mainly.
35 * @param {CKEDITOR.editor} editor The editor instance to be added.
36 * @example
37 */
38 CKEDITOR.add = function( editor )
39 {
40 CKEDITOR.instances[ editor.name ] = editor;
41
42 editor.on( 'focus', function()
43 {
44 if ( CKEDITOR.currentInstance != editor )
45 {
46 CKEDITOR.currentInstance = editor;
47 CKEDITOR.fire( 'currentInstance' );
48 }
49 });
50
51 editor.on( 'blur', function()
52 {
53 if ( CKEDITOR.currentInstance == editor )
54 {
55 CKEDITOR.currentInstance = null;
56 CKEDITOR.fire( 'currentInstance' );
57 }
58 });
59 };
60
61 /**
62 * Removes an editor instance from the global {@link CKEDITOR} object. This function
63 * is available for internal use only. External code must use {@link CKEDITOR.editor.prototype.destroy}
64 * to avoid memory leaks.
65 * @param {CKEDITOR.editor} editor The editor instance to be removed.
66 * @example
67 */
68 CKEDITOR.remove = function( editor )
69 {
70 delete CKEDITOR.instances[ editor.name ];
71 };
72
73 /**
74 * Perform global clean up to free as much memory as possible
75 * when there are no instances left
76 */
77 CKEDITOR.on( 'instanceDestroyed', function ()
78 {
79 if ( CKEDITOR.tools.isEmpty( this.instances ) )
80 CKEDITOR.fire( 'reset' );
81 });
82
83 // Load the bootstrap script.
84 CKEDITOR.loader.load( 'core/_bootstrap' ); // @Packager.RemoveLine
85
86 // Tri-state constants.
87
88 /**
89 * Used to indicate the ON or ACTIVE state.
90 * @constant
91 * @example
92 */
93 CKEDITOR.TRISTATE_ON = 1;
94
95 /**
96 * Used to indicate the OFF or NON ACTIVE state.
97 * @constant
98 * @example
99 */
100 CKEDITOR.TRISTATE_OFF = 2;
101
102 /**
103 * Used to indicate DISABLED state.
104 * @constant
105 * @example
106 */
107 CKEDITOR.TRISTATE_DISABLED = 0;
108
109 /**
110 * The editor which is currently active (have user focus).
111 * @name CKEDITOR.currentInstance
112 * @type CKEDITOR.editor
113 * @see CKEDITOR#currentInstance
114 * @example
115 * function showCurrentEditorName()
116 * {
117 * if ( CKEDITOR.currentInstance )
118 * alert( CKEDITOR.currentInstance.name );
119 * else
120 * alert( 'Please focus an editor first.' );
121 * }
122 */
123
124 /**
125 * Fired when the CKEDITOR.currentInstance object reference changes. This may
126 * happen when setting the focus on different editor instances in the page.
127 * @name CKEDITOR#currentInstance
128 * @event
129 * var editor; // Variable to hold a reference to the current editor.
130 * CKEDITOR.on( 'currentInstance' , function( e )
131 * {
132 * editor = CKEDITOR.currentInstance;
133 * });
134 */
135
136 /**
137 * Fired when the last instance has been destroyed. This event is used to perform
138 * global memory clean up.
139 * @name CKEDITOR#reset
140 * @event
141 */