var slideshow = {
	container: false,
	preloaded: [],
	init: function(options) {
	
		var settings = {
			before: slideshow.onBefore
		};
		settings = $.extend(settings, options);
	
		slideshow.container = $('.slideshow');
		slideshow.container.cycle(settings);
		slideshow.preload();
	},
	
    onBefore: function(curr, next, opts) {
		var bgImage = $(next).css('backgroundImage').replace('url(', '').replace(')', '');
		
		if (!slideshow.preloaded[bgImage]) {
			slideshow.container.cyclePause = 1;
			var img = new Image(); 
			img.src = bgImage; 
			$(img).bind('load', function() { 
				slideshow.preloaded[bgImage] = true;
				slideshow.container.cyclePause = 0;
			});
		}       
    },
	
	preload: function() {
		var slides = slideshow.container.children();
		$(slides).each(function() {
		
			var bgImage = $(this).css('backgroundImage').replace('url(', '').replace(')', '');
			var img = new Image(); 
			img.src = bgImage; 
			$(img).bind('load', function() { 
				slideshow.preloaded[bgImage] = true;
			}); 
			
		});
	}

};



var ugvids = {
	items: false,
	currentTitleElement: false,
	currentItem: false,
	videoHolder: false,
	player: false,
	backButton: false,
	nextButton: false,
	pageTracker: false,
	init:function() {
		//ugvids.pageTracker = _gat._getTracker("UA-2386911-2");
		
		
		
		ugvids.currentTitleElement = $('#VideoHolder h1');
		
		ugvids.backButton = $('#BackButton');
		ugvids.backButton.click(function() {
			if (!$(this).hasClass('disabled')) {
				ugvids.back();
			}
			return false;
		});
		ugvids.nextButton = $('#NextButton');
		ugvids.nextButton.click(function() {
			if (!$(this).hasClass('disabled')) {
				ugvids.next();
			}
			return false;
		});
		
		// get the video list items set up
		ugvids.items = $('.videoItem');
		ugvids.items.each(function(i, item) {
			var altFormat = $('.textForTitle', this);
			
			if (altFormat.length > 0) {
				this.videoTitle = $(altFormat).html();
			} else {
				
				this.videoTitle = $('h2', this).html();
			}
			this.linkElement = $('.playLink', this);
			this.videoURL = this.linkElement.attr('href');
			this.videoIndex = i;
			
			$(this).css('cursor', 'pointer');
			
			$(this).click(function() {
				ugvids.loadVideo(this);
				return false;
			})
			.hover(function() {
				$(this).addClass('hover')
			}, function() {
				$(this).removeClass('hover')
			});
			
		});
		
		// set up the player
		ugvids.videoHolder = $('#Video');

		
		// load the first video
		ugvids.loadVideo(ugvids.items[0]);
	},
	
	// opens a video from the list to play it
	loadVideo: function(item) {
		
		ugvids.currentTitleElement.html(item.videoTitle);
		ugvids.currentItem = item;
		ugvids.items.removeClass('current');
		$(item).addClass('current');
		
		ugvids.player = new SWFObject('/flash/ug-player.swf', 'videoPlayer', 375, 270, 9, '#CCCCCC');
		ugvids.player.useExpressInstall('/flash/expressinstall.swf');
		ugvids.player.addVariable('wmode', 'transparent');
		ugvids.player.addVariable('allowscriptaccess', 'always');
		ugvids.player.write('Video');
		ugvids.player.addVariable('itemId', item.videoURL);
		ugvids.player.write('Video');

		
		// update the next/prev buttons as needed
		if (item.videoIndex == 0) {
			ugvids.backButton.addClass('disabled');
		} else {
			ugvids.backButton.removeClass('disabled');
		}
		if (item.videoIndex == ugvids.items.length-1) {
			ugvids.nextButton.addClass('disabled');
		} else {
			ugvids.nextButton.removeClass('disabled');
		}
		
		var urlBits = document.URL.split('/');
		var urlBit = urlBits[urlBits.length-2]+'/'+urlBits[urlBits.length-1].replace('.html', '');
		
		var vidUrlBits = item.videoURL.split('/');
		var vidUrlBit = vidUrlBits[vidUrlBits.length-1].replace('.flv', '');
		
		var gaURL = urlBit+'/'+vidUrlBit;
		pageTracker._trackPageview(gaURL);
	},
	
	back: function() {
		var prev = ugvids.items[ugvids.currentItem.videoIndex-1];
		
		if (prev) {
			ugvids.loadVideo(prev);
		}
	},
	
	next: function() {
		var next = ugvids.items[ugvids.currentItem.videoIndex+1];
		
		if (next) {
			ugvids.loadVideo(next);
		}
		
	}
	
};