PageRenderTime 12ms CodeModel.GetById 2ms app.highlight 8ms RepoModel.GetById 1ms app.codeStats 0ms

/BlogEngine/BlogEngine.NET/editors/tiny_mce_3_4_3_1/utils/editable_selects.js

#
JavaScript | 70 lines | 48 code | 13 blank | 9 comment | 11 complexity | 8fb83cb7c34f86b2b7dc5dfe0f482e3f MD5 | raw file
 1/**
 2 * editable_selects.js
 3 *
 4 * Copyright 2009, Moxiecode Systems AB
 5 * Released under LGPL License.
 6 *
 7 * License: http://tinymce.moxiecode.com/license
 8 * Contributing: http://tinymce.moxiecode.com/contributing
 9 */
10
11var TinyMCE_EditableSelects = {
12	editSelectElm : null,
13
14	init : function() {
15		var nl = document.getElementsByTagName("select"), i, d = document, o;
16
17		for (i=0; i<nl.length; i++) {
18			if (nl[i].className.indexOf('mceEditableSelect') != -1) {
19				o = new Option('(value)', '__mce_add_custom__');
20
21				o.className = 'mceAddSelectValue';
22
23				nl[i].options[nl[i].options.length] = o;
24				nl[i].onchange = TinyMCE_EditableSelects.onChangeEditableSelect;
25			}
26		}
27	},
28
29	onChangeEditableSelect : function(e) {
30		var d = document, ne, se = window.event ? window.event.srcElement : e.target;
31
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";
36			ne.type = "text";
37
38			ne.style.width = se.offsetWidth + 'px';
39			se.parentNode.insertBefore(ne, se);
40			se.style.display = 'none';
41			ne.focus();
42			ne.onblur = TinyMCE_EditableSelects.onBlurEditableSelectInput;
43			ne.onkeydown = TinyMCE_EditableSelects.onKeyDown;
44			TinyMCE_EditableSelects.editSelectElm = se;
45		}
46	},
47
48	onBlurEditableSelectInput : function() {
49		var se = TinyMCE_EditableSelects.editSelectElm;
50
51		if (se) {
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);
55			} else
56				selectByValue(document.forms[0], se.id, '');
57
58			se.style.display = 'inline';
59			se.parentNode.removeChild(se.previousSibling);
60			TinyMCE_EditableSelects.editSelectElm = null;
61		}
62	},
63
64	onKeyDown : function(e) {
65		e = e || window.event;
66
67		if (e.keyCode == 13)
68			TinyMCE_EditableSelects.onBlurEditableSelectInput();
69	}
70};