
/*
    News cycler
*/

    NewsClipping = Class.create();  //NewsClipping class
    NewsClipping.prototype = {
        initialize: function(title, text) {
            this.title = title;
            this.text = text;
        }
    }

	var i_news = 0;
	var els = $('news').getElementsByTagName("li");
	var lock = false;
	var toggle = false;
	var cycle, holder
	var newsClippings = new Array(els.length-1);  //will hold an array of newsClipping objects

	getNewsClippings();
	holder = $('news_holder_1');
	populateNewsClipping();

	if (els.length > 1)  //only cycle if more than one news item
		resetCycle();

	
	function getNewsClippings()
	{
	    for (j=0;j<els.length;j++) {
	        newsClipping = new NewsClipping();
	        newsClipping.title = els[j].getElementsByTagName("h4")[0].innerHTML;
	        newsClipping.text = stripHTML(els[j].getElementsByTagName("p")[0].innerHTML);

	        if (newsClipping.text.length > 100)
	            newsClipping.text = trim(newsClipping.text.substring(0, 97)) + '...';
    	    
	        newsClippings[j] = newsClipping;
	    }
	}
	
	function news_next(el)
	{
	    if (!lock) {
	        lock = true;
            if ( (i_news+1) >= newsClippings.length ) { i_news = 0; }
            else { i_news++; }
            
            news_FX(el);
        }
	}
	
	function news_prev(el)
	{
	    if (!lock) {
	        lock = true;
		    if ( (i_news-1) < 0 ) { i_news = (newsClippings.length-1); }
            else { i_news--; }
            
		    news_FX(el);
		}
	}
	
	function news_FX(el)
	{
	    killCycle();
	    
	    if (el) {
	        populateNewsClipping();
	        lock = false;
	        return;
	    }
	    
        //otherwise, effects	    
	    new Effect.Fade(holder, {duration:0.5});

	    holder = (!toggle) ? $('news_holder_2') : $('news_holder_1');
	    populateNewsClipping();
	    toggle = !toggle;
	    
		new Effect.MoveBy(holder, 0, 50, {duration:0});
		new Effect.Parallel( [new Effect.Appear(holder, { duration:1 })], [new Effect.MoveBy(holder, 0, -50, {duration:1, onComplete:resetCycle() })] );
	}
	
	function populateNewsClipping()
	{   
	    holder.innerHTML = '<h4>' + newsClippings[i_news].title + '</h4>' + '<p>' + newsClippings[i_news].text + '</p>';
	}
	
	function resetCycle() { lock=false; cycle = setTimeout("news_next()", 10000); }
	function killCycle() { clearTimeout(cycle); }
	function stripHTML(str) { return str.replace(/(<([^>]+)>)/ig,"") }
	function trim(str) { return str.replace(/^\s*|\s*$/g,""); }
