function ticker(tickerEl){
	// get the children and hide
	var headlines = tickerEl.getElementsByTagName('p');
	for(var i=0;i<headlines.length;i++){
		headlines[i].style.display = 'none';
	}
	
	// start off ticking the nth one
	var n = 0;
 
	function calculateFinalWidth(h){
		var oldDisplay = h.style.display;
		h.style.display = 'inline';
		var w = parseInt(h.offsetWidth,10);
		h.style.display = oldDisplay;
		return w;
	}
 
	function prepareHeadline(currentHeadline){
		currentHeadline.finalWidth = calculateFinalWidth(currentHeadline);
		currentHeadline.style.display = 'block';
		currentHeadline.style.whiteSpace = 'nowrap';
		currentHeadline.style.overflow = 'hidden';
		currentHeadline.style.width = '0';
		
		currentHeadline.mouseIsOver = false;
		currentHeadline.onmouseover = function(){
			this.mouseIsOver = true;
		};
		currentHeadline.onmouseout = function(){
			this.mouseIsOver = false;
		};
	}
 
	function doShowHeadline(){
		var currentHeadline = headlines[n];
 
		prepareHeadline(currentHeadline);
 
		function graduallyMakeVisible(){
			if(currentHeadline.offsetWidth < currentHeadline.finalWidth){
				var newPix = null;
				if(currentHeadline.mouseIsOver){
					newPix = currentHeadline.finalWidth;
				}else{
					newPix = (currentHeadline.offsetWidth + 4);
				}
				currentHeadline.style.width = newPix + 'px';
				setTimeout(graduallyMakeVisible,25);
			}else{
				// impression tracking for JMS
				var job_id = 0;
				if(job_id = currentHeadline.getAttribute('job_id')){
					new Ajax.Request('/tracking/job_impression/'+job_id+'/ticker', { method:'get' });
				}
				
				function nextHeadline(){
					if(currentHeadline.mouseIsOver){
						setTimeout(nextHeadline,5000);
					}else{
						currentHeadline.style.display = 'none';
						n = (n === (headlines.length - 1) ? 0 : n+1);
						doShowHeadline();
					}
				}
				setTimeout(nextHeadline,5000);
			}
		}
		graduallyMakeVisible();
	}
 
	setTimeout(doShowHeadline,1000);
 
}