// ==UserScript==
// @name Kingdom of Loathing 
// @namespace http://www.mrchucho.net/index.php/kol
// @description Adds keyboard commands to Kingdom of Loathing
// @description interface. More to come!
// @include http://kingdomofloathing.com/*
// @include http://*.kingdomofloathing.com/*
// ==/UserScript==
(function() {

    var runAway = "r";
    var attack = "a";
    var useItem = "i";
    var useSkill = "s";
    var adventureAgain = "a";
    var goBack = "b";

    var KOLHelper = {
        duringCombat: function() {
            // find a with href = adventure.php* or Javascript:document.againform.submit()
            // "Go BacK" a with innerHTML = ^Go back*
            // load the character pane
                // create form lookup
                var myForms = [];
                for(var f=0;f<document.getElementsByTagName("form").length;f++) {
                    myForms[document.getElementsByTagName("form")[f].name] = f;
                }
                try {
                    for(var i=0;i<document.getElementsByTagName("input").length;i++) {
                        var button = document.getElementsByTagName("input")[i];
                        if(button.type.match(/[sS]ubmit/)) {
                            var parentForm = button.form;
                            var newLink = document.createElement("a");
                            newLink.href="javascript:document.forms["+myForms[parentForm.name]+"].submit();";
                            if(button.value.match(/[rR]un [aA]way/)) {
                                newLink.accessKey = runAway;
                            } else if(button.value.match(/[aA]ttack [wW]/)) {
                                newLink.accessKey = attack;
                            } else if(button.value.match(/[uU]se [iI]tem/)) {
                                newLink.accessKey = useItem;
                            } else if(button.value.match(/[uU]se [sS]kill/)) {
                                newLink.accessKey = useSkill;
                            }

                            newLink.innertHTML = "&nbsp;";
                            parentForm.appendChild(newLink);
                        }

                    }

                } catch(e) {
                    alert("Exception: "+e);
                }
        },
        afterCombat: function() {
            try {
                for(var i=0;i<document.getElementsByTagName("a").length;i++) {
                    var url = document.getElementsByTagName("a")[i];
                    if(url.href.match(/.again./)) {
                        url.accessKey = adventureAgain;
                    } else if (url.innerHTML.match(/Go [Bb]ack/)) {
                        url.accessKey = goBack;
                    } 
                }
            } catch(e) {
                alert("Exception: "+e);
            }
        }
    }
    KOLHelper.duringCombat();
    KOLHelper.afterCombat();
})();

// ChangeLog
// 05/13/05 - Initial Version
