﻿<!--

	function homepageSetup() {
		if($) $("#homeIntroHidden").slideUp(0);
		if(document.getElementById("homeSlider")) setupSlider();
	}
	
	function expandHomeIntro() {
		if($) {
			$("#homeIntroHidden").slideDown(500);
			$("#introExpandLink").fadeOut(500);
		} else {
			hiddenContent = document.getElementById("homeIntroHidden");
			hiddenContent.className = "revealed";
			document.getElementById("introExpandLink").style.display = "none";
		}
	}
	
	var slider;
	var sliderX = 2000;
	var sliderItemBaseX = 2000;
	var sliderWidth = 0;
	var sliderCentreX = 0;
	var sliderMaxX = 0;
	var sliderMinX = 0;
	var slideGap = 480;
	var zCount;
	var angleClass = new Array("angleA", "angleB", "angleC", "angleD");
	var angleClassIndex = 0;
	var sliderMoving = false;
	var sliderIncrement = 0;
	var furthestX;
	
	var prevTouchX = null;
	var prevTouchY = null;
	var touchMode = null;
	var sliderUpdateTimeout = null;
	
	var sliderItem = new Array();
	var sliderXvalues = new Array();
	
	var isOldIE = false;
	if(isIE) if(navigator.userAgent.indexOf("MSIE 6") != -1 || navigator.userAgent.indexOf("MSIE 7") != -1 || navigator.userAgent.indexOf("MSIE 8") != -1) isOldIE = true;
	
	function setupSlider() {
		// get slider info
		slider = document.getElementById("homeSlider");
		sliderWidth = parseFloat(document.getElementById("homeFeatureAreaFullWidth").offsetWidth);
		// get init panel content
		sliderItem[sliderActiveIndex] = document.getElementById("sliderItem" + sliderActiveIndex);
		// set angle and position
		sliderItem[sliderActiveIndex].className += " " + angleClass[0];
		sliderItem[sliderActiveIndex].style.zIndex = sliderItemCount;
		zCount = sliderItemCount;
		// set panels and positions
		setPos(sliderItem[sliderActiveIndex], 2000, 0);
		sliderXvalues[sliderActiveIndex] = 0;
		buildSteps = Math.floor(sliderItemCount/2);
		var ieY = 10;
		for(i=1;i<=buildSteps; i++) {
			if((sliderActiveIndex+i) < sliderItemCount) {
				createSliderItem(sliderActiveIndex+i);
				zCount -=1;
				angleClassIndex +=1;
				if(angleClassIndex >= angleClass.length) angleClassIndex = 0;
				sliderItem[sliderActiveIndex+i].style.zIndex = zCount;
				if(isOldIE) {
					setPos(sliderItem[sliderActiveIndex+i], sliderItemBaseX + (slideGap * i), ieY);
				} else {
					setPos(sliderItem[sliderActiveIndex+i], sliderItemBaseX + (slideGap * i), 0);
				}
				sliderXvalues[sliderActiveIndex+i] = 0-(slideGap * i);
				if((sliderItemBaseX + (slideGap * i)) > sliderMaxX) sliderMaxX = sliderItemBaseX + (slideGap * i);
			}
			if((sliderActiveIndex-i) >= 0) {
				createSliderItem(sliderActiveIndex-i);
				zCount -=1;
				sliderItem[sliderActiveIndex-i].style.zIndex = zCount;
				if(isOldIE) {
					setPos(sliderItem[sliderActiveIndex-i], sliderItemBaseX - (slideGap * i), ieY);
				} else {
					setPos(sliderItem[sliderActiveIndex-i], sliderItemBaseX - (slideGap * i), 0);
				}
				sliderXvalues[sliderActiveIndex-i] = (slideGap * i);
				if((sliderItemBaseX - (slideGap * i)) < sliderMinX) sliderMinX = sliderItemBaseX - (slideGap * i);
			}
			if(ieY == 0) {
				ieY = 10;
			} else {
				ieY = 0;
			}
		}
		
		slider.ontouchstart = function(e) {
			e.preventDefault();
			touchMoved = false;
			touchMode = true;
			document.onmousemove = null;
			
		}
		slider.ontouchmove = function(e) {
			e.preventDefault();
			touchMoved = true;
			if(e.touches.length == 1) { // Only deal with one finger
				var touch = e.touches[0]; // Get the information for finger #1
				// store vales if start of touch
				if(prevTouchX == null) {
					prevTouchX = touch.pageX;
					prevTouchY = touch.pageY;
				}
				// move image if touch has moved
				if(prevTouchX != touch.pageX) {
					clearTimeout(sliderUpdateTimeout);
					sliderUpdateTimeout = null;
					// calculate move distances
					sliderIncrement = touch.pageX - prevTouchX;
					prevTouchX = touch.pageX;
					sliderMoving = true;
					updateSliderPos();
				}
				// check for vertical scroll
				if(prevTouchY != touch.pageY) {
					scrollIncrement = prevTouchY - touch.pageY;
					window.scrollBy(0,scrollIncrement);
					prevTouchY = touch.pageY + scrollIncrement;
				}
			}
		}
		slider.ontouchend = function(e) {
			e.preventDefault();
			if(!touchMoved) {
				var touchedObject = document.elementFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY);
				if(touchedObject.nodeType == 3) touchedObject = touchedObject.parentNode;
				var newEvent = document.createEvent('MouseEvents');
				newEvent.initEvent('click', true, true);
				touchedObject.dispatchEvent(newEvent);
			}
			prevTouchX = null;
			prevTouchY = null;
			touchMoved = false;
			sliderMoving = false;
		}
		
		slider.style.display = "block";
		sliderMaxX = parseFloat(sliderItem[sliderItemCount-1].offsetLeft) + 250;
		sliderMinX = parseFloat(sliderItem[0].offsetLeft) + 250;
	}
	
	function updateSliderPos() {
		if(sliderMoving) {
			// test boundaries
			testX = sliderX + sliderIncrement;
			if(testX > (sliderMaxX)) {
				setPos(slider, (sliderMaxX), 0);
				sliderMoving = false;
				sliderIncrement = 0;
				sliderX = sliderMaxX;
			} else if(testX < (sliderMinX)) {
				setPos(slider, (sliderMinX), 0);
				sliderMoving = false;
				sliderIncrement = 0;
				sliderX = sliderMinX;
			} else {
				// move
				sliderX += sliderIncrement;
				if(sliderX > (sliderMaxX)) sliderX = sliderMaxX;
				if(sliderX < (sliderMinX)) sliderX = sliderMinX;
				setPos(slider, sliderX, 0);
			}
			// check active slide
			updateActiveSlide();
		}
	}
	
	function updateActiveSlide() {
		testMax = sliderMaxX + (slideGap/2);
		for(i=0;i<sliderItemCount;i++) {
			if(sliderX <= testMax && sliderX > (testMax-slideGap)) calcActiveSlide = i;
			testMax -= slideGap;
		}
		if(calcActiveSlide != sliderActiveIndex) {
			// set zindex values
			updateSliderItemsZindex(calcActiveSlide);
			// change classes
			setTimeout("sliderItem[" + sliderActiveIndex + "].className = sliderItem[" + sliderActiveIndex + "].className.replace(' activeSliderItem','');sliderItem[" + calcActiveSlide + "].className += ' activeSliderItem';", 100);
			sliderActiveIndex = calcActiveSlide;
		}
	}
	
	function updateSliderItemsZindex(newItemIndex) {
		// set zindex values
		zCount = sliderItemCount - newItemIndex;
		for(i=0;i<sliderItemCount;i++) {
			if(i == newItemIndex) {
				sliderItem[i].style.zIndex = 100;
			} else {
				sliderItem[i].style.zIndex = zCount;
				if(i<newItemIndex) {
					zCount += 1;
				} else {
					zCount -= 1;
				}
			}
		}
	}
	
	function createSliderItem(getIndex) {
		newDIV = document.createElement("DIV");
		newDIV.setAttribute("id","sliderItem" + getIndex);
		newDIV.setAttribute("class","sliderItem");
		newDIV.innerHTML = "<div class=\"sliderItemBack\"><div class=\"sliderItemContent\">" + sliderItemContent[getIndex] + "<\/div><\/div>";
		slider.appendChild(newDIV);
		sliderItem[getIndex] = document.getElementById("sliderItem" + getIndex);
		sliderItem[getIndex].className = "sliderItem " + angleClass[angleClassIndex];
	}
	
	function clickSlide(testIndex) {
		if(testIndex == sliderActiveIndex) {
			return true;
		} else {
			if(!iosMode && !sliderMoving) {
				sliderItem[sliderActiveIndex].className = sliderItem[sliderActiveIndex].className.replace(" activeSliderItem","");
				sliderItem[testIndex].className = sliderItem[testIndex].className += " activeSliderItem";
				updateSliderItemsZindex(testIndex);
				if($) {
					sliderMoving = true;
					$(slider).animate({
						left: (2000 + sliderXvalues[testIndex]).toString() + 'px'
					  }, 500, function() {
						// Animation complete.
						sliderActiveIndex = testIndex;
						sliderMoving = false;
					});
				} else {
					setPos(slider, (2000 + sliderXvalues[testIndex]), 0);
					sliderActiveIndex = testIndex;
				}
			}
			return false;
		}
	}

// -->
