// ==ClosureCompiler==
// @output_file_name default.js
// @compilation_level SIMPLE_OPTIMIZATIONS
// ==/ClosureCompiler==
// http://closure-compiler.appspot.com/home
//
//v2.01.01
var randvonoben=0;
var randvonunten=2; // 2 damit man den Rand "border" noch sieht :-)
var schrittweite = '.125s';
var NewScrollenv = {
NewScrolllist: [],
NewScrollInit: function () {
this.addTrggr(window, 'load', this.globalInit)
},
NewScrollMain: function (h) {
var j = document,
wD = window,
nV = navigator;
if (!j.getElementById || !j.createElement) return;
if (typeof(h) == 'string') h = document.getElementById(h);
if (h == 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 (h != null) classChange(h, 'CustomScrollErr', 'noCustomScroll');
if (window.onNewScrollFail) window.onNewScrollFail(h);
return
};
if (h.NewScroll) {
h.NewScroll.updateScrollBars(false);
return
};
if (NewScrollenv.checkHidden(h)) return;
if (!h.id || h.id == '') {
var k = 'NewScroll__',
c = 1;
while (document.getElementById(k + c) != null) {
c++
};
h.id = k + c
}
h.NewScrolldata = {};
h.NewScroll = {};
var l = h.id,
sC = h.NewScrolldata,
sfU = h.NewScroll;
sC.keyAct = {
_37: ['-'+schrittweite, 0],
_38: [0, '-'+schrittweite],
_39: [schrittweite, 0],
_40: [0, schrittweite],
_33: [0, '-1p'],
_34: [0, '1p'],
_36: [0, '-100p'],
_35: [0, '+100p']
};
sC.wheelAct = ['-.25s', '.25s'];
sC.actionVal = {
stepBack: '-.25s',
stepFwd: '.25s',
pageBack: '-.25p',
pageFwd: '.25p'
};
sC.touchMul = [1, 1];
sC.scrollPosition = [[false, false], [false, false]];
var m = createDiv('contentwrapper', false, true, null, null),
mDv = createDiv('mcontentwrapper', false, true, null, null),
tDv = createDiv('scrollwrapper', false, true, null, null),
pDv = createDiv('copyholder', false, true, null, null);
var o = createDiv('domfixdiv', false, true, null, null),
fDv = createDiv('zoomdetectdiv', false, true, null, null),
stdMode = false;
pDv.sY.border = '1px solid #ccc';
pDv.fHide();
h.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 p = h.offsetHeight,
brdWidth = h.offsetWidth;
copyStyles(h, pDv, '0px', ['border-left-width', 'border-right-width', 'border-top-width', 'border-bottom-width']);
var q = h.offsetHeight,
intlWidth = h.offsetWidth,
brdWidthLoss = brdWidth - intlWidth,
brdHeightLoss = 0;/*p - q;*/
var s = (h.scrollTop) ? h.scrollTop: 0,
oScrollX = (h.scrollLeft) ? h.scrollLeft: 0;
var t = document.location.href,
uReg = /#([^#.]*)$/;
var u = '|TEXTAREA|INPUT|SELECT|OPTION|';
var w = '|SELECT|OPTION|';
sC.scroller = [];
sC.forcedBar = [];
sC.containerSize = sC.cntRSize = [];
sC.contentSize = sC.cntSize = [];
sC.edge = [false, false];
sC.touchPrevent = false;
sC.touchFlick = false;
sC.barSize = [0, 0];
sC.reqS = [];
sC.barSpace = [0, 0];
sC.forcedHide = [];
sC.forcedPos = [];
sC.paddings = [];
sC.externaL = [false, false];
sC.touchPos = [0, 0];
sC.moveDelta = [0, 0];
sC.tooNarrow = [false, false];
sC.keyProc = 0;
sC.keyAproc = 0;
while (h.firstChild) {
m.appendChild(h.firstChild)
};
m.appendChild(o);
h.appendChild(mDv);
h.appendChild(pDv);
var x = getStyle(h, 'position');
if (x != 'absolute' && x != 'fixed') {
h.style.position = x = 'relative'
};
if (x == 'fixed') h.style.position = 'absolute';
h.style.outline = "none";
var y = getStyle(h, 'text-align');
h.style.textAlign = 'left';
mDv.sY.width = '100px';
mDv.sY.height = '100px';
mDv.sY.top = '0px';
mDv.sY.left = '0px';
copyStyles(h, pDv, '0px', ['padding-left', 'padding-top', 'padding-right', 'padding-bottom']);
var z = h.offsetWidth,
postHeight = h.offsetHeight,
mHeight;
mHeight = mDv.offsetHeight;
mDv.sY.borderBottom = '2px solid black';
if (mDv.offsetHeight > mHeight) stdMode = true;
mDv.sY.borderBottomWidth = '0px';
copyStyles(pDv, h, false, ['padding-left', 'padding-top', 'padding-right', 'padding-bottom']);
findPos(mDv);
findPos(h);
sC.paddings[0] = mDv.yPos - h.yPos;
sC.paddings[2] = mDv.xPos - h.xPos;
h.style.paddingTop = getStyle(h, 'padding-bottom');
h.style.paddingLeft = getStyle(h, 'padding-right');
findPos(mDv);
findPos(h);
sC.paddings[1] = mDv.yPos - h.yPos;
sC.paddings[3] = mDv.xPos - h.xPos;
h.style.paddingTop = getStyle(pDv, 'padding-top');
h.style.paddingLeft = getStyle(pDv, 'padding-left');
var A = sC.paddings[2] + sC.paddings[3],
padHeightComp = sC.paddings[0] + sC.paddings[1];
h.style.position = x;
mDv.style.textAlign = y;
copyStyles(h, mDv, false, ['padding-left', 'padding-right', 'padding-top', 'padding-bottom']);
tDv.sY.width = h.offsetWidth + 'px';
tDv.sY.height = h.offsetHeight + 'px';
mDv.sY.width = z + 'px';
mDv.sY.height = postHeight + 'px';
tDv.sY.position = 'absolute';
tDv.sY.top = randvonoben+'px'; // Start des Scrollbalkens // default = 0px
tDv.sY.left = '0px';
sC.tDivZ = tDv.sY.zIndex;
mDv.appendChild(m);
h.appendChild(tDv);
tDv.appendChild(fDv);
m.sY.position = 'relative';
mDv.sY.position = 'relative';
m.sY.top = '0';
m.sY.width = '100%';
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 a = m.childNodes,
maxCWidth = compPad = 0,
DsizE = h.offsetWidth;
for (var i = 0; i < a.length; i++) {
if (a[i].offsetWidth) {
maxCWidth = Math.max(a[i].offsetWidth, maxCWidth)
}
};
sC.tooNarrow[0] = (DsizE <= sC.barSpace[0]) ? true: false;
sC.cntRSize[0] = ((sC.reqS[1] && !sC.forcedHide[1] && !sC.tooNarrow[0]) || sC.forcedBar[1]) ? DsizE - sC.barSpace[0] : DsizE;
sC.cntSize[0] = maxCWidth + A;
return sC.cntSize[0]
};
sC.getContentHeight = function () {
var a = h.offsetHeight;
sC.tooNarrow[1] = (a <= sC.barSpace[1]) ? true: false;
sC.cntRSize[1] = ((sC.reqS[0] && !sC.forcedHide[0] && !sC.tooNarrow[1]) || sC.forcedBar[0]) ? a - sC.barSpace[1] : a;
sC.cntSize[1] = m.offsetHeight + padHeightComp - 2;
return sC.cntSize[1]
};
sC.fixIEDispBug = function () {
m.sY.display = 'none';
m.sY.display = 'block'
};
sC.setWidth = function () {
mDv.setSize[0]((stdMode) ? (sC.cntRSize[0] - A - brdWidthLoss) : sC.cntRSize[0])
};
sC.setHeight = function () {
mDv.setSize[1]((stdMode) ? (sC.cntRSize[1] - padHeightComp - brdHeightLoss) : sC.cntRSize[1])
};
sC.createScrollBars = function () {
sC.getContentWidth();
sC.getContentHeight();
tDv.vrt = new Array();
var a = tDv.vrt;
createScrollBars(a, 'v', 1);
a.barPadding = [parseInt(getStyle(a.sBr, 'padding-top'),10), parseInt(getStyle(a.sBr, 'padding-bottom'),10)];
a.sBr.sY.padding = '0px';
a.sBr.curPos = 0;
a.sBr.vertical = true;
a.sBr.indx = 1;
m.vBar = a.sBr;
prepareScroll(a, 0);
sC.barSpace[0] = (sC.externaL[1]) ? 0 : Math.min(a.sDv.offsetWidth, sC.cntRSize[0]);
sC.setWidth();
tDv.hrz = new Array();
var b = tDv.hrz;
createScrollBars(b, 'h', 0);
b.barPadding = [parseInt(getStyle(b.sBr, 'padding-left'),10), parseInt(getStyle(b.sBr, 'padding-right'),10)];
b.sBr.sY.padding = '0px';
b.sBr.curPos = 0;
b.sBr.vertical = false;
b.sBr.indx = 0;
m.hBar = b.sBr;
if (wD.opera) b.sBr.sY.position = 'relative';
prepareScroll(b, 0);
sC.barSpace[1] = (sC.externaL[0]) ? 0 : Math.min(b.sDv.offsetHeight, sC.cntRSize[1]);
sC.setHeight();
tDv.sY.height = h.offsetHeight + 'px';
b.jBox = createDiv('sbox', false, true, null, null);
tDv.appendChild(b.jBox);
b.jBox.onmousedown = function () {
b.sBr.scrollBoth = true;
sC.goScroll = b.sBr;
b.sBr.clicked = true;
b.sBr.moved = false;
tDv.vrt.sBr.moved = false;
NewScrollenv.addTrggr(j, 'selectstart', retFalse);
NewScrollenv.addTrggr(j, 'mousemove', mMoveBar);
NewScrollenv.addTrggr(j, 'mouseup', mMouseUp);
return false
}
};
sC.goScroll = null;
sC.createScrollBars();
this.putAway(o, tDv);
if (!this.addChckTrggr(h, 'mousewheel', mWheelProc) || !this.addChckTrggr(h, 'DOMMouseScroll', mWheelProc)) {
h.onmousewheel = mWheelProc
};
this.addChckTrggr(h, 'mousewheel', mWheelProc);
this.addChckTrggr(h, 'DOMMouseScroll', mWheelProc);
this.addChckTrggr(m, 'touchstart', handleTouch);
this.addChckTrggr(tDv, 'touchstart', handleTouch);
h.setAttribute('tabIndex', '-1');
this.addTrggr(h, 'keydown', function (e) {
if (!e) {
e = wD.event
};
var a = e.keyCode,
cTrgt = (e.target) ? e.target: (e.srcElement) ? e.srcElement: false;
if (cTrgt && cTrgt.nodeName && u.indexOf('|' + cTrgt.nodeName + '|') > -1) return;
sfU.mDPosFix();
sC.pkeY = a;
if (sC.keyAct['_' + a]) {
sfU.setScrollPos(sC.keyAct['_' + a][0], sC.keyAct['_' + a][1], true);
sC.keyProc++;
if (e.preventDefault) e.preventDefault();
return false
} else {
sC.pkeY = "nonval"
}
});
this.addTrggr(h, 'keypress', function (e) {
if (!e) {
var e = wD.event
};
var a = sC.pkeY,
cTrgt = (e.target) ? e.target: (e.srcElement) ? e.srcElement: false;
if (cTrgt && cTrgt.nodeName && u.indexOf('|' + cTrgt.nodeName + '|') > -1) return;
if (sC.keyAct['_' + a]) {
sC.keyAproc++;
if (sC.keyProc >= sC.keyAproc) return;
sfU.setScrollPos(sC.keyAct['_' + a][0], sC.keyAct['_' + a][1], true);
if (e.preventDefault) e.preventDefault();
return false
}
});
this.addTrggr(h, 'keyup', function () {
sC.pkeY = false;
sC.keyProc = sC.keyAproc = 0
});
this.addTrggr(j, 'mouseup', intClear);
this.addTrggr(h, 'mousedown', handleTextSelect);
function handleTextSelect(e) {
if (!e) e = wD.event;
var a = (e.target) ? e.target: (e.srcElement) ? e.srcElement: false;
if (!a || (a.className && typeof(a.className) == 'string' && a.className.match(RegExp('\\bsgen\\b')))) return;
sC.inMposX = e.clientX;
sC.inMposY = e.clientY;
pageScrolled();
findPos(h);
intClear();
NewScrollenv.addTrggr(j, 'mousemove', tSelectMouse);
sC.mTBox = [h.xPos + 10, h.xPos + sC.cntRSize[0] - 10, h.yPos + 10, h.yPos + sC.cntRSize[1] - 10]
};
function tSelectMouse(e) {
if (!e) e = wD.event;
var a = e.clientX,
mY = e.clientY,
mdX = a + 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 = a - 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() {
NewScrollenv.remTrggr(j, '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(a) {
if (sC.touchFlick) {
window.clearInterval(sC.touchFlick);
sC.touchFlick = false
}
if (!a||a==null) {
tDv.sY.zIndex = sC.tDivZ;
sC.moveDelta = [0, 0];
sC.touchMoved = false
}
};
function pageScrolled() {
sC.xScrld = (wD.pageXOffset) ? wD.pageXOffset: (j.documentElement && j.documentElement.scrollLeft) ? j.documentElement.scrollLeft: 0;
sC.yScrld = (wD.pageYOffset) ? wD.pageYOffset: (j.documentElement && j.documentElement.scrollTop) ? j.documentElement.scrollTop: 0
};
h.scrollUpdate = sfU.updateScrollBars = function (a) {
if (tDv.getSize[1]() === 0 || tDv.getSize[0]() === 0) return;
var b = sC.reqS[0],
reqV = sC.reqS[1],
vBr = tDv.vrt,
hBr = tDv.hrz,
vUpReq,
hUpReq,
cPSize = [];
tDv.sY.width = h.offsetWidth - brdWidthLoss + 'px';
tDv.sY.height = -randvonoben-randvonunten+h.offsetHeight - brdHeightLoss + 'px'; // Hoehe des Scrollbalkens; -1 damit der "Border" unten zu sehen ist.
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 c = (b != 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) updateBarSize(vBr, (hUpReq && !sC.forcedHide[0]) ? sC.barSpace[1] : 0,null);
else m.sY.top = '-1px';
if (hUpReq) updateBarSize(hBr, (vUpReq && !sC.forcedHide[1]) ? sC.barSpace[0] : 0,null);
else m.sY.left = '-1px';
if (c && !a) sfU.updateScrollBars(true);
sC.edge[0] = sC.edge[1] = false
};
h.contentScroll = sfU.setScrollPos = function (a, b, c) {
var e;
if ((a || a === 0) && sC.scroller[0]) {
a = calcCScrollVal(a, 0);
e = tDv.hrz.sBr;
e.trgtScrll = (c) ? Math.min(Math.max(e.mxScroll, e.trgtScrll - a), 0) : -a;
e.realScrollPos()
}
if ((b || b === 0) && sC.scroller[1]) {
b = calcCScrollVal(b, 1);
e = tDv.vrt.sBr;
e.trgtScrll = (c) ? Math.min(Math.max(e.mxScroll, e.trgtScrll - b), 0) : -b;
e.realScrollPos()
}
if (!c) sC.edge[0] = sC.edge[1] = false;
if (h.onNewScroll && !d) h.onNewScroll();
return sC.scrollPosition
};
sfU.scrollContent = function (a, b) {
return sfU.setScrollPos(a, b, true)
};
sfU.scrollToElement = function (a) {
if (a == null || !isddvChild(a)) return;
var b = findRCpos(a);
sfU.setScrollPos(b[0] + sC.paddings[2], b[1] + sC.paddings[0], false);
sfU.setScrollPos(0, 0, true)
};
copyStyles(pDv, h, '0px', ['border-left-width', 'border-right-width', 'border-top-width', 'border-bottom-width']);
this.putAway(pDv, tDv);
h.scrollTop = 0;
h.scrollLeft = 0;
this.NewScrolllist[this.NewScrolllist.length] = h;
classChange(h, 'NewScrollactive', false);
m.sY.padding = '1px';
sfU.updateScrollBars(false);
sfU.setScrollPos(oScrollX, s, true);
if (t.match(uReg)) {
sfU.scrollToElement(j.getElementById(t.match(uReg)[1]))
};
sC.sizeChangeDetect = wD.setInterval(function () {
var n = fDv.offsetHeight;
if (n != sC.zTHeight) {
sfU.updateScrollBars(false);
sC.zTHeight = n
}
},
2500);
function calcCScrollVal(v, i) {
var a = v.toString();
v = parseFloat(a);
return parseInt((a.match(/p$/)) ? v * sC.cntRSize[i] * 0.9 : (a.match(/s$/)) ? v * sC.cntRSize[i] * 0.1 : v,10)
};
function getStyle(a, b) {
return NewScrollenv.getStyle(a, b)
};
function copyStyles(a, b, c, d) {
var e = new Array();
for (var i = 0; i < d.length; i++) {
e[i] = NewScrollenv.camelConv(d[i]);
b.style[e[i]] = getStyle(a, d[i]);
if (c) a.style[e[i]] = c
}
};
function createDiv(b, c, d, e, f) {
var g = (e) ? e: j.createElement('div');
if (!e) {
g.id = l + '_' + b;
g.className = (d) ? b: b + ' sgen'
};
g.getSize = [function () {
return g.offsetWidth
},
function () {
return g.offsetHeight
}];
g.setSize = (f) ? [retFalse, retFalse] : [function (a) {
g.sY.width = Math.max(a, 1) + 'px'
},
function (a) {
g.sY.height = Math.max(a, 1) + 'px'
}];
g.getPos = [function () {
return getStyle(g, 'left')
},
function () {
return getStyle(g, 'top')
}];
g.setPos = (f) ? [retFalse, retFalse] : [function (a) {
g.sY.left = a
},
function (a) {
g.sY.top = a
}];
g.fHide = function () {
g.sY.visibility = 'hidden'
};
g.fShow = function (a) {
g.sY.visibility = (a) ? getStyle(a, 'visibility') : 'visible'
};
g.sY = g.style;
if (c) g.NewScrolldata = c;
return g
};
function createScrollBars(a, b, c) {
var d = document.getElementById(l + '-NewScroll-' + b);
var e = (d != null) ? true: false;
a.sFDv = createDiv(b + 'basebeg', {
action: 'stepBack'
}, null, null, null);
a.sSDv = createDiv(b + 'baseend', {
action: 'stepFwd'
}, null, null, null);
a.sMDv = createDiv(b + 'basemid', null, null, null, null);
a.sFBr = createDiv(b + 'barbeg', null, null, null, null);
a.sSBr = createDiv(b + 'barend', null, null, null, null);
a.sMBr = createDiv(b + 'barmid', null, null, null, null);
a.sFFb = createDiv(b + 'fill', {
action: 'pageBack'
}, null, null, null);
a.sFRb = createDiv(b + 'rest', {
action: 'pageFwd'
}, null, null, null);
if (e) {
a.sDv = createDiv(false, {
action: 'pageBack'
},
false, d, true);
sC.externaL[c] = true;
a.sBr = createDiv(false, false, false, NewScrollenv.getByClassName(d, 'div', 'NewScroll-scrollbar')[0], null)
} else {
a.sDv = createDiv(b + 'base', {
action: 'pageBack'
}, null, null, null);
a.sBr = createDiv(b + 'bar', null, null, null, null);
tDv.appendChild(a.sDv);
a.sDv.appendChild(a.sBr);
a.sDv.appendChild(a.sFDv);
a.sDv.appendChild(a.sSDv);
a.sDv.appendChild(a.sMDv);
a.sBr.appendChild(a.sFBr);
a.sBr.appendChild(a.sMBr);
a.sBr.appendChild(a.sSBr)
};
a.sDv.appendChild(a.sFRb);
a.sDv.appendChild(a.sFFb)
};
function prepareScroll(c, d) {
var f = c.sDv,
sBr = c.sBr,
i = sBr.indx;
sBr.trgtScrll = 0;
sBr.minPos = c.barPadding[0];
c.padLoss = c.barPadding[0] + c.barPadding[1];
sBr.ofstParent = f;
sBr.mDv = mDv;
sBr.scrlTrgt = m;
sBr.targetSkew = 0;
updateBarSize(c, d, true);
sBr.doBarPos = function (a) {
if (!a) sBr.curPos = parseInt((sBr.trgtScrll * sBr.maxPos) / sBr.mxScroll,10);
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,10);
sBr.targetSkew = (sBr.curPos == 0) ? 0 : (sBr.curPos == sBr.maxPos) ? 0 : (!sBr.targetSkew) ? 0 : sBr.targetSkew;
if (a) {
sBr.trgtScrll = parseInt((sBr.curPos / sBr.sRange) * sBr.mxScroll,10);
m.setPos[i](sBr.trgtScrll + sBr.targetSkew - 1 + 'px');
sC.scrollPosition[i] = [ - sBr.trgtScrll - sBr.targetSkew, -sBr.mxScroll]
};
setFiller((i == 0) ? tDv.hrz: tDv.vrt, i)
};
sBr.realScrollPos = function () {
sBr.curPos = parseInt((sBr.trgtScrll * sBr.sRange) / sBr.mxScroll,10);
sBr.curPos = (Math.min(Math.max(sBr.curPos, 0), sBr.maxPos));
m.setPos[i](sBr.trgtScrll - 1 + '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');
sBr.onmousedown = function () {
sBr.clicked = true;
sC.goScroll = sBr;
sBr.scrollBoth = false;
sBr.moved = false;
NewScrollenv.addTrggr(j, 'selectstart', retFalse);
NewScrollenv.addTrggr(j, 'mousemove', mMoveBar);
NewScrollenv.addTrggr(j, 'mouseup', mMouseUp);
return false
};
sBr.onmouseover = intClear;
f.onmousedown = f.ondblclick = function (e) {
if (!e) {
e = wD.event
};
var a = (e.target) ? e.target: (e.srcElement) ? e.srcElement: false;
if (!a) return;
var b = [0, 0];
sfU.mDPosFix();
findPos(sBr);
b[sBr.indx] = (a.NewScrolldata && a.NewScrolldata.action) ? sC.actionVal[a.NewScrolldata.action] : 0;
if (!sC.touchMoved) sfU.setScrollPos(b[0], b[1], true);
else sC.touchMoved = false;
if (e.type != 'dblclick') {
intClear();
sC.barClickRetard = wD.setTimeout(function () {
sC.barClickScroll = wD.setInterval(function () {
sfU.setScrollPos(b[0], b[1], true)
},
80)
},
425)
};
return false
};
f.setVisibility = function (r) {
if (r) {
f.fShow(h);
sC.forcedHide[i] = (getStyle(f, 'visibility') == 'hidden' || sC.externaL[i] || sC.tooNarrow[1 - i]) ? true: false;
if (sC.tooNarrow[1 - i]) f.fHide();
if (!sC.forcedHide[i] || sC.externaL[i]) sBr.fShow(h);
else if (!sC.externaL[i]) sBr.fHide();
sC.scroller[i] = true;
classChange(f, '', 'NewScrollinactive')
} else {
f.fHide();
sBr.fHide();
sC.forcedBar[i] = (getStyle(f, 'visibility') != 'hidden') ? true: false;
sC.scroller[i] = false;
sBr.curPos = 0;
m.setPos[i]('-1px');
sC.scrollPosition[i] = [false, false];
classChange(f, 'NewScrollinactive', '')
};
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')
};
f.onmouseclick = retFalse
};
function updateBarSize(a, b, c) {
var d = a.sDv,
sBr = a.sBr,
i = sBr.indx;
d.setSize[i](tDv.getSize[i]() - b);
var e = d.getSize[1 - i](),
sdvi = d.getSize[i]();
d.setPos[1 - i](tDv.getSize[1 - i]() - e + 'px'); // horiz Pos. der/des Scrollbalken/s
sC.forcedPos[i] = (parseInt(d.getPos[1 - i](),10) === 0) ? true: false;
a.baseProp = 40; // Math.max(parseInt((sdvi - a.padLoss) * 0.75,10), 5); // H�he des Scrollers im Verh. zur H�he des ganzen Balkens
sBr.aSize = Math.min(Math.max(Math.min(parseInt(sC.cntRSize[i] / Math.max(sC.cntSize[i], 1) * sdvi,10), a.baseProp), 45), a.baseProp);
sBr.setSize[i](sBr.aSize);
var f = sBr.getSize[i](),
ssdvi = a.sSDv.getSize[i](),
ssbri = a.sSBr.getSize[i]();
sC.barSize[i] = f;
sBr.maxPos = sdvi - f - a.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.mxScroll = Math.min(sBr.mxScroll, -1);
sBr.trgtScrll = Math.max(sBr.trgtScrll, sBr.mxScroll);
sBr.sRange = sBr.maxPos;
a.sFDv.setSize[i](sdvi - ssdvi);
a.sFBr.setSize[i](f - ssbri);
var g = a.sFBr.getSize[i]();
a.sSBr.setPos[i](f - ssbri + 'px');
a.sSDv.setPos[i](sdvi - ssdvi + 'px');
a.sMBr.setSize[i](f - g - ssbri);
a.sMBr.setPos[i](g + 'px');
fillPos = Math.min(sBr.minPos, a.sFDv.getSize[i]());
midPos = a.sFDv.getSize[i]();
a.sMDv.setPos[i](midPos + 'px');
a.sMDv.setSize[i](sdvi - midPos - ssdvi);
a.sMDv.setSize[1 - i](e);
a.sFFb.setPos[i](fillPos + 'px');
a.sFRb.setPos[i](fillPos + 'px');
a.sFFb.setSize[1 - i](e);
a.sFRb.setSize[1 - i](e);
a.sFRb.setSize[i](sdvi - fillPos - (Math.min(a.barPadding[1], ssdvi)));
sBr.fillComp = sBr.minPos - fillPos;
if (!c||c==null) sBr.realScrollPos();
sC.fixIEDispBug()
};
function setFiller(a, i) {
a.sFFb.setSize[i](a.sBr.fillComp + a.sBr.curPos + parseInt(sC.barSize[i] / 2,10))
};
sfU.mDPosFix = function () {
mDv.scrollTop = 0;
mDv.scrollLeft = 0;
h.scrollTop = 0;
h.scrollLeft = 0
};
this.addTrggr(wD, 'load', function () {
if (h.NewScroll) sfU.updateScrollBars(false)
});
this.addTrggr(wD, 'resize', function () {
if (h.refreshTimeout) wD.clearTimeout(h.refreshTimeout);
h.refreshTimeout = wD.setTimeout(function () {
if (h.NewScroll) sfU.updateScrollBars(false)
},
80)
});
function retFalse() {
return false
};
function mMoveBar(e) {
if (!e) {
e = wD.event
};
var a = sC.goScroll,
movBr, maxx, xScroll, yScroll;
if (a == null) return;
if (!NewScrollenv.w3events && !e.button) mMouseUp();
maxx = (a.scrollBoth) ? 2 : 1;
for (var i = 0; i < maxx; i++) {
movBr = (i == 1) ? a.scrlTrgt.vBar: a;
if (a.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 (a.scrollBoth) movBr.curPos = movBr.curPos + (movBr.curPos - movBr.inCurPos);
movBr.doBarPos(true);
if (h.onNewScroll) h.onNewScroll()
} else movBr.moved = false
}
};
function mMouseUp() {
if (sC.goScroll != null) {
sC.goScroll.clicked = false;
sC.goScroll.trgtScrll += sC.goScroll.targetSkew
}
sC.goScroll = null;
NewScrollenv.remTrggr(j, 'selectstart', retFalse);
NewScrollenv.remTrggr(j, 'mousemove', mMoveBar);
NewScrollenv.remTrggr(j, '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])) {
handleTouchEnd(e);
return
};
var a = '',
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(null);
NewScrollenv.addChckTrggr(h, 'touchmove', handleTouchMove);
NewScrollenv.addChckTrggr(h, 'touchend', handleTouchEnd);
sC.touchBar = (e.target && e.target.id && e.target.id.match(/_[vh]scrollerba[rs]e?/)) ? true: false
};
function handleTouchMove(e) {
if (!e) e = wD.event;
if (e.targetTouches.length != 1) {
handleTouchEnd(e);
return
}
NewScrollenv.remTrggr(h, 'mousedown', handleTextSelect);
var a = [e.targetTouches[0].clientX, e.targetTouches[0].clientY];
sC.touchPrevent = true;
sC.moveDelta = [sC.touchPos[0] - a[0], sC.touchPos[1] - a[1]];
if (sC.touchBar) {
sC.moveDelta[0] *= -(sC.cntSize[0] / sC.cntRSize[0]);
sC.moveDelta[1] *= -(sC.cntSize[1] / sC.cntRSize[1])
} else {
sC.moveDelta[0] *= sC.touchMul[0];
sC.moveDelta[1] *= sC.touchMul[1]
};
sfU.scrollContent(sC.moveDelta[0], sC.moveDelta[1]);
sC.touchMoved = true;
sC.touchPos[0] = a[0];
sC.touchPos[1] = a[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
};
if (sC.touchPrevent) {
e.preventDefault();
tDv.sY.zIndex = '9999'
} else {
tDv.sY.zIndex = sC.tDivZ
}
};
function handleTouchEnd(e) {
if (!e) e = wD.event;
NewScrollenv.remTrggr(h, 'touchmove', handleTouchMove);
NewScrollenv.remTrggr(h, 'touchend', handleTouchEnd);
if ((sC.scroller[0] && Math.abs(sC.moveDelta[0]) > 6) || (sC.scroller[1] && Math.abs(sC.moveDelta[1]) > 6)) {
var a = 0;
flickClear(true);
sC.touchFlick = window.setInterval(function () {
sfU.scrollContent(easeInOut(sC.moveDelta[0], 0, 10, a, 0.3), easeInOut(sC.moveDelta[1], 0, 10, a, 0.3));
a++;
if (a > 10) flickClear(null)
},
100)
}
};
function mWheelProc(e) {
if (!e) e = wD.event;
if (!this.NewScroll) return;
var a = (e.target) ? e.target: (e.srcElement) ? e.srcElement: this;
if (a.nodeName && w.indexOf('|' + a.nodeName + '|') > -1) return;
var b, hEdge, hoverH = false,
delta = 0,
iNDx, scrollState = sC.scrollPosition;
sfU.mDPosFix();
if (a.id && a.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 ((scrollState[1][0] != 0) && (scrollState[1][0] != scrollState[1][1])) sC.edge[0] = sC.edge[1] = 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);
b = !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] && b && !hoverH) || (sC.scroller[0] && ((scrollState[0][0] == scrollState[0][1] && delta > 0) || (scrollState[0][0] == 0 && delta < 0)));
if (b && hEdge && !hoverH) sC.edge[iNDx] = true;
else sC.edge[iNDx] = false;
if (e.preventDefault) e.preventDefault();
return false
};
function isddvChild(a) {
while (a.parentNode) {
a = a.parentNode;
if (a == h) return true
}
return false
};
function findPos(a) {
var b = a,
curleft = curtop = 0;
if (b.offsetParent) {
while (b) {
curleft += b.offsetLeft;
curtop += b.offsetTop;
b = b.offsetParent
}
} else if (b.offsetLeft || b.offsetTop) {
curleft += b.offsetLeft;
curtop += b.offsetTop
} else if (b.x) {
curleft += b.x;
curtop += b.y
};
a.xPos = curleft;
a.yPos = curtop
};
function findRCpos(a) {
var b = a;
curleft = curtop = 0;
while (!b.offsetHeight && b.parentNode && b != m && getStyle(b, 'display') == 'inline') {
b = b.parentNode
};
if (b.offsetParent) {
while (b != m) {
curleft += b.offsetLeft;
curtop += b.offsetTop;
b = b.offsetParent
}
};
return [curleft, curtop]
};
function classChange(a, b, c) {
NewScrollenv.classChange(a, b, c)
};
function easeInOut(a, b, c, d, e) {
c = Math.max(c, 1);
var f = b - a,
stepp = a + (Math.pow(((1 / c) * d), e) * f);
return (stepp > 0) ? Math.floor(stepp) : Math.ceil(stepp)
}
},
globalInit: function () {
if (NewScrollenv.catchFastInit) window.clearInterval(NewScrollenv.catchFastInit);
if (!NewScrollenv.initialized) NewScrollenv.addTrggr(document, 'click', NewScrollenv.globalClickHandle);
NewScrollenv.initByClass();
NewScrollenv.initialized = true;
if (window.onNewScrollRun) window.onNewScrollRun()
},
globalClickHandle: function (e) {
if (!e) e = wD.event;
var a = e.target || e.srcElement;
if (a.nodeType == 3) a = a.parentNode;
if (!a.href) return;
var b = /#([^#.]*)$/,
urlExt = /(.*)#.*$/,
regExer = /(^|\s)NewScroll-in-page-link($|\s)/,
matcH, claSS, urlBase = document.location.href;
if (urlBase.match(urlExt)) urlBase = urlBase.match(urlExt)[1];
claSS = (a.className) ? a.className: '';
if (a.href.match(b) && ((a.href.match(urlExt) && urlBase === a.href.match(urlExt)[1]) || claSS.match(regExer))) {
var c = document.getElementById(a.href.match(b)[1]),
eScroll = false;
if (c == null) c = (c = document.getElementsByName(a.href.match(b)[1])[0]) ? c: null;
if (c != null) {
var d = c;
while (d.parentNode) {
d = d.parentNode;
if (d.NewScroll) {
d.NewScroll.scrollToElement(c);
eScroll = d
}
};
if (eScroll) {
if (e.preventDefault) e.preventDefault();
document.location.href = urlBase + '#' + a.href.match(b)[1];
eScroll.NewScroll.mDPosFix();
return false
}
}
}
},
classChange: function (a, b, c) {
if (!a.className) a.className = '';
var d = a.className;
if (b && !d.match(RegExp('(^|\\s)' + b + '($|\\s)'))) d = d.replace(/(\S$)/, '$1 ') + b;
if (c) d = d.replace(RegExp('((^|\\s)+' + c + ')+($|\\s)', 'g'), '$2').replace(/\s$/, '');
a.className = d
},
initByClass: function (a) {
NewScrollenv.initialized = true;
var b = NewScrollenv.getByClassName(document.getElementsByTagName('body')[0], 'div', (a) ? a: 'NewScroll');
for (var i = 0, tgDiv; tgDiv = b[i]; i++) if (!tgDiv.NewScroll) NewScrollenv.NewScrollMain(tgDiv)
},
scrollTo: function (a, b) {
if (typeof(a) == 'string') a = document.getElementById(a);
if (a == null) return false;
var c = a;
while (c.parentNode) {
c = c.parentNode;
if (c.NewScroll) {
if (b) {
document.location.href = '#' + b
};
c.NewScroll.scrollToElement(a);
c.NewScroll.mDPosFix();
return true
}
};
return false
},
updateScrollBars: function () {
for (var i = 0, NewScrolldiv; NewScrolldiv = NewScrollenv.NewScrolllist[i]; i++) {
NewScrolldiv.NewScroll.updateScrollBars(false)
}
},
camelConv: function (a) {
var a2 = a.split('-'),
reT = a2[0],
i;
for (i = 1; parT = a2[i]; i++) {
reT += parT.charAt(0).toUpperCase() + parT.substr(1)
};
return reT
},
getByClassName: function (a, b, c) {
if (typeof(a) == 'string') a = document.getElementById(a);
if (a == null) return false;
var d = new RegExp('(^|\\s)' + c + '($|\\s)'),
clsnm,
retArray = [],
key = 0;
var e = a.getElementsByTagName(b);
for (var i = 0, pusher; pusher = e[i]; i++) {
if (pusher.className && pusher.className.match(d)) {
retArray[key] = pusher;
key++
}
}
return retArray
},
checkHidden: function (a) {
if (a == null) return true;
var b;
while (a.parentNode) {
b = NewScrollenv.getStyle(a, 'display');
if (b == 'none') return true;
a = a.parentNode
};
return false
},
getStyle: function (a, b) {
if (window.getComputedStyle) return window.getComputedStyle(a, null).getPropertyValue(b);
if (a.currentStyle) return a.currentStyle[NewScrollenv.camelConv(b)];
return false
},
catchFastInit: window.setInterval(function () {
var a = document.getElementById('NewScroll-init');
if (a != null) {
NewScrollenv.initByClass();
window.clearInterval(NewScrollenv.catchFastInit)
}
},
100),
putAway: function (a, b) {
a.parentNode.removeChild(a);
a.style.display = 'none';
b.appendChild(a)
},
addTrggr: function (a, b, c) {
if (!NewScrollenv.addChckTrggr(a, b, c) && a.attachEvent) {
a.attachEvent('on' + b, c)
}
},
addChckTrggr: function (a, b, c) {
if (a.addEventListener) {
a.addEventListener(b, c, false);
NewScrollenv.w3events = true;
window.addEventListener('unload', function () {
NewScrollenv.remTrggr(a, b, c)
},
false);
return true
} else return false
},
remTrggr: function (a, b, c) {
if (!NewScrollenv.remChckTrggr(a, b, c) && a.detachEvent) a.detachEvent('on' + b, c)
},
remChckTrggr: function (a, b, c) {
if (a.removeEventListener) {
a.removeEventListener(b, c, false);
return true
} else return false
}
};
function CSBNewScroll(a) {
NewScrollenv.NewScrollMain(a)
};
NewScrollenv.NewScrollInit();