﻿/*
fleXcroll v1.9.0 Public License Version
This license text has to stay intact at all times:
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. 

Derivative works are only allowed for personal uses,
and they cannot be redistributed.
For licensing options:
Contact Emrah BASKAYA @ www.hesido.com

FleXcroll Public Key Code: 20050907122003339
MD5 hash for this license: 9ada3be4d7496200ab2665160807745d

End of license text---
*/

var fleXenv={

fleXcrollInit:function(){this.addTrggr(window,'load',this.prepAnchors);},

fleXcrollMain:function(targetId){
//Main code beg
var dC=document,wD=window,nV=navigator;
if(!dC.getElementById||dC.getElementById(targetId)==null||!dC.createElement||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;
var dDv=dC.getElementById(targetId);
if(dDv.fleXcroll)return;
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";

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];

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){
	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]}
	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;
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');
	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(){nDiv.sY.visibility="visible"};
	nDiv.sY=nDiv.style;
	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")?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();
		sC.forcedHide[i]=(getStyle(sDv,"visibility")=="hidden")?true:false;
		if(!sC.forcedHide[i]) sBr.fShow(); 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;
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("\\b"+addClass+"\\b"))) clsnm=clsnm.replace(/(\S$)/,'$1 ')+addClass;
	if(remClass) clsnm=clsnm.replace(RegExp("(\\s*\\b"+remClass+"\\b(\\s*))*","g"),'$2');
	elem.className=clsnm;
};
},
//main code end
prepAnchors:function(){
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]),elem=tEL,eScroll=false;
		if(tEL!=null){
		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.fleXdata.mDPosFix();return false;}
		};
		});
	};
};
},

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);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();
function fleXcrollTo(id,x,y,relative) {
	var scrollDiv = document.getElementById(id);
	//Return if the target is not a fleXcrolled div.
	if (scrollDiv == null || !scrollDiv.fleXcroll) return;
	//Do the scroll by using custom method attached by fleXcroll
	scrollDiv.contentScroll(x,y,relative);
	/*
	Following is the method to commit a scroll by defining
	relative or absolute values:
		element.contentScroll(x,y,relative);
	*x and y values are horizontal and vertical
	positions of content and can be set to false if we don't
	require any one of them to be scrolled.
	*x and y should be sent as string, between quotation marks.
	*x and y can take three different units:
	px, s, p
	where px is pixels, s is a single step, p is a page scroll.
	*relative can be either true or false. If true,
	x and y is used as relative scrolling.
	*x and y refer to content position
	*e.g. To scroll one page down, you can:
	element.contentScroll(false,"1p",true);
	*e.g. To scroll 3 steps to left, you can:
	element.contentScroll("-3s",false,true);
	*e.g. To set the content at 30px right, and 20px down:
	element.contentScroll("30px","20px",false);
	*e.g. To scroll down 100px relatively,
	element.contentScroll(false,"100px",true);
	*/
}