$(document).ready(function () {
	var lessons = new Array();
	var lesson;
	var scores;
	var level = 'easy';
	var key;
	var word;
	var position;
	var score_streak = 0;
	var score_correct = 0;
	var score_incorrect = 0;
	$('.lesson_picker').live('change', function () {
		load_lesson($('#lesson_id').val());
		$('.lesson_crumb').attr('href','/lesson/plan/'+$('#lesson_id').val()+'/'+$('.lesson_picker').val());
		$('.lesson_crumb').text($('.lesson_picker').val());
	});
	$('.tense_picker').live('change', function () {
		load_activity();
	});
	$('.person').live('click',function () {		
		if ( $('.correct').length ) {
			load_activity();
		} else {
			if (word == key.conjugations[$('#tense').val()][$(this).index('.person')]) {
			 	$(this).addClass('correct');
				lesson.words.splice(1,0,key);
				score_correct++;
				score_streak++;		
				$('.your_score').animate({
					backgroundColor:"#c1ffdc"
				},89,function () {
					$('.your_score').animate({
						backgroundColor:"#fff"
					},233)
				});
			} else {
			 	$(this).addClass('incorrect');
			 	$('.person:eq('+position+')').addClass('correct');
				lesson.words.splice((lesson.words.length - 2),0,key);
				score_incorrect++;
				score_streak = 0;
				$('.your_score').animate({
					backgroundColor:"#ffecef"
				},89,function () {
					$('.your_score').animate({
						backgroundColor:"#fff"
					},233)
				});
			}
			key = null;
			$('.person').fadeTo(0,0.62);
			$('.correct').fadeTo(0,1);
			$('.incorrect').fadeTo(3400,0.89);
			$('.correct').append( $('<br/>') );
			$('.incorrect').append( $('<br/>') );
			$('.correct').append( $('<span class="sprite white_arrow"/>') );
			$('.incorrect').append( $('<span class="sprite white_arrow"/>') );
			update_score();
		}
	});
	var update_score = function () {
		$('.your_score .score_streak').html(score_streak);
		$('.your_score .score_correct').html(score_correct);
		$('.your_score .score_incorrect').html(score_incorrect);
		if ((score_streak % 25) == 0 && score_streak) {
			$.ajax({
				async: false,
				type: 'post',
				url: '/conjugation_trainer/streak/'+$('#lesson_id').val()+'/'+score_correct+'/'+score_incorrect+'/'+score_streak,
				success: function (data) {
					var streak = $('<div id="streak">').html('<span class="number">'+score_streak+'</span>Word Streak!'+data.streak).hide().click(function(){ window.location=data.streak_url });
					$('.header').before(streak.fadeIn("slow"));
				},
				dataType: "json"
			});
		} else {
			$('#streak').fadeOut("slow",function () {
				$('#streak').remove()
			});
		}
	}
	$('#prompt').live('keyup', function () {	
		if ( $('.correct').length ) {
		} else {
			if (word == $('#prompt').val() ) {
				$('#prompt').blur();
				$('#next').val('Next');
				$('#prompt').addClass('correct');
				score_correct++;
				score_streak++;
				update_score();
			} else {
				$('#prompt').removeClass('correct');
			}
		}
	});
	$('#next').live('click', function () {	
		if ( $('.correct').length || $('.incorrect').length ) {
			load_activity();
		} else {
			$('#prompt').val(word);
			$('#prompt').addClass('incorrect');
			score_incorrect++;
			score_streak = 0;
			update_score();
			$('#next').val('Next');
		}
	});
	$('.level').live('click',function () {
		if (!$(this).hasClass('selected')) {
			set_level( $(this).attr('id') );
			load_activity();
		}
	});
	var set_level = function (level_local) {
		$('.level').remove();
		$('.types').append( $('<div class="type level" id="easy">Easy</div>') );
		$('.types').append( $('<div class="type level" id="hard">Hard</div>') );
		$('#'+level_local).addClass('selected');
		level = level_local;	
	}
	var get_level = function () {
		if ( $('.level').length ) {
			return $('.level.selected').attr('id');
		} else {
			return level;
		}
	}
	var load_key = function () {
		if ($('#tense').val()) {
			words = lesson.words;
			key = words.pop();
			var tense = $('#tense').val();
			conjugations = key.conjugations[tense];
			position = Math.floor(Math.random()*conjugations.length);
			word = conjugations[position];
			return key;
		}
	}
	var load_hard = function () {
		if ($('#tense').val()) {
			$('.key').remove();
			$('.persons').remove();
			key = load_key();
			key_div = $('<div class="key">').append('<div class="directions">Type the correct conjugation for the pronoun give:</div>');
			i = 0;
			$.each(lesson.pronouns, function(index, value) {
				if (i == position) {
					new_position = Math.floor(Math.random()*value.length);
					$.each(value, function(index, value) {
						if (index == new_position) {
							pronoun = value;
						}
					});
				}
				i++;
			});
			var prompt = $('<span class="prompt_container"/>')
			prompt.append( $('<input type="text" name="prompt" id="prompt"/>').attr('value',key.key) );
			prompt.append( $('<input type="submit" name="next" id="next" value="Show Answer"/>') );
			prompt.append(  $('<div class="dictionary"/>').html('<a href="/word/'+key.id+'/'+key.key+'">'+key.key+'</a> - '+key.definition).append( $('<span class="audio autoplay"/>').html(key.audio) ) );
			key_div.append($('<label for="prompt"/>').html(pronoun));
			key_div.append(prompt);
			$('.header').after(key_div);
			loadAudio();
			$('#prompt').focus();
		}
	}
	var load_easy = function () {
		if ($('#tense').val()) {
			$('.key').remove();
			key = load_key();
			key_div = $('<div class="key">').html('<div class="directions">Choose the correct pronouns for the conjugated verb:</div>');
			key_div.append( $('<span class="content"/>').html(word) );
			key_div.append( $('<span class="audio autoplay"/>').html(key.audio) );
			key_div.append(  $('<div class="dictionary"/>').html('<a href="/word/'+key.id+'/'+key.key+'">'+key.key+'</a> - '+key.definition) );
			$('.header').after(key_div);
			loadAudio();
			$('.persons').remove();
			$('.key').after( $('<div class="persons"/>') );
			$('.persons').append('<h3>Choose Correct Pronoun(s):</h3>');
			$.each(lesson.pronouns, function(index, value) {
				person = $('<span class="person"/>');
				$.each(value, function(index, value) {
					person.html( person.html()+'<br/>'+value );
				});
				$('.persons').append(person);
			});
			$('.person').css('width', ( (($('.key').width() - (( $('.person').length - 4) * 8) ) / $('.person').length) - 2)+ 'px' );
		}
	}

	var load_activity = function () {
		if (key) {
			lesson.words.splice(1,0,key);
		}
		if (get_level() == 'easy') {
			load_easy();
		} else if (get_level() == 'hard') {
			load_hard();
		}
	}
	var load_scores = function () {
		if (get_scores()) {
			if ( !$('.scores_container').length ) {
				$('.conjugation_trainer').after( $('<div class="scores_container section_container"/>') );
			} else {
				$('.scores_container').empty();
			}
			$('.scores_container').append( $('<h2>High Scores</h2>') );
			$('.scores_container').append( $('<div class="scores section"><table/></div>') );
			$('.scores table').prepend('<tr class="score your_score"><td><a href="'+scores.user.url+'"><img src="'+scores.user.photo+'" alt="'+scores.user.name+'" class="medium_user" /><span class="name">'+scores.user.name+'</span></a></td><td class="num score_streak">'+score_streak+'</td><td class="num score_correct">'+score_correct+'</td><td class="num score_incorrect">'+score_incorrect+'</td></tr>');
			$('.scores table').prepend( $('<tr><th>User</th><th>Streak</th><th>Correct</th><th>Incorrect</th></tr>') );
			if (scores.scores.length) {
				$.each(scores.scores, function(index, value) {
					render_score(value);
				});
			} else {
				$('.scores table').append( $('<tr><td class="message" colspan="5">Be the first to get a high score!</td></tr>') );
			}
			$('.scores tr:even').css('background-image','url("http://www.onlinelanguagehelp.com/media/images/transparent_light_gray.png")');
		}
	}
	var get_scores = function () {
		score_streak = 0;
		score_correct = 0;
		score_incorrect = 0;
		$.ajax({
			async: false,
			type: 'post',
			url: '/conjugation_trainer/scores/'+$('#lesson_id').val(),
			success: function (data) {
				scores = data;
			},
			dataType: "json"
		});
		return scores;
	}
	var render_score = function (value) {
		$('.scores table').append('<tr class="score"><td><a href="/profile/'+value.user.id+'/'+value.user.name+'"><img src="'+value.user.photo+'" alt="'+value.user.name+'" class="medium_user"/><span class="name">'+value.user.name+'</span><span class="date">'+value.date+'</span></a></td><td class="num score_streak">'+value.streak+'</td><td class="num score_correct">'+value.correct+'</td><td class="num score_incorrect">'+value.incorrect+'</td></tr>');
	}
	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);
			$('.tense_picker_container').load('/conjugation_trainer/tense_picker/'+lesson_id,'', function () {
				dyn_init();
				dyn_select();
				set_level(level);
			});
			$.shuffle(lesson.words);
			set_level(level);
			load_activity();
			load_scores();
			$('.link_arrow').attr('href','/lesson/plan/'+ $('#lesson_id').val()+'/'+ $('.dyn_picker_selected').val());
		}
	}
	var get_lesson = function (lesson_id) {
		if ($('#lesson_id').val()) {
			if (!lessons[lesson_id]) {
				$.ajax({
					async: false,
					type: 'post',
					url: '/conjugation_trainer/lesson/'+lesson_id,
					success: function (data) {
						lessons[lesson_id] = data;
					},
					dataType: "json"
				});
			}
			return lessons[lesson_id];
		}
	}
	load_lesson($('#lesson_id').val());
});