/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; |
} |
}; |
/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); |
} |
} |