





















 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,  EB)
   {
      var   FB  =  null;
      do
     {
        FB  =  GB.match(AB,  BB  +  "-\\w+");
        AB  =  AB.parentNode;
     }
      while  (!DB  &&  AB  &&  AB.nodeType  ==  1  && !FB);

      for  (var   i=0;  i<FB.length;  i++)
     {
        var   s  =  FB[i].substring(BB.length+1);
        if  (!EB  || !EB[s])
          return   s;
     }

      return   CB;
   },
    HB:  function(AB,  IB,  JB,  DB)
   {
     var   FB  =  null;
 try  {
      do
     {
        FB  =  GB.match(AB,  IB  +  "-\\d+");
        AB  =  AB.parentNode;
     }
      while  (!DB  &&  AB  &&  AB.nodeType  ==  1  && !FB);
}  catch(KB){
 debugger;
}
      return  (FB?parseInt(FB[0].substring(IB.length+1)):JB);
   },
    LB:  function(AB,  MB,  NB)
   {
      var   OB  =  AB.PB;
      if  (!OB)
        OB  =  AB.PB  = {};

      OB[MB] =  NB;
   },
    QB:  function(AB,  MB)
   {
      var   OB  =  AB.PB;
      if  (!OB)
        return   null;
      else
        return   OB[MB];
   },
    RB:  function(SB,  TB)
   {
      for  (var   i=0;  i<SB.length;  i++)
        if  (SB[i] !=  TB[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.UB  =  function(VB)
{

    if  (!window.WB)
   {
      window.WB  = [];
      window.XB  = [];
   }


    var   YB  =  this;


    var   ZB  =  VB.AC;
    if  (!ZB)
      WB[ZB  =  VB.AC  =  WB.length] =  VB;


    var   BC  =  YB.CC;
    if  (!BC)
      XB[BC  =  YB.CC  =  XB.length] =  YB;


    if  (!VB.DC)
      VB.DC  = [];


    var   EC  =  VB.DC[BC];
    if  (EC)
      return   EC;


    VB  =  null;
    YB  =  null;


    return   WB[ZB].DC[BC] =  function()
   {
      return   XB[BC].apply(WB[ZB],  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(VB,  FC)
   {
      VB.GC  =  this;
      var   HC  =  VB.GC(FC[0],  FC[1],  FC[2],  FC[3],  FC[4]);
      VB.GC  =  null;
      return   HC;
   }
}
 IC  = {
    JC:{














      "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"
   },
    KC:{
      "width":["offsetWidth",  "paddingLeft",  "paddingRight",  "borderLeftWidth",  "borderRightWidth"],
      "height":["offsetHeight",  "paddingTop",  "paddingBottom",  "borderTopWidth",  "borderBottomWidth"]
   },

    LC:  function(MB)
   {
      return   IC.JC[MB] ||  "csspx";
   },

    MC:  function(AB,  MB)
   {
      var   NC  =  IC.LC(MB);
      if  (!B.isIE)
     {
        var   OC  =  IC.PC(MB);
        var   QC  =  getComputedStyle(AB,  "");
        switch  (NC)
       {
          case   "dimpx":
            if  (B.isOpera)
           {
              var   NB  =  AB[RC[0]];
              for  (var   i=1;  i<RC.length;  i++)
                NB  -=  parseInt(AB.currentStyle[RC[i]]);
              return   NB;
           }
          case   "borderpx":
            if  (QC.getPropertyValue(OC.replace(/width/,  "style")) ==  "none")
              return   0;
          case   "csspx":
          case   "%":
            var   NB  =  QC.getPropertyValue(OC);
            var   SC  =  parseInt(NB);
            if  (isNaN(SC))
              switch  (NB)
             {
                case   "auto":  return   0;
             }
            return   SC;
          case   "opacity":
            return   QC.getPropertyValue(OC);
          case   "scrollpx":
            return   AB[MB];
            break;
          case   "cliprect":
            return  [
              parseInt(QC.getPropertyValue('clip-top')),
              parseInt(QC.getPropertyValue('clip-right')),
              parseInt(QC.getPropertyValue('clip-bottom')),
              parseInt(QC.getPropertyValue('clip-left'))
           ];
          case   "matrix":
            return  [1,  1,  0,  0,  1,  0,  0,  1];
          case   "rgb":
            if  (
              OC.indexOf("border") != -1
             &&  QC.getPropertyValue(OC.replace(/color/,  "style")) ==  "none"
           )
              return   null;
            return   IC.TC(QC.getPropertyValue(OC));
          case   "string":
            return   QC.getPropertyValue(OC);
          default:
            return   null;
       }
     }
      else
     {
        switch  (NC)
       {
          case   "dimpx":
//if (AB.id == "zoekresultaten-container")
//  debugger;
            var   NB  =  AB.currentStyle[MB];
            var   SC  =  parseInt(NB);
            if  (isNaN(SC) ||  NB.indexOf("px") == -1)
           {
              var   RC  =  IC.KC[MB];
              SC  =  AB[RC[0]];
              for  (var   i=1;  i<RC.length;  i++)
                SC  -=  IC.MC(AB,  RC[i]);
           }
            return   SC;
          case   "scrollpx":
            return   parseInt(AB[MB]);
            break;
          case   "cliprect":
            return  [
              parseInt(AB.currentStyle.clipTop),
              parseInt(AB.currentStyle.clipRight),
              parseInt(AB.currentStyle.clipBottom),
              parseInt(AB.currentStyle.clipLeft)
           ];
          case   "matrix":
            try
           {
              var   UC  =  AB.filters.item("DXImageTransform.Microsoft.Matrix");
              with  (UC)
             {
                var   VC  =  Math.sqrt(WC  *  WC  +  XC  *  XC);
                var   YC  =  Math.sqrt(ZC  *  ZC  +  AD  *  AD);
                var   BD   =  Math.acos(WC  /  VC);
                var   CD   =  Math.acos(AD  /  YC) -  BD;

                return  [VC,  YC,  BD,  CD,  WC,  ZC,  XC,  AD];
             }
           }
            catch(KB)
           {
              return  [1,  1,  0,  0,  1,  0,  0,  1];
           }
          case   "opacity":
            try
           {
              var   DD  =  AB.filters.item("DXImageTransform.Microsoft.Alpha");
              return   DD.opacity;
           }
            catch(KB)
           {
              return   100;
           }
            break;
          case   "rgb":
            if  (
              MB.indexOf("border") != -1
             &&  AB.currentStyle[MB.replace(/Color/,  "Style")] ==  "none"
           )
              return   null;
            return   IC.TC(AB.currentStyle[MB]);
          case   "string":
            return   AB.currentStyle[MB];
          case   "borderpx":
            if  (AB.currentStyle[MB.replace(/Width/,  "Style")] ==  "none")
              return   0;
          case   "csspx":
          case   "%":

            var   NB  =  AB.currentStyle[MB];

            if  (NB.indexOf("%") != -1)
           {
              var   ED  =  parseInt(NB) /  100;
              switch  (MB)
             {
                case   "top":
                case   "bottom":
                  NB  =  ED  *  IC.MC(AB.parentNode,  "height");
                  break;
                case   "left":
                case   "right":
                  NB  =  ED  *  IC.MC(AB.parentNode,  "width");
                  break;
             }
           }

            var   SC  =  parseInt(NB);

            if  (isNaN(SC))
              switch  (NB)
             {
                case   "auto":  return   0;
                case   "thin":  return   2;
                case   "medium":  return   4;
                case   "thick":return   6;
                default:  return   parseInt(NB);
             }

            return   SC;
       }
     }
   },

    FD:  function(AB,  MB,  NB)
   {
      var   NC  =  IC.LC(MB);
      switch  (NC)
     {
        case   "rgb":
          AB.style[MB] =  "rgb("  +  NB.join(",") +  ")";
          break;
        case   "matrix":
          if  (B.isIE)
         {
            var   UC  =  AB.filters.item("DXImageTransform.Microsoft.Matrix");
            UC.WC  =  NB[4];
            UC.ZC  =  NB[5];
            UC.XC  =  NB[6];
            UC.AD  =  NB[7];
         }
          break;
        case   "string":
          AB.style[MB] =  NB;
          break;
        case   "dimpx":
        case   "%":
        case   "borderpx":
        case   "csspx":
          AB.style[MB] =  NB  +  "px";
          break;
        case   "scrollpx":
          AB[MB] =  NB  +  "px";
          break;
     }
   },

    GD:  function(AB,  MB)
   {
      if  (B.isIE)
        AB.style.removeAttribute(MB);
      else
        AB.style.removeProperty(MB);
   },

    PC:  function(MB)
   {
      return   MB.replace(/([A-Z])/g,  function(ID){  return   '-'  +  ID.toLowerCase(); });
   },
    JD: {
      "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"
    },

    TC:  function(KD)
   {
      KD  =  IC.JD[KD] ||  KD;

      if  (typeof(KD) ==  'object')
        return   KD;
      if  (KD.indexOf('#') ==  0)
     {
        if  (KD.length  ==  7)
          return  [
            parseInt(KD.substring(1,  3),  16),
            parseInt(KD.substring(3,  5),  16),
            parseInt(KD.substring(5,  7),  16)
         ];
        else
          return  [
            17*parseInt(KD.substring(1,  2),  16),
            17*parseInt(KD.substring(2,  3),  16),
            17*parseInt(KD.substring(3,  4),  16)
         ];
     }
      if  (KD.indexOf('rgb(') ==  0)
     {
        var   LD  =  KD.substring(4,  KD.length  -  1).split(',');
        return  [
          parseInt(LD[0]),
          parseInt(LD[1]),
          parseInt(LD[2])
       ];
     }

      return  [255,  255,  255];
   }
};

 IC["getComputedStyleProperty"] =  IC.MC;
 IC["removeStyleProperty"] =  IC.GD;
 IC["translateColorToArray"] =  IC.TC;

 window["StyleUtils"] =  IC;
 MD  = {
    ND:  1,
    OD:{},
    PD:  function(AB)
   {
      if  (!AB.id)
     {
        var   id  =  'qid_'  +  MD.ND++;
        AB.id  =  id;
        MD.OD[id] =  true;
     }

      return   AB.id;
   },

    QD:  function(AB,  s,  M)
   {
      if  (M  !=  true)
        X.Y("beforeHtmlChanged",  AB, {  RD:s  });
      AB.innerHTML  =  s;
      if  (M  !=  true)
        X.Y("afterHtmlChanged",  AB, {  RD:s  });
      return   true;
   },

    SD:  function(AB,  M)
   {
      if  (M  !=  true)
     {
        var   TD  =  AB.parentNode;
        X.Y("beforeHtmlChanged",  TD);
     }
      AB.parentNode.removeChild(AB);
      if  (M  !=  true)
        X.Y("afterHtmlChanged",  TD);
      return   true;
   },

    UD:  function(AB)
   {
      var   VD  = [];

      if  (AB.id  && !MD.OD[AB.id])
        VD[0] =  AB;

      var   WD  =  AB.getElementsByTagName("*");
      var   XD  =  WD.length;
      for  (var   i=0;  i<XD;  i++)
     {
        var   AB  =  WD[i];
        if  (AB.id  && !MD.OD[AB.id])
          VD[VD.length] =  AB;
     }

      return   VD;
   },
    YD:  function(AB,  ZD)
   {
      var   AE  = [];

      if  (GB.contains(AB,  ZD))
        AE[0] =  AB;

      var   WD  =  AB.getElementsByTagName("*");
      var   XD  =  WD.length;
      for  (var   i=0;  i<XD;  i++)
        if  (GB.contains(WD[i],  ZD))
          AE[AE.length] =  WD[i];

      return   AE;
   },
    BE:  function(AB,  ZD)
   {
      var   AE  = [];

      while  (AB.nodeType  ==  1)
     {
        if  (GB.contains(AB,  ZD))
          AE[AE.length] =  AB;

        AB  =  AB.parentNode;
     }

      return  (AE.length>0)?AE:null;
   },
    CE:  function(AB,  DE)
   {
      while  (AB.nodeType  ==  1)
     {
        if  (AB.nodeName.toLowerCase() ==  DE)
          return   AB;

        AB  =  AB.parentNode;
     }

      return   null;
   },
    EE:  function(AB)
   {
      var   FE  =  AB.target;
      if  (!FE)
        while  (AB.nodeType  ==  1)
       {
          var   ZD  =  GB.match(AB,  "target-\\w+");
          if  (ZD)
            return   ZD[0].substring(7);
          AB  =  AB.parentNode;
       }
      return   FE;
   },
    GE:  function(HE,  IE)
   {
      while  (IE)
        if  (IE  ==  HE)
          return   true;
        else
          IE  =  IE.parentNode;
      return   false;
   },
    JE:  function(AB)
   {
      if  (AB.ownerDocument  !=  document)
        return   false;

      if  (B.isIE)
        return   AB.parentTextEdit  !=  null;

      while  (AB.parentNode  &&  AB  !=  document.body)
        if  (AB.parentNode.nodeType  ==  11)
          return   false;
        else
          AB  =  AB.parentNode;
      return  (AB  ==  document.body);
   }
};

 window["HtmlDomUtils"] =  MD;
 MD["acquireIdForHtmlElement"] =  MD.PD;
 MD["setInnerHtml"] =  MD.QD;
 MD["removeElement"] =  MD.SD;




























































 GB  = {
    KE:{},
    LE:{},
    ME:  function(ZD,  NE,  P)
   {
      if  (GB.LE[ZD])
        alert("Warning in ClassNameAbstraction.addClassNameSequence: a classNameSequence has already been defined for '"  +  ZD  +  "'.");

      if  (typeof(P) ==  "undefined")
        P  =  1.1*B.F;

      GB.LE[ZD] = {
        NE:NE,
        OE:  "("  +  NE.join("-"  +  ZD) +  "-"  +  ZD  +  "|"  +  ZD  +  ")",
        P:P
     };
   },
    contains:  function(AB,  ZD)
   {
      return   GB.PE(AB.className,  ZD);
   },
    PE:  function(s,  ZD)
   {
      var   QE  =  GB.RE(ZD);
      return  (s  &&  s.match(QE) !=  null);
   },
    match:  function(AB,  ZD)
   {
      var   QE  =  GB.RE(ZD);
      return   AB.className.match(QE);
   },
    add:  function(AB,  SE,  M)
   {
      if  (!GB.contains(AB,  SE))
     {
        if  (GB.LE[SE])
       {
          GB.TE(AB,  null,  SE,  0,  M);
          return;
       }

        var   UE  =  AB.className;
        var   VE  =  UE  +  " "  +  SE;
        GB.WE(AB,  UE,  VE,  M);
     }
   },
    replace:  function(AB,  XE,  SE,  M,  YE)
   {
      if  (GB.LE[XE])
        XE  =  GB.LE[XE].OE;

      if  (!YE  &&  GB.LE[SE])
     {
        GB.TE(AB,  XE,  SE,  0,  M);
        return;
     }

      var   UE  =  AB.className;
      var   VE  =  GB.ZE(UE,  XE,  SE);

      GB.WE(AB,  UE,  VE,  M);
   },
    ZE:  function(s,  AF,  BF)
   {
      var   QE  =  GB.RE(AF);

      var   CF  =  s.replace(QE,  BF);
      var   QE  =  GB.RE(BF);
      if  (!CF.match(QE))
        CF  +=  " "  +  BF;

      return   CF;
   },
    DF:  function(AB,  EF,  FF,  M,  YE)
   {
      if  (GB.contains(AB,  FF))
     {
        var   FE  =  EF;
        EF  =  FF;
        FF  =  FE;
     }
      GB.replace(AB,  EF,  FF,  M,  YE);
   },
    remove:  function(AB,  XE,  M)
   {
      if  (GB.LE[XE])
        XE  =  GB.LE[XE].OE;

      var   QE  =  GB.RE(XE);

      var   UE  =  AB.className;
      var   VE  =  UE.replace(QE,  "");
      GB.WE(AB,  UE,  VE,  M);
   },
    GF:  function(AB,  VE,  M)
   {
      GB.WE(AB,  AB.className,  VE,  M);

      VE  =  B.R(VE);
      var   HF  =  VE.split(" ");
      for  (var   i=0;  i<HF.length;  i++)
     {
        var   ZD  =  HF[i];
        if  (GB.LE[ZD])
       {
          GB.TE(AB,  ZD,  ZD,  0,  M);
          return;
       }
     }
   },
    RE:  function(ZD)
   {
      return   GB.KE[ZD] || (GB.KE[ZD] =  new   RegExp("\\b"  +  ZD  +  "\\b",  "g"));
   },
    WE:  function(AB,  UE,  VE,  M)
   {
      UE  =  B.R(UE);
      VE  =  B.R(VE);
      if (UE == VE)
        return;

      if  (!M)
        X.Y("beforeChangeClassName",  AB, {  IF:  UE,  RD:VE  });
      AB.className  =  VE;
      if  (!M)
        X.Y("afterChangeClassName",  AB, {  IF:  UE,  RD:VE  });

      if  (B.isIE)
     {




        if  (AB.getAttribute("tabIndex",  2) ==  0)
       {
          AB.tabIndex  = -1;
          setTimeout(function(){  AB.tabIndex  =  0; },  0);
       }
     }
   },
    TE:  function(AB,  XE,  ZD,  JF,  M)
   {
      var   data  =  GB.LE[ZD];
      var   NE  =  data.NE;

      if  (GB.contains(AB,  XE))
     {
        var   SE  =  NE[JF] +  "-"  +  ZD;

        B.LB(AB,  "morphduration",  data.P);

        GB.replace(AB,  XE,  SE,  M,  true);

        if  (JF  <  NE.length-1)
          B.J(function(){  GB.TE(AB,  SE,  ZD,  JF+1,  M); },  data.P);
        else
          B.J(function(){  if  (GB.contains(AB,  SE))  GB.replace(AB,  SE,  ZD,  M,  true); },  data.P);
     }
   }
};

 GB["addClassNameSequence"] =  GB.ME;
 GB["contains"] =  GB.contains;
 GB["add"] =  GB.add;
 GB["replace"] =  GB.replace;
 GB["remove"] =  GB.remove;
 GB["set"] =  GB.GF;
 window["ClassNameAbstraction"] =  GB;























 KF  = {
    LF:  null,
    MF: {},
    NF:  function(VB,  OF,  K)
   {
      var   PF  =  OF;

      if  (B.isGecko  ||  B.isOpera)
        switch  (PF)
       {
          case   "mouseenter":
            PF  =  "mouseover";
            break;
          case   "mouseleave":
            PF  =  "mouseout";
            break;
       }

      var   QF  =  KF.RF(VB,  K,  OF);

      if  (VB.addEventListener)
        VB.addEventListener(PF,  QF,  false);
      else   if  (VB.attachEvent)
        VB.attachEvent("on"  +  PF,  QF);
   },

    RF:  function(VB,  K,  OF)
   {
      return   function(SF)
     {
        SF  =  KF.TF(SF);

        if  (SF.type  ==  "click")
       {
          if  (B.isIE)
         {


            if  (KF.LF)
           {
              var   UF  =  KF.LF;
              KF.LF  =  null;
              if  (UF  ==  SF.srcElement.id  +  SF.x  +  SF.y)
             {
                var   VF  =  SF.srcElement.getAttribute("htmlFor");
                if  (VF  &&  document.getElementById(VF))
                  return;
             }
           }
            KF.LF  = (SF.srcElement.nodeName.toLowerCase()=="label"?SF.srcElement.htmlFor  +  SF.x  +  SF.y:null);
         }



          if  (B.isGecko  &&  SF.WF)
            return;
       }

        if  (!B.isIE)
       {

          switch  (OF)
         {
            case   "mouseenter":
              if  (this.XF)
                return;

              var   AB  =  SF.srcElement.parentNode;
              if  (AB  !=  this)
             {
                while  (AB  &&  AB  !=  this)
                  AB  =  AB.parentNode;
                if  (AB  ==  this)
                  return;
             }

              this.XF  =  true;

              break;
            case   "mouseleave":
              var   AB  =  SF.YF;
              while  (AB  &&  AB  !=  this)
                AB  =  AB.parentNode;
              if  (AB  ==  this)
                return;

              delete   this.XF;

              break;
         }
       }

        var   HC  =  false;






























        X.Y("threadStart",  SF);

        this.ZF  =  K;
        var   HC  =  this.ZF(SF);
        this.ZF  =  null;


        X.Y("threadEnd",  SF);

        return   HC;
     }.UB(VB);
   },

    AG:  function()
   {
      this.preventDefault();
      this.stopPropagation();
   },
    BG:  function()
   {
      this.returnValue  =  false;
   },
    CG:  function()
   {
      this.cancelBubble  =  true;
   },

    TF:  function(SF)
   {
      if  (B.isIE)
     {
        SF.preventDefault   =  KF.BG;
        SF.stopPropagation  =  KF.CG;
     }
      else   if  (B.isGecko)
     {
        SF.srcElement  =  SF.target  ||  SF.currentTarget;
        if  (SF.srcElement  &&  SF.srcElement.nodeType  ==  3)
          SF.srcElement  =  SF.srcElement.parentNode;
     }

      SF.cancel  =  KF.AG;

      if  (SF.type  ==  "click"  ||  SF.type.indexOf("mouse") ==  0)
     {
        SF.DG   = (!SF.EG  &&  SF.button  ==  1) ||  SF.EG  ==  1;
        SF.WF  =  SF.button  ==  2;
     }

      return   SF;
   }

};

 KF["attach"] =  KF.NF;
 window["DOMEvents"] =  KF;
 X  = {
    FG: {},
    GG:  function(OF,  K)
   {
      var   HG  =  X.FG[OF] =  X.FG[OF] || [];

      HG[HG.length] =  K;
   },
    Y:  function(OF,  srcElement,  IG)
   {
      var   HG  =  X.FG[OF];

      if  (!HG)
        return   true;

      var   SF  =  IG  || {};
      SF.type  =  OF;
      SF.srcElement  =  srcElement;

      var   HC  =  true;
      for  (var   i=HG.length-1;  i>=0;  i--)
        HC  = (HG[i](SF) !=  false) &&  HC;

      return   HC;
   }
};

 X["listen"] =  X.GG;
 X["fire"]   =  X.Y;
 window["CustomEvents"] =  X;












 JG  = {
    KG:  function()
   {
      X.GG("afterChangeClassName",  JG.LG);
      X.GG("afterHtmlChanged",  JG.MG);
   },
    LG:  function(SF)
   {
      var   AB  =  SF.srcElement;

      if  (X.Y("beforeAction",  AB))
     {
        var   NG  =  SF.IF.split(" ");
        var   OG    =  SF.RD.split(" ");

        var   PG  = {};
        for  (var   i=0;  i<NG.length;  i++)
          PG[NG[i]] =  true;

        var   QG  = [];
        for  (var   i=0;  i<OG.length;  i++)
          if  (!PG[OG[i]])
            QG[QG.length] =  OG[i];

        JG.RG(AB,  QG);
     }
   },

    MG:  function(SF)
   {
      var   AB  =  SF.srcElement;

      if  (X.Y("beforeAction",  AB))
     {
        X.Y("onload",  AB);

        JG.RG(AB, ["load"]);
     }
   },
    RG:  function(SG,  TG)
   {
      var   UG  =  "on"  +  TG.join("|on");
      var   VG  =  SG.getElementsByTagName("label");
      for  (var   i=VG.length-1;  i>=0;  i--)
     {
        var   WG  =  VG[i];

        if  (GB.contains(WG,  UG))
          X.Y("labelExecuteRequest",  WG);
     }
   }
};

 JG.KG();
 Animator  =  _a  = {
    XG:{},
    animate:  function(YG,  ZG)
   {

      if  (B.isOpera)
     {
        document.body.scrollTop  -=  1;
        document.body.scrollTop  +=  1;
     }










      var   AH  =  10;
      var   BH  =  1  <<  AH;

      var   CH  =  7;
      var   DH  =  1  <<  CH;

      var   code  = [
        '  var tPhase = Math.min(1, (t - TSTART)/DURATION);\n',
        'if (tPhase>=0){\n',
        '  var f = ',  _a.EH[ZG.profile],  ';\n',
        '\n'
     ];

      var   FH  = [];
      var   GH  = [];
      var   HH  = [];

      var   IH  =  YG.length;

      for  (var   i=0;  i<IH;  i++)
     {
        var   JH  =  YG[i];
        var   AB  =  JH.element;
        var   id  =  MD.PD(AB);
        var   KH  =  JH.targetState;

        for  (var   LH   in   KH)
       {
          var   MH  =  LH;
          if  (!B.isIE)
            MH  =  LH.replace(/([A-Z])/g,  function(ID){  return   '-'  +  ID.toLowerCase(); });

          var   NH  =  KH[LH];


          var   OH  =  JH.currentState?JH.currentState[LH]:IC.MC(AB,  LH);

          if  (LH  ==  'zoom')
         {

            OH  *=  100;
            NH  *=  10000;
         }


          switch  (IC.LC(LH))
         {
            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
                OH  *=  100;

            default:
              _a[id  +  'elStyle'] =  AB.style;

              if  (ZG.removeAfterwards)
                HH.push("_a[\"",  id,  "elStyle\"][\"", (document.documentElement.style.removeAttribute?'removeAttribute':'removeProperty'),  "\"](\""  +  MH  +  "\");\n");
         }


          if  (IC.LC(LH) ==  "rgb")
            NH  =  IC.TC(NH);

          if  (NH.constructor  ==  Array)
         {
            var   PH  = [];
            for  (var   QH=0;  QH<NH.length;  QH++)
              PH[QH] =  Math.floor(NH[QH] -  OH[QH]);
         }
          else   if  (!isNaN(NH))
         {
            var   PH  =  Math.floor(NH-OH);
         }


          switch  (IC.LC(LH))
         {
            case   'rgb':
              if  (B.isIE)
             {
                if  (LH  ==  "borderColor")
                  GH.push(
                    '_a["',  id,  'elStyle"].',  LH,  '=["rgb(",',
                    '(',  Math.floor(DH*(OH[0]+0.5)),  '+colorPhase*',  PH[0],  ')>>',  CH,  ',",", ',
                    '(',  Math.floor(DH*(OH[1]+0.5)),  '+colorPhase*',  PH[1],  ')>>',  CH,  ',",", ',
                    '(',  Math.floor(DH*(OH[2]+0.5)),  '+colorPhase*',  PH[2],  ')>>',  CH,  ', ")"].join("");\n'
                 );
                else
                  GH.push(
                    '_a["',  id,  'elStyle"].',  LH,  '=',
                    '((',  Math.floor(DH*(OH[0]+0.5)),  '+colorPhase*',  PH[0],  ')>>',  CH,  '<<16) | ',
                    '((',  Math.floor(DH*(OH[1]+0.5)),  '+colorPhase*',  PH[1],  ')>>',  CH,  '<<8) | ',
                    '((',  Math.floor(DH*(OH[2]+0.5)),  '+colorPhase*',  PH[2],  ')>>',  CH,  ');\n'
                 );
             }
              else
                GH.push(
                  '_a["',  id,  'elStyle"].',  LH,  '=["rgb(",',
                  '(',  Math.floor(DH*(OH[0]+0.5)),  '+colorPhase*',  PH[0],  ')>>',  CH,  ',",", ',
                  '(',  Math.floor(DH*(OH[1]+0.5)),  '+colorPhase*',  PH[1],  ')>>',  CH,  ',",", ',
                  '(',  Math.floor(DH*(OH[2]+0.5)),  '+colorPhase*',  PH[2],  ')>>',  CH,  ', ")"].join("");\n'
               );
              break;
            case   'opacity':
              GH.push('_a["',  id, (AB.currentStyle?'opacity"].opacity=(':'elStyle"].opacity=(('),  DH*(OH+0.5),  '+colorPhase*',  PH,  ')>>',  CH, (AB.currentStyle?';':')/100;'),  "\n");
              break;
            case   'matrix':
                FH.push(
                  'var scaleX=',  OH[0],  '+f*',  PH[0],  ';',
                  'var scaleY=',  OH[1],  '+f*',  PH[1],  ';',
                  'var angle=',  OH[2],  '+f*',  PH[2],  ';',
                  'var shear=',  OH[3],  '+f*',  PH[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':
              FH.push('_a["',  id,  'el"].',  LH,  '=(',  BH*(OH+0.5),  '+normalPhase*',  PH,  ')>>',  AH,  ';\n');
              break;
            case   'cliprect':
              FH.push(
                '_a["',  id,  'elStyle"].clip=["rect(", ',
                '"auto", " "+',
                '"auto", " "+',
                '((',  BH*(OH[2]+0.5),  '+normalPhase*',  PH[2],  ')>>',  AH,  '), " "+',
                '"auto", ")"].join("");\n'





             );

              break;
            case   "%":
              FH.push('_a["',  id,  'elStyle"].',  LH,  '=((',  Math.floor(BH*(OH+0.5)),  '+normalPhase*',  PH,  ')>>',  AH,  ')/10000;\n');
            case   "string":
              switch  (LH)
             {
                case   "display":
                  FH.push('_a["',  id,  'elStyle"].display = "', (NH=='none'?OH:NH) ,  '";\n');
                  break;
                case   "overflow":
                  FH.push('_a["',  id,  'elStyle"].overflow = "hidden";');
                  break;
             }
              break;
            default:
              FH.push('_a["',  id,  'elStyle"].',  LH,  '=((',  Math.floor(BH*(OH+0.5)),  '+normalPhase*',  PH,  ')>>',  AH,  ')', (LH=='zoom'?'/10000':''),  _a.RH,  "\n");
         }

       }
     }

      if  (FH.length  >  0)
     {
        code.push(
          'var normalPhase=Math.round(',  BH,  '*f);\n',



          FH.join("")


       );
     }
      if  (GH.length  >  0)
     {
        code.push(
          'var colorPhase=Math.round(',  DH,  '*f);\n',



         GH.join("")


       );
     }

      if  (ZG.removeAfterwards)
        code.push(
          "",
          "if(t>=TSTOP)",
          "{",
          HH.join(""),
          "}\n");

      code.push("}\n\n");

      _a.SH(code,  ZG.L,  ZG.duration,  YG,  ZG.onFinish);
   },

    EH: [
      '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'
   ],

    RH: (document.defaultView?" + 'px';\n":";\n"),
    TH:  0,
    UH:  null,
    VH:  1,
    WH:  0,
    XH:  Infinity,
    YH:  500,
    ZH:  "",
    SH:  function(AI,  L,  duration,  YG,  onFinish)
   {
      _a.TH++;
      _a.VH++;

      for  (var   i=0;  i<YG.length;  i++)
        Animator.XG[YG[i].element.id] =  _a.VH++;

      if  (onFinish)
     {
        _a["__onFinish"  +  _a.VH] =  onFinish;
        _a["__anims"  +  _a.VH] =  YG;
     }

      BI  = [
        "/*** ",  _a.VH,  " ***/\n",
        "var t=Math.min(tNow, TSTOP);\n",
        AI.join(""),
        "if(t==TSTOP)\n",
        "{\n",
        "_a.__rC(",  _a.VH,  ");\n",
       (onFinish?("_a.__onFinish"  +  _a.VH  +  "(_a.__anims"  +  _a.VH  +  ");"):""),
        "\n}\n",
        "/*** /",  _a.VH,  " ***/\n"].join("");

      var   CI  = +new   Date() +  L  -  _a.WH;
      var   DI  =  CI  +  duration;
      BI  =  BI.replace(/TSTART/g,  CI);
      BI  =  BI.replace(/DURATION/g,  duration);
      BI  =  BI.replace(/TSTOP/g,  DI);
      BI  =  BI.replace(/RUNINDEX/g,  _a.VH);

      if  (_a.UH)
        _a.EI(YG);

      _a.ZH  =  _a.ZH  +  BI;



      _a.FI  =  Function("tNow",  _a.ZH);



      if  (!_a.UH)
     {
        _a.WH  =  0;
        _a.XH  =  Infinity;

 _a.GI  =  0;
 _a.HI  = +new   Date() -  _a.WH;

        _a.UH  =  setInterval(_a.II,  1);
        _a.II();
     }
   },
    II:  function()
   {
      var   FE  = +new   Date() -  _a.WH;

      var   JI  =  FE  -  _a.XH;
      if  (JI  >  _a.YH)
     {
        _a.WH  +=  JI;
        FE  -=  JI;
     }

      _a.XH  =  FE;




      _a.FI(FE);
   },
    "__rC":  function(KI)
   {
      var   LI  =  "/*** "  +  KI  +  " ***/";
      var   MI    =  "/*** /"  +  KI  +  " ***/";
      _a.ZH  =  _a.ZH.substring(0,  _a.ZH.indexOf(LI)) +  _a.ZH.substring(_a.ZH.indexOf(MI) +  MI.length);

      _a.FI  =  Function("tNow",  _a.ZH);

      _a.NI(KI);

      _a.TH--;
      if  (_a.TH  ==  0)
     {
        clearInterval(_a.UH);
        _a.XG  = {};
        _a.UH  =  null;
     }
   },
    NI:  function(KI)
   {
      for  (var   id   in   _a.XG)
        if  (_a.XG[id] ==  KI)
          delete   _a.XG[id];
   },
    EI:  function(YG)
   {
      var   OI  = ["xxx"];
      var   IH  =  YG.length;
      for  (var   i=0;  i<IH;  i++)
     {
        var   JH  =  YG[i];
        var   id  =  JH.element.id;
        var   KH  =  JH.targetState;

        for  (var   LH   in   KH)
       {

          switch  (LH)
         {
            case   'scrollTop':
            case   'scrollLeft':
              OI.push("|_a\\[\"",  id,  "el\"\\].",  LH,  "[^\\n]+\\n");
              break;
            case   'matrix':
              OI.push("|_a\\[\"",  id,  "matrix\"\\][^\\n]+\\n");
              break;
            case   'opacity':
              OI.push("|_a\\[\"",  id,  "opacity\"\\][^\\n]+\\n");
              break;
            default:
              OI.push("|_a\\[\"",  id,  "elStyle\"\\].",  LH,  "[^\\n]+\\n");
         }
       }
     }

      var   QI  =  OI.join("");
      if  (QI)
        _a.ZH  =  _a.ZH.replace(new   RegExp(QI,  "g"),  "");
   }
};


 function   Modifiers()
{
    this.L  =  0;
    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;




















 RI  = {
    SI:[
      "display",
      "overflow",
      "top",
      "left",
      "right",
      "bottom",
      "width",
      "height",
      "backgroundColor",
      "color",




     "marginTop",


      "marginLeft",





      "fontSize"

   ],
    TI:{},
    UI:  false,
    VI:  {  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  },
    WI: (document.documentElement.style.removeAttribute?"removeAttribute":"removeProperty"),
    XI:  null,
    YI: {},

    ZI:  function(AJ)
   {
      B.F  =  AJ;
   },
    BJ:  function(CJ)
   {
      var   DJ  = {};
      for  (var   i=0;  i<CJ.length;  i++)
        DJ[CJ[i]] =  1;
      RI.VI  =  DJ;
   },
    EJ:  function(FJ)
   {
      RI.SI  =  FJ;
   },
    GJ:  function(K)
   {
      RI.XI  =  K;
   },
    HJ:  function()
   {
      RI.UI  =  false;
      RI.TI  = {};
      RI.YI  = {};
   },
    IJ:  function(SF)
   {


      var   AB  =  SF.srcElement;

      if  (RI.XI  &&  GB.contains(AB,  "manual-morph"))
     {
        var   YG  =  RI.XI(AB,  SF.IF,  SF.RD);
        if  (YG)
       {
          for  (var   i=0;  i<YG.length;  i++)
         {
            var   JH  =  YG[i];

            var   L  =  JH.L;
            var   duration  =  JH.duration;

            if  (JH.currentState)
              for  (var   MB   in   JH.currentState)
                IC.FD(JH.element,  MB,  JH.currentState[MB]);

            var   JJ  =  RI.YI[L] =  RI.YI[L] || {};
            var   YG  =  JJ[duration] =  JJ[duration] || [];
            YG[YG.length] =  JH;

            RI.UI  =  true;
         }
       }
     }
      else
        RI.KJ(SF.srcElement,  SF);
   },
    LJ:  function(MJ,  AB)
   {
      if  (GB.contains(AB,  "morph"))
     {
        var   NJ  =  MD.PD(AB);
        if  (!RI.TI[NJ])
          MJ[NJ] =  AB;
     }
   },
    KJ:function(SG)
   {
      if  (!B.G)
     {
        var   OJ  = {};

        RI.LJ(OJ,  SG);

        for  (var   PJ   in   RI.VI)
       {
          var   WD  =  SG.getElementsByTagName(PJ);
          for  (var   i=WD.length-1;  i>=0;  i--)
            RI.LJ(OJ,  WD[i]);
       }

        RI.UI  =  true;
        RI.QJ(OJ,  true);

        for  (var   NJ   in   OJ)
          RI.TI[NJ] =  OJ[NJ];
     }
   },

    RJ:function()
   {
      if  (!B.G  &&  RI.UI)
     {


        for  (var   NJ   in   RI.TI)
          if  (!MD.JE(RI.TI[NJ].element))
         {
            var   AB  =  document.getElementById(NJ);
            if  (AB)
              RI.TI[NJ].element  =  document.getElementById(NJ);
            else
              delete   RI.TI[NJ];
         }

        RI.SJ(RI.TI);
        RI.QJ(RI.TI,  false);
        RI.TJ(RI.TI);

        var   UJ  =  RI.VJ();
        var   WJ  =  RI.YI;

        RI.HJ();

        RI.XJ(UJ);
        RI.XJ(WJ);
     }
   },
    SJ:  function(MJ)
   {
      for  (var   NJ   in   MJ)
     {
        if  (!Animator.XG[NJ])
          continue;

        var   YJ  =  MJ[NJ];
        var   AB  =  YJ.element;

        for  (var   MB   in   YJ.ZJ)
       {
          var   NB  =  AB.style[MB];
          if  (NB)
         {
            YJ.AK[MB] =  NB;
            AB.style[RI.WI](MB);
         }
       }
     }
   },
    TJ:  function(MJ)
   {
      for  (var   NJ   in   MJ)
     {
        if  (!Animator.XG[NJ])
          continue;

        var   YJ  =  MJ[NJ];
        var   AB  =  YJ.element;
        for  (var   MB   in   YJ.AK)
          AB.style[MB] =  YJ.AK[MB];
     }
   },
    QJ:  function(MJ,  BK)
   {
      var   CK  = [];
      var   YJ  =  null;

      for  (var   NJ   in   MJ)
     {
        if  (BK)
          MJ[NJ] =  YJ  = {
            element:MJ[NJ],
            AK:{},
            ZJ:{},
            DK:{}
         };
        else
          YJ  =  MJ[NJ];

        var   AB  =  YJ.element;

       {
          var   EK  = (BK?YJ.ZJ:YJ.DK);

          for  (var   i=0;  i<RI.SI.length;  i++)
         {
            var   MB  =  RI.SI[i];
            EK[MB] =  IC.MC(AB,  MB);

            if  (MB  ==  "display"  &&  EK[MB] ==  "none")
           {
              CK[CK.length] =  AB;
              AB.style.display  =  "block";
           }

            if  (!BK)
           {

              if  (
                MB  ==  "display"
               &&  EK.display  ==  "none"
               &&  YJ.ZJ.display  ==  "none"
             )
               {
                  delete   MJ[NJ];
                  break;
               }
           }
         }
       }






     }

      for  (var   i=0;  i<CK.length;  i++)
        IC.GD(CK[i],  "display");
   },
    VJ:  function()
   {
      var   UJ  = {};
      var   FK  = {};
      for  (var   NJ   in   RI.TI)
     {
        var   YJ  =  RI.TI[NJ];
        var   AB  =  YJ.element;
        var   currentState  = {};
        var   targetState  = {};
        var   GK  =  false;
        for  (var   MB   in   YJ.DK)
       {
          var   NC  =  IC.LC(MB);
          var   HK  =  YJ.ZJ[MB];
          var   IK  =  YJ.DK[MB];

          switch  (NC)
         {
            case   "rgb":
              if  (!HK  || !IK  ||  B.RB(HK,  IK))
                continue;
              break;
            case   "matrix":
              if  (B.RB(HK,  IK))
                continue;
              break;
            default:
              if  (HK  ==  IK)
                continue;
         }

          GK  =  true;
          IC.FD(AB,  MB,  HK);
          currentState[MB] =  HK;
          targetState[MB] =  IK;
       }

        if  (GK)
       {
          if  (
            targetState.borderTopColor
           &&  targetState.borderRightColor
           &&  targetState.borderBottomColor
           &&  targetState.borderLeftColor
           &&  B.RB(targetState.borderTopColor,  targetState.borderRightColor)
           &&  B.RB(targetState.borderRightColor,  targetState.borderBottomColor)
           &&  B.RB(targetState.borderBottomColor,  targetState.borderLeftColor)
           &&  B.RB(currentState.borderTopColor,  currentState.borderRightColor)
           &&  B.RB(currentState.borderRightColor,  currentState.borderBottomColor)
           &&  B.RB(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   L  =  B.HB(AB,  "morphdelay",  0);
          var   duration  =  B.HB(AB,  "morph",  B.F);
          var   JJ  =  UJ[L] =  UJ[L] || {};
          var   YG  =  JJ[duration] =  JJ[duration] || [];

          YG[YG.length] = {
            element:AB,
            currentState:currentState,
            targetState:targetState
         };
       }
     }
      return   UJ;
   },
    XJ:  function(UJ)
   {
      for  (var   L   in   UJ)
        for  (var   duration   in   UJ[L])
       {
          var   ZG  =  new   Modifiers();
          ZG.L  =  1*L;
          ZG.duration  =  1*duration;
          ZG.removeAfterwards  =  true;

          Animator.animate(UJ[L][duration],  ZG);
       }
   }
};

 X.GG("threadStart",  function(){  RI.HJ(); });
 X.GG("threadEnd",  function(){  RI.RJ(); });
 X.GG("beforeChangeClassName",  function(SF){  RI.IJ(SF); });
 X.GG("beforeHtmlChanged",  function(SF){  RI.KJ(SF.srcElement); });

 window["StyleMorpher"] =  RI;
 RI["setMorphableNodeNames"] =  RI.BJ;
 RI["setMorphableProperties"] =  RI.EJ;
 RI["setMorphDuration"] =  RI.ZI;
 RI["setManualMorphHandler"] =  RI.GJ;












 JK  = {
    KK:[],
    LK:  null,
    MK:{},
    NK:{},
    OK:  null,
    PK:  null,
    KG:  function()
   {
      KF.NF(document,  "click",    JK.QK);
      KF.NF(document,  "keydown",  JK.QK);
   },
    RK:  function(K,  ZD)
   {
      JK.SK(K,  ZD,  true);
   },
    TK:  function(K,  ZD)
   {
      JK.SK(K,  ZD,  false);
   },
    SK:  function(K,  ZD,  UK)
   {
      JK.KK[JK.KK.length] =  ZD;
      JK.MK[ZD] =  K;
      JK.NK[ZD] =  UK;

      JK.KK  =  JK.KK.sort().reverse();

      JK.LK  =  new   RegExp("(\\b"  +  JK.KK.join("\\b)|(\\b") +  "\\b)|(\\b[\\w\\-]+\\b|\\s+)",  "g");
   },
    QK:  function(SF)
   {
      JK.PK  = (SF.type  ==  "click"  ||  SF.keyCode  ==  13  ||  SF.keyCode  ==  32);

      JK.OK  =  SF;
      var   WD  = [];



      if  (B.isGecko  &&  SF.srcElement  ==  document.documentElement)
        SF.srcElement  =  document.body;

      for  (var   AB  =  SF.srcElement;  AB.nodeType  ==  1;  AB  =  AB.parentNode)
        WD[WD.length] =  AB;


      for  (var   i=WD.length-1;  i>=0;  i--)
     {
        JK.VK  =  WD[i];
        if  (JK.VK.className)
          JK.VK.className.replace(JK.LK,  JK.WK);
     }
   },
    WK:  function()
   {
      for  (var   i=1;  i<arguments.length-3;  i++)
        if  (arguments[i])
       {
          var   ZD  =  JK.KK[i-1];
          if  (JK.NK[ZD] && !JK.PK)
            continue;

          JK.MK[ZD](JK.VK,  arguments[i],  JK.OK);
          return;
       }
   }
};

 JK.KG();

 window["ClassHandler"] =  JK;
 JK["registerActivationHandler"] =  JK.RK;
 JK["registerEventHandler"] =  JK.TK;

















 JK.RK(
    function(DQ,  ZD,  SF)
   {
      var   AB  =  SF.srcElement;
      AB  =  MD.CE(AB,  "a") ||  MD.CE(AB,  "form");

      if  (AB)
        AB.target  =  ZD.substring(7);
   },
    "target-\\w+"
);















 JK.RK(MD.SD,  "once");

 X.GG(
    "labelExecuteRequest",
    function(SF) {
      var   AB  =  SF.srcElement;
      if  (GB.contains(AB,  "once"))
        setTimeout(function(){  MD.SD(AB,  B.C); },  0);
   }
);





 XK  = {
    YK:[],
    ZK:"",
    AL:{},
    BL:{},

    KG:  function()
   {
      KF.NF(document,  "click",      function(SF) {  XK.QK(SF.srcElement,  SF); });
      KF.NF(document,  "keypress",   function(SF) {  if  (SF.keyCode  ==  32  ||  SF.keyCode  ==  13)  XK.QK(SF.srcElement,  SF); });
      X.GG("labelExecuteRequest",  function(SF) {  XK.QK(SF.srcElement,  SF); });
   },
    CL:  function(DL,  EL,  FL)
   {
      var   GL  =  "("  +  EL.join("|") +  ")";
      for  (var   i=0;  i<DL.length;  i++)
     {
        var   HL  =  DL[i];
        XK.YK[XK.YK.length] =  HL;
        XK.AL[HL] =  GL;
        XK.BL[HL] =  FL;
     }

      XK.ZK  =  "("  +  XK.YK.join("|") +  ")";
   },
    QK:  function(AB,  SF)
   {
      if  (XK.ZK)
     {
        var   DL  =  null;


        while  (AB  && (AB.nodeType  ==  1))
       {


          if  (SF  &&  SF.type  ==  "keypress"  &&  AB.nodeName.toLowerCase() ==  "a")
            return;

          if  (AB  && (DL  =  GB.match(AB,  XK.ZK)))
         {
            if  (X.Y("beforeAction",  AB))
           {
              var   IL  =  AB;

              for  (var   i=0;  i<DL.length;  i++)
             {
                var   HL  =  DL[i];
                if  (!HL)
                  continue;

                var   JL  =  XK.KL(IL,  HL);

                if  (!JL  || !JL.AB  || !X.Y("beforeAction",  JL.AB))
                  continue;

                XK.BL[HL](IL,  HL,  JL.AB,  JL.LL);
             }
           }
         }
          AB  =  AB.parentNode;
       }
     }
   },

    KL:  function(IL,  HL)
   {
      var   ML  =  null;
      var   NL  =  XK.OL(IL);

      if  (!NL)

        for  (var   AB  =  IL; !NL  &&  AB  !=  document.documentElement;  AB  =  AB.parentNode)
          if  (ML  =  GB.match(AB,  XK.AL[HL]))
            NL  =  AB;

      if  (NL  && !ML)
        ML  =  GB.match(NL,  XK.AL[HL]);

      return  (NL  &&  ML  ? {  AB:NL,  LL:ML[0] } :  null);
   },
    OL:  function(WG)
   {
      var   PL  =  WG.htmlFor  ||  WG["for"];

      if  (PL  &&  PL.indexOf("javascript:") ==  0)
     {
        var   QL  =  new   Function("return "  +  PL.substring(11));
        WG["___tmpf"] =  QL;
        PL  =  WG["___tmpf"]();
        WG["___tmpf"] =  null;
     }

      return  (PL  ?  document.getElementById(PL) :  null);
   }
};

 XK.KG();








 RL  = {
    SL:{},
    TL:{},
    UL:{},
    VL:{},
    WL:{},
    XL:{},

    KG:  function()
   {

      RL.YL(["collapser",  "expander"], ["collapsed",  "expanded"],  "expandcollapser");
      RL.YL(["opener",  "closer"], ["open",  "close"],  "opencloser");
      RL.YL(["selector",  "unselector"], ["selected",  "unselected"],  "selectionswitch");
      RL.YL(["shower",  "hider"], ["shown",  "hidden"],  "showswitch");
      RL.YL(["activator",  "inactivator"], ["active",  "inactive"],  "activationswitch");
      RL.YL(["focuser",  "blurrer"], ["focus",  "blur"],  "focusswitch");
   },
    YL:  function(DL,  ZL,  AM,  BM)
   {
      var   CM  =  ZL[ZL.length  -  1];
      for  (var   i=0;  i<DL.length;  i++)
     {
        var   HL  =  DL[i];
        var   DM  =  ZL[i];

        RL.UL[CM] =  DM;
        RL.VL[DM] =  CM;

        CM  =  DM;

        RL.SL[HL] =  DM;
        RL.TL[DM] =  HL;
     }

      if  (AM)
     {
        DL[DL.length] =  AM;
        RL.WL[AM] =  true;
        RL.SL[AM] =  ZL[0];
     }
      if  (BM)
     {
        DL[DL.length] =  BM;
        RL.XL[BM] =  true;
        RL.SL[BM] =  ZL[0];
     }

      XK.CL(DL,  ZL,  RL.EM);
   },
    EM:  function(IL,  HL,  NL,  FM)
   {
      var   GM  = [];
      RL.HM(GM,  HL,  NL,  FM);

      for  (var   i=0;  i<GM.length;  i++)
        RL.IM(GM[i]);

   },
    HM:  function(GM,  HL,  NL,  FM)
   {
      var   JM  =  RL.SL[HL];

      if  (RL.WL[HL])
     {
        JM  =  RL.UL[FM];
        HL  =  RL.TL[JM];
     }
      else   if  (RL.XL[HL])
     {
        JM  =  RL.VL[FM];
        HL  =  RL.TL[JM];
     }

      if  (!GB.contains(NL,  JM))
     {
        GM[GM.length] = {
          HL:HL,
          NL:NL,
          KM:FM,
          JM:JM,
          L:0
       };

        var   HE  =  null;
        var   LM  =  null;
        if  (MD.BE(NL,  "exclusive-"  +  JM))
          LM  =  NL.parentNode.childNodes;
        else   if  (HE  =  MD.BE(NL,  "allexclusive-"  +  JM))
          LM  =  HE[0].getElementsByTagName("*");
        if  (LM)
       {
          var   MM  =  RL.UL[JM];
          var   NM  =  RL.TL[MM];

          for  (var   i=0;  i<LM.length;  i++)
         {
            var   OM  =  LM[i];

            if  (OM.nodeType  !=  1  ||  OM  ==  NL  || !GB.contains(OM,  JM))
              continue;

            if  (!X.Y("beforeAction",  OM))
              continue;

            if  (GM.length  >  0  &&  GM[GM.length-1].L  ==  0)
              GM[GM.length-1].L  =  B.HB(NL.parentNode,  "delayexclusive",  0);

            RL.HM(GM,  NM,  OM,  JM);
         }
       }
     }
   },

    IM:  function(PM)
   {
      if  (PM.L)
     {
        B.J(function(){  RL.IM(PM); },  PM.L);
        PM.L  =  0;
        return;
     }


      GB.replace(PM.NL,  PM.KM,  PM.JM,  B.D);
   }
};

 RL.KG();

 RL["addStateSequence"] =  RL.YL;
 window["Behaviors"] =  RL;










 QM  = {
    KG:  function()
   {
      JK.TK(QM.RM,  "eventbox");
   },
    SM: {
      13:["enter",  "execute"],
      32:["space",  "execute"],
      33:["pageup"],
      34:["pagedown"],
      35:["end"],
      36:["home"],
      37:["left"],
      38:["up"],
      39:["right"],
      40:["down"]
   },
    RM:  function(AB,  ZD,  SF)
   {



      var   TM  =  SF.srcElement;
      while  (TM  &&  TM  !=  AB  &&  AB.nodeType  ==  1  && !GB.contains(TM,  "eventbox") &&  TM.nodeName.toLowerCase() !=  "input"  &&  TM.nodeName.toLowerCase() !=  "textarea"  &&  TM.nodeName.toLowerCase() !=  "select")
        TM  =  TM.parentNode;
      if  (TM  !=  AB)
        return;

      var   UM  =  null;
      switch  (SF.type)
     {
        case   "keydown":
          UM  =  QM.SM[SF.keyCode] ||  null;
          break;
        case   "click":
          UM  = ["click"];
          break;
     }

      if  (UM)
     {
        JG.RG(AB,  UM);
        SF.cancel();
     }
   }
};

 QM.KG();















 VM  = {
    WM:  true,
    XM:  false,
    YM:{  "item":1,  "up":1,  "down":1,  "left":1,  "right":1  },
    ZM:[],
    AN: {},
    BN: {},
    CN: {},
    DN: {},
    EN: {},
    KG:  function()
   {
      XK.CL(["classchain-up"], ["classchain"],  VM.FN);
      XK.CL(["classchain-left"], ["classchain"],  VM.FN);
      XK.CL(["classchain-down"], ["classchain"],  VM.GN);
      XK.CL(["classchain-right"], ["classchain"],  VM.GN);

      X.GG("afterChangeClassName",  VM.LG);
   },
    YL:  function(HN,  IN,  JN,  KN)
   {
      VM.ZM[VM.ZM.length] =  IN;
      VM.AN[IN] =  HN;
      VM.BN[IN] =  JN;
      VM.CN[IN] = ((HN  &&  HN.length  >  0)?HN.join("\\b|\\b") +  "\\b|\\b":":") +  IN  + ((JN  &&  JN.length>0)?"\\b|\\b"  +  JN.join("\\b|\\b"):"");
      VM.DN[IN] =  KN;
   },
    LG:  function(SF)
   {
      var   AB  =  SF.srcElement;

      var   matches  =  GB.match(AB,  VM.ZM.join("\\b|\\b"));
      if  (matches)
        for  (var   i=0;  i<matches.length;  i++)
       {
          var   IN  =  matches[i];
          if  (GB.contains(AB.parentNode,  "classchain-"  +  IN))
         {
            var   LN  =  VM.MN(AB.parentNode);
            for  (var   QH=0;  QH<LN.NN;  QH++)
              if  (LN.ON[QH] ==  AB)
             {
                LN.PN  =  QH;
                VM.QN(LN);
                break;
             }
         }
     }
   },
    FN:  function(IL,  HL,  NL,  FM)
   {
      VM.RN(IL,  HL,  NL, -1);
   },
    GN:  function(IL,  HL,  NL,  FM)
   {
      VM.RN(IL,  HL,  NL,  1);
   },
    RN:  function(IL,  HL,  NL,  dir)
   {
      var   NN  =  B.HB(IL,  HL,  1);
      var   LN  =  VM.MN(NL);

      LN.PN  +=  dir*NN;
      if  (LN.KN)
        LN.PN  = (LN.PN  +  10*LN.NN) %  LN.NN;
      else
        LN.PN  =  Math.max(0,  Math.min(LN.NN-1,  LN.PN));

      VM.QN(LN);
   },
    MN:  function(AB)
   {
      var   LN  = {
        AB:AB,
        SN:  B.Z(AB,  "classchain",  null,  true,  VM.YM),
        ON: [],
        PN: -1
     };
      LN.KN  =  VM.DN[LN.SN];

      for  (var   i=0;  i<AB.childNodes.length;  i++)
     {
        var   TN  =  AB.childNodes[i];
        if  (TN.nodeType  ==  1  &&  GB.contains(TN,  "classchain-item"))
       {
          LN.ON[LN.ON.length] =  TN;
          if  (GB.contains(TN,  LN.SN))
            LN.PN  =  LN.ON.length-1;
       }
     }

      LN.NN  =  LN.ON.length;

      return   LN;
   },
    QN:  function(LN)
   {
      if  (VM.EN[MD.PD(LN.AB)])
        return;

      VM.EN[MD.PD(LN.AB)] =  true;

      var   IN  =  LN.SN;
      var   HN  =  VM.AN[IN];
      var   JN  =  VM.BN[IN];
      var   UN  =  VM.CN[IN];
      var   VN  =  LN.PN;
      var   NN  =  LN.NN;

      GB.replace(LN.ON[VN],  UN,  IN);

      if  (LN.KN)
     {

        var   WN  =  true;
        var   XN  = -1;
        var   YN  = -1;
        var   ZN  = -1;
        var   AO  =  0;
        var   BO  =  0;
        for  (var   CO=1;  CO<NN;  WN  = !WN)
       {
          if  (WN)
         {
            AO++;
            YN  =  Math.min(HN.length-1,  AO  -  1);

            if  (YN  <=  HN.length-1  ||  ZN  ==  JN.length-1)
           {
              XN  = (VN  -  AO  +  10*NN) %  NN;
              GB.replace(LN.ON[XN],  UN,  HN[HN.length  -  1  -  YN]);
              CO++;
           }
         }
          else
         {
            BO++;
            ZN  =  Math.min(JN.length-1,  BO  -  1);

            if  (ZN  <=  JN.length-1  ||  YN  ==  HN.length-1)
           {
              XN  = (VN  +  BO  +  10*NN) %  NN;
              GB.replace(LN.ON[XN],  UN,  JN[ZN]);
              CO++;
           }
         }
       }
     }
      else
     {
        var   DO  =  HN.length-1;
        for  (var   i=VN-1;  i>=0;  i--,  DO  =  Math.max(0,  DO-1))
          GB.replace(LN.ON[i],  UN,  HN[DO]);


        DO  =  0;
        for  (var   i=VN+1;  i<NN;  i++,  DO  =  Math.min(JN.length-1,  DO+1))
          GB.replace(LN.ON[i],  UN,  JN[DO]);
     }

      if  (!LN.KN)
     {
        var   EO  =  "classchain-"  +  LN.SN  +  "-";

        if  (LN.PN  ==  0)
          GB.add(LN.AB,  EO  +  "top");
        else
          GB.remove(LN.AB,  EO  +  "top");

        if  (LN.PN  ==  LN.NN  -  1)
          GB.add(LN.AB,  EO  +  "bottom");
        else
          GB.remove(LN.AB,  EO  +  "bottom");
     }

      delete   VM.EN[MD.PD(LN.AB)];
   }
};

 VM["WRAP"] =  VM.WM;
 VM["NOWRAP"] =  VM.XM;
 VM["addStateSequence"] =  VM.YL;
 window["ClassChain"] =  VM;

 VM.KG();

























 EQ  = {
    FQ:  "replace\\b|\\bprepend\\b|\\bappend\\b|\\binsertbefore\\b|\\breplacesiblingsafter",
    KG:  function()
   {
      X.GG("afterHtmlChanged",  EQ.MG);
   },
    MG:  function(SF)
   {
      EQ.GQ(SF.srcElement);
   },
    HQ:  function(SF)
   {
      var   IQ  =  SF.srcElement;

      var   JQ  =  EQ.KQ(IQ);
      if  (JQ)
     {
        X.Y("beforeScatterFrameLoad",  IQ, {  url:JQ.location.href  });

        EQ.LQ(IQ);







        if  (window.opera)
       {
          var   MQ  =  window.frames[IQ.name];
          MQ.addEventListener("unload",  function(){  MQ.setTimeout(function(){  MQ.location.reload(false); },  10); },  false);
       }

        X.Y("afterScatterFrameLoad",  IQ, {  url:JQ.location.href  });
     }
   },
    GQ:  function(AB)
   {
      var   NQ  =  AB.getElementsByTagName("iframe");
      var   XD  =  NQ.length;
      for  (var   i=0;  i<XD;  i++)
     {
        var   IQ  =  NQ[i];


        if  (!GB.contains(IQ,  "push-frame"))
          continue;

        KF.NF(IQ,  "load",  EQ.HQ);

        EQ.LQ(IQ);
     }
   },
    LQ:  function(IQ)
   {
      var   JQ  =  EQ.KQ(IQ);

      if  (JQ  &&  JQ.documentElement)
     {


        var   OQ  =  JQ.documentElement.getElementsByTagName("plaintext");
        if  (OQ[0])
       {
          var   PQ  =  OQ[0].innerHTML;
          if  (window.opera)
            PQ  =  PQ.replace(/&lt;/g,  "<").replace(/&gt;/g,  ">").replace(/&quot;/g,  "\"").replace(/&amp;/g,  "&");

          var   QQ  =  document.createElement("div");
          QQ.innerHTML  =  PQ;
       }
        else
       {
          EQ.RQ(IQ,  JQ);
          EQ.SQ(IQ,  JQ);

          var   QQ  =  JQ.body;
       }


        if  (JQ.title)
          document.title  =  JQ.title;

        EQ.TQ(QQ);
     }
   },
    RQ:  function(IQ,  JQ)
   {
      var   UQ  =  IQ.name;

      EQ.VQ(UQ,  JQ.links);
      EQ.VQ(UQ,  JQ.forms);
   },
    SQ:  function(IQ,  JQ)
   {
      var   WQ  =  JQ.images;
      for  (var   i=0;  i<WQ.length;  i++)
        WQ[i].src  =  WQ[i].src;
   },
    VQ:  function(target,  XQ)
   {
      var   XD  =  XQ.length;
      for  (var   i=0;  i<XD;  i++)
     {
        var   item  =  XQ[i];
        if  (item.target)
          continue;
        item.setAttribute("target",  target);
     }
   },
    TQ:  function(QQ)
   {
      var   YQ   =  MD.UD(QQ);

      var   GM  = [];
      for  (var   i=YQ.length-1;  i>=0;  i--)
     {
        var   ZQ  =  YQ[i];
        var   AR  =  document.getElementById(ZQ.id);
        var   BR  =  AR;

        if  (!AR)
          continue;

        var   CR  =  GB.contains(ZQ,  "push-content");
        if  (CR)
       {
          var   DR  =  GB.match(ZQ,  EQ.FQ);
          var   ER  = (DR?DR[0]:"replace");

          if  (ER  ==  "replacesiblingsafter")
            var   FR  =  GB.match(ZQ,  "replacesiblingsafter-\\w+")[0].substring(21);

          var   GR  =  document.createElement("div");
          GR.innerHTML  =  ZQ.innerHTML;
       }

        var   HR  =  "";
        var   IR  =  GB.contains(ZQ,  "push-class");
        if  (IR)
       {
          HR  =  BR.className;
          var   HF  =  B.R(ZQ.className).split(" ");

          for  (var   QH=0;  QH<HF.length;  QH++)
            if  (HF[QH].indexOf("-") ==  0)
              HR  =  HR.replace(new   RegExp("\\b"  +  HF[QH].substring(1) +  "\\b",  "g"),  "");
          for  (var   QH=0;  QH<HF.length;  QH++)
            if  (HF[QH].indexOf("/") ==  0)
           {
              var   JR  =  HF[QH].substring(1).split("/");
              HR  =  GB.ZE(HR,  JR[0],  JR[1]);
           }
          for  (var   QH=0;  QH<HF.length;  QH++)
            if  (HF[QH].indexOf("+") ==  0)
              HR  +=  " "  +  HF[QH].substring(1);

          if  (HR  ==  BR.className)
            IR  =  false;
       }

        if  (CR  ||  IR)
          GM[GM.length] = {
            AR:  AR,
            BR:  BR,
            CR:  CR,
            ER:  ER,
            FR:FR,
            GR:GR,
            IR:  IR,
            HR:  HR,
            L:  B.HB(ZQ,  "delayscatter",  0)
         };
     }

      for  (var   i=0;  i<GM.length;  i++)
        EQ.KR(GM[i]);
   },
    KQ:  function(IQ)
   {

      try
     {
        return   window.frames[IQ.name].document;
     }
      catch  (KB)
     {
        alert("Could not get document from IFrame: "  +  KB.message);
        return   null;
     }
   },
    KR:  function(PM)
   {
      if  (PM.L  >  0)
     {
        B.J(function(){  EQ.KR(PM); },  PM.L);
        PM.L  =  0;
        return;
     }

      var   LR  =  GB.match(PM.AR,  "onload-\\w+");
      if  (B.G  || !LR)
        EQ.MR(PM);
      else
     {
        var   ZD  =  LR[0].substring(7);

        GB.add(PM.AR,  " "  +  ZD,  B.D);

        B.J(
          function()
         {
            GB.remove(PM.AR,  " "  +  ZD,  B.D);
            EQ.MR(PM);
         },
          B.F
       );
     }
   },
    MR:  function(PM)
   {
      if  (PM.IR)

        GB.GF(PM.BR,  PM.HR,  B.D);

      if  (PM.CR)
     {
        X.Y("beforeHtmlChanged",  PM.AR);

        switch  (PM.ER)
       {
          case   "replace":
            while  (PM.AR.firstChild)
              PM.AR.removeChild(PM.AR.firstChild);
          case   "replacesiblingsafter":
            if  (PM.ER  !=  "replace")
           {

              var   TN  =  null;
              for  (var   i=PM.AR.childNodes.length-1;  i>=0  && !TN;  i--)
                if  (GB.contains(PM.AR.childNodes[i],  PM.FR))
                  TN  =  PM.AR.childNodes[i];

              if  (TN)

                while  (TN.nextSibling)
                  PM.AR.removeChild(TN.nextSibling);
           }
          case   "append":
            while  (PM.GR.firstChild)
              PM.AR.appendChild(PM.GR.firstChild);
            break;
          case   "prepend":
            while  (PM.GR.firstChild)
              PM.AR.insertBefore(PM.GR.lastChild,  PM.AR.firstChild);
            break;
          case   "insertbefore":
            while  (PM.GR.firstChild)
              PM.AR.parentNode.insertBefore(PM.GR.lastChild,  PM.AR);
            break;
       }

        X.Y("afterHtmlChanged",  PM.AR);
     }
   }
};

 EQ.KG();


















 NR  = {
    OR:  location.hash,
    PR: {},
    QR: {},
    RR: (location.href.substring(0,  location.href.lastIndexOf("/")+1)),
    SR:  null,
    TR:  null,
    UR:  null,

    KG:  function()
   {
      KF.NF(window,  "load",  NR.VR);
      X.GG("afterScatterFrameLoad",  NR.WR);

      if  (!B.isIE)
        B.O(NR.XR,  250);
   },
    XR:  function()
   {
      var   hash  =  location.hash;
      if  (hash  !=  NR.OR)
     {
        NR.OR  =  hash;
        NR.VR(true);
     }
   },
    YR:  function(hash,  ZR)
   {
      NR.PR[hash] =  ZR;
      NR.QR[ZR] =  hash;
   },
    AS:  function(BS)
   {
      NR.SR  =  BS;
   },
    CS:  function(MP,  DS)
   {
      NR.TR  =  MP;
      NR.UR  =  DS;
   },
    VR:  function(ES)
   {
      var   FS  =  document.location.hash.substring(1);
      if  (FS)
     {
        var   GS  =  FS.split(";");
        for  (var   i=0;  i<GS.length;  i++)
       {
          var   HS  =  NR.QR[GS[i]] ||  GS[i];
          HS  =  HS.split("=");

          var   IS  =  unescape((HS.length  ==  2)?HS[0]:NR.SR);
          var   url        =  unescape((HS.length  ==  2)?HS[1]:HS[0]);

          var   ED  =  window.frames[IS];
          if  (!ED)
            continue;

          if  (NR.TR)
         {
            url  +=  "?"  +  NR.TR  +  "="  +  NR.UR;
            url  =  url.replace(/(\?.+)\?/,  "$1&");
         }

          if  (ES)
            ED.document.location.replace(url);
          else
            ED.document.location.href  =  url;
       }
     }
   },
    WR:  function(SF)
   {
      var   IQ  =  SF.srcElement;

      if  (GB.contains(IQ,  "bookmarkable"))
     {
        var   hash  =  SF.url;


        if  (NR.TR)
          hash  =  hash.replace(new   RegExp("[?&]"  +  NR.TR  +  "="  +  NR.UR  +  "$|"  +  NR.TR  +  "="  +  NR.UR  +  "&"),  "");


        if  (hash.indexOf(NR.RR) ==  0)
          hash  =  hash.substring(NR.RR.length);


        if  (NR.SR  !=  IQ.name)
          hash  =  IQ.name  +  "="  +  hash;

        var   ZR  =  NR.PR[hash];
        if  (ZR)
          hash  =  ZR;

        document.location.replace("#"  +  hash);
        NR.OR  =  location.hash;
     }
   }
};

 NR.KG();

 NR["addPrettyHash"] =  NR.YR;
 NR["setDefaultFrameName"] =  NR.AS;
 NR["setLoadFromBookmarkArgument"] =  NR.CS;
 window["Bookmarker"] =  NR;
 var   FO  =
{
    GO:  null,
    HO: [],
    IO: [],
    JO: [],
    KO:[],
    LO:  null,
    MO:  null,
    NO:null,
    OO: {},
    KG:  function()
   {

      FO.YL("inactive",  "active",  false);
      FO.YL("blur",  "focus",  true);

      KF.NF(document,  "click",  FO.PO);
      KF.NF(document,  "keyup",      FO.PO);

      X.GG("afterChangeClassName",  FO.LG);
      X.GG("scatterFrameUnload",  FO.QO);
   },
    YL:  function(RO,  SO,  TO)
   {
      FO.IO.push(RO);
      FO.JO.push(SO);
      if  (TO)
     {
        FO.KO.push(RO);
        FO.KO.push(SO);
     }
      FO.LO  =  FO.IO.join("|");
      FO.MO    =  FO.JO.join("|");
      FO.NO   =  FO.KO.join("|");
      FO.UO  =  FO.IO.join("|") +  "|"  +  FO.JO.join("|");
      FO.OO[RO] =  SO;
      FO.OO[SO] =  RO;
   },
    PO:  function(SF)
   {
      var   AB  =  SF.srcElement;

      if (MD.BE(AB, "activation-inert"))
        return;

      if  (AB  !=  FO.GO)
     {
        FO.GO  =  AB;

        var   VO  = [];
        for  (;  AB.nodeType  ==  1;  AB  =  AB.parentNode)
          if  (GB.contains(AB,  FO.UO))
            VO.push(AB);


        VO.reverse();


        var   WO  = [];
        for  (var   i=0;  i<FO.HO.length;  i++)
          if  (FO.HO[i] !=  VO[i])
         {
            for  (var   QH=FO.HO.length  -  1;  QH  >=  i;  QH--)
              WO.push(FO.HO[QH]);
            break;
         }


        for  (var   XO=0;  XO<WO.length;  XO++)
          FO.YO(WO[XO]);


        var   ZO  = [];
        var   AP  = [];
        for  (var   QH=i;  QH<VO.length;  QH++)
       {
          var   AB  =  VO[QH];
          if  (GB.contains(AB,  FO.NO))
            AP.push(AB);
          else
            ZO.push(AB);

          B.LB(AB,  "active",  true);
       }


        if  (AP.length  >  0)
          if  (WO.length  >  0)

            B.J(function(){  FO.BP(AP); },  B.F/1.5);
          else

            FO.BP(AP);

        if  (ZO.length  >  0)

          FO.BP(ZO);

        FO.HO  =  VO;
     }
   },
    LG:  function(SF,  AB)
   {
      if  (GB.PE(SF.RD,  "active") && !GB.PE(SF.IF,  "active"))
        FO.PO(SF);
   },
    QO:  function(SF)
   {
      if  (GB.contains(SF.srcElement,  FO.UO))
        FO.PO(SF);
   },
    YO:  function(AB)
   {
      if  (X.Y("beforeAction",  AB))
     {
        var   CP  =  GB.match(AB,  FO.MO);
        if  (CP)
       {
          for  (var   i=0;  i<CP.length;  i++)
         {
            var   SO  =  CP[i];
            GB.replace(AB,  SO,  FO.OO[SO]);
            X.Y("afterElementDeactivation",  AB);
         }
       }
        B.LB(AB,  "active",  false);
     }
   },
    DP:  function(AB)
   {
      if  (B.QB(AB,  "active"))
     {
        if  (X.Y("beforeAction",  AB))
       {
          var   CP  =  GB.match(AB,  FO.LO);
          if  (CP)
            for  (var   i=0;  i<CP.length;  i++)
           {
              var   RO  =  CP[i];
              GB.replace(AB,  RO,  FO.OO[RO]);
              X.Y("afterElementActivation",  AB);
           }
       }
     }
   },
    BP:  function(WD)
   {
      for  (var   i=0;  i<WD.length;  i++)
        FO.DP(WD[i]);
   }
};

 FO.KG();















 JK.RK(
    function(AB,  ZD,  SF)
   {
      var   JS  =  MD.CE(SF.srcElement,  "a");
      var   KS  =  MD.EE(JS);
      window.frames[KS].document.location.replace(JS.href);

      SF.cancel();
   },
    "nohistory"
);
 window.BQ  =  true;



 var   CQ  =  B.platform  + (B.isIE?" ie"  +  document.compatMode:"");
 GB.add(document.documentElement,  CQ,  B.C);

 KF.NF(
    window,
    "load",
    function()
   {
      X.Y("afterHtmlChanged",  document.body);
   }
);
















