/************************************************************************************************/
/* Advert Rotation Logic                                                                           */
/************************************************************************************************/

/// <summary>
/// Initialise Function.
/// </summary>
function Msfg$AdvertRotater(name, rotationInterval, rotationTechnique, advertsToDisplay, rotatorId) {

    this._advertsToDisplay = advertsToDisplay;
	this._currentIndex = 0;	
	this._elements = Msfg$GetElementsByName_iefix('li', name);	
	this._rotationInterval = rotationInterval;	
	this._rotationTechnique = rotationTechnique;
	this.rotatorObjectId = 'advertRotator_' + name;
	
	if(this._elements != null && this._elements.length > 1) {	
		setInterval('Msfg$AdvertRotater.Rotate(' + this.rotatorObjectId + ')', (this._rotationInterval * 1000));
	}	
}

/// <summary>
/// Initialise Function.
/// </summary>
Msfg$AdvertRotater.Rotate = function(rotatorObject) {
        
        /// <summary>
        /// Implementation for Top Down Rotation. Add Futher rotation technique methods below.
        /// </summary>
		Msfg$AdvertRotater.Rotate.ExecuteTopDown = function(rotatorObject) {		
		
		    Msfg$AdvertRotater.Rotate.HideAll(rotatorObject);
			
			for(i = 0 ; i < rotatorObject._advertsToDisplay ; i++) {
			
			    if(++rotatorObject._currentIndex >= rotatorObject._elements.length){			
				    rotatorObject._currentIndex = 0;				
		        }
		        
		        rotatorObject._elements[rotatorObject._currentIndex].style.display="block";
			}
		}
		
		/// <summary>
        /// Set all the elements to hidden - display='none'
        /// </summary>
		Msfg$AdvertRotater.Rotate.HideAll = function(rotatorObject) {
		    for(i = 0 ; i < rotatorObject._elements.length ; i++) {
		        rotatorObject._elements[i].style.display="none";
		    }
		}
		
		///Execute the appropiate rotation technique.
		if(rotatorObject._rotationTechnique == "TopDownLoop") {		
			Msfg$AdvertRotater.Rotate.ExecuteTopDown(rotatorObject);
		}
	}
	
/// <summary>
///  Workaround for IE to return an array of elementes that have a specified name attribute. 
///  GetElementsByName only work for certain elements in IE ( such as <input> <a> etc...).
/// </summary>	
	function Msfg$GetElementsByName_iefix(tag, name) 	{ 
	
     var elements = document.getElementsByTagName(tag);     
     var elementsMatchingName = new Array();
          
     for(elementIndex = 0,matchedIndex = 0; elementIndex < elements.length; elementIndex++) {     
          nameValue = elements[elementIndex].getAttribute("name");
          
          if(nameValue == name) {          
               elementsMatchingName[matchedIndex] = elements[elementIndex];               
               matchedIndex++;          
          }
     }
     return elementsMatchingName;
}


	