
function dw_Rotator(id, speed, path, bTrans, bMouse, bRand) {
    var imgObj = document.getElementById(id); 
    if (!imgObj) { // in case name, not id attached to image
        imgObj = document.images[id];
        if (!imgObj) return;
        imgObj.id = id;
    }
    this.id = id; this.speed = speed || 4500; // default speed of rotation
    this.path = path || "";  this.bRand = bRand;
    this.ctr = 0; this.timer = 0; this.imgs = []; 
    this._setupLink(imgObj, bMouse);
    this.bTrans = bTrans && typeof imgObj.filters != 'undefined';
    var index = dw_Rotator.col.length; dw_Rotator.col[index] = this;
    this.animString = "dw_Rotator.col[" + index + "]";	
}

dw_Rotator.col = []; // hold instances
dw_Rotator.resumeDelay = 400; // onmouseout resume rotation after delay

// mouse events pause/resume
dw_Rotator.prototype._setupLink = function(imgObj, bMouse) { 
    if ( imgObj.parentNode && imgObj.parentNode.tagName.toLowerCase() == 'a' ) {
        var parentLink = this.parentLink = imgObj.parentNode;
        if (bMouse) {
            dw_Event.add(parentLink, 'mouseover', dw_Rotator.pause);
            dw_Event.add(parentLink, 'mouseout', dw_Rotator.resume);
        }
    }
}

// so instance can be retrieved by id (as well as by looping through col)
dw_Rotator.getInstanceById = function(id) {
    var len = dw_Rotator.col.length, obj;
    for (var i=0; i<len; i++) {
        obj = dw_Rotator.col[i];
        if (obj.id && obj.id == id ) {
            return obj;
        }
    }
    return null;
}

dw_Rotator.prototype.on_rotate = function() {}

dw_Rotator.prototype.addImages = function() { // preloads images
    var img;
    for (var i=0; arguments[i]; i++) {
        img = new Image();
        img.src = this.path + arguments[i];
        this.imgs[this.imgs.length] = img;
    }
}

dw_Rotator.prototype.rotate = function() {
    clearTimeout(this.timer); this.timer = null;
    var imgObj = document.getElementById(this.id);
    if ( this.bRand ) {
        this.setRandomCtr();
    } else {
        if (this.ctr < this.imgs.length-1) this.ctr++;
        else this.ctr = 0;
    }
    if ( this.bTrans ) {
        this.doImageTrans(imgObj);
    } else {
        imgObj.src = this.imgs[this.ctr].src;
    }
    this.swapAlt(imgObj); this.prepAction(); this.on_rotate();
    this.timer = setTimeout( this.animString + ".rotate()", this.speed); 
	
	var myElement = document.getElementById("link"+this.ctr);
  
	var i = 0;
	  
	while (i < 10){
	  if (document.getElementById("link"+i) != null){
		myElement = document.getElementById("link"+i);
		if(myElement) {
			myElement.style.color="#686767";
		}
	  }	  
	  i=i+1;  
	}
	var x = this.ctr + 1;
	
	myElement = document.getElementById("link"+x);
	if(myElement) {
		myElement.style.color="#999900";
	}
	
	//alert("link"+x);
	
}

dw_Rotator.prototype.setRandomCtr = function() {
    var i = 0, ctr;
    do { 
        ctr = Math.floor( Math.random() * this.imgs.length );
        i++; 
    } while ( ctr == this.ctr && i < 6 )// repeat attempts to get new image, if necessary
    this.ctr = ctr;
}

dw_Rotator.prototype.doImageTrans = function(imgObj) {
    imgObj.style.filter = 'blendTrans(duration=1)';
    if (imgObj.filters.blendTrans) imgObj.filters.blendTrans.Apply();
    imgObj.src = this.imgs[this.ctr].src;
    imgObj.filters.blendTrans.Play(); 
}

dw_Rotator.prototype.swapAlt = function(imgObj) {
    if ( !imgObj.setAttribute ) return;
    if ( this.alt && this.alt[this.ctr] ) {
        imgObj.setAttribute('alt', this.alt[this.ctr]);
    }
    if ( this.title && this.title[this.ctr] ) {
        imgObj.setAttribute('title', this.title[this.ctr]);
    }
}

