$(document).ready(function () {
	
	var lessons = new Array();
	var lesson;
	var type = 'vocabulary';
	var key;
	var first;
	var protected_lesson;
	var definitions;
	var toggleTextText = 'Hide Text';
	var toggleTextState = 'inline';
	
	$('.lesson_picker').change(function () {
		load_lesson($('#lesson_id').val());
		$('.lesson_crumb').text($('.lesson_picker').val());
		$('.lesson_crumb').attr('href','/lesson/plan/'+$('#lesson_id').val()+'/'+$('.lesson_picker').val());
		$('.category_crumb').text($('.category_picker').val());
		$('.category_crumb').attr('href','/lesson/'+$('#category').val()+'/'+$('.category_picker').val());
		$('.lesson_picker').siblings('.dyn_picker_options').children('.dyn_picker_option').hide();
		$('.lesson_picker').siblings('.dyn_picker_options').children('.'+$('.category_picker').val()).show();
		$('.category_picker').live('change', function () {	
			$('.lesson_picker').siblings('.dyn_picker_options').children('.dyn_picker_option').hide();
			$('.lesson_picker').siblings('.dyn_picker_options').children('.'+$('.category_picker').val()).show();
			$('.lesson_picker').val('');
			$('.lesson_picker').css('background-image','none');
			$('.lesson_picker').css('padding-left','3px');
			$('.lesson_picker').css('padding-right','30px');
			setTimeout( function () {
				$('.lesson_picker').val('Choose Lesson...');
				$('.lesson_picker').focus();
			},1000);
		});
	});
	
	$('.definition').live('click',function () {		
		if ( $('.correct').length ) {
			load_content();
		} else {
			if ( $(this).hasClass('id'+key.id) ) {
				$(this).addClass('correct');
				$('.key').animate({
					backgroundColor:"#31eb73"
				},144,function () {
					$('.key').animate({
						backgroundColor:"#fff"
					},233)
				});
			} else {
				$(this).addClass('incorrect');
				$('.id'+key.id).addClass('correct');
				if ((first.length - 2) > 0) {
					i = (first.length - 2);
				} else {
					i = 0;
				}
				first.splice(i,0,key);				
				$('.key').animate({
					backgroundColor:"#ee9396"
				},144,function () {
					$('.key').animate({
						backgroundColor:"#fff"
					},233)
				});
			}
			progress = (1 - (first.length / (protected_lesson.length * 2)));
			$('.progress').css('width',(progress*100)+'%');
			$('.definition').fadeTo(0,0.62);
			$('.correct').fadeTo(0,1);
			$('.incorrect').fadeTo(3400,0.89);
			$('.correct').append( $('<span class="sprite white_arrow"/>') );
			$('.incorrect').append( $('<span class="sprite white_arrow"/>') );
		}
	});
	
	$('.type').live('click',function () {
		if (!$(this).hasClass('selected')) {
			set_type( $(this).attr('id') );
			load_definitions();
		}
	});
	
	$('.toggleText').live('click',function () {
		toggleText();
	});
	
	var toggleText = function () {
		if (toggleTextState == 'inline') {
			toggleTextState = 'none';
			toggleTextText = 'Show Text';
		} else {
			toggleTextState = 'inline';
			toggleTextText = 'Hide Text';
		}
		toggleTextControl();
	}
	
	var toggleTextControl = function () {
		$('.key .content').css('display',toggleTextState);
		$('.toggleText').text(toggleTextText);
	}
	
	var get_type = function () {
		if ( $('.type').length ) {
			return $('.type.selected').attr('id');
		} else {
			return type;
		}
	}
	
	var set_type = function (type_local) {
		$('.type').remove();
		if (lesson.phrases.length < 5 || lesson.words.length < 5) {
			$('.types').fadeOut();
			if (lesson.phrases.length > 5) {
				type_local ='phrases';
			} else {
				type_local ='vocabulary';
			}
		} else {
			$('.types').append( $('<div class="type" id="vocabulary">Vocabulary</div>') );
			$('.types').append( $('<div class="type" id="phrases">Phrases</div>') );
			$('.types').fadeIn();
		}
		$('#'+type_local).addClass('selected');
		type = type_local;
		$('.progress_container').remove();
		$('.activity h3').remove();
		$('.definitions').after( $('<div class="progress_container">').append( $('<div class="progress">') ) );
		$('.definitions').before('<h3>Choose Correct Translation:</h3>');
		$('.progress_container').before('<h3>Lesson Progress:</h3>');
	}

	var load_key = function () {
		if (first.length) {
			return first.pop();
		} else {
			$('.definitions').empty();
			$('.key').remove();
			$('.activity h3').remove();
			if (lesson.message != 'no access') {
				$('.progress_container').empty().append( $('<h2>'+finished_lesson($('#lesson_id').val())+'</h2>') );
			} else {
				$('.progress_container').empty().append( $('<h2><a href="/lesson/plan/'+$('#lesson_id').val()+'/'+$('.lesson_picker').val()+'">'+$('.lesson_picker').val()+'</a> is a premium lesson.</h2><p><a href="/purchase" class="start_button">Buy Premium Membership</a><br/><br/>Get access to premiem content for <b><a href="/purchase">only $21.99</a></b>.</p>') );
			}
		}
	}

	var finished_lesson = function (lesson_id) {
		var message = '';
		$.ajax({
			async: false,
			type: 'post',
			url: '/flash_cards/finish/'+lesson_id,
			success: function (data) {
				message = data.message;
			},
			dataType: "json"
		});
		return message;
	}
	
	var load_definition = function () {
		n = Math.floor(Math.random()*protected_lesson.length);
		if ($.inArray(protected_lesson[n], definitions) != -1) {
			return load_definition();
		} else {
			return protected_lesson[n];
		}
	}

	var load_content = function () {
		key = load_key();
		if (! $('.progress_container h2').length ) {
			definitions[0] = key;
			definitions[1] = load_definition();
			definitions[2] = load_definition();
			definitions[3] = load_definition();
			$.shuffle(definitions);
			$('.key').remove();
			key_div = $('<div class="key">');
			if (key.translit) {
				key_div.append( $('<span class="content"/>').html(key.key+' ('+key.translit+')') );
			} else {
				key_div.append( $('<span class="content"/>').html(key.key) );
			}
			key_div.append( $('<span class="audio autoplay"/>').html(key.audio) );
			if (key.audio) {
				key_div.append( $('<span class="toggleText">Hide Text</span>'));
			}
			$('.header').after(key_div);
			loadAudio();
			$('.definition').remove();
			$.each(definitions, function(index, value) {
				$('.definitions').append( $('<div class="definition"/>').html(value.definition).addClass('id'+value.id) );
			});
			toggleTextControl();
		}
	}
	
	var load_definitions = function () {
		if (get_type() == 'vocabulary') {
			$.shuffle(lesson.words);
			protected_lesson = new Array().concat(lesson.words);
			first = new Array().concat(lesson.words).concat(lesson.words);
		} else if (get_type() == 'phrases') {
			$.shuffle(lesson.phrases);
			protected_lesson = new Array().concat(lesson.phrases);
			first = new Array().concat(lesson.phrases).concat(lesson.phrases);
		}
		definitions = new Array();
		load_content();
	}

	var load_lesson = function (lesson_id) {
		lesson = get_lesson( $('#lesson_id').val() );
		if (lesson) {
			$('.lesson_image').attr('src',lesson.image);
			$('.activity .lesson_link').attr('href',lesson.link);
			if (lesson.phrases.length >= (lesson.words.length * .8)) {
				set_type('phrases');
			} else {
				set_type('vocabulary');
			}
			load_definitions();
		}
	}

	var get_lesson = function (lesson_id) {
		if (!lessons[lesson_id]) {
			$.ajax({
				async: false,
				type: 'post',
				url: '/flash_cards/lesson/'+lesson_id,
				success: function (data) {
					lessons[lesson_id] = data;
				},
				dataType: "json"
			});
		}
		return lessons[lesson_id];
	}

	load_lesson($('#lesson_id').val());
});