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