var ImageScroller = function(_imageScrollerParentDivID, _imageScrollerChildDivID) { _imageScrollerParentDivID = getElem(_imageScrollerParentDivID); _imageScrollerChildDivID = getElem(_imageScrollerChildDivID); var prImagePaths = new Array(); var prImageAltText = new Array(); var prImageClicks = new Array(); var prImageDescription = new Array(); var iNumOfThumbsShown = 1; var iNumOfImages; var bAutoScroll = 0; //0=false, 1=true var iAutoScrollDelay = 2000; var bAutoScrollDirection = 1; //0=back, 1=forward var bAutoReverse = 1; //0=false, 1=true var iScrollType = 1; //0=horizontal, 1=vertical var bEnableThumbBorder = 0; //0=no, 1=yes var bEnableCurrentCount = 0; //0=no, 1=yes var bEnableThumbDescription = 0; //0=no, 1=yes var bClickOpenType = 0; //0=same window, 1=new window var iImageScrollAmount = 3; //number of images to scroll var objCounterDiv = ""; var objDescriptionDiv = ""; var iSmoothSlideInterval = 3; var iSmoothSlideAmount = 7; var moveTimer; this.THUMB_HEIGHT = 76; this.THUMB_WIDTH = 82; this.THUMB_PADDING = 0; var CURRENT_THUMB_INDEX = 1; var NEW_REVERSE_OFFSET = 0; var MAX_REVERSE_OFFSET = 0; var NEW_FORWARD_OFFSET = 0; var IS_SCROLLING = false; //* BEGIN FUNCTIONS *// this.setNumOfImageToScroll = function(_NumOfImagesToScroll) { iImageScrollAmount = parseInt(_NumOfImagesToScroll); }; this.enableThumbnailDescription = function(_descriptionDivID) { bEnableThumbDescription = 1; objDescriptionDiv = _descriptionDivID; }; this.setScrollType = function(_iType) { if (_iType == 0) { iScrollType = 0; } else { iScrollType = 1; } }; this.setScrollSpeed = function(_iSpeed) { if (_iSpeed > 0 || _iSpeed < 1000) { iSmoothSlideInterval = _iSpeed; } else { iSmoothSlideInterval = 7; } }; this.setScrollAmount = function(_iAmount) { if (_iAmount > 0 || _iAmount < 1000) { iSmoothSlideAmount = _iAmount; } else { iSmoothSlideAmount = 7; } }; this.setClickOpenType = function(_openType) { if (_openType == 0 || _openType == 1) { bClickOpenType = _openType; } }; this.enableCurrentCount = function(_counterDivID) { bEnableCurrentCount = 1; objCounterDiv = _counterDivID; }; this.enableThumbBorder = function(_boolean) { bEnableThumbBorder = _boolean; }; this.setThumbsShown = function(_newNumOfThumbsShown) { iNumOfThumbsShown = parseInt(_newNumOfThumbsShown); }; this.addThumbnail = function(_thumbnailURL, _fullClickURL, _thumbnailAlt, _thumbnailDescription) { prImagePaths[prImagePaths.length] = _thumbnailURL; prImageClicks[prImageClicks.length] = _fullClickURL; prImageAltText[prImageAltText.length] = _thumbnailAlt; prImageDescription[prImageDescription.length] = _thumbnailDescription; }; this.setThumbnailHeight = function(_newThumbHeight) { this.THUMB_HEIGHT = _newThumbHeight; }; this.getThumbnailHeight = function() { return this.THUMB_HEIGHT; }; this.setThumbnailWidth = function(_newThumbWidth) { this.THUMB_WIDTH = _newThumbWidth; }; this.getThumbnailWidth = function() { return this.THUMB_WIDTH; }; this.setThumbnailPadding = function(_newThumbPadding) { this.THUMB_PADDING = _newThumbPadding; }; this.getThumbnailPadding = function() { return THUMB_PADDING; }; this.getCurrentThumbIndex = function() { return CURRENT_THUMB_INDEX; }; this.getThumbnailCount = function() { return iNumOfImages; }; this.renderScroller = function() { iNumOfImages = prImagePaths.length; if (iNumOfThumbsShown > iNumOfImages) { iNumOfThumbsShown = iNumOfImages; } MAX_REVERSE_OFFSET = 0 - (iNumOfImages - iNumOfThumbsShown) * this.THUMB_WIDTH; if (this.THUMB_PADDING > 0) { MAX_REVERSE_OFFSET = MAX_REVERSE_OFFSET - (iNumOfImages * this.THUMB_PADDING); } if (bEnableThumbBorder == 1) { MAX_REVERSE_OFFSET = MAX_REVERSE_OFFSET - (iNumOfImages * 4); } if (iScrollType == 0) { _imageScrollerParentDivID.style.width = (this.THUMB_WIDTH * iNumOfThumbsShown) + (iNumOfThumbsShown * (this.THUMB_PADDING * 2)) + "px"; if (bEnableThumbBorder == 1) { _imageScrollerParentDivID.style.width = (parseInt(_imageScrollerParentDivID.style.width) + (iNumOfThumbsShown * 4)) + "px"; } _imageScrollerParentDivID.style.height = this.THUMB_HEIGHT + (this.THUMB_PADDING * 2) + "px"; if (bEnableThumbBorder == 1) { _imageScrollerParentDivID.style.height = (parseInt(_imageScrollerParentDivID.style.height) + 4) + "px"; } _imageScrollerChildDivID.style.width = (this.THUMB_WIDTH * iNumOfImages) + (iNumOfImages * (this.THUMB_PADDING * 2)) + "px"; if (bEnableThumbBorder == 1) { _imageScrollerChildDivID.style.width = (parseInt(_imageScrollerChildDivID.style.width) + (iNumOfImages * 4)+ 62) + "px"; } _imageScrollerChildDivID.style.width = (parseInt(_imageScrollerChildDivID.style.width) + (iNumOfImages * 4)+ 12) + "px"; } else if (iScrollType == 1) { _imageScrollerParentDivID.style.width = (this.THUMB_WIDTH) + ((this.THUMB_PADDING * 2)) + "px"; if (bEnableThumbBorder == 1) { _imageScrollerParentDivID.style.width = (parseInt(_imageScrollerParentDivID.style.width) + (4)) + "px"; } _imageScrollerParentDivID.style.height = (this.THUMB_HEIGHT * iNumOfThumbsShown) + (iNumOfThumbsShown * (this.THUMB_PADDING * 2)) + "px"; if (bEnableThumbBorder == 1) { _imageScrollerParentDivID.style.height = (parseInt(_imageScrollerParentDivID.style.height) + (iNumOfThumbsShown * 4)+ 62) + "px"; } _imageScrollerChildDivID.style.width = (this.THUMB_WIDTH) + (this.THUMB_PADDING * 2) + "px"; if (bEnableThumbBorder == 1) { _imageScrollerChildDivID.style.width = (parseInt(_imageScrollerChildDivID.style.width) + 4 + 62) + "px"; } } //*** [Begin] Image Cacheing code ***// var oHref; var oImage; var oImage1; var oBR; var oSpan; var oDIV; var oDIV1; var browserName = navigator.appName; oHref = document.createElement("a"); oImage = document.createElement("img"); oImage1 = document.createElement("img"); oBR = document.createElement("br"); oSpan = document.createElement("span"); oDIV = document.createElement("div"); oDIV1 = document.createElement("div"); for (i = 0; i < iNumOfImages; i++) { oDIV = document.createElement("div"); oDIV1=document.createElement("div"); oDIV.style.height = '138px'; oDIV.style.width = '83px'; // oDIV.setAttribute("height","138"); // oDIV.setAttribute("width","83"); oDIV.setAttribute('style', 'text-align:center; float:left;height:138px;width:83px;background-color: white; padding:5px; padding-top:15px;margin-top:15px;margin-right:5px;'); if (browserName == "Microsoft Internet Explorer") { //oImage.style.margin = '5px'; //oDIV.style.height='138px'; //oDIV.style.width='83px'; oDIV.style.textAlign = 'center'; oDIV.style.styleFloat = 'left'; oDIV.style.background='white'; oDIV.style.padding='5px'; oDIV.style.paddingTop='15px'; oDIV.style.marginRight='5px'; oDIV.style.marginTop='15px'; } /*oDIV.style.height='138px'; oDIV.style.width='83px'; oDIV.style.textAlign = 'center'; oDIV.style.cssFloat='left'; oDIV.style.background='white'; oDIV.style.padding='5px'; oDIV.style.paddingTop='15px'; oDIV.style.marginRight='5px'; oDIV.style.marginTop='15px';*/ /*
*/ oDIV.setAttribute('id','dvrow'); oHref = document.createElement("a"); oHref.setAttribute('id','anc'); oHref.setAttribute('style', 'text-decoration:none;'); oHref.setAttribute('style','text-size:10px;'); //oHref.style.textDecoration='none'; oHref.href = prImageClicks[i]; oHref.title = prImageAltText[i]; //Create Span & BR oBR = document.createElement("br"); oSpan = document.createElement("span"); oSpan.setAttribute('id','spn'); oSpan.setAttribute('style', 'font-size:10px;'); oSpan.setAttribute('style', 'margin-top:20px;'); oSpan.style.marginTop='20px'; // Span Font Size In IE //oSpan.style.fontSize='10'; oSpan.innerHTML = prImageAltText[i]; if (bClickOpenType == 1) { //oHref.target = "_blank"; oHref.target = "_self"; } oImage = document.createElement("img"); oImage.src = prImagePaths[i]; oImage.alt = prImageAltText[i]; oImage.border = 0; oImage.setAttribute('style', 'margin-top:15px;'); oImage1 = document.createElement("img"); oImage1.src = "/site/biostatus/images/x.gif"; oImage1.border = 0; //oImage.style.marginTop='15px'; /*oImage.width = this.THUMB_WIDTH; oImage.height = this.THUMB_HEIGHT; oImage.style.padding = this.THUMB_PADDING;*/ //Our added margin if (browserName == "Microsoft Internet Explorer") { //oImage.style.margin = '5px'; oImage.setAttribute('style', 'margin:5px;'); } else { //oImage.style.margin = '1px'; oImage.setAttribute('style', 'margin:1px;'); } //oImage.style.margin = '4px'; //oImage.style.width='82px'; //oImage.style.height='82px'; oImage.setAttribute("height", "76"); oImage.setAttribute("width", "82"); oImage1.setAttribute("height", "8"); oImage1.setAttribute("width", "1"); //oImage.style.marginTop = '0px'; //oImage.style.padding = '0px'; oImage.setAttribute('style', 'margin-top:0px;padding:0px;'); oDIV1.appendChild(oImage1); oHref.appendChild(oImage); //Append BR & Span oHref.appendChild(oBR); oHref.appendChild(oDIV1); oHref.appendChild(oSpan); oDIV.appendChild(oHref); //alert(oDIV.innerHTML); //_imageScrollerChildDivID.appendChild(oHref); _imageScrollerChildDivID.appendChild(oDIV); } //*** [End] Image Cacheing code ***// if (bEnableCurrentCount == 1) { addAnEvent(window, "load", this.updateCurrentCount); } if (bEnableThumbDescription == 1) { addAnEvent(window, "load", this.updateCurrentDescription); } }; this.scrollUp = function() { _origOffset = parseInt(_imageScrollerChildDivID.style.top); _currentOffset = parseInt(_imageScrollerChildDivID.style.top); _newOffset = _currentOffset - (this.THUMB_HEIGHT * iImageScrollAmount); if (this.THUMB_PADDING > 0) { _newOffset = _newOffset - (2 * this.THUMB_PADDING); } if (bEnableThumbBorder == 1) { _newOffset = _newOffset - 4; } if (IS_SCROLLING == false && _newOffset >= MAX_REVERSE_OFFSET) { NEW_FORWARD_OFFSET = _newOffset; moveScrollerUp(); } }; this.scrollDown = function() { _origOffset = parseInt(_imageScrollerChildDivID.style.top); _currentOffset = parseInt(_imageScrollerChildDivID.style.top); _newOffset = _currentOffset + (this.THUMB_HEIGHT * iImageScrollAmount); if (this.THUMB_PADDING > 0) { _newOffset = _newOffset + (2 * this.THUMB_PADDING); } if (bEnableThumbBorder == 1) { _newOffset = _newOffset + 4; } if (_newOffset <= 0) { if (_currentOffset > (_origOffset - this.THUMB_HEIGHT)) { if (IS_SCROLLING == false && _newOffset >= MAX_REVERSE_OFFSET) { NEW_REVERSE_OFFSET = _newOffset; moveScrollerDown(); } } } }; this.scrollTop = function() { if (IS_SCROLLING == false) { NEW_FORWARD_OFFSET = (-1 * (iNumOfImages - iNumOfThumbsShown) * this.THUMB_HEIGHT); CURRENT_THUMB_INDEX = iNumOfImages - iNumOfThumbsShown; moveScrollerUp(); } }; this.scrollBottom = function() { if (IS_SCROLLING == false) { NEW_REVERSE_OFFSET = 0; CURRENT_THUMB_INDEX = iNumOfImages - iNumOfThumbsShown; moveScrollerDown(); } }; this.scrollReverse = function() { _origOffset = parseInt(_imageScrollerChildDivID.style.left); _currentOffset = parseInt(_imageScrollerChildDivID.style.left); _newOffset = _currentOffset + (this.THUMB_WIDTH * iImageScrollAmount); if (this.THUMB_PADDING > 0) { _newOffset = _newOffset + (this.THUMB_PADDING * (2 * iImageScrollAmount)); } if (bEnableThumbBorder == 1) { _newOffset = _newOffset + 4; } if (_newOffset <= 0) { if (_currentOffset > (_origOffset - (this.THUMB_WIDTH * iImageScrollAmount))) { if (IS_SCROLLING == false) { NEW_REVERSE_OFFSET = _newOffset; moveScrollerRight(); } } } }; this.scrollForward = function() { _origOffset = parseInt(_imageScrollerChildDivID.style.left); _currentOffset = parseInt(_imageScrollerChildDivID.style.left); _newOffset = _currentOffset - (this.THUMB_WIDTH * iImageScrollAmount); if (this.THUMB_PADDING > 0) { _newOffset = _newOffset - ((2 * iImageScrollAmount) * this.THUMB_PADDING); } if (bEnableThumbBorder == 1) { _newOffset = _newOffset - 4; } if (IS_SCROLLING == false && _newOffset >= MAX_REVERSE_OFFSET) { NEW_FORWARD_OFFSET = _newOffset; moveScrollerLeft(); } }; this.scrollEnd = function() { if (IS_SCROLLING == false) { NEW_FORWARD_OFFSET = MAX_REVERSE_OFFSET; CURRENT_THUMB_INDEX = iNumOfImages - iNumOfThumbsShown; moveScrollerLeft(); } }; this.scrollBegin = function() { if (IS_SCROLLING == false) { NEW_REVERSE_OFFSET = 0; CURRENT_THUMB_INDEX = 2; moveScrollerRight(); } }; this.updateCurrentDescription = function() { getElem(objDescriptionDiv).innerHTML = prImageDescription[CURRENT_THUMB_INDEX - 1]; }; this.updateCurrentCount = function() { getElem(objCounterDiv).innerHTML = CURRENT_THUMB_INDEX + "/" + iNumOfImages; }; function moveScrollerUp() { _ElementObj = _imageScrollerChildDivID; _currentOffset = parseInt(_ElementObj.style.top); if (_currentOffset > NEW_FORWARD_OFFSET && (_currentOffset - iSmoothSlideAmount) >= NEW_FORWARD_OFFSET) { _ElementObj.style.top = _currentOffset - iSmoothSlideAmount + "px"; IS_SCROLLING = true; moveTimer = window.setTimeout(moveScrollerUp, iSmoothSlideInterval); } else if (_currentOffset > NEW_FORWARD_OFFSET) { _ElementObj.style.top = _currentOffset - 1 + "px"; IS_SCROLLING = true; moveTimer = window.setTimeout(moveScrollerUp, iSmoothSlideInterval); } else { IS_SCROLLING = false; CURRENT_THUMB_INDEX++; window.clearTimeout(moveTimer); if (bEnableThumbDescription == 1) { getElem(objDescriptionDiv).innerHTML = prImageDescription[CURRENT_THUMB_INDEX - 1]; } if (bEnableCurrentCount == 1) { getElem(objCounterDiv).innerHTML = CURRENT_THUMB_INDEX + "/" + iNumOfImages; } } }; function moveScrollerDown() { _ElementObj = _imageScrollerChildDivID; _currentOffset = parseInt(_ElementObj.style.top); if (_currentOffset < NEW_REVERSE_OFFSET && (_currentOffset + iSmoothSlideAmount) <= NEW_REVERSE_OFFSET) { _ElementObj.style.top = _currentOffset + iSmoothSlideAmount + "px"; IS_SCROLLING = true; moveTimer = window.setTimeout(moveScrollerDown, iSmoothSlideInterval); } else if (_currentOffset < NEW_REVERSE_OFFSET) { _ElementObj.style.top = _currentOffset + 1 + "px"; IS_SCROLLING = true; moveTimer = window.setTimeout(moveScrollerDown, iSmoothSlideInterval); } else { IS_SCROLLING = false; CURRENT_THUMB_INDEX--; window.clearTimeout(moveTimer); if (bEnableThumbDescription == 1) { getElem(objDescriptionDiv).innerHTML = prImageDescription[CURRENT_THUMB_INDEX - 1]; } if (bEnableCurrentCount == 1) { getElem(objCounterDiv).innerHTML = CURRENT_THUMB_INDEX + "/" + iNumOfImages; } } }; function moveScrollerRight() { _ElementObj = _imageScrollerChildDivID; _currentOffset = parseInt(_ElementObj.style.left); if (_currentOffset < NEW_REVERSE_OFFSET && (_currentOffset + iSmoothSlideAmount) <= NEW_REVERSE_OFFSET) { _ElementObj.style.left = _currentOffset + iSmoothSlideAmount + "px"; IS_SCROLLING = true; moveTimer = window.setTimeout(moveScrollerRight, iSmoothSlideInterval); } else if (_currentOffset < NEW_REVERSE_OFFSET) { _ElementObj.style.left = _currentOffset + 1 + "px"; IS_SCROLLING = true; moveTimer = window.setTimeout(moveScrollerRight, iSmoothSlideInterval); } else { IS_SCROLLING = false; CURRENT_THUMB_INDEX--; window.clearTimeout(moveTimer); if (bEnableThumbDescription == 1) { getElem(objDescriptionDiv).innerHTML = prImageDescription[CURRENT_THUMB_INDEX - 1]; } if (bEnableCurrentCount == 1) { getElem(objCounterDiv).innerHTML = CURRENT_THUMB_INDEX + "/" + iNumOfImages; } } }; function moveScrollerLeft() { _ElementObj = _imageScrollerChildDivID; _currentOffset = parseInt(_ElementObj.style.left); if (_currentOffset > NEW_FORWARD_OFFSET && (_currentOffset - iSmoothSlideAmount) >= NEW_FORWARD_OFFSET) { _ElementObj.style.left = _currentOffset - iSmoothSlideAmount + "px"; IS_SCROLLING = true; moveTimer = window.setTimeout(moveScrollerLeft, iSmoothSlideInterval); } else if (_currentOffset > NEW_FORWARD_OFFSET) { _ElementObj.style.left = _currentOffset - 1 + "px"; IS_SCROLLING = true; moveTimer = window.setTimeout(moveScrollerLeft, iSmoothSlideInterval); } else { IS_SCROLLING = false; CURRENT_THUMB_INDEX++; window.clearTimeout(moveTimer); if (bEnableThumbDescription == 1) { getElem(objDescriptionDiv).innerHTML = prImageDescription[CURRENT_THUMB_INDEX - 1]; } if (bEnableCurrentCount == 1) { getElem(objCounterDiv).innerHTML = CURRENT_THUMB_INDEX + "/" + iNumOfImages; } } }; function addAnEvent(_obj, _eventName, _functionName) { if (window.addEventListener) { _obj.addEventListener(_eventName, _functionName, false); } else { _obj.attachEvent("on" + _eventName, _functionName); } }; function getElem(_elemID) { return document.getElementById(_elemID); }; };