/*
This license text has to stay intact at all times:
fleXcroll Public License Version
Cross Browser Custom Scroll Bar Script by Hesido.
Public version - Free for non-commercial uses.

This script cannot be used in any commercially built
web sites, or in sites that relates to commercial
activities. This script is not for re-distribution.
For licensing options:
Contact Emrah BASKAYA @ www.hesido.com

Derivative works are only allowed for personal uses,
and they cannot be redistributed.

FleXcroll Public Key Code: 20050907122003339
MD5 hash for this license: 9ada3be4d7496200ab2665160807745d

End of license text---
*/
//fleXcroll v1.9.5f
var fleXenv={

    fleXcrollInit:function(){
        this.addTrggr(window,'load',this.globalInit);
    },

    fleXcrollMain: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="flex__",c=1;
            while(document.getElementById(sTid+c)!=null){
                c++
            };

            dDv.id=sTid+c;
        }
        var targetId=dDv.id;
        dDv.fleXdata=new Object();
        var sC=dDv.fleXdata;
        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;
                fleXenv.addTrggr(dC,'selectstart',retFalse);
                fleXenv.addTrggr(dC,'mousemove',mMoveBar);
                fleXenv.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();
            fleXenv.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(){
            fleXenv.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){
            tDv.fShow();
            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.fleXcroll=true;
        classChange(dDv,'flexcrollactive',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;
                fleXenv.addTrggr(dC,'selectstart',retFalse);
                fleXenv.addTrggr(dC,'mousemove',mMoveBar);
                fleXenv.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,"","flexinactive");
                }
                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,"flexinactive","");
                }
                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.fleXcroll) dDv.scrollUpdate();
        });
        this.addTrggr(wD,'resize',function(){
            if(dDv.refreshTimeout) wD.clearTimeout(dDv.refreshTimeout);
            dDv.refreshTimeout=wD.setTimeout(function(){
                if(dDv.fleXcroll) 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++){
                fleXenv.addTrggr(formItem,'focus',function(){
                    dDv.focusProtect=true;
                });
                fleXenv.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(!fleXenv.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;
            fleXenv.remTrggr(dC,'selectstart',retFalse);
            fleXenv.remTrggr(dC,'mousemove',mMoveBar);
            fleXenv.remTrggr(dC,'mouseup',mMouseUp);
        };

        function mWheelProc(e){
            if(!e) e=wD.event;
            if(!this.fleXcroll) 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(fleXenv.catchFastInit) window.clearInterval(fleXenv.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.fleXanchor=true;
                fleXenv.addTrggr(anchoR,'click',function(e){
                    if(!e) e=window.event;
                    var clickeD=(e.srcElement)?e.srcElement:this;
                    while(!clickeD.fleXanchor&&clickeD.parentNode){
                        clickeD=clickeD.parentNode
                    };
                    if(!clickeD.fleXanchor) return;
                    //var tEL=document.getElementById(clickeD.href.match(regg)[1]),eScroll=false;
                    //clickeD.href.match(regg)[1]
                    var tEL = null;
                    var targetname = clickeD.href.split('#')[1];
                    $('[name="'+targetname+'"]').each(function(){
                        tEL = this;
                    });
                    if (tEL==null) {
                        $('#'+targetname).each(function(){
                            tEL = this;
                        });
                    }
                    //if(tEL==null) tEL=(tEL=document.getElementsByName(targetname)[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];
                            document.location.hash = "#"+clickeD.href.match(regg)[1];
                            eScroll.fleXdata.mDPosFix();
                            return false;
                        }
                    };
                });
            };
        };
        fleXenv.initByClass();
        if(window.onfleXcrollRun) window.onfleXcrollRun();
    },

    initByClass:function(){
        if(fleXenv.initialized) return;
        fleXenv.initialized=true;
        var fleXlist=fleXenv.getByClassName(document.getElementsByTagName("body")[0],"div",'flexcroll');
        for (var i=0,tgDiv;tgDiv=fleXlist[i];i++) fleXenv.fleXcrollMain(tgDiv);
    },

    getByClassName:function(elem,elType,classString){
        //v1.1fleX
        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('flexcroll-init');
        if(dElem!=null) {
            fleXenv.initByClass();
            window.clearInterval(fleXenv.catchFastInit);
        }
    },100),

    addTrggr:function(elm,eventname,func){
        if(!fleXenv.addChckTrggr(elm,eventname,func)&&elm.attachEvent) {
            elm.attachEvent('on'+eventname,func);
        }
    },

    addChckTrggr:function(elm,eventname,func){
        if(elm.addEventListener){
            elm.addEventListener(eventname,func,false);
            fleXenv.w3events=true;
            window.addEventListener("unload",function(){
                fleXenv.remTrggr(elm,eventname,func)
            },false);
            return true;
        } else return false;
    },

    remTrggr:function(elm,eventname,func){
        if(!fleXenv.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 CSBfleXcroll(targetId){
    fleXenv.fleXcrollMain(targetId)
};
fleXenv.fleXcrollInit();

