src/crypto.c: possible fix for memory leak related
[citadel.git] / webcit / tiny_mce / plugins / table / jscripts / cell.js
1 function init() {\r
2         tinyMCEPopup.resizeToInnerSize();\r
3 \r
4         document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');\r
5         document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');\r
6         document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor')\r
7 \r
8         var inst = tinyMCE.selectedInstance;\r
9         var tdElm = tinyMCE.getParentElement(inst.getFocusElement(), "td,th");\r
10         var formObj = document.forms[0];\r
11         var st = tinyMCE.parseStyle(tinyMCE.getAttrib(tdElm, "style"));\r
12 \r
13         // Get table cell data\r
14         var celltype = tdElm.nodeName.toLowerCase();\r
15         var align = tinyMCE.getAttrib(tdElm, 'align');\r
16         var valign = tinyMCE.getAttrib(tdElm, 'valign');\r
17         var width = trimSize(getStyle(tdElm, 'width', 'width'));\r
18         var height = trimSize(getStyle(tdElm, 'height', 'height'));\r
19         var bordercolor = convertRGBToHex(getStyle(tdElm, 'bordercolor', 'borderLeftColor'));\r
20         var bgcolor = convertRGBToHex(getStyle(tdElm, 'bgcolor', 'backgroundColor'));\r
21         var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(tdElm, 'class'), false);\r
22         var backgroundimage = getStyle(tdElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");;\r
23         var id = tinyMCE.getAttrib(tdElm, 'id');\r
24         var lang = tinyMCE.getAttrib(tdElm, 'lang');\r
25         var dir = tinyMCE.getAttrib(tdElm, 'dir');\r
26         var scope = tinyMCE.getAttrib(tdElm, 'scope');\r
27 \r
28         // Setup form\r
29         addClassesToList('class', 'table_cell_styles');\r
30         formObj.bordercolor.value = bordercolor;\r
31         formObj.bgcolor.value = bgcolor;\r
32         formObj.backgroundimage.value = backgroundimage;\r
33         formObj.width.value = width;\r
34         formObj.height.value = height;\r
35         formObj.id.value = id;\r
36         formObj.lang.value = lang;\r
37         formObj.style.value = tinyMCE.serializeStyle(st);\r
38         selectByValue(formObj, 'align', align);\r
39         selectByValue(formObj, 'valign', valign);\r
40         selectByValue(formObj, 'class', className);\r
41         selectByValue(formObj, 'celltype', celltype);\r
42         selectByValue(formObj, 'dir', dir);\r
43         selectByValue(formObj, 'scope', scope);\r
44 \r
45         // Resize some elements\r
46         if (isVisible('backgroundimagebrowser'))\r
47                 document.getElementById('backgroundimage').style.width = '180px';\r
48 \r
49         updateColor('bordercolor_pick', 'bordercolor');\r
50         updateColor('bgcolor_pick', 'bgcolor');\r
51 }\r
52 \r
53 function updateAction() {\r
54         tinyMCEPopup.restoreSelection();\r
55 \r
56         var inst = tinyMCE.selectedInstance;\r
57         var tdElm = tinyMCE.getParentElement(inst.getFocusElement(), "td,th");\r
58         var trElm = tinyMCE.getParentElement(inst.getFocusElement(), "tr");\r
59         var tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table");\r
60         var formObj = document.forms[0];\r
61 \r
62         inst.execCommand('mceBeginUndoLevel');\r
63 \r
64         switch (getSelectValue(formObj, 'action')) {\r
65                 case "cell":\r
66                         var celltype = getSelectValue(formObj, 'celltype');\r
67                         var scope = getSelectValue(formObj, 'scope');\r
68 \r
69                         if (tinyMCE.getParam("accessibility_warnings")) {\r
70                                 if (celltype == "th" && scope == "")\r
71                                         var answer = confirm(tinyMCE.getLang('lang_table_missing_scope', '', true));\r
72                                 else\r
73                                         var answer = true;\r
74 \r
75                                 if (!answer)\r
76                                         return;\r
77                         }\r
78 \r
79                         updateCell(tdElm);\r
80                         break;\r
81 \r
82                 case "row":\r
83                         var cell = trElm.firstChild;\r
84 \r
85                         if (cell.nodeName != "TD" && cell.nodeName != "TH")\r
86                                 cell = nextCell(cell);\r
87 \r
88                         do {\r
89                                 cell = updateCell(cell, true);\r
90                         } while ((cell = nextCell(cell)) != null);\r
91 \r
92                         break;\r
93 \r
94                 case "all":\r
95                         var rows = tableElm.getElementsByTagName("tr");\r
96 \r
97                         for (var i=0; i<rows.length; i++) {\r
98                                 var cell = rows[i].firstChild;\r
99 \r
100                                 if (cell.nodeName != "TD" && cell.nodeName != "TH")\r
101                                         cell = nextCell(cell);\r
102 \r
103                                 do {\r
104                                         cell = updateCell(cell, true);\r
105                                 } while ((cell = nextCell(cell)) != null);\r
106                         }\r
107 \r
108                         break;\r
109         }\r
110 \r
111         tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);\r
112         tinyMCE.triggerNodeChange();\r
113         inst.execCommand('mceEndUndoLevel');\r
114         tinyMCEPopup.close();\r
115 }\r
116 \r
117 function nextCell(elm) {\r
118         while ((elm = elm.nextSibling) != null) {\r
119                 if (elm.nodeName == "TD" || elm.nodeName == "TH")\r
120                         return elm;\r
121         }\r
122 \r
123         return null;\r
124 }\r
125 \r
126 function updateCell(td, skip_id) {\r
127         var inst = tinyMCE.selectedInstance;\r
128         var formObj = document.forms[0];\r
129         var curCellType = td.nodeName.toLowerCase();\r
130         var celltype = getSelectValue(formObj, 'celltype');\r
131         var doc = inst.getDoc();\r
132 \r
133         if (!skip_id)\r
134                 td.setAttribute('id', formObj.id.value);\r
135 \r
136         td.setAttribute('align', formObj.align.value);\r
137         td.setAttribute('vAlign', formObj.valign.value);\r
138         td.setAttribute('lang', formObj.lang.value);\r
139         td.setAttribute('dir', getSelectValue(formObj, 'dir'));\r
140         td.setAttribute('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(formObj.style.value)));\r
141         td.setAttribute('scope', formObj.scope.value);\r
142         tinyMCE.setAttrib(td, 'class', getSelectValue(formObj, 'class'));\r
143 \r
144         // Clear deprecated attributes\r
145         tinyMCE.setAttrib(td, 'width', '');\r
146         tinyMCE.setAttrib(td, 'height', '');\r
147         tinyMCE.setAttrib(td, 'bgColor', '');\r
148         tinyMCE.setAttrib(td, 'borderColor', '');\r
149         tinyMCE.setAttrib(td, 'background', '');\r
150 \r
151         // Set styles\r
152         td.style.width = getCSSSize(formObj.width.value);\r
153         td.style.height = getCSSSize(formObj.height.value);\r
154         if (formObj.bordercolor.value != "") {\r
155                 td.style.borderColor = formObj.bordercolor.value;\r
156                 td.style.borderStyle = td.style.borderStyle == "" ? "solid" : td.style.borderStyle;\r
157                 td.style.borderWidth = td.style.borderWidth == "" ? "1px" : td.style.borderWidth;\r
158         } else\r
159                 td.style.borderColor = '';\r
160 \r
161         td.style.backgroundColor = formObj.bgcolor.value;\r
162 \r
163         if (formObj.backgroundimage.value != "")\r
164                 td.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";\r
165         else\r
166                 td.style.backgroundImage = '';\r
167 \r
168         if (curCellType != celltype) {\r
169                 // changing to a different node type\r
170                 var newCell = doc.createElement(celltype);\r
171 \r
172                 for (var c=0; c<td.childNodes.length; c++)\r
173                         newCell.appendChild(td.childNodes[c].cloneNode(1));\r
174 \r
175                 for (var a=0; a<td.attributes.length; a++) {\r
176                         var attr = td.attributes[a];\r
177                         newCell.setAttribute(attr.name, attr.value);\r
178                 }\r
179 \r
180                 td.parentNode.replaceChild(newCell, td);\r
181                 td = newCell;\r
182         }\r
183 \r
184         return td;\r
185 }\r
186 \r
187 function changedBackgroundImage() {\r
188         var formObj = document.forms[0];\r
189         var st = tinyMCE.parseStyle(formObj.style.value);\r
190 \r
191         st['background-image'] = "url('" + formObj.backgroundimage.value + "')";\r
192 \r
193         formObj.style.value = tinyMCE.serializeStyle(st);\r
194 }\r
195 \r
196 function changedSize() {\r
197         var formObj = document.forms[0];\r
198         var st = tinyMCE.parseStyle(formObj.style.value);\r
199 \r
200         var width = formObj.width.value;\r
201         if (width != "")\r
202                 st['width'] = getCSSSize(width);\r
203         else\r
204                 st['width'] = "";\r
205 \r
206         var height = formObj.height.value;\r
207         if (height != "")\r
208                 st['height'] = getCSSSize(height);\r
209         else\r
210                 st['height'] = "";\r
211 \r
212         formObj.style.value = tinyMCE.serializeStyle(st);\r
213 }\r
214 \r
215 function changedColor() {\r
216         var formObj = document.forms[0];\r
217         var st = tinyMCE.parseStyle(formObj.style.value);\r
218 \r
219         st['background-color'] = formObj.bgcolor.value;\r
220         st['border-color'] = formObj.bordercolor.value;\r
221 \r
222         formObj.style.value = tinyMCE.serializeStyle(st);\r
223 }\r
224 \r
225 function changedStyle() {\r
226         var formObj = document.forms[0];\r
227         var st = tinyMCE.parseStyle(formObj.style.value);\r
228 \r
229         if (st['background-image'])\r
230                 formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");\r
231         else\r
232                 formObj.backgroundimage.value = '';\r
233 \r
234         if (st['width'])\r
235                 formObj.width.value = trimSize(st['width']);\r
236 \r
237         if (st['height'])\r
238                 formObj.height.value = trimSize(st['height']);\r
239 \r
240         if (st['background-color']) {\r
241                 formObj.bgcolor.value = st['background-color'];\r
242                 updateColor('bgcolor_pick','bgcolor');\r
243         }\r
244 \r
245         if (st['border-color']) {\r
246                 formObj.bordercolor.value = st['border-color'];\r
247                 updateColor('bordercolor_pick','bordercolor');\r
248         }\r
249 }\r