I have a banner that has a carousel where each slide has a different clickthrough url. Clickthroughs are added to divs with addEvent. It all seems to work until the carousel loops back to the beginning, when the clickthrough don't work anymore. Here is the js..
(function checkInit() {
try {
EB.isInitialized() ? onInit() : EB.addEventListener(EBG.EventName.EB_INITIALIZED, onInit())
} catch (a) {
onInit();
}})();
function onInit() {
animate();
}
function animate(){
var delayed = 1.75;
// TweenMax.to(".intro", 1, {y:-250, delay:delayed,ease:Power4.easeIn});
}
// Support IE events
function addEvent(evnt, elem, func) {
if (elem.addEventListener){ // W3C DOM
elem.addEventListener(evnt,func,false);
}else if(elem.attachEvent){ // IE DOM
elem.attachEvent("on"+evnt, func);
}else{ // No much to do
elem[evnt] = func;
}
}
// Events
addEvent("click", document.getElementById("next"), function(){
next();
});
addEvent("click", document.getElementById("prev"), function(){
prev();
});
addEvent("click", document.getElementById("r1"), function(){
EB.clickthrough("url1");
});
addEvent("click", document.getElementById("r2"), function(){
EB.clickthrough("url2");
});
addEvent("click", document.getElementById("r3"), function(){
EB.clickthrough("url3");
});
addEvent("click", document.getElementById("r4"), function(){
EB.clickthrough("url4");
});
addEvent("click", document.getElementById("r5"), function(){
EB.clickthrough("url5");
});
var isRunning = false; // Flag to stop carousel spam
var autoRotate = setInterval(next, 5000); // Automatic carousel rotation
function prev(){
clearInterval(autoRotate);
if(isRunning == false){
isRunning = true;
var parentElement = document.getElementById("carousel");
parentElement.insertBefore(parentElement.childNodes[3],parentElement.childNodes[0]);
TweenMax.to(".carousel", 0.0, {x:"-=300"});
TweenMax.to(".item", 0.5, {x:"+=300"});
setTimeout(function(){
isRunning = false;
}, 500);
}
autoRotate = setInterval(next, 5000); // Restart the auto-rotate
}
function next(){
clearInterval(autoRotate);
var parentElement = document.getElementById("carousel");
if(isRunning == false){
isRunning = true;
TweenMax.to(".carousel", 0.5, {x:"-=300"});
TweenMax.delayedCall(0.5, function(){
TweenMax.to(".item", 0.0, {x:"+=300"});
var cln = parentElement.childNodes[0].cloneNode(true);
parentElement.appendChild(cln);
parentElement.removeChild(parentElement.childNodes[0]);
isRunning = false;
});
}
autoRotate = setInterval(next, 5000);
}