(function() {
	var h = 0;
	var containers = [];
	jQuery.fn.instrumentSelector = function() {
		var cookie_contents = jQuery.cookie('lessons_instrument');
		if(cookie_contents == null) cookie_contents = '-';
		var instrument = cookie_contents.split('-')[0];
		var lefty = (cookie_contents.split('-')[1] == 'lh');
		this.each(function(){
			var container = jQuery(this);
			containers.push(container);
			var menuCode = function() { 
				h += 1;
				var html = '';
				html += '<div class="instrument-header">Choose an instrument to see supplemental materials for it:</div>';
				html += '<div class="instrument-selection instrument-setup">';
				jQuery.each(['guitar', 'mandolin', 'fiddle', 'banjo', 'dobro', 'bass'], function(i, inst) {
						html += '<div><input type="radio" name="instrument_'+h+'[]"'+(inst==instrument?' checked="checked"':'')+' value="'+inst+'" id="instrument_select_'+h+'_'+inst+'" /> <label for="instrument_select_'+h+'_'+inst+'">'+inst.charAt(0).toUpperCase()+inst.slice(1)+'</label></div>';
				});
				html += '</div>'; 
				html += '<div class="handedness-header hide">Left-handed or no?</div>';
				html += '<div class="handedness-selection instrument-setup hide">';
				html += '    <div><input type="radio" name="handedness_'+h+'[]"'+(!lefty?' checked="checked"':'')+' value="right" id="handedness_select_right_'+h+'" /> <label for="handedness_select_right_'+h+'">Right-handed</label></div>';
				html += '    <div><input type="radio" name="handedness_'+h+'[]"'+( lefty?' checked="checked"':'')+' value="left" id="handedness_select_left_'+h+'" /> <label for="handedness_select_left_'+h+'">Left-handed</label></div>';
				html += '</div>'; 
				html += '<div class="buttons"><button class="instrument_setup_ok">OK</button>';
				if(instrument)
					html += ' <button class="instrument_setup_cancel" class="small gray">Cancel</button>'; 
				html += '</div>'; 
				return jQuery('<div class="instrument-setup-container">' + html + '</div>');
			};
			var selectedInstrumentCode = function() {
				var html = '';
				html += '<div class="selected-instrument '+instrument+'">';
				/*
				html += '<div>Showing materials for <br /><strong>'+pluralize(instrument)+'</strong>';
				if (lefty) {
					html += ' strung <strong>left-handed</strong>.</div>';
				} else {
					html += ' strung normally.</div>';
				};
				*/
				html += '<div>Showing <strong>'+instrument+'</strong> materials.';
				html += '<a href="#" class="nounderline">Change instrument</a>';
				html += '</div>';
				return jQuery(html);
			};
			var pluralize = function(name) {
				if(name == 'bass') {
					return 'basses';
				} else {
					return name + 's';
				};
			};
			var showISM = function() {
				jQuery('.ism').hide();
				jQuery('.ism.' + instrument + (lefty ? ':not(.rh)' : ':not(.lh)')).show();
				jQuery('.only-' + (lefty ? 'lh' : 'rh')).show();
				jQuery('.only-' + (lefty ? 'rh' : 'lh')).hide();
				jQuery('.ism.all').show();
				jQuery('.ism .instrument').html(instrument);
			};
			var hideISM = function() {
				jQuery('.ism').hide();
			};
			var showInstrumentSelector = function() {
				hideISM();
				container.hide();
				container.html(menuCode());
				if( !/MSIE 6/i.test(navigator.userAgent) ) {
					container.find('.instrument-setup input').customInput();
				}; // this is why we hide/show the container
				container.show();
			};
			
			if(instrument) {
				showISM();
				container.html(selectedInstrumentCode(instrument));
			} else {
				showInstrumentSelector();
			};
			
			container.find('button.instrument_setup_cancel').live('click', function(event) {
				showISM();
				containers.each(function(c) { c.html(selectedInstrumentCode()); });
				event.preventDefault();
			});
			
			container.find('button.instrument_setup_ok').live('click', function(event) {
				instrument = jQuery(this).closest('.instrument-setup-container').find('.instrument-selection input:checked').val();
				lefty = ('left' == jQuery(this).closest('.instrument-setup-container').find('.handedness-selection input:checked').val());
				jQuery.cookie('lessons_instrument', instrument + (lefty ? '-lh' : '-rh'), { path: '/', expires: 365 });
				showISM();
				containers.each(function(c) { c.html(selectedInstrumentCode()); });
				event.preventDefault();
			});
			
			container.find('.selected-instrument a').live('click', function(event) {
				showInstrumentSelector();
				event.preventDefault();
			});
		});
		return this;
	};
})();