	/* Review Pagination
	--------------------------------------------------------*/
	var review_page_links = new Array ();
	var loading_review_page = false;
	var fetching_review_page_number = false;
	var review_location = false;
	var init_reviews = function () {
		$$('#reviews .pages a').each (function (element, index) {
			review_page_links.push (element);

			element.addEvent ('click', function () {
				// Send the AJAX request
				new Request.HTML ({
					url: '/reviews_builder.php',
					method: 'get',
					data: {
						'family_id': $('book_card').className.match (/book_([0-9]+)/)[1],
						'page': element.get ('href').substr (element.get ('href').lastIndexOf ('#') + 1)
					},
					onRequest: function () {
						// For optimization reasons, keep track of when we're loading
						loading_review_page = true;
					},
					onComplete: function (responseTree, responseElements, responseHTML, responseJavaScript) {
						// Because the height could change...
						$('reviews').getParent ('.tab_content').setStyle ('height', '');

						// Stuff the reviews with the new HTML for itself
						$('reviews').set ('html', responseHTML);

						// Scroll to the top
						if (review_location)
						{
							load_tab (1);
							window.location = review_location;
							review_location = false;
						}
						else
						{
							window.location = '#reviews';
						}

						// Re-initialize the queue
						init_reviews ();

						// Done loading!
						loading_review_page = false;
					}
				}).send ();
			}).onclick = function () { return false; };
		});

		load_review_check = function () {
			// Don't do anything if we're loading a review page
			if (loading_review_page || fetching_review_page_number)
			{
				return false;
			}

			var review_id = window.location.toString ().match (/\#load_review_([0-9]+)/);

			// Not much else we can do without a review_id!
			if (!review_id)
			{
				return;
			}
			else
			{
				review_id = review_id[1];
			}

			// On current page?
			if ($chk($('review_' + review_id)))
			{
				// Load the views tab
				load_tab (1);

				// Go to that review
				(function () {
					new Fx.Scroll(window).toElement('review_' + review_id);
					(function () {
						window.location = '#review_' + review_id;
					}).delay (1000);
				}).delay (750); // 750 matches tabbed_interface.options.duration in _script.globals.js
			}
			else
			{
				new SAB_Request ({
					url: '/review_page_fetcher.php',
					method: 'get',
					data: {
						'review_id': review_id
					},
					onRequest: function () {
						fetching_review_page_number = true;
					},
					onComplete: function () {
						fetching_review_page_number = false;
					},
					autoHidePrompts: true,
					onStatusSuccess: function (result_obj) {
						// Click the page button to load the right review page
						// This all we have to do because load_review_check executes
						// every 500ms, so when the page finally loads, it'll just
						// navigate there on its own
						review_page_links[result_obj.page_number].fireEvent ('click');

						review_location = '#review_' + review_id;
					}
				}).send ();
			}
		};

		load_review_check.periodical (750);

		// Enable the large pitch buttons
		$$('.pitch_buttons a.add, .pitch_buttons a.pick').each (function (a_obj, index) {
			a_obj.addEvent ('click', pick_edition).onclick = return_false;
		});

	};

	init_events.push (init_reviews);
