// RobinWords Game code
var used_words = new Array();

function mark_as_used(word) {
    if (used_words.length > 0) {
        used_words[used_words.length] = word;
    } else {
        used_words[0] = word;
    }
}

function add_to_screen(word, who) {
    var el = new Element('p', {
        'class': 'word ' + who,
        'html': '<a href="http://dictionary.reference.com/browse/' + word + '" target="_blank">' + word + '</a>'
    });
    el.fade('hide').inject($('words'), 'bottom').fade(1);
}

function check_if_unused(word) {
    if (used_words.indexOf(word) == -1) {
        return 1;
    } else {
        return 0;
    }
}

function check_if_exists(word) {
    if (word_list.indexOf(word) == -1) {
        return 0;
    } else {
        return 1;
    }
}

function check_if_correct(current_word) {
    var previous = used_words[used_words.length - 1];
    var same_letters = 0;
    if (current_word.charAt(0) == previous.charAt(0)) {
        same_letters = same_letters + 1;
    }
    if (current_word.charAt(1) == previous.charAt(1)) {
        same_letters = same_letters + 1;
    }
    if (current_word.charAt(2) == previous.charAt(2)) {
        same_letters = same_letters + 1;
    }
    if (current_word.charAt(3) == previous.charAt(3)) {
        same_letters = same_letters + 1;
    }
    if (same_letters == 3) {
        return 1;
    } else {
        return 0;
    }
}

function show_error(type) {
    $('entry').set('disabled', 'disabled');
    $('entry_area').setStyle('display', 'none');
    if (type == 'notallowed') {
        $('errors').set('text', 'You can only change one letter at a time.');
    } else if (type == 'notreal') {
        $('errors').set('text', 'That is not a real four-letter word.');
    } else if (type == 'alreadyused') {
        $('errors').set('text', 'That word has already been used.');
    }
    $('errors').fade(1);
    var s = setTimeout(function waiting() {
        $('errors').fade('hide');
        $('entry_area').setStyle('display', 'block');
        $('entry').set('value', '');
        $('entry').set('disabled', '');
        $('entry_area').fade(.0001);
        $('entry_area').fade(1);
        $('entry').focus();
    }, 2000);
}

function all_cuss_words(words) {
	var swear_words = Array('fuck', 'shit', 'cunt', 'dick', 'damn', 'crap', 'mong', 'gook', 'kike', 'spic', 'dyke', 'arse', 'hell', 'wang', 'wank', 'muff', 'puss', 'shag', 'heck', 'slut', 'turd', 'jizz', 'piss', 'twat', 'tits');
	
	var chosen_word = words[Math.floor(Math.random() * (words.length - 1))];
	
	var all_cuss = true;
	
	var i=0;
	for(i=0;i<=(2 * words.length);i++) {
		if(swear_words.indexOf(chosen_word)!=-1) {
			chosen_word = words[Math.floor(Math.random() * (words.length - 1))];
		} else {
			return false;
		}
	}
	return true;
}

