Current Path : /var/www/html/clients/kampol.e-nk.ru/plugins/editors/jce/libraries/js/ |
Current File : /var/www/html/clients/kampol.e-nk.ru/plugins/editors/jce/libraries/js/tiny_mce_utils.js |
/** * Makes select boxes editable. * * @author Moxiecode * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved. */ var TinyMCE_EditableSelects = { editSelectElm : null, init : function() { var nl = document.getElementsByTagName("select"), i, d = document, o, oc; for (i=0; i<nl.length; i++) { if (nl[i].className.indexOf('mceEditableSelect') != -1) { o = new Option('(' + tinyMCEPopup.getLang('dlg.select_value', 'Add Value') + ')', '__mce_add_custom__'); o.className = 'mceAddSelectValue'; nl[i].options[nl[i].options.length] = o; nl[i].tmp = nl[i].onchange; nl[i].onchange = function(){ if(this.value == '__mce_add_custom__'){ TinyMCE_EditableSelects.onChangeEditableSelect(this); }else{ if(this.tmp){ this.tmp.call(); } } } } } }, onChangeEditableSelect : function(se) { var d = document, ne; if (se.options[se.selectedIndex].value == '__mce_add_custom__') { ne = d.createElement("input"); ne.id = se.id + "_custom"; ne.name = se.name + "_custom"; ne.type = "text"; ne.style.width = se.offsetWidth + 'px'; se.parentNode.insertBefore(ne, se); se.style.display = 'none'; ne.focus(); ne.onblur = TinyMCE_EditableSelects.onBlurEditableSelectInput; TinyMCE_EditableSelects.editSelectElm = se; } }, onBlurEditableSelectInput : function() { var se = TinyMCE_EditableSelects.editSelectElm; if (se) { if (se.previousSibling.value != '') { se.options[se.options.length] = new Option(se.previousSibling.value, se.previousSibling.value); se.selectedIndex = se.options.length - 1; } else { for (var i=0; i<se.options.length; i++) { var o = se.options[i]; if (o.value === '') { o.selected = true; } else{ o.selected = false; } } } if(se.tmp && se.tmp != 'undefined'){ se.tmp.call(); } se.style.display = 'inline'; se.parentNode.removeChild(se.previousSibling); TinyMCE_EditableSelects.editSelectElm = null; } } }; TinyMCE_Utils = { getColorPickerHTML : function(id){ var h = ""; h += '<a id="' + id + '_pick_link" href="javascript:;" onclick="tinyMCEPopup.pickColor(event,\'' + id +'\');" onmousedown="return false;" class="pickcolor">'; h += '<span id="' + id + '_pick" title="' + tinyMCEPopup.getLang('browse') + '"></span></a>'; return h; }, updateColor : function(parent){ if(typeof parent == 'string'){ parent = document.getElementById(parent); } document.getElementById(parent.id + '_pick').style.backgroundColor = parent.value; }, setBrowserDisabled : function(id, state) { var img = document.getElementById(id); var lnk = document.getElementById(id + "_link"); if (lnk) { if (state) { lnk.setAttribute("realhref", lnk.getAttribute("href")); lnk.removeAttribute("href"); tinyMCEPopup.dom.addClass(img, 'disabled'); } else { lnk.setAttribute("href", lnk.getAttribute("realhref")); tinyMCEPopup.dom.removeClass(img, 'disabled'); } } }, getBrowserHTML : function(id, target_form_element, type, prefix) { var option = prefix + "_" + type + "_browser_callback", cb, html; var cb, html; cb = tinyMCEPopup.getParam(option, tinyMCEPopup.getParam("file_browser_callback")); if (!cb){ return ""; } html = ""; html += '<a id="' + id + '_link" href="javascript:TinyMCE_Utils.openBrowser(\'' + id + '\',\'' + target_form_element + '\', \'' + type + '\',\'' + option + '\');" onmousedown="return false;" class="browse">'; html += '<span class="' + type + '" id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '"></span></a>'; return html; }, openBrowser : function(img_id, target_form_element, type, option){ if(document.getElementById(img_id).className != "mceButtonDisabled"){ tinyMCEPopup.openBrowser(target_form_element, type, option); } }, fillClassList : function(id) { var ed = tinyMCEPopup.editor, lst = dom.get(id), v, cl; if(v = tinyMCEPopup.getParam('theme_advanced_styles')){ cl = []; tinymce.each(v.split(';'), function(v) { var p = v.split('='); cl.push({'title' : p[0], 'class' : p[1]}); }); }else{ cl = ed.dom.getClasses(); } tinymce.each(['jcepopup','jcetooltip'], function(o){ lst.options[lst.options.length] = new Option(o, o); }); if(cl.length > 0){ tinymce.each(cl, function(o) { lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']); }); } } } /** * Moxiecode DHTML Tabs script. * * @author Moxiecode * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved. */ function MCTabs() { this.settings = new Array(); }; MCTabs.prototype.init = function(settings) { this.settings = settings; }; MCTabs.prototype.getParam = function(name, default_value) { var value = null; value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name]; // Fix bool values if (value == "true" || value == "false") return (value == "true"); return value; }; MCTabs.prototype.displayTab = function(tab_id, panel_id) { var panelElm = document.getElementById(panel_id); var panelContainerElm = panelElm ? panelElm.parentNode : null; var tabElm = document.getElementById(tab_id); var tabContainerElm = tabElm ? tabElm.parentNode : null; var selectionClass = this.getParam('selection_class', 'current'); if (tabElm && tabContainerElm) { var nodes = tabContainerElm.childNodes; // Hide all other tabs for (var i=0; i<nodes.length; i++) { if (nodes[i].nodeName == "LI") nodes[i].className = ''; } // Show selected tab tabElm.className = 'current'; } if (panelElm && panelContainerElm) { var nodes = panelContainerElm.childNodes; // Hide all other panels for (var i=0; i<nodes.length; i++) { if (nodes[i].nodeName == "DIV") nodes[i].className = 'panel'; } // Show selected panel panelElm.className = 'current'; } }; MCTabs.prototype.getAnchor = function() { var pos, url = document.location.href; if ((pos = url.lastIndexOf('#')) != -1) return url.substring(pos + 1); return ""; }; // Global instance var mcTabs = new MCTabs(); /** * Various form validation methods. * * @author Moxiecode * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved. */ /** // String validation: if (!Validator.isEmail('myemail')) alert('Invalid email.'); // Form validation: var f = document.forms['myform']; if (!Validator.isEmail(f.myemail)) alert('Invalid email.'); */ var Validator = { isEmail : function(s) { return this.test(s, '^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$'); }, isAbsUrl : function(s) { return this.test(s, '^(news|telnet|nttp|file|http|ftp|https)://[-A-Za-z0-9\\.]+\\/?.*$'); }, isSize : function(s) { return this.test(s, '^[0-9]+(px|%)?$'); }, isId : function(s) { return this.test(s, '^[A-Za-z_]([A-Za-z0-9_])*$'); }, isEmpty : function(s) { var nl, i; if (s.nodeName == 'SELECT' && s.selectedIndex < 1) return true; if (s.type == 'checkbox' && !s.checked) return true; if (s.type == 'radio') { for (i=0, nl = s.form.elements; i<nl.length; i++) { if (nl[i].type == "radio" && nl[i].name == s.name && nl[i].checked) return false; } return true; } return new RegExp('^\\s*$').test(s.nodeType == 1 ? s.value : s); }, isNumber : function(s, d) { return !isNaN(s.nodeType == 1 ? s.value : s) && (!d || !this.test(s, '^-?[0-9]*\\.[0-9]*$')); }, test : function(s, p) { s = s.nodeType == 1 ? s.value : s; return s == '' || new RegExp(p).test(s); } }; var AutoValidator = { settings : { id_cls : 'id', int_cls : 'int', url_cls : 'url', number_cls : 'number', email_cls : 'email', size_cls : 'size', required_cls : 'required', invalid_cls : 'invalid', min_cls : 'min', max_cls : 'max' }, init : function(s) { var n; for (n in s) this.settings[n] = s[n]; }, validate : function(f) { var i, nl, s = this.settings, c = 0; nl = this.tags(f, 'label'); for (i=0; i<nl.length; i++) this.removeClass(nl[i], s.invalid_cls); c += this.validateElms(f, 'input'); c += this.validateElms(f, 'select'); c += this.validateElms(f, 'textarea'); return c == 3; }, invalidate : function(n) { this.mark(n.form, n); }, reset : function(e) { var t = new Array('label', 'input', 'select', 'textarea'); var i, j, nl, s = this.settings; if (e == null) return; for (i=0; i<t.length; i++) { nl = this.tags(e.form ? e.form : e, t[i]); for (j=0; j<nl.length; j++) this.removeClass(nl[j], s.invalid_cls); } }, validateElms : function(f, e) { var nl, i, n, s = this.settings, st = true, va = Validator, v; nl = this.tags(f, e); for (i=0; i<nl.length; i++) { n = nl[i]; this.removeClass(n, s.invalid_cls); if (this.hasClass(n, s.required_cls) && va.isEmpty(n)) st = this.mark(f, n); if (this.hasClass(n, s.number_cls) && !va.isNumber(n)) st = this.mark(f, n); if (this.hasClass(n, s.int_cls) && !va.isNumber(n, true)) st = this.mark(f, n); if (this.hasClass(n, s.url_cls) && !va.isAbsUrl(n)) st = this.mark(f, n); if (this.hasClass(n, s.email_cls) && !va.isEmail(n)) st = this.mark(f, n); if (this.hasClass(n, s.size_cls) && !va.isSize(n)) st = this.mark(f, n); if (this.hasClass(n, s.id_cls) && !va.isId(n)) st = this.mark(f, n); if (this.hasClass(n, s.min_cls, true)) { v = this.getNum(n, s.min_cls); if (isNaN(v) || parseInt(n.value) < parseInt(v)) st = this.mark(f, n); } if (this.hasClass(n, s.max_cls, true)) { v = this.getNum(n, s.max_cls); if (isNaN(v) || parseInt(n.value) > parseInt(v)) st = this.mark(f, n); } } return st; }, hasClass : function(n, c, d) { return new RegExp('\\b' + c + (d ? '[0-9]+' : '') + '\\b', 'g').test(n.className); }, getNum : function(n, c) { c = n.className.match(new RegExp('\\b' + c + '([0-9]+)\\b', 'g'))[0]; c = c.replace(/[^0-9]/g, ''); return c; }, addClass : function(n, c, b) { var o = this.removeClass(n, c); n.className = b ? c + (o != '' ? (' ' + o) : '') : (o != '' ? (o + ' ') : '') + c; }, removeClass : function(n, c) { c = n.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' '); return n.className = c != ' ' ? c : ''; }, tags : function(f, s) { return f.getElementsByTagName(s); }, mark : function(f, n) { var s = this.settings; this.addClass(n, s.invalid_cls); this.markLabels(f, n, s.invalid_cls); return false; }, markLabels : function(f, n, ic) { var nl, i; nl = this.tags(f, "label"); for (i=0; i<nl.length; i++) { if (nl[i].getAttribute("for") == n.id || nl[i].htmlFor == n.id) this.addClass(nl[i], ic); } return null; } };