dw_Rotator.prototype.prepAction = function() {
    if ( this.actions && this.parentLink && this.actions[this.ctr] ) {
        if ( typeof this.actions[this.ctr] == 'string' ) {
            this.parentLink.href = this.actions[this.ctr];
        } else if ( typeof this.actions[this.ctr] == 'function' ) {
            // to execute function when linked image clicked 
            // passes id used to uniquely identify instance  
            // retrieve it using the dw_Rotator.getInstanceById function 
            // so any property of the instance could be obtained for use in the function 
            var id = this.id;
            this.parentLink.href = "javascript: void " + this.actions[this.ctr] + "('" + id + "')";
        } 
    }
}

dw_Rotator.prototype.showCaption = function() {
    if ( this.captions && this.captionId ) {
        var el = document.getElementById( this.captionId );
        if ( el && this.captions[this.ctr] ) {
            el.innerHTML = this.captions[this.ctr];
        }
    }
}

dw_Rotator.prototype.showDesc = function() {
    if ( this.desc && this.descId ) {
        var el = document.getElementById( this.descId );
        if ( el && this.desc[this.ctr] ) {
            el.innerHTML = this.desc[this.ctr];
        }
    }
}

// Start rotation for all instances 
dw_Rotator.start = function() {
    var len = dw_Rotator.col.length, obj;
    for (var i=0; i<len; i++) {
        obj = dw_Rotator.col[i];
        if (obj && obj.id ) 
            obj.timer = setTimeout( obj.animString + ".rotate()", obj.speed);
    }	
}

dw_Rotator.numLink = function(num){
  
  var elemId = "link"+ num;
  
  
  var myElement = document.getElementById(elemId);
  
  var i = 0;
  
  while (i < 10){
	  if (document.getElementById("link"+i) != null){
	  	myElement = document.getElementById("link"+i);
		if(myElement) {
		  	myElement.style.color="#686767";
		}
	  }	  
	  i=i+1;  
  }
  
  myElement = document.getElementById("link"+num);
  if(myElement) {
	  myElement.style.color="#999900";
  }
  
  var imgObj = document.getElementById(dw_Rotator.col[0].id)
  dw_Rotator.col[0].ctr = num-1;
  var count = dw_Rotator.col[0].ctr;
  
  imgObj.src = dw_Rotator.col[0].imgs[count].src;
  if ( dw_Rotator.col[0].desc && dw_Rotator.col[0].descId ) 
  {
	var el = document.getElementById(dw_Rotator.col[0].descId );
	if ( el && dw_Rotator.col[0].desc[dw_Rotator.col[0].ctr] )
	{
		el.innerHTML = dw_Rotator.col[0].desc[count];
  	}
  }
  if ( dw_Rotator.col[0].captions && dw_Rotator.col[0].captionId )
  {
	var el = document.getElementById( dw_Rotator.col[0].captionId );
	if ( el && dw_Rotator.col[0].captions[dw_Rotator.col[0].ctr] )
	{
		el.innerHTML = dw_Rotator.col[0].captions[count];
	}
  }  
}


dw_Rotator.prev = function(){
  dw_Rotator.stop();
  var imgObj = document.getElementById(dw_Rotator.col[0].id)
  
  if ( dw_Rotator.col[0].ctr > 0 ){
    dw_Rotator.col[0].ctr--;
  }
  
  var count = dw_Rotator.col[0].ctr; 
    
  if (dw_Rotator.col[0].ctr > -1)
  {  	  	 
	 imgObj.src = dw_Rotator.col[0].imgs[count].src;
     if ( dw_Rotator.col[0].desc && dw_Rotator.col[0].descId ) 
     {
			var el = document.getElementById(dw_Rotator.col[0].descId );
			if ( el && dw_Rotator.col[0].desc[dw_Rotator.col[0].ctr] ) {
				el.innerHTML = dw_Rotator.col[0].desc[count];
	         }
	 }
	 if ( dw_Rotator.col[0].captions && dw_Rotator.col[0].captionId )
	 {
			var el = document.getElementById( dw_Rotator.col[0].captionId );
			if ( el && dw_Rotator.col[0].captions[dw_Rotator.col[0].ctr] ) {
				el.innerHTML = dw_Rotator.col[0].captions[count];
			}
	 }
  }  
  setTimeout (dw_Rotator.restart, 4500);
}


