var leftOffset = 0;
var lastKeyBlack = false;
var currentIndex = 0;
var chordInfo = "";



function urlencode(str) {
	str = escape(str);
	str = str.replace('%23', '-sharp');
	str = str.replace('+', '%2B');
	str = str.replace('%20', '+');
	str = str.replace('*', '%2A');
	str = str.replace('/', '%2F');
	str = str.replace('@', '%40');
	return str;
	}

function doubleSharp(str) {
	if (str == "BX2") str = "C#3";
	if (str == "BX3") str = "C#4";
	if (str == "BX4") str = "C#5";
	str = str.replace('AX','B');
	str = str.replace('BX','C#');
	str = str.replace('CX','D');
	str = str.replace('DX','E');
	str = str.replace('EX','F#');
	str = str.replace('FX','G');
	str = str.replace('GX','A');
	return str;
}

function EsharpBsharpFunc(str) {
	if (str == "E#2") str = "F2";
	if (str == "E#3") str = "F3";
	if (str == "E#4") str = "F4";
	if (str == "E#5") str = "F5";
	if (str == "B#2") str = "C3";
	if (str == "B#3") str = "C4";
	if (str == "B#4") str = "C5";
	return str;
}

function FflatCflatFunc(str) {
	if (str == "Cb3") str = "B2";
	if (str == "Cb4") str = "B3";
	if (str == "Cb5") str = "B4";
	if (str == "Fb2") str = "E2";
	if (str == "Fb3") str = "E3";
	if (str == "Fb4") str = "E4";
	if (str == "Fb5") str = "E5";
	return str;
}


function urldecode(str) {
	str = str.replace('+', ' ');
	str = unescape(str);
	return str;
}

function restoreOriginalNames() {
	$(".whiteKey .keyInner, .blackKey .sharpKey, .blackKey .flatKey").each(function(){
		if($(this).attr('originalName')) {
			var originalName = $(this).attr('originalName');
			$(this).text(originalName);
			$(this).removeAttr('originalName');
		}
	});
}


$(function(){
	$("#currentCats").append($("#cat-C"));
	$("#cat-C").show();
	
	
	
	
	
	var idNum = 0;
	// position Keys
	$("div.key").each(function(){
		idNum++;
		$(this).attr('id','key'+idNum);
		
		var spacing = 0;
		if (idNum > 1) spacing = 37;
		
		if (lastKeyBlack) {
			spacing = 17;
		}
		
		if($(this).hasClass('blackKey')) {
			 spacing = 17;
			 lastKeyBlack = true;
		}
		else {
			lastKeyBlack = false;
		}

		
		$(this).css('margin-left',leftOffset + spacing);
		
		leftOffset += spacing;
	});
	$("#pianoImage .key").show();
	

	
	
	
$(".whiteKey .keyInner, .blackKey .sharpKey, .blackKey .flatKey").click(function(){
	       $("#feedbackDiv").text("Move your mouse over the chord names to see the chord displayed on the piano image.");

			$(".chordChart").hide();
			var currentCat = "#cat-" + urlencode($(this).text());
			$("#currentCats").append($(currentCat));
			
			$(currentCat).show();
			$(currentCat).find("div.variation").hide().slideDown(400);
		
	
		
		var trackCode = "#" + urlencode($(this).text() + "_chords");
		
		window.location.href = "http://www.list-of-chords.com/dynamic_index.php" + trackCode;
		pageTracker._trackPageview(trackCode);
		
	  
		
		
		
	});

	$(".variation").mouseover(function(){
		chordInfo = $(this).attr('data');
		var chordName = "Chord Type: " + $(this).attr('longname');
		$("#feedbackDiv").text(chordName);
		showChord();
	});
	
	$("#pianoImage").mouseover(function(){
		restoreOriginalNames();
		$(".whiteKey .keyInner, .blackKey .sharpKey, .blackKey .flatKey").show();
		$("#feedbackDiv").text("Click on one of the piano notes to select a group of chords to view.");
	});

	
	
});



function showChord() {
	restoreOriginalNames();
	$(".whiteKey .keyInner, .blackKey .sharpKey, .blackKey .flatKey").hide();
	if (!chordInfo){
		chordInfo = "C4, E4, G4";
	}
	var chordInfoArray = chordInfo.split(", ");
	
	
	
	  jQuery.each(chordInfoArray, function() {
		  var doubleSharpPattern = eval("/[A-G]X[2-5]/");
		  var EsharpBsharp = eval("/(E|B)#[2-5]/");
		  var FflatCflat = eval("/(F|C)b[2-5]/");
		  if (doubleSharpPattern.test(this)){
			  var keyID = "#" + urlencode(doubleSharp(this));
			  
			  replaceKeyName(keyID,this);
		  }
		  else if (EsharpBsharp.test(this)) {
			  var keyID = "#" + urlencode(EsharpBsharpFunc(this));
			
			  replaceKeyName(keyID,this);
		  }
		  else if(FflatCflat.test(this)) {
			  var keyID = "#" + urlencode(FflatCflatFunc(this));
				
			  replaceKeyName(keyID,this);
		  }
		  
		  else {
			  var keyID = "#" + urlencode(this);
		      $(keyID).show();
		  }
		  
	      
	    });

	
	
}

function replaceKeyName(keyID,newName) {
	  $(keyID).show();
	  var originalName = $(keyID).text();
	  $(keyID).attr('originalName',originalName);
	  
	  var thisName = newName.substring(0,2);
	  $(keyID).text(thisName);
}
