// Carousel script var Carousel = { isMouseBtnPressed: 0, // Is the mouse button being pressed? currentSpeed: 0, // current carousel speed minimumSpeed: 2, // minimum speed maximumSpeed: 30, // maximum speed hitTheBrakes: 0, // Did the user move the mouse off the arrow? scrollThis: null, // the "caro_images2" element scrolldelay: null, // timer ID // This function updates the position of the "caro_images2" element. It calls itself // recursively during movement. caroScroll:function (sDirection) { var iDirection = (sDirection == "Left") ? 1 : -1; // Left arrow moves in positive direction, right arrow negative if (Carousel.isMouseBtnPressed && !Carousel.hitTheBrakes) { // "!Carousel.hitTheBrakes" needed in case user clicks and drags off arrow Carousel.currentSpeed += iDirection; // Accelerate if (Math.abs(Carousel.currentSpeed) > Carousel.maximumSpeed) // Are we exceeding the speed limit? Carousel.currentSpeed = iDirection * Carousel.maximumSpeed; // Set speed to maximum } else { // mouseup or mouseout Carousel.currentSpeed -= iDirection; // Decelerate if (iDirection == 1) { // Left arrow if (Carousel.currentSpeed < Carousel.minimumSpeed) { // too slow? if (Carousel.hitTheBrakes) { // mouse out? Carousel.currentSpeed = 0; // come to a stop } else { Carousel.currentSpeed = Carousel.minimumSpeed; // set speed to minimum } } } else { // Right arrow if (Carousel.currentSpeed > -Carousel.minimumSpeed) { // too slow? if (Carousel.hitTheBrakes) { // mouse out? Carousel.currentSpeed = 0; // come to a stop } else { Carousel.currentSpeed = -Carousel.minimumSpeed; // set speed to minimum } } } } if (iDirection == 1) { // left arrow if (parseInt(Carousel.scrollThis.style.left) < 0) { // not at the left edge? updatePosition(); } else { // we're at the left edge document.getElementById("caro_left").style.backgroundPosition = '-40px 0px'; // grey left arrow } } else { // right arrow if ( ( document.getElementById("caro_images1").offsetWidth - parseInt(Carousel.scrollThis.style.left) ) < Carousel.scrollThis.offsetWidth ) { // not at the right edge? // (width of container) - (position of scroller) < (full width of the content) updatePosition(); } else { // we're at the right edge document.getElementById("caro_right").style.backgroundPosition = '-102px 0px'; // grey right arrow } } function updatePosition() { document.getElementById("caro_left").style.backgroundPosition = '-9px 0px'; // blue left arrow document.getElementById("caro_right").style.backgroundPosition = '-71px 0px'; // blue right arrow Carousel.scrollThis.style.left=parseInt(Carousel.scrollThis.style.left) + Carousel.currentSpeed + 'px'; // Update position of scrollThis if (Carousel.currentSpeed) { clearTimeout(Carousel.scrolldelay); // fix problem where user moves mouse quickly from one arrow to the other Carousel.scrolldelay = setTimeout('Carousel.caroScroll("' + sDirection + '")',30); // scrolls every __ milliseconds } } }, // This function inserts the arrows. It is called on page load. initialize:function () { if (document.getElementById && document.getElementById("carousel")) { // Make sure browser supports getElementById and div "carousel" exists // Check to see if CSS is enabled var elementCaroRight = document.getElementById("caro_images1"); if (elementCaroRight.currentStyle) { // for IE var styleCaroRight = elementCaroRight.currentStyle["position"]; } else if (window.getComputedStyle) { // for FF var styleCaroRight = document.defaultView.getComputedStyle(elementCaroRight,null).getPropertyValue("position"); } if (styleCaroRight == "relative") { /* CSS is enabled */ var filenameArrows = "images/carousel.png"; if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ // Check for IE var ieversion=new Number(RegExp.$1) if (ieversion <= 6){ filenameArrows = "images/carousel.gif"; // IE6 doesn't support transparent png, so use gif } } Carousel.scrollThis = document.getElementById("caro_images2"); Carousel.scrollThis.style.left = "0px"; document.getElementById("caro_images1").style.overflow="hidden"; /* Hide the scrollbars */ document.getElementById("caro_left").style.background = 'transparent url(' + filenameArrows + ') -40px 0px no-repeat'; // left arrow starts grey document.getElementById("caro_left").style.width = '23px'; document.getElementById("caro_left").style.height = '50px'; document.getElementById("caro_right").style.background = 'transparent url(' + filenameArrows + ') -71px 0px no-repeat'; // right arrow starts blue document.getElementById("caro_right").style.width = '23px'; document.getElementById("caro_right").style.height = '50px'; } } } } addLoadEvent(Carousel.initialize); // -->