    ///////////////////////////////////////////////////////////////////////////
    //                                                                       //
    //  START OF FILE                                                        //
    //                                                                       //
    //  - File Name:        /client/js/nifty/nify.js                         //
    //  - File Type:        Java Scritp File                                 //
    //  - Purpose:          Main javascript file responsible for actually    //
    //                      drawing the corners and borders                  //
    //  - Editing:          Level 10                                         //
    //  - Description:      Contains functions that manage all aspects of    //
    //                      creating the borders and corners in the          //
    //                      application                                      //
    //  - Notes:            Downloaded from:                                 //
    //                      http://pro.html.it/esempio/nifty/                //
    //                      Learn exactly how this script works, making      //
    //                      comments along the way, and adjusting code to be //
    //                      structured relatively similar                    //
    //  - Created By:                                                        //
    //  - Editted By:                                                        //
    //                                                                       //
    ///////////////////////////////////////////////////////////////////////////

    function NiftyCheck()
    {
        if(!document.getElementById || !document.createElement)
            return(false);
        isXHTML=/html\:/.test(document.getElementsByTagName('body')[0].nodeName);
        if(Array.prototype.push==null){Array.prototype.push=function(){
              this[this.length]=arguments[0]; return(this.length);}}
        return(true);
    }

    function Rounded(selector,wich,bk,color,opt)
    {
        var i,prefixt,prefixb,cn="r",ecolor="",edges=false,eclass="",b=false,t=false;

        if(color=="transparent"){
            cn=cn+"x";
            ecolor=bk;
            bk="transparent";
            }
        else if(opt && opt.indexOf("border")>=0){
            var optar=opt.split(" ");
            for(i=0;i<optar.length;i++)
                if(optar[i].indexOf("#")>=0) ecolor=optar[i];
            if(ecolor=="") ecolor="#666";
            cn+="e";
            edges=true;
            }
        else if(opt && opt.indexOf("smooth")>=0){
            cn+="a";
            ecolor=Mix(bk,color);
            }
        if(opt && opt.indexOf("small")>=0) cn+="s";
        prefixt=cn;
        prefixb=cn;
        if(wich.indexOf("all")>=0){t=true;b=true}
        else if(wich.indexOf("top")>=0) t="true";
        else if(wich.indexOf("tl")>=0){
            t="true";
            if(wich.indexOf("tr")<0) prefixt+="l";
            }
        else if(wich.indexOf("tr")>=0){
            t="true";
            prefixt+="r";
            }
        if(wich.indexOf("bottom")>=0) b=true;
        else if(wich.indexOf("bl")>=0){
            b="true";
            if(wich.indexOf("br")<0) prefixb+="l";
            }
        else if(wich.indexOf("br")>=0){
            b="true";
            prefixb+="r";
            }
        var v=getElementsBySelector(selector);
        var l=v.length;
        for(i=0;i<l;i++){
            if(edges) AddBorder(v[i],ecolor);
            if(t) AddTop(v[i],bk,color,ecolor,prefixt);
            if(b) AddBottom(v[i],bk,color,ecolor,prefixb);
            }
    }

    function AddBorder(el,bc)
    {
        var i;
        if(!el.passed){
            if(el.childNodes.length==1 && el.childNodes[0].nodeType==3){
                var t=el.firstChild.nodeValue;
                el.removeChild(el.lastChild);
                var d=CreateEl("span");
                d.style.display="block";
                d.appendChild(document.createTextNode(t));
                el.appendChild(d);
                }
            for(i=0;i<el.childNodes.length;i++){
                if(el.childNodes[i].nodeType==1){
                    el.childNodes[i].style.borderLeft="1px solid "+bc;
                    el.childNodes[i].style.borderRight="1px solid "+bc;
                    }
                }
            }
        el.passed=true;
    }
        
    function AddTop(el,bk,color,bc,cn)
    {
        var i,lim=4,d=CreateEl("b");

        if(cn.indexOf("s")>=0) lim=2;
        if(bc) d.className="artop";
        else d.className="rtop";
        d.style.backgroundColor=bk;
        for(i=1;i<=lim;i++){
            var x=CreateEl("b");
            x.className=cn + i;
            x.style.backgroundColor=color;
            if(bc) x.style.borderColor=bc;
            d.appendChild(x);
            }
        el.style.paddingTop=0;
        el.insertBefore(d,el.firstChild);
    }

    function AddBottom(el,bk,color,bc,cn)
    {
        var i,lim=4,d=CreateEl("b");

        if(cn.indexOf("s")>=0) lim=2;
        if(bc) d.className="artop";
        else d.className="rtop";
        d.style.backgroundColor=bk;
        for(i=lim;i>0;i--){
            var x=CreateEl("b");
            x.className=cn + i;
            x.style.backgroundColor=color;
            if(bc) x.style.borderColor=bc;
            d.appendChild(x);
            }
        el.style.paddingBottom=0;
        el.appendChild(d);
    }

    function CreateEl(x)
    {
        if(isXHTML) return(document.createElementNS('http://www.w3.org/1999/xhtml',x));
        else return(document.createElement(x));
    }

    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);
    }

    function Mix(c1,c2)
    {
        var i,step1,step2,x,y,r=new Array(3);
        if(c1.length==4)step1=1;
        else step1=2;
        if(c2.length==4) step2=1;
        else step2=2;
        for(i=0;i<3;i++){
            x=parseInt(c1.substr(1+step1*i,step1),16);
            if(step1==1) x=16*x+x;
            y=parseInt(c2.substr(1+step2*i,step2),16);
            if(step2==1) y=16*y+y;
            r[i]=Math.floor((x*50+y*50)/100);
            }
        return("#"+r[0].toString(16)+r[1].toString(16)+r[2].toString(16));
    } 

    ///////////////////////////////////////////////////////////////////////////
    //                                                                       //
    //  END OF FILE                                                          //
    //                                                                       //
    ///////////////////////////////////////////////////////////////////////////