diff --git a/sites/all/themes/unl_digitalsignage/css/1920.css b/sites/all/themes/unl_digitalsignage/css/1920.css
index 1871a248389acea4a8d337a95911f3bd70efda50..fa1d71e92a0a4ce539a563920ceaae1e540530a5 100644
--- a/sites/all/themes/unl_digitalsignage/css/1920.css
+++ b/sites/all/themes/unl_digitalsignage/css/1920.css
@@ -348,3 +348,31 @@ body.node-type-digital-sign .field-name-field-videosources .field-videosources-d
   height: 100%;
   background-color: #fff;
 }
+
+/* Scroller
+***************/
+.field-name-field-scroll {
+  position: absolute !important;
+  bottom: 0;
+  left: 0;
+  font-size: 36px;
+  font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
+  background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#B70302),color-stop(100%,#9D0201));
+  color: white;
+  padding: 10px 0;
+  opacity: .9;
+  box-shadow: 0 0px 6px #555;
+  width: 1920px;
+  overflow: hidden;
+
+}
+.field-name-field-scroll .field-items {
+  position: relative;
+  overflow: hidden;
+}
+.field-name-field-scroll li {
+  float: left;
+  list-style-type: disc;
+  margin: 0 60px;
+  padding: 5px 0;
+}
\ No newline at end of file
diff --git a/sites/all/themes/unl_digitalsignage/scripts/unl_digitalsignage.js b/sites/all/themes/unl_digitalsignage/scripts/unl_digitalsignage.js
index 1731756421b0f92fd6debd90f9a99e363e443070..5640ab579f02895f0280bb61ca830071bed515ce 100644
--- a/sites/all/themes/unl_digitalsignage/scripts/unl_digitalsignage.js
+++ b/sites/all/themes/unl_digitalsignage/scripts/unl_digitalsignage.js
@@ -5,36 +5,37 @@ UNL.digitalSignage = (function() {
 		'news' : 5,
 		'videos' : 10
 	};
-	
+
 	return {
 		// Populated by template.php
 		feeds : {},
-		
+
 		init : function() {
 			console.log('UNL.digitalSignage.init called');
-			
+
 			if ('1360' < window.innerWidth && window.innerWidth < '1372') {
 				width = 1366;
 				height = 768;
 			}
-			
+
 			for (feed in UNL.digitalSignage.feeds) {
 				if (UNL.digitalSignage.feeds.hasOwnProperty(feed)) {
 					UNL.digitalSignage.setupFeed(feed);
 				}
 			}
-			
+
 			UNL.digitalSignage.rotateBeautyShots();
+			UNL.digitalSignage.startScroll();
 		},
-		
+
 		setupFeed : function(field) {
 			console.log('UNL.digitalSignage.setupFeed called for: '+field);
-			
+
 			// How often to grab a new set of results from the feed
 			var time;
 			// Call it once to start us off, later we'll setInterval on this
 			UNL.digitalSignage.updateFeed(field);
-			
+
 			switch(field) {
 				case 'field_newssources':
 					time = 600000;
@@ -42,17 +43,17 @@ UNL.digitalSignage = (function() {
 				default:
 					time = 500000;
 			}
-			
+
 			return false;
 		},
-		
+
 		updateFeed : function(field) {
 			// Switch out the - with  _ if this is a recursive call
 			field = field.replace('-', '_');
-			
+
 			console.log('UNL.digitalSignage.updateFeed feed called for: '+field);
 			console.log('Getting data from: '+UNL.digitalSignage.feeds[field]);
-			
+
 			jQuery.getJSON(UNL.digitalSignage.feeds[field], function(data) {
 				console.log('Success! Got the '+field+' data: '+data);
 				// Switch out the _ with the - that is used by css identifiers
@@ -61,7 +62,7 @@ UNL.digitalSignage = (function() {
 				if (field !== 'field-twitter') {
 					jQuery('.field-name-'+field).html('');
 				}
-				
+
 				switch(field) {
 					case 'field-newssources':
 						var news = [];
@@ -69,14 +70,14 @@ UNL.digitalSignage = (function() {
 							if (news.length >= maxItems['news']) {
 								return false;
 							}
-							
+
 							news.push('<li class="field-item '+(key%2 ? 'odd' : 'even')+'">'+
 										'<h3><span>'+val.title+'</span></h3>'+
 										'<div class="'+field+'-desc">'+val.description+'</div>'+
 										'<div class="'+field+'-link">'+val.link+'</div>'+
 										'<div class="'+field+'-qrcode"></div>'+
 										'</li>');
-							
+
 							var sizeSmall = 42, sizeBig = 120;
 							if (width < '1920') {
 								var sizeSmall = 32;
@@ -87,19 +88,19 @@ UNL.digitalSignage = (function() {
 							// Big QR Code
 							UNL.digitalSignage.addQrCode('.field-name-'+field+' .field-items .field-item:nth-child('+news.length+') .'+field+'-qrcode', 'img', sizeBig, val.link);
 						});
-						
+
 						// Add the list of news stories
 						jQuery('<ul />', {
 							'class' : 'field-items',
 							'html' : news.join('')
 						}).appendTo('.field-name-'+field);
-						
+
 						// Add the div that will display the story that is showing
 						jQuery('<div />', {
 							'class' : 'field-display',
 							'html' : '<div class="qrcode"></div><div class="link"></div><div class="desc"></div>'
 						}).appendTo('.field-name-'+field);
-						
+
 						UNL.digitalSignage.rotateNews();
 						break;
 					case 'field-videosources':
@@ -108,7 +109,7 @@ UNL.digitalSignage = (function() {
 						jQuery.each(data.query.results.item, function(key, val) {
 							videos.push({link:val.link, title:val.title, description:val.description});
 						});
-						
+
 						jQuery('<div/>', {
 							'class': 'field-items',
 							'html': '<div class="field-item even">'+
@@ -118,9 +119,9 @@ UNL.digitalSignage = (function() {
 										'<div class="'+field+'-desc"></div>'+
 									'</div>'
 						}).appendTo('.field-name-'+field);
-						
+
 						var video = document.getElementById('unl-digitalsignage-video');
-						
+
 						// "Helper" function due to trouble removing a listener that calls a function with parameters i.e. video.addEventListener('ended', callVideoUpdate(i+1), false);
 						var callVideoUpdate = function() {
 							videoUpdate(videoCounter+1);
@@ -128,13 +129,13 @@ UNL.digitalSignage = (function() {
 
 						// Initialize the ThreeDots variable
 						var threedots_object = jQuery('.field-videosources-desc').ThreeDots();
-						
+
 						var videoUpdate = function() {
 							video.removeEventListener('ended', callVideoUpdate, false);
-							
+
 							video.src = videos[videoCounter].link;
 							console.log('src for video #'+videoCounter+' loaded');
-							
+
 							// Add the description
 							jQuery('.'+field+'-desc').html(videos[videoCounter].description);
 							// Truncate with ellipsis plugin if too long
@@ -143,7 +144,7 @@ UNL.digitalSignage = (function() {
 							threedots_object.ThreeDots.update({ max_rows:12 });
 							// Add title of video, must be done after ThreeDots ellipsis call to avoid stripping h3 tag
 							jQuery('.'+field+'-desc').prepend('<h3>'+videos[videoCounter].title+'</h3>');
-							
+
 							// Set up recursion
 							if (videos[videoCounter+1] !== undefined && videoCounter < maxItems['videos']) {
 								console.log('Added "ended" listener that will call callVideoUpdate() i.e. videoUpdate('+videoCounter+'+1)');
@@ -156,7 +157,7 @@ UNL.digitalSignage = (function() {
 							}
 							videoCounter++;
 						};
-						
+
 						// Attach the first video to the dom to get the ball rolling
 						videoUpdate();
 						break;
@@ -184,35 +185,35 @@ UNL.digitalSignage = (function() {
 						break;
 					default:
 				}
-			
+
 			});
 			return false;
 		},
-		
+
 		rotateBeautyShots : function() {
 			// Store the initial css values of the page title
 			var pageTitle = [];
 			pageTitle['padding-left'] = jQuery('#page-title').css('padding-left');
 			pageTitle['color'] = jQuery('#page-title').css('color');
 			pageTitle['text-shadow'] = jQuery('#page-title').css('text-shadow');
-			
+
 			// Things to give opacity to when beauty shot is full screen
 			var opacityElements = '.field-name-field-videosources .field-videosources-desc, .field-name-field-newssources .field-items, .field-name-field-newssources .field-display, .field-name-field-twitter';
-			
+
 			// Populate this var to make code below easier to read
 			var fi = '.field-name-field-beautyshots .field-items .field-item';
-			
+
 			var rotate = function() {
 				// Get the first image
 				var current = (jQuery(fi+'.show') ? jQuery(fi+'.show') : jQuery(fi+':first'));
 				// Get next image, when it reaches the end, rotate it back to the first image
 				var next = ((current.next().length) ? ((current.next().hasClass('show')) ? jQuery(fi+':first') : current.next()) : jQuery(fi+':first'));
-				
+
 				// Hide the current image
 				current.removeClass('show').animate({opacity: 0.0}, 3000);
 				// Show the next image
 				next.css({opacity: 0.0}).addClass('show');
-				
+
 				// Decide how to animate fading in the new image and whether to move the background (the +/- 2 is just for a little fudging)
 				if (current.width() < width+2 && next.width() >= width-2) {
 					next.animate({opacity: 1.0}, 3000, function() {
@@ -224,6 +225,7 @@ UNL.digitalSignage = (function() {
 							}, 2000);
 						jQuery('#unl_digitalsignage_background').animate({'left' : '-'+width+'px'}, 2000, function() {
 							jQuery(opacityElements).css('background-image','none');
+							jQuery('.field-videosources-desc, .field-name-field-twitter').fadeOut();
 						});
 					});
 				} else if (current.width() >= width-2 && next.width() < width+2) {
@@ -236,23 +238,24 @@ UNL.digitalSignage = (function() {
 					jQuery('#unl_digitalsignage_background').animate({'left' : '0px'}, 2000, function() {
 						next.animate({opacity : 1.0}, 3000);
 						jQuery(opacityElements).css('background-image','inherit');
+						jQuery('.field-videosources-desc, .field-name-field-twitter').fadeIn();
 					});
 				} else {
 					next.animate({opacity : 1.0}, 3000);
 				}
 			};
-			
+
 			// Set the opacity of all images to 0
 			jQuery(fi).css({opacity: 0.0});
-			
+
 			// Get the first image and display it (gets set to full opacity)
 			jQuery(fi+':first').css({opacity: 1.0});
-			
+
 			// Call the rotator function to run the slideshow, (2000 = change to next image after 2 seconds)
 			rotate();
 			setInterval(function(){rotate()}, 20000);
 		},
-		
+
 		rotateNews : function() {
 			var fi = '.field-name-field-newssources .field-items .field-item';
 			var counter = 0;
@@ -266,23 +269,23 @@ UNL.digitalSignage = (function() {
 				var current = (jQuery(fi+'.show') ? jQuery(fi+'.show') : jQuery(fi+':first'));
 				// Get next story, when it reaches the end, rotate it back to the first story
 				var next = ((current.next().length) ? ((current.next().hasClass('show')) ? jQuery(fi+':first') : current.next()) : jQuery(fi+':first'));
-				
+
 				// Populate the display area with the content from the current (.show) li
 				jQuery('.field-name-field-newssources .field-display .desc').html(next.find('.field-newssources-desc').html());
 				jQuery('.field-name-field-newssources .field-display .link').html(next.find('.field-newssources-link').html());
 				jQuery('.field-name-field-newssources .field-display .qrcode').html(next.find('.field-newssources-qrcode').html());
-				
+
 				next.addClass('show');
 				current.removeClass('show');
-				
+
 				counter++;
 			};
-			
+
 			// Call the rotator function to run the slideshow, (2000 = change to next story after 2 seconds)
 			rotate();
 			var newsInterval = setInterval(function(){rotate()}, 10000);
 		},
-		
+
 		rotateTweets : function(tweets) {
 			var fi = '.field-name-field-twitter .field-items .field-item';
 			var counter = 0;
@@ -293,8 +296,8 @@ UNL.digitalSignage = (function() {
 					UNL.digitalSignage.updateFeed('field_twitter');
 					return false;
 				}
-				
-				if (tweets[counter].retweeted_status && tweets[counter].retweeted_status.user 
+
+				if (tweets[counter].retweeted_status && tweets[counter].retweeted_status.user
 					&& tweets[counter].retweeted_status.user.screen_name && tweets[counter].retweeted_status.user.profile_image_url && tweets[counter].retweeted_status.text) {
 					// Retweet
 					tweet['screen_name'] = tweets[counter].retweeted_status.user.screen_name;
@@ -310,28 +313,28 @@ UNL.digitalSignage = (function() {
 					tweet['text'] = tweets[counter].text;
 					tweet['retweeted_by'] = undefined;
 				}
-				
+
 				jQuery(fi).fadeOut('slow', function() {
 					jQuery(fi).html('<div class="tweet">'+
 									'<img src="'+tweet['profile_image_url']+'" alt="Twitter Profile Icon" />'+
 									'<div class="tweet-user"><span class="tweet-user-name">@'+tweet['screen_name']+'</span><span class="tweet-full-name">'+tweet['name']+'</span></div>'+
 									'<div class="tweet-text">'+tweet['text']+'</div>'+
 									'</div>');
-					
+
 					if (tweet['retweeted_by']) {
 						jQuery(fi).append('<div class="retweet"><span>retweeted by</span> @'+tweet['retweeted_by']+'</div>');
 					}
 					jQuery(fi).fadeIn();
 					counter++;
 				});
-				
+
 			};
-			
+
 			// Call the rotator function (2000 = change to next tweet after 2 seconds)
 			rotate();
 			var tweetInterval = setInterval(function(){rotate()}, 15000);
 		},
-		
+
 		addQrCode : function(element, type, size, url) {
 			jQuery.post('http://go.unl.edu/api_create.php', { 'theURL' : url }, function(data) {
 				console.log("GoURL generated URL is: "+data);
@@ -353,10 +356,32 @@ UNL.digitalSignage = (function() {
 				}
 			});
 		},
-		
+
+		startScroll : function() {
+			var speed = 2;
+			var items, scroller = jQuery('.field-name-field-scroll .field-items');
+			var width = 0;
+
+			scroller.html('<ul><li>'+scroller.html().split("\n").join("</li><li>")+'</li></ul>');
+			scroller.find('li').each(function(){
+				width += jQuery(this).outerWidth(true);console.log(width);
+			});
+			scroller.css('width', width);
+			scroll();
+			function scroll() {
+				items = scroller.children();
+				var scrollWidth = items.eq(0).outerWidth();
+				scroller.animate({'left' : 0 - scrollWidth}, scrollWidth * 100 / speed, 'linear', changeFirst);
+			}
+			function changeFirst() {
+				scroller.append(items.eq(0).remove()).css('left', '1920px');
+				scroll();
+			}
+		},
+
 		clock : function() {
-			
-		
+
+
 		}
 	};
 })();