Can you create a new block region using just a module? I am writing a module that will, using javascript, create a slide down container at the top of the page. (modelled on the login here http://xenforo.com/community/).

Rather than hardcode the content in this slide-down region, I'd rather just create a new block region, and let the user put whatever blocks into it he/she sees fit.

The thing is, this sort of thing would normally be done with the theme, not with a module. Is it possible to define a new block region using a module, and if so, how?
hook_system_info_alter is your friend.

&lt;?php
/**
 * Implements hook_system_info_alter()
 * Adds a new "tray" region to the current theme
 */
function MODULE_system_info_alter(&amp;$info, $file){
  global $theme;    

  // If non-default theme configuration has been selected, set the custom theme.
  $custom_theme = isset ($theme) ? $theme : variable_get('theme_default', 'bartik');

  if ($file-&gt;name == $custom_theme){
    $info['regions'] = array_merge($info['regions'],  array('tray' =&gt; t('Tray')));
  } 
}