var fx;
var currentPosition=0;
var selectedYear=0;
var yearArray = [];
var yearOrder = [];
var yearImgArray = [];
var initialYear=0;
var transparencyEnabled = true;
var currentlyShifting = false;
var currentlyChanging = false;

function selectYear(buttonYear) {
	if ((yearArray[buttonYear]!==null) && (buttonYear != selectedYear)) {
		if (yearArray[buttonYear][0] === "") { yearArray[buttonYear][0] = "St Bede's"; }
		$('slideTextH1').innerHTML = yearArray[buttonYear][0];
		if (yearArray[buttonYear][1] === "") { yearArray[buttonYear][1] = "&nbsp;"; }
		$('slideTextH2').innerHTML = yearArray[buttonYear][1];
		$('slideTextSummary').innerHTML = yearArray[buttonYear][2];
		
		var newImageDiv = new Element('DIV');
		newImageDiv.className = "slideImageHolder";
		newImageDiv.id = "slideImage_" + buttonYear;
		newImageDiv.style.overflow = "hidden";

		if (yearImgArray[buttonYear]) {
			newImageDiv.appendChild(yearImgArray[buttonYear]);
		} else {
			newImageDiv.style.background = "url(/images/ajax-loader.gif) center no-repeat #233D27";
			yearImgArray[buttonYear] = new Element('IMG');
			yearImgArray[buttonYear].onload = function() { newImageDiv.appendChild(yearImgArray[buttonYear]); }
			yearImgArray[buttonYear].src = yearArray[buttonYear][3];
			yearImgArray[buttonYear].style.width = "565px";
			yearImgArray[buttonYear].style.height = "368px";
		}
		
		if (transparencyEnabled) {
			newImageDiv.set('opacity',0.3);
		}
		$('slideTextSection').appendChild(newImageDiv);
		if (transparencyEnabled) {
			var fadeFx = new Fx.Morph('slideImage_' + buttonYear, {duration:500, wait:true});
			
			fadeFx.options.transition = Fx.Transitions.Linear;
			fadeFx.start({'opacity':1}).chain( function() {
				if (selectedYear != buttonYear) {
					$('slideTextSection').removeChild($('slideImage_' + selectedYear)); 
					selectedYear=buttonYear;
				}
				currentlyChanging=false;
			});
		} else {
			if (selectedYear != buttonYear) {
				$('slideTextSelection').removeChild($('slideImage_' + selectedYear));
				selectedYear=buttonYear;
			}
			currentlyChanging=false;
		}
	}
}

function bumpButton(buttonYear) {
	if (!currentlyChanging) {
		if (buttonYear != selectedYear) {
			currentlyChanging = true;
			if (selectedYear!==0) {
				var buttonFX = new Fx.Morph('button_box_' + selectedYear, {duration:500, wait:true});
				buttonFX.options.transition = Fx.Transitions.Linear;
				buttonFX.start({'margin-top':0});
				
				$('button_box_' + selectedYear).className = "slideYearButton";
				//$('button_box_' + selectedYear).removeChild($('selected_arrow'));
			}
			var buttonFX2 = new Fx.Morph('button_box_' + buttonYear, {duration:500, wait:true});
			buttonFX2.options.transition = Fx.Transitions.Linear;
			buttonFX2.start({'margin-top':-15});
			$('button_box_' + buttonYear).className = "slideYearButtonSelected";
			
			//var newSelected = new Element('IMG');
			//newSelected.src = "/images/widgets/selected_arrow.png";
			//newSelected.id = "selected_arrow";
			//$('button_box_' + buttonYear).appendChild(newSelected);
			selectYear(buttonYear);
		}
	}
}

function shiftBar(shiftAmount) {
	var newLeft = parseInt($('yearDisplay').style.left.substring(0,$('yearDisplay').style.left.length - 2));
	var overflowFlag = false;
	if (!currentlyShifting) {
		if (shiftAmount>0) {
			if (((yearCount-currentPosition)-7) < shiftAmount) {	
				var allowedShift = (yearCount-currentPosition)-7;
				if (allowedShift>0) {
					shiftAmount=allowedShift;
				} else { overflowFlag=true; }
			}
		} else {
			if ((currentPosition+shiftAmount)<0) { 
				if (currentPosition!==0) {
					shiftAmount = -currentPosition;
				} else { overflowFlag=true; }						
			}
		}
		newLeft -= shiftAmount * 120;
	
		if (!overflowFlag) {
			currentlyShifting = true;
			currentPosition += shiftAmount;
			fx.start({'left':newLeft + "px"}).chain(function() { currentlyShifting = false; });
			//document.setTimeout(function() { currentlyShifting = false; },500);
		}
	}
		
}

function getTimestamp() {
	var date = new Date();
	var timestamp = date.getTime();
	return timestamp;
}

function loadTimeline() {
	var req = new Request({
		method:'get',
		url:'index.cfm',
		data:{'action':'load','timestamp':getTimestamp()},
		onComplete:function(response) {
			var localYearCount=0;
			var i=0;
			yearResponseSplit = response.split("_YEAR_");
			for (i=0; i<yearResponseSplit.length; i++) {
				if (yearResponseSplit[i].length !== 0) {
					var yearArraySingleEntry = yearResponseSplit[i].split("|");
					var curYear = yearArraySingleEntry[0];
					
					yearOrder[localYearCount] = curYear;
					
					yearArray[curYear] = [];
					yearArray[curYear][0] = yearArraySingleEntry[2];
					yearArray[curYear][1] = yearArraySingleEntry[3];
					yearArray[curYear][2] = yearArraySingleEntry[4];
					yearArray[curYear][3] = yearArraySingleEntry[5];
					yearArray[curYear][4] = yearArraySingleEntry[1];
					
					localYearCount++;
					var newButton = new Element('DIV');
					var newButtonHolder = new Element('DIV');
					
					newButton.className = "slideYearButton";
					newButton.innerHTML = yearArray[curYear][4] + "<br/><div style='height:10px; font-size:1px;'></div>";
					newButton.name = curYear;

					newButtonHolder.className = "slideYearButtonBox";
					newButtonHolder.name = curYear;
					newButtonHolder.innerHTML = "<br/>";
					newButtonHolder.id = "button_holder_" + curYear;
					newButton.id = "button_box_" + curYear;
					
					newButtonHolder.addEvent('click', function() { bumpButton(this.name); });

					newButtonHolder.appendChild(newButton);
					$('yearDisplay').style.width = (parseInt($('yearDisplay').style.width.substring(0,$('yearDisplay').style.width.length - 2)) + 120) + "px";
					$('yearDisplay').appendChild(newButtonHolder);
				}
			}

			
			targetYear = yearOrder[initialYear];
			for (i=0; i<yearCount; i++) {
				if (yearOrder[i] == targetYear) {
					currentPosition = i;
				}
			}
			//if (localYearCount > 5) {
			//	$("slideNavs_left").style.display = "block";
			//	$("slideNAvs_right").style.display = "block";
			//}
			var targetBump = currentPosition;
			currentPosition=0;
			shiftBar(targetBump-3);
			bumpButton(targetYear);
		}
	}).send();			
}
				
window.addEvent('domready', function() {
	//$('slideOverlay').set('opacity',0.3);
	fx = new Fx.Morph('yearDisplay', {duration:500, wait:true});
	fx.options.transition = Fx.Transitions.Linear;

	if (yearCount > 7)
	{
		initialYear = Math.floor(Math.random()*(yearCount-6));
		initialYear += 3;
	} else {
		initialYear = Math.floor(Math.random()*(yearCount));
	}
	loadTimeline();
});
