$(document).ready(function () {
	
	var phrases = new Array();
	var phrases;
	var chances;
	var backgroundPosition;
	var finished;
	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'];
	var	letters_a = ['á','à','â','ã'];
	var	letters_e = ['é','è','ê','õ'];
	var	letters_i = ['í','ì','î'];
	var	letters_o = ['ó','ò','ô','õ'];
	var	letters_u = ['ú','ù','û'];
	var	letters_n = ['ñ'];
	var	letters_c = ['ç'];
	var	letters_s = ['ß'];

	$('.letter').live('click',function () {
		check_letter($(this).text(),true);
	});

	$('.new_game').live('click',function () {
		load_activity();
	});
	
	$(window).keyup(function(event) {
		letter = String.fromCharCode(event.keyCode).toLowerCase();
		if ( jQuery.inArray(letter, letters) >= 0 ) {
			check_letter(String.fromCharCode(event.keyCode).toLowerCase(),true);
		} else if (finished && (event.keyCode == 13 || event.keyCode == 32)) {
			load_activity();
			return false;
		}
	});
	
	var check_letter = function (letter,score) {
		if (!finished) {
			if ( letter == 'a' ) {
				$.each(letters_a, function(index, value) {
					check_letter(value,false);
				});
			} else if ( letter == 'e' ) {
				$.each(letters_e, function(index, value) {
					check_letter(value,false);
				});
			} else if ( letter == 'i' ) {
				$.each(letters_i, function(index, value) {
					check_letter(value,false);
				});
			} else if ( letter == 'o' ) {
				$.each(letters_o, function(index, value) {
					check_letter(value,false);
				});
			} else if ( letter == 'u' ) {
				$.each(letters_u, function(index, value) {
					check_letter(value,false);
				});
			} else if ( letter == 'n' ) {
				$.each(letters_n, function(index, value) {
					check_letter(value,false);
				});
			} else if ( letter == 'c' ) {
				$.each(letters_c, function(index, value) {
					check_letter(value,false);
				});
			} else if ( letter == 's' ) {
				$.each(letters_s, function(index, value) {
					check_letter(value,false);
				});
			}
			$('.alphabet .'+letter ).fadeTo('slow',0.1);
			if ( $('.board .'+letter ).length ) {
				$('.board .'+letter ).text(letter);
				$('.board .'+letter ).removeClass('still');
			} else {
				if (score != false) {
					backgroundPosition = backgroundPosition - 131;
					$('.drawing').css('backgroundPosition', '0px '+(backgroundPosition)+'px' );
					chances--;
				}
			}
			if (chances < 0 || !$('.still').length) {
				show_translation();
				$('.translation').append( $('<span class="audio autoplay"/>').html(phrase.audio) );
				loadAudio();
				finished = true;
				if (chances < 0) {
					$('.alphabet').after( $('<div class="new_game"/>').html("You lost! New Game") );
				} else if (!$('.still').length) {
					$('.alphabet').after( $('<div class="new_game"/>').html("You won! New Game") );
				}
			}
		}
	}
	
	var show_translation = function () {
		if (!$('.translation').length) {
			$('.show_translation').remove();
			content.append( $('<div class="translation"/>').html(phrase.translation) );
		}
	}
	
	$('.show_translation').live('click', function () {
		show_translation();
		return false;
	});

	var load_activity = function () {
		phrase = get_phrase();
		chances = 6;
		backgroundPosition = 0;
		finished = false;
		if (phrase) {
			$('.new_game').remove();
			if ($('.alphabet').length) {
				content = $('.board .content');
				content.empty();
				$('.drawing').css('backgroundPosition', '0px 0px' );
			} else {
				board = $('<div class="board">');
				content = $('<div class="content"/>');
				board.append(content);
				board.append( $('<span class="drawing"/>') );
				$('.activity').append(board);
			}
			$.each(phrase.original.split(""), function(index, value) {
				if (value == ' ') {
					content.append( $('<span class="letter space"> </span>') );
				} else if (value == '.') {
					content.append( $('<span class="letter space">.</span>') );
				} else if (value == ',') {
					content.append( $('<span class="letter space">,</span>') );
				} else if (value == "'") {
					content.append( $('<span class="letter space">\'</span>') );
				} else if (value == "!") {
					content.append( $('<span class="letter space">!</span>') );
				} else if (value == "-") {
					content.append( $('<span class="letter space">-</span>') );
				} else if (value == "?") {
					content.append( $('<span class="letter space">?</span>') );
				} else {
					content.append( $('<span class="letter '+value.toLowerCase()+' still">_</span>') );
				}
			});
			if ($('.alphabet').length) {
				$('.letter').fadeTo("slow",1);
				loadAudio();
			} else {
				board.after( $('<div class="alphabet"/>') );
				$.each(letters, function(index, value) {
					$('.alphabet').append( $('<span class="letter '+value+'">'+value+'</span>') );
					if (value == 'p' || value == 'l') {
						$('.alphabet').append( $('<br/>') );
					}
				});
			}
			content.append( '<a href="#" class="show_translation">Show translation</a>' );
		}
	}

	var get_phrase = function () {
		$.ajax({
			async: false,
			type: 'post',
			url: '/hangman/phrase/',
			success: function (data) {
				phrase = data;
			},
			dataType: "json"
		});
		return phrase;
	}
	load_activity();
});
