		var MarqueeHorizontal = {};
		
		MarqueeHorizontal.Storage = {
			State: null,
			Speed: 30,
			NormalSpeed: 30,
			FastSpeed: 5,
			Sizes: {
				MaxHome: 765
			}
		}
		
		MarqueeHorizontal.Settings = {
			PrefixId : {
				MarqueeContainer : 'ticker_content_',
				MarqueeContent : 'ticker_move_',
				MarqueeLeftNav : 'ticker_left_',
				MarqueeRightNav : 'ticker_right_'
			},
			CssClass : {
			} 
		}
		
		//Alert Bugs
		MarqueeHorizontal.Debug = function(){
			var Item = document.getElementById('ticker_move_1');
			MarqueeHorizontal.Load(1, 'left')
		}
		
		
		//Gets Width of Specific Element
		MarqueeHorizontal.Width = function(ViewElement){
			return ViewElement.offsetWidth;
		}
		
		
		//Return the marquee current left position
		MarqueeHorizontal.CurrentLeftPosition = function(MarqueeElement){
			aPosition = Position.positionedOffset(MarqueeElement);
			var aLeft = aPosition[0];
			var aTop = aPosition[1];
			
			if (MarqueeElement.style.left == null) {
				MarqueeElement.style.left = aLeft + "px";
			}
			
			CurrentLeftPos = MarqueeElement.style.left.replace( "px", "");
			return CurrentLeftPos;
		}
		
		//Run Marque
		MarqueeHorizontal.Load = function(RunMarquee, Option, Load){
			clearTimeout(MarqueeHorizontal.Storage['TimeOutMarquee'+RunMarquee]);
			var MarqueeElement = document.getElementById(MarqueeHorizontal.Settings.PrefixId.MarqueeContent+RunMarquee);
			oMarqueeParent = MarqueeElement.parentNode;
			
			MarqueeWidth = MarqueeHorizontal.Width(MarqueeElement);
			oParentWidth = MarqueeHorizontal.Width(oMarqueeParent);
			
			MaxLeft = - (MarqueeWidth - oParentWidth) - (oParentWidth - 10);
			MaxRight = oParentWidth - 10;
			
			if (oParentWidth < MarqueeWidth) {
				if (Option) {
					MarqueeHorizontal.Storage.State = (Option == 'left') ? 'left' : 'right';
					if (Load) {
						MarqueeElement.style.left = MaxRight + "px";
					}
					MarqueeHorizontal.Move(RunMarquee, MaxLeft, MaxRight);
				}
			}else{
				return;
			}
		}
		
		
		//Check if the the Marquee should still move
		MarqueeHorizontal.Move = function(RunMarquee, MaxLeft, MaxRight){
			
			var MarqueeElement = document.getElementById(MarqueeHorizontal.Settings.PrefixId.MarqueeContent+ RunMarquee);
			
			MarqueeHorizontal.Storage['CurrentLeft' + RunMarquee] = MarqueeHorizontal.CurrentLeftPosition(MarqueeElement);
			CurrentLeftPos = MarqueeHorizontal.Storage['CurrentLeft' + RunMarquee];
		
			if (MarqueeHorizontal.Storage.State == 'left') {
				if (CurrentLeftPos < MaxLeft) {
					MarqueeHorizontal.Reset(MarqueeElement, MaxRight);
				}
			}else{
				if (CurrentLeftPos > MaxRight) {
					MarqueeHorizontal.Reset(MarqueeElement, MaxLeft);
				}
			}
			
			MarqueeHorizontal.Storage['CurrentLeft' + RunMarquee] = MarqueeHorizontal.CurrentLeftPosition(MarqueeElement);
			MarqueeHorizontal.Position(RunMarquee, CurrentLeftPos);
			MarqueeHorizontal.LoopMove(RunMarquee, MaxLeft, MaxRight);
		}
		
		
		//Loop movement, also creates a timeout to stop the movement if requested
		MarqueeHorizontal.LoopMove = function(RunMarquee, MaxLeft, MaxRight){ 
			var MarqueeElement = document.getElementById(MarqueeHorizontal.Settings.PrefixId.MarqueeContent+RunMarquee);
			MarqueeHorizontal.Storage['TimeOutMarquee'+RunMarquee] = setTimeout(
				function()	{ 
					MarqueeHorizontal.Move(RunMarquee, MaxLeft, MaxRight)
				}, MarqueeHorizontal.Storage.Speed
			);	
		}
		
		
		//Moves the marque up by 1px, constant call of this function gives the moving top loop effect
		MarqueeHorizontal.Position = function(RunMarquee, CurrentLeftPos){
			var MarqueeElement = document.getElementById(MarqueeHorizontal.Settings.PrefixId.MarqueeContent+RunMarquee);
			LeftCalculation = (MarqueeHorizontal.Storage.State == 'left') ? eval(CurrentLeftPos+" - 1") : eval(CurrentLeftPos+" + 1");
			MarqueeElement.style.left = LeftCalculation +"px";
		}
		
		
		//Returns the Marquee to its start top position
		MarqueeHorizontal.Reset = function (MarqueeElement, StartPos){
			MarqueeElement.style.left = StartPos +"px";
		}
		
		
		//Stops a specific Marquee from moving
		MarqueeHorizontal.StopRun = function (RunMarquee){
			clearTimeout(MarqueeHorizontal.Storage['TimeOutMarquee'+RunMarquee]);
		}
		
		//Adjust Size of Marquee Accounding to text in its contents
		MarqueeHorizontal.AdjusteSizes = function (RunMarquee){
			var MarqueeContainer = document.getElementById(MarqueeHorizontal.Settings.PrefixId.MarqueeContainer+RunMarquee);
			var MarqueeLeftNav = document.getElementById(MarqueeHorizontal.Settings.PrefixId.MarqueeLeftNav+RunMarquee);
			var MarqueeRightNav = document.getElementById(MarqueeHorizontal.Settings.PrefixId.MarqueeRightNav+RunMarquee);
			oMarqueeParent = MarqueeContainer.parentNode;
			
			oParentWidth = MarqueeHorizontal.Width(oMarqueeParent);
			MarqueeWidth = MarqueeHorizontal.Width(MarqueeContainer);
			LeftNavWidth = MarqueeHorizontal.Width(MarqueeLeftNav);
			RightNavWidth = MarqueeHorizontal.Width(MarqueeRightNav); 
			
			NavTotalWidth = LeftNavWidth + RightNavWidth;
			MarqueeWidth = oParentWidth - NavTotalWidth;
			MarqueeContainer.style.width = MarqueeWidth +"px"; 
			//alert("Total Parent: "+oParentWidth+"\nNav Total Width: "+NavTotalWidth+"\nMarquee Width: "+MarqueeWidth);
		}
		
		MarqueeHorizontal.FastSpeed = function (RunMarquee, Option){
			MarqueeHorizontal.Storage.Speed = MarqueeHorizontal.Storage.FastSpeed;
			MarqueeHorizontal.Load(RunMarquee, Option)
		}
		
		MarqueeHorizontal.ResetSpeed= function (RunMarquee, Option){
			MarqueeHorizontal.Storage.Speed = MarqueeHorizontal.Storage.NormalSpeed;
			MarqueeHorizontal.Load(RunMarquee, Option)
		}
		