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


