﻿var bool_ingame;
var game_over = false;
bool_ingame = false;
var incorrect_letters = 0;
var correct_letters = 0;
var allowed_strikes = 0;
var letters = new Array(26);
var puzzle_complete = false;
var g_str_target_word = '';
var g_int_target_word_length = 0;


function show_game_area() {
    document.getElementById('instructions').style.visibility = 'hidden';
    //document.getElementById('definition').style.visibility = 'hidden';
    document.getElementById('status_area').style.visibility = 'visible';
    document.getElementById('game_area').style.visibility = 'visible';
}

function start_game_custom(userid, code) {
    
    var str_target_area = ''
    var i;
    var idx_letter = 0;
    bool_ingame = true;
    // pick a word
    g_str_target_word = '';
    g_str_target_word = get_custom_word(userid, code);
    if (g_str_target_word == "NOTFOUND") {
        // do nothing - don't start the game there was an error.
        alert("There was an error getting a word from the custom word list.  Please try again or use a different custom game code.");
    }
    else {
        // -------------------
        g_int_target_word_length = g_str_target_word.length;
        g_str_target_word = g_str_target_word.toLowerCase();

        // check for multiple words.  if there are multiple words we cant go over 20 chars per line
        var splitwords = g_str_target_word.split(" ");
        
        if (splitwords.length > 1) {
            // multiple word puzzle - make it wrap correctly
            letter_count = 0;
            temp_letter_count = 0;
            idx_letter = 0;
            for (i = 0; i < (splitwords.length); i++) {
                temp_letter_count = splitwords[i].length;
                letter_count += temp_letter_count;
                if ((letter_count) > 20) {
                    // need to wrap before adding word
                    str_target_area += "<br />"
                    // reset our counter for the new line we just created.
                    letter_count = 0;
                    temp_letter_count = 0;
                }
                for (j = 0; j < splitwords[i].length; j++) {
                    idx_letter++;
                    str_target_area += '<img id="letter_' + (idx_letter) + '" src="./images/blank.jpg" >&nbsp;&nbsp;';
                }
                // add some space between words
                // put in a non visible blank tile for the word seperator - this keeps everything aligned correctly
                if (i < splitwords.length-1) {
                    idx_letter++;
                    correct_letters++; // preset some correct letter to make up for spaces.
                    str_target_area += '<img id="letter_' + (idx_letter) + '" src="./images/blank.jpg" style="visibility: hidden; display: none;" >';
                }
                str_target_area += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
            }
            
            
        }
        else {
            // one word puzzle.  Go ahead and process here.
            for (i = 1; i <= g_int_target_word_length; i++) {
                // just one word.  go ahead and process
                if (g_str_target_word[i] == " ") {
                    str_target_area += "&nbsp;&nbsp;&nbsp;&nbsp;";
                    str_target_area += '<img id="letter_' + (i) + '" src="./images/blank.jpg" style="visibility: hidden;">';
                }
                else {
                    str_target_area += '<img id="letter_' + (i) + '" src="./images/blank.jpg" >&nbsp;&nbsp;';
                }
            }
            correct_letters = 0;
        }




        //---------------    
        incorrect_letters = 0;
        
        document.getElementById('target_word').innerHTML = str_target_area;
        document.getElementById('hid_target_word').value = g_str_target_word;
    }

}

