/*
 * (c) 2009 Martin Edlman
 * inspired by http://makedatamakesense.com/transposer/
 */

$(document).ready(function(){

	var sharp = 0;

	$lyrics = $(".fancy-lyrics");
	$chords = $lyrics.find(".chord");
	if($chords.length == 0 ) return;

	$("#transpose").show();
	$chords.each(function() {
		var $chord = $(this);
		var chord = $chord.text();
		var tmp = chord.length >= 2 ? (chord[1] == "b" || chord[1] == "#" ? 2 : 1) : 1;
		var base = chord.substring(0, tmp);
		var tail = chord.substring(tmp, chord.length);
		if(base[0] == "H")
			base = base.replace("H","B");
		$chord.data("base", base);
		$chord.data("tail", tail);
		if($chord.text().indexOf('#') > -1) sharp = 1;
	});
	$lyrics.data("transpose_value", 0);
	$lyrics.data("transpose_table", sharp ?
		new Array('C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B') :
		new Array('C', 'Db', 'D', 'Eb', 'E', 'F', 'Gb', 'G', 'Ab', 'A', 'Bb', 'B'));
		
	$("a#transup").click(function(event) {
		transpose(1);
		event.preventDefault();
	});
	$("a#transdown").click(function(event) {
		transpose(-1);
		event.preventDefault();
	});
	$("a#transreset").click(function(event) {
		transpose(0);
		event.preventDefault();
	});
	                                        
	function transpose(ud) {
		var table = $lyrics.data("transpose_table");
		var trans = ud == 0 ? 0 : $lyrics.data("transpose_value") + ud;
		$lyrics.data("transpose_value", trans);
		$chords.each(function() {
			$chord = $(this);
			var base = $chord.data("base");
			var idx = table.indexOf(base);
			if(idx < 0) {
				$chord.css("color", "white").css("background", "red");
				return;
			}
			idx += trans;
			while(idx >= table.length) idx -= table.length;
			while(idx < 0) idx += table.length;
			$chord.text(table[idx] + $chord.data("tail"));
		});
	}

});

