
/* Dom Manipulation Functions
 * 2007-10 Tim Igoe (tim@jellymedia.com)
 *
 *--------------------------------------------------------------------------*/

var thedom = new Object();

thedom.find = function(what, start)
{
  if (!start)
    start = document;

  var idSelector = /^#([A-Za-z0-9-]+)$/;
  var match = idSelector.exec(what);

  if (match && match[1])
    return start.getElementById(match[1]);

  var tagSelector = /^([A-Za-z]+)/;
  match = tagSelector.exec(what);

  if (match && match[1])
    return start.getElementsByTagName(match[1]);

  var classSelector = /^.([A-Za-z0-9-]+)/;
  match = classSelector.exec(what);
  if (match && match[1])
  {
    var elements = start.getElementsByTagName('*');
    var elementsWith = [];
    var className;
    for (i = 0; i < elements.length; i++)
    {
      className = elements[i].getAttribute('class') || elements[i].getAttribute('className');
      
      if (className && className.search(match[1]) != -1)
        elementsWith.push(elements[i]);
    }
    return elementsWith;
  }

  return null;
}

var images = new Object();

images.images = new Array();

images.preload = function(url)
{
  var newImg = new Image();
  newImg.src = url;
  images.images.push(newImg);
}

/* Allow multiple things to hook into the Window.load function
 * 2007-10 Tim Igoe (tim@jellymedia.com)
 *
 *--------------------------------------------------------------------------*/

var event = new Object();

event.observe = function (element, name, tocall)
{
  if (element.addEventListener)
    element.addEventListener(name, tocall, false);
  else if (element.attachEvent)
    element.attachEvent('on' + name, tocall);
}

function showDiv(divName)
{
  if (document.layers)
    document.layers[divName].display = "block";
  else
    document.getElementById(divName).style.display = "block";
}

function hideDiv(divName)
{
  if (document.layers)
    document.layers[divName].display = "none";
  else
    document.getElementById(divName).style.display = "none";
}

// Inteface Object
var gui = new Object();

gui.modaliframe = function(id, url)
{
  if (this.modalID)
    this.hideDialog();
  gui.modalID = id;

  // Create the dialog window
  var dialog = document.createElement("div");
  dialog.className = 'dialog';

  // Create close button
  var closeButton = document.createElement("div");
  closeButton.dialog = dialog;
  closeButton.onclick = gui.hideDialog;
  closeButton.className = 'close';
  dialog.appendChild(closeButton);

  var iframe = document.createElement("iframe");
  iframe.frameBorder = 0;
  iframe.src = url;
  dialog.appendChild(iframe);

  // Create modal layer
  dialog.modal = document.createElement("div");
  dialog.modal.className = 'modal';
  dialog.modal.appendChild(dialog);
  dialog.modal.id = id;

  document.body.appendChild(dialog.modal);

  return false;
}

gui.hideDialog = function ()
{
  if (gui.modalID)
  {
    var el = document.getElementById(gui.modalID)
    document.body.removeChild(el);
    gui.modalID = null;
  }
}
