﻿/*
fleXcroll uncompressed version. Available to registered users, please do not redistribute
For usage at live site, please pack or shrink variables using
http://dean.edwards.name/packer/
If packed version doesn't work, make sure you are using semi-colons (;) at the end of lines.
*/
/*
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 v2.0.0

var fleXenv={

fleXlist:[],

fleXcrollInit:function(){
if (document.getElementById){document.write('<style type="text/css">.flexcroll-hide-default {overflow: hidden !important;}</style>');};
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)) {if(dDv!=null) classChange(dDv,'flexcroll-failed','flexcroll-hide-default');if(window.onfleXcrollFail) window.onfleXcrollFail(dDv); return;};
if(dDv.fleXcroll){dDv.fleXcroll.updateScrollBars();return;};if(fleXenv.checkHidden(dDv))return;
if(!dDv.id||dDv.id==''){var sTid="flex__",c=1;while(document.getElementById(sTid+c)!=null){c++};dDv.id=sTid+c;}
dDv.fleXdata=new Object();dDv.fleXcroll=new Object();
var targetId=dDv.id,sC=dDv.fleXdata,sfU=dDv.fleXcroll;
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"];
sC.scrollPosition=[[false,false],[false,false]];
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.touchPrevent=false;sC.touchFlick=false;
sC.reqS=[];sC.barSpace=[0,0];sC.forcedHide=[];sC.forcedPos=[];sC.paddings=[];sC.externaL=[false,false];sC.touchPos=[0,0];
while(dDv.firstChild) {cDv.appendChild(dDv.firstChild)};
cDv.appendChild(iDv);dDv.appendChild(mDv);dDv.appendChild(pDv);
var posRef=getStyle(dDv,'position');
if(posRef!='absolute'&&posRef!='fixed') {dDv.style.position=posRef="relative";};
if(posRef=='fixed') dDv.style.position="absolute";

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];
dDv.style.position=posRef;

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';
sC.tDivZ=tDv.sY.zIndex;
//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',1);
	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]=(sC.externaL[1])?0:vrT.sDv.offsetWidth;sC.setWidth();
	//horiz
	tDv.hrz=new Array();var hrZ=tDv.hrz;
	createScrollBars(hrZ,'hscroller',0);
	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]=(sC.externaL[0])?0: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();
this.putAway(iDv,tDv);

if(!this.addChckTrggr(dDv,'mousewheel',mWheelProc)||!this.addChckTrggr(dDv,'DOMMouseScroll',mWheelProc)){dDv.onmousewheel=mWheelProc;};
this.addChckTrggr(dDv,'mousewheel',mWheelProc);
this.addChckTrggr(dDv,'DOMMouseScroll',mWheelProc);

this.addChckTrggr(cDv,'touchstart',handleTouch);
this.addChckTrggr(tDv,'touchstart',handleTouch);

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;
	sfU.mDPosFix();
	if(sC.keyAct['_'+pK]&&!window.opera){sfU.setScrollPos(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]){sfU.setScrollPos(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',handleTextSelect);

// function preventClick(e){
	// if(!e) e=wD.event;
	// e.preventDefault();
	// return false;
// };

function handleTextSelect(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) sfU.setScrollPos((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 flickClear(intervaLonly){
	if(sC.touchFlick) {window.clearInterval(sC.touchFlick);sC.touchFlick=false;}
//if(!intervaLonly) {fleXenv.remChckTrggr(dC,'click',preventClick);fleXenv.remChckTrggr(dC,'mousedown',preventClick);tDv.sY.zIndex=sC.tDivZ;}
	if(!intervaLonly) tDv.sY.zIndex=sC.tDivZ;
};
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;
};

sfU.formUpdate=function(){
for(var j=0,inputName;inputName=focusProtectList[j];j++){
	var inputList=dDv.getElementsByTagName(inputName);
	for(var i=0,formItem;formItem=inputList[i];i++){
	if(!formItem.fleXprocess) {fleXenv.addTrggr(formItem,'focus',function(){dDv.focusProtect=true;});
	fleXenv.addTrggr(formItem,'blur',onblur=function(){dDv.focusProtect=false;});
	formItem.fleXprocess=true;
	}}};
};
/*dDv.scrollUpdate is deprecated, moved to under sfU as updateScrollBars */
dDv.scrollUpdate=sfU.updateScrollBars=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) sfU.updateScrollBars(true);
	cDv.sY.padding='0px';
	sC.edge[0]=sC.edge[1]=false;
};
/*change: dDv.commitScroll is now obsolete, sfU has setScrollPos, contentScroll will be deprecated*/
dDv.contentScroll=sfU.setScrollPos=function(xPos,yPos,relative,preventEvent){
	var 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.realScrollPos();}
	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.realScrollPos();}
	if(!relative) sC.edge[0]=sC.edge[1]=false;
	if(dDv.onfleXcroll&&!preventEvent) dDv.onfleXcroll();
	return sC.scrollPosition;
};

