$(function(){
	var $links = null;
	var interval = null;
	var $navLinks = null;
	var $story_container = null;
	var Host = window.location.protocol.toString() + '//'+ window.location.hostname.toString();
	
	var openBubble = function(element){
		$links.find('a').hide().end().css({zIndex:1}).removeClass('open');
		$(element).css({zIndex:100}).addClass('open').find('a').fadeIn();
	}
	
	var start = function(){
		play();
		if(!interval){interval = setInterval(play, 3*1000);}
	};
	
	var stop = function(){
		clearInterval(interval);
		interval = null;
	};
	
	var play = function(){
		var index = randomNumber(0, $links.length-1);
		openBubble($links.eq(index));		
	}

	
	var loadStory = function(u){
		var url = (u[0]) ? u : this.href.replace(Host, '');
		if (window.location.toString().indexOf(url) < 0 || window.location.hash != '') {
			$('#story_backer').show();
			$('#story_container').html('<p>Loading...</p>').load(url +' #story_container>*', openStory);
			window.location.hash = '#'+ url;
			/* Track Page View */
			if (window.pageTracker){ window.pageTracker._trackPageview(url); }
		}
		else {
			window.location.hash = '';
			$('#story_backer').show();
			$('#story_container').show();
		}
		return false;
	}
	
	var loadStories = function(u){
		var url = (u[0]) ? u : this.href.replace(Host, '');
		if (window.location.toString().indexOf(url) < 0) {
			$('#stories').load(url +' #stories>*', function(){ load(); });
			window.location.hash = '#'+ url;
			/* Track Page View */
			if (window.pageTracker){ window.pageTracker._trackPageview(url); }
		}
		return false;
	}
		
	var loadVideo = function(){
		var $video = $story_container.find('#video');
		if ($video.length > 0){
			var videoUrl = $video.attr('rel');
			var flashvars = {};
			var params = {
				wmode: 'transparent',
				allowscriptaccess: 'always'
			};
			var attributes = {};
			
			swfobject.embedSWF(videoUrl, "video", "375", "227", "9.0.0","", flashvars, params, attributes);
			
		}

	}

	var openStory = function(){
		if ($story_container.find('a.storyClose').length > 0){
			$story_container.find('a.storyClose').click(closeStory);
			$story_container.find('a.storyNext').click(loadStory);
			$story_container.find('a.image').click(storySwapImage);
			
			loadVideo();
			
			$('#story_backer').show().fadeTo(0, 0.5);
			$('#story_container').show();
			$navLinks.hide();
		}
	}

	var storySwapImage = function(){
		$('#main_image img').attr('src', this.href);
		return false;
	}
	
	var closeStory = function(){
		$('#story_backer').hide();
		$('#story_container').hide();
		$navLinks.show();
		return false;
	}
	

	var load = function(){
		var $canvas = $('#stories_canvas');
		var canvasCoords = $canvas.position();
		var upperX = $canvas.width() - 30;
		var lowerX = 20;
		var upperY = $canvas.height() - 30;
		var lowerY = 20;

		$links = $canvas.find('.story');
		var colWidth = $canvas.width()/($links.size() + 1);
		
		$links.each(function(index){
			//var i = (index == 0 || index == $links.length-1) ? 80 : 0;
			var x = (index+1) * colWidth;
			var upperY1 = (index == 0 || index == $links.length-1) ? 200 : upperY; 
			var y = randomNumber(lowerY, upperY1, 0);
			var z = 1;
			$(this).css({left: x, top: y, zIndex: z});
		})
		
		$links.filter(':last').find('a').click(loadStory);
	
		$links = $links.not(':first, :last');
	
		$links.hover(function() {
				openBubble(this);
				stop();
			},
			function() {
				start();
		});
		
		$links.find('a').click(loadStory);
	
		$navLinks = $('#stories .prev, #stories .next').click(loadStories);
			
		start();
		//$story_container = $('#story_container').before($('<div id="story_backer"/>').css({ display: 'none', opacity: '.5', backgroundColor: '#FFF' }));
		$story_container = $('#story_container').before($('<div/>', {id:'story_backer', css: { display: 'none', opacity: '.5', backgroundColor: '#FFF' }}));

	}
		
	load();
	openStory();
	
	/* Check for hash and load accordingly */
	if (window.location.hash.indexOf('page=') > 0) {
		loadStories(window.location.hash.replace('#', ''));
	}
	else if (window.location.hash.indexOf('/stories/') > 0 || window.location.hash.indexOf('/our-story/') > 0) {
		loadStory(window.location.hash.replace('#', ''));
	}
		
});

function randomNumber (lower, upper, interval) {
  
  // create a pseudo-random number between the upper and lower values,
  // at a given interval (if any). If you call randomNumber(10, 100, 10)
  // for example, you will get a number back that is between 10 and 100,
  // in intervals of 10 (10, 20, 30, etc.)
  
  rndNum = (Math.abs(Math.round(Math.random() * 100000))) % (upper - lower + 1);
  if (interval)
    rndNum -= (rndNum % Math.round(interval));
  rndNum += lower;
  return rndNum;
  
  /*
   return Math.floor(Math.random() * (upper - lower + 1)) + lower;
  */
}