function start_game(gametype) {

    var str_target_area = ''
    var i;

    var letter_count = 0;
    var temp_letter_count = 0;
    var cur_word_length = 0;

    bool_ingame = true;
    // pick a word
    g_str_target_word = '';
    g_str_target_word = get_target_word(gametype);
    g_int_target_word_length = g_str_target_word.length;
    str_target_area = '';
    
    str_target_area = "<b>Target Word</b><br>";

    // check for multiple words.  if there are multiple words we cant go over 20 chars per line
    var splitwords = g_str_target_word.split(" ");
    if (splitwords.length > 1) {
        // multiple word puzzle - make it wrap correctly
        letter_count = 0;
        temp_letter_count = 0;
        for (i = 0; i < (splitwords.length - 1); i++) {
            temp_letter_count = splitwords[i].length;
            letter_count += temp_letter_count;
            if ((letter_count) > 20) {
                // need to wrap before adding word
                str_target_area += "<br />"
                // reset our counter for the new line we just created.
                letter_count = 0;
                temp_letter_count = 0;
            }
            for (j = 1; j <= splitwords[j].length; j++) {
                str_target_area += '<img id="letter_' + (i) + '" src="./images/blank.jpg" >&nbsp;&nbsp;';
            }
        }
        // add some space between words
        str_target_area += "&nbsp;&nbsp;&nbsp;&nbsp;";
    }
    else {
        // one word puzzle.  Go ahead and process here.
        for (i = 1; i <= g_int_target_word_length; i++) {
            // just one word.  go ahead and process
            if (g_str_target_word[i] == " ") {
                str_target_area += "&nbsp;&nbsp;&nbsp;&nbsp;";
                str_target_area += '<img id="letter_' + (i) + '" src="./images/blank.jpg" style="visibility: hidden;">';
            }
            else {
                str_target_area += '<img id="letter_' + (i) + '" src="./images/blank.jpg" >&nbsp;&nbsp;';
            }
        }
    }
    incorrect_letters = 0;
    correct_letters = 0;
    document.getElementById('target_word').innerHTML = str_target_area;
    document.getElementById('hid_target_word').value = g_str_target_word;

}


function play_game_with_code_click() {

    document.getElementById('intro_screen').style.visibility='hidden';
    document.getElementById('game_start_button').style.visibility='hidden';
    document.getElementById('game_play_screen').style.visibility='visible';
    document.getElementById('status_area').style.visibility = 'visible';
    // split the array
    var strCode = document.getElementById('txtCustomCode').value;
    var strSplitCode = strCode.split("_");
    
    start_game_custom(strSplitCode[0], strSplitCode[1]);
}


function get_stats() {

    var obj_xmlhttp;

    if (window.XMLHttpRequest) {
        obj_xmlhttp = new XMLHttpRequest()
    }
    else {
        if (window.ActiveXObject) {
            obj_xmlhttp = new ActiveXObject('MSXML2.XMLHTTP.3.0');
        }
    }

    obj_xmlhttp.open("POST", "update-stats.aspx", false);
    obj_xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    obj_xmlhttp.send('');
    document.getElementById('score_area').innerHTML = obj_xmlhttp.responseText;


}

function update_stats(stattype) {
    var obj_xmlhttp;

    if (window.XMLHttpRequest) {
        obj_xmlhttp = new XMLHttpRequest()
    }
    else {
        if (window.ActiveXObject) {
            obj_xmlhttp = new ActiveXObject('MSXML2.XMLHTTP.3.0');
        }
    }

    obj_xmlhttp.open("POST", "update-stats.aspx", false);
    obj_xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    if (stattype == 'correct') {
        obj_xmlhttp.send('puzzlestatus=CORRECT');
    }
    else {
        obj_xmlhttp.send('puzzlestatus=INCORRECT');
    }

}

function get_custom_word(userid, code) {

    
    var obj_xhmhttp;
    var selected_word = '';
    var backup_words = ["baseball", "golf", "drink", "develop", "camera", "access", "automobile", "trunk", "pencil", "toothbrush", "family", "music", "modify", "values", "groceries"];
    if (window.XMLHttpRequest) {
        obj_xmlhttp = new XMLHttpRequest()
    }
    else {
        if (window.ActiveXObject) {
            obj_xmlhttp = new ActiveXObject('MSXML2.XMLHTTP.3.0');
        }
    }

    allowed_strikes = 6;
    obj_xmlhttp.open("POST", "ajax_get_word.aspx", false);
    obj_xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    obj_xmlhttp.send('userid=' + userid + '&code=' + code);
    selected_word = obj_xmlhttp.responseText;

    if (selected_word == "NOTFOUND") {
        alert("The code you entered doesn't match any of our custom word lists.  Please verify your code and try again.");

    }

    if (selected_word == "") {
        selected_word = backup_words[Math.floor(Math.random() * 15)];
    }
    return (selected_word);

}



