$(document).ready(function () {
	
	var lessons = new Array();
	var lesson;
	var words = new Array;
	var board = new Array;
	var	letters = ['q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m','á','à','â','ã','é','è','ê','õ','í','ì','î','ó','ò','ô','õ','ú','ù','û','ñ','ç'];

	$('.hidden').live('click',function () {
		$(this).removeClass('hidden');
		if (!$('.'+$(this).attr('class')).hasClass('hidden')) {
			var tmp_word = $(this).attr('class')
			$('.keys .'+tmp_word).fadeTo("slow",0.3);
			$('.jungle .'+tmp_word).css("font-weight","bold");
		}
		$(this).addClass('found');
		if (!$('.hidden').length) {
			$('.jungle').after( $('<div class="new_game"/>').html("You won! New Game") );
		}
	});
	
	$('.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());
		$('.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);
		});
	});

	$('.new_game').live('click',function () {
		load_lesson($('#lesson_id').val());
	});

	var load_lesson = function (lesson_id) {
		lesson = get_lesson( $('#lesson_id').val() );
		if (lesson.message == 'no access') {
			$('.jungle').before( $('<div class="progress_container"><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></div>') ).remove();
		} else if (lesson) {
			$('.lesson_image').attr('src',lesson.image);
			$('.activity .lesson_link').attr('href',lesson.link);
			$('.progress_container').remove();
			$.shuffle(lesson.words);
			var limit = 8;
			if (lesson.words.length < 8) {
				limit = lesson.words.length;
			}
			words = new Array;
			board = new Array;
			board.length = 13;
			for (i=0;i<13;i++) {
				board[i] = new Array;
				board[i].length = 13;
			}
			
			if ( $('.jungle').length ) {
				$('.jungle').empty();
			} else {
				$('.activity .header').after( $('<div class="jungle"/>') );
			}
			if ( $('.keys').length ) {
				$('.keys').empty();
			} else {
				$('.activity .jungle').after( $('<div class="keys"/>') );
			}
			$('.keys').append( $('<h3/>').text('Definitions') );
			for (i=0;i<limit;i++) {
				place_word(lesson.words[i].key);
				$('.keys').append( $('<div class="entry"/>').html(lesson.words[i].definition).addClass(lesson.words[i].key.replace(' ','_') ) );
			}
			table = $('<table/>');
			$.each(board, function(index, value) {
				tr = $('<tr/>');
				$.each(value, function(index_n, value_n) {
					if (!value_n) {
						r = (Math.floor(Math.random()*(letters.length)));
						tr.append( $('<td/>').html(letters[r]) );
					} else {
						if (value_n[0] == ' ') {						
							r = (Math.floor(Math.random()*(letters.length)));
							tr.append( $('<td class="hidden"/>').html(letters[r]) );
						} else {
							tr.append( $('<td class="hidden"/>').html(value_n[0]).addClass(value_n[1].replace(' ','_')) );
						}
					}
				});
				table.append(tr);
			});
			$('.jungle').append(table);
			$('.link_arrow').attr('href','/lesson/plan/'+ $('#lesson_id').val()+'/'+ $('.dyn_picker_selected').val());
		}
	}
	
	var place_word = function (word) {
		n_letters = word.length;
		word_split = word.split("");
		horizontal = (Math.floor(Math.random()*2));
		n = (Math.floor(Math.random()*(13 - n_letters)));
		m = (Math.floor(Math.random()*13));
		if (all_clear(n_letters,m,n)) {
			for (j=0;j<n_letters;j++) {
				if (horizontal == 1) {
					board[m][j+n] = [word_split[j],word];
				} else {
					board[j+n][m] = [word_split[j],word];
				}
			}
		} else {
			place_word(word);
		}
	}
	
	var all_clear = function (n_letters,m,n) {
		for (j=0;j<n_letters;j++) {
			if (horizontal == 1) {
				if (board[m][j+n]) {
					return false;
				}
			} else {
				if (board[j+n][m]) {
					return false;
				}
			}
		}
		return true;
	}

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

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