function add_marker(marker, map, place, location, notice) {

  GEvent.addListener(marker, "click", function() {
    marker.openInfoWindowHtml("<b>" + place + "</b><br />" + location + "<div class='mapper'>" + notice + "</div>");
  });

  map.addOverlay(marker);
}


function toggle_requirements(ident) {
	$(ident).toggle();
}

function select_tutorial(ident) {
	hide_all_by_class('tutoriable');
	var selectables = getElementsByClass('selectable');
	for (var i = 0; i < selectables.length; i++) {
		selectables[i].removeClassName('selected');
	}
	$('thumbnail_' + ident).addClassName('selected');
	$(ident).show();
}

function swap_profile(ident) {
	hide_all_by_class('profile_content_item');
	var selectables = getElementsByClass('profile_item');
	for (var i = 0; i < selectables.length; i++) {
		selectables[i].removeClassName('selected_profile_item');
	}
	$(ident + "_container").addClassName('selected_profile_item');
	
	var selectables = getElementsByClass(ident + '_profile_content');
	for (var i = 0; i < selectables.length; i++) {
		selectables[i].show();
	}
	
	initialize_maps();
}

function swap_support(ident) {
	hide_all_by_class('support_content_item');
	$(ident + "_content").show();
	var selectables = getElementsByClass('support_item');
	for (var i = 0; i < selectables.length; i++) {
		selectables[i].removeClassName('selected_support_item');
	}
	$(ident + "_container").addClassName('selected_support_item');
}

function swap_features(ident) {
	hide_all_by_class('feature_content');
	
	var selectables = getElementsByClass('feature_link');
	for (var i = 0; i < selectables.length; i++) {
		selectables[i].removeClassName('selected');
	}
	$(ident + "_link").addClassName('selected');
	$(ident + "_content").show();
}

function select_image(ident) {
	$('main_gallery').src = "/images/" + ident + ".png";
	var selectables = getElementsByClass('selectable');
	for (var i = 0; i < selectables.length; i++) {
		selectables[i].removeClassName('selected');
	}
	$('thumbnail_' + ident).addClassName('selected');
}

function swap_to(ident) {
	hide_all_swaps();
	var link = document.getElementById(ident + "_link"); 
	document.getElementById(ident + '_pinpoint').style.display = 'block'
	document.getElementById(ident).style.display = 'block';
}
function swapBookList_to(ident) {
	hide_all_swapsBookList();
        var selected = getElementsByClass(ident);
        document.getElementById(ident + '_pinpoint').style.display = 'block'
        selected[0].style.display = 'block';
}
// Prototype.js
function PTSwapDevice_to(ident) {
	hide_all_swaps();
        $('li_mac').removeClassName('active');
        $('li_ipad').removeClassName('active');
        $('li_iphone').removeClassName('active');
	$('li_' + ident).addClassName('active');
	document.getElementById(ident).style.display = 'block';
}
function swapDevice_to(ident) {
	var swaps = getElementsByClass('swappable');
	for (var i = 0; i < swaps.length; i++) {
		swaps[i].style.display = "none";
	}
        $('#li_mac').removeClass('active');
        $('#li_ipad').removeClass('active');
        $('#li_iphone').removeClass('active');
	$('#li_' + ident).addClass('active');
	document.getElementById(ident).style.display = 'block';
}
function hide_all_swapsBookList() {
	hide_all_by_class('booklist');
}
function hide_all_swaps() {
	hide_all_by_class('swappable');
}

function hide_all_by_class(classname) {
	var swaps = getElementsByClass(classname);
	for (var i = 0; i < swaps.length; i++) {
		swaps[i].style.display = "none";
	}
}

function initialize() {
	var incoming = window.location.hash.replace(/#/, '');
	if (incoming == '') {
		make_it_so();
	} else {		
		make_it_show(incoming);
	}	
}

function make_it_show(incoming) {
	make_it_so();
	show(incoming);
}

function make_it_so() {
	var links = getElementsByClass('section_link');
	for (var i = 0; i < links.length; i++) {
		links[i].onclick = function() {
			toggle(this);
			return false;
		}
	}
}

function toggle(link) {
	var id = link.href.match(/#(\w.+)/)[1];
	show(id);
}

function show(ident) {
	hide_all();
	document.getElementById(ident).style.display = 'block';
}

function hide_all() {
	var pages = getElementsByClass('page');
	for (var i = 0; i < pages.length; i++) {
		pages[i].style.display = 'none';
	}
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}
