var guitar;
var presets;
var skins;
var alignment = 'vert';
function init()
{

	presets = 
	{
	guitar : ['E','A','D','G','B','E'],
	banjo : ['D','G','B','D'],
	ukulele : ['D','G','B','E'],
	mandolin : ['G','D','A','E']
	};
	
	skins = 
	{
		vert : {
			guitar : 'css/vert/guitar.css',
			banjo : 'css/vert/banjo.css',
			mandolin : 'css/vert/mandolin.css',
			ukulele : 'css/vert/ukulele.css'
		},
		horz : {
			guitar : 'css/horz/guitar.css',
			banjo : 'css/horz/banjo.css',
			mandolin : 'css/horz/mandolin.css',
			ukulele : 'css/horz/ukulele.css'
		}		
	}

	guitar = new Instrument( { container : 'guitar_neck',
							   chart_container : 'guitar_chart' } );

	set_alignment('vert');
	
	// set defaults
	var scale = ( document.location.href.indexOf('scale') >=0 || 
				  document.referrer.indexOf('scale') >= 0 );
	var form = (scale) ? document.getElementById('scalefinder_form') 
					   : document.getElementById('chordfinder_form');
	
	for (var i in presets) {
		if (document.location.href.indexOf( i ) >=0 || 
			document.referrer.indexOf( i ) >= 0
		) {
			form['presets'].value = i;
		}
	}
	
	if ( scale ) {
		// change to a scale finder
		scale_finder();
	} else {
		chord_finder();
	}
	
	set_alignment('vert');
}						

function get_chord()
{

	// get chord
	var tonic = document.getElementById('chordfinder_form')['tonic'].value;
	var chord_type = document.getElementById('chordfinder_form')['chordType'].value;
	var extension = document.getElementById('chordfinder_form')['extension'].value;
	var additions = [];
	for (var i=0; i<document.getElementById('chordfinder_form')['extras[]'].options.length; i++)
		if (document.getElementById('chordfinder_form')['extras[]'].options[i].selected)
			additions.push(document.getElementById('chordfinder_form')['extras[]'].options[i].value);
	var chord = new Chord(tonic,chord_type, {extension : extension, additions : additions} );
	guitar.highlight_notes = chord.chord_notes;
	guitar.chord = chord;

	// set config
	var tuning_preset = document.getElementById('chordfinder_form')['presets'].value;
	var tuning = (typeof presets[tuning_preset]!='undefined') ? presets[tuning_preset] : tuning = ['E','A','D','G','B','E'] ;				
	
	set_skin(tuning_preset);

	guitar.config.tuning = tuning;
	guitar.config.left_handed = 
		document.getElementById('chordfinder_form')['chord_lefthanded'].checked;

	// position
	var position_num = document.getElementById('chordfinder_form')['position'].value;
	if (typeof position_num!='undefined' && position_num!='') {
		var chord_position = new ChordPosition(chord,
											   guitar,
											   position_num,
										       {show_inversions : (tuning.length<=4)}
										      );
		var position = chord_position.positions[position_num-1]; 
		var fingering = chord_position.getFingering(position);
	}
	else {
		var position = null;
		var fingering = null;
	}
	
	guitar.position = position;
	guitar.fingering = fingering;
	
	if (alignment=='horz')
	{
		guitar.renderFretBoardHorizontal();
	} else
	{
		guitar.renderFretBoardVertical();
	}
	
	guitar.renderChordChart();
	
	
	// chord name
	document.getElementById('chord_name').innerHTML = '<h3>Your Chord: <em>' + chord.name + '</em></h3>';
	document.getElementById('chord_name').innerHTML += '<p><strong><em>' + chord.chord_notes.join(' - ') + '</em></strong></p>';
}

function get_scale()
{
	var scale = new Scale(document.getElementById('scalefinder_form')['key'].value,document.getElementById('scalefinder_form')['scale_type'].value);
	guitar.highlight_notes = scale.scale_notes;
        guitar.position = null;

	// set config
	var tuning_preset = document.getElementById('scalefinder_form')['presets'].value;
	var tuning = (typeof presets[tuning_preset]!='undefined') ? presets[tuning_preset] : tuning = ['E','A','D','G','B','E'] ;				
	
	set_skin(tuning_preset);
	
	guitar.config.tuning = tuning;
	guitar.config.left_handed = 
		document.getElementById('scalefinder_form')['scale_lefthanded'].checked;

	if (alignment=='horz')
	{
		guitar.renderFretBoardHorizontal();
	} else
	{
		guitar.renderFretBoardVertical();
	}
	
	// scale name
	document.getElementById('scale_name').innerHTML = '<h3>Your Scale: <em>' + scale.name + '</em></h3';
	document.getElementById('scale_name').innerHTML += '<p><strong><em>' + scale.scale_notes.join(' - ') + '</em></strong></p>';
	document.getElementById('guitar_chart').style.display = 'none';
}

function set_alignment(a)
{
	alignment = a;

        var sheets = ['ads','chordfinder'];
        for (var i=0; i<sheets.length; i++) {
            document.getElementById('style-' + sheets[i]).href = 'css/' + a + '/' + sheets[i] + '.css';
        }
	
	if ( document.getElementById('scale_finder').style.display != 'none')
	{
		scale_finder();
	} else if ( document.getElementById('chord_finder').style.display != 'none')
	{
		chord_finder();
	}
}

function set_skin(skin)
{
    // change style sheet
    document.getElementById('style-instrument').href = skins[alignment][skin];
}

function chord_finder()
{
	document.title = 'Chord Finder';
	document.getElementById('chord_finder').style.display = '';
	document.getElementById('scale_finder').style.display = 'none';
	document.getElementById('cfa').className = 'here';
	document.getElementById('sfa').className = '';
	get_chord();
}
function scale_finder()
{
	document.title = 'Scale Finder';
	document.getElementById('chord_finder').style.display = 'none';
	document.getElementById('scale_finder').style.display = '';
	document.getElementById('cfa').className = '';
	document.getElementById('sfa').className = 'here';				
	get_scale();
}

