





















 B  = {
    C:  true,
    D:  false,
    F:  400,
    G:  false,

    H:true,

    I:["IE",  "Gecko",  "Opera"],
    isOpera:(window.opera  ==  true),
    isIE:(navigator.userAgent.indexOf("MSIE") != -1) && !window.opera,
    isGecko:(navigator.userAgent.indexOf("Gecko") != -1),
    isSafari:(navigator.userAgent.indexOf("Safari") != -1),

    J:  function(K,  L,  M)
   {
      return   setTimeout(B.N(K,  M),  L);
   },
    O:  function(K,  P,  M)
   {
      return   setInterval(B.N(K,  M),  P);
   },
    Q:  /^\s+|\s+$|(\s)\s+/g,
    R:  function(s)
   {
      return   s.replace(B.Q,  "$1");
   },
    S:  function(s,  T,  U)
   {
      var   V  =  s.indexOf(T);
      while  (V  != -1)
     {
        var   W  =  s.indexOf(U,  V);
        s  =  s.substring(0,  V) +  s.substring(W  +  U.length);
        V  =  s.indexOf(T);
     }
      return   s;
   },

    N:  function(K,  M)
   {
      return   function(){
        if  (!M)
          X.Y("threadStart",  null,  null);

        K();
        if  (!M)
          X.Y("threadEnd",  null,  null);
     };
   },
    Z:  function(AB,  BB,  CB,  DB)
   {
      var   EB  =  null;
      do
     {
        EB  =  FB.match(AB,  BB  +  "-\\w+");
        AB  =  AB.parentNode;
     }
      while  (!DB  &&  AB.nodeType  ==  1  && !EB);

      return   EB[0].substring(BB.length+1) ||  CB;
   },
    GB:  function(AB,  HB,  IB,  DB)
   {
     var   EB  =  null;
      do
     {
        EB  =  FB.match(AB,  HB  +  "-\\d+");
        AB  =  AB.parentNode;
     }
      while  (!DB  &&  AB.nodeType  ==  1  && !EB);

      return  (EB?parseInt(EB[0].substring(HB.length+1)):IB);
   },
    JB:  function(AB,  KB,  LB)
   {
      var   MB  =  AB.NB;
      if  (!MB)
        MB  =  AB.NB  = {};

      MB[KB] =  LB;
   },
    OB:  function(AB,  KB)
   {
      var   MB  =  AB.NB;
      if  (!MB)
        return   null;
      else
        return   MB[KB];
   },
    PB:  function(QB,  RB)
   {
      for  (var   i=0;  i<QB.length;  i++)
        if  (QB[i] !=  RB[i])
          return   false;

      return   true;
   }
};

 B.platform  = (B.isOpera?"opera":(B.isIE?"ie":(B.isGecko?"gecko":"unsupported")));

 B["setTimeoutHandler"] =  B.J;
 B["setIntervalHandler"] =  B.O;
 B["SUPPRESSEVENTS"] =  B.C;
 B["FIREEVENTS"] =  B.D;
 B["MORPHDURATION"] =  B.F;
 window["Q42Utils"] =  B;





 Function.prototype.SB  =  function(TB)
{

    if  (!window.UB)
   {
      window.UB  = [];
      window.VB  = [];
   }


    var   WB  =  this;

    var   XB  =  TB.YB;
    if  (!XB)
      UB[XB  =  TB.YB  =  UB.length] =  TB;


    var   ZB  =  WB.AC;
    if  (!ZB)
      VB[ZB  =  WB.AC  =  VB.length] =  WB;


    if  (!TB.BC)
      TB.BC  = [];


    var   CC  =  TB.BC[ZB];
    if  (CC)
      return   CC;


    TB  =  null;
    WB  =  null;


    return   UB[XB].BC[ZB] =  function()
   {
      return   VB[ZB].apply(UB[XB],  arguments);
   };
};

 if  (!Array.prototype.push)
{
    Array.prototype.push  =  function()
   {
      for  (var   i=0;  i<arguments.length;  i++)
        this[this.length] =  arguments[i];
   };
}

 if  (!Function.prototype.apply)
{
    Function.prototype.apply  =  function(TB,  DC)
   {
      TB.EC  =  this;
      var   FC  =  TB.EC(DC[0],  DC[1],  DC[2],  DC[3],  DC[4]);
      TB.EC  =  null;
      return   FC;
   }
}
 GC  = {
    HC:{














      "borderWidth":"borderpx",
      "borderTopWidth":"borderpx",
      "borderRightWidth":"borderpx",
      "borderBottomWidth":"borderpx",
      "borderLeftWidth":"borderpx",




      "clip":"cliprect",
      "width":"dimpx",
      "height":"dimpx",
      "scrollTop":"scrollpx",
      "scrollLeft":"scrollpx",
      "color":"rgb",
      "backgroundColor":"rgb",
      "borderColor":"rgb",
      "borderTopColor":"rgb",
      "borderRightColor":"rgb",
      "borderBottomColor":"rgb",
      "borderLeftColor":"rgb",
      "opacity":"opacity",
      "zoom":"%",
      "matrix":"matrix",
      "display":"string",
      "overflow":"string",
      "visibility":"string"
   },
    IC:{
      "width":["offsetWidth",  "paddingLeft",  "paddingRight",  "borderLeftWidth",  "borderRightWidth"],
      "height":["offsetHeight",  "paddingTop",  "paddingBottom",  "borderTopWidth",  "borderBottomWidth"]
   },

    JC:  function(KB)
   {
      return   GC.HC[KB] ||  "csspx";
   },

    KC:  function(AB,  KB)
   {
      var   LC  =  GC.JC(KB);
      if  (!B.isIE)
     {
        var   MC  =  GC.NC(KB);
        var   OC  =  document.defaultView.getComputedStyle(AB,  "");
        if (!OC)
          return null;
        switch  (LC)
       {
          case   "dimpx":
            if  (B.isOpera)
           {
              var   LB  =  AB[PC[0]];
              for  (var   i=1;  i<PC.length;  i++)
                LB  -=  parseInt(AB.currentStyle[PC[i]]);
              return   LB;
           }
          case   "borderpx":
            if  (OC.getPropertyValue(MC.replace(/width/,  "style")) ==  "none")
              return   0;
          case   "csspx":
          case   "%":
            var   LB  =  OC.getPropertyValue(MC);
            var   QC  =  parseInt(LB);
            if  (isNaN(QC))
              switch  (LB)
             {
                case   "auto":  return   0;
             }
            return   QC;
          case   "opacity":
            return   OC.getPropertyValue(MC);
          case   "scrollpx":
            return   AB[KB];
            break;
          case   "cliprect":
            return  [
              parseInt(OC.getPropertyValue('clip-top')),
              parseInt(OC.getPropertyValue('clip-right')),
              parseInt(OC.getPropertyValue('clip-bottom')),
              parseInt(OC.getPropertyValue('clip-left'))
           ];
          case   "matrix":
            return  [1,  1,  0,  0,  1,  0,  0,  1];
          case   "rgb":
            if  (
              MC.indexOf("border") != -1
             &&  OC.getPropertyValue(MC.replace(/color/,  "style")) ==  "none"
           )
              return   null;
            return   GC.RC(OC.getPropertyValue(MC));
          case   "string":
          var val = OC.getPropertyValue(MC);
          if (val == null)
            alert(MC + "\n" + AB.id + "\n" + AB.className);
            return   OC.getPropertyValue(MC);
          default:
            return   null;
       }
     }
      else
     {
        switch  (LC)
       {
          case   "dimpx":
            var   LB  =  AB.currentStyle[KB];
            var   QC  =  parseInt(LB);
            if  (isNaN(QC) ||  LB.indexOf("px") == -1)
           {
              var   PC  =  GC.IC[KB];
              QC  =  AB[PC[0]];
              for  (var   i=1;  i<PC.length;  i++)
                QC  -=  GC.KC(AB,  PC[i]);
           }
            return   QC;
          case   "scrollpx":
            return   parseInt(AB[KB]);
            break;
          case   "cliprect":
            return  [
              parseInt(AB.currentStyle.clipTop),
              parseInt(AB.currentStyle.clipRight),
              parseInt(AB.currentStyle.clipBottom),
              parseInt(AB.currentStyle.clipLeft)
           ];
          case   "matrix":
            try
           {
              var   SC  =  AB.filters.item("DXImageTransform.Microsoft.Matrix");
              with  (SC)
             {
                var   TC  =  Math.sqrt(UC  *  UC  +  VC  *  VC);
                var   WC  =  Math.sqrt(XC  *  XC  +  YC  *  YC);
                var   ZC   =  Math.acos(UC  /  TC);
                var   AD   =  Math.acos(YC  /  WC) -  ZC;

                return  [TC,  WC,  ZC,  AD,  UC,  XC,  VC,  YC];
             }
           }
            catch(BD)
           {
              return  [1,  1,  0,  0,  1,  0,  0,  1];
           }
          case   "opacity":
            try
           {
              var   CD  =  AB.filters.item("DXImageTransform.Microsoft.Alpha");
              return   CD.opacity;
           }
            catch(BD)
           {
              return   100;
           }
            break;
          case   "rgb":
            if  (
              KB.indexOf("border") != -1
             &&  AB.currentStyle[KB.replace(/Color/,  "Style")] ==  "none"
           )
              return   null;
            return   GC.RC(AB.currentStyle[KB]);
          case   "string":
            return   AB.currentStyle[KB];
          case   "borderpx":
            if  (AB.currentStyle[KB.replace(/Width/,  "Style")] ==  "none")
              return   0;
          case   "csspx":
          case   "%":

            var   LB  =  AB.currentStyle[KB];
//alert(AB.outerHTML + " = " + LB);
            if  (LB.indexOf("%") != -1)
           {
              var   DD  =  parseInt(LB) /  100;
              switch  (KB)
             {
                case   "top":
                case   "bottom":
                  LB  =  DD  *  GC.KC(AB.parentNode,  "height");
                  break;
                case   "left":
                case   "right":
                  LB  =  DD  *  GC.KC(AB.parentNode,  "width");
                  break;
             }
           }

            var   QC  =  parseInt(LB);

            if  (isNaN(QC))
              switch  (LB)
             {
                case   "auto":  return   0;
                case   "thin":  return   2;
                case   "medium":  return   4;
                case   "thick":return   6;
                default:  return   parseInt(LB);
             }

            return   QC;
       }
     }
   },

    ED:  function(AB,  KB,  LB)
   {
      var   LC  =  GC.JC(KB);
      switch  (LC)
     {
        case   "rgb":
          AB.style[KB] =  "rgb("  +  LB.join(",") +  ")";
          break;
        case   "matrix":
          if  (B.isIE)
         {
            var   SC  =  AB.filters.item("DXImageTransform.Microsoft.Matrix");
            SC.UC  =  LB[4];
            SC.XC  =  LB[5];
            SC.VC  =  LB[6];
            SC.YC  =  LB[7];
         }
          break;
        case   "string":
          AB.style[KB] =  LB;
          break;
        case   "dimpx":
        case   "%":
        case   "borderpx":
        case   "csspx":
          if (KB=="width" || KB=="height") LB=Math.max(LB,0); // added by Lukas; check by Lon please! @@todo
          AB.style[KB] =  LB  +  "px";
          break;
        case   "scrollpx":
          AB[KB] =  LB  +  "px";
          break;
     }
   },

    FD:  function(AB,  KB)
   {
      if  (B.isIE)
        AB.style.removeAttribute(KB);
      else
        AB.style.removeProperty(KB);
   },

    NC:  function(KB)
   {
      return   KB.replace(/([A-Z])/g,  function(HD){  return   '-'  +  HD.toLowerCase(); });
   },
    ID: {
      "aqua":"#00FFFF","azure":"#F0FFFF","beige":"#F5F5DC",
      "black":"#000000","blue":"#0000FF","brown":"#A52A2A",
      "cyan":"#00FFFF","darkblue":"#00008B","darkcyan":"#008B8B",
      "darkgray":"#A9A9A9","darkgreen":"#006400","darkred":"#8B0000",
      "fuchsia":"#FF00FF","gold":"#FFD700","gray":"#808080",
      "green":"#008000","indigo":"#4B0082","lightblue":"#ADD8E6",
      "lightcyan":"#E0FFFF","lightgreen":"#90EE90","lightgrey":"#D3D3D3",
      "lightyellow":"#FFFFE0","lime":"#00FF00","magenta":"#FF00FF",
      "maroon":"#800000","navy":"#000080","orange":"#FFA500",
      "pink":"#FFC0CB","purple":"#800080","red":"#FF0000",
      "silver":"#C0C0C0","steelblue":"#4682B4","turquoise":"#40E0D0",
      "violet":"#EE82EE","white":"#FFFFFF","yellow":"#FFFF00"
    },

    RC:  function(JD)
   {
      JD  =  GC.ID[JD] ||  JD;

      if  (typeof(JD) ==  'object')
        return   JD;
      if  (JD.indexOf('#') ==  0)
     {
        if  (JD.length  ==  7)
          return  [
            parseInt(JD.substring(1,  3),  16),
            parseInt(JD.substring(3,  5),  16),
            parseInt(JD.substring(5,  7),  16)
         ];
        else
          return  [
            17*parseInt(JD.substring(1,  2),  16),
            17*parseInt(JD.substring(2,  3),  16),
            17*parseInt(JD.substring(3,  4),  16)
         ];
     }
      if  (JD.indexOf('rgb(') ==  0)
     {
        var   KD  =  JD.substring(4,  JD.length  -  1).split(',');
        return  [
          parseInt(KD[0]),
          parseInt(KD[1]),
          parseInt(KD[2])
       ];
     }

      return  [255,  255,  255];
   }
};

 GC["getComputedStyleProperty"] =  GC.KC;
 GC["removeStyleProperty"] =  GC.FD;
 GC["translateColorToArray"] =  GC.RC;

 window["StyleUtils"] =  GC;
 LD  = {
    MD:  1,
    ND:{},
    OD:  function(AB)
   {
      if  (!AB.id)
     {
        var   id  =  'qid_'  +  LD.MD++;
        AB.id  =  id;
        LD.ND[id] =  true;
     }

      return   AB.id;
   },

    PD:  function(AB,  s,  M)
   {
      if  (M  !=  true)
        X.Y("beforeHtmlChanged",  AB, {  QD:s  });
      AB.innerHTML  =  s;
      if  (M  !=  true)
        X.Y("afterHtmlChanged",  AB, {  QD:s  });
      return   true;
   },

    RD:  function(AB,  M)
   {
      if  (M  !=  true)
     {
        var   SD  =  AB.parentNode;
        X.Y("beforeHtmlChanged",  SD);
     }
      AB.parentNode.removeChild(AB);
      if  (M  !=  true)
        X.Y("afterHtmlChanged",  SD);
      return   true;
   },

    TD:  function(AB)
   {
      var   UD  = [];

      if  (AB.id  && !LD.ND[AB.id])
        UD[0] =  AB;

      var   VD  =  AB.getElementsByTagName("*");
      var   WD  =  VD.length;
      for  (var   i=0;  i<WD;  i++)
     {
        var   AB  =  VD[i];
        if  (AB.id  && !LD.ND[AB.id])
          UD[UD.length] =  AB;
     }

      return   UD;
   },
    XD:  function(AB,  YD)
   {
      var   ZD  = [];

      if  (FB.contains(AB,  YD))
        ZD[0] =  AB;

      var   VD  =  AB.getElementsByTagName("*");
      var   WD  =  VD.length;
      for  (var   i=0;  i<WD;  i++)
        if  (FB.contains(VD[i],  YD))
          ZD[ZD.length] =  VD[i];

      return   ZD;
   },
    AE:  function(AB,  YD)
   {
      var   ZD  = [];

      while  (AB.nodeType  ==  1)
     {
        if  (FB.contains(AB,  YD))
          ZD[ZD.length] =  AB;

        AB  =  AB.parentNode;
     }

      return  (ZD.length>0)?ZD:null;
   },
    BE:  function(AB,  CE)
   {
      while  (AB.nodeType  ==  1)
     {
        if  (AB.nodeName.toLowerCase() ==  CE)
          return   AB;

        AB  =  AB.parentNode;
     }

      return   null;
   },
    DE:  function(AB)
   {
      var   EE  =  AB.target;
      if  (!EE)
        while  (AB.nodeType  ==  1)
       {
          var   YD  =  FB.match(AB,  "target-\\w+");
          if  (YD)
            return   YD[0].substring(7);
          AB  =  AB.parentNode;
       }
      return   EE;
   },
    FE:  function(GE,  HE)
   {
      while  (HE)
        if  (HE  ==  GE)
          return   true;
        else
          HE  =  HE.parentNode;
      return   false;
   }
};

 window["HtmlDomUtils"] =  LD;
 LD["acquireIdForHtmlElement"] =  LD.OD;
 LD["setInnerHtml"] =  LD.PD;
 LD["removeElement"] =  LD.RD;




























































 FB  = {
    IE:{},
    JE:{},
    KE:  function(YD,  LE,  P)
   {
      if  (FB.JE[YD])
        alert("Warning in ClassNameAbstraction.addClassNameSequence: a classNameSequence has already been defined for '"  +  YD  +  "'.");

      if  (typeof(P) ==  "undefined")
        P  =  1.1*B.F;

      FB.JE[YD] = {
        LE:LE,
        ME:  "("  +  LE.join("-"  +  YD) +  "-"  +  YD  +  "|"  +  YD  +  ")",
        P:P
     };
   },
    contains:  function(AB,  YD)
   {
      return   FB.NE(AB.className,  YD);
   },
    NE:  function(s,  YD)
   {
      var   OE  =  FB.PE(YD);
      return  (s  &&  s.match(OE) !=  null);
   },
    match:  function(AB,  YD)
   {
      var   OE  =  FB.PE(YD);
      return   AB.className.match(OE);
   },
    add:  function(AB,  QE,  M)
   {
      if  (!FB.contains(AB,  QE))
     {
        if  (FB.JE[QE])
       {
          FB.RE(AB,  null,  QE,  0,  M);
          return;
       }

        var   SE  =  AB.className;
        var   TE  =  SE  +  " "  +  QE;
        FB.UE(AB,  SE,  TE,  M);
     }
   },
    replace:  function(AB,  VE,  QE,  M,  WE)
   {
      if  (FB.JE[VE])
        VE  =  FB.JE[VE].ME;

      if  (!WE  &&  FB.JE[QE])
     {
        FB.RE(AB,  VE,  QE,  0,  M);
        return;
     }

      var   SE  =  AB.className;
      var   TE  =  FB.XE(SE,  VE,  QE);

      FB.UE(AB,  SE,  TE,  M);
   },
    XE:  function(s,  YE,  ZE)
   {
      var   OE  =  FB.PE(YE);

      var   AF  =  s.replace(OE,  ZE);
      var   OE  =  FB.PE(ZE);
      if  (!AF.match(OE))
        AF  +=  " "  +  ZE;

      return   AF;
   },
    BF:  function(AB,  CF,  DF,  M,  WE)
   {
      if  (FB.contains(AB,  DF))
     {
        var   EE  =  CF;
        CF  =  DF;
        DF  =  EE;
     }
      FB.replace(AB,  CF,  DF,  M,  WE);
   },
    remove:  function(AB,  VE,  M)
   {
      if  (FB.JE[VE])
        VE  =  FB.JE[VE].ME;

      var   OE  =  FB.PE(VE);

      var   SE  =  AB.className;
      var   TE  =  SE.replace(OE,  "");
      FB.UE(AB,  SE,  TE,  M);
   },
    EF:  function(AB,  TE,  M)
   {
      FB.UE(AB,  AB.className,  TE,  M);

      TE  =  B.R(TE);
      var   FF  =  TE.split(" ");
      for  (var   i=0;  i<FF.length;  i++)
     {
        var   YD  =  FF[i];
        if  (FB.JE[YD])
       {
          FB.RE(AB,  YD,  YD,  0,  M);
          return;
       }
     }
   },
    PE:  function(YD)
   {
      return   FB.IE[YD] || (FB.IE[YD] =  new   RegExp("\\b"  +  YD  +  "\\b",  "g"));
   },
    UE:  function(AB,  SE,  TE,  M)
   {
      SE  =  B.R(SE);
      TE  =  B.R(TE);
      if  (!M)
        X.Y("beforeChangeClassName",  AB, {  GF:  SE,  QD:TE  });
      AB.className  =  TE;
      if  (!M)
        X.Y("afterChangeClassName",  AB, {  GF:  SE,  QD:TE  });

      if  (B.isIE)
     {




        if  (AB.getAttribute("tabIndex",  2) ==  0)
       {
          AB.tabIndex  = -1;
          setTimeout(function(){  AB.tabIndex  =  0; },  0);
       }
     }
   },
    RE:  function(AB,  VE,  YD,  HF,  M)
   {
      var   data  =  FB.JE[YD];
      var   LE  =  data.LE;

      if  (FB.contains(AB,  VE))
     {
        var   QE  =  LE[HF] +  "-"  +  YD;

        B.JB(AB,  "morphduration",  data.P);

        FB.replace(AB,  VE,  QE,  M,  true);

        if  (HF  <  LE.length-1)
          B.J(function(){  FB.RE(AB,  QE,  YD,  HF+1,  M); },  data.P);
        else
          B.J(function(){  if  (FB.contains(AB,  QE))  FB.replace(AB,  QE,  YD,  M,  true); },  data.P);
     }
   }
};

 FB["addClassNameSequence"] =  FB.KE;
 FB["contains"] =  FB.contains;
 FB["add"] =  FB.add;
 FB["replace"] =  FB.replace;
 FB["remove"] =  FB.remove;
 FB["set"] =  FB.EF;
 window["ClassNameAbstraction"] =  FB;























 IF  = {
    JF:  null,
    KF: {},
    LF:  function(TB,  MF,  K)
   {
      var   NF  =  MF;

      if  (B.isGecko  ||  B.isOpera)
        switch  (NF)
       {
          case   "mouseenter":
            NF  =  "mouseover";
            break;
          case   "mouseleave":
            NF  =  "mouseout";
            break;
       }

      var   OF  =  IF.PF(TB,  K,  MF);

      if  (TB.addEventListener)
        TB.addEventListener(NF,  OF,  false);
      else   if  (TB.attachEvent)
        TB.attachEvent("on"  +  NF,  OF);
   },

    PF:  function(TB,  K,  MF)
   {
      return   function(QF)
     {
        QF  =  IF.RF(QF);

        if  (QF.type  ==  "click")
       {
          if  (B.isIE)
         {


            if  (IF.JF)
           {
              var   SF  =  IF.JF;
              IF.JF  =  null;
              if  (SF  ==  QF.srcElement.id  +  QF.x  +  QF.y)
             {
                var   TF  =  QF.srcElement.getAttribute("htmlFor");
                if  (TF  &&  document.getElementById(TF))
                  return;
             }
           }
            IF.JF  = (QF.srcElement.nodeName.toLowerCase()=="label"?QF.srcElement.htmlFor  +  QF.x  +  QF.y:null);
         }



          if  (B.isGecko  &&  QF.UF)
            return;
       }

        if  (!B.isIE)
       {

          switch  (MF)
         {
            case   "mouseenter":
              if  (this.VF)
                return;

              var   AB  =  QF.srcElement.parentNode;
              if  (AB  !=  this)
             {
                while  (AB  &&  AB  !=  this)
                  AB  =  AB.parentNode;
                if  (AB  ==  this)
                  return;
             }

              this.VF  =  true;

              break;
            case   "mouseleave":
              var   AB  =  QF.WF;
              while  (AB  &&  AB  !=  this)
                AB  =  AB.parentNode;
              if  (AB  ==  this)
                return;

              delete   this.VF;

              break;
         }
       }

        var   FC  =  false;






























        X.Y("threadStart",  QF);

        this.XF  =  K;
        var   FC  =  this.XF(QF);
        this.XF  =  null;


        X.Y("threadEnd",  QF);

        return   FC;
     }.SB(TB);
   },

    YF:  function()
   {
      this.preventDefault();
      this.stopPropagation();
   },
    ZF:  function()
   {
      this.returnValue  =  false;
   },
    AG:  function()
   {
      this.cancelBubble  =  true;
   },

    RF:  function(QF)
   {
      if  (B.isIE)
     {
        QF.preventDefault   =  IF.ZF;
        QF.stopPropagation  =  IF.AG;
     }
      else   if  (B.isGecko)
     {
        QF.srcElement  =  QF.target  ||  QF.currentTarget;
        if  (QF.srcElement  &&  QF.srcElement.nodeType  ==  3)
          QF.srcElement  =  QF.srcElement.parentNode;
     }

      QF.cancel  =  IF.YF;

      if  (QF.type  ==  "click"  ||  QF.type.indexOf("mouse") ==  0)
     {
        QF.BG   = (!QF.CG  &&  QF.button  ==  1) ||  QF.CG  ==  1;
        QF.UF  =  QF.button  ==  2;
     }

      return   QF;
   }

};

 IF["attach"] =  IF.LF;
 window["DOMEvents"] =  IF;
 X  = {
    DG: {},
    EG:  function(MF,  K)
   {
      var   FG  =  X.DG[MF] =  X.DG[MF] || [];

      FG[FG.length] =  K;
   },
    Y:  function(MF,  srcElement,  GG)
   {
      var   FG  =  X.DG[MF];

      if  (!FG)
        return   true;

      var   QF  =  GG  || {};
      QF.type  =  MF;
      QF.srcElement  =  srcElement;

      var   FC  =  true;
      for  (var   i=FG.length-1;  i>=0;  i--)
        FC  = (FG[i](QF) !=  false) &&  FC;

      return   FC;
   }
};

 X["listen"] =  X.EG;
 X["fire"]   =  X.Y;
 window["CustomEvents"] =  X;












 HG  = {
    IG:  function()
   {
      X.EG("afterChangeClassName",  HG.JG);
      X.EG("afterHtmlChanged",  HG.KG);
   },
    JG:  function(QF)
   {
      var   AB  =  QF.srcElement;

      if  (X.Y("beforeAction",  AB))
     {
        var   LG  =  QF.GF.split(" ");
        var   MG    =  QF.QD.split(" ");

        var   NG  = {};
        for  (var   i=0;  i<LG.length;  i++)
          NG[LG[i]] =  true;

        var   OG  = [];
        for  (var   i=0;  i<MG.length;  i++)
          if  (!NG[MG[i]])
            OG[OG.length] =  MG[i];

        HG.PG(AB,  OG);
     }
   },

    KG:  function(QF)
   {
      var   AB  =  QF.srcElement;

      if  (X.Y("beforeAction",  AB))
     {
        X.Y("onload",  AB);

        HG.PG(AB, ["load"]);
     }
   },
    PG:  function(QG,  RG)
   {
      var   SG  =  "on"  +  RG.join("|on");
      var   TG  =  QG.getElementsByTagName("label");
      for  (var   i=TG.length-1;  i>=0;  i--)
     {
        var   UG  =  TG[i];

        if  (FB.contains(UG,  SG))
          X.Y("labelExecuteRequest",  UG);
     }
   }
};

 HG.IG();
 Animator  =  _a  = {
    VG:{},
    animate:  function(WG,  XG)
   {
      if  (B.isOpera)
     {
        document.body.scrollTop  -=  1;
        document.body.scrollTop  +=  1;
     }










      var   YG  =  10;
      var   ZG  =  1  <<  YG;

      var   AH  =  7;
      var   BH  =  1  <<  AH;

      var   code  = [
        '  var tPhase = Math.min(1, (t - TSTART)/DURATION);\n',

        '  var f = ',  _a.CH[XG.profile],  ';\n',
        '\n'
     ];

      var   DH  = [];
      var   EH  = [];
      var   FH  = [];

      var   GH  =  WG.length;

      for  (var   i=0;  i<GH;  i++)
     {
        var   HH  =  WG[i];
        var   AB  =  HH.element;
        var   id  =  LD.OD(AB);
        var   IH  =  HH.targetState;

        for  (var   JH   in   IH)
       {
          var   KH  =  JH;
          if  (!B.isIE)
            KH  =  JH.replace(/([A-Z])/g,  function(HD){  return   '-'  +  HD.toLowerCase(); });

          var   LH  =  IH[JH];


          var   MH  =  HH.currentState?HH.currentState[JH]:GC.KC(AB,  JH);

          if  (JH  ==  'zoom')
         {

            MH  *=  100;
            LH  *=  10000;
         }


          switch  (GC.JC(JH))
         {
            case   'scrollpx':
                _a[id  +  'el'] = (AB  !=  document.body  ||  document.compatMode  ==  "BackCompat")?AB:document.documentElement;
              break;
            case   'matrix':
              if  (B.isIE)
                _a[id  +  'matrix'] =  AB.filters.item("DXImageTransform.Microsoft.Matrix");
              break;
            case   'opacity':
              if  (B.isIE)
             {
                _a[id  +  'opacity'] =  AB.filters.item("DXImageTransform.Microsoft.Alpha");
                break;
             }
              else
                MH  *=  100;

            default:
              _a[id  +  'elStyle'] =  AB.style;

              if  (XG.removeAfterwards)
                FH.push("_a[\"",  id,  "elStyle\"][\"", (document.documentElement.style.removeAttribute?'removeAttribute':'removeProperty'),  "\"](\""  +  KH  +  "\");\n");
         }


          if  (GC.JC(JH) ==  "rgb")
            LH  =  GC.RC(LH);

          if  (LH.constructor  ==  Array)
         {
            var   NH  = [];
            for  (var   OH=0;  OH<LH.length;  OH++)
              NH[OH] =  Math.floor(LH[OH] -  MH[OH]);
         }
          else   if  (!isNaN(LH))
         {
            var   NH  =  Math.floor(LH-MH);
         }


          switch  (GC.JC(JH))
         {
            case   'rgb':
              if  (B.isIE)
             {
                if  (JH  ==  "borderColor")
                  EH.push(
                    '_a["',  id,  'elStyle"].',  JH,  '=["rgb(",',
                    '(',  Math.floor(BH*(MH[0]+0.5)),  '+colorPhase*',  NH[0],  ')>>',  AH,  ',",", ',
                    '(',  Math.floor(BH*(MH[1]+0.5)),  '+colorPhase*',  NH[1],  ')>>',  AH,  ',",", ',
                    '(',  Math.floor(BH*(MH[2]+0.5)),  '+colorPhase*',  NH[2],  ')>>',  AH,  ', ")"].join("");\n'
                 );
                else
                  EH.push(
                    '_a["',  id,  'elStyle"].',  JH,  '=',
                    '((',  Math.floor(BH*(MH[0]+0.5)),  '+colorPhase*',  NH[0],  ')>>',  AH,  '<<16) | ',
                    '((',  Math.floor(BH*(MH[1]+0.5)),  '+colorPhase*',  NH[1],  ')>>',  AH,  '<<8) | ',
                    '((',  Math.floor(BH*(MH[2]+0.5)),  '+colorPhase*',  NH[2],  ')>>',  AH,  ');\n'
                 );
             }
              else
                EH.push(
                  '_a["',  id,  'elStyle"].',  JH,  '=["rgb(",',
                  '(',  Math.floor(BH*(MH[0]+0.5)),  '+colorPhase*',  NH[0],  ')>>',  AH,  ',",", ',
                  '(',  Math.floor(BH*(MH[1]+0.5)),  '+colorPhase*',  NH[1],  ')>>',  AH,  ',",", ',
                  '(',  Math.floor(BH*(MH[2]+0.5)),  '+colorPhase*',  NH[2],  ')>>',  AH,  ', ")"].join("");\n'
               );
              break;
            case   'opacity':
              EH.push('_a["',  id, (AB.currentStyle?'opacity"].opacity=(':'elStyle"].opacity=(('),  BH*(MH+0.5),  '+colorPhase*',  NH,  ')>>',  AH, (AB.currentStyle?';':')/100;'),  "\n");
              break;
            case   'matrix':
                DH.push(
                  'var scaleX=',  MH[0],  '+f*',  NH[0],  ';',
                  'var scaleY=',  MH[1],  '+f*',  NH[1],  ';',
                  'var angle=',  MH[2],  '+f*',  NH[2],  ';',
                  'var shear=',  MH[3],  '+f*',  NH[3],   ';',
                  'with(_a["',  id,  'matrix"]) {M11=scaleX*Math.cos(angle);M12=-scaleY*Math.sin(shear+angle);M21=scaleX*Math.sin(angle);M22=scaleY*Math.cos(shear+angle);}\n'
               );
              break;
            case   'scrollpx':
              DH.push('_a["',  id,  'el"].',  JH,  '=(',  ZG*(MH+0.5),  '+normalPhase*',  NH,  ')>>',  YG,  ';\n');
              break;
            case   'cliprect':
              DH.push(
                '_a["',  id,  'elStyle"].clip=["rect(", ',
                '"auto", " "+',
                '"auto", " "+',
                '((',  ZG*(MH[2]+0.5),  '+normalPhase*',  NH[2],  ')>>',  YG,  '), " "+',
                '"auto", ")"].join("");\n'





             );

              break;
            case   "%":
              DH.push('_a["',  id,  'elStyle"].',  JH,  '=((',  Math.floor(ZG*(MH+0.5)),  '+normalPhase*',  NH,  ')>>',  YG,  ')/10000;\n');
            case   "string":
              switch  (JH)
             {
                case   "display":
                  DH.push('_a["',  id,  'elStyle"].display = "', (LH=='none'?MH:LH) ,  '";\n');
                  break;
                case   "overflow":
                  DH.push('_a["',  id,  'elStyle"].overflow = "hidden";');
                  break;
             }
              break;
            default:
              DH.push('_a["',  id,  'elStyle"].',  JH,  '=((',  Math.floor(ZG*(MH+0.5)),  '+normalPhase*',  NH,  ')>>',  YG,  ')', (JH=='zoom'?'/10000':''),  _a.PH,  "\n");
         }

       }
     }

      if  (DH.length  >  0)
     {
        code.push(
          'var normalPhase=Math.round(',  ZG,  '*f);\n',



          DH.join("")


       );
     }
      if  (EH.length  >  0)
     {
        code.push(
          'var colorPhase=Math.round(',  BH,  '*f);\n',



         EH.join("")


       );
     }

      if  (XG.removeAfterwards)
        code.push(
          "",
          "if(t>=TSTOP)",
          "{",
          FH.join(""),
          "}");

      _a.QH(code,  XG.duration,  WG,  XG.onFinish);
   },

    CH: [
      'tPhase',
      'tPhase*tPhase',
      '(2-tPhase)*tPhase',
      '(1-Math.cos('  +  Math.PI  +  '*tPhase)/2.0)',
      '(tPhase<0.5?Math.exp(3*Math.log(tPhase*2))/2:1-Math.exp(3*Math.log((1-tPhase)*2))/2)',
      '(-Math.cos('  +  4*Math.PI  +  '*tPhase) + 1)/2',
      '(Math.sin('  +  2*Math.PI  +  '*tPhase)*0.4+0.6)*Math.sin('  +  4*Math.PI  +  '*tPhase)*0.5+0.5'
   ],

    PH: (document.defaultView?" + 'px';\n":";\n"),
    RH:  0,
    SH:  null,
    TH:  1,
    UH:  0,
    VH:  Infinity,
    WH:  500,
    XH:  "",
    QH:  function(YH,  duration,  WG,  onFinish)
   {
      _a.RH++;
      _a.TH++;

      for  (var   i=0;  i<WG.length;  i++)
        Animator.VG[WG[i].element.id] =  _a.TH++;

      if  (onFinish)
     {
        _a["__onFinish"  +  _a.TH] =  onFinish;
        _a["__anims"  +  _a.TH] =  WG;
     }

      ZH  = [
        "/*** ",  _a.TH,  " ***/\n",
        "var t=Math.min(tNow, TSTOP);\n",
        YH.join(""),
        "if(t==TSTOP)\n",
        "{\n",
        "_a.__rC(",  _a.TH,  ");\n",
       (onFinish?("_a.__onFinish"  +  _a.TH  +  "(_a.__anims"  +  _a.TH  +  ");"):""),
        "\n}\n",
        "/*** /",  _a.TH,  " ***/\n"].join("");

      var   AI  = +new   Date() -  _a.UH;
      var   BI  =  AI  +  duration;
      ZH  =  ZH.replace(/TSTART/g,  AI);
      ZH  =  ZH.replace(/DURATION/g,  duration);
      ZH  =  ZH.replace(/TSTOP/g,  BI);
      ZH  =  ZH.replace(/RUNINDEX/g,  _a.TH);

      if  (_a.SH)
        _a.CI(WG);

      _a.XH  =  _a.XH  +  ZH;

      _a.DI  =  Function("tNow",  _a.XH);



      if  (!_a.SH)
     {
        _a.UH  =  0;
        _a.VH  =  Infinity;

 _a.EI  =  0;
 _a.FI  = +new   Date() -  _a.UH;

        _a.SH  =  setInterval(_a.GI,  1);
        _a.GI();
     }
   },
    GI:  function()
   {
      var   EE  = +new   Date() -  _a.UH;

      var   HI  =  EE  -  _a.VH;
      if  (HI  >  _a.WH)
     {
        _a.UH  +=  HI;
        EE  -=  HI;
     }

      _a.VH  =  EE;




      _a.DI(EE);
   },
    "__rC":  function(II)
   {
      var   JI  =  "/*** "  +  II  +  " ***/";
      var   KI    =  "/*** /"  +  II  +  " ***/";
      _a.XH  =  _a.XH.substring(0,  _a.XH.indexOf(JI)) +  _a.XH.substring(_a.XH.indexOf(KI) +  KI.length);

      _a.DI  =  Function("tNow",  _a.XH);

      _a.LI(II);

      _a.RH--;
      if  (_a.RH  ==  0)
     {
        clearInterval(_a.SH);
        _a.VG  = {};
        _a.SH  =  null;
     }
   },
    LI:  function(II)
   {
      for  (var   id   in   _a.VG)
        if  (_a.VG[id] ==  II)
          delete   _a.VG[id];
   },
    CI:  function(WG)
   {
      var   MI  = ["xxx"];
      var   GH  =  WG.length;
      for  (var   i=0;  i<GH;  i++)
     {
        var   HH  =  WG[i];
        var   id  =  HH.element.id.replace(/./g, "\\$1");
        var   IH  =  HH.targetState;

        for  (var   JH   in   IH)
       {

          switch  (JH)
         {
            case   'scrollTop':
            case   'scrollLeft':
              MI.push("|_a\\[\"",  id,  "el\"\\].",  JH,  "[^\\n]+\\n");
              break;
            case   'matrix':
              MI.push("|_a\\[\"",  id,  "matrix\"\\][^\\n]+\\n");
              break;
            case   'opacity':
              MI.push("|_a\\[\"",  id,  "opacity\"\\][^\\n]+\\n");
              break;
            default:
              MI.push("|_a\\[\"",  id,  "elStyle\"\\].",  JH,  "[^\\n]+\\n");
         }
       }
     }

      var   NI  =  MI.join("");
      if  (NI)
        _a.XH  =  _a.XH.replace(new   RegExp(NI,  "g"),  "");
   }
};


 function   Modifiers()
{
    this.duration  =  300;
    this.profile  =  this["SLOWFASTSLOW"];
    this.removeAfterwards  =  false;
    this.onFinish  =  null;
}

 Modifiers.prototype  = {
    "LINEAR":0,
    "ACCELERATING":1,
    "DECELERATING":2,
    "NORMAL":3,
    "SLOWFASTSLOW":4,
    "BLINK":5,
    "HEARTBEAT":6
};

 Animator["animate"] =  Animator.animate;
 window["Animator"] =  Animator;




















 OI  = {
    QI:[
      "display",
      "overflow",
      "top",
      "left",
      "bottom",


      "width",
      "height",
      "backgroundColor",
      "color",




     "marginTop",


      "marginLeft",





      "fontSize"

   ],
    RI:{},
    SI:  false,
    TI:  {  body:1,  div:1,  label:1,  img:1,  li:1,  ol:1,  ul:1,  span:1,  td:1,  th:1,  tr:1,  table:1,  h1:1,  h2:1,  h3:1  },
    UI: (document.documentElement.style.removeAttribute?"removeAttribute":"removeProperty"),

    VI:  function(WI)
   {
      B.F  =  WI;
   },
    XI:  function(YI)
   {
      var   ZI  = {};
      for  (var   i=0;  i<YI.length;  i++)
        ZI[YI[i]] =  1;
      OI.TI  =  ZI;
   },
    AJ:  function(BJ)
   {
      OI.QI  =  BJ;
   },
    CJ:  function()
   {
      OI.SI  =  false;
      OI.RI  = {};
   },
    DJ:function(QG)
   {
    if (B.isSafari)
      return;

      if  (!B.G)
     {
        var   EJ  = {};





        var   FJ  =  LD.OD(QG);
        if  (
          OI.TI[QG.nodeName.toLowerCase()]
         &&  FB.contains(QG,  "morph")
         && !OI.RI[FJ]
       )
          EJ[FJ] =  QG;

        for  (var   GJ   in   OI.TI)
       {
          var   VD  =  QG.getElementsByTagName(GJ);
          for  (var   i=VD.length-1;  i>=0;  i--)
         {
            var   AB  =  VD[i];
            var   FJ  =  LD.OD(AB);
            if  (
             !OI.RI[FJ]
             &&  FB.contains(AB,  "morph")
           )
              EJ[FJ] =  AB;
         }
       }

        OI.SI  =  true;
        OI.HJ(EJ,  true);

        for  (var   FJ   in   EJ)
          OI.RI[FJ] =  EJ[FJ];
     }
   },

    IJ:function()
   {
      if  (!B.G  &&  OI.SI)
     {


        for  (var   FJ   in   OI.RI)
          if  (!OI.RI[FJ].element.parentNode)
         {
            var   AB  =  document.getElementById(FJ);
            if  (AB)
              OI.RI[FJ].element  =  document.getElementById(FJ);
            else
              delete   OI.RI[FJ];
         }

        OI.JJ(OI.RI);
        OI.HJ(OI.RI,  false);
        OI.KJ(OI.RI);

        var   LJ  =  OI.MJ();

        OI.CJ();

        OI.NJ(LJ);
     }
   },
    JJ:  function(OJ)
   {
      for  (var   FJ   in   OJ)
     {
        if  (!Animator.VG[FJ])
          continue;

        var   PJ  =  OJ[FJ];
        var   AB  =  PJ.element;

        for  (var   KB   in   PJ.QJ)
       {
          var   LB  =  AB.style[KB];
          if  (LB)
         {
            PJ.RJ[KB] =  LB;
            AB.style[OI.UI](KB);
         }
       }
     }
   },
    KJ:  function(OJ)
   {
      for  (var   FJ   in   OJ)
     {
        if  (!Animator.VG[FJ])
          continue;

        var   PJ  =  OJ[FJ];
        var   AB  =  PJ.element;
        for  (var   KB   in   PJ.RJ)
          AB.style[KB] =  PJ.RJ[KB];
     }
   },
    HJ:  function(OJ,  SJ)
   {
      var   TJ  = [];
      var   PJ  =  null;

      for  (var   FJ   in   OJ)
     {
        if  (SJ)
          OJ[FJ] =  PJ  = {
            element:OJ[FJ],
            RJ:{},
            QJ:{},
            UJ:{}
         };
        else
          PJ  =  OJ[FJ];

        var   AB  =  PJ.element;

       {
          var   VJ  = (SJ?PJ.QJ:PJ.UJ);

          for  (var   i=0;  i<OI.QI.length;  i++)
         {
            var   KB  =  OI.QI[i];
            VJ[KB] =  GC.KC(AB,  KB);

            if  (KB  ==  "display"  &&  VJ[KB] ==  "none")
           {
              TJ[TJ.length] =  AB;
              AB.style.display  =  "block";
           }

            if  (!SJ)
           {

              if  (
                KB  ==  "display"
               &&  VJ.display  ==  "none"
               &&  PJ.QJ.display  ==  "none"
             )
               {
                  delete   OJ[FJ];
                  break;
               }
           }
         }
       }






     }

      for  (var   i=0;  i<TJ.length;  i++)
        GC.FD(TJ[i],  "display");
   },
    MJ:  function()
   {
      var   LJ  = {};
      var   WJ  = {};
      for  (var   FJ   in   OI.RI)
     {
        var   PJ  =  OI.RI[FJ];
        var   AB  =  PJ.element;
        var   currentState  = {};
        var   targetState  = {};
        var   XJ  =  false;
        for  (var   KB   in   PJ.UJ)
       {
          var   LC  =  GC.JC(KB);
          var   YJ  =  PJ.QJ[KB];
          var   ZJ  =  PJ.UJ[KB];

          switch  (LC)
         {
            case   "rgb":
              if  (!YJ  || !ZJ  ||  B.PB(YJ,  ZJ))
                continue;
              break;
            case   "matrix":
              if  (B.PB(YJ,  ZJ))
                continue;
              break;
            default:
              if  (YJ  ==  ZJ)
                continue;
         }

          XJ  =  true;
          GC.ED(AB,  KB,  YJ);
          currentState[KB] =  YJ;
          targetState[KB] =  ZJ;
       }

        if  (XJ)
       {
          if  (
            targetState.borderTopColor
           &&  targetState.borderRightColor
           &&  targetState.borderBottomColor
           &&  targetState.borderLeftColor
           &&  B.PB(targetState.borderTopColor,  targetState.borderRightColor)
           &&  B.PB(targetState.borderRightColor,  targetState.borderBottomColor)
           &&  B.PB(targetState.borderBottomColor,  targetState.borderLeftColor)
           &&  B.PB(currentState.borderTopColor,  currentState.borderRightColor)
           &&  B.PB(currentState.borderRightColor,  currentState.borderBottomColor)
           &&  B.PB(currentState.borderBottomColor,  currentState.borderLeftColor)
         )
         {
            currentState.borderColor  =  currentState.borderTopColor;
            targetState.borderColor  =  targetState.borderTopColor;
            delete   targetState.borderTopColor;
            delete   targetState.borderRightColor;
            delete   targetState.borderBottomColor;
            delete   targetState.borderLeftColor;
         }

          var   duration  =  B.GB(AB,  "morph",  B.F);
          var   WG  =  LJ[duration] =  LJ[duration] || [];

          WG[WG.length] = {
            element:AB,
            currentState:currentState,
            targetState:targetState
         };
       }
     }
      return   LJ;
   },
    NJ:  function(LJ)
   {
      for  (var   duration   in   LJ)
     {
        var   XG  =  new   Modifiers();
        XG.duration  =  1*duration;
        XG.removeAfterwards  =  true;

        Animator.animate(LJ[duration],  XG);
     }
   }
};

 X.EG("threadStart",  function(){  OI.CJ  });
 X.EG("threadEnd",  function(){  OI.IJ(); });
 X.EG("beforeChangeClassName",  function(QF){  OI.DJ(QF.srcElement); });
 X.EG("beforeHtmlChanged",  function(QF){  OI.DJ(QF.srcElement); });

 window["StyleMorpher"] =  OI;
 OI["setMorphableNodeNames"] =  OI.XI;
 OI["setMorphableProperties"] =  OI.AJ;
 OI["setMorphDuration"] =  OI.VI;












 AK  = {
    BK:[],
    CK:  null,
    DK:{},
    EK:{},
    FK:  null,
    GK:  null,
    IG:  function()
   {
      IF.LF(document,  "click",    AK.HK);
      IF.LF(document,  "keydown",  AK.HK);
   },
    IK:  function(K,  YD)
   {
      AK.JK(K,  YD,  true);
   },
    KK:  function(K,  YD)
   {
      AK.JK(K,  YD,  false);
   },
    JK:  function(K,  YD,  LK)
   {
      AK.BK[AK.BK.length] =  YD;
      AK.DK[YD] =  K;
      AK.EK[YD] =  LK;

      AK.BK  =  AK.BK.sort().reverse();

      AK.CK  =  new   RegExp("(\\b"  +  AK.BK.join("\\b)|(\\b") +  "\\b)|(\\b[\\w\\-]+\\b|\\s+)",  "g");
   },
    HK:  function(QF)
   {
      AK.GK  = (QF.type  ==  "click"  ||  QF.keyCode  ==  13  ||  QF.keyCode  ==  32);

      AK.FK  =  QF;
      var   VD  = [];

      for  (var   AB  =  QF.srcElement;  AB && AB.nodeType  ==  1;  AB  =  AB.parentNode)
        VD[VD.length] =  AB;


      for  (var   i=VD.length-1;  i>=0;  i--)
     {
        AK.MK  =  VD[i];
        if  (AK.MK.className)
          AK.MK.className.replace(AK.CK,  AK.NK);
     }
   },
    NK:  function()
   {
      for  (var   i=1;  i<arguments.length-3;  i++)
        if  (arguments[i])
       {
          var   YD  =  AK.BK[i-1];
          if  (AK.EK[YD] && !AK.GK)
            continue;

          AK.DK[YD](AK.MK,  arguments[i],  AK.FK);
          return;
       }
   }
};

 AK.IG();

 window["ClassHandler"] =  AK;
 AK["registerActivationHandler"] =  AK.IK;
 AK["registerEventHandler"] =  AK.KK;





 OK  = {
    PK:[],
    QK:"",
    RK:{},
    SK:{},

    IG:  function()
   {
      IF.LF(document,  "click",      function(QF) {  OK.HK(QF.srcElement,  QF); });
      IF.LF(document,  "keypress",   function(QF) {  if  (QF.keyCode  ==  32  ||  QF.keyCode  ==  13)  OK.HK(QF.srcElement,  QF); });
      X.EG("labelExecuteRequest",  function(QF) {  OK.HK(QF.srcElement,  QF); });
   },
    TK:  function(UK,  VK,  WK)
   {
      var   XK  =  "("  +  VK.join("|") +  ")";
      for  (var   i=0;  i<UK.length;  i++)
     {
        var   YK  =  UK[i];
        OK.PK[OK.PK.length] =  YK;
        OK.RK[YK] =  XK;
        OK.SK[YK] =  WK;
     }

      OK.QK  =  "("  +  OK.PK.join("|") +  ")";
   },
    HK:  function(AB,  QF)
   {
      if  (OK.QK)
     {
        var   UK  =  null;


        while  (AB  && (AB.nodeType  ==  1) && !(UK  =  FB.match(AB,  OK.QK)))
       {


          if  (QF  &&  QF.type  ==  "keypress"  &&  AB.nodeName.toLowerCase() ==  "a")
            return;

          AB  =  AB.parentNode;
       }
        if  (AB  &&  UK  &&  X.Y("beforeAction",  AB))
       {
          var   ZK  =  AB;

          for  (var   i=0;  i<UK.length;  i++)
         {
            var   YK  =  UK[i];
            if  (!YK)
              continue;

            var   AL  =  OK.BL(ZK,  YK);

            if  (!AL  || !AL.AB  || !X.Y("beforeAction",  AL.AB))
              continue;

            OK.SK[YK](ZK,  YK,  AL.AB,  AL.CL);
         }
       }
     }
   },

    BL:  function(ZK,  YK)
   {
      var   DL  =  null;
      var   EL  =  OK.FL(ZK);

      if  (!EL)

        for  (var   AB  =  ZK; !EL  &&  AB  !=  document.documentElement;  AB  =  AB.parentNode)
          if  (DL  =  FB.match(AB,  OK.RK[YK]))
            EL  =  AB;

      if  (EL  && !DL)
        DL  =  FB.match(EL,  OK.RK[YK]);

      return  (EL  &&  DL  ? {  AB:EL,  CL:DL[0] } :  null);
   },
    FL:  function(UG)
   {
      var   GL  =  UG.htmlFor  ||  UG["for"];

      if  (GL  &&  GL.indexOf("javascript:") ==  0)
     {
        var   HL  =  new   Function("return "  +  GL.substring(11));
        UG["___tmpf"] =  HL;
        GL  =  UG["___tmpf"]();
        UG["___tmpf"] =  null;
     }

      return  (GL  ?  document.getElementById(GL) :  null);
   }
};

 OK.IG();








 IL  = {
    JL:{},
    KL:{},
    LL:{},
    ML:{},
    NL:{},
    OL:{},

    IG:  function()
   {

      IL.PL(["collapser",  "expander"], ["collapsed",  "expanded"],  "expandcollapser");
      IL.PL(["opener",  "closer"], ["open",  "close"],  "opencloser");
      IL.PL(["selector",  "unselector"], ["selected",  "unselected"],  "selectionswitch");
      IL.PL(["shower",  "hider"], ["shown",  "hidden"],  "showswitch");
   },
    PL:  function(UK,  QL,  RL,  SL)
   {
      var   TL  =  QL[QL.length  -  1];
      for  (var   i=0;  i<UK.length;  i++)
     {
        var   YK  =  UK[i];
        var   UL  =  QL[i];

        IL.LL[TL] =  UL;
        IL.ML[UL] =  TL;

        TL  =  UL;

        IL.JL[YK] =  UL;
        IL.KL[UL] =  YK;
     }

      if  (RL)
     {
        UK[UK.length] =  RL;
        IL.NL[RL] =  true;
        IL.JL[RL] =  QL[0];
     }
      if  (SL)
     {
        UK[UK.length] =  SL;
        IL.OL[SL] =  true;
        IL.JL[SL] =  QL[0];
     }

      OK.TK(UK,  QL,  IL.VL);
   },
    VL:  function(ZK,  YK,  EL,  WL)
   {
      var   XL  = [];
      IL.YL(XL,  YK,  EL,  WL);

      for  (var   i=0;  i<XL.length;  i++)
        IL.ZL(XL[i]);

   },
    YL:  function(XL,  YK,  EL,  WL)
   {
      var   AM  =  IL.JL[YK];

      if  (IL.NL[YK])
     {
        AM  =  IL.LL[WL];
        YK  =  IL.KL[AM];
     }
      else   if  (IL.OL[YK])
     {
        AM  =  IL.ML[WL];
        YK  =  IL.KL[AM];
     }

      if  (!FB.contains(EL,  AM))
     {
        XL[XL.length] = {
          YK:YK,
          EL:EL,
          BM:WL,
          AM:AM,
          L:0
       };

        var   GE  =  null;
        var   CM  =  null;
        if  (LD.AE(EL,  "exclusive-"  +  AM))
          CM  =  EL.parentNode.childNodes;
        else   if  (GE  =  LD.AE(EL,  "allexclusive-"  +  AM))
          CM  =  GE[0].getElementsByTagName("*");
        if  (CM)
       {
          var   DM  =  IL.LL[AM];
          var   EM  =  IL.KL[DM];

          for  (var   i=0;  i<CM.length;  i++)
         {
            var   FM  =  CM[i];

            if  (FM.nodeType  !=  1  ||  FM  ==  EL  || !FB.contains(FM,  AM))
              continue;

            if  (!X.Y("beforeAction",  FM))
              continue;

            if  (XL.length  >  0  &&  XL[XL.length-1].L  ==  0)
              XL[XL.length-1].L  =  B.GB(EL.parentNode,  "delayexclusive",  0);

            IL.YL(XL,  EM,  FM,  AM);
         }
       }
     }
   },

    ZL:  function(GM)
   {
      if  (GM.L)
     {
        B.J(function(){  IL.ZL(GM); },  GM.L);
        GM.L  =  0;
        return;
     }


      FB.replace(GM.EL,  GM.BM,  GM.AM,  B.D);
   }
};

 IL.IG();

 IL["addStateSequence"] =  IL.PL;
 window["Behaviors"] =  IL;










 HM  = {
    IG:  function()
   {
      AK.KK(HM.IM,  "eventbox");
   },
    JM: {
      13:["enter",  "execute"],
      32:["space",  "execute"],
      33:["pageup"],
      34:["pagedown"],
      37:["left"],
      38:["up"],
      39:["right"],
      40:["down"]
   },
    IM:  function(AB,  YD,  QF)
   {
      if  (QF.type  ==  "keydown")
     {
        var   KM  =  HM.JM[QF.keyCode] || [];
        HG.PG(AB,  KM);
     }
   }
};

 HM.IG();















 LM  = {
    MM:  true,
    NM:  false,
    OM: {},
    PM: [],
    QM: {},
    RM: {},
    SM: {},
    TM: {},
    IG:  function()
   {
      OK.TK(["classchain-up"], ["classchain"],  LM.UM);
      OK.TK(["classchain-down"], ["classchain"],  LM.VM);

      X.EG("afterChangeClassName",  LM.JG);
   },
    PL:  function(WM,  XM,  YM,  ZM)
   {
      LM.PM[LM.PM.length] =  XM;
      LM.QM[XM] =  WM;
      LM.RM[XM] =  YM;
      LM.SM[XM] = ((WM  &&  WM.length  >  0)?WM.join("|") +  "|":":") +  XM  + ((YM  &&  YM.length>0)?"|"  +  YM.join("|"):"");
      LM.TM[XM] =  ZM;
   },
    JG:  function(QF)
   {
      var   AB  =  QF.srcElement;

      var   matches  =  FB.match(AB,  LM.PM.join("|"));
      if  (matches)
        for  (var   i=0;  i<matches.length;  i++)
       {
          var   XM  =  matches[i];
          if  (FB.contains(AB.parentNode,  "classchain-"  +  XM))
         {
            var   AN  =  LM.BN(AB.parentNode);
            for  (var   OH=0;  OH<AN.CN;  OH++)
              if  (AN.DN[OH] ==  AB)
             {
                AN.EN  =  OH;
                LM.FN(AN);
                break;
             }
         }
     }
   },
    UM:  function(ZK,  YK,  EL,  WL)
   {
      LM.GN(ZK,  YK,  EL, -1);
   },
    VM:  function(ZK,  YK,  EL,  WL)
   {
      LM.GN(ZK,  YK,  EL,  1);
   },
    GN:  function(ZK,  YK,  EL,  dir)
   {
      var   CN  =  B.GB(ZK,  YK,  1);
      var   AN  =  LM.BN(EL);

      AN.EN  +=  dir*CN;
      if  (AN.ZM)
        AN.EN  = (AN.EN  +  10*AN.CN) %  AN.CN;
      else
        AN.EN  =  Math.max(0,  Math.min(AN.CN-1,  AN.EN));

      LM.FN(AN);
   },
    BN:  function(AB)
   {
      var   AN  = {
        AB:AB,
        HN:  B.Z(AB,  "classchain",  null),
        DN: [],
        EN: -1
     };
      AN.ZM  =  LM.TM[AN.HN];

      for  (var   i=0;  i<AB.childNodes.length;  i++)
     {
        var   IN  =  AB.childNodes[i];
        if  (IN.nodeType  ==  1  &&  FB.contains(IN,  "classchain-item"))
       {
          AN.DN[AN.DN.length] =  IN;
          if  (FB.contains(IN,  AN.HN))
            AN.EN  =  AN.DN.length-1;
       }
     }

      AN.CN  =  AN.DN.length;

      return   AN;
   },
    FN:  function(AN)
   {
      if  (LM.OM[LD.OD(AN.AB)])
        return;

      LM.OM[LD.OD(AN.AB)] =  true;

      var   XM  =  AN.HN;
      var   WM  =  LM.QM[XM];
      var   YM  =  LM.RM[XM];
      var   JN  =  LM.SM[XM];
      var   KN  =  AN.EN;
      var   CN  =  AN.CN;

      FB.replace(AN.DN[KN],  JN,  XM);

      if  (AN.ZM)
     {

        var   LN  =  true;
        var   MN  = -1;
        var   NN  = -1;
        var   ON  = -1;
        var   PN  =  0;
        var   QN  =  0;
        for  (var   RN=0;  RN<CN;  LN  = !LN)
       {
          if  (LN)
         {
            PN++;
            NN  =  Math.min(WM.length-1,  PN  -  1);

            if  (NN  <=  WM.length-1  ||  ON  ==  YM.length-1)
           {
              MN  = (KN  -  PN  +  10*CN) %  CN;
              FB.replace(AN.DN[MN],  JN,  WM[WM.length  -  1  -  NN]);
              RN++;
           }
         }
          else
         {
            QN++;
            ON  =  Math.min(YM.length-1,  QN  -  1);

            if  (ON  <=  YM.length-1  ||  NN  ==  WM.length-1)
           {
              MN  = (KN  +  QN  +  10*CN) %  CN;
              FB.replace(AN.DN[MN],  JN,  YM[ON]);
              RN++;
           }
         }
       }
     }
      else
     {
        var   SN  =  WM.length-1;
        for  (var   i=KN-1;  i>=0;  i--,  SN  =  Math.max(0,  SN-1))
          FB.replace(AN.DN[i],  JN,  WM[SN]);


        SN  =  0;
        for  (var   i=KN+1;  i<CN;  i++,  SN  =  Math.min(YM.length-1,  SN+1))
          FB.replace(AN.DN[i],  JN,  YM[SN]);
     }

      if  (!AN.ZM)
     {
        var   TN  =  "classchain-"  +  AN.HN  +  "-";

        if  (AN.EN  ==  0)
          FB.add(AN.AB,  TN  +  "top");
        else
          FB.remove(AN.AB,  TN  +  "top");

        if  (AN.EN  ==  AN.CN  -  1)
          FB.add(AN.AB,  TN  +  "bottom");
        else
          FB.remove(AN.AB,  TN  +  "bottom");
     }

      delete   LM.OM[LD.OD(AN.AB)];
   }
};

 LM["WRAP"] =  LM.MM;
 LM["NOWRAP"] =  LM.NM;
 LM["addStateSequence"] =  LM.PL;
 window["ClassChain"] =  LM;

 LM.IG();

 var   UN  =
{
    VN:  null,
    WN: [],
    XN: [],
    YN: [],
    ZN:[],
    AO:  null,
    BO:  null,
    CO:null,
    DO: {},
    IG:  function()
   {

      UN.PL("inactive",  "active",  false);
      UN.PL("blur",  "focus",  true);

      IF.LF(document,  "click",  UN.EO);
      IF.LF(document,  "keyup",      UN.EO);

      X.EG("afterChangeClassName",  UN.JG);
      X.EG("scatterFrameUnload",  UN.FO);

      IL.PL(["activator",  "inactivator"], ["active",  "inactive"],  "activationswitch");
      IL.PL(["focuser",  "blurrer"], ["focus",  "blur"],  "focusswitch");
   },
    PL:  function(GO,  HO,  IO)
   {
      UN.XN.push(GO);
      UN.YN.push(HO);
      if  (IO)
     {
        UN.ZN.push(GO);
        UN.ZN.push(HO);
     }
      UN.AO  =  UN.XN.join("|");
      UN.BO    =  UN.YN.join("|");
      UN.CO   =  UN.ZN.join("|");
      UN.JO  =  UN.XN.join("|") +  "|"  +  UN.YN.join("|");
      UN.DO[GO] =  HO;
      UN.DO[HO] =  GO;
   },
    EO:  function(QF)
   {
      var   AB  =  QF.srcElement;

      if(LD.AE(AB,"activation-inert"))
        return;

// should check all ancestors!!!
// for now also check parentNode
 if  (
  FB.contains(AB,  "activator|inactivator|activationswitch|focuser|blurrer|focusswitch")
  ||
  FB.contains(AB.parentNode,  "activator|inactivator|activationswitch|focuser|blurrer|focusswitch")
)
    return;

      if  (AB  !=  UN.VN)
     {
        UN.VN  =  AB;

        var   KO  = [];
        for  (;  AB.nodeType  ==  1;  AB  =  AB.parentNode)
          if  (FB.contains(AB,  UN.JO))
            KO.push(AB);


        KO.reverse();


        var   LO  = [];
        for  (var   i=0;  i<UN.WN.length;  i++)
          if  (UN.WN[i] !=  KO[i])
         {
            for  (var   OH=UN.WN.length  -  1;  OH  >=  i;  OH--)
              LO.push(UN.WN[OH]);
            break;
         }


        for  (var   MO=0;  MO<LO.length;  MO++)
          UN.NO(LO[MO]);


        var   OO  = [];
        var   PO  = [];
        for  (var   OH=i;  OH<KO.length;  OH++)
       {
          var   AB  =  KO[OH];
          if  (FB.contains(AB,  UN.CO))
            PO.push(AB);
          else
            OO.push(AB);

          B.JB(AB,  "active",  true);
       }


        if  (PO.length  >  0)
          if  (LO.length  >  0)

            B.J(function(){  UN.QO(PO); },  B.F/1.5);
          else

            UN.QO(PO);

        if  (OO.length  >  0)

          UN.QO(OO);

        UN.WN  =  KO;
     }
   },
    JG:  function(QF,  AB)
   {
      if  (FB.NE(QF.QD,  "active") && !FB.NE(QF.GF,  "active"))
        UN.EO(QF);
   },
    FO:  function(QF)
   {
      if  (FB.contains(QF.srcElement,  UN.JO))
        UN.EO(QF);
   },
    NO:  function(AB)
   {
      if  (X.Y("beforeAction",  AB))
     {
        var   RO  =  FB.match(AB,  UN.BO);
        if  (RO)
       {
          for  (var   i=0;  i<RO.length;  i++)
         {
            var   HO  =  RO[i];
            FB.replace(AB,  HO,  UN.DO[HO]);
            X.Y("afterElementDeactivation",  AB);
         }
       }
        B.JB(AB,  "active",  false);
     }
   },
    SO:  function(AB)
   {
      if  (B.OB(AB,  "active"))
     {
        if  (X.Y("beforeAction",  AB))
       {
          var   RO  =  FB.match(AB,  UN.AO);
          if  (RO)
            for  (var   i=0;  i<RO.length;  i++)
           {
              var   GO  =  RO[i];
              FB.replace(AB,  GO,  UN.DO[GO]);
              X.Y("afterElementActivation",  AB);
           }
       }
     }
   },
    QO:  function(VD)
   {
      for  (var   i=0;  i<VD.length;  i++)
        UN.SO(VD[i]);
   }
};

 UN.IG();



 TO  = {
    UO:"Q42",
    get:  function(name,  defaultValue)
   {
      var   GG  =  this.VO();

      return   GG[name] ||  null;
   },
    EF:  function(name,  value)
   {
      var   GG  =  this.VO();

      delete   GG[name];

      if  (value  !=  null)
        GG[name] =  value;

      this.WO(GG);
   },
    remove:  function(name)
   {
      var   GG  =  this.VO();

      delete   GG[name];

      this.WO(GG);
   },
    VO:  function()
   {
      var   JD  =  document.cookie  +  "|;";
      var   XO  =  JD.indexOf(this.UO  +  "=");

      if  (XO  == -1)
        return  {};

      var   YO  =  JD.indexOf("|;",  XO);

      var   ZO  =  JD.substring(XO  +  this.UO.length  +  1,  YO).split('|');

      var   GG  = {};
      for  (var   i=0;  i<ZO.length;  i++)
     {
        var   AP  =  ZO[i].split(':');
        GG[AP[0]] =  unescape(AP[1]);
     }

      return   GG;
   },
    WO:  function(GG)
   {
      var   s  =  '';
      for  (var   BP   in   GG)
        if  (BP)
          s  +=  BP  +  ':'  +  escape(GG[BP]) +  '|';

      var   CP  =  new   Date();
      CP.setFullYear(CP.getFullYear()+1);

      var   JD  =  this.UO  +  "="  +  s  +  "; expires="  +  CP.toGMTString() +  "; path=/;";

      document.cookie  =  JD;
   }
};

 window["Cookies"] =  TO;
 TO["get"] =  TO.get;
 TO["set"] =  TO.EF;
 TO["remove"] =  TO.remove;














 DP  = {
    RI: {},

    IG:  function()
   {
      DP.EP();

      IF.LF(window,  "unload",  DP.FP);

      X.EG("beforeHtmlChanged",  DP.GP);
      X.EG("afterHtmlChanged",   DP.KG);
   },
    FP:  function(QF)
   {
      DP.HP(document.body);
   },

    GP:  function(QF)
   {
      DP.HP(QF.srcElement);
   },
    KG:  function(QF)
   {
      DP.IP();
   },

    HP:  function(AB)
   {
      var   UD  =  LD.TD(AB);

      for  (var   i=0;  i<UD.length;  i++)
     {
        var   AB  =  UD[i];

        var   RO  =  FB.match(AB,  "persist[\\w]+");
        if  (!RO)
          continue;

        if  (!X.Y("beforeAction",  AB))
          continue;

        var   JH  =  RO[0].substring(7);
        JH  =  JH.substring(0,  1).toLowerCase() +  JH.substring(1);
        if  (JH  ==  "class")
          JH  =  "className";

        var   id  =  AB.id;









        if  (!DP.RI[id])
          DP.RI[id] = {};
        var   CL  =  DP.RI[id];
        CL[JH] =  AB[JH];
     }

      DP.JP();
   },
    EP:  function()
   {

      var   s  =  TO.get("persist");
      if  (s)
        DP.RI  =  DP.KP(s);
   },
    JP:  function()
   {
      var   s  =  DP.LP(DP.RI);


      TO.EF("persist",  s);
   },
    IP:  function()
   {
      for  (var   id   in   DP.RI)
     {
        var   AB  =  document.getElementById(id);

        if  (!AB)
          continue;

        var   MP  =  DP.RI[id];
        for  (var   JH   in   MP)
       {
          switch  (JH)
         {
            case   "className":
              FB.EF(AB,  MP[JH],  B.C);
              break;
            default:
              AB.setAttribute(JH,  MP[JH]);
         }
       }
     }
   },
    LP:  function(OJ)
   {
      var   s  =  "";

      for  (var   id   in   OJ)
     {
        var   NP  =  "";
        NP  +=  id  +  "={";
        var   CL  =  OJ[id];
        var   OP  =  "";
        for  (var   JH   in   CL)
          OP  +=  JH  +  ":'"  +  CL[JH] +  "',";
        if  (!OP)
          continue;

        NP  =  NP  +  OP;
        NP  =  NP.substring(0,  NP.length-1);
        NP  +=  "};";
        s  +=  NP;
     }
      s  =  s.substring(0,  s.length-1);

      return   s;
   },
    KP:  function(s)
   {
      var   OJ  =  this["store"] = {};

      var   PP  =  s.split(";");
      for  (var   i=0;  i<PP.length;  i++)
     {
        var   AP  =  this["nv"] =  PP[i].split("=");
        eval("this['store'][this['nv'][0]] = "  +  AP[1]);
     }
      return   OJ;
   }
};

 DP.IG();
 window.QP  =  true;



 var   RP  =  B.platform  + (B.isIE?" ie"  +  document.compatMode:"");
 FB.add(document.documentElement,  RP,  B.C);

 IF.LF(
    window,
    "load",
    function()
   {
      X.Y("afterHtmlChanged",  document.body);
   }
);
















