var t5sitetemplatemup = function() {
	var isTouchOnlyDevice;
	var objLargeImageList;
	var objLargeImageListOrder;
	var objLargeImages;
	var objImageBoxes;
	var currentLargeImageIx;
	var lastLargeImageIx;
	var animBackgroundChange;
	var animBackground;
	var animBackgroundStartTime;
	var animBackgroundEndTime;
	var isTouching = false;
	var touchStartX;
	var touchEndX;
	var touchStartY;
	var touchEndY;
	var imageBoxList;
	var objTab;
	var animTab;
	var animTabStartTime;
	var animTabEndTime;
	var animTabStartPercent;
	var animTabEndPercent;
	var animTabCurrentPercent;
	var shiftValues;
	var objTabHover;
	var objTabOpen;
	var objTabClose;
	var isMenuHidden;
	var pagerUrl;
	var pagerCurrent;
	var pagerTotal;
	var objPagerLeftArrow;
	var objPagerRightArrow;
	
	function setTabPercent(pos) {
		if (animTab) {
			clearInterval(animTab);
			animTab = undefined;
		}
		if (pos != animTabCurrentPercent) {
			animTabStartPercent = animTabCurrentPercent;
			animTabEndPercent = pos;
			animTabStartTime = new Date();
			animTabEndTime = new Date(animTabStartTime.getTime() + 500); // Animate over 0.5 second.
			animTab = setInterval(animateTab, 10); // animate every 10 ms
		}
	}
	
	function animateTab() {
		var d = new Date();
		var pos;
		if (d >= animTabEndTime) {
			if (animTab) {
				clearInterval(animTab);
				animTab = undefined;
			}
			pos = 1;
		} else {
			pos=((d - animTabStartTime) / (animTabEndTime - animTabStartTime));
		}
		var c = Math.round((((animTabEndPercent - animTabStartPercent) * pos) + animTabStartPercent) * 100) / 100;
		animTabCurrentPercent = c;
		
		var quadEase = (c<0.5 ? 2*c*c : 4*c-(2*c*c)-1);
		if (objTab) {
			objTab.style.left = (289 - ((289 - 26) * quadEase)) + 'px';
			if (c == 0) {
				objTabClose.style.display = 'none';
				objTabOpen.style.display = 'inline-block';
			} else if (c == 1) {
				objTabOpen.style.display = 'none';
				objTabClose.style.display = 'inline-block';
			}
		}
		if (objImageBoxes) {
			objImageBoxes.style.width = ((isMenuHidden ? 970 : 682) - (263 * quadEase)) + 'px';
		}
		for (var i = 0; i < shiftValues.length; i++) {
			var sv = shiftValues[i];
			sv.image.style.left = (-263 * quadEase * sv.shiftValue / 100) + 'px';
			if (sv.overlay) {
				sv.overlay.style.opacity = 1 - c;
				sv.overlay.style.MozOpacity = 1 - c;
				sv.overlay.style.filter = 'alpha(opacity=' + ((1 - c) * 100) + ')';
			}
		}
	}
	
	function animateBackgroundImage() {
		var d = new Date();
		if (d >= animBackgroundEndTime) {
			setAnimateBackground(1);
		} else {
			var pos=((d - animBackgroundStartTime) / (animBackgroundEndTime - animBackgroundStartTime));
			setAnimateBackground(pos);
		}
	}
	
	function setAnimateBackground(pos) {
		if (pos==1&&animBackground) {
			clearInterval(animBackground);
			animBackground = undefined;
		}
		var image=objLargeImageListOrder[currentLargeImageIx];
		if (pos!=1) {
			image.style.opacity = pos;
			image.style.MozOpacity = pos;
			image.style.filter = 'alpha(opacity=' + Math.round(pos * 100) + ')';
		} else {
			image.style.opacity = null;
			image.style.MozOpacity = null;
			image.style.filter = null;
		}
	}
	
	function onLargeImageClick() {
		if (!(currentLargeImageIx && shiftValues.length > currentLargeImageIx && shiftValues[currentLargeImageIx].clickurl) && objTab) {
			setTabPercent(1 - animTabEndPercent);
		}
	}
	
	function onTabClick() {
		setTabPercent(1 - animTabEndPercent);
	}

	function onImageBoxClick() {
		if (animBackgroundChange) {
			clearInterval(animBackgroundChange);
			animBackgroundChange = undefined;
		}
		for (var i=0;i<imageBoxList.length;i++) {
			if (imageBoxList[i]==this) {
				moveToImageBox(i);
				break;
			}
		}
	}
	
	function onImageBoxMouseOver() {
		if (animBackgroundChange) {
			clearInterval(animBackgroundChange);
			animBackgroundChange = undefined;
		}
		for (var i=0;i<imageBoxList.length;i++) {
			if (imageBoxList[i]==this) {
				moveToImageBox(i);
				break;
			}
		}
	}
	
	function moveToImageBox(i) {
		var oldIx=currentLargeImageIx;
		if (oldIx!=i) {
			var cand1=i-oldIx;
			var cand2=cand1+((cand1<0?1:-1)*imageBoxList.length);
			changeBackgroundImage((Math.abs(cand1)<=Math.abs(cand2)?cand1:cand2));
		}
	}
	
	function onImageBoxMouseOut() {
		if (!animBackgroundChange) {
			animBackgroundChange = setInterval(animateBackgroundImageChange, 8000); // animate every 8 seconds
		}
 	}
	
	function animateBackgroundImageChange() {
		changeBackgroundImage(1);
	}
	
	function changeBackgroundImage(delta, noDelay) {
		if (delta==0) { return; }
		lastLargeImageIx = currentLargeImageIx;
		currentLargeImageIx = fixMod(lastLargeImageIx+delta,imageBoxList.length);
		imageBoxList[lastLargeImageIx].className = 'mupimgbox';
		imageBoxList[currentLargeImageIx].className = 'mupimgboxselected';
		var zzOld = objLargeImageListOrder[lastLargeImageIx];
		var zz = objLargeImageListOrder[currentLargeImageIx];
		objLargeImageList.appendChild(zz);  // Bring to front
		if (isTouchOnlyDevice) {
			if (noDelay) {
				zzOld.style.webkitTransition = '';
				zzOld.style.webkitTransform = 'translate3d(0,0,0)';
				zz.style.webkitTransition = '';
				zz.style.webkitTransform = 'translate3d(0,0,0)';
			} else {
				zzOld.style.webkitTransition = '';
				zzOld.style.webkitTransform = 'translate3d(0,0,0)';
				zz.style.webkitTransition = '';
				zz.style.webkitTransform = 'translate3d('+(delta<0?'-':'')+'972px,0,0)';
				setTimeout(function() { 
					zzOld.style.webkitTransition='-webkit-transform 500ms linear';zzOld.style.webkitTransform='translate3d('+(delta<0?'':'-')+'972px,0,0)';
					zz.style.webkitTransition='-webkit-transform 500ms linear';zz.style.webkitTransform='translate3d(0,0,0)';
				},1);
			}
		} else {
			var image=objLargeImageListOrder[lastLargeImageIx];
			image.style.opacity = null;
			image.style.MozOpacity = null;
			image.style.filter = null;
			if (animBackground) {
				clearInterval(animBackground);
				animBackground = undefined;
			}
			if (noDelay) {
				setAnimateBackground(1);
			} else {
				setAnimateBackground(0);
				animBackgroundStartTime = new Date();
				animBackgroundEndTime = new Date(animBackgroundStartTime.getTime() + 500); // Animate over 1/2 second.
				animBackground = setInterval(animateBackgroundImage, 10); // animate every 10 ms
			}
		}
	}

	function onContentTouchStart(e) {
		if (e.touches.length == 1) {
			isTouching = true;
			touchStartX = e.touches[0].pageX;
			touchStartY = e.touches[0].pageY;
			touchEndX = touchStartX;
			touchEndY = touchStartY;
		}
	}
	
	function onContentTouchMove(e) {
		if (isTouching) {
			if (e.touches.length == 1) {
				touchEndX = e.touches[0].pageX;
				touchEndY = e.touches[0].pageY;
			} else {
				isTouching = false;
			}
		}
	}
	
	function onContentTouchEnd(e) {
		if (isTouching) {
			isTouching = false;
			var deltaX = touchEndX - touchStartX;
			var moveDelta;
			if (deltaX < -50) {
				moveDelta = 1;
			} else if (deltaX > 50) {
				moveDelta = -1;
			}
			if (moveDelta) {
				if (animBackgroundChange) {
					clearInterval(animBackgroundChange);
					animBackgroundChange = undefined;
				}
				changeBackgroundImage(moveDelta);
			}
		}
	}
	
	function fixMod(n1,n2) {
		return (((n1%n2)+n2)%n2);
	}
	
	function setLargeImageCycleAnimation() {
		animBackgroundChange = setInterval(animateBackgroundImageChange, 8000); // animate every 8 seconds
	}
	
	function setTabExtend(extendPercent) {
	}
	
	function doSetPaging(baseUrl, current, total) {
		var objPager = document.getElementById('muppageid');
		if (objPager) {
			var elem = document.createElement('a');
			objPagerLeftArrow = document.createElement('img');
			objPagerLeftArrow.src = '/images/leftarrow.png';
			if (!isTouchOnlyDevice) {
				objPagerLeftArrow.onmouseover = onPagerArrowMouseOver;
				objPagerLeftArrow.onmouseout = onPagerArrowMouseOut;
			}
			objPagerLeftArrow.style.visibility = (current == 1 ? 'hidden' : 'visible');
			if (current != 1) {
				elem.href=baseUrl+(current==2?'':'-'+(current-1));
			}
			elem.appendChild(objPagerLeftArrow);
			objPager.appendChild(elem);
			
			for (var i = 1; i <= total; i++) {
				elem = document.createElement((i == current ? 'span' : 'a'));
				elem.className = (i == current ? 'muppageitemselected' : 'muppageitem');
				if (i != current) {
					elem.href=baseUrl+(i==1?'':'-'+i);
					if (!isTouchOnlyDevice) {
						elem.onmouseover = onPagerItemMouseOver;
						elem.onmouseout = onPagerItemMouseOut;
					}
				}
				elem.appendChild(document.createTextNode(i.toString()));
				objPager.appendChild(elem);
			}
			
			elem = document.createElement('a');
			objPagerRightArrow = document.createElement('img');
			objPagerRightArrow.src = '/images/rightarrow.png';
			if (!isTouchOnlyDevice) {
				objPagerRightArrow.onmouseover = onPagerArrowMouseOver;
				objPagerRightArrow.onmouseout = onPagerArrowMouseOut;
			}
			objPagerRightArrow.style.visibility = (current == total ? 'hidden' : 'visible');
			if (current != total) {
				elem.href=baseUrl+'-'+(current+1);
			}
			elem.appendChild(objPagerRightArrow);
			objPager.appendChild(elem);
		}
	}
	
	function onPagerItemMouseOver() {
		if (this.className != 'muppageitemselected') {
			this.className = 'muppageitemhover';
		}
	}
	
	function onPagerItemMouseOut() {
		if (this.className == 'muppageitemhover') {
			this.className = 'muppageitem';
		}
	}
	
	function onPagerArrowMouseOver() {
		if (this == objPagerLeftArrow) {
			objPagerLeftArrow.src = '/images/leftarrow-hover.png';
		} else if (this == objPagerRightArrow) {
			objPagerRightArrow.src = '/images/rightarrow-hover.png';
		}
	}
	
	function onPagerArrowMouseOut() {
		if (this == objPagerLeftArrow) {
			objPagerLeftArrow.src = '/images/leftarrow.png';
		} else if (this == objPagerRightArrow) {
			objPagerRightArrow.src = '/images/rightarrow.png';
		}
	}
	
	function onPageLoad() {
		isTouchOnlyDevice = (t5sitebase.getIsTouchOnlyDevice());
		isMenuHidden = (t5sitebase.getIsMenuHidden());
		
		var mupTab = document.getElementById('muptabid');
		if (mupTab) {
			var tabElem = document.createElement('div');
			tabElem.className = 'muptabback';
			mupTab.appendChild(tabElem);
			objTabHover = document.createElement('div');
			objTabHover.className = 'muptabhover';
			mupTab.appendChild(objTabHover);
			objTabOpen = document.createElement('div');
			objTabOpen.className = 'muptabopen';
			mupTab.appendChild(objTabOpen);
			objTabClose = document.createElement('div');
			objTabClose.className = 'muptabclose';
			mupTab.appendChild(objTabClose);
			mupTab.onclick = onTabClick;
		}
		objLargeImageList = document.getElementById('muplargeimagesid');
		if (objLargeImageList) {
			objLargeImages = objLargeImageList.getElementsByTagName('li');
			if (shiftValues) {
				for (var i=0; i < objLargeImages.length && i < shiftValues.length; i++) {
					var imageList = objLargeImages[i].getElementsByTagName('img');
					if (imageList.length > 0) {
						shiftValues[i].image = imageList[0];
					}
					if (imageList.length > 1) {
						shiftValues[i].overlay = imageList[1];
						if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
							var iever = new Number(RegExp.$1);
							if (iever < 9) {
								// Due to several bugs in the PNG implementation of IE versions under 9, we must do some hocus pocus here
								var img = imageList[1];
								if (img.width && img.height && img.src) {
									var newDiv = document.createElement('div');
									newDiv.style.position = 'absolute';
									var newSpan = document.createElement('span');
									newSpan.style.display = 'inline-block';
									newSpan.style.backgroundImage = 'url('+img.src+')';
									newSpan.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+img.src+"', sizingMethod='scale')";
									newSpan.style.width = img.width + 'px';
									newSpan.style.height = img.height + 'px';
									newSpan.innerHTML = '&nbsp;';
									newDiv.appendChild(newSpan);
									imageList[1].parentNode.replaceChild(newDiv,img);
									shiftValues[i].overlay = newDiv;
								}
							}
						}
					}
				}
			}
			if (objLargeImages.length > 1) {
				objLargeImageList.onclick = onLargeImageClick;
				currentLargeImageIx = 0;
				objLargeImageListOrder = new Array();
				for (var i=0; i < objLargeImages.length; i++) {
					objLargeImageListOrder.push(objLargeImages[i]);
					objLargeImages[i].style.visibility = 'visible';
				}
				objLargeImageList.appendChild(objLargeImages[0]);
				if (isTouchOnlyDevice) {
					objLargeImageList.addEventListener('touchstart', onContentTouchStart, false);
					objLargeImageList.addEventListener('touchend', onContentTouchEnd, false);
					objLargeImageList.addEventListener('touchmove', onContentTouchMove, false);
					for (var i=0; i < objLargeImageListOrder.length; i++) {
						objLargeImageListOrder[i].style.webkitTransform = 'translate3d(0,0,0)';
					}
				} else {
					setAnimateBackground(1);
				}
				setLargeImageCycleAnimation();
				var imageContainer = document.getElementById('muplargeimagescontainerid');
				objImageBoxes = document.createElement('div');
				objImageBoxes.className = 'mupimgboxes';
				objImageBoxes.style.left = (isMenuHidden ? 0 : 288) + 'px';
				for (var i=0;i<objLargeImageListOrder.length;i++) {
					var imageBox = document.createElement('a');
					imageBox.className = (i==0 ? 'mupimgboxselected' : 'mupimgbox');
					objImageBoxes.appendChild(imageBox);
					imageBox.onclick = onImageBoxClick;
					if (!isTouchOnlyDevice) {
						imageBox.onmouseover = onImageBoxMouseOver;
						imageBox.onmouseout = onImageBoxMouseOut;
					}
				}
				imageContainer.appendChild(objImageBoxes);
				imageBoxList=objImageBoxes.getElementsByTagName('a');
			} else if (objLargeImages.length == 1) {
				objLargeImageList.style.cursor = 'pointer';
				objLargeImageList.onclick = onLargeImageClick;
			}
		}
		objTab = document.getElementById('muptextboxid');
		if (objTab) {
			animTabCurrentPercent = 0;
			setTabPercent(1);
		} else {
			animTabEndTime = new Date();
			animTabStartPercent = 0;
			animTabEndPercent = 0;
			animateTab();
		}
		doSetPaging(pagerUrl, pagerCurrent, pagerTotal);
	}
	
	return {
		automaticOnLoad : function() {
			var origOnLoad = window.onload;
			if (typeof origOnLoad != 'function') {
				window.onload = function() { onPageLoad(); };
			} else {
				window.onload = function() { origOnLoad(); onPageLoad(); };
			}
		},
		addShiftValue : function(shiftValue, clickurl) {
			var obj = new Object();
			obj.shiftValue = shiftValue;
			obj.clickurl = clickurl;
			if (!shiftValues) {
				shiftValues = new Array();
			}
			shiftValues.push(obj);
		},
		setPaging : function(url, current, total) {
			pagerUrl = (current == 1 ? url : url.substr(0,url.lastIndexOf('-')));
			pagerCurrent = current;
			pagerTotal = total;
		}
	}
}();
t5sitetemplatemup.automaticOnLoad();

