/*   dw_banners.js   version date: April 2005  */



/*************************************************************************

  This code is from Dynamic Web Coding at dyn-web.com

  Copyright 2001-5 by Sharon Paine 

  See Terms of Use at www.dyn-web.com/bus/terms.html

  regarding conditions under which you may use this code.

  This notice must be retained in the code as is!

*************************************************************************/



dw_Banner.restartDelay = 500; // delay onmouseout to restart rotation



dw_Banners = {}; // globally accessible reference to object 

function dw_Banner(id, delay, bMouse) {

    this.id = id; this.delay = delay; this.items = []; this.ctr = 0; this.timer = null;

    dw_Banners[this.id] = this; this.animString = "dw_Banners." + this.id;

    if (bMouse) dw_Banner.setMouseEvents(this.id); // set up pause/resume onmouseover/out

};



dw_Banner.prototype.addItem = function(sHtml) {

 	this.items[this.items.length] = sHtml;

};



dw_Banner.prototype.rotate = function() {

    clearTimeout(this.timer); this.timer = null;

    var el = document.getElementById(this.id);

    if ( el && typeof el.innerHTML != "undefined" ) {

        el.innerHTML = this.items[this.ctr];

        if (this.ctr < this.items.length-1) this.ctr++;

        else this.ctr = 0;

        this.timer = setTimeout(this.animString + ".rotate()", this.delay);

    }

};



dw_Banner.setMouseEvents = function(id) {

    var el = document.getElementById(id);

    if (el) {

        el.onmouseover = dw_Banner.pause;

        el.onmouseout = dw_Banner.resume;

    }

};



// these 2 functions called onmouseover/out of banner el

dw_Banner.pause = function() { 

    var curObj = dw_Banners[this.id];

    if (curObj) { clearTimeout(curObj.timer); curObj.timer = null; }

};

 

dw_Banner.resume = function(e) {

    e = e? e: window.event;

    var toEl = e.relatedTarget? e.relatedTarget: e.toElement;

    if ( this != toEl && !dw_contained(toEl, this) ) {

        var curObj = dw_Banners[this.id];

        if (curObj)

            curObj.timer = setTimeout(curObj.animString + ".rotate()", dw_Banner.restartDelay);

    }

};



// returns true of oNode is contained by oCont (container)

function dw_contained(oNode, oCont) {

    if (!oNode) return; // in case alt-tab away while hovering (prevent error)

    while ( oNode = oNode.parentNode ) if ( oNode == oCont ) return true;

    return false;

};



var imageHandler = { 

    path:"", imgs:[], preload:function() { for(var i=0;arguments[i];i++) {

    var img=new Image(); img.src=this.path+arguments[i]; this.imgs[this.imgs.length]=img;}}

};
