/*********************************/
// works with trace.js, a 
// debugger tool that works simlar to
// flash's trace()                

function trace( msg ){
  if( typeof( jsTrace ) != 'undefined' ){
    jsTrace.send( msg );
  }
}


/*****************************************************************
* Top Ten list carousel 
*****************************************************************/

var topTenIndex = 0;
var topTenMax = 0;
var topTenLoop;
function initTopTensModule() {
	var oModule = document.getElementById('topTensContent');
	var aLi = oModule.getElementsByTagName('li');
	var aSections = new Array();
	var btnNext = getElementsByClassName(document.getElementById('topTens'),"img","btnNext")[0];
	var btnPrevious = getElementsByClassName(document.getElementById('topTens'),"img","btnPrevious")[0];
	
	// create array of section objects
	for(var i=0; i<aLi.length; i++) {
		if(!new String(aLi[i].id).indexOf('topten_')) {
			aSections = aSections.concat(document.getElementById(aLi[i].id));
		}
	}
	// Rotate automagically
	
	
	topTenMax = aSections.length;		
	// attach events to buttons	
	btnNext.onclick = function() { clearInterval(topTenLoop); slideTopTen('next') };
	btnPrevious.onclick = function() { clearInterval(topTenLoop); slideTopTen() };
	
	 topTenLoop = window.setInterval('slideTopTen("next")', 7000);
} 

// Slide the top ten list back and forth.  d = direction. default is back.
function slideTopTen(d) {
	var currentLeft = document.getElementById('topTensContent').style.left.replace('px','');
	var oModule = document.getElementById('topTensContent');
	if(d == 'next') { // Next 
		if(topTenIndex < topTenMax -1) {
			move(oModule,currentLeft,currentLeft-197);
			topTenIndex++;
		} else {
			move(oModule,currentLeft,0);
			topTenIndex = 0;
		}
	} else {  // Previous
		if(topTenIndex > 0) {
			move(oModule,currentLeft,(new Number(currentLeft)+197));
			topTenIndex--;
		} else {
			move(oModule,currentLeft,0);
			topTenIndex = 0;
		}
	}
	// CHange Header
	document.getElementById('topTensSectionTitle').innerHTML = document.getElementById('topten_'+topTenIndex).getElementsByTagName('h4')[0].innerHTML;
}

new domFunction(initTopTensModule, { 'topTens' : 'id'} );



/*****************************************************************
* News list carousel 
*****************************************************************/

var newsIndex = 0;
var newsMax = 0;
var newsLoop;
function initNewsModule() {
	var oModule = document.getElementById('newsContent');
	var aLi = oModule.getElementsByTagName('li');
	var aSections = new Array();
	var btnNext = getElementsByClassName(document.getElementById('news'),"img","btnNext")[0];
	var btnPrevious = getElementsByClassName(document.getElementById('news'),"img","btnPrevious")[0];
	
	// create array of section objects
	for(var i=0; i<aLi.length; i++) {
		if(!new String(aLi[i].id).indexOf('news_')) {
			aSections = aSections.concat(document.getElementById(aLi[i].id));
		}
	}

	newsMax = aSections.length;		
	// attach events to buttons	
	btnNext.onclick = function() { clearInterval(newsLoop); slideNews('next') };
	btnPrevious.onclick = function() { clearInterval(newsLoop); slideNews() };

	// Rotate automagically	
	newsLoop = window.setInterval('slideNews("next")', 7000);
} 

// Slide the top ten list back and forth.  d = direction. default is back.
function slideNews(d) {
	var currentLeft = document.getElementById('newsContent').style.left.replace('px','');
	var oModule = document.getElementById('newsContent');
	if(d == 'next') { // Next 
		if(newsIndex < newsMax -1) {
			move(oModule,currentLeft,currentLeft-197);
			newsIndex++;
		} else {
			move(oModule,currentLeft,0);
			newsIndex = 0;
		}
	} else {  // Previous
		if(newsIndex > 0) {
			move(oModule,currentLeft,(new Number(currentLeft)+197));
			newsIndex--;
		} else {
			move(oModule,currentLeft,0);
			newsIndex = 0;
		}
	}
	// CHange Header
	document.getElementById('newsSectionTitle').innerHTML = document.getElementById('news_'+newsIndex).getElementsByTagName('h4')[0].innerHTML;
}

new domFunction(initNewsModule, { 'news' : 'id'} );

/*****************************************************************
* Generic sliding/easing functions
*****************************************************************/
function move(elem,start,end) { 
	trace(start+' to '+end)
	var intervals = 6;
	var steps = 20;
	var powr = 1.7;
	if (elem.ChangeMemInt)
	window.clearInterval(elem.ChangeMemInt);
	var actStep = 0;
	elem.ChangeMemInt = window.setInterval(
		function() { 
			elem.currentPos = easeInOut(start,end,steps,actStep,powr);
			elem.style.left = elem.currentPos + "px"; 
			actStep++;
			if (actStep > steps) window.clearInterval(elem.ChangeMemInt);
		}		,intervals)
}

function easeInOut(minValue,maxValue,totalSteps,actualStep,powr) { 
   maxValue = new Number(maxValue);
	minValue = new Number(minValue);
 	var delta = maxValue - minValue; 
   var stepp = minValue+(Math.pow(((1 / totalSteps) * actualStep), powr) * delta); 
	return Math.ceil(stepp) 
}
