﻿/* This script and many more are available free online at
The JavaScript Source!! http://javascript.internet.com
Created by: Scragar | Licensed under: Public Domain
*/

function BannerRotator() {
    // first, defaults:
    this.timer = 2;
    this.bannerNum = 0; // -1 = random
    // then normal init work
    this.banners = [];
    this.binding = null;
    this.timeout = null;

    this.add = function() {// add a banner to the array
        this.banners[this.banners.length] = [arguments[0], arguments[1]];
    }

    this.bind = function() {// bind to an element
        if (typeof arguments[0] == 'string')
            this.binding = document.getElementById(arguments[0]);
        else
            this.binding = arguments[0];
        this.rotate();
    }

    this.rotate = function() {// the actual image rotator
        if (!this.empty())
            return;
        var showNum, tmpA = document.createElement('a'), tmpImg = document.createElement('img');

        if (this.bannerNum < 0)// random
            showNum = Math.floor(Math.random() * this.banners.length);
        else// syncronous
            showNum = this.bannerNum = (++this.bannerNum >= this.banners.length) ? 0 : this.bannerNum;

        tmpA.href = this.banners[showNum][0];
        tmpImg.src = this.banners[showNum][1];
        tmpA.appendChild(tmpImg);
        this.binding.appendChild(tmpA);
    }

    this.empty = function() {// empty the element if possible
        if (this.binding == null)
            return false;
        while (this.binding.hasChildNodes())
            this.binding.removeChild(this.binding.firstChild);
        return true;
    }

    this.startTimer = function() {// start the loop, normaly done during page load.
        this.stopTimer();
        this.timeout = window.setInterval(
      (function(x) {
          return function() {
              x.rotate();
          }
      })(this), this.timer * 1000);
    }

    this.stopTimer = function() {// stop the loop, nice to make available via a button.
        if (this.timeout != null)
            window.clearInterval(this.timeout);
        this.timeout = null;
    }
}

