Renamed helpers to correspond to renamed Controller classes.
[merb_radiant.git] / public / javascripts / .svn / text-base / admin.js.svn-base
blob2db45f982d37aaad45f2a7202616d6c5656dcdcc
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;
8     
9     if (!slug || !breadcrumb) return;
10     
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;
15     });
16   });
18   when('tab-control', function(element) {
19     tabControl = new TabControl(element);
20     
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);
24     });
26     tabControl.autoSelect();
27   });
29   when('tag-reference-popup', function(popup) {
30     var tags, searchingOn = "";
31     
32     new Form.Element.Observer('search-tag-reference', 0.5, function(element, value) {
33       if (!tags) tags = popup.select('.tag-description')
34       
35       if (value.length < 3 && searchingOn != "") {
36         searchingOn = "";
37         tags.invoke('show');
38       } else if (value.length >= 3 && searchingOn != value) {
39         searchingOn = value
40         tags.each(function(div) {
41           div[div.hasWord(value) ? 'show' : 'hide']();
42         });
43       }
44     });
46     popup.down('p a.close').observe('click', function(e) {
47       e.findElement('.popup').hide();
48       e.stop();
49     });
50   });
51 });
53 Element.addMethods({
54   hasWord: function(element, word) {
55     element = $(element);
56     if (element.nodeType == Node.TEXT_NODE) {
57       return element.nodeValue.include(word);
58     } else {
59       return $A(element.childNodes).any(function(child) { 
60         return Element.hasWord(child, word); 
61       });
62     }
63   }
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;
70   if (obj) fn(obj);
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');
82   Element.hide('busy');
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;
91   $('busy').appear();
93 function valid_part_name() {
94   var partNameField = $('part-name-field');
95   var name = partNameField.value.downcase().strip();
96   var result = true;
97   if (name == '') {
98     alert('Part name cannot be empty.');
99     return false;
100   }
101   tabControl.tabs.each(function(pair){
102     if (tabControl.tabs.get(pair.key).caption == name) {
103       result = false;
104       alert('Part name must be unique.');
105       throw $break;
106     }
107   })
108   return result;
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');
122   center(popup);
123   Element.toggle(popup);
124   Field.focus(partNameField);