var bannerTextInterval;
var nextBannerIndex = 2;
var firstBanner = true;
var animateBannerHideCompleted;
var nextBannerDetails;
var allowNextBanner = true;
var pendingBannerDisplay;

var displayBannersTime = 5;
var maxBannersToDisplay = 10;
var bannerDisplayCount = 0;
var crossfadeOpacity = 0;
var crossfadeInterval;

var bannerDetails = [];
var nextBannerDetailsIndex = 0;


function loadNextBanner() {

    bannerDisplayCount++;

    if (bannerDisplayCount < maxBannersToDisplay) {
        var next = getURLContent('http://www.tourismproperties.co.nz/home/banner/_randomdetails?template=DataStoreQuery.DisplayDetails_828').split('-----')[1];
        eval('nextBannerDetails = ' + next);
        bannerDetails.push(nextBannerDetails);
        if (nextBannerIndex == 2) {
            $('banner-image-2').src = nextBannerDetails.image;
            nextBannerIndex = 1;
        } else {
            $('banner-image').src = nextBannerDetails.image;
            nextBannerIndex = 2;
        }
    } else {
        nextBannerDetailsIndex++;

        if (nextBannerDetailsIndex >= bannerDetails.length) {
            nextBannerDetailsIndex = 0;
        }
        nextBannerDetails = bannerDetails[nextBannerDetailsIndex];

        if (nextBannerIndex == 2) {
            $('banner-image-2').src = nextBannerDetails.image;
            nextBannerIndex = 1;
        } else {
            $('banner-image').src = nextBannerDetails.image;
            nextBannerIndex = 2;
        }

    }

}

function fadeCompleted() {
    if (nextBannerDetails) {
        $('banner-text').innerHTML = nextBannerDetails.section;
        $('banner-link').href = nextBannerDetails.url;
    }

    // Now set a minimum timeout to wait
    allowNextBanner = false;
    nextBannerLoaded = false;
    setTimeout(function() {
        allowNextBanner = true;
        if (nextBannerLoaded && pendingBannerDisplay) {
            pendingBannerDisplay();
        }
    }, displayBannersTime * 1000);

    setTimeout(loadNextBanner, 50);
}

function setOpacity(el, opacity) {
    el.style.opacity = opacity;
    el.style.MozOpacity = opacity;
    el.style.KhtmlOpacity = opacity;
    el.style.filter = "alpha(opacity=" + (opacity * 100) + ")";
}

function animateCrossfade(from, to) {
    crossfadeOpacity += 0.04;
    if (crossfadeOpacity >= 1) {
        crossfadeOpacity = 1;
    }
    setOpacity(from, 1-crossfadeOpacity);
    setOpacity(to, crossfadeOpacity);


    if (crossfadeOpacity >= 1) {
        clearInterval(crossfadeInterval);
        fadeCompleted();
    }
}

function doCrossFade(from, to) {
    setOpacity(from, 1);
    setOpacity(to, 0);
    from.style.display = 'block';
    to.style.display = 'block';
    crossfadeOpacity = 0;

    crossfadeInterval = setInterval(function() {
        animateCrossfade(from, to)
    }, 20);
}

function bannerImageLoaded() {

    if (!firstBanner) {

        if (allowNextBanner) {
            doCrossFade($('banner-image-2'), $('banner-image'));
        } else {
            nextBannerLoaded = true;
            pendingBannerDisplay = function() {
                doCrossFade($('banner-image-2'), $('banner-image'));
            };
        }

    } else {
        firstBanner = false;
        fadeCompleted();
    }

}

function bannerImage2Loaded() {

    if (allowNextBanner) {
        doCrossFade($('banner-image'), $('banner-image-2'));
    } else {
        nextBannerLoaded = true;
        pendingBannerDisplay = function() {
            doCrossFade($('banner-image'), $('banner-image-2'));
        };
    }

}

function initBanner() {
    registerEvent($('banner-image'), 'load', bannerImageLoaded);
    registerEvent($('banner-image-2'), 'load', bannerImage2Loaded);

    bannerImageLoaded();
}

registerEvent(window, 'load', initBanner);

