/* nifty - Javascript to create rounded corners on <DIV>'s
*
*	see: http://pro.html.it/esempio/nifty/
*
*/

/** NiftyCheck - Check browser compatibility.
*
*	The function NiftyCheck performs a check for DOM support 
*	and excludes IE5.x PC for running the script. 
*/
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);
}

/* Rounded - 
*
*	Entry:	selector	A CSS selector that indicates on which elements to apply the function
*   		bk			Outer (background) color of the rounded corners
*   		color		Inner color of the rounded corners
*   		size		(optional) If set to "small", renders small Nifty Corners
*
*/
function Rounded(selector,bk,color,size){
var i;
var v = getElementsBySelector(selector);
// var l = v.length;
for(i=0; i<v.length; i++){
    AddTop(v[i], bk, color, size);
    AddBottom(v[i], bk, color, size);
    }
}

/* RoundedTop - Same as Rounded, but only rounds top corners.
*
*/
function RoundedTop(selector,bk,color,size){
var i;
var v = getElementsBySelector(selector);
for(i = 0; i<v.length; i++)
    AddTop(v[i], bk, color, size);
}

/* RoundedBottom - Same as Rounded, but only rounds bottom corners.
*
*
*/
function RoundedBottom(selector,bk,color,size){
var i;
var v=getElementsBySelector(selector);
for(i=0; i<v.length; i++)
    AddBottom(v[i], bk, color, size);
}

function AddTop(el,bk,color,size){
var i;
var d = document.createElement("b");
var cn = "r";
var lim = 4;
if(size && size=="small"){ cn = "rs"; lim = 2}		/* Make small corners */
d.className = "rtop";
d.style.backgroundColor = bk;
for(i=1; i<=lim; i++){
    var x = document.createElement("b");
    x.className = cn + i;
    x.style.backgroundColor = color;
    d.appendChild(x);
    }
el.insertBefore(d, el.firstChild);
}

function AddBottom(el, bk, color, 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 = bk;
	for(i=lim; i>0; i--){
 	   var x = document.createElement("b");
 	   x.className = cn + i;
 	   x.style.backgroundColor = color;
 	   d.appendChild(x);
    }
	el.appendChild(d, el.firstChild);
}

function getElementsBySelector(selector){
var i;
var s=[];
var selid="";
var selclass="";
var tag=selector;
var 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);
    return(document.getElementById(fs[1]).getElementsByTagName(s[1]));
    }
if(selector.indexOf("#")>0){ //id selector like "tag#id"
    s=selector.split("#");
    tag=s[0];
    selid=s[1];
    }
if(selid!=""){
    objlist.push(document.getElementById(selid));
    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==selclass){
        objlist.push(v[i]);
        }
    }
return(objlist);
}
