// Andrea Diamantini - adjam7@gmail.com
// My own nifty corner version :)


// this function checks if Nifty Corners's tecnique
// can be used or not
function NiftyCheck()
{
    if(!document.getElementById || !document.createElement)
        return(false);
    var b=navigator.userAgent.toLowerCase();
    if(b.indexOf("msie 5")>0 && b.indexOf("opera")==-1)
        return(false);
    return(true);
}


// this function rounds the DOM object using the
// following parameters:
// 1) selector: the object to round
// 2) extcol:   the extern color
// 3) intcol:   the intern color
// 4) size:     can be one between "smooth", "border", "small"
function Rounded(selector,extcol,intcol,size)
{
    var i;
    var v=getElementsBySelector(selector);
    var l=v.length;
    for(i=0;i<l;i++)
    {
        AddTop(v[i],extcol,intcol,size);
        AddBottom(v[i],extcol,intcol,size);
        v[i].style.backgroundColor=intcol;
        v[i].style.color=extcol;
    }
}


function RoundedTop(selector,extcol,intcol,size)
{
    var i;
    var v=getElementsBySelector(selector);
    for(i=0;i<v.length;i++)
        AddTop(v[i],extcol,intcol,size);
}


function RoundedBottom(selector,extcol,intcol,size)
{
    var i;
    var v=getElementsBySelector(selector);
    for(i=0;i<v.length;i++)
        AddBottom(v[i],extcol,intcol,size);
}


function AddTop(el,extcol,intcol,size)
{
    var i;
    var d=document.createElement("b");
    var cn="r";
    var lim=4;
    if(size && size=="small"){ cn="rs"; lim=2}
    d.className="rtop";
    d.style.backgroundColor=extcol;
    for(i=1;i<=lim;i++)
    {
        var x=document.createElement("b");
        x.className=cn + i;
        x.style.backgroundColor=intcol;
        d.appendChild(x);
    }
    el.insertBefore(d,el.firstChild);
}


function AddBottom(el,extcol,intcol,size)
{
    var i;
    var d=document.createElement("b");
    var cn="r";
    var lim=4;
    if(size && size=="small")
    {
        cn="rs"; 
        lim=2;
    }
    d.className="rbottom";
    d.style.backgroundColor=extcol;
    for(i=lim;i>0;i--)
    {
        var x=document.createElement("b");
        x.className=cn + i;
        x.style.backgroundColor=intcol;
        d.appendChild(x);
    }
    el.appendChild(d,el.firstChild);
}


function getElementsBySelector(selector)
{
    var i;
    var s=[];
    var selid="";
    var selclass="";
    var tag=selector;
    var objlist=[];

    //descendant selector like "tag#id tag"
    if(selector.indexOf(" ")>0)
    {  
        s=selector.split(" ");
        var fs=s[0].split("#");
        if(fs.length==1) return(objlist);
        return(document.getElementById(fs[1]).getElementsByTagName(s[1]));
    }

    //id selector like "tag#id"
    if(selector.indexOf("#")>0)
    {
        s=selector.split("#");
        tag=s[0];
        selid=s[1];
    }

    if(selid!="")
    {
        objlist.push(document.getElementById(selid));
        return(objlist);
    }

    //class selector like "tag.class"
    if(selector.indexOf(".")>0)
    {
        s=selector.split(".");
        tag=s[0];
        selclass=s[1];
    }

    // tag selector like "tag"
    var v=document.getElementsByTagName(tag);
    if(selclass=="")
        return(v);
    for(i=0;i<v.length;i++)
    {
        if(v[i].className==selclass)
            objlist.push(v[i]);
    }

    return(objlist);
}