function get_target_word(gametype) {

    var obj_xhmhttp;
    var selected_word = '';
    var backup_words = ["baseball", "golf", "drink", "develop", "camera", "access", "automobile", "trunk", "pencil", "toothbrush", "family", "music", "modify", "values", "groceries"];
    if (window.XMLHttpRequest) {
        obj_xmlhttp = new XMLHttpRequest()
    }
    else {
        if (window.ActiveXObject) {
            obj_xmlhttp = new ActiveXObject('MSXML2.XMLHTTP.3.0');
        }
    }

    allowed_strikes = 6;
    obj_xmlhttp.open("POST", "ajax_get_word.aspx", false);
    obj_xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    obj_xmlhttp.send('gametype=' + gametype);
    selected_word = obj_xmlhttp.responseText;
    if (selected_word == "") {
        selected_word = backup_words[Math.floor(Math.random() * 15)];
    }
    return (selected_word);

}

function guess_letter(str_letter) {

    var i = 0;
    var str_current_letter = '';
    var str_output = '';
    var letter_hit = false;

    // check to see if the game is already over
    if (game_over == true) {
        return (false);
    }

    // make sure that the letter has not already been picked

    if (document.getElementById('letter_board_' + str_letter).src == 'http://www.justhangman.com/images/blank.jpg') {
        return (false);
    }
    if (document.getElementById('letter_board_' + str_letter).src == 'http://justhangman.com/images/blank.jpg') {
        return (false);
    }

    letter_hit = false;
    // if it is in the word then fill in the blank image
    for (i = 0; i <= g_int_target_word_length + 1; i++) {
        str_current_letter = g_str_target_word.substring(i, i + 1);

        if (str_current_letter == str_letter) {
            document.getElementById('letter_' + (i + 1)).src = './images/' + str_letter + '.jpg';
            letter_hit = true;
            correct_letters++;
        }
    }

    if (letter_hit == false) {
        incorrect_letters++;

        document.getElementById('blank_' + incorrect_letters).src = './images/' + str_letter + '.jpg';
        document.getElementById('img_hangman').src = './images/hangman_' + incorrect_letters + '.gif';
    }

    if (incorrect_letters == allowed_strikes) {
        // game is over they didn't get the word
        bool_ingame = false;
        update_stats("incorrect");
        str_output = 'Incorrect. <br> The word was: <span style="color: red;"><b>' + g_str_target_word.toUpperCase() + '</b></span><br><br>';
        var customgame = getQuerystring('custom');
        if (customgame=='yes') {
            str_output += '<a href="./default.aspx?action=play&custom=yes&userid=' + getQuerystring("userid") + '&code=' + getQuerystring("code") + '"><img src="./images/play_again.gif" border="0">';
        }
        else {
            str_output += '<a href="./default.aspx?action=play"><img src="./images/play_again.gif" border="0">';
        }
        game_over = true;

        document.getElementById('game_status_message').innerHTML = str_output;
        document.getElementById('game_status_message').style.visibility = 'visible';
        
        // show the definition
        document.getElementById('definition').style.visibility = 'visible';
    }

    if (correct_letters == g_int_target_word_length) {
        // they got the word.  end the game
        bool_ingame = false;
        update_stats("correct");
        game_over = true;
        
        str_output = 'Correct! <br><span style="color: Green;"><b>' + g_str_target_word.toUpperCase() + '</b></span><br><br>';
        //str_output += '<a href="./default.aspx?action=play"><img src="./images/play_again.gif" border="0">';
        var customgame = getQuerystring('custom');
        if (customgame == 'yes') {
            str_output += '<a href="./default.aspx?action=play&custom=yes&userid=' + getQuerystring("userid") + '&code=' + getQuerystring("code") + '"><img src="./images/play_again.gif" border="0">';
        }
        else {
            str_output += '<a href="./default.aspx?action=play"><img src="./images/play_again.gif" border="0">';
        }
        
        document.getElementById('game_status_message').innerHTML = str_output;
        document.getElementById('game_status_message').style.visibility = 'visible';
        
        document.getElementById('definition').style.visibility = 'visible';

    }

    document.getElementById('letter_board_' + str_letter).src = './images/blank.jpg';

}

function setFocus(control) {
    document.getElementById(control).focus();
}

function getQuerystring(key, default_) {
    if (default_ == null) default_ = "";
    key = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regex = new RegExp("[\\?&]" + key + "=([^&#]*)");
    var qs = regex.exec(window.location.href);
    if (qs == null)
        return default_;
    else
        return qs[1];
}
