event refactor, landing on HEAD!
[freeside.git] / httemplate / elements / fckeditor / editor / plugins / autogrow / fckplugin.js
1 /*\r
2  * FCKeditor - The text editor for Internet - http://www.fckeditor.net\r
3  * Copyright (C) 2003-2007 Frederico Caldeira Knabben\r
4  *\r
5  * == BEGIN LICENSE ==\r
6  *\r
7  * Licensed under the terms of any of the following licenses at your\r
8  * choice:\r
9  *\r
10  *  - GNU General Public License Version 2 or later (the "GPL")\r
11  *    http://www.gnu.org/licenses/gpl.html\r
12  *\r
13  *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")\r
14  *    http://www.gnu.org/licenses/lgpl.html\r
15  *\r
16  *  - Mozilla Public License Version 1.1 or later (the "MPL")\r
17  *    http://www.mozilla.org/MPL/MPL-1.1.html\r
18  *\r
19  * == END LICENSE ==\r
20  *\r
21  * Plugin: automatically resizes the editor until a configurable maximun\r
22  * height (FCKConfig.AutoGrowMax), based on its contents.\r
23  */\r
24 \r
25 var FCKAutoGrow_Min = window.frameElement.offsetHeight ;\r
26 \r
27 function FCKAutoGrow_Check()\r
28 {\r
29         var oInnerDoc = FCK.EditorDocument ;\r
30 \r
31         var iFrameHeight, iInnerHeight ;\r
32 \r
33         if ( FCKBrowserInfo.IsIE )\r
34         {\r
35                 iFrameHeight = FCK.EditorWindow.frameElement.offsetHeight ;\r
36                 iInnerHeight = oInnerDoc.body.scrollHeight ;\r
37         }\r
38         else\r
39         {\r
40                 iFrameHeight = FCK.EditorWindow.innerHeight ;\r
41                 iInnerHeight = oInnerDoc.body.offsetHeight ;\r
42         }\r
43 \r
44         var iDiff = iInnerHeight - iFrameHeight ;\r
45 \r
46         if ( iDiff != 0 )\r
47         {\r
48                 var iMainFrameSize = window.frameElement.offsetHeight ;\r
49 \r
50                 if ( iDiff > 0 && iMainFrameSize < FCKConfig.AutoGrowMax )\r
51                 {\r
52                         iMainFrameSize += iDiff ;\r
53                         if ( iMainFrameSize > FCKConfig.AutoGrowMax )\r
54                                 iMainFrameSize = FCKConfig.AutoGrowMax ;\r
55                 }\r
56                 else if ( iDiff < 0 && iMainFrameSize > FCKAutoGrow_Min )\r
57                 {\r
58                         iMainFrameSize += iDiff ;\r
59                         if ( iMainFrameSize < FCKAutoGrow_Min )\r
60                                 iMainFrameSize = FCKAutoGrow_Min ;\r
61                 }\r
62                 else\r
63                         return ;\r
64 \r
65                 window.frameElement.height = iMainFrameSize ;\r
66         }\r
67 }\r
68 \r
69 FCK.AttachToOnSelectionChange( FCKAutoGrow_Check ) ;\r
70 \r
71 function FCKAutoGrow_SetListeners()\r
72 {\r
73         if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG )\r
74                 return ;\r
75 \r
76         FCK.EditorWindow.attachEvent( 'onscroll', FCKAutoGrow_Check ) ;\r
77         FCK.EditorDocument.attachEvent( 'onkeyup', FCKAutoGrow_Check ) ;\r
78 }\r
79 \r
80 if ( FCKBrowserInfo.IsIE )\r
81 {\r
82 //      FCKAutoGrow_SetListeners() ;\r
83         FCK.Events.AttachEvent( 'OnAfterSetHTML', FCKAutoGrow_SetListeners ) ;\r
84 }\r
85 \r
86 function FCKAutoGrow_CheckEditorStatus( sender, status )\r
87 {\r
88         if ( status == FCK_STATUS_COMPLETE )\r
89                 FCKAutoGrow_Check() ;\r
90 }\r
91 \r
92 FCK.Events.AttachEvent( 'OnStatusChange', FCKAutoGrow_CheckEditorStatus ) ;