/**
 * tour.js
 *
 * Copyright (c) 2010 by Benjamin Ragheb <ben@benzado.com>
 */

function hashPartOf(url) {
	return url.substring(url.indexOf('#'));
}

function tabLinkClicked() {
	var tabID = hashPartOf(this.href);
	$('#tab_menu a')
		.removeClass('current')
		.filter('[href$=' + tabID + ']')
		.addClass('current');
	$('div.tab').hide();
	$(tabID + '_tab').show();
	return true;
}

function screenLinkClicked(elt, dir) {
	var allScreens = $(elt).parents('div.screenshot').children('img');
	var oldScreen = allScreens.filter('.current');
	var newIndex = 0;
	var oldIndex = allScreens.index(oldScreen[0]);
	if (oldIndex != -1) {
		newIndex = oldIndex + dir;
		if (newIndex < 0) newIndex = allScreens.length - 1;
		if (newIndex >= allScreens.length) newIndex = 0;
	}
	var newScreen = allScreens.eq(newIndex);
	oldScreen.removeClass('current').hide();
	newScreen.addClass('current').show();
	$(elt).parents('div.screenshot').find('span')
		.text(' ' + (newIndex + 1) + ' of ' + allScreens.length + ' ');
	return false;
}

function nextScreenLinkClicked() {
	return screenLinkClicked(this, 1);
}

function prevScreenLinkClicked() {
	return screenLinkClicked(this, -1);
}

function documentReady() {
	var allTabs = $('div.tab');

	allTabs.each(function(i){
		// Create Menu Items
		var item = document.createElement('a');
		item.innerText = $(this).children(':header').text();
		item.href = '#' + this.id;
		$('#tab_menu').append(item);
		
		// Hide Tab
		$(this).hide();
		
		// Add Next Link (to Previous Item)
		if (i > 0) {
			var item = document.createElement('a');
			item.innerText = 'Next';
			item.href = '#' + this.id;
			var p = document.createElement('p');
			p.className = 'nextlink';
			p.appendChild(item);
			$(allTabs[i-1]).children("div:last").append(p);
		}

		// Change IDs to Avoid Scroll Jumping
		this.id += '_tab';
	});
	
	// All Links
	$('a[href*=#]').click(tabLinkClicked);
	
	$('div.screenshot').each(function(){
		var allScreens = $(this).children('img');
		if (allScreens.length > 1) {
			allScreens.hide();
			var nextLink = document.createElement('a');
			nextLink.innerText = '>>';
			nextLink.href = '#';
			nextLink.onclick = nextScreenLinkClicked;
			var prevLink = document.createElement('a');
			prevLink.innerText = '<<';
			prevLink.href = '#';
			prevLink.onclick = prevScreenLinkClicked;
			var note = document.createElement('span');
			var p = document.createElement('div');
			p.appendChild(prevLink);
			p.appendChild(note);
			p.appendChild(nextLink);
			this.appendChild(p);
			screenLinkClicked(nextLink, 0);
			allScreens.click(nextScreenLinkClicked);
		}
	});
	
	if (window.location.hash.length > 0) {
		$('#tab_menu a[href$=' + window.location.hash + ']').click();
	} else {
		$('#tab_menu a').eq(0).click();
	}
}

$(document).ready(documentReady);

