// JavaScript Document

var rwScroll = {

	addListeners: function () {
		if (!document.getElementsByTagName || !document.getElementById)
			return;		

		rwScroll.moveContent();
		
		// set listener for window resize
		rwScript.addEvent(window, 'resize', rwScroll.moveContent, false);

		// set objects
		if (document.getElementById('scrContainer')) {
			rwScroll.objSCR_Container = document.getElementById('scrContainer');
			rwScroll.objSCR_Pane = document.getElementById('scrPane');
			
			// position scroll pane
			rwScroll.objSCR_Pane.style.top = '0px';
			rwScroll.objSCR_Pane.style.left = '0px';

			// add scroll button event listeners
			var btnScrollUp = document.getElementById('btnSCR_Up');
			rwScript.addEvent(btnScrollUp, 'mousedown', rwScroll.getMDown(btnScrollUp), false);
			rwScript.addEvent(btnScrollUp, 'mouseup', rwScroll.getMUp(btnScrollUp), false);
			rwScript.addEvent(btnScrollUp, 'mouseover', rwScroll.getMOver(btnScrollUp), false);
			rwScript.addEvent(btnScrollUp, 'mouseout', rwScroll.getMOut(btnScrollUp), false);

			var btnScrollDown = document.getElementById('btnSCR_Down');
			rwScript.addEvent(btnScrollDown, 'mousedown', rwScroll.getMDown(btnScrollDown), false);
			rwScript.addEvent(btnScrollDown, 'mouseup', rwScroll.getMUp(btnScrollDown), false);
			rwScript.addEvent(btnScrollDown, 'mouseover', rwScroll.getMOver(btnScrollDown), false);
			rwScript.addEvent(btnScrollDown, 'mouseout', rwScroll.getMOut(btnScrollDown), false);
		}
		
		if (document.getElementById('scrContainerT')) {
			rwScroll.objSCR_ContainerT = document.getElementById('scrContainerT');
			rwScroll.objSCR_PaneT = document.getElementById('scrPaneT');
			
			// position scroll pane
			rwScroll.objSCR_PaneT.style.top = '0px';
			rwScroll.objSCR_PaneT.style.left = '0px';

			// add scroll button event listeners
			if (document.getElementById('btnSCR_UpT')) {
				var btnScrollUpT = document.getElementById('btnSCR_UpT');
				rwScript.addEvent(btnScrollUpT, 'mousedown', rwScroll.getMDown(btnScrollUpT), false);
				rwScript.addEvent(btnScrollUpT, 'mouseup', rwScroll.getMUp(btnScrollUpT), false);
				rwScript.addEvent(btnScrollUpT, 'mouseover', rwScroll.getMOver(btnScrollUpT), false);
				rwScript.addEvent(btnScrollUpT, 'mouseout', rwScroll.getMOut(btnScrollUpT), false);
		
				var btnScrollDownT = document.getElementById('btnSCR_DownT');
				rwScript.addEvent(btnScrollDownT, 'mousedown', rwScroll.getMDown(btnScrollDownT), false);
				rwScript.addEvent(btnScrollDownT, 'mouseup', rwScroll.getMUp(btnScrollDownT), false);
				rwScript.addEvent(btnScrollDownT, 'mouseover', rwScroll.getMOver(btnScrollDownT), false);
				rwScript.addEvent(btnScrollDownT, 'mouseout', rwScroll.getMOut(btnScrollDownT), false);
			}
			
			if (document.getElementById('btnSCR_LeftT')) {
				var btnScrollLeftT = document.getElementById('btnSCR_LeftT');
				rwScript.addEvent(btnScrollLeftT, 'mousedown', rwScroll.getMDown(btnScrollLeftT), false);
				rwScript.addEvent(btnScrollLeftT, 'mouseup', rwScroll.getMUp(btnScrollLeftT), false);
				rwScript.addEvent(btnScrollLeftT, 'mouseover', rwScroll.getMOver(btnScrollLeftT), false);
				rwScript.addEvent(btnScrollLeftT, 'mouseout', rwScroll.getMOut(btnScrollLeftT), false);
		
				var btnScrollRightT = document.getElementById('btnSCR_RightT');
				rwScript.addEvent(btnScrollRightT, 'mousedown', rwScroll.getMDown(btnScrollRightT), false);
				rwScript.addEvent(btnScrollRightT, 'mouseup', rwScroll.getMUp(btnScrollRightT), false);
				rwScript.addEvent(btnScrollRightT, 'mouseover', rwScroll.getMOver(btnScrollRightT), false);
				rwScript.addEvent(btnScrollRightT, 'mouseout', rwScroll.getMOut(btnScrollRightT), false);
			}			
		}
	},

// Resize
	moveContent: function () {
		var objMainContent = document.getElementById('mainContent');

		if (document.getElementById('scrContainer')) {
			var objScrollContainer = document.getElementById('scrContainer');
			var objScrollPane = document.getElementById('scrPane');
			var objScrollBtnUp = document.getElementById('scrButtonUp');
			var objScrollBtnDown = document.getElementById('scrButtonDown');
		}
		
		if (document.getElementById('thumbnails')) {
			var objThumbnails = document.getElementById('thumbnails');
			var objScrollContainerT = document.getElementById('scrContainerT');
			var objScrollPaneT = document.getElementById('scrPaneT');
			
			if (objThumbnails.className != 'renovations') {
				var objScrollBtnUpT = document.getElementById('scrButtonUpT');
				var objScrollBtnDownT = document.getElementById('scrButtonDownT');
			} else {
				var objScrollBtnLeftT = document.getElementById('scrButtonLeftT');
				var objScrollBtnRightT = document.getElementById('scrButtonRightT');
			}
		}

		if (window.innerWidth) {
			var intWinHeight = window.innerHeight;
			var intWinWidth = window.innerWidth;
		} else {
			var intWinHeight = document.documentElement.clientHeight;
			var intWinWidth = document.body.clientWidth;
		}
		
		// Adjust height of scroll Pane
		if (objScrollContainer) {
			if (objMainContent.className == "renovations") {
				objMainContent.style.height = (intWinHeight - 430) + 'px';
				objScrollContainer.style.height = (intWinHeight - 470) + 'px';
			} else {
				objMainContent.style.height = (intWinHeight - 190) + 'px';
				objScrollContainer.style.height = (intWinHeight - 230) + 'px';
			}
			objMainContent.style.padding = '0px';
			if (parseInt(objScrollContainer.offsetHeight) > parseInt(objScrollPane.offsetHeight)) {
				if (parseInt(objScrollContainer.offsetHeight) > parseInt(objScrollPane.offsetHeight) + 10) {
					objScrollContainer.style.height = (parseInt(objScrollPane.offsetHeight) + 10) + 'px';
				}
				objScrollBtnUp.style.display = 'none';
				objScrollBtnDown.style.display = 'none';
				objScrollPane.style.top = '0px';
				objScrollPane.style.left = '0px';
				objScrollContainer.style.clip = 'rect(0px ' + parseInt(objScrollContainer.offsetWidth) + 'px ' + parseInt(objScrollContainer.offsetHeight) + 'px 0px)';
			} else {
				objScrollBtnUp.style.display = 'block';
				objScrollBtnDown.style.display = 'block';
			}

		}

		// Adjust height of thumbnail scroll pane
		if (objScrollContainerT) {
			if (objThumbnails.className != 'renovations') {
				// Normal Thumbnail Scroll Pane
				objThumbnails.style.height = (intWinHeight - 231) + 'px';
				objScrollContainerT.style.height = (intWinHeight - 240) + 'px';
				if (parseInt(objScrollContainerT.offsetHeight) > parseInt(objScrollPaneT.offsetHeight)) {
					if (parseInt(objScrollContainerT.offsetHeight) > parseInt(objScrollPaneT.offsetHeight) + 10) {
						objScrollContainerT.style.height = (parseInt(objScrollPaneT.offsetHeight) + 10) + 'px';
					}
					objScrollBtnUpT.style.visibility = 'hidden';
					objScrollBtnDownT.style.visibility = 'hidden';
					objScrollPaneT.style.top = '0px';
					objScrollPaneT.style.left = '0px';
					objScrollContainerT.style.clip = 'rect(0px ' + parseInt(objScrollContainerT.offsetWidth) + 'px ' + parseInt(objScrollContainerT.offsetHeight) + 'px 0px)';
				} else {
					objScrollBtnUpT.style.visibility = 'visible';
					objScrollBtnDownT.style.visibility = 'visible';
				}
			} else {
				// Renovations Thumbnail Scroll Pane
				objThumbnails.style.width = amgLayout.intFinalMovieWidth + 'px';
				objThumbnails.style.top = (amgLayout.intFinalMovieHeight + 140) + 'px';
				objThumbnails.style.left = amgLayout.intFinalMoviePosition + 'px';
				objScrollContainerT.style.width = amgLayout.intFinalMovieWidth + 'px';
				if (parseInt(objScrollContainerT.offsetWidth) > parseInt(objScrollPaneT.offsetWidth)) {
					objScrollBtnLeftT.style.visibility = 'hidden';
					objScrollBtnRightT.style.visibility = 'hidden';
					objScrollPaneT.style.top = '0px';
					objScrollPaneT.style.left = '0px';
					objScrollContainerT.style.clip = 'rect(0px ' + parseInt(objScrollContainerT.offsetWidth) + 'px ' + parseInt(objScrollContainerT.offsetHeight) + 'px 0px)';
				} else {
					objScrollBtnLeftT.style.visibility = 'visible';
					objScrollBtnRightT.style.visibility = 'visible';
				}				
			}
		}
	},

//	Actual Scroll Functions
	scrollObject: function(intXrate, intYrate, blnPersist, intContainer) {
				
		// set scroll positions
		if (intContainer == 0) {
			var intContainerHeight = rwScroll.objSCR_Container.offsetHeight;
			var intContainerWidth = rwScroll.objSCR_Container.offsetWidth;
			var intPaneHeight = rwScroll.objSCR_Pane.offsetHeight;
			var intPaneWidth = rwScroll.objSCR_Pane.offsetWidth;
			rwScroll.intScrollPosition = [0, intContainerWidth - intPaneWidth, intContainerHeight - intPaneHeight, 0];

			if (intYrate < 0) {
				//scroll up
				if (rwScroll.objSCR_Pane.scrollState != "top") {
					rwScroll.objSCR_Pane.scrollState = "goingUp";
				}
			} else if (intYrate > 0) {
				//scroll down
				if (rwScroll.objSCR_Pane.scrollState != "bottom") {
					rwScroll.objSCR_Pane.scrollState = "goingDown";
				}
			}
		} else {
			var intContainerHeight = rwScroll.objSCR_ContainerT.offsetHeight;
			var intContainerWidth = rwScroll.objSCR_ContainerT.offsetWidth;
			var intPaneHeight = rwScroll.objSCR_PaneT.offsetHeight;
			var intPaneWidth = rwScroll.objSCR_PaneT.offsetWidth;
			if (intYrate != 0) {
				rwScroll.intScrollPositionT = [0, intContainerWidth - intPaneWidth, intContainerHeight - intPaneHeight, 0];
			} else if (intXrate !=0) {
				rwScroll.intScrollPositionT = [0, intContainerWidth - intPaneWidth, intContainerHeight - intPaneHeight, 0];
			}

			if (intYrate < 0) {
				//scroll up
				if (rwScroll.objSCR_PaneT.scrollState != "top") {
					rwScroll.objSCR_PaneT.scrollState = "goingUp";
				}
			} else if (intYrate > 0) {
				//scroll down
				if (rwScroll.objSCR_PaneT.scrollState != "bottom") {
					rwScroll.objSCR_PaneT.scrollState = "goingDown";
				}
			} else if (intXrate > 0) {
				//scroll left
				if (rwScroll.objSCR_PaneT.scrollState != "left") {
					rwScroll.objSCR_PaneT.scrollState = "goingLeft";
				}
			} else if (intXrate < 0) {
				//scroll right
				if (rwScroll.objSCR_PaneT.scrollState != "right") {
					rwScroll.objSCR_PaneT.scrollState = "goingRight";
				}
			}
		}
		
		if (blnPersist) {
			rwScroll.blnLoop = true;
			rwScroll.lngTimer = setInterval(function() { rwScroll.moveObject(Math.abs(intXrate), Math.abs(intYrate), intContainer); }, rwScroll.intFrameRate);
		} else {
			rwScroll.blnLoop = false;
			rwScroll.moveObject(Math.abs(intXrate), Math.abs(intYrate), intContainer);
		}
	},

	moveObject: function(intXrate, intYrate, intContainer) {
		if (intContainer == 0) {
			if (rwScroll.objSCR_Pane.scrollState == 'top' || rwScroll.objSCR_Pane.scrollState == 'bottom') {
				// do nothing
			} else {
				// vertical scroll
				var intYPosition = parseInt(rwScroll.objSCR_Pane.style.top);
				
				if (rwScroll.objSCR_Pane.scrollState == 'goingUp') {
					intYPosition += intYrate;
					if (intYPosition > rwScroll.intScrollPosition[0]) {
						intYPosition = rwScroll.intScrollPosition[0];
						rwScroll.objSCR_Pane.scrollState = 'top';
					}
				} else if (rwScroll.objSCR_Pane.scrollState == 'goingDown') {
					intYPosition -= intYrate;
					if (intYPosition < rwScroll.intScrollPosition[2]) {
						intYPosition = rwScroll.intScrollPosition[2];
						rwScroll.objSCR_Pane.scrollState = 'bottom';
					}
				}
				
				rwScroll.objSCR_Pane.style.top = intYPosition + 'px';
			}
		} else {
			if (intYrate != 0) {
				if (rwScroll.objSCR_PaneT.scrollState == 'top' || rwScroll.objSCR_PaneT.scrollState == 'bottom') {
					// do nothing
				} else {
					// vertical scroll
					var intYPosition = parseInt(rwScroll.objSCR_PaneT.style.top);
					
					if (rwScroll.objSCR_PaneT.scrollState == 'goingUp') {
						intYPosition += intYrate;
						if (intYPosition > rwScroll.intScrollPositionT[0]) {
							intYPosition = rwScroll.intScrollPositionT[0];
							rwScroll.objSCR_PaneT.scrollState = 'top';
						}
					} else if (rwScroll.objSCR_PaneT.scrollState == 'goingDown') {
						intYPosition -= intYrate;
						if (intYPosition < rwScroll.intScrollPositionT[2]) {
							intYPosition = rwScroll.intScrollPositionT[2];
							rwScroll.objSCR_PaneT.scrollState = 'bottom';
						}
					}
					
					rwScroll.objSCR_PaneT.style.top = intYPosition + 'px';
				}
			} else if (intXrate != 0) {
				if (rwScroll.objSCR_PaneT.scrollState == 'left' || rwScroll.objSCR_PaneT.scrollState == 'right') {
					// do nothing
				} else {
					// horizontal scroll
					var intXPosition = parseInt(rwScroll.objSCR_PaneT.style.left);
					
					if (rwScroll.objSCR_PaneT.scrollState == 'goingLeft') {
						intXPosition -= intXrate;
						if (intXPosition < rwScroll.intScrollPositionT[1]) {
							intXPosition = rwScroll.intScrollPositionT[1];
							rwScroll.objSCR_PaneT.scrollState = 'left';
						}
					} else if (rwScroll.objSCR_PaneT.scrollState == 'goingRight') {
						intXPosition += intXrate;
						if (intXPosition > rwScroll.intScrollPositionT[3]) {
							intXPosition = rwScroll.intScrollPositionT[3];
							rwScroll.objSCR_PaneT.scrollState = 'right';
						}
					}
					
					rwScroll.objSCR_PaneT.style.left = intXPosition + 'px';
				}
			}
		}
	},
	
//	Scroll Button Events
	mOver: function (e, targetElement) {
		var el = window.event ? targetElement : e ? e.currentTarget : null;
		if (!el) return;

		// begin slow scroll
		var strID = el.id;
		switch (strID) {
			case 'btnSCR_Up':
				var btnScrollButton = document.getElementById('scrButtonUp');
				btnScrollButton.className = 'scrButtonUp_over';
				rwScroll.scrollObject(0, rwScroll.intRev, true, 0);
				break;
			case 'btnSCR_Down':
				var btnScrollButton = document.getElementById('scrButtonDown');
				btnScrollButton.className = 'scrButtonDown_over';
				rwScroll.scrollObject(0, rwScroll.intFwd, true, 0);
				break;
			case 'btnSCR_UpT':
				var btnScrollButton = document.getElementById('scrButtonUpT');
				btnScrollButton.className = 'scrButtonUp_over';
				rwScroll.scrollObject(0, rwScroll.intRev, true, 1);
				break;
			case 'btnSCR_DownT':
				var btnScrollButton = document.getElementById('scrButtonDownT');
				btnScrollButton.className = 'scrButtonDown_over';
				rwScroll.scrollObject(0, rwScroll.intFwd, true, 1);
				break;				
			case 'btnSCR_LeftT':
				var btnScrollButton = document.getElementById('scrButtonLeftT');
				btnScrollButton.className = 'scrButtonLeft_over';
				rwScroll.scrollObject(rwScroll.intRev, 0, true, 1);
				break;
			case 'btnSCR_RightT':
				var btnScrollButton = document.getElementById('scrButtonRightT');
				btnScrollButton.className = 'scrButtonRight_over';
				rwScroll.scrollObject(rwScroll.intFwd, 0, true, 1);
				break;				
		}

	},
	getMOver: function (node) { return function(e) { rwScroll.mOver(e, node); }; },

	mOut: function (e, targetElement) {
		var el = window.event ? targetElement : e ? e.currentTarget : null;
		if (!el) return;
		
		// cancel slow scroll
		if (rwScroll.lngTimer) clearInterval(rwScroll.lngTimer);

		var strID = el.id;
		switch (strID) {
			case 'btnSCR_Up':
				var btnScrollButton = document.getElementById('scrButtonUp');
				btnScrollButton.className = 'scrButtonUp';
				break;
			case 'btnSCR_Down':
				var btnScrollButton = document.getElementById('scrButtonDown');
				btnScrollButton.className = 'scrButtonDown';
				break;
			case 'btnSCR_UpT':
				var btnScrollButton = document.getElementById('scrButtonUpT');
				btnScrollButton.className = 'scrButtonUp';
				break;
			case 'btnSCR_DownT':
				var btnScrollButton = document.getElementById('scrButtonDownT');
				btnScrollButton.className = 'scrButtonDown';
				break;				
			case 'btnSCR_LeftT':
				var btnScrollButton = document.getElementById('scrButtonLeftT');
				btnScrollButton.className = 'scrButtonLeft';
				break;
			case 'btnSCR_DownT':
				var btnScrollButton = document.getElementById('scrButtonRightT');
				btnScrollButton.className = 'scrButtonRight';
				break;				
		}

	},
	getMOut: function (node) { return function(e) { rwScroll.mOut(e, node); }; },

	mDown: function (e, targetElement) {
		var el = window.event ? targetElement : e ? e.currentTarget : null;
		if (!el) return;

		// cancel slow scroll
		if (rwScroll.lngTimer) clearInterval(rwScroll.lngTimer);
		if (rwScroll.lngTimerT) clearInterval(rwScroll.lngTimerT);

		// begin fast scroll
		var strID = el.id;
		switch (strID) {
			case 'btnSCR_Up':
				rwScroll.scrollObject(0, rwScroll.intFRev, true, 0);
				break;
			case 'btnSCR_Down':
				rwScroll.scrollObject(0, rwScroll.intFFwd, true, 0);
				break;
			case 'btnSCR_UpT':
				rwScroll.scrollObject(0, rwScroll.intFRev, true, 1);
				break;
			case 'btnSCR_DownT':
				rwScroll.scrollObject(0, rwScroll.intFFwd, true, 1);
				break;				
			case 'btnSCR_LeftT':
				rwScroll.scrollObject(rwScroll.intFRev, 0, true, 1);
				break;
			case 'btnSCR_RightT':
				rwScroll.scrollObject(rwScroll.intFFwd, 0, true, 1);
				break;				
		}		
	},
	getMDown: function (node) { return function(e) { rwScroll.mDown(e, node); }; },

	mUp: function (e, targetElement) {
		var el = window.event ? targetElement : e ? e.currentTarget : null;
		if (!el) return;
		
		// cancel fast scroll
		rwScroll.blnLoop = false;
		if (rwScroll.lngTimer) clearInterval(rwScroll.lngTimer);
		rwScroll.blnLoopT = false;
		if (rwScroll.lngTimerT) clearInterval(rwScroll.lngTimerT);
		
		// begin slow scroll
		var strID = el.id;
		switch (strID) {
			case 'btnSCR_Up':
				rwScroll.scrollObject(0, rwScroll.intRev, true, 0);
				break;
			case 'btnSCR_Down':
				rwScroll.scrollObject(0, rwScroll.intFwd, true, 0);
				break;
			case 'btnSCR_UpT':
				rwScroll.scrollObject(0, rwScroll.intRev, true, 1);
				break;
			case 'btnSCR_DownT':
				rwScroll.scrollObject(0, rwScroll.intFwd, true, 1);
				break;				
			case 'btnSCR_LeftT':
				rwScroll.scrollObject(rwScroll.intRev, 0, true, 1);
				break;
			case 'btnSCR_RightT':
				rwScroll.scrollObject(rwScroll.intFwd, 0, true, 1);
				break;				
		}		
	},
	getMUp: function (node) { return function(e) { rwScroll.mUp(e, node); }; },

//	Object Properties
	blnInitialised: true,
	intFrameRate: 20,
	intWFwd: 20,
	intFFwd: 8,
	intFwd: 4,
	intWRev: -20,
	intFRev: -8,
	intRev: -4,
	lngTimer: 0,
	lngTimerT: 0,
	intScrollPosition: [0, 0, 0, 0],
	intScrollPositionT: [0, 0, 0, 0],
	blnLoop: false,
	blnLoopT: false,
	objSCR_Container: {},
	objSCR_Pane: {},
	objSCR_ContainerT: {},
	objSCR_PaneT: {}
	
};

//rwScript.addEvent(window, 'load', rwScroll.addListeners, false);
rwScript.addEvent(window, 'unload', EventCache.flush, false);

