/*   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;}}
};