
function cornerize( selector, padding, margin )
{
    var el = getElementsBySelector( selector );
    for( i = 0; i < el.length; i++ ) 
        do_cornerize( el[i], padding, margin );
}

function do_cornerize( el, padding, margin )
{
    var i, borderL, borderR, borderT, borderB, cornerUL, cornerUR, cornerLL, cornerLR, elChildren, tempChild;

    /* construct borders/corners */
    borderL = createElement('span');
    borderL.className = 'borderl';
    borderR = createElement('span');
    borderR.className = 'borderr';
    borderT = createElement('span');
    borderT.className = 'bordert';
    borderB = createElement('span');
    borderB.className = 'borderb';
    
    cornerUL = createElement('span');
    cornerUL.className = 'cornerul';
    cornerLL = createElement('span');
    cornerLL.className = 'cornerll';
    cornerUR = createElement('span');
    cornerUR.className = 'cornerur';
    cornerLR = createElement('span');
    cornerLR.className = 'cornerlr';

    borderL.appendChild(borderR);
    borderR.appendChild(borderT);
    borderT.appendChild(borderB);
    borderB.appendChild(cornerUL);
    cornerUL.appendChild(cornerLL);
    cornerLL.appendChild(cornerUR);
    cornerUR.appendChild(cornerLR);

    newContainer = createElement('div');
    el.parentNode.replaceChild( newContainer, el );
    newContainer.appendChild(el);


    elChildren = el.childNodes;
    // move children
    if( elChildren.length != 0 )
    {
        while( elChildren.length != 0 )
        {
            cornerLR.appendChild(elChildren[0]);
        }
    }

    el.appendChild(borderL);
    if( padding )
        cornerLR.style.padding = padding;
    if( margin )
        newContainer.style.margin = margin;
}


/*
createElement function found at http://simon.incutio.com/archive/2003/06/15/javascriptWithXML
*/
function createElement(element) {
        if (typeof document.createElementNS != 'undefined') {
                return document.createElementNS('http://www.w3.org/1999/xhtml', element);
        }
        if (typeof document.createElement != 'undefined') {
                return document.createElement(element);
        }
        return false;
}

/* function taken from nifty corners */
function getElementsBySelector(selector)
{
    var i,selid="",selclass="",tag=selector,f,s=[],objlist=[];

    if(selector.indexOf(" ")>0)  //descendant selector like "tag#id tag"
    {
        s=selector.split(" ");
        var fs=s[0].split("#");
        if(fs.length==1) return(objlist);
        f=document.getElementById(fs[1]);
        if(f) return(f.getElementsByTagName(s[1]));
        return(objlist);
    }
    if(selector.indexOf("#")>0) //id selector like "tag#id"
    {
        s=selector.split("#");
        tag=s[0];
        selid=s[1];
    }
    if(selid!="")
    {
        f=document.getElementById(selid);
        if(f) objlist.push(f);
        return(objlist);
    }
    if(selector.indexOf(".")>0) //class selector like "tag.class"
    {
        s=selector.split(".");
        tag=s[0];
        selclass=s[1];
    }
    var v=document.getElementsByTagName(tag);  // tag selector like "tag"
    if(selclass=="") return(v);
    for(i=0;i<v.length;i++)
    {
        if(v[i].className.indexOf(selclass)>=0)
        {
            objlist.push(v[i]);
        }
    }
    return(objlist);
}
