* upgraded new version of tiny_mce
[citadel.git] / webcit / tiny_mce / utils / form_utils.js
1 /**\r
2  * $Id: form_utils.js 673 2008-03-06 13:26:20Z spocke $\r
3  *\r
4  * Various form utilitiy functions.\r
5  *\r
6  * @author Moxiecode\r
7  * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
8  */\r
9 \r
10 var themeBaseURL = tinyMCEPopup.editor.baseURI.toAbsolute('themes/' + tinyMCEPopup.getParam("theme"));\r
11 \r
12 function getColorPickerHTML(id, target_form_element) {\r
13         var h = "";\r
14 \r
15         h += '<a id="' + id + '_link" href="javascript:;" onclick="tinyMCEPopup.pickColor(event,\'' + target_form_element +'\');" onmousedown="return false;" class="pickcolor">';\r
16         h += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '"></span></a>';\r
17 \r
18         return h;\r
19 }\r
20 \r
21 function updateColor(img_id, form_element_id) {\r
22         document.getElementById(img_id).style.backgroundColor = document.forms[0].elements[form_element_id].value;\r
23 }\r
24 \r
25 function setBrowserDisabled(id, state) {\r
26         var img = document.getElementById(id);\r
27         var lnk = document.getElementById(id + "_link");\r
28 \r
29         if (lnk) {\r
30                 if (state) {\r
31                         lnk.setAttribute("realhref", lnk.getAttribute("href"));\r
32                         lnk.removeAttribute("href");\r
33                         tinyMCEPopup.dom.addClass(img, 'disabled');\r
34                 } else {\r
35                         if (lnk.getAttribute("realhref"))\r
36                                 lnk.setAttribute("href", lnk.getAttribute("realhref"));\r
37 \r
38                         tinyMCEPopup.dom.removeClass(img, 'disabled');\r
39                 }\r
40         }\r
41 }\r
42 \r
43 function getBrowserHTML(id, target_form_element, type, prefix) {\r
44         var option = prefix + "_" + type + "_browser_callback", cb, html;\r
45 \r
46         cb = tinyMCEPopup.getParam(option, tinyMCEPopup.getParam("file_browser_callback"));\r
47 \r
48         if (!cb)\r
49                 return "";\r
50 \r
51         html = "";\r
52         html += '<a id="' + id + '_link" href="javascript:openBrowser(\'' + id + '\',\'' + target_form_element + '\', \'' + type + '\',\'' + option + '\');" onmousedown="return false;" class="browse">';\r
53         html += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '"></span></a>';\r
54 \r
55         return html;\r
56 }\r
57 \r
58 function openBrowser(img_id, target_form_element, type, option) {\r
59         var img = document.getElementById(img_id);\r
60 \r
61         if (img.className != "mceButtonDisabled")\r
62                 tinyMCEPopup.openBrowser(target_form_element, type, option);\r
63 }\r
64 \r
65 function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {\r
66         if (!form_obj || !form_obj.elements[field_name])\r
67                 return;\r
68 \r
69         var sel = form_obj.elements[field_name];\r
70 \r
71         var found = false;\r
72         for (var i=0; i<sel.options.length; i++) {\r
73                 var option = sel.options[i];\r
74 \r
75                 if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {\r
76                         option.selected = true;\r
77                         found = true;\r
78                 } else\r
79                         option.selected = false;\r
80         }\r
81 \r
82         if (!found && add_custom && value != '') {\r
83                 var option = new Option(value, value);\r
84                 option.selected = true;\r
85                 sel.options[sel.options.length] = option;\r
86                 sel.selectedIndex = sel.options.length - 1;\r
87         }\r
88 \r
89         return found;\r
90 }\r
91 \r
92 function getSelectValue(form_obj, field_name) {\r
93         var elm = form_obj.elements[field_name];\r
94 \r
95         if (elm == null || elm.options == null)\r
96                 return "";\r
97 \r
98         return elm.options[elm.selectedIndex].value;\r
99 }\r
100 \r
101 function addSelectValue(form_obj, field_name, name, value) {\r
102         var s = form_obj.elements[field_name];\r
103         var o = new Option(name, value);\r
104         s.options[s.options.length] = o;\r
105 }\r
106 \r
107 function addClassesToList(list_id, specific_option) {\r
108         // Setup class droplist\r
109         var styleSelectElm = document.getElementById(list_id);\r
110         var styles = tinyMCEPopup.getParam('theme_advanced_styles', false);\r
111         styles = tinyMCEPopup.getParam(specific_option, styles);\r
112 \r
113         if (styles) {\r
114                 var stylesAr = styles.split(';');\r
115 \r
116                 for (var i=0; i<stylesAr.length; i++) {\r
117                         if (stylesAr != "") {\r
118                                 var key, value;\r
119 \r
120                                 key = stylesAr[i].split('=')[0];\r
121                                 value = stylesAr[i].split('=')[1];\r
122 \r
123                                 styleSelectElm.options[styleSelectElm.length] = new Option(key, value);\r
124                         }\r
125                 }\r
126         } else {\r
127                 tinymce.each(tinyMCEPopup.editor.dom.getClasses(), function(o) {\r
128                         styleSelectElm.options[styleSelectElm.length] = new Option(o.title || o['class'], o['class']);\r
129                 });\r
130         }\r
131 }\r
132 \r
133 function isVisible(element_id) {\r
134         var elm = document.getElementById(element_id);\r
135 \r
136         return elm && elm.style.display != "none";\r
137 }\r
138 \r
139 function convertRGBToHex(col) {\r
140         var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");\r
141 \r
142         var rgb = col.replace(re, "$1,$2,$3").split(',');\r
143         if (rgb.length == 3) {\r
144                 r = parseInt(rgb[0]).toString(16);\r
145                 g = parseInt(rgb[1]).toString(16);\r
146                 b = parseInt(rgb[2]).toString(16);\r
147 \r
148                 r = r.length == 1 ? '0' + r : r;\r
149                 g = g.length == 1 ? '0' + g : g;\r
150                 b = b.length == 1 ? '0' + b : b;\r
151 \r
152                 return "#" + r + g + b;\r
153         }\r
154 \r
155         return col;\r
156 }\r
157 \r
158 function convertHexToRGB(col) {\r
159         if (col.indexOf('#') != -1) {\r
160                 col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');\r
161 \r
162                 r = parseInt(col.substring(0, 2), 16);\r
163                 g = parseInt(col.substring(2, 4), 16);\r
164                 b = parseInt(col.substring(4, 6), 16);\r
165 \r
166                 return "rgb(" + r + "," + g + "," + b + ")";\r
167         }\r
168 \r
169         return col;\r
170 }\r
171 \r
172 function trimSize(size) {\r
173         return size.replace(/([0-9\.]+)px|(%|in|cm|mm|em|ex|pt|pc)/, '$1$2');\r
174 }\r
175 \r
176 function getCSSSize(size) {\r
177         size = trimSize(size);\r
178 \r
179         if (size == "")\r
180                 return "";\r
181 \r
182         // Add px\r
183         if (/^[0-9]+$/.test(size))\r
184                 size += 'px';\r
185 \r
186         return size;\r
187 }\r
188 \r
189 function getStyle(elm, attrib, style) {\r
190         var val = tinyMCEPopup.dom.getAttrib(elm, attrib);\r
191 \r
192         if (val != '')\r
193                 return '' + val;\r
194 \r
195         if (typeof(style) == 'undefined')\r
196                 style = attrib;\r
197 \r
198         return tinyMCEPopup.dom.getStyle(elm, style);\r
199 }\r