function timeline(){
	this.VIEWABLE_AREA = 820;
	this.BLURBS_PER_VIEW = 4;
	this.MIN_SCROLLHANDLE_WIDTH = 160;
	this.CATEGORY_PAD = 35;
	
	this.currentSection = null;
	
	this.sectionBlurbArrays = new Array();
	
	this.init();
}

timeline.prototype = {
	init: function(){
		this.initTabs();
	},
	
	initTabs: function(initTab, initEvent){
		var instance = this;
		
		$('div#timelineTabs a').click(function(){
			if ($(this).parents('li').hasClass('selected') == false){
				//deselect all tabs and select the clicked one
				$('div#timelineTabs li').removeClass('selected');
				$(this).parents('li').addClass('selected');
				
				instance.currentSection = $(this).attr('rel');
				
				$('div.tabContent').hide();
				$('div#' + instance.currentSection).show();
				
				/*array[instance.currentSection] = new Array();
				$('div#' + instance.currentSection + ' div.blurbs li').each(function(){
					var blurbId = 	$(this).attr('id');
					var idParts = blurbId.split('_');
					var id = idParts[1];
					var 
				});*/
				
				instance.blurbWidth = ($('div#' + instance.currentSection + ' div.blurbs li').get(0)).offsetWidth;
				instance.totalBlurbWidth = parseInt($('div#' + instance.currentSection + ' div.blurbs li').length) * instance.blurbWidth;
				if (instance.totalBlurbWidth < instance.VIEWABLE_AREA){
					instance.totalBlurbWidth = instance.VIEWABLE_AREA;
				}
				$('div#' + instance.currentSection + ' div.blurbs ul.blurbList').css('width', instance.totalBlurbWidth + 'px');
				instance.viewableBlurbs = Math.floor(this.VIEWABLE_AREA/($('div#' + instance.currentSection + ' div.blurbs li').get(0)).offsetWidth);
				
				instance.initScroller();
				instance.initBlurbs();
				instance.initIcons();
			}
			return false;
		});
		
		var urlParts = (window.location.href).split('?');
		if (urlParts[1] != '' && urlParts[1] != null){
			var queryVars = (urlParts[1]).split('&');
			var tab = (queryVars[0]).split('=');
			var initTab = 'tab' + tab[1];
			var tabEvent = (queryVars[1] != null) ? (queryVars[1]).split('=') : null;
			var initEvent = (tabEvent != null) ? 'tab' + tab[1] + '_' + tabEvent[1] : null;
			
			if ($('a[rel=' + initTab + ']').length > 0){
				$('a[rel=' + initTab + ']').trigger('click');
			}
			else{
				$('div#timelineTabs li:last-child a').trigger('click');
			}
			
			if (initTab && initEvent && $('a[rel=' + initEvent + ']').length > 0){
				this.initEvent = initEvent;
				if ($('div#' + initTab + ' div.blurbs li').length <= 4){
					$('a[rel=' + this.initEvent + ']').trigger('click');
					this.initEvent = null;
				}
			}
		}
		else{
			$('div#timelineTabs li:last-child a').trigger('click');
		}
	},
	
	initScroller: function(){
		var instance = this;
		
		$('div#scroller').hover(
			function(){
				$(this).addClass('over');
			},
			function(){
				$(this).removeClass('over');
			}
		);
		
		var sRatio = (instance.totalBlurbWidth/this.VIEWABLE_AREA) - 1;
		var offset = 0;
		offset = (parseInt(this.VIEWABLE_AREA - 142)/this.VIEWABLE_AREA);
		
		$('div#' + instance.currentSection + ' div.blurbs ul.blurbList').css('left', '0px')
		
		if (instance.totalBlurbWidth > this.VIEWABLE_AREA){
			$('div#scroller').draggable('destroy');
			$('div#scroller').css('left', '0px').show().draggable({
				axis: 'x',
				containment: 'parent',
				drag: function(event, ui){
					$('div#scroller').addClass('on');
					var position = parseInt(($(this).css('left')).replace('px', ''));
					var scrollMove = -((position) * (sRatio)) / offset;
					var blurbMove = -((Math.floor(scrollMove/instance.blurbWidth)) * instance.blurbWidth);
					if (-(blurbMove) > 0){
						blurbMove = 0;
					}
					if (blurbMove > (parseInt($('div#' + instance.currentSection + ' div.blurbs ul.blurbList li.blurb').length - 1) * instance.blurbWidth)){
						blurbMove = (parseInt($('div#' + instance.currentSection + ' div.blurbs ul.blurbList li.blurb').length - 1) * instance.blurbWidth);
					}
					$('div#' + instance.currentSection + ' div.blurbs ul.blurbList').css('left', -(blurbMove) + 'px');
				},
				create: function(event, ui){
					var distanceToDrag =  instance.VIEWABLE_AREA - 142;
					$(this).css('left', distanceToDrag + 'px');
					var blurbMove = (parseInt($('div#' + instance.currentSection + ' div.blurbs ul.blurbList li.blurb').length - 1) * instance.blurbWidth);
					$('div#' + instance.currentSection + ' div.blurbs ul.blurbList').css('left', -(blurbMove) + 'px');
					$('div#scroller, div#' + instance.currentSection + ' div.blurbs ul.blurbList').animate({
						left: '0px'
					}, {
						duration: 2000,
						complete: function(){
							if (instance.initEvent){
								$('a[rel=' + instance.initEvent + ']').trigger('click');
								instance.initEvent = null;
							}
						}
					});
				},
				stop: function(event, ui){
					$('div#scroller').removeClass('on');
				}
			});
		}
		else{
			$('div#scroller').hide();
		}
	},
	
	initBlurbs: function(){
		var instance = this;
		$('div#' + this.currentSection + ' div.blurbs li').unbind('hover').hover(
			function(){
				$(this).addClass('over');
				$('div#' + instance.currentSection + ' div.icons a[rel=' + $(this).attr('id') + ']').addClass('over');
			},
			function(){
				$(this).removeClass('over');
				$('div#' + instance.currentSection + ' div.icons a[rel=' + $(this).attr('id') + ']').removeClass('over');
			}
		);
		
		$('div#' + instance.currentSection + ' div.blurbs li').unbind('click').click(function(event){
			if (event.target.nodeName != 'A'){ //allow links inside blurbs to maintain their link following onclick
				if ($(this).hasClass('on')){
					$(this).removeClass('on');
					$('div#' + instance.currentSection + ' div.blurbs li').removeClass('off');
					$(this).find('div.blurbCorner').html('+');
					$('div#' + instance.currentSection + ' div.icons a[rel=' + $(this).attr('id') + ']').removeClass('on');
				}
				else{
					$('div#' + instance.currentSection + ' div.blurbs li.on').trigger('click');
					
					$(this).find('div.blurbCorner').html('&ndash;');
					
					var blurbPos = $(this).position();
					var currentScrollPosition = parseInt(($('div#' + instance.currentSection + ' div.blurbs ul.blurbList').css('left')).replace('px', ''));
					var relativePos = Math.abs(Math.floor(blurbPos.left) + Math.abs(currentScrollPosition));
					
					var blurbLocation = (blurbPos.left + currentScrollPosition) / 205;
					if (blurbLocation < 0){
						blurbLocation = 0;
					}
					switch(blurbLocation){
						case (0):
							$(this).next().addClass('off').next().addClass('off').next().addClass('off');
							break;
						case (1):
							$(this).prev().addClass('off');
							$(this).next().addClass('off').next().addClass('off');
							break;
						case (2):
							$(this).prev().addClass('off').prev().addClass('off');
							$(this).next().addClass('off');
							break;
						case (3):
							$(this).prev().addClass('off').prev().addClass('off').prev().addClass('off');
							break;
						default:
							$(this).prev().addClass('off').prev().addClass('off').prev().addClass('off');
					}
					
					$(this).addClass('on');
					$('div#' + instance.currentSection + ' div.icons a[rel=' + $(this).attr('id') + ']').addClass('on');
				}
				return false;
			}
		});
		
		$('div#' + instance.currentSection + ' div.blurbs p.moreLink a').unbind().click(function(){
			$(this).parents('li').trigger('click');
			return false;
		});
	},
	
	initIcons: function(){
		var instance = this;
		
		$('div#' + instance.currentSection + ' div.icons a').unbind().click(function(){
			if ($(this).hasClass('on')){
				$('div#' + instance.currentSection + ' div.blurbs li#' + $(this).attr('rel')).trigger('click');
			}
			else{
				$('div#' + instance.currentSection + ' div.blurbs li.on').trigger('click');
				$(this).addClass('on');
				$('div#' + instance.currentSection + ' div.blurbs li#' + $(this).attr('rel')).trigger('click');
			}
			return false;
		}).hover(
			function(){
				$('div#' + instance.currentSection + ' div.blurbs li#' + $(this).attr('rel')).addClass('over');
			},
			function(){
				$('div#' + instance.currentSection + ' div.blurbs li#' + $(this).attr('rel')).removeClass('over');
			}
		);
	}
}
