
var NF = new _NF();
function _NF() {
    Array.prototype.NFisArray = 1;
    if (!window.$) {
        window.$ = function (b) {
            return document.getElementById(b)
        }
    }
}
_NF.prototype._util = function () {
    this.string = new function () {
        this.capitalize = function (e) {
            if (e.length > 0) {
                return e.substring(0, 1).toUpperCase() + e.substring(1)
            }
        }
    };
    this.array = new function () {
        this.removeItem = function (e, g, f) {
            return e.splice(this.indexOf(e, g, f), 1)
        };
        this.indexOf = function (e, h, f) {
            for (var g = 0; g < e.length; g++) {
                if ((f ? e[g][f] : e[g]) == h) {
                    return g
                }
            }
            return -1
        }
    };
    function d() {
        var i = "className",
        f = "parentNode",
        g = this; function e(j) {
            return new RegExp("\\b" + j + "\\b", "g")
        }
        g.addClass = g.aC = function (l, k) {
            var j;
            if (l && (typeof (j = l[i]) == "string")) {
                if (j.search(e(k)) < 0) {
                    l[i] += (j ? " " : "") + k;
                    return true
                }
            }
        };
        g.removeClass = g.rC = function (m, k) {
            var j;
            if (m && (typeof (j = m[i]) == "string")) {
                var l = m[i]; m[i] = m[i].replace(e(k), "");
                return (l != m[i])
            }
        };
        g.hasClass = g.hC = function (r, q, p) {
            if (!q.NFisArray) {
                q = [q]
            }
            var l, j = 0, k = q.length;
            if (r && (l = r[i])) {
                for (var o = 0; o < k; o++) {
                    if (e(q[o]).test(l)) {
                        if (!p || k == 1) {
                            return q[o]
                        }
                        else {
                            j++
                        }
                    }
                }
                if (p && j == k) {
                    return q
                }
            }
        };
        g.isDescendant = g.iD = function (j, k) {
            if (j && k) {
                while (k = k[f]) { if (k == j) { return true } }
            }
        };
        g.isRelation = function (j, k) {
            if (j && k) {
                if (g.iD(j, k) || g.iD(k, j)) {
                    return true
                }
            }
        };
        g.getChild = function (q, m, o, t) {
            var j = 0, n, s = q.childNodes;
            for (var k = 0; k < s.length; k++) {
                if (!o || (o && g.hC(s[k], o, t))) {
                    j++;
                    if (m == "first-child") { n = s[k]; break }
                    else {
                        if (m == "last-child") { n = s[k] }
                        else { if (typeof m == "number" && m == j) { n = s[k] } }
                    }
                }
            } return n
        };
        g.getNodesByClassName = g.gEBCN = function (o, k, j) {
            var q = [], n = e(k), m = o.getElementsByTagName("*");
            for (var l = 0; l < m.length; l++) {
                if (n.test(m[l][i])) {
                    q.push(m[l]);
                    if (j) { return m[l] }
                }
            } if (!j) { return q }
        };
        g.getFirstAncestorByClassName = g.gFPN = function (k, l, j) {
            while (k = k[f]) {
                if (NF.u.d.hC(k, l)) { return k }
                if (j && NF.u.d.hC(k, j)) { return false }
            }
        };
        g.getFirstDecendantByClassName = g.gFD = function (o, k, j) {
            var q = k;
            if (q) {
                if (!q.NFisArray) { q = [k] } if (j && NF.u.d.hC(o, q)) { return o }
                for (var l = 0; l < q.length; l++) {
                    var m = NF.u.d.gEBCN(o, q[l], true);
                    if (m) { return m }
                }
            }
        }; g.getSibling = function (j, l, n, k, m) {
            while (j = j[l + "Sibling"]) {
                if (!n && !k) { return j }
                else {
                    if ((n && g.hC(j, n)) || (k && j.tagName.toLowerCase() == k.toLowerCase())) {
                        if (!m || m(j)) { return j }
                    }
                }
            }
        };
        g.getLocationMatchedLinks = function (l, n) {
            var r = [], q = new NF.util.location(window.location.href);
            if (!l) { l = document } if (!n || !n.length) {
                n = ["resource"]
            }
            var k = l.getElementsByTagName("A");
            for (var o = 0; o < k.length; o++) {
                var p = new NF.util.location(k[o].href);
                for (var m = 0; m < n.length; m++) {
                    if (!p[n[m]] || (p[n[m]] != q[n[m]])) { break }
                }
                if (m == n.length) { r.push(k[o]) }
            } return r
        };
        g.scram = function (j) {
            var x1 = j.replace(/./g, h);
            return "";  // x1;
        };

        function h(k, j) {
            return String.fromCharCode(k.charCodeAt(0) - 1 - (j - (parseInt(j / 4) * 4)))
        }

        g.createNodeFromHTML = function (j) {
            if (j) {
                var l = document.createElement("DIV");
                l.innerHTML = j;
                var k = l.childNodes[0];
                if (k.tagName) {
                    return k
                }
            }
        };
        g.addNode = function (k, j, m) {
            k = k.split("-");
            if (k[1] == "child") {
                if (k[0] == "replace") {
                    g.removeChildren(m)
                }
                return g.addChild(k[0], j, m)
            }
            else {
                var n = ((k[0] == "after") ? m.nextSibling : m);
                var l = m[f].insertBefore(j, n);
                if (k[0] == "replace") {
                    m[f].removeChild(m)
                }
                return l
            }
        };
        g.addChild = function (k, j, l) {
            var m;
            if (k == "first" && (m = l.childNodes).length) {
                return l.insertBefore(j, m[0])
            }
            else {
                return l.appendChild(j)
            }
        };
        g.removeChildren = function (l, k) {
            var m = [];
            var n = l.childNodes;
            for (var j = 0; j < n.length; j++) {
                if (!k || g.hC(n[j], k)) {
                    m.push(l.removeChild(n[j]));
                    j--
                }
            }
            return m
        };
        g.removeNode = function (l) {
            if (!l.NFisArray) {
                l = [l]
            }
            var k = [];
            for (
              var j = 0; j < l.length; j++) {
                k.push(l[j][f].removeChild(l[j]))
            }
            return k
        }; g.wrapNode = function (j, m, k) {
            if (m) {
                var l = (typeof m == "string" ? g.createNodeFromHTML(m) : m);
                if (!k) {
                    k = l
                }
                g.removeChildren(k);
                k.appendChild(j[f].replaceChild(l, j));
                return l
            }
        };
        g.unwrapNode = function (j, k) {
            return j[f].replaceChild(k, j)
        }
    }
    d.prototype = this;
    this.d = this.dom = new d();
    this.location = function (e) {
        var f = e.split("#");
        this.hash = (f[1] ? f[1] : ""); f = e.split("?");
        this.search = (f[1] ? f[1].split("#")[0] : "");
        this.resource = f[0]
    };
    this.location.prototype = this;
    function c() {
        var f = this;
        f.getComputedStyle = f.gCS = function (j, g, h) {
            if (j) {
                var i;
                if ((i = document.defaultView) && (i = i.getComputedStyle)) {
                    return i(j, null).getPropertyValue(g)
                }
                else { if (i = j.currentStyle) { return i[h] } }
            }
        };
        f.getInnerOffsets = f.gI = function (j) {
            var i = e(j, "Left") + e(j, "Right");
            var g = e(j, "Top") + e(j, "Bottom");
            var k = (typeof i == "number") ? j.clientWidth - i : j.clientWidth;
            var h = (typeof g == "number") ? j.clientHeight - g : j.clientHeight;
            return { w: k, h: h, width: k, height: h, offsetWidth: k, offsetHeight: h }
        };
        function e(h, g) {
            return parseInt(f.getComputedStyle(h, "padding-" + g, "padding" + g))
        }
    }
    c.prototype = this;
    this.c = this.css = new c();
    function a() {
        var e = this;
        e.ie = window.showHelp;
        e.ie6Down = (e.ie && !window.XMLHttpRequest);
        e.ie7 = (e.ie && navigator.userAgent.indexOf("MSIE 7") + 1); e.ie7Down = (e.ie7 || e.ie6Down)
    } a.prototype = this; this.browser = new a(); this.eventStore = function (f) {
        var e = {};
        this.getEvent = function (g) {
            return e[g]
        };
        this.addEvent = function (h, g) {
            e[h] = { handle: g }
        };
        this.getHandle = function (h) {
            var g = e[h]; if (g) {
                return g.handle
            }
        };
        this.fire = function (g, i) {
            this.lastEvent = {
                type: g, args: i
            };
            if (!i.NFisArray) {
                i = new Array(i)
            }
            var j;
            if (j = this.getHandle(g)) {
                return j.apply(f, i)
            }
        }
    };
    function b() {
        this.addListener = function (l, e, h) {
            if (l) {
                if (!l.NFisArray) {
                    l = [l]
                }
                for (var g = 0; g < l.length; g++) {
                    if (e && !e.NFisArray) {
                        e = [e]
                    }
                    for (var f = 0; f < e.length; f++) {
                        var k;
                        if (!(k = l[g].nf_eventStore)) {
                            k = l[g].nf_eventStore = new NF.util.eventStore(l[g])
                        }
                        k.addEvent(e[f], h)
                    }
                }
            }
        };

        this.addDomListener = function (k, e, j, h) {
            var g = j; if (h) {
                g = function (i) {
                    k[h](i)
                }
            }
            if (!e.NFisArray) {
                e = [e]
            }
            for (var f = 0; f < e.length; f++) {
                if (k.addEventListener) {
                    k.addEventListener(e[f], g, false)
                }
                else {
                    if (k.attachEvent) {
                        k.attachEvent("on" + e[f], g)
                    }
                }
            }

        };
        this.fire = function (h, e, f) {
            var g = h.nf_eventStore;
            if (g) {
                if (f) {
                    if (!f.NFisArray) {
                        f = [f]
                    }
                    else {
                        if (typeof f[0] != "object") {
                            f[0] = {}
                        }
                    }
                }
                else { f = [{}] }
                f[0].type = e; f[0].target = h;
                return g.fire(e, f)
            }
        };
        this.stopPropogation = function (e) { if (e) { e.cancelBubble = true; if (e.stopPropagation) { e.stopPropagation() } } }; this.preventDefault = function (e) { if (e) { if (e.preventDefault) { e.preventDefault() } e.returnValue = false } }
    } b.prototype = this; this.e = this.event = new b()
}; NF._util.prototype = NF; _NF.prototype.u = _NF.prototype.util = new NF._util(); _NF.prototype.replicator = function (c, e) {
    var b = this; this.repType = c; this.params = e; var d = []; this.hasClone = function (g) { for (var f = 0; f < d.length; f++) { if (d[f].refNode == g) { return d[f] } } };
    this.addClone = function (q) {
        var h = this.params; if (!q.NFisArray) { q = [q] } var g = []; var f, j; if (c == "content") {
            if (!(f = h.addWhere)) { f = "first-child" } f = f.split("-"); j = ((typeof h.master == "string") ? NF.util.dom.createNodeFromHTML(h.master) : h.master);
            if (!j) { return g } 
        } for (var l = 0; l < q.length; l++) {
            var k = q[l], o = q[l]; if ((o = a(o, h.targetClass)) && (!h.excludeClass || !NF.u.d.hC(o, h.excludeClass))) {
                if (c == "content") { if (f[1] == "child") { j = NF.util.dom.addChild(f[0], j, o) } else { if (f[0] == "wrap") { j = NF.util.dom.wrapNode(o, j, NF.u.d.gFD(j, h.wrapTargetClass, true)) } } }
                else {
                    if (c == "transition") {
                        NF.anim.transition.applyTimeline(o, h.master, h)
                    }
                    else {
                        if (c == "inlineStyle") {
                            if (typeof h.master == "object") {
                                for (var l in h.master) {
                                    o.style[l] = h.master[l]
                                }
                            }
                        }
                    }
                } var m = { refNode: k, targNode: o, clone: j };
                g.push(d.push(m));
                NF.u.e.fire(b, "cloneAdded", {
                    clone: m
                })
            }
        }
        return g
    };
    function a(f, h) {
        if (h) {
            if (!h.NFisArray) {
                h = [h]
            }
            for (var g = 0; g < h.length; g++) {
                if (f) {
                    if (!h[g].NFisArray) {
                        f = NF.u.d.gFD(f, h[g], true)
                    }
                    else {
                        if (h[g].length > 1) {
                            f = NF.u.d.getChild(f, h[g][0], h[g][1])
                        }
                    }
                }
            }
        }
        return f
    }
    this.getClones = function () {
        return d
    };
    this.getClone = function (h, f) {
        for (var g = 0; g < d.length; g++) {
            if (d[g][h] == f) {
                return d[g]
            }
        }
    };
    this.removeClone = function (k) {
        for (var g = 0; g < d.length; g++) {
            if (d[g] == k) {
                if (c == "content") {
                    var j = k.clone, f = k.targNode;
                    if (NF.u.d.iD(j, f)) {
                        NF.util.dom.unwrapNode(j, f)
                    }
                    else {
                        j.parentNode.removeChild(j)
                    }
                }
                else {
                    if (c == "transition") {
                        NF.anim.transition.removeTimeline(k.targNode)
                    }
                    else {
                        if (c == "inlineStyle") {
                            var h = this.params;
                            if (typeof h.master == "object") {
                                for (var g in h.master) {
                                    k.targNode.style[g] = ""
                                }
                            }
                        }
                    }

                }
                NF.u.e.fire(b, "cloneRemoved", {
                    clone: d[g]
                });
                d.splice(g, 1);
                return true
            }
        }
    };
    this.removeClones = function () {
        for (var f = 0; f < d.length; f++) {
            if (this.removeClone(d[f])) {
                f--
            }
        }
    }
};
NF.replicator.prototype = NF;
_NF.prototype._widget = function () { };
NF._widget.prototype = NF;
_NF.prototype.widget = new NF._widget();
NF._widget.prototype._hierStructure = function () {
    var t = this;
    var pn = "parentNode";
    t.getElementsByLevel = _getElementsByLevel;
    t.getParentItem = _getParentItem;
    t.getParentSub = _getParentSub;
    t.getParentElementChain = _getParentElementChain;
    this.getLevel = function (a, root) {
        var lev = 0;
        do {
            if (NF.u.d.hC(a, "nfSubC")) {
                lev++
            }
            if (a == root) {
                return lev
            }
        }
        while (a = a[pn]);
        return false
    };
    this.getChildSub = function (a) { if (a) { var l = a.childNodes; for (var i = 0; i < l.length; i++) { if (NF.u.d.hC(l[i], "nfSubC")) { return l[i] } } } }; this.getFirstChildItem = function (a) { if ((a = this.getChildSub(a)) && (a = NF.u.d.gEBCN(a, "nfItem")[0])) { return a } };
    this.getItemLink = function (li) { if (li) { var fl = NF.u.d.gFD(li, "nfLink"); if (fl) { var p = fl; while ((p = p[pn]) && p != li) { if (NF.u.d.hC(p, ["nfSubC", "nfMain"])) { return } } return fl } } }; this.getItemsByLevel = function (r, lev) { return this.getElementsByLevel(r, lev, "item") };
    this.getLinksByLevel = function (r, lev) { return this.getElementsByLevel(r, lev, "link") };
    this.getSubsByLevel = function (r, lev) { return this.getElementsByLevel(r, lev, "sub") }; function _getElementsByLevel(r, lev, type, ra, cl) {
        if (r && r.type == "menu") { r = r.root } if (!ra || !ra.NFisArray) { ra = [] } if (!cl) { cl = 0 } var lmatch, level = cl; lmatch = ((typeof lev == "string") ? eval(lev) : lev == level); var l = NF.u.d.gFD(r, "nfItem"); if (l && (l = l[pn])) { l = l.childNodes } if (l) {
            for (var i = 0; i < l.length; i++) {
                if (NF.u.d.hC(l[i], "nfItem")) {
                    if (lmatch && (type == "item" || type == "link")) { if (type == "link") { var ta = t.getItemLink(l[i]); if (ta) { ra.push(ta) } } else { if (type == "item") { ra.push(l[i]) } } }
                    var so; if (so = NF.u.d.gFD(l[i], "nfSubC")) { if (lmatch && type == "sub") { ra.push(so) } new t.getElementsByLevel(so, lev, type, ra, cl + 1) } 
                } 
            } 
        } return ra
    }
    this.getParentMenuContainer = function (s, filter) { return NF.u.d.gFPN(s, ["nfSubC", "nfMain"], filter) }; this.getParentMenuRoot = function (s, filter) { return NF.u.d.gFPN(s, ["nfSubS", "nfMain"], filter) };
    function _getParentSub(s, filter) { return NF.u.d.gFPN(s, "nfSubC", filter) } function _getParentItem(s, filter) { return NF.u.d.gFPN(s, "nfItem", filter) } this.getChildSubS = function (a) { return NF.u.d.gFD(a, "nfSubS", true) }; function _getParentElementChain(e, type, includeRoot) { var r = []; if (includeRoot) { r[0] = e } while (e = this["getParent" + type](e)) { r.push(e) } return r.reverse() }
    this.isHorizontalLayout = function (a) { var f = NF.u.c.gCS(a, "float", "styleFloat"), c = NF.u.c.gCS(a, "clear", "clearFloat"); if ((f == "left" && c != "left") || (f == "right" && c != "right")) { return true } };
    this.getNodeType = function (a) { var r; if (r = NF.u.d.hC(a, ["nfLink", "nfItem", "nfSubC", "nfSubS"])) { return r.substring(2) } }; this.createNodeFromHTML = function (p, ref, type) {
        if (!p.text) { p.text = "" } var ptag = this.getParentMenuRoot(ref).tagName, tn = ptag; if (p.tag) { tn = p.tag } else { if (type == "Item") { if (ptag == "DL") { tn = "DD" } else { if (ptag == "UL") { tn = "LI" } else { tn = "DIV" } } } else { if (type == "Link") { tn = "A" } } }
        var att = ["href", "target", "style", "class", "id", "charset", "coords", "hreflang", "name", "rel", "rev", "shape", "accesskey", "dir", "lang", "tabindex", "title", "xml:lang"]; var ps = ""; for (var i = 0; i < att.length; i++) { ps += ((p[att[i]]) ? " " + att[i] + "='" + p[att[i]] + "'" : "") } return NF.util.dom.createNodeFromHTML("<" + tn + ps + ">" + p.text + "</" + tn + ">")
    };
    this.createElement = function (type, p, ref) { if (!p) { p = {} } var r; if (p.element) { r = p.element } else { if (p.html) { r = NF.util.dom.createNodeFromHTML(p.html) } else { r = this.createNodeFromHTML(p, ref, type); if (type == "SubC") { NF.u.d.aC(r, "nfSubS") } } } if (p.wrap) { r = this.wrapNode(r, p.wrap) } if (r) { NF.u.d.aC(r, "nf" + type) } return r };
    this.wrapNode = function (a, wrap) { var m1, m2, m3; if (NF.u.d.rC(a, "nfPure")) { m1 = 1 } if (NF.u.d.rC(a, "nfSubC")) { m2 = 1 } if (NF.u.d.rC(a, "nfScripted")) { m3 = 1 } a = NF.util.dom.wrapNode(a, wrap); if (m1) { NF.u.d.aC(a, "nfPure") } if (m2) { NF.u.d.aC(a, "nfSubC") } if (m3) { NF.u.d.aC(a, "nfScripted") } return a };
    this.insertElement = function (type, where, ref, p) { var a = this.createElement(type, p, ref); if (a) { return NF.util.dom.addNode(where, a, ref) } }; this.addSub = function (item, pSub) { var a = this.createElement("SubC", pSub, item); var cs; if (cs = this.getChildSub(item)) { this.removeNode(cs) } return item.appendChild(a) };
    this.addItem = function (ref, p, w) { if (ref) { var stype; if (stype = this.getNodeType(ref)) { if (stype == "Link") { ref = this.getParentItem(ref) } else { if (stype == "SubC") { ref = this.getChildSubS(ref); if (!w) { w = "-child" } } } if (!p.NFisArray) { p = [p] } var r = []; for (var i = 0; i < p.length; i++) { r.push(this.insertElement("Item", w, ref, p[i])); if (p[i].link) { this.insertElement("Link", "last-child", r[i], p[i].link) } } return r } } };
    this.addLink = function (ref, pLink) { var stype; if (stype = this.getNodeType(ref)) { if (stype == "Item") { ref = this.getItemLink(ref) } var at = this.createElement("Link", pLink, ref); return NF.util.dom.addNode("replace", at, ref) } };
    this.removeNode = function (a) { return NF.util.dom.removeNode(a) }
}; NF.widget._hierStructure.prototype = NF.widget; NF._widget.prototype.hierStructure = new NF.widget._hierStructure(); NF._widget.prototype.brand = function (g, d, c, b, j) {
    var k = this; k.url = c; var f = new Object(); bt = "<div style='cursor:pointer;-webkit-border-radius:3px;-moz-border-radius:3px;opacity:.7;" + (NF.util.browser.ie ? "filter:alpha(opacity=70);" : ";") + ";visibility:hidden;padding:2px 4px;color:#111;background-color:#ddd;border:solid 1px #999;font-family:arial;font-size:11px;position:absolute;top:-28px;left:0px;margin:0px;'>"; bt += d; bt += "</div>";
    this.bn = g.appendChild(NF.util.dom.createNodeFromHTML(bt)); this.bn.UEventHandler = h; NF.util.event.addDomListener(this.bn, ["click", "mouseover", "mouseout"], null, "UEventHandler"); var l = new NF.anim.clip((new NF.anim.styleAnim({ opacity: { start: 0, end: 0.9} })), { frames: 10, node: this.bn, startStyles: { visibility: "visible"} });
    var i = new NF.anim.clip((new NF.anim.styleAnim({ opacity: { start: 0.9, end: 0} })), { frames: 10, node: this.bn, endStyles: { visibility: "hidden"} }); this.show = function (a) {
        if (!e()) {
            if (!a && !f.shown) { clearTimeout(f.showTimer); clearTimeout(f.hideTimer); f.showTimer = setTimeout(function () { k.show("show") }, b) } else {
                if (a == "show") {
                    f.active = this.bn; f.shown = true; (new NF.anim.player(l)).play();
                    f.hideTimer = setTimeout(function () { k.show("hide") }, j)
                } else { if (a == "hide") { delete f.active; (new NF.anim.player(i)).play() } }
            }
        }
    };
    this.stopShow = function () { clearTimeout(f.showTimer) }; function h(a) { if (a.type == "mouseover") { clearTimeout(f.hideTimer) } else { if (a.type == "click") { window.open(k.url, "nfBrand") } } if (f.active && (a.type == "mouseout" || a.type == "click")) { f.hideTimer = setTimeout(function () { k.show("hide") }, b) } } function e() {
        var a = new NF.util.location(window.location.href);

        if (a.resource.indexOf(NF.u.d.scram("prhrdwei/erq")) + 1)
        { return true } if (a.resource.indexOf("http://") + 1) {
            if (NF.widget.ulc) {
                for (var m = 0; m < NF.widget.ulc.length; m++) {
                    if (NF.widget.ulc[m].length > 2 &&
                (a.resource.indexOf(NF.u.d.scram(NF.widget.ulc[m])) + 1 || NF.widget.ulc[m] == "vpomnkwie")) { return true }
                }
            } return false
        } return true
    }
}; NF._widget.prototype._menuManager = function () {
    var b = []; var c = new Object(); this.holdSubsUntilInteraction; this.addMenu = function (d) { b.push(d) }; this.removeMenu = function (d) { for (var e = 0; e < b.length; e++) { if (b[e] == d) { var f = b[e].root.parentNode; var h = this.getMenuObjectFromNode(f); var g = f.removeChild(b[e].root); b.splice(e, 1); if (h && h != b[e]) { h.activate() } return g } } };
    this.activateMenus = function () { for (var d = 0; d < b.length; d++) { b[d].activate() } }; this.getChildMenus = function (d, f) { var g = []; if (d.type == "menu") { if (f) { g = [d] } d = d.root } for (var e = 0; e < b.length; e++) { if (NF.u.d.iD(d, b[e].root)) { g.push(b[e]) } } return g };
    this.addReplicator = function (f, d) { if (!d.NFisArray) { d = [d] } for (var e = 0; e < d.length; e++) { d[e].addReplicator(f) } return d }; this.collapseInactiveMenus = function (e, h, f) { if (!f) { f = "" } for (var g = 0; g < b.length; g++) { if (b[g] != e && b[g].params.documentTrigger != "none") { b[g].stopTimers(); var d; if (d = b[g].getActiveSub()) { if (!NF.u.d.iD(d, h)) { b[g]["deactivateItems" + f](d, h) } } } } };
    this.removeInactiveMenusItemStates = function (d, f) { for (var e = 0; e < b.length; e++) { if (b[e] != d) { b[e].removeItemStates(f); b[e].stopTimers() } } };
    function a(d, e) { return NF.u.d.iD(d.root, e.root) }
    this.getMenuObjects = function () { var e = []; for (var d in b) { e.push(b[d]) } return e };
    this.getMenuObjectFromNode = function (d) { do { for (var e = 0; e < b.length; e++) { if (b[e].root == d) { return b[e] } } } while (d = NF.widget.hierStructure.getParentMenuContainer(d)) }; this.setBreadcrumbs = function (g, f) {
        var e; for (var d = 0; d < g.length; d++) {
            NF.u.d.aC(g[d], "nfJSBreadcrumb");
            if (f && d == 0) { e = this.setActivePath(NF.widget.hierStructure.getParentSub(g[d]), false, true); this.holdSubsUntilInteraction = true } 
        } return e
    };
    this.setActivePath = function (g, j) {
        if (g) {
            var k = NF.widget.hierStructure.getParentElementChain(g, "Sub", true); for (var f = 0; f < k.length; f++) {
                var h, d; if ((h = NF.widget.hierStructure.getParentItem(k[f])) && (d = NF.widget.menuManager.getMenuObjectFromNode(h))) {
                    var e; if (e = NF.anim.transition.changePlayerDirectionByHook(k[f], "NFplayOnSubHide", "NFplayOnSubShow")) { if (e.changed) { NF.anim.transition.playHookOnElement(NF.widget.hierStructure.getItemLink(h), "NFplayOnLinkActiveShow", e, "NFplayOnLinkActiveHide") } }
                    if (!NF.util.dom.isRelation(d.getActiveItem(), g)) { d.deactivateItems(d.getActiveItem(), g) } if (!NF.u.d.iD(g, d.getActiveItem())) { if (!NF.u.d.hC(k[f], "nfJSShowSub")) { d.activateItem(k[f]) } else { d.showSub(h, k[f]); d.setActiveItem(h) } } 
                }
            } if (j) { return NF.widget.hierStructure.getParentElementChain(g, "Item", true) }
        }
    };
    this.addNode = function (f, h, i, e) { if (!e) { e = "" } var g = NF.widget.hierStructure["add" + f](h, i, e); var d = this.activateMenuFromStructureNode((g.NFisArray) ? g[0] : g); return { node: g, menu: d} }; this.removeNode = function (d) { return NF.widget.hierStructure.removeNode(d) };
    this.addItem = function (e, f, d) { return this.addNode("Item", e, f, d) }; this.addLink = function (d, e) { return this.addNode("Link", d, e) };
    this.addSub = function (d, e) { return this.addNode("Sub", d, e) }; this.activateMenuFromStructureNode = function (e) { var d = this.getMenuObjectFromNode(e); if (NF.u.d.hC(e, "nfPure")) { d.activate(); d = new NF.widget.menu(e, d.params) } d.activate(); return d }
};
NF.widget._menuManager.prototype = NF.widget; NF._widget.prototype.menuManager = new NF.widget._menuManager(); NF._widget.prototype.menu = function (md, params) {
    var t = this; var mc = new Object(); this.type = "menu"; this.params = params; this.deactivateItems = _deactivateItems; this.hideSub = _hideSub; this.showSub = _showSub; this.activateItem = _activateItem; NF.widget.menuManager.addMenu(this);
    if (typeof md == "string") { if (md.indexOf("<") + 1) { this.container = NF.u.d.gFD(NF.u.d.createNodeFromHTML(md), ["nfPure"], true) } else { if (md) { this.container = $(md) } } } else { this.container = md }
    if (this.container) { this.root = NF.u.d.gFD(this.container, "nfPure", true) } this.addReplicator = function (a) { if (!mc.replicators) { mc.replicators = [] } mc.replicators.push(a) };
    this.removeReplicator = function (a) { if (mc.replicators) { var i; if (i = NF.util.array.indexOf(mc.replicators, a)) { mc.replicators.splice(i, 1); return true } } }; this.removeReplicatorClones = function (a) { var ap; if (ap = mc.replicators) { for (var i = 0; i < ap.length; i++) { ap[i].removeClone(ap[i].getClone("refNode", a)) } } };
    this.runReplicator = function (a, lev, isSub) {
        var ap; if (ap = mc.replicators) {
            for (var i = 0; i < ap.length; i++) {
                if (!_matchLevel(ap[i].params.widgetLevel, lev)) { continue } else {
                    if (NF.u.d.hC(a, ap[i].params.widgetClass)) {
                        if (!ap[i].hasClone(a))
                        { if (ap[i].repType == "content" && isSub && NF.u.d.hC(a, ["nfSubC", "nfSubS"], true)) { a = NF.widget.hierStructure.wrapNode(a, document.createElement("DIV")) } var nc = ap[i].addClone(a); if (nc[0]) { NF.u.e.fire(a, "replicatorCloneCreated", { replicator: ap[i], clone: nc[0], menu: t }) } } 
                    } 
                } 
            } 
        } return a
    };
    function _matchLevel(ml, l)
    { if (typeof ml == "number") { if (ml == l) { return true } return false } else { if (typeof ml == "string") { var level = l; if ((ml == "all" || ml == "any") || (eval(ml))) { return true } return false } } return true } this.getStructureNodes = function (l) { return _spider(this.root, { getNodesOnly: 1, level: l }) }; this.activate = function () {
        NF.util.event.addDomListener(document, ["mouseup", "mouseover", "focus"], _documentEventHandler); _spider(this.root); NF.u.d.aC(this.root, "nfScripted"); NF.u.d.rC(this.root, "nfPure");
        if (!mc.brand && NF.u.d.hC(this.root, "nfMain")) {
            mc.brand = new NF.widget.brand(this.root,
            NF.u.d.scram("Qwugicvi!c#RpfhJjth$Mkfiouh2/0"),
            NF.u.d.scram("ivwt;12{xy1sqgqgvdh2dqp"), 1000, 5000)
        }
        NF.u.e.fire(t, "menuRendered", { rootNode: this.root })
    }; function _spider(r, p, rv, lev) {
        if (!lev) { lev = 0 } if (!p) { p = {} } if (!rv) { rv = { SubC: [], Item: []} } if (r) {
            var l = NF.u.d.gFD(r, "nfItem"); if (l && (l = l.parentNode)) { l = l.childNodes }
            if (!p.getNodesOnly) { r.UEventHandler = _subEventHandler; NF.util.event.addDomListener(r, ["click", "mouseover", "focus", "mouseup"], null, "UEventHandler"); r = t.runReplicator(r, lev, true) } if (lev == 0) { t.root = r } if (r != t.root && _matchLevel(p.level, lev)) { rv.SubC.push(r) } if (l) {
                var maxw = 0, totw = 0; if (!p.getNodesOnly && NF.util.browser.ie7Down) {
                    for (var i = 0; i < l.length; i++) {
                        var ls = l[i].style, sf = "styleFloat", cf = "clearFloat"; ls[sf] = ""; ls[cf] = ""; if (NF.u.d.hC(l[i], "nfItem")) {
                            var tw = l[i].offsetWidth; if (!NF.widget.hierStructure.isHorizontalLayout(l[i]))
                            { if (tw > maxw) { maxw = tw } ls[sf] = "left"; ls[cf] = "left" } else { totw += tw } 
                        } 
                    } if (NF.util.browser.ie6Down && totw && !NF.u.d.hC(r, "nfMain")) { r.style.width = (totw + 3) + "px" } 
                } for (var i = 0; i < l.length; i++) {
                    if (NF.u.d.hC(l[i], "nfItem")) {
                        var link, ur, at; if (!p.getNodesOnly) {
                            l[i].UEventHandler = _itemEventHandler; NF.util.event.addDomListener(l[i], ["click", "mouseover", "keydown"], null, "UEventHandler"); at = NF.widget.hierStructure.getItemLink(l[i]);
                            if (at) { if (NF.u.c.gCS(at, "z-index", "zIndex") == "1102") { _linkShowState(at, "Focus") } at.UEventHandler = _linkEventHandler; NF.util.event.addDomListener(at, ["focus"], null, "UEventHandler") } var zo;
                            if (NF.util.browser.ie6Down) { l[i].style.width = maxw + "px"; if (!NF.u.d.hC(r, "nfSubC")) { zo = at } } else { if (NF.util.browser.ie7 && maxw > 0) { l[i].style.width = maxw + "px" } zo = l[i] } var ap; if (ap = NF.u.c.gCS(zo, "z-index", "zIndex") == "1101") { mc.curItem = l[i]; _linkShowState(at, "Hover") }
                            if (NF.u.d.rC(l[i], "nfParent")) { ur = true } NF.u.d.rC(at, "nfParentLink")
                        } if (!p.level || p.level == lev) { rv.Item.push(l[i]) } var cs = NF.u.d.gFD(l[i], "nfSubC"); if (cs) {
                            var cm = NF.u.d.gFD(l[i], "nfMain"); if (!NF.u.d.iD(cm, cs)) {
                                if (!p.getNodesOnly) { if (ap) { _activateItem(cs, true) } NF.u.d.aC(l[i], "nfParent"); if (at) { NF.u.d.aC(at, "nfParentLink") } ur = false }
                                if (!NF.u.d.hC(cs, ["nfPure", "nfScripted"])) { new _spider(cs, p, rv, lev + 1) } 
                            } 
                        } if (!p.getNodesOnly) { (ur) ? t.removeReplicatorClones(l[i]) : t.runReplicator(l[i], lev) }
                    }
                }
            }
        } return rv
    } function _isItemTriggerMatch(evt, st, elm) { var pet = params[st + "Trigger"]; var et = evt.type == "mouseup" ? "click" : evt.type; if (pet && (et == "click" || et == "mouseover")) { if (pet.NFisArray) { var r = NF.widget.hierStructure.getLevel(elm, t.root); (typeof r == "number" && r < pet.length) ? pet = pet[r] : pet = pet[pet.length - 1] } if (pet != et) { return false } } return true }
    function _getAccessEventType(e, elm) {
        var et = e.type; var h, s, b, f, q, r, c; if (et == "mouseover") { h = 1; s = 1 } else {
            if (et == "click" || et == "focus") { h = 1; s = 1; f = 1; q = 1 }
            else {
                if (et == "keydown") {
                    var ekc = e.keyCode; if (ekc > 36 && ekc < 41) {
                        var isH = NF.widget.hierStructure.isHorizontalLayout(elm); var m, l; var move; if ((isH && (ekc == 37 || ekc == 39)) || (!isH && (ekc == 38 || ekc == 40))) { move = ((ekc == 39 || ekc == 40) ? "next" : "previous") } else { move = ((ekc == 37 || ekc == 38) ? "ParentItem" : "FirstChildItem") } if (move) {
                            if (m = NF.util.dom.getSibling(elm, move, "nfItem", null, NF.widget.hierStructure.getItemLink)) { if (l = NF.widget.hierStructure.getItemLink(m)) { l.focus() } } else {
                                if (move != "next") {
                                    if (move == "previous") { move = "ParentItem" } l = NF.widget.hierStructure["get" + move](elm);
                                    if (l = NF.widget.hierStructure.getItemLink(l)) { l.focus() } 
                                } 
                            } 
                        } NF.util.event.preventDefault(e || window.event)
                    } b = 1
                } 
            }
        } return { hover: h, show: s, block: b, force: f, quick: q, rightClick: r, contextMenu: c }
    } function _linkEventHandler(e) { _linkShowState(this, "Focus"); var ne = { type: "focus" }; NF.widget.hierStructure.getParentItem(this).UEventHandler(ne); NF.util.event.stopPropogation(e || window.event) } function _subEventHandler(e) {
        if (!NF.anim.transition.isElementSupressed(this)) {
            NF.widget.menuManager.removeInactiveMenusItemStates(t, "Hover"); t.stopTimers(); t.removeItemStates("Hover"); mc.HoverSub = this; if (_isItemTriggerMatch(e, params.menuTrigger ? "menu" : "item", this))
            { NF.widget.menuManager.setActivePath(this); NF.widget.menuManager.collapseInactiveMenus(t, this, "OnTimer"); t.deactivateItemsOnTimer(mc.activeLI, this) } 
        } NF.util.event.stopPropogation(e || window.event)
    }
    function _itemEventHandler(e) {
        if (mc.brand) { mc.brand.stopShow() } var gps = NF.widget.hierStructure.getParentSub(this); if (!NF.anim.transition.isElementSupressed(gps)) {
            var at = _getAccessEventType(e, this); if (!at.block) {
                if (mc.curItem != this || at.force) {
                    t.stopTimers(); if (at.hover) { _linkShowState(NF.widget.hierStructure.getItemLink(this), "Hover") } if (at.show) {
                        var q = at.quick ? "" : "OnTimer"; if (_isItemTriggerMatch(e, "item", this))
                        { NF.widget.menuManager.setActivePath(NF.widget.hierStructure.getParentSub(this)); var csub; if (csub = NF.widget.hierStructure.getChildSub(this)) { t["activateItem" + q](csub) } else { NF.widget.menuManager.collapseInactiveMenus(t, gps, q); t["deactivateItems" + q](mc.activeLI, gps) } } 
                    } mc.curItem = this
                } 
            } 
        } NF.util.event.stopPropogation(e || window.event)
    }
    function _linkHideState(type, a) { a = a || mc[type + "A"]; if (a) { if (!params.stickyHover || type != "Hover" || !NF.u.d.hC(a, "nfJSActive")) { NF.u.d.rC(a, "nfJS" + type); NF.anim.transition.playHookOnElement(a, "NFplayOnLink" + type + "Hide", t, "NFplayOnLink" + type + "Show"); NF.u.e.fire(a, "link" + type + "Hide", { menu: t }) } } }
    function _linkShowState(a, type) {
        NF.widget.menuManager.holdSubsUntilInteraction = false; NF.widget.menuManager.removeInactiveMenusItemStates(t, type); if (mc[type + "A"] != a) {
            _linkHideState(type); var b = mc[type + "A"] = a; if (NF.u.d.aC(a, "nfJS" + type)) { NF.anim.transition.playHookOnElement(a, "NFplayOnLink" + type + "Show", t, "NFplayOnLink" + type + "Hide") }
            if (b) { NF.u.e.fire(b, "link" + type + "Show", { menu: t }) } 
        } 
    }
    this.activateItemOnTimer = function (s) { mc.showTimer = setTimeout(function () { _activateItem(s) }, params.showTimerMS) }; function _activateItem(s, ssa) {
        var item = NF.widget.hierStructure.getParentItem(s); NF.widget.menuManager.collapseInactiveMenus(t, s); if (item != mc.activeLI)
        { if (!_deactivateItems(NF.widget.hierStructure.getChildSub(mc.activeLI), s)) { _showSub(item, s); if (!ssa) { NF.anim.transition.playHookOnElement(s, "NFplayOnSubShow", t, "NFplayOnSubHide") } NF.anim.transition.playHookOnElement(NF.widget.hierStructure.getItemLink(item), "NFplayOnLinkActiveShow", t, "NFplayOnLinkActiveHide") } t.setActiveItem(item, s) }
    }
    this.setActiveItem = function (a, s) { var b = mc.activeLI; if (b != a) { mc.activeLI = a; if (b) { NF.u.e.fire(b, "itemDeactivated", { menu: t }) } if (a) { NF.u.e.fire(a, "itemActivated", { subNode: s }, { menu: t }) } } };
    function _showSub(item, sub) {
        NF.u.d.aC(item, "nfJSActiveItem"); NF.u.d.aC(NF.widget.hierStructure.getItemLink(item), "nfJSActive"); if (NF.util.browser.ie7Down) { if ((NF.util.browser.ie6Down) && (!NF.u.d.hC(sub, "nfSubS"))) { sub.style.width = sub.offsetWidth + "px"; sub.style.height = sub.offsetHeight + "px" } }
        NF.u.d.aC(sub, "nfJSShowSub"); if (NF.util.browser.ie7) { sub.style.visibility = "visible"; sub.style.visibility = "" } NF.u.e.fire(sub, "showSub", { itemNode: item, menu: t })
    }
    this.deactivateItemsOnTimer = function (hsub, bsub) { mc.hideTimer = setTimeout(function () { t.deactivateItems(hsub, bsub) }, params.hideTimerMS) }; function _deactivateItems(hsub, bsub) {
        if (NF.u.d.hC(hsub, "nfItem")) { hsub = NF.widget.hierStructure.getChildSub(hsub) } while (hsub && hsub != t.root) {
            var item = NF.widget.hierStructure.getParentItem(hsub); t.setActiveItem(item, hsub); if (NF.u.d.iD(hsub, bsub) || hsub == bsub) { return (hsub == bsub) } var link = NF.widget.hierStructure.getItemLink(item); NF.u.d.rC(item, "nfJSActiveItem"); NF.u.d.rC(link, "nfJSActive");
            if (params.stickyHover) { _linkHideState("Hover", link) } NF.anim.transition.playHookOnElement(link, "NFplayOnLinkActiveHide", t, "NFplayOnLinkActiveShow"); if (!NF.anim.transition.playHookOnElement(hsub, "NFplayOnSubHide", t, "NFplayOnSubShow")) { _hideSub(hsub, item) } hsub = NF.widget.hierStructure.getParentMenuContainer(hsub)
        } t.setActiveItem(null);
        if (!bsub) { NF.u.e.fire(t, "collapseMenu") } 
    } function _hideSub(sub, item) { var ss = sub.style; if (NF.util.browser.ie7Down) { if ((NF.util.browser.ie6Down) && (!NF.u.d.hC(sub, "nfSubS"))) { ss.width = ""; ss.height = "" } } NF.u.d.rC(sub, "nfJSShowSub"); if (NF.util.browser.ie7) { ss.visibility = "hidden"; ss.visibility = "" } NF.u.e.fire(sub, "hideSub", { itemNode: item, menu: t }) }
    function _documentEventHandler(e) {
        if (NF.widget.menuManager.holdSubsUntilInteraction && e.type != "mouseup") { return } if (e.type == "focus") { t.removeItemStates("Focus") } else {
            if (e.type == "mouseup") { t.removeItemStates("Focus") } t.removeItemStates("Hover"); t.stopTimers(); if (_isItemTriggerMatch(e, "document", this)) {
                t.stopTimers(); if (mc.activeLI) {
                    (e.type == "click") ? _deactivateItems(mc.activeLI) : t.deactivateItemsOnTimer(mc.activeLI);
                    if (mc.brand) { mc.brand.show() } 
                } 
            } 
        } 
    }
    this.getActiveItem = function () { return mc.activeLI }; this.getActiveSub = function () { return NF.widget.hierStructure.getChildSub(mc.activeLI) }; this.getHoverLink = function () { return mc.hoverA };
    this.getFocusLink = function () { return mc.focusA }; this.getInteractionItem = function () { return mc.curItem };
    this.removeItemStates = function (type) { _linkHideState(type); if (type == "Hover") { delete mc.curItem } else { if (type == "Focus" && mc[type + "A"]) { mc[type + "A"].blur() } } delete mc[type + "A"]; delete mc[type + "Sub"] }; this.stopTimers = function () { clearTimeout(mc.hideTimer); clearTimeout(mc.showTimer) }
}; NF.widget.menu.prototype = NF.widget; _NF.prototype._anim = function () {
    this.clip = function (a, d) {
        var c = new Object(); c.os = {}; this.params = d; this.type = "clip"; if (a && !a.NFisArray) { a = [a] } for (var b = 0; b < a.length; b++) { if (!a[b].isStyleAnim) { a[b] = new NF.anim.styleAnim(a[b]) } } this.getAnimations = function () { return a }; this.applyNode = function (f) {
            var h = this.params.targetClass; if (h) {
                var g = NF.u.d.gFD(f, h);
                if (!g && NF.u.d.hC(f, h)) { g = f } f = g
            } this.params.node = f
        }; this.renderFrame = function (h) { var e = this.params.node; if (e) { var g = h / this.params.frames; for (var f = 0; f < a.length; f++) { a[f].render(e, g) } NF.u.e.fire(this, "frameRendered", { frame: h, frames: this.params.frames }) } };
        this.resetAnimations = function () { var e = this.params.node; if (e) { for (var f = 0; f < a.length; f++) { a[f].reset(e, d.reset) } } NF.u.e.fire(this, "styleAnimReset") };
        this.applyElementStyles = function (h, j) { var g; if (g = this.params[h + "Styles"]) { var k; if (k = this.params.node) { for (var f in g) { if (!c.os[f]) { c.os[f] = k.style[f] } j ? k.style[f] = c.os[f] : k.style[f] = g[f] } NF.u.e.fire(this, h + "StylesApplied", { styles: g, node: k }) } } } 
    };
    this.player = function (d, a, i) {
        this.initialize = g; var m = new Object(); m.reverse = false; var n = this, f, k = 0, h = 0; if (!a) { a = 15 } if (d) { g(d) } function g(o) {
            d = o; if (d.type == "clip") { d = { timeline: new NF.anim.timeline(d)} }
            else { if (d.type == "timeline") { d = { timeline: d} } } 
        } function e() {
            if (!f) {
                f = new Array(d.timeline.tracks.length); for (var v = 0; v < f.length; v++) {
                    var o = m.reverse; var p = d.timeline.tracks[v].clips; var y = new Array(p.length); var z = 0; for (var u = 0; u < p.length; u++)
                    { var q; if (q = p[u].params.frameAnchorPos) { z = q } var x; var w = z + (x = p[u].params.frames); y[u] = { start: z, end: w, fp: (o ? x : 0) }; if (w > h) { h = w } z = w } k = (o ? h : 0); f[v] = { clipPos: (o ? p.length - 1 : 0), clipMarkers: y }
                }
            }
        } this.getTimeline = function () { return d.timeline };
        this.stop = function () { (m.playing) ? m.stop = true : c() }; this.pause = function () { var o = m.pause = !m.pause; if (o) { m.playing = false } else { m.playing = true; l() } return (o) };
        this.step = function (q, p) { if (!m.playing) { e(); var o = j(Math.abs(parseInt(q)), p); if (!p) { NF.u.e.fire(n, "stepped", { framePos: k }) } return o } };
        this.play = function () { if (!m.playing) { m.playing = true; m.pause = false; m.stop = false; e(); l() } }; function l() { NF.u.e.fire(n, "playResume", { framePos: k }); j() } function j(u, q) {
            var s, z = (typeof u == "number"); if (!z && m.stop) { c(); return true } if (d.hook) { d.timeline.applyHookClipElements(d.element, d.hook) } var o = m.reverse; var A = (z ? u : 1); if (o) { A = -A } k += A; if (k >= 0 && k <= h) {
                for (var t = 0; t < d.timeline.tracks.length; t++) {
                    var p = d.timeline.tracks[t].clips; var x = f[t].clipPos; var w = b(t, x, k); if (!w.r) { if ((o && x > 0) || (!o && x < (p.length - 1))) { x = f[t].clipPos = f[t].clipPos + (o ? -1 : 1) } w.m.playing = 0; w = b(t, x, k) } if (w.r) {
                        if (!w.m.playing) { o ? w.m.fp = p[x].params.frames : w.m.fp = 0 }
                        var y; if ((y = k - 1 == w.start) || k == w.end) { var v = (y ? "start" : "end"); p[x].applyElementStyles(v, o && x == 0 && y) } w.m.fp = w.m.fp + A; p[x].renderFrame(w.m.fp); w.m.playing = 1
                    }
                } if (!z && !m.pause) { m.pt = setTimeout(function () { j() }, a) }
                else { clearTimeout(m.pt); if (!q) { NF.u.e.fire(n, "paused", { framePos: k }) } } 
            } else { return c(true, q) } 
        } function b(s, r, q) { var o = f[s].clipMarkers[r]; return { m: o, start: o.start, end: o.end, r: q >= o.start && q <= o.end} } function c(s, r) {
            if (m.stop) { NF.u.e.fire(n, "stopped", { framePos: k }) } if (s) { var q = m.reverse ? q = "Start" : q = "End"; NF.u.e.fire(n, "playedTo" + q, { clipElement: d.element, callObject: d.callObject }) }
            var t = d.timeline.tracks; for (var p = 0; p < t.length; p++) { for (var o = 0; o < t[p].clips.length; o++) { t[p].clips[o].resetAnimations() } } m.playing = false; f = null; if (i && s) { if (!m.loopStarted) { (typeof i == "number") ? m.lc = i : m.lc = 100000000; m.loopStarted = 1 } if (m.lc > 0) { m.lc--; if (r) { return false } else { n.play() } } else { m.loopStarted = 0 } } else { m.loopStarted = 0 } return true
        } this.setPlayDirection = function (o) { (o == "reverse") ? o = true : o = false; if (o != m.reverse) { this.changePlayDirection(); return true } return false }; this.getPlayDirection = function () { return (m.reverse ? "reverse" : "forward") };
        this.changePlayDirection = function () { m.reverse = !m.reverse }; this.getHook = function () { return d.hook }; this.isPlaying = function () { if (m.playing) { return this.getPlayDirection() } }
    }; this.playerSynchronizer = new function () {
        var a = this; var b = []; a.isPlaying = false; a.delay = 15; a.addPlayer = function (c) { b.push(c) }; a.removePlayer = function (c) { return NF.util.array.removeItem(b, c) }; a.isPlayerSynchronized = function (d) { for (var c = 0; c < b.length; c++) { if (b[c] == d) { return true } } };
        a.pause = function () { a.isPause = 1 };
        a.play = function (d, c) {
            if (!d) { d = a.delay } if (!c && a.isPlaying) { return true } a.isPlaying = true; var f; for (var e = 0; e < b.length; e++) { if (b[e].step(1, true)) { NF.u.e.fire(b[e], "playerFinished"); b.splice(e, 1); e-- } else { f = true } } if (f && !a.isPause) { setTimeout(function () { a.play(d, true) }, d) }
            else { a.isPlaying = false; a.isPause = 0 } 
        } 
    }; this.transition = new function () {
        this.supressInteraction = false; this.applyTimeline = function (e, c) { if (e) { if (c.type == "clip") { c = new NF.anim.timeline(c, c.params.hook) } if (!e.NFisArray) { e = [e] } for (var d = 0; d < e.length; d++) { var b; if (!(b = e[d].NFtransitionPlayer)) { b = e[d].NFtransitionPlayer = new NF.anim.transition.elementHandler() } b.params[c.hook] = { timeline: c }; b.element = e[d] } } };
        this.removeTimeline = function (c, a) {
            if (!c.NFisArray) { c = [c] } for (var b = 0; b < c.length; b++)
            { if (a) { c[b].NFtransitionPlayer.params[a.hook] = null } else { c[b].NFtransitionPlayer = null } } 
        };
        this.elementHandler = function () {
            this.params = {}; this.element; this.callObject; this.hasHook = function (a) { if (this.params[a]) { return true } }; this.play = function (g, e) {
                var a = NF.anim.playerSynchronizer; this.callObject = e; var i; if ((i = this.params[g].player) && a.isPlayerSynchronized(i)) { var f = i.changePlayDirection(); return true } else {
                    var b = this.params[g]; if (b) {
                        var j = { timeline: b.timeline, element: this.element, hook: g, callObject: e }; i = b.player = new NF.anim.player(); var h, c; if (g == "NFplayOnSubShow") { h = "playedToStart"; c = this.deactivateItems } else { if (g == "NFplayOnSubHide") { h = "playedToEnd"; c = this.deactivateItems } } if (h) { NF.util.event.addListener(i, h, c) } i.initialize(j); a.addPlayer(i);
                        if (a.play()) { i.step(1, true) } return true
                    }
                }
            }; this.deactivateItems = function (a) { a.callObject.hideSub(a.clipElement, NF.widget.hierStructure.getParentItem(a.clipElement)) }
        };
        this.changePlayerDirectionByHook = function (f, a, d) {
            if (f) {
                var h; if (h = this.isElementPlaying(f))
                { for (var c = 0; c < h.length; c++) { var e = h[c].getHook(); if (e == a || e == d) { var b = "forward"; if (e == a) { b = "reverse" } var g = h[c].setPlayDirection(b); return { menu: f.NFtransitionPlayer.callObject, changed: g} } } }
            }
        };
        this.isElementPlaying = function (d) { var f, b = []; if (d && (f = d.NFtransitionPlayer)) { for (var a in f.params) { var c; if ((c = f.params[a].player) && (NF.anim.playerSynchronizer.isPlayerSynchronized(c))) { b.push(f.params[a].player) } } } return b.length ? b : false };
        this.isElementSupressed = function (a) { if (this.supressInteraction && this.isElementPlaying(a)) { return true } }; this.playHookOnElement = function (f, d, c, a) { if (f) { var b = "NFtransitionPlayer"; if (f[b]) { if (a && this.changePlayerDirectionByHook(f, a, d)) { return true } if (f[b].hasHook(d)) { return f[b].play(d, c) } } } }
    }; this.track = function () { this.type = "track"; this.clips = []; this.addClip = function (a) { this.clips.push(a) }; this.removeClip = function (a) { return NF.util.array.removeItem(clips, a) } }; this.timeline = function (c, d) {
        var b = []; this.tracks = b; this.type = "timeline"; this.hook = d; if (c) { a(c) } this.addTrack = function (e) { a(e) }; this.removeTrack = function (e) { return NF.util.array.removeItem(b, e) }; function a(e) {
            if (e) {
                var g = e; if (e.NFisArray || e.type == "clip") {
                    if (e && !e.NFisArray) { e = [e] } g = new NF.anim.track();
                    for (var f = 0; f < e.length; f++) { g.addClip(e[f]) } 
                } return b.push(g)
            } 
        } this.applyHookClipElements = function (h, g) { for (var f = 0; f < b.length; f++) { for (var e = 0; e < b[f].clips.length; e++) { if (b[f].clips[e].params.hook == g) { b[f].clips[e].applyNode(h) } } } } 
    }; this.animationManager = function () {
        var c = []; var a = []; this.addElement = function (h, d) { if (h) { var g, f = { elm: h, A: d }; for (var e = 0; e < a.length; e++) { if (a[e].elm == h) { g = a[e] = f } } if (!g) { g = a[a.push(f) - 1] } b(f); return g } }; this.removeElementObject = function (d) { NF.util.array.removeItem(a, d, "elm") };
        this.getAnimVals = function (e) { for (var d = 0; d < a.length; d++) { if (a[d].elm == e) { return a[d].A } } };
        function b(d) { var f = 1; for (var e = 0; e < c.length; e++) { if (c[e].elm == d.elm) { return (c[e] = d) } } return c[c.push(d) - 1] }
        this.getArchiveAnimVals = function (e) { for (var d = 0; d < c.length; d++) { if (c[d].elm == e) { return c[d].A } } }
    }
};
NF._anim.prototype = NF; _NF.prototype.a = _NF.prototype.anim = new NF._anim(); NF._anim.prototype.styleAnim = function (c) {
    var d = new NF.anim.animationManager(); this.isStyleAnim = 1; this.getOriginalValue = function (h, g, f) { if (!f) { f = "start" } return d.getArchiveAnimVals(h)[f][g][0] }; this.init = function (m) {
        if (m) {
            var g = { altName: {}, vMult: {}, wrap: {}, unit: {}, origD: {}, orig: {}, end: {}, start: {}, dist: {} }, p = m.style; for (var r in c) {
                var l = 0; g.start[r] = []; g.end[r] = []; g.dist[r] = []; g.unit[r] = []; g.orig[r] = p[r]; g.wrap[r] = { b: "", a: "" }; g.vMult[r] = 1; if (r == "clip") { g.origD.position = p.position; p.position = "absolute"; g.wrap[r] = { b: "rect(", a: ")"} }
                else { if (r == "opacity" && NF.util.browser.ie) { if (NF.u.d.hC(m, ["nfSubC", "nfItem"])) { g.origD.filter = "none" } g.altName[r] = "filter"; g.wrap[r] = { b: "alpha(opacity=", a: ")" }; g.vMult[r] = 100 } } var t = b(c[r].start), p = b(c[r].end); var h, f, j; if (p.obj || t.obj) {
                    if (r == "clip") { l = 1 } h = (r == "top" || r == "left" || (j = r == "width") || (j = r == "height") ? "offset" + NF.u.string.capitalize(r) : 0);
                    if (!h) { if (r.match(/left|right/i)) { h = "offsetWidth" } if (r.match(/top|bottom/i)) { h = "offsetHeight" } if (h) { l = 1 } }
                } var q = ""; for (var k = 0; k < t.val.length; k++) { if (l) { if (k == 0 || k == 2) { h = "offsetHeight" } if (k == 1 || k == 3) { h = "offsetWidth" } } if (k > 0 && k < t.val.length) { q += " " } var o = a(t.val[k], t.obj, m, h, j, r); g.start[r].push(o.number); var n = a(p.val[k], p.obj, m, h, j, r); g.end[r].push(n.number); g.unit[r].push(o.unit); o.color ? g.dist[r].push(0) : g.dist[r].push(n.number - o.number); q += o.number + o.unit } p[r] = g.wrap[r].b + q + g.wrap[r].a
            } return (d.addElement(m, g, this))
        }
    }; function b(f) { return (typeof f == "object" ? { val: (f.value + "").split(" "), obj: f} : { val: (f + "").split(" ") }) } function a(i, j, p, f, m, k) {
        if (j) { var q = j["adjust_" + f]; if (typeof q != "number") { q = 0 } var r = (m && (f == "offsetWidth" || f == "offsetHeight") ? p[f] - NF.u.c.gI(p)[f] : 0); var h, o = j.refNode; if (o.isStyleAnim) { h = o.getOriginalValue(p, k) + q } else { if (p = e(p, o)) { h = p[f] - r + q } } i = parseInt(h * (parseInt(i) / 100)) + "px" } var l = (i + "").match(/#/); var g = (l) ? i : parseFloat(i + "");
        return { unit: (i + "").substring((g + "").length), number: g, color: l}
    }
    function e(j, f) { if (!f.NFisArray) { f = [f] } var h = j; for (var g = 0; g < f.length; g++) { if (h) { (f[g] == "self") ? h = j : h = f[g](h) } } if (h) { return h } } this.reset = function (k, h) {
        var f, j = k.style; if (f = d.getAnimVals(k)) {
            if (h) { for (var g in f.orig) { if (NF.util.browser.ie && !f.orig[g] && g == "clip") { j.cssText = j.cssText.replace(/[CLIP:|clip:](.*?);/, "") } else { j[g] = f.orig[g] } } }
            for (var g in f.origD) { j[g] = f.origD[g] } d.removeElementObject(k); return true
        } 
    };
    this.render = function (q, u) {
        var h = (d.getAnimVals(q) || (this.init(q)).A), t = q.style; for (var n in h.start) {
            var y = h.wrap[n].b; for (var m = 0; m < h.start[n].length; m++) {
                if (m > 0 && m < h.start[n].length) { y += " " } var w = h.start[n][m], s = h.end[n][m]; if ((w + "").indexOf("#") == 0) {
                    y += "#"; w = w.substring(1); s = s.substring(1); var r = w.length < 4 ? 1 : 2;
                    for (var l = 1; l < 4; l++) { var o = w.substring(l * r - r, l * r); var g = s.substring(l * r - r, l * r); var f = parseInt(r == 1 ? o + o : o, 16); var p = parseInt(r == 1 ? g + g : g, 16); var x = (parseInt(u * (p - f)) + f).toString(16); y += (x.length == 1) ? "0" + x : x }
                }
                else { y += ((u * h.dist[n][m] + w) * h.vMult[n]) + h.unit[n][m] } 
            } t[h.altName[n] || n] = y + h.wrap[n].a
        } 
    }
};
