/**
 * @author keithfoster
 */
if (!site) var site = {};
site.List = (function (){
	var CONST = {
		height: 670
	};
	var listHeight = 0, timeout = null, marginTop = 0, list = null, container = null, previous = null, next = null, dynamic = false;
		
	function setControlVisibility(listHeight) {
		if(CONST.height == listHeight) return;
		var marginTop = parseInt(list.css('margin-top')), listHeight = parseInt(list.css('height'));
		if(marginTop == 0) {
			previous.css('display', 'none');
			next.css('display', 'block');
		} else if(marginTop == (CONST.height - listHeight)) {
			previous.css('display', 'block');
			next.css('display', 'none');
		} else {
			previous.css('display', 'block');
			next.css('display', 'block');
		}
	}
	
	function bind() {
		previous = jQuery('a.previous', container);
		next = jQuery('a.next', container);
		
		previous.mousedown(function(){
			list.animate({
				marginTop:0
			}, 500);
			return false;
		});
		previous.mouseup(function(){
			list.stop();
			setControlVisibility();
		});
		previous.click(function(){
			return false;
		});		
		next.mousedown(function() {
			list.animate({
				marginTop:(CONST.height - listHeight)
			}, 500);
			return false;
		});
		next.mouseup(function(){
			list.stop();
			setControlVisibility();
		});
		next.click(function(){
			return false;
		});
		
		if(dynamic) {
			list.find('li').click(function(){
				setContent(this);
				return false;
			});
		}	
		
	}
	
	function setContent(listItem) {
		var content = listItem.getElementsByTagName('div')[0];
		var element = jQuery('#content div.content');
		element.html(content.innerHTML);
		scrollbar.rebuild();
		
		list.find('a.active').removeClass('active');
		listItem.getElementsByTagName('a')[0].className = 'active';
	}
	
	return function(element, mode) {
		if(!element) return false;
		container = jQuery(element);
		list = container.find('ul');
		listHeight = site.h(list.get(0));
		dynamic = mode;
		
		if(listHeight < CONST.height) {			
			listHeight = CONST.height;
			list.css('height', listHeight+'px')
		}
		bind();
		setControlVisibility(listHeight);
	}
	
})();
