var isDOM = document . getElementById?1:0, isIE = document . all?1:0, isNS4 = navigator . appName == 'Netscape' && !isDOM?1:0, isOp = self . opera?1:0, isDyn = isDOM || isIE || isNS4;
function getRef(i, p)
{
    p = !p?document:p . navigator?p . document:p;
    return isIE?p . all[i]:isDOM?(p . getElementById?p:p . ownerDocument) . getElementById(i):isNS4?p . layers[i]:null} ;
function getSty(i, p)
{
    var r = getRef(i, p);
    return r?isNS4?r:r . style:null} ;
if (!self . LayerObj)var LayerObj = new Function('i', 'p', 'this.ref=getRef(i,p);this.sty=getSty(i,p);return this');
function getLyr(i, p)
{
    return new LayerObj(i, p)} ;
function LyrFn(n, f)
{
    LayerObj . prototype[n] = new Function('var a=arguments,p=a[0],px=isNS4||isOp?0:"px";with(this){' + f + '}')} ;
LyrFn('x', 'if(!isNaN(p))sty.left=p+px;else return parseInt(sty.left)');
LyrFn('y', 'if(!isNaN(p))sty.top=p+px;else return parseInt(sty.top)');
var aeOL = [];
function addEvent(o, n, f, l)
{
    var a = 'addEventListener', h = 'on' + n, b = '', s = '';
    if (o[a] && !l)return o[a](n, f, false);
    o . _c |= 0;
    if (o[h]) {
        b = '_f' + o . _c++;
        o[b] = o[h]} 
    s = '_f' + o . _c++;
    o[s] = f;
    o[h] = function(e)
    {
        e = e || window . event;
        var r = true;
        if (b)r = o[b](e) != false && r;
        r = o[s](e) != false && r;
        return r} ;
    aeOL[aeOL . length] = {
        o:o, h:h} 
} ;
addEvent(window, 'unload', function()
    {
        for(var i = 0;i < aeOL . length;i++)with(aeOL[i]) {
            o[h] = null;for(var c = 0;o['_f' + c];c++)o['_f' + c] = null} 
    } 
    );
function FSMenu(myName, nested, cssProp, cssVis, cssHid)
{
    this . myName = myName;
    this . nested = nested;
    this . cssProp = cssProp;
    this . cssVis = cssVis;
    this . cssHid = cssHid;
    this . cssLitClass = '';
    this . menus = {
        root:new FSMenuNode('root', true, this)} ;
    this . menuToShow = [];
    this . mtsTimer = null;
    this . showDelay = 0;
    this . switchDelay = 125;
    this . hideDelay = 500;
    this . showOnClick = 0;
    this . animations = [];
    this . animSpeed = 100;
    if (isIE && !isOp)addEvent(window, 'unload', new Function(myName + '=null'))} ;
FSMenu . prototype . show = function(mN)
{
    with(this) {
        menuToShow . length = arguments . length;
        for(var i = 0;i < arguments . length;i++)menuToShow[i] = arguments[i];
        clearTimeout(mtsTimer);
        if (!nested)mtsTimer = setTimeout(myName + '.menus.root.over()', 10)} 
    } ;
FSMenu . prototype . hide = function(mN)
{
    with(this) {
        clearTimeout(mtsTimer);
        if (menus[mN])menus[mN] . out()} 
    } ;