/*New: new function for relative scroll*/
sfU.scrollContent=function(xPos,yPos){return sfU.setScrollPos(xPos,yPos,true)};

/*change: scrollToElement moved to under sfU*/
sfU.scrollToElement=function(tEM){
if(tEM==null||!isddvChild(tEM)) return;
var sPos=findRCpos(tEM);
sfU.setScrollPos(sPos[0]+sC.paddings[2],sPos[1]+sC.paddings[0],false);
sfU.setScrollPos(0,0,true);
};

copyStyles(pDv,dDv,'0px',['border-left-width','border-right-width','border-top-width','border-bottom-width']);

this.putAway(pDv,tDv);
dDv.scrollTop=0;dDv.scrollLeft=0;
sfU.formUpdate();
this.fleXlist[this.fleXlist.length]=dDv;
classChange(dDv,'flexcrollactive',false);
sfU.updateScrollBars();
sfU.setScrollPos(oScrollX,oScrollY,true);
if(urlBase.match(uReg)) {sfU.scrollToElement(dC.getElementById(urlBase.match(uReg)[1]));};
//tDv.fShow();

sC.sizeChangeDetect=wD.setInterval(function(){
var n=fDv.offsetHeight;if(n!=sC.zTHeight){sfU.updateScrollBars();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 getStyle(elem,style){
	return fleXenv.getStyle(elem,style);
};

function copyStyles(src,dest,replaceStr,sList){
	var camelList = new Array();
	for (var i=0;i<sList.length;i++){
		camelList[i]=fleXenv.camelConv(sList[i]);
		dest.style[camelList[i]] = getStyle(src,sList[i],camelList[i]);
		if(replaceStr) src.style[camelList[i]] = replaceStr;
	}
};
function createDiv(typeName,noGenericClass,extCon,sBase){
	var nDiv=(extCon)?extCon:dC.createElement('div');//,pTx=dC.createTextNode('\u00a0');
	if(!extCon) {nDiv.id=targetId+'_'+typeName; nDiv.className=(noGenericClass)?typeName:typeName+' scrollgeneric';};
	nDiv.getSize=[function(){return nDiv.offsetWidth;},function(){return nDiv.offsetHeight;}];
	nDiv.setSize=(sBase)?[retFalse,retFalse]:[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=(sBase)?[retFalse,retFalse]:[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,indX){
 var exTbase=document.getElementById(targetId+'-flexcroll-'+bse);
	var extCon=(exTbase!=null)?true:false;
	if(extCon){
	ary.sDv=createDiv(false,false,exTbase,true); sC.externaL[indX]=true;
	ary.sFDv=createDiv(bse+'basebeg'); ary.sSDv=createDiv(bse+'baseend');
	ary.sBr=createDiv(false,false,fleXenv.getByClassName(exTbase,'div','flexcroll-scrollbar')[0]);
	ary.sFBr=createDiv(bse+'barbeg');ary.sSBr=createDiv(bse+'barend');
	} else {
	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.trgtScrll=0;
	sBr.minPos=bAr.barPadding[0];
	sBr.ofstParent=sDv;
	sBr.mDv=mDv;
	sBr.scrlTrgt=cDv;
	sBr.targetSkew=0;
	updateScroll(bAr,reqSpace,true);

	sBr.doBarPos=function(barMove){
		if(!barMove) sBr.curPos=parseInt((sBr.trgtScrll*sBr.maxPos)/sBr.mxScroll);
		sBr.curPos=(Math.min(Math.max(sBr.curPos,0),sBr.maxPos));
		sBr.setPos[i](sBr.curPos+sBr.minPos+"px");
		if(!sBr.targetSkew) sBr.targetSkew=sBr.trgtScrll-parseInt((sBr.curPos/sBr.sRange)*sBr.mxScroll);
		sBr.targetSkew=(sBr.curPos==0)?0:(sBr.curPos==sBr.maxPos)?0:(!sBr.targetSkew)?0:sBr.targetSkew;
		if(barMove) {
			sBr.trgtScrll=parseInt((sBr.curPos/sBr.sRange)*sBr.mxScroll);
			cDv.setPos[i](sBr.trgtScrll+sBr.targetSkew+"px");
			sC.scrollPosition[i]=[-sBr.trgtScrll-sBr.targetSkew,-sBr.mxScroll];
			};
	};

	sBr.realScrollPos=function(){
		sBr.curPos=parseInt((sBr.trgtScrll*sBr.sRange)/sBr.mxScroll);
		sBr.curPos=(Math.min(Math.max(sBr.curPos,0),sBr.maxPos));
		cDv.setPos[i](sBr.trgtScrll+"px");
		sC.scrollPosition[i]=[-sBr.trgtScrll,-sBr.mxScroll];
		sBr.targetSkew=false;
		sBr.doBarPos(false);
	};

	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');
//to do: touch capable agents will be told to remove the triggers
	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;
//to do: touch capable agents will be told to remove the triggers
	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();
		sfU.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;
		sfU.setScrollPos(mV[0],mV[1],true);
		if(e.type!="dblclick"){
		intClear();
		sC.barClickRetard=wD.setTimeout(function(){
		sC.barClickScroll=wD.setInterval(function(){
		sfU.setScrollPos(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"||sC.externaL[i])?true:false;
		if(!sC.forcedHide[i]) sBr.fShow(dDv); else if (!sC.externaL[i]) 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');sC.scrollPosition[i]=[false,false];
		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");
	};
//to do: touch capable agents will be told to remove the triggers
	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.realScrollPos();
	sC.fixIEDispBug();
};

sfU.mDPosFix=function(){mDv.scrollTop=0;mDv.scrollLeft=0;dDv.scrollTop=0;dDv.scrollLeft=0;};

this.addTrggr(wD,'load',function(){if(dDv.fleXcroll) sfU.updateScrollBars();});
this.addTrggr(wD,'resize',function(){
if(dDv.refreshTimeout) wD.clearTimeout(dDv.refreshTimeout);
dDv.refreshTimeout=wD.setTimeout(function(){if(dDv.fleXcroll) sfU.updateScrollBars();},80);
});

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){
	sfU.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.doBarPos(true);
	if(dDv.onfleXcroll) dDv.onfleXcroll();
	} else movBr.moved=false;
	};
};

function mMouseUp(){
	if(sC.goScroll!=null){sC.goScroll.clicked=false;sC.goScroll.trgtScrll+=sC.goScroll.targetSkew;}
	sC.goScroll=null;
	fleXenv.remTrggr(dC,'selectstart',retFalse);
	fleXenv.remTrggr(dC,'mousemove',mMoveBar);
	fleXenv.remTrggr(dC,'mouseup',mMouseUp);
};

function handleTouch(e){
if(!e) e=wD.event;
if(this==tDv)tDv.sY.zIndex=sC.tDivZ;
if (e.targetTouches.length!=1||(!sC.scroller[0]&&!sC.scroller[1])) return false;
var tName='',touchLink=(e.target&&(e.target.href||(e.target.nodeType==3&&e.target.parentNode.href)))?true:false;
sC.touchPos=[e.targetTouches[0].clientX,e.targetTouches[0].clientY];
flickClear();fleXenv.addChckTrggr(dDv,'touchmove',handleTouchMove);fleXenv.addChckTrggr(dDv,'touchend',handleTouchEnd);
sC.touchBar=(e.target&&e.target.id&&e.target.id.match(/_[vh]scrollerba[rs]e?/))?true:false;
//if(!touchLink&&sC.touchPrevent) e.preventDefault();
//outPut('debugg',e.srcElement.parentNode+" "+sC.touchPos[0]+" "+touchLink);
return false;
};

function handleTouchMove(e){
if(!e) e=wD.event; if(e.targetTouches.length!=1) return false;
fleXenv.remTrggr(dDv,'mousedown',handleTextSelect);
//fleXenv.addTrggr(dDv,'mousedown',retFalse);
var newPos=[e.targetTouches[0].clientX,e.targetTouches[0].clientY];
sC.touchPrevent=true;
sC.moveDelta=[sC.touchPos[0]-newPos[0],sC.touchPos[1]-newPos[1]];
if(sC.touchBar){sC.moveDelta[0]*=-(sC.cntSize[0]/sC.cntRSize[0]);sC.moveDelta[1]*=-(sC.cntSize[1]/sC.cntRSize[1]);};
sfU.scrollContent(sC.moveDelta[0],sC.moveDelta[1]);
sC.touchPos[0]=newPos[0];sC.touchPos[1]=newPos[1];
for(var i=0;i<2;i++) {
if(sC.moveDelta[i]!==0&&sC.scroller[i]&&(sC.moveDelta[1-i]==0||!sC.scroller[1-i])){
	if((sC.moveDelta[i]>0&&sC.scrollPosition[i][1]==sC.scrollPosition[i][0])||(sC.moveDelta[i]<0&&sC.scrollPosition[i][0]==0)) sC.touchPrevent=false;
	};
if(!sC.scroller[i]&&sC.moveDelta[1-i]!==0&&Math.abs(sC.moveDelta[i]/sC.moveDelta[1-i])>1.1) sC.touchPrevent=false;
};
//fleXenv.addChckTrggr(dC,'click',preventClick);fleXenv.addChckTrggr(dC,'mousedown',preventClick);
//outPut('debugg',sC.touchPrevent+" "+sC.touchPos[0]);
if(sC.touchPrevent){e.preventDefault();tDv.sY.zIndex='9999';}
else{tDv.sY.zIndex=sC.tDivZ;}

//return false;
};

function handleTouchEnd(e){
if(!e) e=wD.event;e.preventDefault();if (e.targetTouches.length > 0) return false;
fleXenv.remTrggr(dDv,'touchmove',handleTouchMove);fleXenv.remTrggr(dDv,'touchend',handleTouchEnd);
if((sC.scroller[0]&&Math.abs(sC.moveDelta[0])>6)||(sC.scroller[1]&&Math.abs(sC.moveDelta[1])>6)) {
var actStep=0;
flickClear(true);
sC.touchFlick=window.setInterval(function(){
	sfU.scrollContent(easeInOut(sC.moveDelta[0],0,10,actStep,0.3),easeInOut(sC.moveDelta[1],0,10,actStep,0.3));
	actStep++;
	if (actStep>10) flickClear();
	//if (actStep>10) outPut("debugg","ahoy");
	},100);
} //else {
//tDv.sY.zIndex=sC.tDivZ;
//}
//return false;
};

function mWheelProc(e){
	if(!e) e=wD.event;
	if(!this.fleXcroll) return;
	var scrDv=this,vEdge,hEdge,hoverH=false,delta=0,iNDx;
	sfU.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=sfU.setScrollPos(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=sfU.setScrollPos(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;
	if(obj.offsetParent){while(obj){curleft+=obj.offsetLeft;curtop+=obj.offsetTop;obj=obj.offsetParent;}}
	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) {fleXenv.classChange(elem,addClass,remClass);};

function easeInOut(minValue,maxValue,totalSteps,actualStep,powr) {
	//Generic Animation Step Value Generator By www.hesido.com v1.1
	totalSteps=Math.max(totalSteps,1);var delta=maxValue-minValue,stepp=minValue+(Math.pow(((1/totalSteps)*actualStep),powr)*delta);
	return (stepp>0)?Math.floor(stepp):Math.ceil(stepp);
};

},
//main code end
globalInit:function(){
if(fleXenv.catchFastInit) window.clearInterval(fleXenv.catchFastInit);
fleXenv.prepAnchors();
fleXenv.initByClass();
if(window.onfleXcrollRun) window.onfleXcrollRun();
},

classChange:function(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;
},

prepAnchors:function(){
var regg=/#([^#.]*)$/,urlExt=/(.*)#.*$/,regExer=/(^|\s)flexcroll-in-page-link($|\s)/,matcH,claSS,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++){
claSS=(anchoR.className)?anchoR.className:'';
if(anchoR.href&&!anchoR.fleXanchor&&anchoR.href.match(regg)&&((anchoR.href.match(urlExt)&&urlBase===anchoR.href.match(urlExt)[1])||claSS.match(regExer))) {
	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;
		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.fleXcroll){
				elem.fleXcroll.scrollToElement(tEL);eScroll=elem;
				};
			};
		var relData = $('.tab'+currentPanel+' a').attr('rel').split('-');
		if(eScroll) {if(e.preventDefault) e.preventDefault();document.location.href=urlBase+"#/"+relData[0]+"/"+currentPanel+"/"+clickeD.href.match(regg)[1];eScroll.fleXcroll.mDPosFix();return false;}
		};
		});
	};
};
},

initByClass:function(targetClass){
//if(fleXenv.initialized) return;
fleXenv.initialized=true;
var fleXlist=fleXenv.getByClassName(document.getElementsByTagName("body")[0],"div",(targetClass)?targetClass:'flexcroll');
for (var i=0,tgDiv;tgDiv=fleXlist[i];i++) if(!tgDiv.fleXcroll) fleXenv.fleXcrollMain(tgDiv);
},

scrollTo:function(elem,writeUrl){
	if(typeof(elem)=='string') elem=document.getElementById(elem);
	if(elem==null)return false; var pElem=elem;
	while(pElem.parentNode){pElem=pElem.parentNode;if(pElem.fleXcroll){if(writeUrl) {var relData = $('.tab'+currentPanel+' a').attr('rel').split('-'); document.location.href="#/"+relData[0]+"/"+currentPanel+"/"+writeUrl;};pElem.fleXcroll.scrollToElement(elem);pElem.fleXcroll.mDPosFix();return true;}};
	return false;
},

updateScrollBars:function(anchorS,formS){
	for(var i=0,fleXdiv;fleXdiv=fleXenv.fleXlist[i];i++){fleXdiv.fleXcroll.updateScrollBars();if(formS) fleXdiv.fleXcroll.formUpdate();};
	if(anchorS) fleXenv.prepAnchors();
},

camelConv:function(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;
},

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;
},

checkHidden:function(elem){
if(elem==null)return true;var dSty;
while(elem.parentNode){dSty=fleXenv.getStyle(elem,'display');if(dSty=='none') return true;elem=elem.parentNode;};
return false;	
},

getStyle:function(elem,style){
	if(window.getComputedStyle) return window.getComputedStyle(elem,null).getPropertyValue(style);
	if(elem.currentStyle) return elem.currentStyle[fleXenv.camelConv(style)];
	return false;
},

catchFastInit:window.setInterval(function(){
	var dElem=document.getElementById('flexcroll-init');
	if(dElem!=null) {fleXenv.initByClass();window.clearInterval(fleXenv.catchFastInit);}
	},100),

putAway:function(elm,tElem){
	elm.parentNode.removeChild(elm);
	elm.style.display="none";
	tElem.appendChild(elm);
},
	
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();

// function outPut(iD,teXT){
// document.getElementById(iD).innerHTML=teXT;
// };

