
$.urlParameters = function() { 
    
    var parameters = {};
    var e,
            a = /\+/g,  // Regex for replacing addition symbol with a space
            r = /([^&=]+)=?([^&]*)/g,
            d = function (s) { return decodeURIComponent(s.replace(a, " ")); },
            q = window.location.search.substring(1);

        var foundOne = false;
        while (e = r.exec(q)) 
        {
           parameters[d(e[1])] = d(e[2]);
           foundOne = true;
       }
    return foundOne ? parameters : null;
}



$(document).ready(function() {
	
	// Track virtual pageviews:
	$('a.virtual-pageview').click( function(event){
	    
	    if (typeof _gat == 'undefined') return;
	    
	    $this = $(this);
	    var href     = $this.attr('href');
	    var pageview = $this.attr('data-pageview');
	    
	    if (!href || !pageview) return;
	    
	    event.preventDefault();
	    
	    _gat._getTrackerByName()._trackPageview(pageview);
        setTimeout('document.location = "' + href + '"', 200);
	});
	
	$(".lightbox").fancybox({
	    titleShow: false
	});
	
	
	$(".inlinebox").fancybox({
        overlayOpacity: 0,
        scrolling: 'no'
	});
	
	$("a[rel=iframe]").fancybox( {
		type: 'iframe'
	});
	
	$("a.ytbox").click(function(e) {
		
		e.preventDefault();
		
		$.fancybox({
				'padding'		: 0,
				'autoScale'		: false,
				'overlayOpacity': 1,
				'showCloseButton': false,
				'transitionIn'	: 'none',
				'transitionOut'	: 'none',
				'title'			: this.title,
				'width'			: 853,
				'height'		: 480,
				'href'			: this.href.replace(new RegExp("watch\\?v=", "i"), 'v/'),
				'type'			: 'swf',
				'swf'			: {
				   	 'wmode'		: 'transparent',
					'allowfullscreen'	: 'true'
				}
			});	
	});
	
	/* Delayed inline boxes --- */
	
	$('.delayed-inlinebox').click(function(e) {
		
		var boxId = $(this).attr('data-inlinebox');
		
		if (!boxId) return;
		
		setTimeout(function()
		{
			if (typeof(_gaq) != "undefined") { _gaq.push(['_trackPageview', '/' + boxId]); }
			
			$('#' + boxId + ' a.load').each(function(){
				// Each box can have a link to a page that we load via AJAX and place it inside the box:
				var href = $(this).attr('href');
				if (href)
				{
					$(this).parent().load(href);
				}
			});
			
			$.fancybox({
			    titleShow: false,
				href: '#' + boxId
			});
			
		}, 1000);
	});
	
	/* Slider --------------- */
	
	$('#next-slide').click(function(event){
		
		event.preventDefault();
		
		var $selectedSlide = $('.selected-slide:first');
		$selectedSlide.fadeOut('fast', function() { 
			
			var $this = $(this);
			$this.removeClass('selected-slide');
			
			var nextSlide = $this.next();
			if (nextSlide.length == 0) nextSlide = $this.siblings(':first');
			nextSlide.fadeIn().addClass('selected-slide');
		});
		
		var $selectedMarker = $('.selected-slide-marker:first');
		var $nextMarker = $selectedMarker.next();
		if ($nextMarker.length == 0) $nextMarker = $selectedMarker.siblings(':first');
		$selectedMarker.removeClass('selected-slide-marker');
		$nextMarker.addClass('selected-slide-marker');
	});
	
	
	$('#previous-slide').click(function(event){
		
		event.preventDefault();
		
		var $selectedSlide = $('.selected-slide:first');
		$selectedSlide.fadeOut('fast', function() { 
			
			var $this = $(this);
			$this.removeClass('selected-slide');
			
			var previousSlide = $this.prev();
			if (previousSlide.length == 0) previousSlide = $this.siblings(':last');
			previousSlide.fadeIn().addClass('selected-slide');
		});
		
		var $selectedMarker = $('.selected-slide-marker:first');
		var $nextMarker = $selectedMarker.prev();
		if ($nextMarker.length == 0) $nextMarker = $selectedMarker.siblings(':last');
		$selectedMarker.removeClass('selected-slide-marker');
		$nextMarker.addClass('selected-slide-marker');
	});
	
	$('#intro-slides-controls a').click(function(event){
		
		event.preventDefault();
		
		var $selectedLi = $(this).parent();
		
		if ($selectedLi.hasClass('selected-slide-marker')) return;
		
		$('.selected-slide-marker').removeClass('selected-slide-marker');
		
		$selectedLi.addClass('selected-slide-marker');
		 
		var $otherSlide = $( $('#intro-slides li').get($selectedLi.index()) );
		
		$('.selected-slide').fadeOut('fast', function(){
			
			var $this = $(this);
			$this.removeClass('selected-slide');
			
			$otherSlide.fadeIn().addClass('selected-slide');
		});
		
	});
	
	// Table of contents
	
	$('#toc').each(function()
	{
		var $toc = $('<ul/>')
			
		var count = 0;
		$('h2, h3').each(function(){
			
			var $this = $(this);
			if ($this.attr('id') == 'mini-intro-subtitle') return;
			
			count++;
			
			$this.before('<a name="toc'+count+'"></a>');
			var $li = $('<li><a href="#toc'+count+'">' + $this.text() + '</a></li>');
			if (this.nodeName.toLowerCase() == 'h3')
			{
				$li.css('padding-left', '20px');
				$li.css('font-style'  , 'italic');				
			}
			$toc.append($li);
		});
		
		var $div = $('<div style="clear:both;"/>');	
		$(this).append('<h2>Table of contents</h2>').append($toc).append($div);
	});
	
});
