bc_gCurrentPage_1 = 0; bc_gCurrentPage_2 = 0; bc_gCurrentPage_3 = 0; bc_gWidthOfSlideArea = 300; bc_sliding = false; bc_gNumOfDots = 2; bc_gCurrentSlideContainer = 1; bc_gCurrentRelatedCount = 1; function bc_handleLineupMouseOver(pSlideContainer, pPage) { var index = bc_getCurrentIndex(pSlideContainer); if (index != pPage) { document.getElementById('dot-' + pSlideContainer + '_' + pPage).className = "bc_overNumber"; } } function bc_handleLineupMouseOut(pSlideContainer, pPage) { var index = bc_getCurrentIndex(pSlideContainer); if (index != pPage) { document.getElementById('dot-' + pSlideContainer + '_' + pPage).className = "bc_pageNumbers"; } } function bc_slideTo(pSlideContainer, pPage) { var index = bc_getCurrentIndex(pSlideContainer); if (index != pPage && !bc_sliding) { bc_sliding = true; var pos = (index - pPage) * bc_gWidthOfSlideArea; document.getElementById('dot-'+pSlideContainer+'_' + index).className = "bc_pageNumbers"; if(pSlideContainer == 1) { bc_gCurrentPage_1 = pPage; } else if(pSlideContainer == 2) { bc_gCurrentPage_2 = pPage; } else { bc_gCurrentPage_3 = pPage; } document.getElementById('dot-'+pSlideContainer+'_' + pPage).className = "bc_activeNumber"; bc_slideElement(document.getElementById('lineupSlideContainer-'+pSlideContainer), 500, bc_getNum(document.getElementById('lineupSlideContainer-'+pSlideContainer).style.left) + pos, 'left'); bc_checkNumbers(pPage > index, pSlideContainer, pPage); } } function bc_prevSlide(pSlideContainer) { var index = bc_getCurrentIndex(pSlideContainer); if(index != 0 && !bc_sliding) { bc_sliding = true; bc_slideElement(document.getElementById('lineupSlideContainer-' + pSlideContainer), 500, bc_getNum(document.getElementById('lineupSlideContainer-' + pSlideContainer).style.left) + bc_gWidthOfSlideArea, 'left'); document.getElementById('dot-' +pSlideContainer + '_' + index).className = "bc_pageNumbers"; bc_updateCurrentIndex(pSlideContainer); index = bc_getCurrentIndex(pSlideContainer); document.getElementById('dot-' + pSlideContainer + '_' + index).className = "bc_activeNumber"; bc_checkNumbers(false, pSlideContainer, index); } } function bc_checkNumbers(pForward, pSlideContainer, pIndex) { var currentPage = pIndex+1; var left = bc_getNum($('bc_slideContainer_' + pSlideContainer).style.left); var startIndex = (Math.abs(left)/27); var numberOfPages = $('bc_slideContainer_' + pSlideContainer).childElements().size(); var numberOfContainers = Math.ceil(numberOfPages/6); var currentContainer = Math.floor(currentPage/6); if(pForward && (currentPage%6==1) && (currentContainer < numberOfContainers)) { left = calculateLeft(currentPage, numberOfPages, pForward); jQuery('bc_slideContainer_' + pSlideContainer).css('left', left + "px"); } else if(!pForward) { left = calculateLeft(currentPage, numberOfPages, pForward); jQuery('bc_slideContainer_' + pSlideContainer).css('left', left + "px"); } } function calculateLeft(currentPage, numPages, pForward) { if(numPages <= 7) { return 0; } if(pForward) { if(currentPage + 7 > numPages) { return (numPages - 7) * -27; } } else { var numberOfContainers = Math.ceil(numPages/6); var currentContainer = Math.ceil(currentPage/6); if(currentPage + 7 > numPages && (currentContainer == numberOfContainers)) { return (numPages - 7) * -27; } } if(currentPage%6==0) { return Math.floor((currentPage-1)/6) * (-162); } return Math.floor(currentPage/6) * (-162); } function bc_nextSlide(pSlideContainer) { var index = bc_getCurrentIndex(pSlideContainer); var numVid = Math.ceil(bc_gNumVideosArray[pSlideContainer -1 ]/6)-1; if(index < numVid && !bc_sliding) { bc_sliding = true; bc_slideElement(document.getElementById('lineupSlideContainer-' + pSlideContainer), 500, bc_getNum(document.getElementById('lineupSlideContainer-' + pSlideContainer).style.left) - bc_gWidthOfSlideArea, 'left'); document.getElementById('dot-' + + pSlideContainer + '_' + index).className = "bc_pageNumbers"; bc_updateCurrentIndex(pSlideContainer + 3); index = bc_getCurrentIndex(pSlideContainer); document.getElementById('dot-' + pSlideContainer + '_' + index).className = "bc_activeNumber"; bc_checkNumbers(true, pSlideContainer, index); } } function bc_relatedSlideRight() { if(bc_gCurrentRelatedCount < bc_gNumRelatedPages && !bc_sliding) { bc_sliding = true; bc_slideElement(document.getElementById('bc_relatedSlider'), 500, bc_getNum(document.getElementById('bc_relatedSlider').style.left) - (bc_getNum(document.getElementById('bc_relatedInnerContainer').style.width) + 13), 'left'); bc_gCurrentRelatedCount++; } bc_checkRelatedArrows(); } function bc_relatedSlideLeft() { if(bc_gCurrentRelatedCount > 1 && !bc_sliding) { bc_sliding = true; bc_slideElement(document.getElementById('bc_relatedSlider'), 500, bc_getNum(document.getElementById('bc_relatedSlider').style.left) + (bc_getNum(document.getElementById('bc_relatedInnerContainer').style.width) + 13), 'left'); bc_gCurrentRelatedCount--; } bc_checkRelatedArrows(); } function bc_checkRelatedArrows() { if(bc_gCurrentRelatedCount == bc_gNumRelatedPages) { document.getElementById('bc_relatedRightArrow').style.display = "none"; } else { document.getElementById('bc_relatedRightArrow').style.display = "block"; } if(bc_gCurrentRelatedCount == 1) { document.getElementById('bc_relatedLeftArrow').style.display = "none"; } else { document.getElementById('bc_relatedLeftArrow').style.display = "block"; } } function bc_getCurrentIndex(pSlideContainer) { switch(pSlideContainer) { case 1: return bc_gCurrentPage_1; case 2: return bc_gCurrentPage_2; case 3: return bc_gCurrentPage_3; } } function bc_updateCurrentIndex(pSlideContainer) { switch(pSlideContainer) { case 1: bc_gCurrentPage_1--; return; case 2: bc_gCurrentPage_2--; return; case 3: bc_gCurrentPage_3--; return; case 4: bc_gCurrentPage_1++; return; case 5: bc_gCurrentPage_2++; return; case 6: bc_gCurrentPage_3++; return; } } function bc_setArrows(n) { bc_sliding = false; } /** * A helper function to get a number if from a style. This is to handle the case where we set the height * of a div to 100px and need to get rid of the px. * @param {Object} num - the string or number to check. */ function bc_getNum(num) { if(num.indexOf('px') > -1) { return parseInt(num.substring(0, num.indexOf('px'))); } else { return parseInt(num); } } /** * A helper function to prep for the actual transistion of sliding the elements. * @param {Object} pElementToMove - The element that we are going to move on the screen. * @param {Object} pTimeToTake - How long we have to make this transistion. * @param {Object} pMoveEnd - Where we want this element to end up. * @param {Object} pType - What type of move this is. So top in this case. */ function bc_slideElement(pElementToMove, pTimeToTake, pMoveEnd, pType) { var moveStart = bc_getNum(pElementToMove.style[pType]); var amountToMove = pMoveEnd - moveStart; var timeStart = new Date().getTime (); var timeEnd = timeStart + pTimeToTake; bc_doSlideElement(pElementToMove, pType, amountToMove, moveStart, pTimeToTake, timeEnd); } /** * A helper function do the actual slide down. This based off of time to make the transistion as * clean as possible. * * @param {Object} pElementToMove - The element that is goign to be slid * @param {Object} pType - What we changing on this element to move. In this case top. * @param {Object} pAmountToMove - How much we have to move. * @param {Object} pMoveStart - A starting position. * @param {Object} pTimeToTake - How much time we have to complete this move. * @param {Object} pTimeEnd - When we have to complete this move by. */ function bc_doSlideElement(pElementToMove, pType, pAmountToMove, pMoveStart, pTimeToTake, pTimeEnd) { var currentTime = new Date().getTime(); var timeRemaining = Math.max(0, pTimeEnd - currentTime); var currentMove = parseInt(pAmountToMove - (Math.pow(timeRemaining, 3) / Math.pow(pTimeToTake, 3)) * pAmountToMove); pElementToMove.style[pType] = (pMoveStart + currentMove) + "px"; if (timeRemaining > 0) { setTimeout(function () { bc_doSlideElement(pElementToMove, pType, pAmountToMove, pMoveStart, pTimeToTake, pTimeEnd); }, 10); } else { bc_setArrows(); } }