Subversion Repositories Sites.tela-botanica.org

Compare Revisions

Ignore whitespace Rev 608 → Rev 609

/branches/v4.0-livraison/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/utils/editable_selects.js
New file
0,0 → 1,61
/**
* $Id: editable_selects.js 162 2007-01-03 16:16:52Z spocke $
*
* Makes select boxes editable.
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
var TinyMCE_EditableSelects = {
editSelectElm : null,
 
init : function() {
var nl = document.getElementsByTagName("select"), i, d = document, o;
 
for (i=0; i<nl.length; i++) {
if (nl[i].className.indexOf('mceEditableSelect') != -1) {
o = new Option('(value)', '__mce_add_custom__');
 
o.className = 'mceAddSelectValue';
 
nl[i].options[nl[i].options.length] = o;
nl[i].setAttribute('onchange', 'TinyMCE_EditableSelects.onChangeEditableSelect(this);');
}
}
},
 
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.clientWidth;
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 != '') {
addSelectValue(document.forms[0], se.id, se.previousSibling.value, se.previousSibling.value);
selectByValue(document.forms[0], se.id, se.previousSibling.value);
} else
selectByValue(document.forms[0], se.id, '');
 
se.style.display = 'inline';
se.parentNode.removeChild(se.previousSibling);
TinyMCE_EditableSelects.editSelectElm = null;
}
}
};
/branches/v4.0-livraison/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/utils/mclayer.js
New file
0,0 → 1,210
/**
* $Id: mclayer.js 162 2007-01-03 16:16:52Z spocke $
*
* Moxiecode floating layer script.
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
function MCLayer(id) {
this.id = id;
this.settings = new Array();
this.blockerElement = null;
this.isMSIE = navigator.appName == "Microsoft Internet Explorer";
this.events = false;
this.autoHideCallback = null;
}
 
MCLayer.prototype = {
moveRelativeTo : function(re, p, a) {
var rep = this.getAbsPosition(re);
var w = parseInt(re.offsetWidth);
var h = parseInt(re.offsetHeight);
var x, y;
 
switch (p) {
case "tl":
break;
 
case "tr":
x = rep.absLeft + w;
y = rep.absTop;
break;
 
case "bl":
break;
 
case "br":
break;
}
 
this.moveTo(x, y);
},
 
moveBy : function(dx, dy) {
var e = this.getElement();
var x = parseInt(e.style.left);
var y = parseInt(e.style.top);
 
e.style.left = (x + dx) + "px";
e.style.top = (y + dy) + "px";
 
this.updateBlocker();
},
 
moveTo : function(x, y) {
var e = this.getElement();
 
e.style.left = x + "px";
e.style.top = y + "px";
 
this.updateBlocker();
},
 
show : function() {
MCLayer.visibleLayer = this;
 
this.getElement().style.display = 'block';
this.updateBlocker();
},
 
hide : function() {
this.getElement().style.display = 'none';
this.updateBlocker();
},
 
setAutoHide : function(s, cb) {
this.autoHideCallback = cb;
this.registerEventHandlers();
},
 
getElement : function() {
return document.getElementById(this.id);
},
 
updateBlocker : function() {
if (!this.isMSIE)
return;
 
var e = this.getElement();
var b = this.getBlocker();
var x = this.parseInt(e.style.left);
var y = this.parseInt(e.style.top);
var w = this.parseInt(e.offsetWidth);
var h = this.parseInt(e.offsetHeight);
 
b.style.left = x + 'px';
b.style.top = y + 'px';
b.style.width = w + 'px';
b.style.height = h + 'px';
b.style.display = e.style.display;
},
 
getBlocker : function() {
if (!this.blockerElement) {
var d = document, b = d.createElement("iframe");
 
b.style.cssText = 'display: none; left: 0px; position: absolute; top: 0';
b.src = 'javascript:false;';
b.frameBorder = '0';
b.scrolling = 'no';
 
d.body.appendChild(b);
this.blockerElement = b;
}
 
return this.blockerElement;
},
 
getAbsPosition : function(n) {
var p = {absLeft : 0, absTop : 0};
 
while (n) {
p.absLeft += n.offsetLeft;
p.absTop += n.offsetTop;
n = n.offsetParent;
}
 
return p;
},
 
registerEventHandlers : function() {
if (!this.events) {
var d = document;
 
this.addEvent(d, 'mousedown', MCLayer.prototype.onMouseDown);
 
this.events = true;
}
},
 
addEvent : function(o, n, h) {
if (o.attachEvent)
o.attachEvent("on" + n, h);
else
o.addEventListener(n, h, false);
},
 
onMouseDown : function(e) {
e = typeof(e) == "undefined" ? window.event : e;
var b = document.body;
var l = MCLayer.visibleLayer;
 
if (l) {
var mx = l.isMSIE ? e.clientX + b.scrollLeft : e.pageX;
var my = l.isMSIE ? e.clientY + b.scrollTop : e.pageY;
var el = l.getElement();
var x = parseInt(el.style.left);
var y = parseInt(el.style.top);
var w = parseInt(el.offsetWidth);
var h = parseInt(el.offsetHeight);
 
if (!(mx > x && mx < x + w && my > y && my < y + h)) {
MCLayer.visibleLayer = null;
 
if (l.autoHideCallback && l.autoHideCallback(l, e, mx, my))
return true;
 
l.hide();
}
}
},
 
addCSSClass : function(e, c) {
this.removeCSSClass(e, c);
var a = this.explode(' ', e.className);
a[a.length] = c;
e.className = a.join(' ');
},
 
removeCSSClass : function(e, c) {
var a = this.explode(' ', e.className), i;
 
for (i=0; i<a.length; i++) {
if (a[i] == c)
a[i] = '';
}
 
e.className = a.join(' ');
},
 
explode : function(d, s) {
var ar = s.split(d);
var oar = new Array();
 
for (var i = 0; i<ar.length; i++) {
if (ar[i] != "")
oar[oar.length] = ar[i];
}
 
return oar;
},
 
parseInt : function(s) {
if (s == null || s == '')
return 0;
 
return parseInt(s);
}
}
/branches/v4.0-livraison/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/utils/form_utils.js
New file
0,0 → 1,210
/**
* $Id: form_utils.js 162 2007-01-03 16:16:52Z spocke $
*
* Various form utilitiy functions.
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
 
var themeBaseURL = tinyMCE.baseURL + '/themes/' + tinyMCE.getParam("theme");
 
function getColorPickerHTML(id, target_form_element) {
var h = "";
 
h += '<a id="' + id + '_link" href="javascript:void(0);" onkeydown="pickColor(event,\'' + target_form_element +'\');" onmousedown="pickColor(event,\'' + target_form_element +'\');return false;">';
h += '<img id="' + id + '" src="' + themeBaseURL + '/images/color.gif"';
h += ' onmouseover="this.className=\'mceButtonOver\'"';
h += ' onmouseout="this.className=\'mceButtonNormal\'"';
h += ' onmousedown="this.className=\'mceButtonDown\'"';
h += ' width="20" height="16" border="0" title="' + tinyMCE.getLang('lang_browse') + '"';
h += ' class="mceButtonNormal" alt="' + tinyMCE.getLang('lang_browse') + '" /></a>';
 
return h;
}
 
function pickColor(e, target_form_element) {
if ((e.keyCode == 32 || e.keyCode == 13) || e.type == "mousedown")
tinyMCEPopup.pickColor(e, target_form_element);
}
 
function updateColor(img_id, form_element_id) {
document.getElementById(img_id).style.backgroundColor = document.forms[0].elements[form_element_id].value;
}
 
function setBrowserDisabled(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");
tinyMCE.switchClass(img, 'mceButtonDisabled', true);
} else {
lnk.setAttribute("href", lnk.getAttribute("realhref"));
tinyMCE.switchClass(img, 'mceButtonNormal', false);
}
}
}
 
function getBrowserHTML(id, target_form_element, type, prefix) {
var option = prefix + "_" + type + "_browser_callback";
var cb = tinyMCE.getParam(option, tinyMCE.getParam("file_browser_callback"));
if (cb == null)
return "";
 
var html = "";
 
html += '<a id="' + id + '_link" href="javascript:openBrower(\'' + id + '\',\'' + target_form_element + '\', \'' + type + '\',\'' + option + '\');" onmousedown="return false;">';
html += '<img id="' + id + '" src="' + themeBaseURL + '/images/browse.gif"';
html += ' onmouseover="this.className=\'mceButtonOver\';"';
html += ' onmouseout="this.className=\'mceButtonNormal\';"';
html += ' onmousedown="this.className=\'mceButtonDown\';"';
html += ' width="20" height="18" border="0" title="' + tinyMCE.getLang('lang_browse') + '"';
html += ' class="mceButtonNormal" alt="' + tinyMCE.getLang('lang_browse') + '" /></a>';
 
return html;
}
 
function openBrower(img_id, target_form_element, type, option) {
var img = document.getElementById(img_id);
 
if (img.className != "mceButtonDisabled")
tinyMCEPopup.openBrowser(target_form_element, type, option);
}
 
function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {
if (!form_obj || !form_obj.elements[field_name])
return;
 
var sel = form_obj.elements[field_name];
 
var found = false;
for (var i=0; i<sel.options.length; i++) {
var option = sel.options[i];
 
if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {
option.selected = true;
found = true;
} else
option.selected = false;
}
 
if (!found && add_custom && value != '') {
var option = new Option(value, value);
option.selected = true;
sel.options[sel.options.length] = option;
sel.selectedIndex = sel.options.length - 1;
}
 
return found;
}
 
function getSelectValue(form_obj, field_name) {
var elm = form_obj.elements[field_name];
 
if (elm == null || elm.options == null)
return "";
 
return elm.options[elm.selectedIndex].value;
}
 
function addSelectValue(form_obj, field_name, name, value) {
var s = form_obj.elements[field_name];
var o = new Option(name, value);
s.options[s.options.length] = o;
}
 
function addClassesToList(list_id, specific_option) {
// Setup class droplist
var styleSelectElm = document.getElementById(list_id);
var styles = tinyMCE.getParam('theme_advanced_styles', false);
styles = tinyMCE.getParam(specific_option, styles);
 
if (styles) {
var stylesAr = styles.split(';');
 
for (var i=0; i<stylesAr.length; i++) {
if (stylesAr != "") {
var key, value;
 
key = stylesAr[i].split('=')[0];
value = stylesAr[i].split('=')[1];
 
styleSelectElm.options[styleSelectElm.length] = new Option(key, value);
}
}
} else {
// Use auto impored classes
var csses = tinyMCE.getCSSClasses(tinyMCE.getWindowArg('editor_id'));
for (var i=0; i<csses.length; i++)
styleSelectElm.options[styleSelectElm.length] = new Option(csses[i], csses[i]);
}
}
 
function isVisible(element_id) {
var elm = document.getElementById(element_id);
 
return elm && elm.style.display != "none";
}
 
function convertRGBToHex(col) {
var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
 
var rgb = col.replace(re, "$1,$2,$3").split(',');
if (rgb.length == 3) {
r = parseInt(rgb[0]).toString(16);
g = parseInt(rgb[1]).toString(16);
b = parseInt(rgb[2]).toString(16);
 
r = r.length == 1 ? '0' + r : r;
g = g.length == 1 ? '0' + g : g;
b = b.length == 1 ? '0' + b : b;
 
return "#" + r + g + b;
}
 
return col;
}
 
function convertHexToRGB(col) {
if (col.indexOf('#') != -1) {
col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
 
r = parseInt(col.substring(0, 2), 16);
g = parseInt(col.substring(2, 4), 16);
b = parseInt(col.substring(4, 6), 16);
 
return "rgb(" + r + "," + g + "," + b + ")";
}
 
return col;
}
 
function trimSize(size) {
return size.replace(new RegExp('[^0-9%]', 'gi'), '');
}
 
function getCSSSize(size) {
size = trimSize(size);
 
if (size == "")
return "";
 
return size.indexOf('%') != -1 ? size : size + "px";
}
 
function getStyle(elm, attrib, style) {
var val = tinyMCE.getAttrib(elm, attrib);
 
if (val != '')
return '' + val;
 
if (typeof(style) == 'undefined')
style = attrib;
 
val = eval('elm.style.' + style);
 
return val == null ? '' : '' + val;
}
/branches/v4.0-livraison/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/utils/mctabs.js
New file
0,0 → 1,74
/**
* $Id: mctabs.js 162 2007-01-03 16:16:52Z spocke $
*
* Moxiecode DHTML Tabs script.
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, 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();
/branches/v4.0-livraison/wikini/maj_wikini/tools/templates/themes/default/javascripts/tiny_mce/utils/validate.js
New file
0,0 → 1,219
/**
* $Id: validate.js 162 2007-01-03 16:16:52Z spocke $
*
* Various form validation methods.
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, 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;
}
};