4 * Copyright 2009, Moxiecode Systems AB
5 * Released under LGPL License.
7 * License: http://tinymce.moxiecode.com/license
8 * Contributing: http://tinymce.moxiecode.com/contributing
11 var TinyMCE_EditableSelects
= {
15 var nl
= document
.getElementsByTagName("select"), i
, d
= document
, o
;
17 for (i
=0; i
<nl
.length
; i
++) {
18 if (nl
[i
].className
.indexOf('mceEditableSelect') != -1) {
19 o
= new Option(tinyMCEPopup
.editor
.translate('value'), '__mce_add_custom__');
21 o
.className
= 'mceAddSelectValue';
23 nl
[i
].options
[nl
[i
].options
.length
] = o
;
24 nl
[i
].onchange
= TinyMCE_EditableSelects
.onChangeEditableSelect
;
29 onChangeEditableSelect : function(e
) {
30 var d
= document
, ne
, se
= window
.event
? window
.event
.srcElement
: e
.target
;
32 if (se
.options
[se
.selectedIndex
].value
== '__mce_add_custom__') {
33 ne
= d
.createElement("input");
34 ne
.id
= se
.id
+ "_custom";
35 ne
.name
= se
.name
+ "_custom";
38 ne
.style
.width
= se
.offsetWidth
+ 'px';
39 se
.parentNode
.insertBefore(ne
, se
);
40 se
.style
.display
= 'none';
42 ne
.onblur
= TinyMCE_EditableSelects
.onBlurEditableSelectInput
;
43 ne
.onkeydown
= TinyMCE_EditableSelects
.onKeyDown
;
44 TinyMCE_EditableSelects
.editSelectElm
= se
;
48 onBlurEditableSelectInput : function() {
49 var se
= TinyMCE_EditableSelects
.editSelectElm
;
52 if (se
.previousSibling
.value
!= '') {
53 addSelectValue(document
.forms
[0], se
.id
, se
.previousSibling
.value
, se
.previousSibling
.value
);
54 selectByValue(document
.forms
[0], se
.id
, se
.previousSibling
.value
);
56 selectByValue(document
.forms
[0], se
.id
, '');
58 se
.style
.display
= 'inline';
59 se
.parentNode
.removeChild(se
.previousSibling
);
60 TinyMCE_EditableSelects
.editSelectElm
= null;
64 onKeyDown : function(e
) {
65 e
= e
|| window
.event
;
68 TinyMCE_EditableSelects
.onBlurEditableSelectInput();