addEvent(window,"load",initDropShadow);

function findPosX(obj)
{
  var curleft = 0;
  if (obj.offsetParent)
  {
    while (obj.offsetParent)
    {
      curleft += obj.offsetLeft
      obj = obj.offsetParent;
    }
  }
  else if (obj.x)
    curleft += obj.x;
  return curleft;
}

function findPosY(obj)
{
  var curtop = 0;
  if (obj.offsetParent)
  {
    while (obj.offsetParent)
    {
      curtop += obj.offsetTop
      obj = obj.offsetParent;
    }
  }
  else if (obj.y)
    curtop += obj.y;
  return curtop;
}

function initDropShadow() {
    if (!document.createElement) return;
    
    // Sigh, IE doesn't do getElementsByTagName("*")
    if (document.all) {
        var els = document.all;
    } else {
        var els = document.getElementsByTagName("*");
    }
    for (i=0;i<els.length;i++) {
        if ((' '+els[i].className+' ').indexOf(' shadowed ') != -1) {
            DS_process(els[i])
        }
    }
}

function DS_process(e) {
    // Make a duplicate of this element, with all its subelements
    var nel = e.cloneNode(1);
    // Set its class to shadowed
    nel.className = "shadow";
    nel.className += e.className.replace('shadowed','');
    // Add it to the document
    e.parentNode.insertBefore(nel,e);
    i++;
    nel.style.top = (findPosY(e) - 2) + "px";
    nel.style.left = (findPosX(e) - 2) + "px";

    /*oldColor = document.defaultView.getComputedStyle(e, '').getPropertyValue("color");
    e.style.color = document.defaultView.getComputedStyle(nel, '').getPropertyValue("color");
    nel.style.color = oldColor;*/
    e.style.color = "#cc55bb"; 
}

function addEvent(obj, evType, fn) {
  /* adds an eventListener for browsers which support it
     Written by Scott Andrew: nice one, Scott */
  if (obj.addEventListener){
    obj.addEventListener(evType, fn, true);
    return true;
  } else if (obj.attachEvent){
	var r = obj.attachEvent("on"+evType, fn);
    return r;
  } else {
	return false;
  }
}
