var cms = {

  lightbox: {

    open: function(){
      $('cms_lighbox').show();
      scroll(0,0);
    },


    close: function(){
      $('cms_lighbox').hide();
    },


    replace_content: function( content ){
      $('cms_lighbox_content').update( content );
    },


    replace_content_and_open: function( content ){
      $(this).replace_content( content );
      $(this).open();
    },


    handle_close_link_clicked: function(evt){
      cms.lightbox.close();
		evt.stop();
      return( false );
    },

    set_bindings: function(){
      $('cms_lighbox_close_link').observe( 'click' , $(this).handle_close_link_clicked );
    }
  },


  toggle_menu_bar: function() {
    Effect.toggle( 'menu-bar-hideable-area' , 'blind' , { duration: 0.3 } );
    $('cms-minimize-button').toggleClassName('show');
    $('cms-minimize-button').toggleClassName('hide');
  },


  toggle_display: function (id, from, to) {
    $(id + '-' + from).toggle();
    $(id + '-' + to).toggle();
    if ($(id + '-field') !== null) {
      $(id + '-field').activate();
    }
  },


  show_busy: function (id) {
    $(id + '-busy').appear({
      duration: 0.2
    });
  },


  hide_busy : function (id) {
    $(id + '-busy').fade({
      duration: 0.2
    });
  },


  replace_element : function (element, html) {
    // IE is the bane of my existence
    if(Prototype.Browser.IE) {
      var parent_node = $(element).parentNode;
      $(element).remove();
      parent_node.insert(html);
    }
    else {
      $(element).replace(html);
    }
  },


  insert_element : function (element, html) {
    $(element).insert(html);
  },


  remove_element : function (element) {
    $(element).remove();
  },


  error : function (message) {
    alert(message);
  },


  show_preview : function (url) {
    window.open(url);
  },


  edit_element : function (element_ids) {
    //$(element_id).show();
    element_ids.each(function(element_id) {
      $(element_id).show();
      // also get any child editor elements
      // mostly this is used for has_components fields
      $(element_id).select("div.form-edit-container").each(function(item) {
        item.show();
      });
      $(element_id).select("div.form-new-container").each(function(item) {
        item.show();
      });
    });
    $$('.onpage_edit_link').each(function(item) {
      // item.hide();
      item.hide({
        duration: 0.2
      });
    });
    $$('.meta-edit-link').each(function(item) {
      // item.hide();
      item.hide({
        duration: 0.2
      });
    });
    $('editor-area').appear({
      duration: 0.2
    });
    return false;
  },


  cancel_edit : function () {
    $('editor-area').fade({
      duration: 0.2
    });
    $$('div.form-edit-container').each(function(item) {
      item.hide();
    });
    $$('div.form-add-container').each(function(item) {
      item.hide();
    });
    $$('.onpage_edit_link').each(function(item) {
      item.show();
    });
    $$('.meta-edit-link').each(function(item) {
      item.show();
    });
    $$('div.form-new-container').each(function(item) {
      item.remove();
    });
    $('editor-errors').replace(new Element('div', {
      id: 'editor-errors'
    }));
    return false;
  },


  onpage_edit_link_toggle: function(url) {
    new Ajax.Request(url, {
      method: 'get',
      onSuccess: function(transport) {
        $$('.onpage_edit_link').each(function(item) {
          item.toggle();
        });
      }
    });
  },


  switch_page_selector: function(evt) {
    $('taxonomy_page_selector').toggle();
    $('list_page_selector').toggle();
	evt.stop();
  },


  taxon_expander: function(event) {
	event.stop();
    children = event.element().next('ul.taxon_children');
    Effect.toggle(children, 'blind', {
      duration: 0.2
    });
    children.toggleClassName('open');
    event.element().parentNode.parentNode.select('ul.open').each(function(open_list) {
      if(children.id != open_list.id) {
        Effect.toggle(open_list, 'blind', {
          duration: 0.2
        });
        open_list.toggleClassName('open');
      }
    });
    return false;
  }

};


document.observe('dom:loaded', function() {
  $$('a.taxon_expander').each(function(item) {
    item.observe('click', cms.taxon_expander );
  });

try {
  Event.observe('cms-minimize-button', 'click', cms.toggle_menu_bar);
	$$('.page-selector-link').each(function(item) {
		item.observe('click', cms.switch_page_selector);
	});
}
catch(err) {
	// the error here si blarg
}
  cms.lightbox.set_bindings();
});