// ==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();