/*
 * Glig Text Generator
 *
 * Copyright (c) 2010, glig.com All Rights Reserved
 */

var selected_font;

$(document).ready(function()
{
    select_letter_set(1);

    $("#font_matrix > .entry").click(function()
    {
        select_letter_set(this.id.substr(1));
    });

    $("#enter_area textarea").keyup(function()
    {
        handle_key_press();
    });

    $("#enter_area textarea").click(function()
    {
        if($(this).val() === "Enter your text")
        {
            $(this).empty();
            handle_key_press();
        }
    });

    $(".code").click(function()
    {
        this.focus();
        this.select();
    });
});

var in_handler = false;

function handle_key_press()
{
    if(in_handler)
        return;

    in_handler = true;

    glig.defer("process_key_update()", 300);
}

function process_key_update()
{
    var text = $("#enter_area > textarea").val();

    $("#preview_area").html(generate_code(text));
    $("#generated_html").text(generate_html_code(text));
    $("#generated_bb").text(generate_bb_code(text));

    in_handler = false;
}

function select_letter_set(id)
{
    selected_font = id;

    $("#font_matrix > .entry").removeClass("selected");
    $("#font_matrix #f" + id).addClass("selected");

    var text = $("#enter_area > textarea").val();

    $("#preview_area").html(generate_code(text));
    $("#generated_html").text(generate_html_code(text));
    $("#generated_bb").text(generate_bb_code(text));

    $("#font_description").html(letter_sets[id]["description"] || "&nbsp;");
}

function generate_code(text)
{
    var letter_set = letter_sets[selected_font];
    var label = letter_set["label"];

    var str = "";

    for(i = 0; i < text.length; i++)
    {
        ch = text.charAt(i).toLowerCase();

        if(ch >= 'a' && ch <= 'z')
            str += "<img src='http://text.glig.net/" + label + "/" + ch + ".gif' border=0>";
        else if(ch == '\n')
            str += "<br>";
        else
            str += "<img src='http://text.glig.net/space.gif' width=20 height=1 border=0>";
    }

    return str;
}

function generate_html_code(text)
{
    if(!text)
        return "No code yet, please type something!";

    // @@@@ consider URL-shortening?

    var code = "<a href='http://graphics.glig.com/generators/text'>";
    code += generate_code(text);
    code += "</a>";

    return code;

}

function generate_bb_code(text)
{
    var letter_set = letter_sets[selected_font];
    var label = letter_set["label"];

    if(!text)
        return "Yeah, we're waiting for you. Hurry up!";

    var str = "";
    str = "[url=http://graphics.glig.com/generators/text]";

    for(i = 0; i < text.length; i++)
    {
        ch = text.charAt(i).toLowerCase();

        if(ch >= 'a' && ch <= 'z')
            str += "[img]http://text.glig.net/" + label + "/" + ch + ".gif[/img]";
        else if(ch == '\n')
            str += "\n";
        else
            str += "[img]http://text.glig.net/space.gif width=20 height=1>[/img]";
    }

    return str;
}