window.addEvent('domready', function () {
    $('errors').fade('hide');
    $('javascript').setStyle('display', 'none');
    $('entry').focus();
    var first_word = word_list[Math.floor(Math.random() * 2552)];
    mark_as_used(first_word);
    add_to_screen(first_word, 'computer');
    $('entry_form').addEvent('submit', function (e) {
        e.stop();
        var entered_word = $('entry').get('value');
        if (check_if_unused(entered_word)) {
            if (check_if_exists(entered_word)) {
                if (check_if_correct(entered_word)) {
                    mark_as_used(entered_word);
                    add_to_screen(entered_word, 'person');
                    $('entry').set('value', '');
                    $('entry').set('disabled', 'disabled');
                    var possible_words = new Array();
                    var i;
                    for (i = 0; i <= 2552; i = i + 1) {
                        var previous = used_words[used_words.length - 1];
                        var same_letters = 0;
                        if (previous.charAt(0) == word_list[i].charAt(0)) {
                            same_letters = same_letters + 1;
                        }
                        if (previous.charAt(1) == word_list[i].charAt(1)) {
                            same_letters = same_letters + 1;
                        }
                        if (previous.charAt(2) == word_list[i].charAt(2)) {
                            same_letters = same_letters + 1;
                        }
                        if (previous.charAt(3) == word_list[i].charAt(3)) {
                            same_letters = same_letters + 1;
                        }
                        if (check_if_unused(word_list[i]) == 0) {
                            same_letters = same_letters - 5;
                        }
                        if (same_letters == 3) {
                            possible_words[possible_words.length] = word_list[i];
                        }
                    }
                    if (possible_words.length < 1 || all_cuss_words(possible_words)) {
                        $('score_one').set('html', used_words.length);
                        $('entry_area').setStyle('display', 'none');
                        $('win').fade(0);
                        $('win').setStyle('display', 'block');
                        $('win').fade(1);
                        var scroll = new Fx.Scroll(window, {
                            wait: false,
                            duration: 750,
                            transition: Fx.Transitions.Quad.easeInOut
                        });
                        scroll.toElement($('win'));
                        return 0;
                    }
					
					var swear_words = Array('fuck', 'shit', 'cunt', 'dick', 'damn', 'crap', 'mong', 'gook', 'kike', 'spic', 'dyke', 'arse', 'hell', 'wang', 'wank', 'muff', 'puss', 'shag', 'heck', 'slut', 'turd', 
'jizz', 'piss', 'twat', 'tits');
					
                    var chosen_word = possible_words[Math.floor(Math.random() * (possible_words.length - 1))];
					
					var i=0;
					for(i=0;i<=10;i++) {
						if(swear_words.indexOf(chosen_word)!=-1) {
							chosen_word = possible_words[Math.floor(Math.random() * (possible_words.length - 1))];
						}
					}
					
					
                    var t = setTimeout(function waiting() {
                        mark_as_used(chosen_word);
                        add_to_screen(chosen_word, 'computer');
                        $('entry').set('disabled', '');
                        $('entry').focus();
                        var possible_words = new Array();
                        var i;
                        for (i = 0; i <= 2552; i = i + 1) {
                            var previous = used_words[used_words.length - 1];
                            var same_letters = 0;
                            if (previous.charAt(0) == word_list[i].charAt(0)) {
                                same_letters = same_letters + 1;
                            }
                            if (previous.charAt(1) == word_list[i].charAt(1)) {
                                same_letters = same_letters + 1;
                            }
                            if (previous.charAt(2) == word_list[i].charAt(2)) {
                                same_letters = same_letters + 1;
                            }
                            if (previous.charAt(3) == word_list[i].charAt(3)) {
                                same_letters = same_letters + 1;
                            }
                            if (check_if_unused(word_list[i]) == 0) {
                                same_letters = same_letters - 5;
                            }
                            if (same_letters == 3) {
                                possible_words[possible_words.length] = word_list[i];
                            }
                        }
                        if (possible_words.length < 1) {
                            $('score_two').set('html', used_words.length);
                            $('entry_area').setStyle('display', 'none');
                            $('lose').fade(0);
                            $('lose').setStyle('display', 'block');
                            $('lose').fade(1);
                            var scroll = new Fx.Scroll(window, {
                                wait: false,
                                duration: 750,
                                transition: Fx.Transitions.Quad.easeInOut
                            });
                            scroll.toElement($('lose'));
                            return 0;
                        }
                        var theheight = 0;
                        if (typeof(window.innerWidth) == 'number') {
                            theheight = window.innerHeight
                        } else if (document.documentElement && (document.documentElement.clientHeight)) {
                            theheight = document.documentElement.clientHeight
                        } else if (document.body && (document.body.clientHeight)) {
                            theheight = document.body.clientHeight
                        }
                        if (theheight < (220 + 65 * (used_words.length + 1))) {
                            var scroll = new Fx.Scroll(window, {
                                wait: false,
                                duration: 750,
                                transition: Fx.Transitions.Quad.easeInOut
                            });
                            scroll.toElement($('entry'));
                        }
                    }, 1500);
                } else {
                    show_error('notallowed');
                }
            } else {
                show_error('notreal');
            }
        } else {
            show_error('alreadyused');
        }
    });
});
