var promoAdItems; //Contains all ads (1-D array)
var promoAdItemHolders; //Contains all ads for each place holder (2-D array)
var promoAdItemSelected; //Info on which ad is selected for which place holder
var displayType; //Browser dependent info for "block" or "table-row"

function SetPromoItems(NoPlaceHolders, TagName, ClassName, TimeOut)
{
	//Detect the browser and set the display type
	if (TagName.toLowerCase() == "tr")
	{
		if (document.all && navigator.userAgent.indexOf("Opera") == -1)
		{
			displayType = "block";
		}
		else
		{
			displayType = "table-row";
		}
	}
	else
	{
		displayType = "block";
	}
	
	//Retrieve all items with the specified tag (i.e. "div", "tr")
	var Items = document.getElementsByTagName(TagName);
	
	//Create an array for the promo ads
	promoAdItems = new Array();
	var promoIndex = 0;
	
	//Put the promo ads matching the class name into the ads array
	for (i = 0; i < Items.length; i++)
	{
		if (Items[i].className == ClassName)
		{
			promoAdItems[promoIndex] = Items[i];
			promoIndex ++;
		}
	}
	
	//Hide all the Items by default
	HideAllItems();
	
	//Calculate the standard number of items to put into each Item using "integer division"
	var adsPerHolder = parseInt(promoAdItems.length / NoPlaceHolders, 10);
	
	//if we have one advert only then set adsPerHolder = 1
	if(adsPerHolder == 0 && promoAdItems.length > 0)
		adsPerHolder = 1;
	
	//Array for the ads
	promoAdItemHolders = new Array();
	//Array for the index for the ad to select (i.e. Place Holder 1 = index 2)
	promoAdItemSelected = new Array();
	
	var currentAdItem = 0;
	
	//This calculated the upper bound for the promoAdItemSelected.
	//Generally the last array of the promoAdItemHolders will have a larger value
	var jUpperBound = 0;
	
	for (i = 0; i < NoPlaceHolders; i++)
	{
		//Create an array at the item (essentially creating a 2-D array)		
		promoAdItemHolders[i] = new Array();
		//Set the default Item selected value = 0
		promoAdItemSelected[i] = 0;
		
		//This if statement checks to see if it is the last place holder
		if (i < NoPlaceHolders - 1) //Not last
		{
			//Set it to the number of ads per place holder
			jUpperBound = adsPerHolder;
		}
		else //Last
		{
			//Use up the remaining spaces, i.e. if there are 3 ads and 2 place holders
			//then this would be the 2nd place holder containing 2 items and the 1st holder
			//would contain 1 item
			jUpperBound = promoAdItems.length - adsPerHolder * i;
		}
		
		for (j = 0; j < jUpperBound; j++)
		{
			//Add the items to the 2-D array
			promoAdItemHolders[i][j] = promoAdItems[currentAdItem];
			//Select the next ad
			currentAdItem ++;
		}
	}
	
	//Call the method to display the banners
	RotateBanners(NoPlaceHolders, TimeOut);
}

function RotateBanners(NoPlaceHolders, TimeOut)
{
	HideAllItems();
	
	//For each place holder
	for (i = 0; i < promoAdItemHolders.length; i++)
	{
		//Set the visible ad to the selected item
		if(promoAdItemHolders[i][promoAdItemSelected[i]] != null)
			promoAdItemHolders[i][promoAdItemSelected[i]].style.display = displayType;
		
		//If it is not at the end of the list of ads for current holder, incement by one
		if (promoAdItemSelected[i] < promoAdItemHolders[i].length - 1)
		{
			promoAdItemSelected[i] ++;
		}
		else //Reset the selected item to 0
		{
			promoAdItemSelected[i] = 0;
		}
	}
	
	//Call to self
	setTimeout("RotateBanners(" + NoPlaceHolders + ", " + TimeOut + ")", TimeOut);
}

function HideAllItems()
{
	// Hide all of the promo ad Items
	for (i = 0; i < promoAdItems.length; i++)
	{
		promoAdItems[i].style.display = "none";
	}
}
