1 document.observe('dom:loaded', function() {
2 when('site-map', function(table) { new SiteMap(table) });
4 when('page_title', function(title) {
5 var slug = $('page_slug'),
6 breadcrumb = $('page_breadcrumb'),
7 oldTitle = title.value;
9 if (!slug || !breadcrumb) return;
11 new Form.Element.Observer(title, 0.15, function() {
12 if (oldTitle.toSlug() == slug.value) slug.value = title.value.toSlug();
13 if (oldTitle == breadcrumb.value) breadcrumb.value = title.value;
14 oldTitle = title.value;
18 when('tab-control', function(element) {
19 tabControl = new TabControl(element);
21 $$('#pages div.part > input[type=hidden]:first-child').each(function(part, index) {
22 var page = part.up('.page');
23 tabControl.addTab('tab-' + (index + 1), part.value, page.id);
26 tabControl.autoSelect();
29 when('tag-reference-popup', function(popup) {
30 var tags, searchingOn = "";
32 new Form.Element.Observer('search-tag-reference', 0.5, function(element, value) {
33 if (!tags) tags = popup.select('.tag-description')
35 if (value.length < 3 && searchingOn != "") {
38 } else if (value.length >= 3 && searchingOn != value) {
40 tags.each(function(div) {
41 div[div.hasWord(value) ? 'show' : 'hide']();
46 popup.down('p a.close').observe('click', function(e) {
47 e.findElement('.popup').hide();
54 hasWord: function(element, word) {
56 if (element.nodeType == Node.TEXT_NODE) {
57 return element.nodeValue.include(word);
59 return $A(element.childNodes).any(function(child) {
60 return Element.hasWord(child, word);
66 // When object is available, do function fn.
67 function when(obj, fn) {
68 if (Object.isString(obj)) obj = /^[\w-]+$/.test(obj) ? $(obj) : $(document.body).down(obj);
69 if (Object.isArray(obj) && !obj.length) return;
73 function part_added() {
74 var partNameField = $('part-name-field');
75 var partIndexField = $('part-index-field');
76 var index = parseInt(partIndexField.value || 0) + 1;
77 var tab = 'tab-' + index;
78 var caption = partNameField.value;
79 var page = 'page-' + index;
80 tabControl.addTab(tab, caption, page);
81 Element.hide('add-part-popup');
83 partNameField.value = '';
84 partIndexField.value = (index + 1).toString();
85 $('add-part-button').disabled = false;
86 Field.focus(partNameField);
87 tabControl.select(tab);
89 function part_loading() {
90 $('add-part-button').disabled = true;
93 function valid_part_name() {
94 var partNameField = $('part-name-field');
95 var name = partNameField.value.downcase().strip();
98 alert('Part name cannot be empty.');
101 tabControl.tabs.each(function(pair){
102 if (tabControl.tabs.get(pair.key).caption == name) {
104 alert('Part name must be unique.');
110 function center(element) {
111 var header = $('header')
112 element = $(element);
113 element.style.position = 'absolute';
114 var dim = Element.getDimensions(element);
115 var top = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
116 element.style.top = (top + 200) + 'px';
117 element.style.left = ((header.offsetWidth - dim.width) / 2) + 'px';
119 function toggle_add_part_popup() {
120 var popup = $('add-part-popup');
121 var partNameField = $('part-name-field');
123 Element.toggle(popup);
124 Field.focus(partNameField);