﻿var fleXenv = {
   fleXcrollInit : function() {
      this.addTrggr(window, 'load', this.globalInit)}
   , fleXcrollMain : function(f) {
      var g = document, wD = window, nV = navigator; 
      if(!g.getElementById ||!g.createElement)return; 
      if(typeof(f) == 'string')f = document.getElementById(f); 
      if(f == null || nV.userAgent.indexOf('OmniWeb') !=- 1 || ((nV.userAgent.indexOf('AppleWebKit') !=- 1 || nV.userAgent.indexOf('Safari') !=- 1) &&!(typeof(HTMLElement) != "undefined" && HTMLElement.prototype)) || nV.vendor == 'KDE' || (nV.platform.indexOf('Mac') !=- 1 && nV.userAgent.indexOf('MSIE') !=- 1))return; 
      if(f.scrollUpdate) {
         f.scrollUpdate(); 
         return}; 
      if(!f.id || f.id == '') {
         var h = "flex__", c = 1; 
         while(document.getElementById(h + c) != null) {
            c++}; 
         f.id = h + c}
      var k = f.id; 
      f.fleXdata = new Object(); 
      var l = f.fleXdata; 
      l.keyAct = {
         _37 : ['-1s', 0], _38 : [0, '-1s'], _39 : ['1s', 0], _40 : [0, '1s'], _33 : [0, '-1p'], _34 : [0, '1p'], _36 : [0, '-100p'], _35 : [0, '+100p']}; 
      l.wheelAct = ["-2s", "2s"]; 
      l.baseAct = ["-2s", "2s"]; 
      var m = createDiv('contentwrapper', true), mDv = createDiv('mcontentwrapper', true), tDv = createDiv('scrollwrapper', true), pDv = createDiv('copyholder', true); 
      var o = createDiv('domfixdiv', true), fDv = createDiv('zoomdetectdiv', true), stdMode = false; 
      pDv.sY.border = '1px solid blue'; 
      pDv.fHide(); 
      f.style.overflow = 'hidden'; 
      fDv.sY.fontSize = "12px"; 
      fDv.sY.height = "1em"; 
      fDv.sY.width = "1em"; 
      fDv.sY.position = "absolute"; 
      fDv.sY.zIndex = "-999"; 
      fDv.fHide(); 
      var p = f.offsetHeight, brdWidth = f.offsetWidth; 
      copyStyles(f, pDv, '0px', ['border-left-width', 'border-right-width', 'border-top-width', 'border-bottom-width']); 
      var q = f.offsetHeight, intlWidth = f.offsetWidth, brdWidthLoss = brdWidth - intlWidth, brdHeightLoss = p - q; 
      var s = (f.scrollTop) ? f.scrollTop : 0, oScrollX = (f.scrollLeft) ? f.scrollLeft : 0; 
      var t = document.location.href, uReg = /#([^#.]*)$/; 
      var u = ['textarea', 'input', 'select']; 
      l.scroller = []; 
      l.forcedBar = []; 
      l.containerSize = l.cntRSize = []; 
      l.contentSize = l.cntSize = []; 
      l.edge = [false, false]; 
      l.reqS = []; 
      l.barSpace = [0, 0]; 
      l.forcedHide = []; 
      l.forcedPos = []; 
      l.paddings = []; 
      while(f.firstChild) {
         m.appendChild(f.firstChild)}; 
      m.appendChild(o); 
      f.appendChild(mDv); 
      f.appendChild(pDv); 
      if(getStyle(f, 'position') != 'absolute')f.style.position = "relative"; 
      var w = getStyle(f, 'text-align'); 
      f.style.textAlign = 'left'; 
      mDv.sY.width = "100px"; 
      mDv.sY.height = "100px"; 
      mDv.sY.top = "0px"; 
      mDv.sY.left = "0px"; 
      copyStyles(f, pDv, "0px", ['padding-left', 'padding-top', 'padding-right', 'padding-bottom']); 
      var x = f.offsetWidth, postHeight = f.offsetHeight, mHeight; 
      mHeight = mDv.offsetHeight; 
      mDv.sY.borderBottom = "2px solid black"; 
      if(mDv.offsetHeight > mHeight)stdMode = true; 
      mDv.sY.borderBottomWidth = "0px"; 
      copyStyles(pDv, f, false, ['padding-left', 'padding-top', 'padding-right', 'padding-bottom']); 
      findPos(mDv); 
      findPos(f); 
      l.paddings[0] = mDv.yPos - f.yPos; 
      l.paddings[2] = mDv.xPos - f.xPos; 
      f.style.paddingTop = getStyle(f, "padding-bottom"); 
      f.style.paddingLeft = getStyle(f, "padding-right"); 
      findPos(mDv); 
      findPos(f); 
      l.paddings[1] = mDv.yPos - f.yPos; 
      l.paddings[3] = mDv.xPos - f.xPos; 
      f.style.paddingTop = getStyle(pDv, "padding-top"); 
      f.style.paddingLeft = getStyle(pDv, "padding-left"); 
      var y = l.paddings[2] + l.paddings[3], padHeightComp = l.paddings[0] + l.paddings[1]; 
      mDv.style.textAlign = w; 
      copyStyles(f, mDv, false, ['padding-left', 'padding-right', 'padding-top', 'padding-bottom']); 
      tDv.sY.width = f.offsetWidth + 'px'; 
      tDv.sY.height = f.offsetHeight + 'px'; 
      mDv.sY.width = x + 'px'; 
      mDv.sY.height = postHeight + 'px'; 
      tDv.sY.position = 'absolute'; 
      tDv.sY.top = '0px'; 
      tDv.sY.left = '0px'; 
      mDv.appendChild(m); 
      f.appendChild(tDv); 
      tDv.appendChild(fDv); 
      m.sY.position = 'relative'; 
      mDv.sY.position = 'relative'; 
      m.sY.top = "0"; 
      m.sY.width = "100%"; 
      mDv.sY.overflow = 'hidden'; 
      mDv.sY.left = "-" + l.paddings[2] + "px"; 
      mDv.sY.top = "-" + l.paddings[0] + "px"; 
      l.zTHeight = fDv.offsetHeight; 
      l.getContentWidth = function() {
         var a = m.childNodes, maxCWidth = compPad = 0; 
         for(var i = 0; i < a.length; i++) {
            if(a[i].offsetWidth) {
               maxCWidth = Math.max(a[i].offsetWidth, maxCWidth)}
            }; 
         l.cntRSize[0] = ((l.reqS[1] &&!l.forcedHide[1]) || l.forcedBar[1]) ? f.offsetWidth - l.barSpace[0] : f.offsetWidth; 
         l.cntSize[0] = maxCWidth + y; 
         return l.cntSize[0]}; 
      l.getContentHeight = function() {
         l.cntRSize[1] = ((l.reqS[0] &&!l.forcedHide[0]) || l.forcedBar[0]) ? f.offsetHeight - l.barSpace[1] : f.offsetHeight; 
         l.cntSize[1] = m.offsetHeight + padHeightComp - 2; 
         return l.cntSize[1]}; 
      l.fixIEDispBug = function() {
         m.sY.display = 'none'; 
         m.sY.display = 'block'}; 
      l.setWidth = function() {
         mDv.sY.width = (stdMode) ? (l.cntRSize[0] - y - brdWidthLoss) + 'px':l.cntRSize[0] + 'px'}; 
      l.setHeight = function() {
         mDv.sY.height = (stdMode) ? (l.cntRSize[1] - padHeightComp - brdHeightLoss) + 'px':l.cntRSize[1] + 'px'}; 
      l.createScrollBars = function() {
         l.getContentWidth(); 
         l.getContentHeight(); 
         tDv.vrt = new Array(); 
         var a = tDv.vrt; 
         createScrollBars(a, 'vscroller'); 
         a.barPadding = [parseInt(getStyle(a.sBr, 'padding-top')), parseInt(getStyle(a.sBr, 'padding-bottom'))]; 
         a.sBr.sY.padding = '0px'; 
         a.sBr.curPos = 0; 
         a.sBr.vertical = true; 
         a.sBr.indx = 1; 
         m.vBar = a.sBr; 
         prepareScroll(a, 0); 
         l.barSpace[0] = a.sDv.offsetWidth; 
         l.setWidth(); 
         tDv.hrz = new Array(); 
         var b = tDv.hrz; 
         createScrollBars(b, 'hscroller'); 
         b.barPadding = [parseInt(getStyle(b.sBr, 'padding-left')), parseInt(getStyle(b.sBr, 'padding-right'))]; 
         b.sBr.sY.padding = '0px'; 
         b.sBr.curPos = 0; 
         b.sBr.vertical = false; 
         b.sBr.indx = 0; 
         m.hBar = b.sBr; 
         if(wD.opera)b.sBr.sY.position = 'relative'; 
         prepareScroll(b, 0); 
         l.barSpace[1] = b.sDv.offsetHeight; 
         l.setHeight(); 
         tDv.sY.height = f.offsetHeight + 'px'; 
         b.jBox = createDiv('scrollerjogbox'); 
         tDv.appendChild(b.jBox); 
         b.jBox.onmousedown = function() {
            b.sBr.scrollBoth = true; 
            l.goScroll = b.sBr; 
            b.sBr.clicked = true; 
            b.sBr.moved = false; 
            tDv.vrt.sBr.moved = false; 
            fleXenv.addTrggr(g, 'selectstart', retFalse); 
            fleXenv.addTrggr(g, 'mousemove', mMoveBar); 
            fleXenv.addTrggr(g, 'mouseup', mMouseUp); 
            return false}
         }; 
      l.goScroll = null; 
      l.createScrollBars(); 
      m.removeChild(o); 
      if(!this.addChckTrggr(f, 'mousewheel', mWheelProc) ||!this.addChckTrggr(f, 'DOMMouseScroll', mWheelProc)) {
         f.onmousewheel = mWheelProc}; 
      this.addChckTrggr(f, 'mousewheel', mWheelProc); 
      this.addChckTrggr(f, 'DOMMouseScroll', mWheelProc); 
      f.setAttribute('tabIndex', '0'); 
      this.addTrggr(f, 'keydown', function(e) {
         if(f.focusProtect)return; if(!e) {
            var e = wD.event}; var a = e.keyCode; l.pkeY = a; l.mDPosFix(); if(l.keyAct['_' + a] &&!window.opera) {
            f.contentScroll(l.keyAct['_' + a][0], l.keyAct['_' + a][1], true); if(e.preventDefault)e.preventDefault(); return false}
         }
      ); 
      this.addTrggr(f, 'keypress', function(e) {
         if(f.focusProtect)return; if(!e) {
            var e = wD.event}; var a = e.keyCode; if(l.keyAct['_' + a]) {
            f.contentScroll(l.keyAct['_' + a][0], l.keyAct['_' + a][1], true); if(e.preventDefault)e.preventDefault(); return false}
         }
      ); 
      this.addTrggr(f, 'keyup', function() {
         l.pkeY = false}
      ); 
      this.addTrggr(g, 'mouseup', intClear); 
      this.addTrggr(f, 'mousedown', function(e) {
         if(!e)e = wD.event; var a = (e.target) ? e.target : (e.srcElement) ? e.srcElement : false; if(!a || (a.className && a.className.match(RegExp("\\bscrollgeneric\\b"))))return; l.inMposX = e.clientX; l.inMposY = e.clientY; pageScrolled(); findPos(f); intClear(); fleXenv.addTrggr(g, 'mousemove', tSelectMouse); l.mTBox = [f.xPos + 10, f.xPos + l.cntRSize[0] - 10, f.yPos + 10, f.yPos + l.cntRSize[1] - 10]}
      ); 
      function tSelectMouse(e) {
         if(!e)e = wD.event; 
         var a = e.clientX, mY = e.clientY, mdX = a + l.xScrld, mdY = mY + l.yScrld; 
         l.mOnXEdge = (mdX < l.mTBox[0] || mdX > l.mTBox[1]) ? 1 : 0; 
         l.mOnYEdge = (mdY < l.mTBox[2] || mdY > l.mTBox[3]) ? 1 : 0; 
         l.xAw = a - l.inMposX; 
         l.yAw = mY - l.inMposY; 
         l.sXdir = (l.xAw > 40) ? 1 : (l.xAw <- 40) ?- 1 : 0; 
         l.sYdir = (l.yAw > 40) ? 1 : (l.yAw <- 40) ?- 1 : 0; 
         if((l.sXdir != 0 || l.sYdir != 0) &&!l.tSelectFunc)l.tSelectFunc = wD.setInterval(function() {
            if(l.sXdir == 0 && l.sYdir == 0) {
               wD.clearInterval(l.tSelectFunc); l.tSelectFunc = false; return}; pageScrolled(); if(l.mOnXEdge == 1 || l.mOnYEdge == 1)f.contentScroll((l.sXdir * l.mOnXEdge) + "s", (l.sYdir * l.mOnYEdge) + "s", true)}
         , 45)}; 
      function intClear() {
         fleXenv.remTrggr(g, 'mousemove', tSelectMouse); 
         if(l.tSelectFunc)wD.clearInterval(l.tSelectFunc); 
         l.tSelectFunc = false; 
         if(l.barClickRetard)wD.clearTimeout(l.barClickRetard); 
         if(l.barClickScroll)wD.clearInterval(l.barClickScroll)}; 
      function pageScrolled() {
         l.xScrld = (wD.pageXOffset) ? wD.pageXOffset : (g.documentElement && g.documentElement.scrollLeft) ? g.documentElement.scrollLeft : 0; 
         l.yScrld = (wD.pageYOffset) ? wD.pageYOffset : (g.documentElement && g.documentElement.scrollTop) ? g.documentElement.scrollTop : 0}; 
      f.scrollUpdate = function(a) {
         tDv.fShow(); 
         if(tDv.getSize[1]() === 0 || tDv.getSize[0]() === 0)return; 
         m.sY.padding = '1px'; 
         var b = l.reqS[0], reqV = l.reqS[1], vBr = tDv.vrt, hBr = tDv.hrz, vUpReq, hUpReq, cPSize = []; 
         tDv.sY.width = f.offsetWidth - brdWidthLoss + 'px'; 
         tDv.sY.height = f.offsetHeight - brdHeightLoss + 'px'; 
         cPSize[0] = l.cntRSize[0]; 
         cPSize[1] = l.cntRSize[1]; 
         l.reqS[0] = l.getContentWidth() > l.cntRSize[0]; 
         l.reqS[1] = l.getContentHeight() > l.cntRSize[1]; 
         var c = (b != l.reqS[0] || reqV != l.reqS[1] || cPSize[0] != l.cntRSize[0] || cPSize[1] != l.cntRSize[1]) ? true : false; 
         vBr.sDv.setVisibility(l.reqS[1]); 
         hBr.sDv.setVisibility(l.reqS[0]); 
         vUpReq = (l.reqS[1] || l.forcedBar[1]); 
         hUpReq = (l.reqS[0] || l.forcedBar[0]); 
         l.getContentWidth(); 
         l.getContentHeight(); 
         l.setHeight(); 
         l.setWidth(); 
         if(!l.reqS[0] ||!l.reqS[1] || l.forcedHide[0] || l.forcedHide[1])hBr.jBox.fHide(); 
         else hBr.jBox.fShow(); 
         if(vUpReq)updateScroll(vBr, (hUpReq &&!l.forcedHide[0]) ? l.barSpace[1] : 0); 
         else m.sY.top = "0"; 
         if(hUpReq)updateScroll(hBr, (vUpReq &&!l.forcedHide[1]) ? l.barSpace[0] : 0); 
         else m.sY.left = "0"; 
         if(c &&!a)f.scrollUpdate(true); 
         m.sY.padding = '0px'; 
         l.edge[0] = l.edge[1] = false}; 
      f.commitScroll = f.contentScroll = function(a, b, c) {
         var d = [[false, false], [false, false]], Bar; 
         if((a || a === 0) && l.scroller[0]) {
            a = calcCScrollVal(a, 0); 
            Bar = tDv.hrz.sBr; 
            Bar.trgtScrll = (c) ? Math.min(Math.max(Bar.mxScroll, Bar.trgtScrll - a), 0) :- a; 
            Bar.contentScrollPos(); 
            d[0] = [ - Bar.trgtScrll - Bar.targetSkew, - Bar.mxScroll]}
         if((b || b === 0) && l.scroller[1]) {
            b = calcCScrollVal(b, 1); 
            Bar = tDv.vrt.sBr; 
            Bar.trgtScrll = (c) ? Math.min(Math.max(Bar.mxScroll, Bar.trgtScrll - b), 0) :- b; 
            Bar.contentScrollPos(); 
            d[1] = [ - Bar.trgtScrll - Bar.targetSkew, - Bar.mxScroll]}
         if(!c)l.edge[0] = l.edge[1] = false; 
         return d}; 
      f.scrollToElement = function(a) {
         if(a == null ||!isddvChild(a))return; 
         var b = findRCpos(a); 
         f.contentScroll(b[0] + l.paddings[2], b[1] + l.paddings[0], false); 
         f.contentScroll(0, 0, true)}; 
      copyStyles(pDv, f, '0px', ['border-left-width', 'border-right-width', 'border-top-width', 'border-bottom-width']); 
      f.removeChild(pDv); 
      f.scrollTop = 0; 
      f.scrollLeft = 0; 
      f.fleXcroll = true; 
      classChange(f, 'flexcrollactive', false); 
      f.scrollUpdate(); 
      f.contentScroll(oScrollX, s, true); 
      if(t.match(uReg)) {
         f.scrollToElement(g.getElementById(t.match(uReg)[1]))}; 
      l.sizeChangeDetect = wD.setInterval(function() {
         var n = fDv.offsetHeight; if(n != l.zTHeight) {
            f.scrollUpdate(); l.zTHeight = n}
         }
      , 2500); 
      function calcCScrollVal(v, i) {
         var a = v.toString(); 
         v = parseFloat(a); 
         return parseInt((a.match(/p$/))?v*l.cntRSize[i]*0.9:(a.match(/s$/))?v*l.cntRSize[i]*0.1:v)}function camelConv(a){var a=a.split('-'),reT=a[0],i;
         for(i = 1; parT = a[i]; i++) {
            reT += parT.charAt(0).toUpperCase() + parT.substr(1)}
         return reT}
      function getStyle(a, b) {
         if(wD.getComputedStyle)return wD.getComputedStyle(a, null).getPropertyValue(b); 
         if(a.currentStyle)return a.currentStyle[camelConv(b)]; 
         return false}; 
      function copyStyles(a, b, c, d) {
         var e = new Array(); 
         for(var i = 0; i < d.length; i++) {
            e[i] = camelConv(d[i]); 
            b.style[e[i]] = getStyle(a, d[i], e[i]); 
            if(c)a.style[e[i]] = c}
         }; 
      function createDiv(b, c) {
         var d = g.createElement('div'); 
         d.id = k + '_' + b; 
         d.className = (c) ? b : b + ' scrollgeneric'; 
         d.getSize = [function() {
            return d.offsetWidth}
         , function() {
            return d.offsetHeight}
         ]; 
         d.setSize = [function(a) {
            d.sY.width = a}
         , function(a) {
            d.sY.height = a}
         ]; 
         d.getPos = [function() {
            return getStyle(d, "left")}
         , function() {
            return getStyle(d, "top")}
         ]; 
         d.setPos = [function(a) {
            d.sY.left = a}
         , function(a) {
            d.sY.top = a}
         ]; 
         d.fHide = function() {
            d.sY.visibility = "hidden"}; 
         d.fShow = function(a) {
            d.sY.visibility = (a) ? getStyle(a, 'visibility') : "visible"}; 
         d.sY = d.style; 
         return d}; 
      function createScrollBars(a, b) {
         a.sDv = createDiv(b + 'base'); 
         a.sFDv = createDiv(b + 'basebeg'); 
         a.sSDv = createDiv(b + 'baseend'); 
         a.sBr = createDiv(b + 'bar'); 
         a.sFBr = createDiv(b + 'barbeg'); 
         a.sSBr = createDiv(b + 'barend'); 
         tDv.appendChild(a.sDv); 
         a.sDv.appendChild(a.sBr); 
         a.sDv.appendChild(a.sFDv); 
         a.sDv.appendChild(a.sSDv); 
         a.sBr.appendChild(a.sFBr); 
         a.sBr.appendChild(a.sSBr)}; 
      function prepareScroll(b, c) {
         var d = b.sDv, sBr = b.sBr, i = sBr.indx; 
         sBr.minPos = b.barPadding[0]; 
         sBr.ofstParent = d; 
         sBr.mDv = mDv; 
         sBr.scrlTrgt = m; 
         sBr.targetSkew = 0; 
         updateScroll(b, c, true); 
         sBr.doScrollPos = function() {
            sBr.curPos = (Math.min(Math.max(sBr.curPos, 0), sBr.maxPos)); 
            sBr.trgtScrll = parseInt((sBr.curPos / sBr.sRange) * sBr.mxScroll); 
            sBr.targetSkew = (sBr.curPos == 0) ? 0 : (sBr.curPos == sBr.maxPos) ? 0 : sBr.targetSkew; 
            sBr.setPos[i](sBr.curPos + sBr.minPos + "px"); 
            m.setPos[i](sBr.trgtScrll + sBr.targetSkew + "px")}; 
         sBr.contentScrollPos = function() {
            sBr.curPos = parseInt((sBr.trgtScrll * sBr.sRange) / sBr.mxScroll); 
            sBr.targetSkew = sBr.trgtScrll - parseInt((sBr.curPos / sBr.sRange) * sBr.mxScroll); 
            sBr.curPos = (Math.min(Math.max(sBr.curPos, 0), sBr.maxPos)); 
            sBr.setPos[i](sBr.curPos + sBr.minPos + "px"); 
            sBr.setPos[i](sBr.curPos + sBr.minPos + "px"); 
            m.setPos[i](sBr.trgtScrll + "px")}; 
         l.barZ = getStyle(sBr, 'z-index'); 
         sBr.sY.zIndex = (l.barZ == "auto" || l.barZ == "0" || l.barZ == 'normal') ? 2 : l.barZ; 
         mDv.sY.zIndex = getStyle(sBr, 'z-index'); 
         sBr.onmousedown = function() {
            sBr.clicked = true; 
            l.goScroll = sBr; 
            sBr.scrollBoth = false; 
            sBr.moved = false; 
            fleXenv.addTrggr(g, 'selectstart', retFalse); 
            fleXenv.addTrggr(g, 'mousemove', mMoveBar); 
            fleXenv.addTrggr(g, 'mouseup', mMouseUp); 
            return false}; 
         sBr.onmouseover = intClear; 
         d.onmousedown = d.ondblclick = function(e) {
            if(!e) {
               var e = wD.event}
            if(e.target && (e.target == b.sFBr || e.target == b.sSBr || e.target == b.sBr))return; 
            if(e.srcElement && (e.srcElement == b.sFBr || e.srcElement == b.sSBr || e.srcElement == b.sBr))return; 
            var a, mV = []; 
            pageScrolled(); 
            l.mDPosFix(); 
            findPos(sBr); 
            a = (sBr.vertical) ? e.clientY + l.yScrld - sBr.yPos : e.clientX + l.xScrld - sBr.xPos; 
            mV[sBr.indx] = (a < 0) ? l.baseAct[0] : l.baseAct[1]; 
            mV[1 - sBr.indx] = 0; 
            f.contentScroll(mV[0], mV[1], true); 
            if(e.type != "dblclick") {
               intClear(); 
               l.barClickRetard = wD.setTimeout(function() {
                  l.barClickScroll = wD.setInterval(function() {
                     f.contentScroll(mV[0], mV[1], true)}
                  , 80)}
               , 425)}
            return false}; 
         d.setVisibility = function(r) {
            if(r) {
               d.fShow(f); 
               l.forcedHide[i] = (getStyle(d, "visibility") == "hidden") ? true : false; 
               if(!l.forcedHide[i])sBr.fShow(f); 
               else sBr.fHide(); 
               l.scroller[i] = true; 
               classChange(d, "", "flexinactive")}
            else {
               d.fHide(); 
               sBr.fHide(); 
               l.forcedBar[i] = (getStyle(d, "visibility") != "hidden") ? true : false; 
               l.scroller[i] = false; 
               sBr.curPos = 0; 
               m.setPos[i]('0px'); 
               classChange(d, "flexinactive", "")}
            mDv.setPos[1 - i]((l.forcedPos[i] && (r || l.forcedBar[i]) &&!l.forcedHide[i]) ? l.barSpace[1 - i] - l.paddings[i * 2] + "px" : "-" + l.paddings[i * 2] + "px")}; 
         d.onmouseclick = retFalse}; 
      function updateScroll(a, b, c) {
         var d = a.sDv, sBr = a.sBr, sFDv = a.sFDv, sFBr = a.sFBr, sSDv = a.sSDv, sSBr = a.sSBr, i = sBr.indx; 
         d.setSize[i](tDv.getSize[i]() - b + 'px'); 
         d.setPos[1 - i](tDv.getSize[1 - i]() - d.getSize[1 - i]() + 'px'); 
         l.forcedPos[i] = (parseInt(d.getPos[1 - i]()) === 0) ? true : false; 
         a.padLoss = a.barPadding[0] + a.barPadding[1]; 
         a.baseProp = parseInt((d.getSize[i]() - a.padLoss) * 0.75); 
         sBr.aSize = Math.min(Math.max(Math.min(parseInt(l.cntRSize[i]/l.cntSize[i]*d.getSize[i]()),a.baseProp),45),a.baseProp);
         sBr.setSize[i](sBr.aSize + 'px'); 
         sBr.maxPos = d.getSize[i]() - sBr.getSize[i]() - a.padLoss; 
         sBr.curPos = Math.min(Math.max(0, sBr.curPos), sBr.maxPos); 
         sBr.setPos[i](sBr.curPos + sBr.minPos + 'px'); 
         sBr.mxScroll = mDv.getSize[i]() - l.cntSize[i]; 
         sBr.sRange = sBr.maxPos; 
         sFDv.setSize[i](d.getSize[i]() - sSDv.getSize[i]() + 'px'); 
         sFBr.setSize[i](sBr.getSize[i]() - sSBr.getSize[i]() + 'px'); 
         sSBr.setPos[i](sBr.getSize[i]() - sSBr.getSize[i]() + 'px'); 
         sSDv.setPos[i](d.getSize[i]() - sSDv.getSize[i]() + 'px'); 
         if(!c)sBr.doScrollPos(); 
         l.fixIEDispBug()}; 
      l.mDPosFix = function() {
         mDv.scrollTop = 0; 
         mDv.scrollLeft = 0; 
         f.scrollTop = 0; 
         f.scrollLeft = 0}; 
      this.addTrggr(wD, 'load', function() {
         if(f.fleXcroll)f.scrollUpdate()}
      ); 
      this.addTrggr(wD, 'resize', function() {
         if(f.refreshTimeout)wD.clearTimeout(f.refreshTimeout); f.refreshTimeout = wD.setTimeout(function() {
            if(f.fleXcroll)f.scrollUpdate()}
         , 80)}
      ); 
      for(var j = 0, inputName; inputName = u[j]; j++) {
         var z = f.getElementsByTagName(inputName); 
         for(var i = 0, formItem; formItem = z[i]; i++) {
            fleXenv.addTrggr(formItem, 'focus', function() {
               f.focusProtect = true}
            ); 
            fleXenv.addTrggr(formItem, 'blur', onblur = function() {
               f.focusProtect = false}
            )}
         }; 
      function retFalse() {
         return false}; 
      function mMoveBar(e) {
         if(!e) {
            var e = wD.event}; 
         var a = l.goScroll, movBr, maxx, xScroll, yScroll; 
         if(a == null)return; 
         if(!fleXenv.w3events &&!e.button)mMouseUp(); 
         maxx = (a.scrollBoth) ? 2 : 1; 
         for(var i = 0; i < maxx; i++) {
            movBr = (i == 1) ? a.scrlTrgt.vBar : a; 
            if(a.clicked) {
               if(!movBr.moved) {
                  l.mDPosFix(); 
                  findPos(movBr); 
                  findPos(movBr.ofstParent); 
                  movBr.pointerOffsetY = e.clientY - movBr.yPos; 
                  movBr.pointerOffsetX = e.clientX - movBr.xPos; 
                  movBr.inCurPos = movBr.curPos; 
                  movBr.moved = true}; 
               movBr.curPos = (movBr.vertical) ? e.clientY - movBr.pointerOffsetY - movBr.ofstParent.yPos - movBr.minPos : e.clientX - movBr.pointerOffsetX - movBr.ofstParent.xPos - movBr.minPos; 
               if(a.scrollBoth)movBr.curPos = movBr.curPos + (movBr.curPos - movBr.inCurPos); 
               movBr.doScrollPos()}
            else movBr.moved = false}
         }; 
      function mMouseUp() {
         if(l.goScroll != null) {
            l.goScroll.clicked = false}
         l.goScroll = null; 
         fleXenv.remTrggr(g, 'selectstart', retFalse); 
         fleXenv.remTrggr(g, 'mousemove', mMoveBar); 
         fleXenv.remTrggr(g, 'mouseup', mMouseUp)}; 
      function mWheelProc(e) {
         if(!e)e = wD.event; 
         if(!this.fleXcroll)return; 
         var a = this, vEdge, hEdge, hoverH = false, delta = 0, iNDx; 
         l.mDPosFix(); 
         hElem = (e.target) ? e.target : (e.srcElement) ? e.srcElement : this; 
         if(hElem.id && hElem.id.match(/_hscroller/))hoverH=true;
         if(e.wheelDelta)delta =- e.wheelDelta; 
         if(e.detail)delta = e.detail; 
         delta = (delta < 0) ?- 1 :+ 1; 
         iNDx = (delta < 0) ? 0 : 1; 
         l.edge[1 - iNDx] = false; 
         if((l.edge[iNDx] &&!hoverH) || (!l.scroller[0] &&!l.scroller[1]))return; 
         if(l.scroller[1] &&!hoverH)scrollState = f.contentScroll(false, l.wheelAct[iNDx], true); 
         vEdge =!l.scroller[1] || hoverH || (l.scroller[1] && ((scrollState[1][0] == scrollState[1][1] && delta > 0) || (scrollState[1][0] == 0 && delta < 0))); 
         if(l.scroller[0] && (!l.scroller[1] || hoverH))scrollState = f.contentScroll(l.wheelAct[iNDx], false, true); 
         hEdge =!l.scroller[0] || (l.scroller[0] && l.scroller[1] && vEdge &&!hoverH) || (l.scroller[0] && ((scrollState[0][0] == scrollState[0][1] && delta > 0) || (scrollState[0][0] == 0 && delta < 0))); 
         if(vEdge && hEdge &&!hoverH)l.edge[iNDx] = true; 
         else l.edge[iNDx] = false; 
         if(e.preventDefault)e.preventDefault(); 
         return false}; 
      function isddvChild(a) {
         while(a.parentNode) {
            a = a.parentNode; 
            if(a == f)return true}
         return false}; 
      function findPos(a) {
         var b = a, curleft = curtop = 0; 
         var c = ""; 
         if(b.offsetParent) {
            while(b) {
               curleft += b.offsetLeft; 
               curtop += b.offsetTop; 
               b = b.offsetParent; 
               c += curtop + " "}
            }
         else if(b.x) {
            curleft += b.x; 
            curtop += b.y}
         a.xPos = curleft; 
         a.yPos = curtop}; 
      function findRCpos(a) {
         var b = a; 
         curleft = curtop = 0; 
         while(!b.offsetHeight && b.parentNode && b != m && getStyle(b, 'display') == "inline") {
            b = b.parentNode}
         if(b.offsetParent) {
            while(b != m) {
               curleft += b.offsetLeft; 
               curtop += b.offsetTop; 
               b = b.offsetParent}
            }
         return[curleft, curtop]}; 
      function classChange(a, b, c) {
         if(!a.className)a.className = ''; 
         var d = a.className; 
         if(b &&!d.match(RegExp("(^|\\s)" + b + "($|\\s)")))d = d.replace(/(\S$)/,'$1 ')+b;
         if(c)d = d.replace(RegExp("((^|\\s)+" + c + ")+($|\\s)", "g"), '$2').replace(/\s$/,'');
         a.className = d}
      }
   , globalInit : function() {
      if(fleXenv.catchFastInit)window.clearInterval(fleXenv.catchFastInit); 
      var d = /#([^#.]*)$/, urlExt = /(.*)#.*$/, matcH, i, anchoR, anchorList = document.getElementsByTagName("a"), urlBase = document.location.href; 
      if(urlBase.match(urlExt))urlBase = urlBase.match(urlExt)[1]; 
      for(i = 0; anchoR = anchorList[i]; i++) {
         if(anchoR.href && anchoR.href.match(d) && anchoR.href.match(urlExt) && urlBase === anchoR.href.match(urlExt)[1]) {
            anchoR.fleXanchor = true; 
            fleXenv.addTrggr(anchoR, 'click', function(e) {
               if(!e)e = window.event; var a = (e.srcElement) ? e.srcElement : this; while(!a.fleXanchor && a.parentNode) {
                  a = a.parentNode}; if(!a.fleXanchor)return; var b = document.getElementById(a.href.match(d)[1]), eScroll = false; if(b == null)b = (b = document.getElementsByName(a.href.match(d)[1])[0]) ? b : null; if(b != null) {
                  var c = b; while(c.parentNode) {
                     c = c.parentNode; if(c.scrollToElement) {
                        c.scrollToElement(b); eScroll = c}
                     }; if(eScroll) {
                     if(e.preventDefault)e.preventDefault(); document.location.href = "#" + a.href.match(d)[1]; eScroll.fleXdata.mDPosFix(); return false}
                  }
               }
            )}
         }; 
      fleXenv.initByClass(); 
      if(window.onfleXcrollRun)window.onfleXcrollRun()}
   , initByClass : function() {
      if(fleXenv.initialized)return; 
      fleXenv.initialized = true; 
      var a = fleXenv.getByClassName(document.getElementsByTagName("body")[0], "div", 'flexcroll'); 
      for(var i = 0, tgDiv; tgDiv = a[i]; i++)fleXenv.fleXcrollMain(tgDiv)}
   , getByClassName : function(a, b, c) {
      if(typeof(a) == 'string')a = document.getElementById(a); 
      if(a == null)return false; 
      var d = new RegExp("(^|\\s)" + c + "($|\\s)"), clsnm, retArray = [], key = 0; 
      var e = a.getElementsByTagName(b); 
      for(var i = 0, pusher; pusher = e[i]; i++) {
         if(pusher.className && pusher.className.match(d)) {
            retArray[key] = pusher; 
            key++}
         }; 
      return retArray}
   , catchFastInit : window.setInterval(function() {
      var a = document.getElementById('flexcroll-init'); if(a != null) {
         fleXenv.initByClass(); window.clearInterval(fleXenv.catchFastInit)}
      }
   , 100), addTrggr : function(a, b, c) {
      if(!fleXenv.addChckTrggr(a, b, c) && a.attachEvent) {
         a.attachEvent('on' + b, c)}
      }
   , addChckTrggr : function(a, b, c) {
      if(a.addEventListener) {
         a.addEventListener(b, c, false); 
         fleXenv.w3events = true; 
         window.addEventListener("unload", function() {
            fleXenv.remTrggr(a, b, c)}
         , false); 
         return true}
      else return false}
   , remTrggr : function(a, b, c) {
      if(!fleXenv.remChckTrggr(a, b, c) && a.detachEvent)a.detachEvent('on' + b, c)}
   , remChckTrggr : function(a, b, c) {
      if(a.removeEventListener) {
         a.removeEventListener(b, c, false); 
         return true}
      else return false}
   }; 
function CSBfleXcroll(a) {
   fleXenv.fleXcrollMain(a)}; 
fleXenv.fleXcrollInit(); 