function FSMenuNode(id, isRoot, obj)
{
    this . id = id;
    this . isRoot = isRoot;
    this . obj = obj;
    this . lyr = this . child = this . par = this . timer = this . visible = null;
    this . args = [];
    var node = this;
    this . over = function(evt)
    {
        with(node)with(obj) {
            if (isNS4 && evt && lyr . ref)lyr . ref . routeEvent(evt);
            clearTimeout(timer);
            clearTimeout(mtsTimer);
            if (!isRoot && !visible)node . show();
            if (menuToShow . length) {
                var a = menuToShow, m = a[0];
                if (!menus[m] || !menus[m] . lyr . ref)menus[m] = new FSMenuNode(m, false, obj);
                var c = menus[m];
                if (c == node) {
                    menuToShow . length = 0;
                    return} 
                clearTimeout(c . timer);
                if (c != child && c . lyr . ref) {
                    c . args . length = a . length;
                    for(var i = 0;i < a . length;i++)c . args[i] = a[i];
                    var delay = child?switchDelay:showDelay;
                    c . timer = setTimeout('with(' + myName + '){menus["' + c . id + '"].par=menus["' + node . id + '"];menus["' + c . id + '"].show()}', delay?delay:1)} 
                menuToShow . length = 0} 
            if (!nested && par)par . over()} 
        } ;
    this . out = function(evt)
    {
        with(node)with(obj) {
            if (isNS4 && evt && lyr && lyr . ref)lyr . ref . routeEvent(evt);
            clearTimeout(timer);
            if (!isRoot) {
                timer = setTimeout(myName + '.menus["' + id + '"].hide()', hideDelay);
                if (!nested && par)par . out()} 
            } 
        } ;
    if (this . id != 'root')with(this)with(lyr = getLyr(id))if (ref) {
            if (isNS4)ref . captureEvents(Event . MOUSEOVER | Event . MOUSEOUT);
            addEvent(ref, 'mouseover', this . over);
            addEvent(ref, 'mouseout', this . out);
            if (obj . nested) {
                addEvent(ref, 'focus', this . over);
                addEvent(ref, 'click', this . over);
                addEvent(ref, 'blur', this . out)} 
        } 
    } ;
    FSMenuNode . prototype . show = function()
    {
        with(this)with(obj) {
            if (!lyr || !lyr . ref)return;
            if (par) {
                if (par . child && par . child != this)par . child . hide();
                par . child = this} 
            var offR = args[1], offX = args[2], offY = args[3], lX = 0, lY = 0, doX = '' + offX != 'undefined', doY = '' + offY != 'undefined';
            if (self . page && offR && (doX || doY)) {
                with(page . elmPos(offR, par . lyr?par . lyr . ref:0))lX = x, lY = y;
                if (doX)lyr . x(lX + eval(offX));
                if (doY)lyr . y(lY + eval(offY))} 
                if (offR)lightParent(offR, 1);
                visible = 1;
                if (obj . onshow)obj . onshow(id);
                setVis(1)} 
        } ;
        FSMenuNode . prototype . hide = function()
        {
            with(this)with(obj) {
                if (!lyr || !lyr . ref)return;
                if (isNS4 && self . isMouseIn && isMouseIn(lyr . ref))return show();
                if (args[1])lightParent(args[1], 0);
                if (child)child . hide();
                if (par && par . child == this)par . child = null;
                if (lyr) {
                    visible = 0;
                    if (obj . onhide)obj . onhide(id);
                    setVis(0)} 
            } 
        } ;
        FSMenuNode . prototype . lightParent = function(elm, lit)
        {
            with(this)with(obj) {
                if (!cssLitClass || isNS4)return;
                if (lit)elm . className += (elm . className?' ':'') + cssLitClass;
                else elm . className = elm . className . replace(new RegExp('(\\s*' + cssLitClass + ')+$'), '')} 
            } ;
        FSMenuNode . prototype . setVis = function(sh)
        {
            with(this)with(obj) {
                lyr . timer |= 0;
                lyr . counter |= 0;
                with(lyr) {
                    clearTimeout(timer);
                    if (sh && !counter)sty[cssProp] = cssVis;
                    if (isDOM && animSpeed < 100)for(var a = 0;a < animations . length;a++)animations[a](ref, counter);
                    counter += animSpeed * (sh?1:-1);
                    if (counter > 100) {
                        counter = 100} else if (counter <= 0) {
                        counter = 0;
                        sty[cssProp] = cssHid} else if (isDOM)timer = setTimeout(myName + '.menus["' + id + '"].setVis(' + sh + ')', 50)} 
                } 
            } ;
        FSMenu . prototype . activateMenu = function(id, subInd)
        {
            with(this) {
                if (!isDOM || !document . documentElement)return;
                var a, ul, li, parUL, mRoot = getRef(id), nodes, count = 1;
                if (isIE) {
                    var aNodes = mRoot . getElementsByTagName('a');
                    for(var i = 0;i < aNodes . length;i++) {
                        addEvent(aNodes[i], 'focus', new Function('e', 'var node=this.parentNode;while(node){if(node.onfocus)setTimeout(node.onfocus,1,e);node=node.parentNode}'));
                        addEvent(aNodes[i], 'blur', new Function('e', 'var node=this.parentNode;while(node){if(node.onblur)node.onblur(e);node=node.parentNode}'))} 
                } 
                var lists = mRoot . getElementsByTagName('ul');
                for(var i = 0;i < lists . length;i++)
                {
                    li = ul = lists[i];
                    while (li) {
                        if (li . nodeName . toLowerCase() == 'li')break;
                        li = li . parentNode} 
                    if (!li)continue;
                    parUL = li;
                    while (parUL) {
                        if (parUL . nodeName . toLowerCase() == 'ul')break;
                        parUL = parUL . parentNode} 
                    a = null;
                    for(var j = 0;j < li . childNodes . length;j++)if (li . childNodes[j] . nodeName . toLowerCase() == 'a')a = li . childNodes[j];
                    if (!a)continue;
                    var menuID = myName + '-id-' + count++;
                    if (ul . id)menuID = ul . id;
                    else ul . setAttribute('id', menuID);
                    var sOC = (showOnClick == 1 && li . parentNode == mRoot) || (showOnClick == 2);
                    var eShow = new Function('with(' + myName + '){var m=menus["' + menuID + '"],pM=menus["' + parUL . id + '"];' + (sOC?'if((pM&&pM.child)||(m&&m.visible))':'') + ' show("' + menuID + '",this)}');
                    var eHide = new Function(myName + '.hide("' + menuID + '")');
                    addEvent(a, 'mouseover', eShow);
                    addEvent(a, 'focus', eShow);
                    addEvent(a, 'mouseout', eHide);
                    addEvent(a, 'blur', eHide);
                    if (sOC)addEvent(a, 'click', new Function('e', myName + '.show("' + menuID + '",this);if(e.cancelable&&e.preventDefault)e.preventDefault();e.returnValue=false;return false'));
                    if (subInd)a . insertBefore(subInd . cloneNode(true), a . firstChild)} 
                    menus[id] = new FSMenuNode(id, true, this)} 
            } ;
        if (!self . page)var page =
        {
            win:self, minW:0, minH:0, MS:isIE && !isOp} ;
        page . elmPos = function(e, p)
        {
            var x = 0, y = 0, w = p?p:this . win;
            e = e?(e . substr?(isNS4?w . document . anchors[e]:getRef(e, w)):e):p;
            if (isNS4) {
                if (e && (e != p)) {
                    x = e . x;
                    y = e . y} ;
                if (p) {
                    x += p . pageX;
                    y += p . pageY} 
            } 
            if (e && this . MS && navigator . platform . indexOf('Mac') > -1 && e . tagName == 'A') {
                e . onfocus = new Function('with(event){self.tmpX=clientX-offsetX;self.tmpY=clientY-offsetY}');
                e . focus();
                x = tmpX;
                y = tmpY;
                e . blur()} else while (e)
            {
                x += e . offsetLeft;
                y += e . offsetTop;
                e = e . offsetParent} 
            return {
                x:x, y:y} 
        } ;
        if (isNS4) {
            var fsmMouseX, fsmMouseY, fsmOR = self . onresize, nsWinW = innerWidth, nsWinH = innerHeight;
            document . fsmMM = document . onmousemove;
            self . onresize = function()
            {
                if (fsmOR)fsmOR();
                if (nsWinW != innerWidth || nsWinH != innerHeight)location . reload()} ;
            document . captureEvents(Event . MOUSEMOVE);
            document . onmousemove = function(e)
            {
                fsmMouseX = e . pageX;
                fsmMouseY = e . pageY;
                return document . fsmMM?document . fsmMM(e):document . routeEvent(e)} ;
            function isMouseIn(sty)
            {
                with(sty)return((fsmMouseX > left) && (fsmMouseX < left + clip . width) && (fsmMouseY > top) && (fsmMouseY < top + clip . height))} 
        } 