// Jagerspeak Translator
// Copyright 2005-2006 Lee K. Seitz
//
// Permission is granted to save this file to your computer
// (outside of what is necessary for normal web browsing)
// for personal use only.
// 
// Jagermonster is a trademark of Studio Foglio, LLC.  Used without permission.
// Visit Girl Genius at www.girlgeniusonline.com.

function clearForm()
{
   document.trans.english.value = "";
   document.trans.jager.value = "";
   return true;
}

function sample()
{
   document.trans.english.value =
      "This is a test, sweetheart!  Always remember -- any plan where " +
      "you lose your hat is a bad plan." +
      "\n\nHoly cow, the ring is the thing, darling!";
   return true;
}

// TO DO:
// Change bits with spaces to match any non-alpha char.

function toJager()
{
   var engList = new Array(
      "'ve(\\b)",
      "'ll(\\b)",
      "actually",
      "ain't",
      "damn",
      "am",
      "and",
      "back",
      "better",
      "capture",
      "clank",
      "did",
      "does",
      "fun",
      "girl",
      "going",
      "good",
      "(\\b)get(\\b)",
      "(\\b)got(\\b)",
      "gun",
      "have",
      "heart",
      "holy\\s+(cow|crap|shit)",
      "idiot",
      "([^t\\s][^h])ing(\\b)",
      "is(\\b)",
      "(\\b)kill",
      "(\\b)kiss",
      "(\\b)ki",
      "little",
      "live",
      "matter",
      "move",
      "nice",
      "octopus",
      "of(\\b)",
      "(\\b)oh(\\b)",
      "okay",
      "(\\s)one",
      "other",
      "people",
      "pretty",
      "smart",
      "so([, ])",
      "squ",
      "stand",
      "stop",
      "st",
      "that",
      "thing",
      "think",
      "(\\s)th([^or][^u])",
      "^th",
      "([^aeiou])uch",
      "unless",
      "up",
      "([^o])ut",
      "what",
      "wh([^o])",
      "with",
      "([^eo])w",
      "yeah",
      "yes",
      "you([^Rr])",
      "your"
   );

   // kiss = kees, kill = keel
   // one = vun OR von?
   // them = dem, this = dis
   // what = wot OR vat OR vot
   // we = ve, why = vy
   // yes = yas OR yez

   var jagList = new Array(
      "$1",
      "$1",
      "ectually",
      "hain't",
      "dem",
      "em",
      "und",
      "beck",
      "bettah",
      "cepture",
      "clenk",
      "deed",
      "doz",
      "fon",
      "gurl",
      "gun",
      "goot",
      "$1gets$2",
      "$1gots$2",
      "gon",
      "hef",
      "hot",
      "Gott's leedle fish in trousers",
      "eediot",
      "$1ink$2",
      "iz$1",
      "$1keel",
      "$1kees",
      "$1kee",
      "leedle",
      "liff",
      "matta",
      "moof",
      "nize",
      "hoctopoos",
      "uf$1",
      "$1ho$2",
      "hokay",
      "$1vun",
      "odder",
      "pipple",
      "pritty",
      "shmot",
      "zo$1",
      "sqv",
      "stend",
      "schtop",
      "sht",
      "dot",
      "ting",
      "tink",
      "$1d$2",
      "d",
      "$1och",
      "onless",
      "op",
      "$1ot",
      "vot",
      "v$1",
      "vit",
      "$1v",
      "yah",
      "yas",
      "hyu$1",
      "you"
   );

   // Case sensitive checks
   var engList2 = new Array(
      "([^A-Za-z])any([^A-Za-z])",
      "([^A-Za-z])Any([^A-Za-z])",
      "([^A-Za-z])ANY([^A-Za-z])",
      "I([^A-Za-z])",
      "Oh([^A-Za-z])"
   );

   var jagList2 = new Array(
      "$1henny$2",
      "$1Henny$2",
      "$1HENNY$2",
      "Hy$1",
      "Ho$1"
   );

   var text = document.trans.english.value;

   for (var i=0; i<engList.length; i++ )
   {
      var engWord = engList[i];
      var jagWord = jagList[i];

      // Lower case
      var re = new RegExp( engWord, "g" );
      text = text.replace( re, jagWord );
//alert(engWord + ":" + text);

      // Capitalized
      var engFirst = engWord.charAt(0).toUpperCase();
      engWord = engFirst + engWord.substr(1);
      var jagFirst = jagWord.charAt(0).toUpperCase();
      jagWord = jagFirst + jagWord.substr(1);
      re = new RegExp( engWord, "g" );
      text = text.replace( re, jagWord );

      // All upper case
      engWord = engWord.toUpperCase();
      jagWord = jagWord.toUpperCase();
      re = new RegExp( engWord, "g" );
      text = text.replace( re, jagWord );
   } // end for i

   // Case sensitive
   for (var j=0; j<engList2.length; j++ )
   {
      var engWord = engList2[j];
      var jagWord = jagList2[j];

      re = new RegExp( engWord, "g" );
      text = text.replace( re, jagWord );
   } // end for j

   document.trans.jager.value = text;

   return true;
} // end toJager

