// WB's Element Drop Shadower
// Copyright (c) 2010 Broomfield Associates

// Add a drop shadow to an element - take care with the css of the element, though!
// Returns new shadow div with passed object as first child within it
function AddShadow(obj) {

    shadsiz = 1;          // Size in px of each shadow bar
    shadnum = 5;          // Number of shadow bars
    shadopc = 0.5         // Opacity for first bar
    shaddim = 0.1;        // Opacity decrement for each bar

    shadwid = shadnum * shadsiz;
    
    // Get dimensions and position of passed object
    tmpnode = obj;
    objwidth = tmpnode.offsetWidth;
    objheight = tmpnode.offsetHeight;
    objleft = tmpnode.offsetLeft;
    objtop = tmpnode.offsetTop;
    while(tmpnode.offsetParent) {
        objleft += tmpnode.offsetParent.offsetLeft;
        objtop += tmpnode.offsetParent.offsetTop;
        tmpnode = tmpnode.offsetParent;
    };
    
    // Create a shadow container div and relocated the passed object under it    
    shadow = document.createElement("div"); 
    shadow.style.width = obj.clientWidth + shadwid + "px";
    shadow.style.height = obj.clientHeight + shadwid + "px";
    shadow.style.fontSize = "0pt";  // Needed for IE6 (and others?)
    shadow.style.position = "absolute";
    shadow.style.left = objleft + "px";
    shadow.style.top = objtop + "px";
    obj.style.left = "0px";
    obj.style.top = "0px";
    obj.parentNode.insertBefore(shadow, obj);
    obj.parentNode.removeChild(obj);
    shadow.appendChild(obj);
    
    // Add a sequence of shadow bars (right and bottom) with increasing transparency
    op = shadopc; dx = 0; dy = 0;
    for(i = 0; i < shadnum; i++) {
    
        tmpshadow = document.createElement("div");
        tmpshadow.style.width = shadsiz + "px";
        tmpshadow.style.height = objheight - shadsiz + "px";
        tmpshadow.style.backgroundColor = "black";
        fadeopacity(tmpshadow, op);
        tmpshadow.style.position = "absolute";
        tmpshadow.style.left = objwidth + dx + "px";
        tmpshadow.style.top = dx + shadsiz + "px";
        shadow.appendChild(tmpshadow);
        dx += shadsiz;
    
        tmpshadow = document.createElement("div");
        tmpshadow.style.width = objwidth + "px";
        tmpshadow.style.height = shadsiz + "px";
        tmpshadow.style.backgroundColor = "black";
        fadeopacity(tmpshadow, op);
        tmpshadow.style.position = "absolute";
        tmpshadow.style.left = dy + shadsiz + "px";
        tmpshadow.style.top = objheight + dy + "px";
        shadow.appendChild(tmpshadow);
        dy += shadsiz;
        
        op -= shaddim;
    
    };
    
    return shadow;

}


// Remove the previously added shadow from an element
function RemoveShadow(obj) {
    
    objleft = obj.offsetLeft;
    objtop = obj.offsetTop;

    tmpnode = obj.firstChild;
    obj.removeChild(tmpnode);
    obj.parentNode.appendChild(tmpnode);
    tmpnode.style.left = objleft + "px";
    tmpnode.style.top = objtop + "px";
    obj.parentNode.removeChild(obj);

    return tmpnode;

}