dw_Rotator.next = function() {
  dw_Rotator.stop();
  var imgObj = document.getElementById(dw_Rotator.col[0].id);
  var num = dw_Rotator.col[0].imgs.length - 1;
  
  if ( dw_Rotator.col[0].ctr < num )
  {
	  dw_Rotator.col[0].ctr++;
  }
  
  var count = dw_Rotator.col[0].ctr;
  
  if (dw_Rotator.col[0].ctr < dw_Rotator.col[0].imgs.length)
  {
  	 imgObj.src = dw_Rotator.col[0].imgs[count].src;
     if ( dw_Rotator.col[0].desc && dw_Rotator.col[0].descId ) 
     {
			var el = document.getElementById(dw_Rotator.col[0].descId );
			if ( el && dw_Rotator.col[0].desc[dw_Rotator.col[0].ctr] ) {
				el.innerHTML = dw_Rotator.col[0].desc[count];
	         }
	 }
	 if ( dw_Rotator.col[0].captions && dw_Rotator.col[0].captionId )
	 {
			var el = document.getElementById( dw_Rotator.col[0].captionId );
			if ( el && dw_Rotator.col[0].captions[dw_Rotator.col[0].ctr] ) {
				el.innerHTML = dw_Rotator.col[0].captions[count];
			}
	 }
  }
  setTimeout (dw_Rotator.restart, 4500);
}

// Stop rotation for all instances 
dw_Rotator.stop = function() {
    var len = dw_Rotator.col.length, obj;
    for (var i=0; i<len; i++) {
        obj = dw_Rotator.col[i];
        if (obj ) { clearTimeout(obj.timer); obj.timer = null; }
    }
}

// for stopping/starting (onmouseover/out)
dw_Rotator.pause = function(e) {	
    e = dw_Event.DOMit(e);
    var id = e.target.id;
    var obj = dw_Rotator.getInstanceById(id);
    if ( obj ) { clearTimeout( obj.timer ); obj.timer = null; }
}

dw_Rotator.resume = function(e) {
    e = dw_Event.DOMit(e);
    var id = e.target.id;
    var obj = dw_Rotator.getInstanceById(id);
    if ( obj && obj.id ) {
        obj.timer = setTimeout( obj.animString + ".rotate()", dw_Rotator.resumeDelay );
    }
}

/////////////////////////////////////////////////////////////////////
// Use this function to set up when using object literals to hold data 
// it calls constructor, addImages, adds actions, etc.

dw_Rotator.setup = function (rObj) {
    if (!document.getElementById) { return; }
    var r = new dw_Rotator(rObj.id, rObj.speed, rObj.path, rObj.bTrans, rObj.bMouse, rObj.bRand);
    try {
        var imgAr = rObj.images; var len = imgAr.length;
        for (var i=0; i<len; i++) { r.addImages( imgAr[i] ); }
        
        if ( rObj.actions && rObj.actions.length == len ) {
            r.addProp('actions', rObj.actions);
        }
        if ( rObj.alt && rObj.alt.length == len ) {
            r.addProp('alt', rObj.alt);
        }
        if ( rObj.title && rObj.title.length == len ) {
            r.addProp('title', rObj.title);
        }
        if ( rObj.captions ) {
            r.addProp('captions', rObj.captions);
            r.captionId = rObj.captionId;
            dw_Rotator.addRotateEvent(r, function () { dw_Rotator.getInstanceById(rObj.id).showCaption(); } ); 
        }
		if ( rObj.desc ) {
            r.addProp('desc', rObj.desc);
            r.descId = rObj.descId;
            dw_Rotator.addRotateEvent(r, function () { dw_Rotator.getInstanceById(rObj.id).showDesc(); } ); 
        }
        dw_Rotator.start();
    } catch (e) { 
        alert(e.message); 
    }
}

// add to on_rotate for specified instance (r)
// see usage above for captions
dw_Rotator.addRotateEvent = function( r, fp ) {
    var old_on_rotate = r.on_rotate;
    r.on_rotate = function() { old_on_rotate(); fp(); }
}

// for adding actions, alt, title
dw_Rotator.prototype.addProp = function(prop, ar) {
    if ( !this[prop] ) {
        this[prop] = [];
    }
    var len = ar.length; 
    for (var i=0; i < len; i++) {
        this[prop][ this[prop].length ] = ar[i]; 
    }
}
