Mercurial > public > sg101
comparison media/js/tiny_mce/utils/editable_selects.js @ 45:a5b4c5ce0658
Breaking down and controlling all media files, including javascript libraries.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Fri, 19 Jun 2009 03:16:03 +0000 |
parents | |
children | 149c3567fec1 |
comparison
equal
deleted
inserted
replaced
44:08cd19c1ee50 | 45:a5b4c5ce0658 |
---|---|
1 /** | |
2 * $Id: editable_selects.js 867 2008-06-09 20:33:40Z spocke $ | |
3 * | |
4 * Makes select boxes editable. | |
5 * | |
6 * @author Moxiecode | |
7 * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved. | |
8 */ | |
9 | |
10 var TinyMCE_EditableSelects = { | |
11 editSelectElm : null, | |
12 | |
13 init : function() { | |
14 var nl = document.getElementsByTagName("select"), i, d = document, o; | |
15 | |
16 for (i=0; i<nl.length; i++) { | |
17 if (nl[i].className.indexOf('mceEditableSelect') != -1) { | |
18 o = new Option('(value)', '__mce_add_custom__'); | |
19 | |
20 o.className = 'mceAddSelectValue'; | |
21 | |
22 nl[i].options[nl[i].options.length] = o; | |
23 nl[i].onchange = TinyMCE_EditableSelects.onChangeEditableSelect; | |
24 } | |
25 } | |
26 }, | |
27 | |
28 onChangeEditableSelect : function(e) { | |
29 var d = document, ne, se = window.event ? window.event.srcElement : e.target; | |
30 | |
31 if (se.options[se.selectedIndex].value == '__mce_add_custom__') { | |
32 ne = d.createElement("input"); | |
33 ne.id = se.id + "_custom"; | |
34 ne.name = se.name + "_custom"; | |
35 ne.type = "text"; | |
36 | |
37 ne.style.width = se.offsetWidth + 'px'; | |
38 se.parentNode.insertBefore(ne, se); | |
39 se.style.display = 'none'; | |
40 ne.focus(); | |
41 ne.onblur = TinyMCE_EditableSelects.onBlurEditableSelectInput; | |
42 ne.onkeydown = TinyMCE_EditableSelects.onKeyDown; | |
43 TinyMCE_EditableSelects.editSelectElm = se; | |
44 } | |
45 }, | |
46 | |
47 onBlurEditableSelectInput : function() { | |
48 var se = TinyMCE_EditableSelects.editSelectElm; | |
49 | |
50 if (se) { | |
51 if (se.previousSibling.value != '') { | |
52 addSelectValue(document.forms[0], se.id, se.previousSibling.value, se.previousSibling.value); | |
53 selectByValue(document.forms[0], se.id, se.previousSibling.value); | |
54 } else | |
55 selectByValue(document.forms[0], se.id, ''); | |
56 | |
57 se.style.display = 'inline'; | |
58 se.parentNode.removeChild(se.previousSibling); | |
59 TinyMCE_EditableSelects.editSelectElm = null; | |
60 } | |
61 }, | |
62 | |
63 onKeyDown : function(e) { | |
64 e = e || window.event; | |
65 | |
66 if (e.keyCode == 13) | |
67 TinyMCE_EditableSelects.onBlurEditableSelectInput(); | |
68 } | |
69 }; |