String.prototype.trim = function() {
    // Trim from beginning
    a = this.replace(/^\s+/, '');
    // Trim from end
    a = a.replace(/\s+$/, '');
    // Get rid of duplicate spaces...
    return a.replace(/\s+/g, ' ');
};

$(document).ready(function() {
  $('#convert').click(function() {
    $('<div class="tulemus">' + convert() + '</div>')
        .insertAfter( $("#convert") )
        .slideDown('slow')
        .animate({opacity: 1.0}, 8000)
        .fadeOut('slow', function() {$(this).remove();});
  });
  // Do not fire events on enter press..
  $('#converter').submit(function() { return false; });
});

function convert() {
    var errmsg = false;
    var msg = "Et arvutada kui palju on 23 eurot Eesti kroonides, sisesta aknasse&#160;&#160;&#160;<b>23 eur eek</b> <br />ja kliki nuppu&#160;&#160;&#160;'arvuta kurss'";
    var debug;
    var formula = $('#formula').val().trim();
    var items = formula.split(' ');
    var sum, from, to;
    if (formula.length >= 8 && items.length == 3) {
        // Get our covertable amount...
        if (isNaN(items[0])) {
            errmsg = "Viga: \"" + items[0] + "\" ei ole number!";
        } else {
            sum = items[0];
        }
        // Get FROM amount...
        if (!errmsg) {
            from = $("#" + items[1].toUpperCase()).children(".rate").text();
            if (items[1].toUpperCase() == 'EEK') {
                from = 1;
            } else if (!from || isNaN(from)) {
                errmsg = "Viga: Valuutat \"" + items[1] + "\" ei leitud.";
            }
        }
        if (!errmsg) {
            to = $("#" + items[2].toUpperCase()).children(".rate").text();
            if (items[2].toUpperCase() == 'EEK') {
                to = 1;
            } else if (!to || isNaN(to)) {
                errmsg = "Viga: Valuutat \"" + items[2] + "\" ei leitud.";
            }
        }
    } else {
        errmsg = " ";
    }
    // Build output...
    if (errmsg) {
        msg = errmsg + '<br />' + msg;
    } else {
        // Calculate...
        var tot = sum * (from / to);
        msg = sum + " " + items[1] + " = " + tot.toFixed(2) + " " + items[2];
    }
    // Debug info...
//    msg = msg + "<br />DEBUG: " + items + " - " + items.length + " - " + from + " | " + to;
    // Return message
    return msg;
}
