Upgrade TinyMCE to v3.4.5
[citadel.git] / webcit / tiny_mce / utils / form_utils.js
index c1f14090473feaf7bfb85a0b8650e9d789d36be1..59da01399e1e7c2fe9025f20db26b300ecf06015 100644 (file)
@@ -1,19 +1,24 @@
 /**\r
- * $Id: form_utils.js 673 2008-03-06 13:26:20Z spocke $\r
+ * form_utils.js\r
  *\r
- * Various form utilitiy functions.\r
+ * Copyright 2009, Moxiecode Systems AB\r
+ * Released under LGPL License.\r
  *\r
- * @author Moxiecode\r
- * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.\r
+ * License: http://tinymce.moxiecode.com/license\r
+ * Contributing: http://tinymce.moxiecode.com/contributing\r
  */\r
 \r
 var themeBaseURL = tinyMCEPopup.editor.baseURI.toAbsolute('themes/' + tinyMCEPopup.getParam("theme"));\r
 \r
 function getColorPickerHTML(id, target_form_element) {\r
-       var h = "";\r
+       var h = "", dom = tinyMCEPopup.dom;\r
 \r
-       h += '<a id="' + id + '_link" href="javascript:;" onclick="tinyMCEPopup.pickColor(event,\'' + target_form_element +'\');" onmousedown="return false;" class="pickcolor">';\r
-       h += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '"></span></a>';\r
+       if (label = dom.select('label[for=' + target_form_element + ']')[0]) {\r
+               label.id = label.id || dom.uniqueId();\r
+       }\r
+\r
+       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">';\r
+       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>';\r
 \r
        return h;\r
 }\r
@@ -50,7 +55,7 @@ function getBrowserHTML(id, target_form_element, type, prefix) {
 \r
        html = "";\r
        html += '<a id="' + id + '_link" href="javascript:openBrowser(\'' + id + '\',\'' + target_form_element + '\', \'' + type + '\',\'' + option + '\');" onmousedown="return false;" class="browse">';\r
-       html += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '"></span></a>';\r
+       html += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '">&nbsp;</span></a>';\r
 \r
        return html;\r
 }\r
@@ -66,6 +71,9 @@ function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {
        if (!form_obj || !form_obj.elements[field_name])\r
                return;\r
 \r
+       if (!value)\r
+               value = "";\r
+\r
        var sel = form_obj.elements[field_name];\r
 \r
        var found = false;\r
@@ -92,7 +100,7 @@ function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {
 function getSelectValue(form_obj, field_name) {\r
        var elm = form_obj.elements[field_name];\r
 \r
-       if (elm == null || elm.options == null)\r
+       if (elm == null || elm.options == null || elm.selectedIndex === -1)\r
                return "";\r
 \r
        return elm.options[elm.selectedIndex].value;\r
@@ -170,7 +178,7 @@ function convertHexToRGB(col) {
 }\r
 \r
 function trimSize(size) {\r
-       return size.replace(/([0-9\.]+)px|(%|in|cm|mm|em|ex|pt|pc)/, '$1$2');\r
+       return size.replace(/([0-9\.]+)(px|%|in|cm|mm|em|ex|pt|pc)/i, '$1$2');\r
 }\r
 \r
 function getCSSSize(size) {\r
@@ -182,6 +190,9 @@ function getCSSSize(size) {
        // Add px\r
        if (/^[0-9]+$/.test(size))\r
                size += 'px';\r
+       // Sanity check, IE doesn't like broken values\r
+       else if (!(/^[0-9\.]+(px|%|in|cm|mm|em|ex|pt|pc)$/i.test(size)))\r
+               return "";\r
 \r
        return size;\r
 }\r