/***
 *
 *  Dynamic banner rotation script
 *  
 *  Retrieves banners dynamically from within container element
 *  and rotates according to specified interval. 
 * 
 *  Usage:
 *  dynaBanner(containerElementId, [interval, height]);
 *  
 *  containerElementId = HTML ID of element containing all IMGs to rotate
 *  interval = interval(ms) between rotations [optional]   
 *  height = height to set container element to (can be used to fix some layout issues) [optional]
 *   
 *  (C) Vexed 2008
 *  
 *  Revision 1.2 : April 25 2008
 *
 ***/  

/* Allow IEs window.setTimeout accept parameters */

/*@cc_on
(function(f){
window.setTimeout = f(window.setTimeout);
window.setInterval = f(window.setInterval);
})(function(f){
return function(c,t){
var a = Array.prototype.slice.call(arguments,2);
if(typeof c != "function")
c = new Function(c);
return f(function(){
c.apply(this, a)
}, t)
}
});
@*/

var dbIds = new Array();
var dbCount = new Array();
var dbDisplayed = new Array();
var dbIntervals = new Array();

function dynaBanner(ctrElementId, interval, elementHeight)
{
    var bannerIdx = dbIds.push(ctrElementId) - 1;
    
    // Do nothing if called improperly
    if (ctrElementId == null) return;
    
    // Set some sensible defaults if none were sent in
    
    if (interval == null) interval = 2000;  
    
    jQuery(function() 
	     {
  	    	var ctr = 0,
  	    	    images = jQuery("#" + ctrElementId + " IMG");
  				
  				jQuery("#" + ctrElementId).css({position: "relative"});
  				
  				if (images.length > 0)
  				{
	  				images.css({
	  							 position: "absolute", 
	  							 top: "0", 
	  							 left: "0", 
	  							 border: "0"
	  						   });
	  				images.each(
								function() 
								{
	        			    		if (ctr == 0)
						    		{
							    		ctr++;
							    		return true;
						    		}
						    		
						    		jQuery(this).css("display", "none");
									ctr++;
							    });
	  				
	  				if (elementHeight != null) jQuery("#" + ctrElementId).css({height: elementHeight});
  				}
	  			
  				dbCount[bannerIdx] = ctr - 1;
	  			dbDisplayed[bannerIdx] = 0;
  			});
	
	dbIntervals[bannerIdx] = window.setTimeout(dbRotate, interval, ctrElementId, interval);
}

function getBannerIndex(searchId)
{
  for (i in dbIds)
  {
    if (dbIds[i] == searchId) return i;
  }
}

function dbRotate(ctrElementId, interval)
{
	var p1;
	var p2;
	var reset = false;
	
	var bannerIdx = getBannerIndex(ctrElementId);
	
	panels = jQuery("#" + ctrElementId + " IMG").get();
	
	for(idx in panels)
	{
		if (idx == dbDisplayed[bannerIdx])
		{
		  p1 = panels[idx];
		  
		  if (idx == dbCount[bannerIdx]) 
		  {	
		    p2 = panels[0];
		    reset = true;
		  }
		  else p2 = panels[Number(idx) + 1];
		}
	}
	
	if (reset) dbDisplayed[bannerIdx] = 0;
	else dbDisplayed[bannerIdx]++; 
	
	if (dbCount[bannerIdx] >= 1)
	{
		jQuery(p1).fadeOut();
		jQuery(p2).fadeIn();
		
		dbIntervals[bannerIdx] = window.setTimeout(dbRotate, interval, ctrElementId, interval);
	}	
}