/* 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.5 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;isC.mTBox[1])?1:0; sC.mOnYEdge=(mdYsC.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); },17) } 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]} 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;i0)||(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; if(tEL==null) tEL=(tEL=document.getElementsByName(clickeD.href.match(regg)[1])[0])?tEL:null; if(tEL!=null){ var elem=tEL; while(elem.parentNode){ elem=elem.parentNode;if(elem.scrollToElement){ elem.scrollToElement(tEL);eScroll=elem; }; }; if(eScroll) {if(e.preventDefault) e.preventDefault();document.location.href="#"+clickeD.href.match(regg)[1];eScroll.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();