﻿/**
* 3minutes
*
* @version 0.9T
* @author Robert Stein
* @copyright 2008 Deutsche Telekom
*/

var threeminEnv={

  threeminScrollInit:function(){
    this.addTrggr(window,'load',this.globalInit);
  },

  threeminScrollMain:function(dDv){
    //Main code beg
    var dC=document,wD=window,nV=navigator;
    if(!dC.getElementById||!dC.createElement)return;
    if (typeof(dDv)=='string')dDv=document.getElementById(dDv);
    if(dDv==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(dDv.scrollUpdate){dDv.scrollUpdate();return;};
    if(!dDv.id||dDv.id==''){
      var sTid="threeminScroll__",c=1;
      while(document.getElementById(sTid+c)!=null){
        c++
      };
      dDv.id=sTid+c;
    }
    var targetId=dDv.id;
    dDv.threeminData=new Object();var sC=dDv.threeminData;
    sC.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']};
    sC.wheelAct=["-2s","2s"];
    sC.baseAct=["-2s","2s"];
    var cDv=createDiv('contentwrapper',true),mDv=createDiv('mcontentwrapper',true),tDv=createDiv('scrollwrapper',true),pDv=createDiv('copyholder',true);
    var iDv=createDiv('domfixdiv',true),fDv=createDiv('zoomdetectdiv',true),stdMode=false;
    pDv.sY.border='1px solid blue';pDv.fHide();
    dDv.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 brdHeight=dDv.offsetHeight,brdWidth=dDv.offsetWidth;
    copyStyles(dDv,pDv,'0px',['border-left-width','border-right-width','border-top-width','border-bottom-width']);
    var intlHeight=dDv.offsetHeight,intlWidth=dDv.offsetWidth,brdWidthLoss=brdWidth-intlWidth,brdHeightLoss=brdHeight-intlHeight;
    var oScrollY=(dDv.scrollTop)?dDv.scrollTop:0,oScrollX=(dDv.scrollLeft)?dDv.scrollLeft:0;
    var urlBase=document.location.href,uReg=/#([^#.]*)$/;
    var focusProtectList=['textarea','input','select'];
    sC.scroller=[];sC.forcedBar=[];sC.containerSize=sC.cntRSize=[];sC.contentSize=sC.cntSize=[];sC.edge=[false,false];
    sC.reqS=[];sC.barSpace=[0,0];sC.forcedHide=[];sC.forcedPos=[];sC.paddings=[];
    while (dDv.firstChild) {cDv.appendChild(dDv.firstChild)};
    cDv.appendChild(iDv);dDv.appendChild(mDv);dDv.appendChild(pDv);
    if(getStyle(dDv,'position')!='absolute') dDv.style.position="relative";

    var dAlign=getStyle(dDv,'text-align');dDv.style.textAlign='left';
    mDv.sY.width="100px";mDv.sY.height="100px";mDv.sY.top="0px";mDv.sY.left="0px";
    copyStyles(dDv,pDv,"0px",['padding-left','padding-top','padding-right','padding-bottom']);
    var postWidth=dDv.offsetWidth,postHeight=dDv.offsetHeight,mHeight;
    mHeight=mDv.offsetHeight;mDv.sY.borderBottom="2px solid black";
    if(mDv.offsetHeight>mHeight)stdMode=true;
    mDv.sY.borderBottomWidth="0px";
    copyStyles(pDv,dDv,false,['padding-left','padding-top','padding-right','padding-bottom']);
    findPos(mDv);findPos(dDv);
    sC.paddings[0]=mDv.yPos-dDv.yPos;sC.paddings[2]=mDv.xPos-dDv.xPos;
    dDv.style.paddingTop=getStyle(dDv,"padding-bottom");dDv.style.paddingLeft=getStyle(dDv,"padding-right");
    findPos(mDv);findPos(dDv);
    sC.paddings[1]=mDv.yPos-dDv.yPos;sC.paddings[3]=mDv.xPos-dDv.xPos;
    dDv.style.paddingTop=getStyle(pDv,"padding-top");dDv.style.paddingLeft=getStyle(pDv,"padding-left");
    var padWidthComp=sC.paddings[2]+sC.paddings[3],padHeightComp=sC.paddings[0]+sC.paddings[1];

    mDv.style.textAlign=dAlign;
    copyStyles(dDv,mDv,false,['padding-left','padding-right','padding-top','padding-bottom']);
    tDv.sY.width=dDv.offsetWidth+'px';tDv.sY.height=dDv.offsetHeight+'px';
    mDv.sY.width=postWidth+'px'; mDv.sY.height=postHeight+'px';
    tDv.sY.position='absolute';tDv.sY.top='0px';tDv.sY.left='0px';
    tDv.fHide();

    mDv.appendChild(cDv);
    dDv.appendChild(tDv);
    tDv.appendChild(fDv);

    cDv.sY.position='relative';
    mDv.sY.position='relative';
    cDv.sY.top="0";cDv.sY.width="100%";//fix IE7
    mDv.sY.overflow='hidden';
    mDv.sY.left="-"+sC.paddings[2]+"px";
    mDv.sY.top="-"+sC.paddings[0]+"px";
    sC.zTHeight=fDv.offsetHeight;

    sC.getContentWidth=function(){
      var cChilds=cDv.childNodes,maxCWidth=compPad=0;
      for(var i=0;i<cChilds.length;i++){if(cChilds[i].offsetWidth){maxCWidth=Math.max(cChilds[i].offsetWidth,maxCWidth)}};
      sC.cntRSize[0]=((sC.reqS[1]&&!sC.forcedHide[1])||sC.forcedBar[1])?dDv.offsetWidth-sC.barSpace[0]:dDv.offsetWidth;
      sC.cntSize[0]=maxCWidth+padWidthComp;
      return sC.cntSize[0];
    };
    sC.getContentHeight=function(){
      sC.cntRSize[1]=((sC.reqS[0]&&!sC.forcedHide[0])||sC.forcedBar[0])?dDv.offsetHeight-sC.barSpace[1]:dDv.offsetHeight;
      sC.cntSize[1]=cDv.offsetHeight+padHeightComp-2;
      return sC.cntSize[1];
    };

    sC.fixIEDispBug=function(){cDv.sY.display='none';cDv.sY.display='block';};
    sC.setWidth=function(){mDv.sY.width=(stdMode)?(sC.cntRSize[0]-padWidthComp-brdWidthLoss)+'px':sC.cntRSize[0]+'px';};
    sC.setHeight=function(){mDv.sY.height=(stdMode)?(sC.cntRSize[1]-padHeightComp-brdHeightLoss)+'px':sC.cntRSize[1]+'px';};

    sC.createScrollBars=function(){
      sC.getContentWidth();sC.getContentHeight();
      //vert
      tDv.vrt=new Array();var vrT=tDv.vrt;
      createScrollBars(vrT,'vscroller');
      vrT.barPadding=[parseInt(getStyle(vrT.sBr,'padding-top')),parseInt(getStyle(vrT.sBr,'padding-bottom'))];
      vrT.sBr.sY.padding='0px';vrT.sBr.curPos=0;vrT.sBr.vertical=true;
      vrT.sBr.indx=1; cDv.vBar=vrT.sBr;
      prepareScroll(vrT,0);sC.barSpace[0]=vrT.sDv.offsetWidth;sC.setWidth();
      //horiz
      tDv.hrz=new Array();var hrZ=tDv.hrz;
      createScrollBars(hrZ,'hscroller');
      hrZ.barPadding=[parseInt(getStyle(hrZ.sBr,'padding-left')),parseInt(getStyle(hrZ.sBr,'padding-right'))];
      hrZ.sBr.sY.padding='0px';hrZ.sBr.curPos=0;hrZ.sBr.vertical=false;
      hrZ.sBr.indx=0; cDv.hBar=hrZ.sBr;
      if(wD.opera) hrZ.sBr.sY.position='relative';
      prepareScroll(hrZ,0);
      sC.barSpace[1]=hrZ.sDv.offsetHeight;sC.setHeight();
      tDv.sY.height=dDv.offsetHeight+'px';
      // jog
      hrZ.jBox=createDiv('scrollerjogbox');
      tDv.appendChild(hrZ.jBox);hrZ.jBox.onmousedown=function(){
        hrZ.sBr.scrollBoth=true;sC.goScroll=hrZ.sBr;hrZ.sBr.clicked=true;
        hrZ.sBr.moved=false;tDv.vrt.sBr.moved=false;
        threeminEnv.addTrggr(dC,'selectstart',retFalse);threeminEnv.addTrggr(dC,'mousemove',mMoveBar);threeminEnv.addTrggr(dC,'mouseup',mMouseUp);
        return false;
      };
    };

    sC.goScroll=null;
    sC.createScrollBars();
    cDv.removeChild(iDv);

    if(!this.addChckTrggr(dDv,'mousewheel',mWheelProc)||!this.addChckTrggr(dDv,'DOMMouseScroll',mWheelProc)){dDv.onmousewheel=mWheelProc;};
    this.addChckTrggr(dDv,'mousewheel',mWheelProc);
    this.addChckTrggr(dDv,'DOMMouseScroll',mWheelProc);
    dDv.setAttribute('tabIndex','0');

    this.addTrggr(dDv,'keydown',function(e){
      if(dDv.focusProtect) return;
      if(!e){var e=wD.event;};
      var pK=e.keyCode;
      sC.pkeY=pK;
      sC.mDPosFix();
      if(sC.keyAct['_'+pK]&&!window.opera){dDv.contentScroll(sC.keyAct['_'+pK][0],sC.keyAct['_'+pK][1],true);if(e.preventDefault) e.preventDefault();return false;};
    });
    this.addTrggr(dDv,'keypress',function(e){//make Opera Happy
      if(dDv.focusProtect) return;
      if(!e){var e=wD.event;};var pK=e.keyCode;
      if(sC.keyAct['_'+pK]){dDv.contentScroll(sC.keyAct['_'+pK][0],sC.keyAct['_'+pK][1],true);if(e.preventDefault) e.preventDefault();return false;};
    });

    this.addTrggr(dDv,'keyup',function(){sC.pkeY=false});

    this.addTrggr(dC,'mouseup',intClear);
    this.addTrggr(dDv,'mousedown',function(e){
      if(!e) e=wD.event;
      var cTrgt=(e.target)?e.target:(e.srcElement)?e.srcElement:false;
      if(!cTrgt||(cTrgt.className&&cTrgt.className.match(RegExp("\\bscrollgeneric\\b")))) return;
      sC.inMposX=e.clientX;sC.inMposY=e.clientY;
      pageScrolled();findPos(dDv);intClear();
      threeminEnv.addTrggr(dC,'mousemove',tSelectMouse);
      sC.mTBox=[dDv.xPos+10,dDv.xPos+sC.cntRSize[0]-10,dDv.yPos+10,dDv.yPos+sC.cntRSize[1]-10];
    });

    function tSelectMouse(e){
      if(!e) e=wD.event;
      var mX=e.clientX,mY=e.clientY,mdX=mX+sC.xScrld,mdY=mY+sC.yScrld;
      sC.mOnXEdge=(mdX<sC.mTBox[0]||mdX>sC.mTBox[1])?1:0;
      sC.mOnYEdge=(mdY<sC.mTBox[2]||mdY>sC.mTBox[3])?1:0;
      sC.xAw=mX-sC.inMposX;sC.yAw=mY-sC.inMposY;
      sC.sXdir=(sC.xAw>40)?1:(sC.xAw<-40)?-1:0;sC.sYdir=(sC.yAw>40)?1:(sC.yAw<-40)?-1:0;
      if((sC.sXdir!=0||sC.sYdir!=0)&&!sC.tSelectFunc) sC.tSelectFunc=wD.setInterval(function(){
        if(sC.sXdir==0&&sC.sYdir==0){wD.clearInterval(sC.tSelectFunc);sC.tSelectFunc=false;return;};pageScrolled();
        if(sC.mOnXEdge==1||sC.mOnYEdge==1) dDv.contentScroll((sC.sXdir*sC.mOnXEdge)+"s",(sC.sYdir*sC.mOnYEdge)+"s",true);
      },45)
    }
    function intClear(){
      threeminEnv.remTrggr(dC,'mousemove',tSelectMouse);if(sC.tSelectFunc) wD.clearInterval(sC.tSelectFunc);sC.tSelectFunc=false;
      if(sC.barClickRetard) wD.clearTimeout(sC.barClickRetard); if(sC.barClickScroll) wD.clearInterval(sC.barClickScroll);
    }
    function pageScrolled(){
      sC.xScrld=(wD.pageXOffset)?wD.pageXOffset:(dC.documentElement&&dC.documentElement.scrollLeft)?dC.documentElement.scrollLeft:0;
      sC.yScrld=(wD.pageYOffset)?wD.pageYOffset:(dC.documentElement&&dC.documentElement.scrollTop)?dC.documentElement.scrollTop:0;
    }

    dDv.scrollUpdate=function(recurse){
      if(tDv.getSize[1]()===0||tDv.getSize[0]()===0) return;
      cDv.sY.padding='1px';var reqH=sC.reqS[0],reqV=sC.reqS[1],vBr=tDv.vrt,hBr=tDv.hrz,vUpReq,hUpReq,cPSize=[];
      tDv.sY.width=dDv.offsetWidth-brdWidthLoss+'px';tDv.sY.height=dDv.offsetHeight-brdHeightLoss+'px';
      cPSize[0]=sC.cntRSize[0];cPSize[1]=sC.cntRSize[1];
      sC.reqS[0]=sC.getContentWidth()>sC.cntRSize[0];
      sC.reqS[1]=sC.getContentHeight()>sC.cntRSize[1];
      var stateChange=(reqH!=sC.reqS[0]||reqV!=sC.reqS[1]||cPSize[0]!=sC.cntRSize[0]||cPSize[1]!=sC.cntRSize[1])?true:false;
      vBr.sDv.setVisibility(sC.reqS[1]);hBr.sDv.setVisibility(sC.reqS[0]);
      vUpReq=(sC.reqS[1]||sC.forcedBar[1]);hUpReq=(sC.reqS[0]||sC.forcedBar[0]);
      sC.getContentWidth();sC.getContentHeight();sC.setHeight();sC.setWidth();
      if(!sC.reqS[0]||!sC.reqS[1]||sC.forcedHide[0]||sC.forcedHide[1]) hBr.jBox.fHide();
      else {
        hBr.jBox.fShow();
      }
      if(vUpReq) updateScroll(vBr,(hUpReq&&!sC.forcedHide[0])?sC.barSpace[1]:0);
      else {
        cDv.sY.top="0";
      }
      if(hUpReq) updateScroll(hBr,(vUpReq&&!sC.forcedHide[1])?sC.barSpace[0]:0);
      else {
        cDv.sY.left="0";
      }
      if(stateChange&&!recurse) dDv.scrollUpdate(true);
      cDv.sY.padding='0px';
      sC.edge[0]=sC.edge[1]=false;
    };

    dDv.commitScroll=dDv.contentScroll=function(xPos,yPos,relative){
      var reT=[[false,false],[false,false]],Bar;
      if((xPos||xPos===0)&&sC.scroller[0]){xPos=calcCScrollVal(xPos,0);Bar=tDv.hrz.sBr;Bar.trgtScrll=(relative)?Math.min(Math.max(Bar.mxScroll,Bar.trgtScrll-xPos),0):-xPos;Bar.contentScrollPos();reT[0]=[-Bar.trgtScrll-Bar.targetSkew,-Bar.mxScroll]}
      if((yPos||yPos===0)&&sC.scroller[1]){yPos=calcCScrollVal(yPos,1);Bar=tDv.vrt.sBr;Bar.trgtScrll=(relative)?Math.min(Math.max(Bar.mxScroll,Bar.trgtScrll-yPos),0):-yPos;Bar.contentScrollPos();reT[1]=[-Bar.trgtScrll-Bar.targetSkew,-Bar.mxScroll]}
      if(!relative) sC.edge[0]=sC.edge[1]=false;
      return reT;
    };

    dDv.scrollToElement=function(tEM){
      if(tEM==null||!isddvChild(tEM)) return;
      var sPos=findRCpos(tEM);
      dDv.contentScroll(sPos[0]+sC.paddings[2],sPos[1]+sC.paddings[0],false);
      dDv.contentScroll(0,0,true);
    };

    copyStyles(pDv,dDv,'0px',['border-left-width','border-right-width','border-top-width','border-bottom-width']);

    dDv.removeChild(pDv);
    dDv.scrollTop=0;dDv.scrollLeft=0;
    dDv.threeminScroll=true;
    classChange(dDv,'threeminScrollactive',false);
    dDv.scrollUpdate();
    dDv.contentScroll(oScrollX,oScrollY,true);
    if(urlBase.match(uReg)) {dDv.scrollToElement(dC.getElementById(urlBase.match(uReg)[1]));}
    tDv.fShow();

    sC.sizeChangeDetect=wD.setInterval(function(){
      var n=fDv.offsetHeight;if(n!=sC.zTHeight){dDv.scrollUpdate();sC.zTHeight=n};
    },2500);

    function calcCScrollVal(v,i){
      var stR=v.toString();v=parseFloat(stR);
      return parseInt((stR.match(/p$/))?v*sC.cntRSize[i]*0.9:(stR.match(/s$/))?v*sC.cntRSize[i]*0.1:v);
    }
    function camelConv(spL){
      var spL=spL.split('-'),reT=spL[0],i;
      for(i=1;parT=spL[i];i++) {reT +=parT.charAt(0).toUpperCase()+parT.substr(1);}
      return reT;
    }
    function getStyle(elem,style){
      if(wD.getComputedStyle) return wD.getComputedStyle(elem,null).getPropertyValue(style);
      if(elem.currentStyle) return elem.currentStyle[camelConv(style)];
      return false;
    };

    function copyStyles(src,dest,replaceStr,sList){
      var camelList = new Array();
      for (var i=0;i<sList.length;i++){
        camelList[i]=camelConv(sList[i]);
        dest.style[camelList[i]] = getStyle(src,sList[i],camelList[i]);
        if(replaceStr) src.style[camelList[i]] = replaceStr;
      }
    };
    function createDiv(typeName,noGenericClass){
      var nDiv=dC.createElement('div')//,pTx=dC.createTextNode('\u00a0');
      nDiv.id=targetId+'_'+typeName;
      nDiv.className=(noGenericClass)?typeName:typeName+' scrollgeneric';
      nDiv.getSize=[function(){return nDiv.offsetWidth;},function(){return nDiv.offsetHeight;}];
      nDiv.setSize=[function(sVal){nDiv.sY.width=sVal;},function(sVal){nDiv.sY.height=sVal;}];
      nDiv.getPos=[function(){return getStyle(nDiv,"left");},function(){return getStyle(nDiv,"top");}];
      nDiv.setPos=[function(sVal){nDiv.sY.left=sVal;},function(sVal){nDiv.sY.top=sVal;}];
      nDiv.fHide=function(){nDiv.sY.visibility="hidden"};
      nDiv.fShow=function(coPy){nDiv.sY.visibility=(coPy)?getStyle(coPy,'visibility'):"visible"};
      nDiv.sY=nDiv.style;
      //	if(!noGenericClass) nDiv.appendChild(pTx);
      return nDiv;

    };
    function createScrollBars(ary,bse){
      ary.sDv=createDiv(bse+'base');ary.sFDv=createDiv(bse+'basebeg');
      ary.sSDv=createDiv(bse+'baseend');ary.sBr=createDiv(bse+'bar');
      ary.sFBr=createDiv(bse+'barbeg');ary.sSBr=createDiv(bse+'barend');
      tDv.appendChild(ary.sDv);ary.sDv.appendChild(ary.sBr);
      ary.sDv.appendChild(ary.sFDv);ary.sDv.appendChild(ary.sSDv);
      ary.sBr.appendChild(ary.sFBr);ary.sBr.appendChild(ary.sSBr);
    };
    function prepareScroll(bAr,reqSpace){
      var sDv=bAr.sDv,sBr=bAr.sBr,i=sBr.indx;
      sBr.minPos=bAr.barPadding[0];
      sBr.ofstParent=sDv;
      sBr.mDv=mDv;
      sBr.scrlTrgt=cDv;
      sBr.targetSkew=0;
      updateScroll(bAr,reqSpace,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");
        cDv.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");
        cDv.setPos[i](sBr.trgtScrll+"px");
      };

      sC.barZ=getStyle(sBr,'z-index');
      sBr.sY.zIndex=(sC.barZ=="auto"||sC.barZ=="0"||sC.barZ=='normal')?2:sC.barZ;
      mDv.sY.zIndex=getStyle(sBr,'z-index');

      sBr.onmousedown=function(){
        sBr.clicked=true;sC.goScroll=sBr;sBr.scrollBoth=false;sBr.moved=false;
        threeminEnv.addTrggr(dC,'selectstart',retFalse);
        threeminEnv.addTrggr(dC,'mousemove',mMoveBar);
        threeminEnv.addTrggr(dC,'mouseup',mMouseUp);
        return false;
      };

      sBr.onmouseover=intClear;

      sDv.onmousedown=sDv.ondblclick=function(e){
        if(!e){var e=wD.event;}
        if(e.target&&(e.target==bAr.sFBr||e.target==bAr.sSBr||e.target==bAr.sBr)) return;
        if(e.srcElement&&(e.srcElement==bAr.sFBr||e.srcElement==bAr.sSBr||e.srcElement==bAr.sBr)) return;
        var relPos,mV=[];pageScrolled();
        sC.mDPosFix();
        findPos(sBr);
        relPos=(sBr.vertical)?e.clientY+sC.yScrld-sBr.yPos:e.clientX+sC.xScrld-sBr.xPos;
        mV[sBr.indx]=(relPos<0)?sC.baseAct[0]:sC.baseAct[1];mV[1-sBr.indx]=0;
        dDv.contentScroll(mV[0],mV[1],true);
        if(e.type!="dblclick") {
          intClear();
          sC.barClickRetard=wD.setTimeout(function(){
            sC.barClickScroll=wD.setInterval(function(){
              dDv.contentScroll(mV[0],mV[1],true);
            },80)
          },425);
        }
        return false;
      };
      sDv.setVisibility=function(r){
        if(r){
          sDv.fShow(dDv);
          sC.forcedHide[i]=(getStyle(sDv,"visibility")=="hidden")?true:false;
          if(!sC.forcedHide[i]) sBr.fShow(dDv);
          else {
            sBr.fHide();
          }
          sC.scroller[i]=true;
          classChange(sDv,"","tmScrInactive");
        }
        else {
          sDv.fHide();
          sBr.fHide();
          sC.forcedBar[i]=(getStyle(sDv,"visibility")!="hidden")?true:false;
          sC.scroller[i]=false;sBr.curPos=0;cDv.setPos[i]('0px');
          classChange(sDv,"tmScrInactive","");
        }
        mDv.setPos[1-i]((sC.forcedPos[i]&&(r||sC.forcedBar[i])&&!sC.forcedHide[i])?sC.barSpace[1-i]-sC.paddings[i*2]+"px":"-"+sC.paddings[i*2]+"px");
      };
      sDv.onmouseclick = retFalse;
    };

    function updateScroll(bAr,reqSpace,firstRun){
      var sDv=bAr.sDv,sBr=bAr.sBr,sFDv=bAr.sFDv,sFBr=bAr.sFBr,sSDv=bAr.sSDv,sSBr=bAr.sSBr,i=sBr.indx;
      sDv.setSize[i](tDv.getSize[i]()-reqSpace+'px');sDv.setPos[1-i](tDv.getSize[1-i]()-sDv.getSize[1-i]()+'px');
      sC.forcedPos[i]=(parseInt(sDv.getPos[1-i]())===0)?true:false;
      bAr.padLoss=bAr.barPadding[0]+bAr.barPadding[1];bAr.baseProp=parseInt((sDv.getSize[i]()-bAr.padLoss)*0.75);
      sBr.aSize=Math.min(Math.max(Math.min(parseInt(sC.cntRSize[i]/sC.cntSize[i]*sDv.getSize[i]()),bAr.baseProp),45),bAr.baseProp);
      sBr.setSize[i](sBr.aSize+'px');sBr.maxPos=sDv.getSize[i]()-sBr.getSize[i]()-bAr.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]()-sC.cntSize[i];
      sBr.sRange=sBr.maxPos;
      sFDv.setSize[i](sDv.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](sDv.getSize[i]()-sSDv.getSize[i]()+'px');
      if(!firstRun) sBr.doScrollPos();
      sC.fixIEDispBug();
    };

    sC.mDPosFix=function(){mDv.scrollTop=0;mDv.scrollLeft=0;dDv.scrollTop=0;dDv.scrollLeft=0;};

    this.addTrggr(wD,'load',function(){if(dDv.threeminScroll) dDv.scrollUpdate();});
    this.addTrggr(wD,'resize',function(){
      if(dDv.refreshTimeout) wD.clearTimeout(dDv.refreshTimeout);
      dDv.refreshTimeout=wD.setTimeout(function(){if(dDv.threeminScroll) dDv.scrollUpdate();},80);
    });

    for(var j=0,inputName;inputName=focusProtectList[j];j++){
      var inputList=dDv.getElementsByTagName(inputName);
      for(var i=0,formItem;formItem=inputList[i];i++){
        threeminEnv.addTrggr(formItem,'focus',function(){dDv.focusProtect=true;});
        threeminEnv.addTrggr(formItem,'blur',onblur=function(){dDv.focusProtect=false;});
      }
    };

    function retFalse(){
      return false;
    };
    function mMoveBar(e){
      if(!e){var e=wD.event;};
      var FCBar=sC.goScroll,movBr,maxx,xScroll,yScroll;
      if(FCBar==null) return;
      if(!threeminEnv.w3events&&!e.button) mMouseUp();
      maxx=(FCBar.scrollBoth)?2:1;
      for (var i=0;i<maxx;i++){
        movBr=(i==1)?FCBar.scrlTrgt.vBar:FCBar;
        if(FCBar.clicked){
          if(!movBr.moved){
            sC.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(FCBar.scrollBoth) movBr.curPos=movBr.curPos+(movBr.curPos-movBr.inCurPos);
          movBr.doScrollPos();
        }
        else {
          movBr.moved=false;
        }
      };
    };

    function mMouseUp(){
      if(sC.goScroll!=null){sC.goScroll.clicked=false;}
      sC.goScroll=null;
      threeminEnv.remTrggr(dC,'selectstart',retFalse);
      threeminEnv.remTrggr(dC,'mousemove',mMoveBar);
      threeminEnv.remTrggr(dC,'mouseup',mMouseUp);
    };

    function mWheelProc(e){
      if(!e) e=wD.event;
      if(!this.threeminScroll) return;
      var scrDv=this,vEdge,hEdge,hoverH=false,delta=0,iNDx;
      sC.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;
      sC.edge[1-iNDx]=false;
      if((sC.edge[iNDx]&&!hoverH)||(!sC.scroller[0]&&!sC.scroller[1])) return;
      if(sC.scroller[1]&&!hoverH) scrollState=dDv.contentScroll(false,sC.wheelAct[iNDx],true);
      vEdge=!sC.scroller[1]||hoverH||(sC.scroller[1]&&((scrollState[1][0]==scrollState[1][1]&&delta>0)||(scrollState[1][0]==0&&delta<0)));
      if(sC.scroller[0]&&(!sC.scroller[1]||hoverH)) scrollState=dDv.contentScroll(sC.wheelAct[iNDx],false,true);
      hEdge=!sC.scroller[0]||(sC.scroller[0]&&sC.scroller[1]&&vEdge&&!hoverH)||(sC.scroller[0]&&((scrollState[0][0]==scrollState[0][1]&&delta>0)||(scrollState[0][0]==0&&delta<0)));
      if(vEdge&&hEdge&&!hoverH) sC.edge[iNDx]=true;
      else {
        sC.edge[iNDx]=false;
      }
      if(e.preventDefault) e.preventDefault();
      return false;
    };

    function isddvChild(elem){
      while(elem.parentNode){
        elem=elem.parentNode;
        if(elem==dDv) return true;
      }	return false;
    };

    function findPos(elem){
      //modified from firetree.net
      var obj=elem,curleft=curtop=0;
      var monc="";
      if(obj.offsetParent){while(obj){curleft+=obj.offsetLeft;curtop+=obj.offsetTop;obj=obj.offsetParent; monc+=curtop+" ";}}
      else {
        if(obj.x){curleft+=obj.x;curtop+=obj.y;}
      }
      elem.xPos=curleft;elem.yPos=curtop;
    };

    function findRCpos(elem){
      var obj=elem;curleft=curtop=0;
      while(!obj.offsetHeight&&obj.parentNode&&obj!=cDv&&getStyle(obj,'display')=="inline"){obj=obj.parentNode;}
      if(obj.offsetParent){while(obj!=cDv){curleft+=obj.offsetLeft;curtop+=obj.offsetTop;obj=obj.offsetParent;}}
      return [curleft,curtop];
    };

    function classChange(elem,addClass,remClass) {
      if (!elem.className) elem.className = '';
      var clsnm = elem.className;
      if (addClass && !clsnm.match(RegExp("(^|\\s)"+addClass+"($|\\s)"))) clsnm = clsnm.replace(/(\S$)/,'$1 ')+addClass;
      if (remClass) clsnm = clsnm.replace(RegExp("((^|\\s)+"+remClass+")+($|\\s)","g"),'$2').replace(/\s$/,'');
      elem.className=clsnm;
    };
  },
  //main code end
  globalInit:function(){
    if(threeminEnv.catchFastInit) window.clearInterval(threeminEnv.catchFastInit);
    var regg=/#([^#.]*)$/,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(regg)&&anchoR.href.match(urlExt)&&urlBase===anchoR.href.match(urlExt)[1]) {
        anchoR.threeminAnchor=true;
        threeminEnv.addTrggr(anchoR,'click',function(e){
          if(!e) e=window.event;
          var clickeD=(e.srcElement)?e.srcElement:this;
          while(!clickeD.threeminAnchor&&clickeD.parentNode){clickeD=clickeD.parentNode};
          if(!clickeD.threeminAnchor) return;
          var tEL=document.getElementById(clickeD.href.match(regg)[1]),eScroll=false;
          if(tEL==null) tEL=(tEL=document.getElementsByName(clickeD.href.match(regg)[1])[0])?tEL:null;
          if(tEL!=null){
            var elem=tEL;
            while(elem.parentNode){
              elem=elem.parentNode;if(elem.scrollToElement){
                elem.scrollToElement(tEL);eScroll=elem;
              };
            };
            if(eScroll) {if(e.preventDefault) e.preventDefault();document.location.href="#"+clickeD.href.match(regg)[1];eScroll.threeminData.mDPosFix();return false;}
          };
        });
      };
    };
    threeminEnv.initByClass();
    if(window.onthreeminScrollRun) window.onthreeminScrollRun();
  },

  initByClass:function(){
    if(threeminEnv.initialized) return;
    threeminEnv.initialized=true;
    var threeminList=threeminEnv.getByClassName(document.getElementsByTagName("body")[0],"div",'threeminScroll');
    for (var i=0,tgDiv;tgDiv=threeminList[i];i++) threeminEnv.threeminScrollMain(tgDiv);
  },

  getByClassName:function(elem,elType,classString){
    if(typeof(elem)=='string') elem=document.getElementById(elem);
    if(elem==null)return false;
    var regExer=new RegExp("(^|\\s)"+classString+"($|\\s)"),clsnm,retArray=[],key=0;
    var elems=elem.getElementsByTagName(elType);
    for(var i=0,pusher;pusher=elems[i];i++){
      if(pusher.className && pusher.className.match(regExer)){
        retArray[key]=pusher;key++;
      }
    }
    return retArray;
  },

  catchFastInit:window.setInterval(function(){
    var dElem=document.getElementById('threeminScroll-init');
    if(dElem!=null) {
      threeminEnv.initByClass();
      window.clearInterval(threeminEnv.catchFastInit);
    }
  },100),

  addTrggr:function(elm,eventname,func){
    if(!threeminEnv.addChckTrggr(elm,eventname,func)&&elm.attachEvent) {
      elm.attachEvent('on'+eventname,func);
    }
  },

  addChckTrggr:function(elm,eventname,func){
    if(elm.addEventListener){
      elm.addEventListener(eventname,func,false);
      threeminEnv.w3events=true;
      window.addEventListener("unload",function(){
        threeminEnv.remTrggr(elm,eventname,func)
      },false);
      return true;
    }
    else {
      return false;
    }
  },
  remTrggr:function(elm,eventname,func){
    if(!threeminEnv.remChckTrggr(elm,eventname,func)&&elm.detachEvent) elm.detachEvent('on'+eventname,func);
  },

  remChckTrggr:function(elm,eventname,func){
    if(elm.removeEventListener){
      elm.removeEventListener(eventname,func,false);
      return true;
    }
    else {
      return false;
    }
  }

};

function CSBthreeminScroll(targetId){
  threeminEnv.threeminScrollMain(targetId)
};
threeminEnv.threeminScrollInit();
