// Made by geeeet@ghtml.com // Keep these two lines and you're free to use this code // Touch me here :-) var leftH = 22; // Height of left-arrow var leftW = 22; // Width of left-arrow var rightH = 22; // Height of right-arrow var rightW = 22; // Width of right-arrow var dragH = 22; // Height of scrollbar var dragW = 297; // Width of scrollbar var scrollW = 596; // Width of scrollbar var speed = 4; // Scroll speed // And now... go to the bottom of the page... // Browser detection var dom = document.getElementById ? true:false; var nn4 = document.layers ? true:false; var ie4 = document.all ? true:false; var mouseY; // Mouse Y position onclick var mouseX; // Mouse X position onclick var clickLeft = false; // If click on left-arrow var clickRight = false; // If click on right-arrow var clickDrag = false; // If click on scrollbar var clickAbove = false; // If click above scrollbar var clickBelow = false; // If click below scrollbar var timer = setTimeout("",500); // Repeat variable var leftL; // left-arrow X var leftT; // left-arrow Y var rightL; // Right-arrow X var rightT; // Right-arrow Y var dragL; // Scrollbar X var dragT; // Scrollbar Y var rulerL; // Ruler X var rulerT; // Ruler Y var contentT; // Content layer Y; var contentW; // Content height var fileprogressW; // Content clip height var scrollLength; // Number of pixels scrollbar should move var startY; // Keeps track of offset between mouse and span // Mousedown function down(e){ if((document.layers && e.which!=1) || (document.all && event.button!=1)) return true; // Enables the right mousebutton getMouse(e); startX = (mouseX - dragL); // If click on left-arrow if(mouseX >= leftL && (mouseX <= (leftL + leftW)) && mouseY >= leftT && (mouseY <= (leftT + leftH))){ clickLeft = true; return scrollLeft(); } // Else if click on right-arrow else if(mouseX >= rightL && (mouseX <= (rightL + rightW)) && mouseY >= rightT && (mouseY <= (rightT + rightH))){ clickRight = true; return scrollRight(); } // Else if click on scrollbar else if(mouseX >= dragL && (mouseX <= (dragL + dragW)) && mouseY >= dragT && (mouseY <= (dragT + dragH))){ clickDrag = true; return false; } else if(mouseY >= dragT && (mouseY <= (dragT + dragH)) && mouseX >= rulerL && (mouseX <= (rulerL + scrollW))){ // If click above drag if(mouseX < dragL){ clickAbove = true; clickLeft = true; return scrollLeft(); } // Else click below drag else{ clickBelow = true; clickRight = true; return scrollRight(); } } // If no scrolling is to take place else{ return true; } } // Drag function function move(e){ if(clickDrag && contentW > fileprogressW){ getMouse(e); dragL = (mouseX - startX); if(dragL < (rulerL)) dragL = rulerL; if(dragL > (rulerL + scrollW - dragW)) dragL = (rulerL + scrollW - dragW); contentL = ((dragL - rulerL)*(1/scrollLength)); contentL = eval('-' + contentL); moveTo(); // So ie-pc doesn't select gifs if(ie4) return false; } } // Mouseup function up(){ clearTimeout(timer); // Resetting variables clickLeft = false; clickRight = false; clickDrag = false; clickAbove = false; clickBelow = false; return true; } // Reads content layer top function getT(){ if(dom) contentL = parseInt(document.getElementById("beispiele").style.left); else if(ie4) contentL = document.all.content.style.pixelLeft; else if(nn4) contentL = document.fileprogress.document.content.left; if(!contentL) contentL = 0; } // Reads mouse X and Y coordinates function getMouse(e){ if(ie4){ mouseY = event.clientY + document.body.scrollTop; mouseX = event.clientX + document.body.scrollLeft; } else if(nn4 || dom){ mouseY = e.pageY; mouseX = e.pageX; } } // Moves the layer function moveTo(){ if(dom) { document.getElementById("beispiele").style.left = contentL + "px"; document.getElementById("drag").style.left = dragL + "px"; document.getElementById("ruler").style.left = dragL + "px"; } else if(ie4){ document.all.content.style.left = contentL; document.all.ruler.style.left = dragL; document.all.drag.style.left = dragL; } else if(nn4){ document.fileprogress.document.content.left = contentL; document.ruler.left = dragL; document.drag.left = dragL; } } // Scrolls left function scrollLeft(){ getT(); if(clickAbove){ if(dragL <= (mouseX-(dragW/2))) return up(); } if(clickLeft){ if(contentL < 0){ dragL = dragL - (speed*scrollLength); if(dragL < (rulerL)) dragL = rulerL; contentL = contentL + speed; if(contentL > 0) contentL = 0; moveTo(); timer = setTimeout("scrollLeft()",25); } } return false; } // Scrolls right function scrollRight(){ getT(); if(clickBelow){ if(dragL >= (mouseX-(dragW/2))) return up(); } if(clickRight){ if(contentL > -(contentW - fileprogressW)){ dragL = dragL + (speed*scrollLength); if(dragL > (rulerL + scrollW - dragW)) dragL = (rulerL + scrollW - dragW); contentL = contentL - speed; if(contentL < -(contentW - fileprogressW)) contentL = -(contentW - fileprogressW); moveTo(); timer = setTimeout("scrollRight()",25); } } return false; } // reloads page to position the layers again function reloadPage(){ location.reload(); } // Preload function eventLoader(){ if(dom){ // Up-arrow X and Y variables leftL = parseInt(document.getElementById("up").style.left); leftT = parseInt(document.getElementById("up").style.top); // Down-arrow X and Y variables rightL = parseInt(document.getElementById("down").style.left); rightT = parseInt(document.getElementById("down").style.top); // Scrollbar X and Y variables dragL = parseInt(document.getElementById("drag").style.left); dragT = parseInt(document.getElementById("drag").style.top); // Ruler Y variable //rulerT = parseInt(document.getElementById("ruler").style.top); rulerL = parseInt(document.getElementById("ruler").style.left); // Width of content layer and clip layer // contentL = parseInt(document.getElementById("beispiele").style.left); contentW = parseInt(document.getElementById("beispiele").offsetWidth); fileprogressW = parseInt(document.getElementById("beispiel_container").offsetWidth); //alert(contentW + " - " + fileprogressW); } else if(ie4){ // Up-arrow X and Y variables leftL = document.all.up.style.pixelLeft; leftT = document.all.up.style.pixelTop; // Down-arrow X and Y variables rightL = document.all.down.style.pixelLeft; rightT = document.all.down.style.pixelTop; // Scrollbar X and Y variables dragL = document.all.drag.style.pixelLeft; dragT = document.all.drag.style.pixelTop; // Ruler Y variable rulerT = document.all.ruler.style.pixelTop; // Height of content layer and clip layer contentW = parseInt(document.all.content.scrollWidth); fileprogressW = parseInt(document.all.fileprogress.style.width); } else if(nn4){ // Up-arrow X and Y variables leftL = document.up.left; leftT = document.up.top; // Down-arrow X and Y variables rightL = document.down.left; rightT = document.down.top; // Scrollbar X and Y variables dragL = document.drag.left; dragT = document.drag.top; // Ruler Y variable rulerT = document.ruler.top; // Height of content layer and clip layer contentW = document.fileprogress.document.content.clip.right; fileprogressW = document.fileprogress.clip.right; } // Number of pixels scrollbar should move scrollLength = ((scrollW-dragW)/(contentW-fileprogressW)); // Initializes event capturing if(nn4){ document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP); window.onresize = reloadPage; } document.onmousedown = down; document.onmousemove = move; document.onmouseup = up; } window.onload = function() { eventLoader(); }