/*********************************************************
 *  Expertise Calculator                                 *
 *  Version: 1.6                                         *
 *                                                       *
 *  by Oekevo                                            *
 *********************************************************/

/* Changes:
 * 
 * no changes jet
 */

var url = "source/";

function Hex2Int(HexString)
  {
  var i;
  var Int = 0;

  if(HexString.length == 0) return 0;

  HexString = HexString.toLowerCase();

  for(i = 0; i < HexString.length; i++)
    {
    Int <<= 4;
    switch(HexString.substr(i, 1))
      {
      case "0":
        Int += 0;
        break;
      case "1":
        Int += 1;
        break;
      case "2":
        Int += 2;
        break;
      case "3":
        Int += 3;
        break;
      case "4":
        Int += 4;
        break;
      case "5":
        Int += 5;
        break;
      case "6":
        Int += 6;
        break;
      case "7":
        Int += 7;
        break;
      case "8":
        Int += 8;
        break;
      case "9":
        Int += 9;
        break;
      case "a":
        Int += 10;
        break;
      case "b":
        Int += 11;
        break;
      case "c":
        Int += 12;
        break;
      case "d":
        Int += 13;
        break;
      case "e":
        Int += 14;
        break;
      case "f":
        Int += 15;
        break;
      }
    }

  return Int;
  }


function Int2Hex(Int)
  {
  var i, j;
  var s = "";
  var HexString = (Int == 0) ? "0" : "";

  while(Int > 0)
    {
    i = Int - ((Int >> 4) << 4);
    Int >>= 4;

    switch(i)
      {
      case 0:
        HexString += "0";
        break;
      case 1:
        HexString += "1";
        break;
      case 2:
        HexString += "2";
        break;
      case 3:
        HexString += "3";
        break;
      case 4:
        HexString += "4";
        break;
      case 5:
        HexString += "5";
        break;
      case 6:
        HexString += "6";
        break;
      case 7:
        HexString += "7";
        break;
      case 8:
        HexString += "8";
        break;
      case 9:
        HexString += "9";
        break;
      case 10:
        HexString += "a";
        break;
      case 11:
        HexString += "b";
        break;
      case 12:
        HexString += "c";
        break;
      case 13:
        HexString += "d";
        break;
      case 14:
        HexString += "e";
        break;
      case 15:
        HexString += "f";
        break;
      }
    }

  for(i = HexString.length - 1; i >= 0; i--) s += HexString.substr(i, 1);

  return s;
  }


function Pente2Hex(PenteString)
  {
  var i, k;
  var long_int = new Array(0, 0, 0);
  var HexString0 = "";
  var HexString1 = "";
  var HexSTring2 = "";

  for(i = 0; i < PenteString.length; i++)
    {
    k = 0;
    switch(PenteString.substr(i, 1))
      {
      case "4":
        k++;
      case "3":
        k++;
      case "2":
        k++;
      case "1":
        k++;
      case "0":
      }
    long_int[0] = long_int[0] * 5 + k;
    long_int[1] = long_int[1] * 5;
    long_int[2] = long_int[2] * 5;

    while(long_int[0] > (1 << 24) - 1)
      {
      long_int[1]++;
      long_int[0] -= (1 << 24);
      }

    while(long_int[1] > (1 << 24) - 1)
      {
      long_int[2]++;
      long_int[1] -= (1 << 24);
      }
    }

  HexString0 = Int2Hex(long_int[2]);
  HexString1 = Int2Hex(long_int[1]);
  HexString2 = Int2Hex(long_int[0]);

  if(HexString1 != "0") while(HexString2.length < 6) HexString2 = "0" + HexString2;
  if(HexString0 != "0") while(HexString1.length < 6) HexString1 = "0" + HexString1;

  return ((HexString0 != "0") ? HexString0  : "") + ((HexString1 != "0") ? HexString1  : "") + HexString2;
  }


function Hex2Pente(HexString)
  {
  var i, k;
  var HexString1 = "";
  var HexString2 = "";
  var HexString3 = "";
  var long_int = new Array(0, 0, 0);
  var PenteString = "";
  var s = "";

  i = 0;

  while(i <= HexString.length && i <= 6) HexString1 = HexString.substr(HexString.length - i++, 1) + HexString1;
  while(i <= HexString.length && i <= 12) HexString2 = HexString.substr(HexString.length - i++, 1) + HexString2;
  while(i <= HexString.length && i <= 18) HexString3 = HexString.substr(HexString.length - i++, 1) + HexString3;

  long_int[0] = Hex2Int(HexString1);
  long_int[1] = Hex2Int(HexString2);
  long_int[2] = Hex2Int(HexString3);

  PenteString = (long_int[0] == 0 && long_int[1] == 0 && long_int[2] == 0) ? "0" : "";

  while(long_int[0] > 0)
    {
    k = long_int[2] % 5;
    long_int[2] = (long_int[2] - k) / 5;
    long_int[1] += k * (1 << 24);
    k = long_int[1] % 5;
    long_int[1] = (long_int[1] - k) / 5;
    long_int[0] += k * (1 << 24);
    k = long_int[0] % 5;
    long_int[0] = (long_int[0] - k) / 5;

    switch(k)
      {
      case 0:
        PenteString += "0";
        break;
      case 1:
        PenteString += "1";
        break;
      case 2:
        PenteString += "2";
        break;
      case 3:
        PenteString += "3";
        break;
      case 4:
        PenteString += "4";
        break;
      }
    }

  for(i = PenteString.length - 1; i >= 0; i--) s += PenteString.substr(i, 1);

  return s;
  }

  
function Expertise_Summary_Struct(Expertise_Skill, Index)
  {
  this.Skill = Expertise_Skill;
  this.next = null;
  this.sub = null;
  this.Index = Index;
  }


function Expertise_getSummaryCode()
  {
  var i, j, k, l;
  var first_Skill = null;
  var actual_Skill = null;
  var HTMLCode = "";

  for(k = 0; k < 2; k++)
    {
    l = 0;
    HTMLCode += '<p class="SummaryHeadline">&nbsp;&nbsp;&nbsp;' + this.SkillPage[k].Name + '</p><br><br>';

    for(i = 0; i < 5; i++)
      {
      for(j = 0; j < 7; j++)
        {
        if(this.SkillPage[k].Skills[j][i] != null)
          {
          if(this.SkillPage[k].Skills[j][i].actualRank > 0)
            {
            if(this.SkillPage[k].Skills[j][i].Requirment != null)
              {
              Expertise_placeConditionalSkill(first_Skill, this.SkillPage[k].Skills[j][i], this.SkillPage[k].Skills[j][i].Requirment.Title);
              }
            else
              {
              if(l == 0)
                {
                l++;
                first_Skill = new Expertise_Summary_Struct(this.SkillPage[k].Skills[j][i]);
                actual_Skill = first_Skill;
                }
              else
                {
                actual_Skill.next = new Expertise_Summary_Struct(this.SkillPage[k].Skills[j][i]);
                actual_Skill = actual_Skill.next;
                }
              }
            }
          }
        }
      }

    HTMLCode += Expertise_getSummarySkillHTML(first_Skill, 0) + '<br><br><br>';
    }

  return HTMLCode;
  }


function Expertise_getSummarySkillHTML(Summary, Padding)
  {
  var i;
  var HTMLCode = "";

  while(Summary != null)
    {
    HTMLCode += '<table cellspacing="3" cellpadding="3" border="0" width="100%">\n';
    HTMLCode += '  <tr>\n';
    HTMLCode += '    <td>&nbsp;&nbsp;&nbsp;<img src="' + url + 'shadow.gif" width="' + Padding + '" height="25"></td>\n';
    HTMLCode += '    <td width="35" height="35" background="' + url + 'SkillBox_smal.jpg"><img src="' + url + Summary.Skill.ImageActive + '" width="29" height="29"></td>\n';
    HTMLCode += '    <td width="100%">&nbsp;&nbsp;&nbsp;x' + Summary.Skill.actualRank + '&nbsp;&nbsp;&nbsp;' + Summary.Skill.Title + '</td>\n';
    HTMLCode += '  </tr>\n';
/* 
    HTMLCode += '  <tr>\n';
    HTMLCode += '    <td colspan="2"><img src="' + url + 'shadow.gif" width="10" height="25"></td>\n';
    HTMLCode += '    <td width="100%">';

    for(i = 0; i < Summary.Skill.Modifiers.length; i++)
      {
      HTMLCode += ((Summary.Skill.Modifiers[i].Value != null) ? Summary.Skill.Modifiers[i].Value[Summary.Skill.actualRank - 1] : '') + ' ' + Summary.Skill.Modifiers[i].Title + '<br>\n';
      }

    HTMLCode += '    </td>\n';
    HTMLCode += '  </tr>\n';
 */
    HTMLCode += '</table>\n';


    if(Summary.sub != null)
      {
      HTMLCode += Expertise_getSummarySkillHTML(Summary.sub, Padding + 35);
      }

    Summary = Summary.next;
    }

  return HTMLCode;
  }


function Expertise_placeConditionalSkill(Summary, Skill, Requirment_Title)
  {
  while(Summary != null)
    {
    if(Summary.Skill.Title == Requirment_Title)
      {
      if(Summary.sub != null)
        {
        Summary = Summary.sub;

        while(Summary.next != null) Summary = Summary.next;
        Summary.next = new Expertise_Summary_Struct(Skill);
        }
      else Summary.sub = new Expertise_Summary_Struct(Skill);
      return 1;
      }

    if(Summary.sub != null)
      {
      if(Expertise_placeConditionalSkill(Summary.sub, Skill, Requirment_Title)) return 1;
      }
    Summary = Summary.next;
    }

  return 0;
  }


function Expertise_loadSavedSummary()
  {
  if(Expertise.actual.actualSkillPage.Name == "dummy") return;
  
  document.all.SkillTree.innerHTML = Expertise.actual.getSummaryCode();
  document.all.Description.innerHTML = "";
  document.all.SkillPoints.innerHTML = "";
  document.all.Control.innerHTML = "";
  document.all.Register.innerHTML = Expertise.actual.getRegisterHTML(2);
  }
  
  
function Index(Column, Row)
  {
  this.Column = Column;
  this.Row = Row;
  }


function Skill(Title, maxRank, ImageActive, ImageInactive)
  {
  this.Title = Title;
  this.Description = "";
  this.Requirment = null;
  this.maxRank = maxRank;
  this.actualRank = 0;
  this.Modifiers = new Array();
  this.ImageActive = ImageActive;
  this.ImageInactiv = ImageInactive;
  }


function Modifier(Title, Description, Value)
  {
  this.Title = Title;
  this.Description = Description;
  this.Value = Value;
  }


function ProfessionSkillPage(Typ)
  {
  var skill, i, j;

  // SkillSet[i][j]: i = Spalte, j = Zeile
  var SkillSet = new Array(7);
  for(i = 0; i < 7; i++)
    {
    SkillSet[i] = new Array(5);
    for(j = 0; j < 5; j++)
      {
      SkillSet[i][j] = null;
      }
    }

  switch(Typ)
    {
    case "Spy":

      skill = new Skill("Precision", 2, "Spy/aPrecision.gif", "Spy/iPrecision.gif");
      skill.Description = "Permanently increases Precision.";
      skill.Modifiers[0] = new Modifier("Precision", "", new Array(25, 50, 0, 0));
      SkillSet[1][0] = skill;

      skill = new Skill("Strength", 2, "Spy/aStrength.gif", "Spy/iStrength.gif");
      skill.Description = "Permanently increases Strength";
      skill.Modifiers[0] = new Modifier("Strength", "", new Array(25, 50, 0, 0));
      SkillSet[2][0] = skill;

      skill = new Skill("Agility", 2, "Spy/aAgility.gif", "Spy/iAgility.gif");
      skill.Description = "Permanently increases Agility.";
      skill.Modifiers[0] = new Modifier("Agility", "", new Array(25, 50, 0, 0));
      SkillSet[4][0] = skill;

      skill = new Skill("Cloaking Aromor", 2, "Spy/aCloakingArmor.gif", "Spy/iCloakingArmor.gif");
      skill.Description = "Increases camouflage by 35 for the first point spent and 40 for the second.";
      skill.Modifiers[0] = new Modifier("Camouflage", "", new Array(35, 75, 0, 0));
      SkillSet[5][0] = skill;

      skill = new Skill("Advanced Strikes", 1, "Spy/aAdvancedStrikes.gif", "Spy/iAdvancedStrikes.gif");
      skill.Description = "Grants the Razor Slash and Blaster Burst line of attacks.";
      skill.Modifiers[0] = new Modifier("Advanced Strikes", "Grants the Blaster Burst and Razor Slash line of attacks.", null);
      SkillSet[0][1] = skill;

      skill = new Skill("Cheap Strikes", 4, "Spy/aCheapStrikes.gif", "Spy/iCheapStrikes.gif");
      skill.Description = "5% action cost reduction per point while using a melee weapon.";
      skill.Modifiers[0] = new Modifier("Melee Weapon Action Cost", "", new Array(5, 10, 15, 20));
      SkillSet[2][1] = skill;

      skill = new Skill("Cheap Shots", 4, "Spy/aCheapShots.gif", "Spy/iCheapShots.gif");
      skill.Description = "5% action cost reduction per point while using a ranged weapon.";
      skill.Modifiers[0] = new Modifier("Ranged Weapon Action Cost", "", new Array(5, 10, 15, 20));
      SkillSet[4][1] = skill;

      skill = new Skill("Protective Armor", 4, "Spy/aProtectiveArmor.gif", "Spy/iProtectiveArmor.gif");
      skill.Description = "+300 Kinetic and Energy resist per point.";
      skill.Modifiers[0] = new Modifier("Kinetic Protection", "", new Array(300, 600, 900, 1200));
      skill.Modifiers[1] = new Modifier("Energy Protection", "", new Array(300, 600, 900, 1200));
      SkillSet[6][1] = skill;

      skill = new Skill("Improved Spy's Fang", 1, "Spy/aImprovedSpysFang.gif", "Spy/iImprovedSpysFang.gif");
      skill.Description = "Grants a full line to the Spy's Fang ability.";
      skill.Modifiers[0] = new Modifier("Spy's Fang 1", "Spy's Fang 1: This level 10 ability allows the spy to cause extra acid damage over time to the target.", null);
      SkillSet[0][2] = skill;

      skill = new Skill("Opportunity", 4, "Spy/aOpportunity.gif", "Spy/iOpportunity.gif");
      skill.Description = "Increases chance to get a critical hit by 2% per point.";
      skill.Modifiers[0] = new Modifier("Critical Chance Increase", "", new Array(2, 4, 6, 8));
      SkillSet[3][2] = skill;

      skill = new Skill("Balanced Armor", 2, "Spy/aGlancingArmor.gif", "Spy/iGlancingArmor.gif");
      skill.Description = "Balanced armor grants the user +5% chance per point to dodge direct target attacks.";
      skill.Modifiers[0] = new Modifier("Dodge", "", new Array(5, 10, 0, 0));
      skill.Requirment = SkillSet[6][1];
      SkillSet[6][2] = skill;

      skill = new Skill("Equilibrium", 1, "Spy/aEquilibrium.gif", "Spy/iEquilibrium.gif");
      skill.Description = "With expert control over their attacks, the spy with perfect balance will conserve energy on failed attacks.";
      skill.Modifiers[0] = new Modifier("Freeshot Case: Miss", "", new Array(1, 0, 0, 0));
      skill.Modifiers[1] = new Modifier("Freeshot Case: Dodge", "", new Array(1, 0, 0, 0));
      skill.Modifiers[2] = new Modifier("Freeshot Case: Parry", "", new Array(1, 0, 0, 0));
      SkillSet[0][3] = skill;

      skill = new Skill("Close Quarters", 3, "Spy/aCloseQuarters.gif", "Spy/iCloseQuarters.gif");
      skill.Description = "Increases damage done by melee weapons by 2% per point.";
      skill.Modifiers[0] = new Modifier("Melee Damage Increase", "", new Array(2, 4, 6, 0));
      SkillSet[2][3] = skill;

      skill = new Skill("Sniping", 3, "Spy/aSniping.gif", "Spy/iSniping.gif");
      skill.Description = "Increases damage done by all ranged weapons by 2% per point.";
      skill.Modifiers[0] = new Modifier("Ranged Damage Increase", "", new Array(2, 4, 6, 0));
      SkillSet[4][3] = skill;

      skill = new Skill("Avoid Damage", 1, "Spy/aAvoidDamage.gif", "Spy/iAvoidDamage.gif");
      skill.Description = "Grants the Avoid Damage ability. When activated +50% chance to dodge and +75% to avoid area effect damage for 15 seconds.";
      skill.Modifiers[0] = new Modifier("Avoid Damage", "Avoid Damage: This level 34 ability grants the spy an increased chance to dodge direct target attacks and evade area effect attacks for 15 seconds.", null);
      skill.Requirment = SkillSet[6][2];
      SkillSet[6][3] = skill;

      skill = new Skill("Assassin's Mark", 1, "Spy/aAssassinsMark.gif", "Spy/iAssassinsMark.gif");
      skill.Description = "Grants the Assassin's Mark ability.";
      skill.Modifiers[0] = new Modifier("Assassin's Mark", "Marks the target for death causing attacks to sometimes deal an additional default attack.", null);
      SkillSet[2][4] = skill;

      skill = new Skill("Jagged Edge", 3, "Spy/aJaggedEdge.gif", "Spy/iJaggedEdge.gif");
      skill.Description = "Increases damage dealt by a critical strike by 5% per point.";
      skill.Modifiers[0] = new Modifier("Critical Strike Damage Increase", "", new Array(5, 10, 15, 0));
      skill.Requirment = SkillSet[3][2];
      SkillSet[3][4] = skill;

      skill = new Skill("Savagery", 1, "Spy/aSavagery.gif", "Spy/iSavagery.gif");
      skill.Description = "Each critical hit will enhance the spy's group by granting 5% additional critical strike damage. This effect stacks up to 3 times.";
      skill.Modifiers[0] = new Modifier("Savagery", "", new Array(1, 0, 0, 0));
      skill.Requirment = SkillSet[3][4];
      SkillSet[4][4] = skill;

      skill = new Skill("Preparation", 1, "Spy/aPreparation.gif", "Spy/iPreparation.gif");
      skill.Description = "Increases all weapon damage done by 30% and all single target direct attack critical and strikethrough hits will cost 0 action for 15 secounds.";
      skill.Modifiers[0] = new Modifier("Preparation", "Preparation: This level 34 ability grants a short damage increase buff for a burst of damage output.", null);
      SkillSet[6][4] = skill;

      break;

    case "Covert Operative":

      skill = new Skill("Quiet Steps", 2, "Spy/aQuietSteps.gif", "Spy/iQuietSteps.gif");
      skill.Description = "Enemies have a -2%/-5% chance to block, dodge and parry attacks made out of stealth.";
      skill.Modifiers[0] = new Modifier("Indefensible Attacks", "", new Array(2, 5, 0, 0));
      SkillSet[0][0] = skill;

      skill = new Skill("Improved First Aid", 2, "Spy/aImprovedFirstAid.gif", "Spy/iImprovedFirstAid.gif");
      skill.Description = "Increases most healing effects on the spy by 10% per point.";
      skill.Modifiers[0] = new Modifier("Increase Healing Effects Received", "", new Array(10, 20, 0, 0));
      SkillSet[3][0] = skill;

      skill = new Skill("Run Its Course", 1, "Spy/aRunItsCourse.gif", "Spy/iRunItsCourse.gif");
      skill.Description = "Grants the Run its Course ability. Purges all poison, disease and bleeding damge over time effects. Makes the immune to further damage over time stack applications for the duration of the effect.";
      skill.Modifiers[0] = new Modifier("Run Its Course", "Run its Course: This Level 10 ability removes all poison, disease and bleed DOT effects from the spy and makes the spy immune to further DOT application for the duration.", null);
      skill.Requirment = SkillSet[3][0];
      SkillSet[2][0] = skill;

      skill = new Skill("Cloaked Recovery", 1, "Spy/aCloakedRecovery.gif", "Spy/iCloakedRecovery.gif");
      skill.Description = "Grants the Cloaked Recovery line of self heals useable only while stealthed.";
      skill.Modifiers[0] = new Modifier("Cloaked Recovery 1", "Cloaked Recovery 1: A level 10 healing ability used to recover a small amount of health while stealthed.", null);
      skill.Requirment = SkillSet[3][0];
      SkillSet[4][0] = skill;

      skill = new Skill("Diversion", 2, "Spy/aDiversion.gif", "Spy/iDiversion.gif");
      skill.Description = "Adds bonuses to Decoy ability.<br><br>Rank 1: Applies a flanking debuff to targets that attack the decoy.<br>Rank 2: Places the Spy into stealth.";
      skill.Modifiers[0] = new Modifier("Improved Decoy", "", new Array(1, 2, 0, 0));
      SkillSet[6][0] = skill;

      skill = new Skill("Reveal Shadows", 1, "Spy/aRevealShadows.gif", "Spy/iRevealShadows.gif");
      skill.Description = "Grants the ability to reveal shadows. This ability allows the syp a good chance to reveal hidden targets within a 20m radius.";
      skill.Modifiers[0] = new Modifier("Reveal Shadows", "Reveal Shadows: This level 10 ability will attempt to reveal all hidden targets in the vicinity of the spy.", null);
      SkillSet[0][1] = skill;

      skill = new Skill("Rapid Concealment", 4, "Spy/aRapidConcealment.gif", "Spy/iRapidConcealment.gif");
      skill.Description = "Reduces the cooldown of the Burst of Shadows, Smoke Bomb and Without a Trace abilities by 30 sec per point.";
      skill.Modifiers[0] = new Modifier("Smoke Bomb Cooldown", "", new Array(30, 60, 90, 120));
      skill.Modifiers[1] = new Modifier("Without a Trace", "", new Array(30, 60, 90, 120));
      skill.Modifiers[2] = new Modifier("Burst of Shadows", "", new Array(30, 60, 90, 120));
      SkillSet[2][1] = skill;

      skill = new Skill("AssassinsBlade", 2, "Spy/aAssassinsBlade.gif", "Spy/iAssassinsBlade.gif");
      skill.Description = "Increases chance to get a strikethrough hit by 2% per point.";
      skill.Modifiers[0] = new Modifier("Strikethrough Chance Increase", "", new Array(2, 4, 0, 0));
      SkillSet[3][1] = skill;

      skill = new Skill("Puncturing Strikes", 4, "Spy/aPuncturingStrikes.gif", "Spy/iPuncturingStrikes.gif");
      skill.Description = "Increases the damage from the Ambush, Snipe and Razor slash melee lines of attacks by 10% per point.";
      skill.Modifiers[0] = new Modifier("Ambush Damage/Bleed", "", new Array(10, 20, 30, 40));
      skill.Modifiers[1] = new Modifier("Razor Slash/Blaster Burst Damage", "", new Array(10, 20, 30, 40));
      skill.Modifiers[2] = new Modifier("Snipe Damge Increase", "", new Array(10, 20, 30, 40));
      SkillSet[4][1] = skill;

      skill = new Skill("Cloaked Attacks", 1, "Spy/aCloakedAttacks.gif", "Spy/iCloakedAttacks.gif");
      skill.Description = "Grants the Ambush (melee) and Snipe (ranged) high damage attack lines made from stealth.";
      skill.Modifiers[0] = new Modifier("Ambush/Snipe", "Grants the Ambush (melee) and Snipe (ranged) high damage attack lines made from stealth.", null);
      SkillSet[6][1] = skill;

      skill = new Skill("Careful Observation", 2, "Spy/aCarefulObservation.gif", "Spy/iCarefulObservation.gif");
      skill.Description = "Buff detection hidden +25 per point.";
      skill.Modifiers[0] = new Modifier("Detect Camouflage", "", new Array(25, 50, 0, 0));
      skill.Requirment = SkillSet[0][1];
      SkillSet[0][2] = skill;

      skill = new Skill("Smoke And Mirrors", 1, "Spy/aSmokeAndMirrors.gif", "Spy/iSmokeAndMirrors.gif");
      skill.Description = "Smoke & Mirrors allows the spy to use stealth only commands while not in stealth.";
      skill.Modifiers[0] = new Modifier("Smoke And Mirrors", "Smoke and Mirrors: Allows the use of stealth only abilities while active.", null);
      SkillSet[2][2] = skill;

      skill = new Skill("Vibrogenerator", 3, "Spy/aVibrogenerator.gif", "Spy/iVibrogenerator.gif");
      skill.Description = "Vibrogenerators increase the potency of your weapons bypassing 2% of your target's armor rating per point.";
      skill.Modifiers[0] = new Modifier("Armor Neglect", "", new Array(2, 4, 6, 0));
      skill.Requirment = SkillSet[3][1];
      SkillSet[3][2] = skill;

      skill = new Skill("Crippling Traps", 2, "Spy/aCripplingTraps.gif", "Spy/iCripplingTraps.gif");
      skill.Description = "+50% per point chance for Venomous Ploy line of traps to apply a snare when they activate.";
      skill.Modifiers[0] = new Modifier("Cripple Trap Proc Chance", "", new Array(50, 100, 0, 0));
      SkillSet[4][2] = skill;

      skill = new Skill("Cloak and Dagger", 4, "Spy/aCloakAndDagger.gif", "Spy/iCloakAndDagger.gif");
      skill.Description = "Increases the damge from Ambush and Snipe lines of attacks by 20% per point.";
      skill.Modifiers[0] = new Modifier("Ambush Damage/Bleed", "", new Array(20, 40, 60, 80));
      skill.Modifiers[1] = new Modifier("Snipe Damage Increase", "", new Array(20, 40, 60, 80));
      skill.Modifiers[2] = new Modifier("Ambush DOT Increase", "", new Array(20, 40, 60, 80));
      skill.Requirment = SkillSet[6][1];
      SkillSet[6][2] = skill;

      skill = new Skill("Expose Shadows", 4, "Spy/aExposeShadows.gif", "Spy/iExposeShadows.gif");
      skill.Description = "Radius increased by 5m per point, cooldown decreased 10 sec per point, chance to detect inceased 3% per point.";
      skill.Modifiers[0] = new Modifier("Reveal Shadows", "", new Array(5, 10, 15, 20));
      skill.Modifiers[1] = new Modifier("Reveal Shadows", "", new Array(3, 6, 9, 12));
      skill.Modifiers[2] = new Modifier("Reveal Shadows", "", new Array(10, 20, 30, 40));
      skill.Requirment = SkillSet[0][2];
      SkillSet[0][3] = skill;

      skill = new Skill("Resonance", 1, "Spy/aResonance.gif", "Spy/iResonance.gif");
      skill.Description = "Each strikethrough hit will enhance the spy's group by granting 2% Armor Neglect. This effect stacks up to 3 times.";
      skill.Modifiers[0] = new Modifier("Resonance", "", new Array(1, 0, 0, 0));
      skill.Requirment = SkillSet[3][2];
      SkillSet[3][3] = skill;

      skill = new Skill("Brust of Shadows", 1, "Spy/aBrustOfShadows.gif", "Spy/iBrustOfShadows.gif");
      skill.Description = "This ability overrides the smoke bomb or sneak nare and allows faster movement while stealhed for 25 sec.";
      skill.Modifiers[0] = new Modifier("Bust of Shadows", "Bust of Shadows: This level 18 ability greatly increases the spy's movement speed for a short period while stealthed.", null);
      SkillSet[4][3] = skill;

      skill = new Skill("Intiative", 4, "Spy/aIntiative.gif", "Spy/iInitiative.gif");
      skill.Description = "Ambush and Snipe lines gain a 15% per point chance of being a critical hit.";
      skill.Modifiers[0] = new Modifier("Ambush Critical Chance", "", new Array(15, 30, 45, 60));
      skill.Modifiers[1] = new Modifier("Snipe Critical Chance", "", new Array(15, 30, 45, 60));
      skill.Requirment = SkillSet[6][2];
      SkillSet[6][3] = skill;

      skill = new Skill("Without a Trace", 1, "Spy/aWithoutATrace.gif", "Spy/iWithoutATrace.gif");
      skill.Description = "Improved smoke bomb - makes the spy undetectable by any means other than damage for 30 secounds.";
      skill.Modifiers[0] = new Modifier("Without a Trace", "Without a Trace: This level 34 improved smoke bomb can allow the spy to escape from combt and hide from enemy detection for a short time.", null);
      SkillSet[2][4] = skill;

      skill = new Skill("Covert Mastery", 1, "Spy/aCovertMastery.gif", "Spy/iCovertMastery.gif");
      skill.Description = "Removes harmful effects from the spy when they use the Without a Trace enhanced Smoke Bomb.";
      skill.Modifiers[0] = new Modifier("Covert Mastery", "", new Array(1, 0, 0, 0));
      skill.Requirment = SkillSet[2][4];
      SkillSet[4][4] = skill;

      skill = new Skill("Shifty Setup", 1, "Spy/aShiftySetup.gif", "Spy/iShiftySetup.gif");
      skill.Description = "Grants the Shifty Setup ability. This ability allows you to prepare for a strike against a target.";
      skill.Modifiers[0] = new Modifier("Shifty Setup", "Shifty Setup: This ability allows a spy to prepare for a single strike against a target. The buff decreases a target's chance to dodge, block, parry, or be glancing blowed by 20% and decreases your chance to critical hit and strike-through by 20%. It is removed after using one ability.", null);
      SkillSet[6][4] = skill;

      break;

    case "Drama":

      skill = new Skill("Dramatic Flair", 4, "Entertainer/aDramaticFlair.gif", "Entertainer/iDramaticFlair.gif");
      skill.Description = "Grants additional +15 STR/CON/STA per point and removes the non-aggro flag.";
      skill.Modifiers[0] = new Modifier("Constititution", "", new Array(15, 30, 45, 60));
      skill.Modifiers[1] = new Modifier("Strength", "", new Array(15, 30, 45, 60));
      skill.Modifiers[2] = new Modifier("Stamina", "", new Array(15, 30, 45, 60));
      SkillSet[3][0] = skill;

      skill = new Skill("Strike", 1, "Entertainer/aStrike.gif", "Entertainer/iStrike.gif");
      skill.Description = "Grants a basic H2H attack.";
      skill.Modifiers[0] = new Modifier("Strike 1", "Strike 1: A level 10 basic H2H attack that causes bonus damage.", null);
      SkillSet[0][1] = skill;

      skill = new Skill("Conditioned Vessel", 4, "Entertainer/aConditionedVessel.gif", "Entertainer/iConditionedVessel.gif");
      skill.Description = "Increases damage of all H2H attacks by 5% per point.";
      skill.Modifiers[0] = new Modifier("Unarmed Damage", "", new Array(5, 10, 15, 20));
      SkillSet[1][1] = skill;

      skill = new Skill("Thought As Action", 4, "Entertainer/aThoughtAsAction.gif", "Entertainer/iThoughtAsAction.gif");
      skill.Description = "+300 Kinetic resist per point.";
      skill.Modifiers[0] = new Modifier("Conditional Kinetic Resistance", "", new Array(300, 600, 900, 1200));
      SkillSet[2][1] = skill;

      skill = new Skill("Folded Inward", 4, "Entertainer/aFoldedInward.gif", "Entertainer/iFoldedInward.gif");
      skill.Description = "+300 Energy resist per point.";
      skill.Modifiers[0] = new Modifier("Energy Resistance", "", new Array(300, 600, 900, 1200));
      SkillSet[4][1] = skill;

      skill = new Skill("Thrill", 1, "Entertainer/aThrill.gif", "Entertainer/iThrill.gif");
      skill.Description = "Applies glancing blow debuff of 10% for 6 seconds.";
      skill.Modifiers[0] = new Modifier("Thrill", "Trill: A level 10 ability that thrills the target. A thrilled target is more likely to do glancing blows on all attacks.", null);
      SkillSet[5][1] = skill;

      skill = new Skill("Project Will", 1, "Entertainer/aProjectWill.gif", "Entertainer/iProjectWill.gif");
      skill.Description = "Grants a powerful ranged H2H attack that is effective up to 20m.";
      skill.Modifiers[0] = new Modifier("Project Will 1", "Project Will 1: A level 18 H2H attack with extended range of 20m.", null);
      skill.Requirment = SkillSet[0][1];
      SkillSet[0][2] = skill;

      skill = new Skill("Rising Spirit", 4, "Entertainer/aRisingSpirit.gif", "Entertainer/iRisingSpirit.gif");
      skill.Description = "Increases Crit % for H2H attacks by 2% per point.";
      skill.Modifiers[0] = new Modifier("Unarmed Critical Chance", "", new Array(2, 4, 6, 8));
      skill.Requirment = SkillSet[1][1];
      SkillSet[1][2] = skill;

      skill = new Skill("Emotional Prescience", 4, "Entertainer/aEmotionalPrescience.gif", "Entertainer/iEmotionalPrescience.gif");
      skill.Description = "Increases dodge by 2% per point.";
      skill.Modifiers[0] = new Modifier("Glancing Blow Increase", "", new Array(2, 4, 6, 8));
      SkillSet[3][2] = skill;

      skill = new Skill("To The Hilt", 2, "Entertainer/aToTheHilt.gif", "Entertainer/iToTheHilt.gif");
      skill.Description = "Increases the glancing blow % of Thrill by 10% per point and the duration by 2 seconds per point.";
      skill.Modifiers[0] = new Modifier("Thrill Duration Increase", "", new Array(2, 4, 0, 0));
      skill.Modifiers[1] = new Modifier("Thrill Glancing Blow Increase", "", new Array(10, 20, 0, 0));
      skill.Requirment = SkillSet[5][1];
      SkillSet[5][2] = skill;

      skill = new Skill("Sweeping Pirouette", 1, "Entertainer/aSweepingPirouette.gif", "Entertainer/iSweepingPirouette.gif");
      skill.Description = "Grants a H2H kick that temporatily roots the target.";
      skill.Modifiers[0] = new Modifier("Sweeping Pirouette 1", "Sweeping Pirouette 1: A level 26 H2H attack that causes bounus damage and roots the target.", null);
      skill.Requirment = SkillSet[0][2];
      SkillSet[0][3] = skill;

      skill = new Skill("Controlled Spin", 3, "Entertainer/aControlledSpin.gif", "Entertainer/iControlledSpin.gif");
      skill.Description = "Increases damage % for Sweeping Pirouette by 10% per point.";
      skill.Modifiers[0] = new Modifier("Sweeping Pirouette Damage Increase", "", new Array(10, 20, 30, 0));
      skill.Requirment = SkillSet[0][3];
      SkillSet[1][3] = skill;

      skill = new Skill("Void Dance", 1, "Entertainer/aVoidDance.gif", "Entertainer/iVoidDance.gif");
      skill.Description = "Increases the chance all incomming attacks will be glancing blows for 10 seconds.";
      skill.Modifiers[0] = new Modifier("Void Dance", "Void Dance: Makes all incomming attacks have a 30% chance to be a glancing blow for 10 seconds.", null);
      SkillSet[3][3] = skill;

      skill = new Skill("Unhealthy Fixation", 1, "Entertainer/aUnhealthyFixation.gif", "Entertainer/iUnhealthyFixation.gif");
      skill.Description = "Grants an ability that causes the target to be enraptured by the Entertainer (root + stun) for 6 seconds.";
      skill.Modifiers[0] = new Modifier("Unhealthy Fixation", "Unhealthy Fixation: A level 26 ability that causes the target to fixate on the Entertainer and thus be rooted and stunned for the duration.", null);
      SkillSet[5][3] = skill;

      skill = new Skill("Allure", 4, "Entertainer/aAllure.gif", "Entertainer/iAllure.gif");
      skill.Description = "Increases the duration of Unhealthy Fixation by 1 second per point.";
      skill.Modifiers[0] = new Modifier("Unhealthy Fixation Duration Increase", "", new Array(1, 2, 3, 4));
      skill.Requirment = SkillSet[5][3];
      SkillSet[6][3] = skill;

      skill = new Skill("Spiral Kick", 1, "Entertainer/aSpiralKick.gif", "Entertainer/iSpiralKick.gif");
      skill.Description = "Grants the Extended Range H2H Spiral Kick attack that does high damage and temporarily snares the target.";
      skill.Modifiers[0] = new Modifier("Spiral Kick 1", "Spiral Kick 1: A level 34 H2H attack that causes bonus damage and snares the target.", null);
      skill.Requirment = SkillSet[0][3];
      SkillSet[0][4] = skill;

      skill = new Skill("Uprising", 2, "Entertainer/aUprising.gif", "Entertainer/iUprising.gif");
      skill.Description = "Increases the Crit % of Spiral Kick by 5% per point.";
      skill.Modifiers[0] = new Modifier("Spiral Kick Critical Increase", "", new Array(5, 10, 0, 0));
      skill.Requirment = SkillSet[0][4];
      SkillSet[1][4] = skill;

      skill = new Skill("Annulling", 3, "Entertainer/aAnnulling.gif", "Entertainer/iAnnulling.gif");
      skill.Description = "Increases the damage reduction of Void Dance by 5% per point.";
      skill.Modifiers[0] = new Modifier("Void Dance Increase", "", new Array(5, 10, 15, 0));
      skill.Requirment = SkillSet[3][3];
      SkillSet[3][4] = skill;

      break;

    case "Artiste":

      skill = new Skill("Inspired Fitness", 4, "Entertainer/aInspiredFitness.gif", "Entertainer/iInspiredFitness.gif");
      skill.Description = "Increases the attribute bonus for attribute inspiration buffs by 50% of the maximum per point.";
      skill.Modifiers[0] = new Modifier("Inspiration Attribute Increase", "", new Array(50, 100, 150, 200));
      SkillSet[1][0] = skill;

      skill = new Skill("Inspired Resilience", 4, "Entertainer/aInspiredResilience.gif", "Entertainer/iInspiredResilience.gif");
      skill.Description = "Increases resistance bonus for resistance inspiration buff by 50% of maximum per point.";
      skill.Modifiers[0] = new Modifier("Inspiration Resist Increase", "", new Array(50, 100, 150, 200));
      SkillSet[3][0] = skill;

      skill = new Skill("Inspired Industry", 4, "Entertainer/aInspiredIndustry.gif", "Entertainer/iInspiredIndustry.gif");
      skill.Description = "Increases the inspiration bonus for trader inspiration buffs by 25% per point.";
      skill.Modifiers[0] = new Modifier("Artisan Inspiration Increase", "", new Array(25, 50, 75, 100));
      SkillSet[5][0] = skill;

      skill = new Skill("Creativity", 4, "Entertainer/aCreativity.gif", "Entertainer/iCreativity.gif");
      skill.Description = "Adds up to an additional 12 base points to the maximum for inspiration buffs.";
      skill.Modifiers[0] = new Modifier("Inspiration Base Point Increase", "", new Array(3, 6, 9, 12));
      SkillSet[0][1] = skill;

      skill = new Skill("Holism", 1, "Entertainer/aHolism.gif", "Entertainer/iHolism.gif");
      skill.Description = "Grants the Holism buff package.";
      skill.Modifiers[0] = new Modifier("Holism Buff Package", "An inspiration buff effect that increases healing potency.", null);
      SkillSet[2][1] = skill;

      skill = new Skill("Harvest Faire", 1, "Entertainer/aHarvestFaire.gif", "Entertainer/iHarvestFaire.gif");
      skill.Description = "Grants the Harvest Faire buff package.";
      skill.Modifiers[0] = new Modifier("Harvest Faire Buff Package", "An inspiration buff effect that increases the number of resources collected while using harvesters.", null);
      SkillSet[3][1] = skill;

      skill = new Skill("Second Chance", 1, "Entertainer/aSecondChance.gif", "Entertainer/iSecondChance.gif");
      skill.Description = "Grants the Second Chance buff package.";
      skill.Modifiers[0] = new Modifier("Second Chacne Buff Package", "An inspiration buff effect giving the recipient a chance to automatically heal when struck in combat.", null);
      SkillSet[5][1] = skill;

      skill = new Skill("Go With The Flow", 1, "Entertainer/aGoWithTheFlow.gif", "Entertainer/iGoWithTheFlow.gif");
      skill.Description = "Grants the Go with the Flow buff package.";
      skill.Modifiers[0] = new Modifier("Go With The Flow Buff Package", "An inspiration buff effect that increases movement rate.", null);
      SkillSet[6][1] = skill;

      skill = new Skill("Intense Performer", 4, "Entertainer/aIntensePerformer.gif", "Entertainer/iIntensePerformer.gif");
      skill.Description = "Increases duration pulse for an inspiration buff by 1 min per point.";
      skill.Modifiers[0] = new Modifier("Inspiration Pulse Increase", "", new Array(1, 2, 3, 4));
      SkillSet[0][2] = skill;

      skill = new Skill("Affability", 4, "Entertainer/aAffability.gif", "Entertainer/iAffability.gif");
      skill.Description = "+5% bonus to camp performances per point. +5% base effectiveness to improv performances per point.";
      skill.Modifiers[0] = new Modifier("Performance Effectiveness Increase", "", new Array(5, 10, 15, 20));
      SkillSet[1][2] = skill;

      skill = new Skill("Flush With Success", 1, "Entertainer/aFlushWithSuccess.gif", "Entertainer/iFlushWithSuccess.gif");
      skill.Description = "Grants the Flush with Success buff package.";
      skill.Modifiers[0] = new Modifier("Flush With Success Buff Package", "An inspiration buff effect increasing experience earned.", null);
      SkillSet[4][2] = skill;

      skill = new Skill("Inspired Reactions", 4, "Entertainer/aInspiredReactions.gif", "Entertainer/iInspiredReactions.gif");
      skill.Description = "Increases the chance an inspiration buff reactive will trigger by 10% of the maximum per point.";
      skill.Modifiers[0] = new Modifier("Inspiration Reactive Proc Increase", "", new Array(10, 20, 30, 40));
      SkillSet[6][2] = skill;

      skill = new Skill("Lasting Impression", 4, "Entertainer/aLastingImpression.gif", "Entertainer/iLastingImpression.gif");
      skill.Description = "Increases duration cap of an inspiration buff by 30 minutes per point.";
      skill.Modifiers[0] = new Modifier("Inspiration Durration Increase", "", new Array(30, 60, 90, 120));
      skill.Requirment = SkillSet[0][2];
      SkillSet[0][3] = skill;

      skill = new Skill("Holography", 1, "Entertainer/aHolography.gif", "Entertainer/iHolography.gif");
      skill.Description = "Allows for 1 Holographic image for backup dancing or band members to be called.";
      skill.Modifiers[0] = new Modifier("Holographic Image", "Create Holographic Backup Image: A level 26 command that calls 1 Holographic backup image to perform with the entertainer.", null);
      SkillSet[3][3] = skill;

      skill = new Skill("Inspired Warfare", 4, "Entertainer/aInspiredWarfare.gif", "Entertainer/iInspiredWarfare.gif");
      skill.Description = "Increases the effect of combat-related buff packages by 1% per point.";
      skill.Modifiers[0] = new Modifier("Inspiration Combat Increase", "", new Array(1, 2, 3, 4));
      skill.Requirment = SkillSet[6][2];
      SkillSet[6][3] = skill;

      skill = new Skill("Improv", 1, "Entertainer/aImprov.gif", "Entertainer/iImprov.gif");
      skill.Description = "Allows performances without a cantina or camp and are 20% as effectice as normal performances.";
      skill.Modifiers[0] = new Modifier("Improv Performances", "", new Array(1, 0, 0, 0));
      skill.Requirment = SkillSet[1][2];
      SkillSet[1][4] = skill;

      skill = new Skill("Holographic Mastery", 2, "Entertainer/aHolographicMastery.gif", "Entertainer/iHolographicMastery.gif");
      skill.Description = "Allows 1 additional Holographic image per point.";
      skill.Modifiers[0] = new Modifier("Additional Holographic Images", "", new Array(1, 2, 0, 0));
      skill.Requirment = SkillSet[3][3];
      SkillSet[3][4] = skill;

      break;

    case "Munition Trader":

      skill = new Skill("Weaponsmith Dexterity", 4, "MunitionTrader/aWeaponsmithDexterity.gif", "MunitionTrader/iWeaponsmithDexterity.gif");
      skill.Description = "Increases the assembly skill mod for Weaponsmiths by +5 per point spent.";
      skill.Modifiers[0] = new Modifier("Weapon Assembly", "", new Array(5, 10, 15, 20));
      SkillSet[0][0] = skill;

      skill = new Skill("Artisan's Dexterity", 4, "MunitionTrader/aArtisansDexterity.gif", "MunitionTrader/iArtisansDexterity.gif");
      skill.Description = "Increases the general assembly skill modifier +5 per point spent.";
      skill.Modifiers[0] = new Modifier("Artisan Assembly", "", new Array(5, 10, 15, 20));
      SkillSet[3][0] = skill;

      skill = new Skill("Armorsmith Dexterity", 4, "MunitionTrader/aArmorsmithDexterity.gif", "MunitionTrader/iArmorsmithDexterity.gif");
      skill.Description = "Increases the assembly skill mod for Armorsmiths by +5 per point spent.";
      skill.Modifiers[0] = new Modifier("Armor Assembly", "", new Array(5, 10, 15, 20));
      SkillSet[6][0] = skill;

      skill = new Skill("Weaponsmith Insight", 2, "MunitionTrader/aWeaponsmithInsight.gif", "MunitionTrader/iWeaponsmithInsight.gif");
      skill.Description = "Reduces complexity of items for Weaponsmiths by -1 per point spent.";
      skill.Modifiers[0] = new Modifier("Weaponsmith Complexity Decrease", "", new Array(1, 2, 0, 0));
      SkillSet[1][1] = skill;

      skill = new Skill("Artisan's Hypothesis", 4, "MunitionTrader/aArtisansHypothesis.gif", "MunitionTrader/iArtisansHypothesis.gif");
      skill.Description = "Gives a bonus to the experimentation roll for artisan items by +3% per point spent.";
      skill.Modifiers[0] = new Modifier("Artisan Experimentation Roll Increase", "", new Array(3, 6, 9, 12));
      skill.Requirment = SkillSet[3][0];
      SkillSet[3][1] = skill;

      skill = new Skill("Armorsmith Insight", 2, "MunitionTrader/aArmorsmithInsight.gif", "MunitionTrader/iArmorsmithInsight.gif");
      skill.Description = "Reduces complexity of items for Armorsmiths by -1 per point spent.";
      skill.Modifiers[0] = new Modifier("Armorsmith Complexity Decrease", "", new Array(1, 2, 0, 0));
      SkillSet[5][1] = skill;

      skill = new Skill("Weaponsmith Hypothesis", 4, "MunitionTrader/aWeaponsmithHypothesis.gif", "MunitionTrader/iWeaponsmithHypothesis.gif");
      skill.Description = "Gives a bonus to the experimentation roll for Weaponsmiths by +3% per point spent.";
      skill.Modifiers[0] = new Modifier("Weaponsmith Experimentation Roll", "", new Array(3, 6, 9, 12));
      skill.Requirment = SkillSet[0][0];
      SkillSet[0][2] = skill;

      skill = new Skill("Resource Processing", 2, "MunitionTrader/aResourceProcessing.gif", "MunitionTrader/iResourceProcessing.gif");
      skill.Description = "Increases resource quality during crafting process by +1% per point spent.";
      skill.Modifiers[0] = new Modifier("Resource Quality Increase", "", new Array(1, 2, 0, 0));
      SkillSet[2][2] = skill;

      skill = new Skill("Armorsmith Hypothesis", 4, "MunitionTrader/aArmorsmithHypothesis.gif", "MunitionTrader/iArmorsmithHypothesis.gif");
      skill.Description = "Gives a bonus to the experimentation roll for Armorsmiths by +3% per point spent.";
      skill.Modifiers[0] = new Modifier("Armorsmith Experimentation Roll", "", new Array(3, 6, 9, 12));
      skill.Requirment = SkillSet[6][0];
      SkillSet[6][2] = skill;

      skill = new Skill("Weaponsmith Keen Understanding", 2, "MunitionTrader/aWeaponsmithKeenUnderstanding.gif", "MunitionTrader/iWeaponsmithKeenUnderstanding.gif");
      skill.Description = "Further reduces complexity of items for Weaponsmiths by -2 per point spent.";
      skill.Modifiers[0] = new Modifier("Weaponsmith Complexity Decrease", "", new Array(2, 4, 0, 0));
      skill.Requirment = SkillSet[1][1];
      SkillSet[1][3] = skill;

      skill = new Skill("Advanced Resource Refinement", 2, "MunitionTrader/aAdvancedResourceRefinement.gif", "MunitionTrader/iAdvancedResourceRefinement.gif");
      skill.Description = "Further increases resource quality during the crafting process by +1% per point spent.";
      skill.Modifiers[0] = new Modifier("Resource Quality Increase", "", new Array(1, 2, 0, 0));
      skill.Requirment = SkillSet[2][2];
      SkillSet[2][3] = skill;

      skill = new Skill("Artisan's Advanced Theory", 1, "MunitionTrader/aArtisansAdvancedTheory.gif", "MunitionTrader/iArtisansAdvancedTheory.gif");
      skill.Description = "Gives one extra experimentation point for artisan items (+10 to experimentation skill equals one point during crafting).";
      skill.Modifiers[0] = new Modifier("Artisan Experimentation", "", new Array(10, 0, 0, 0));
      skill.Requirment = SkillSet[3][1];
      SkillSet[3][3] = skill;

      skill = new Skill("Armorsmith Keen Understanding", 2, "MunitionTrader/aArmorsmithKeenUnderstanding.gif", "MunitionTrader/iArmorsmithKeenUnderstanding.gif");
      skill.Description = "Further reduces complexity of items for Armorsmiths by -2 per point spent.";
      skill.Modifiers[0] = new Modifier("Armorsmith Complexity Decrease", "", new Array(2, 4, 0, 0));
      skill.Requirment = SkillSet[5][1];
      SkillSet[5][3] = skill;

      skill = new Skill("Weaponsmith Advanced Theory", 1, "MunitionTrader/aWeaponsmithAdvancedTheory.gif", "MunitionTrader/iWeaponsmithAdvancedTheory.gif");
      skill.Description = "Gives one extra experimentation point for Weaponsmiths (+10 to experimentation skill equals one point during crafting).";
      skill.Modifiers[0] = new Modifier("Weapon Experimentation", "", new Array(10, 0, 0, 0));
      skill.Requirment = SkillSet[0][2];
      SkillSet[0][4] = skill;

      skill = new Skill("Armorsmith Attachment", 1, "MunitionTrader/aArmorsmithAttachment.gif", "MunitionTrader/iArmorsmithAttachment.gif");
      skill.Description = "Allows the creation of Skill Enhancing Attachments with multiple modifiers.";
      SkillSet[4][4] = skill;

      skill = new Skill("Armorsmith Socket Bonus", 1, "MunitionTrader/aArmorsmithSocketBonus.gif", "MunitionTrader/iArmorsmithSocketBonus.gif");
      skill.Description = "Grants the schematic to create the Socket Retrofitting Tool.";
      SkillSet[5][4] = skill;

      skill = new Skill("Armorsmith Advanced Theory", 1, "MunitionTrader/aArmorsmithAdvancedTheory.gif", "MunitionTrader/iArmorsmithAdvancedTheory.gif");
      skill.Description = "Gives one extra experimentation point for Armorsmiths (+10 to experimentation skill equals one point during crafting).";
      skill.Modifiers[0] = new Modifier("Armor Experimentation", "", new Array(10, 0, 0, 0));
      skill.Requirment = SkillSet[6][2];
      SkillSet[6][4] = skill;

      break;

    case "General":

      skill = new Skill("Business Accounting", 4, "MunitionTrader/aBusinessAccounting.gif", "MunitionTrader/iBusinessAccounting.gif");
      skill.Description = "Decreases the maintenance cost of vendors by 1 credit per point spent.";
      skill.Modifiers[0] = new Modifier("Vendor Cost Decrease", "", new Array(1, 2, 3, 4));
      SkillSet[0][0] = skill;

      skill = new Skill("Extraction Efficiency", 4, "MunitionTrader/aExtractionEfficiency.gif", "MunitionTrader/iExtractionEfficiency.gif");
      skill.Description = "Increases the amount of resources acquired through manual sampling by 25% per point spent.";
      skill.Modifiers[0] = new Modifier("Sampling Resource Increase", "", new Array(25, 50, 75, 100));
      SkillSet[6][0] = skill;

      skill = new Skill("Warehousing", 4, "MunitionTrader/aWarehousing.gif", "MunitionTrader/iWarehousing.gif");
      skill.Description = "Increases the vendor item limit by 50 items per point spent.";
      skill.Modifiers[0] = new Modifier("Vendor Item Limit", "", new Array(50, 100, 150, 200));
      skill.Requirment = SkillSet[0][0];
      SkillSet[0][1] = skill;

      skill = new Skill("Harvester Storage Efficiency", 4, "MunitionTrader/aHarvesterStorageEfficiency.gif", "MunitionTrader/iHarvesterStorageEfficiency.gif");
      skill.Description = "Harvester hopper size increased by 3% per point spent. Harvesters must be replaced to get bonuses.";
      skill.Modifiers[0] = new Modifier("Havester Hopper Increase", "", new Array(3, 6, 9, 12));
      SkillSet[4][1] = skill;

      skill = new Skill("Extraction Techniques", 3, "MunitionTrader/aExtractionTechniques.gif", "MunitionTrader/iExtractionTechniques.gif");
      skill.Description = "Decreases the amount of time between sampling loops by 5 seconds per point spent.";
      skill.Modifiers[0] = new Modifier("Sampling Time Decrease", "", new Array(5, 10, 15, 0));
      skill.Requirment = SkillSet[6][0];
      SkillSet[6][1] = skill;

      skill = new Skill("Advanced Personnel", 2, "MunitionTrader/aAdvancedPersonnel.gif", "MunitionTrader/iAdvancedPersonnel.gif");
      skill.Description = "Increases the number of vendors a merchant can place by +1 per point spent.";
      skill.Modifiers[0] = new Modifier("Vendors", "", new Array(1, 2, 0, 0));
      skill.Requirment = SkillSet[0][1];
      SkillSet[0][2] = skill;

      skill = new Skill("Factory Maintenance", 4, "MunitionTrader/aFactoryMaintenance.gif", "MunitionTrader/iFactoryMaintenance.gif");
      skill.Description = "Decreases factory maintenance cost by a percentage. Factories must be replaced to get bonuses.";
      skill.Modifiers[0] = new Modifier("Factory Cost Decrease", "", new Array(10, 15, 20, 30));
      SkillSet[2][2] = skill;

      skill = new Skill("Harvester Maintenance", 4, "MunitionTrader/aHarvesterMaintenance.gif", "MunitionTrader/iHarvesterMaintenance.gif");
      skill.Description = "Decreases harvester maintenance cost by a percentage. Harvesters must be replaced to get bonuses.";
      skill.Modifiers[0] = new Modifier("Harvester Cost Decrease", "", new Array(4, 8, 12, 16));
      skill.Requirment = SkillSet[4][1];
      SkillSet[4][2] = skill;

      skill = new Skill("Factory Energy Efficiency", 4, "MunitionTrader/aFactoryEnergyEfficiency.gif", "MunitionTrader/iFactoryEnergyEfficiency.gif");
      skill.Description = "Decreases factory energy use by 5% per point spent. Factories must be replaced to get bonuses.";
      skill.Modifiers[0] = new Modifier("Factory Energy Decrease", "", new Array(5, 10, 15, 20));
      skill.Requirment = SkillSet[2][2];
      SkillSet[2][3] = skill;

      skill = new Skill("Harvester Energy Efficiency", 4, "MunitionTrader/aHarvesterEnergyEfficiency.gif", "MunitionTrader/iHarvesterEnergyEfficiency.gif");
      skill.Description = "Decreases harvester energy use by 5% per point spent. Harvesters must be replaced to get bonuses.";
      skill.Modifiers[0] = new Modifier("Harvester Energy Decrease", "", new Array(5, 10, 15, 20));
      skill.Requirment = SkillSet[4][2];
      SkillSet[4][3] = skill;

      skill = new Skill("Deconstruction Techniques", 2, "MunitionTrader/aDeconstructionTechniques.gif", "MunitionTrader/iDeconstructionTechniques.gif");
      skill.Description = "Gives a bonus to reverse engineering of 5% per point spent.";
      skill.Modifiers[0] = new Modifier("Reverse Engineering Chance", "", new Array(5, 10, 0, 0));
      SkillSet[6][3] = skill;

      skill = new Skill("Advanced Production", 2, "MunitionTrader/aAdvancedProduction.gif", "MunitionTrader/iAdvancedProduction.gif");
      skill.Description = "Increases factory production rate by 5% per point spent. Factories must be replaced to get bonuses..";
      skill.Modifiers[0] = new Modifier("Factory Speed", "", new Array(5, 10, 0, 0));
      skill.Requirment = SkillSet[2][3];
      SkillSet[2][4] = skill;

      skill = new Skill("Advanced Harvesting", 2, "MunitionTrader/aAdvancedHarvesting.gif", "MunitionTrader/iAdvancedHarvesting.gif");
      skill.Description = "Increases the Harvester collection rates up to 30%. Harvesters must be replaced to get bonuses.";
      skill.Modifiers[0] = new Modifier("Harvester Collection Increase", "", new Array(20, 30, 0, 0));
      skill.Requirment = SkillSet[4][3];
      SkillSet[4][4] = skill;

      break;

    case "Domestic Trader":

      skill = new Skill("Tailor Dexterity", 4, "DomesticTrader/aTailorDexterity.gif", "DomesticTrader/iTailorDexterity.gif");
      skill.Description = "Increases the assembly skill mod for Tailors by +5 per point spent.";
      skill.Modifiers[0] = new Modifier("Cloathing Assembly", "", new Array(5, 10, 15, 20));
      SkillSet[0][0] = skill;

      skill = new Skill("Artisan's Dexterity", 4, "DomesticTrader/aArtisansDexterity.gif", "DomesticTrader/iArtisansDexterity.gif");
      skill.Description = "Increases the general assembly skill modifier +5 per point spent.";
      skill.Modifiers[0] = new Modifier("Artisan Assembly", "", new Array(5, 10, 15, 20));
      SkillSet[3][0] = skill;

      skill = new Skill("Chef Dexterity", 4, "DomesticTrader/aChefDexterity.gif", "DomesticTrader/iChefDexterity.gif");
      skill.Description = "Increases the assembly skill mod for Chefs by +5 per point spent.";
      skill.Modifiers[0] = new Modifier("Food Assembly", "", new Array(5, 10, 15, 20));
      SkillSet[6][0] = skill;

      skill = new Skill("Tailor Insight", 2, "DomesticTrader/aTailorInsight.gif", "DomesticTrader/iTailorInsight.gif");
      skill.Description = "Reduces complexity of items for Tailors by -1 per point spent.";
      skill.Modifiers[0] = new Modifier("Tailor Complexity Decrease", "", new Array(1, 2, 0, 0));
      SkillSet[1][1] = skill;

      skill = new Skill("Artisan's Hypothesis", 4, "DomesticTrader/aArtisansHypothesis.gif", "DomesticTrader/iArtisansHypothesis.gif");
      skill.Description = "Gives a bonus to the experimentation roll for artisan items by +3% per point spent.";
      skill.Modifiers[0] = new Modifier("Artisan Experimentation Roll Increase", "", new Array(3, 6, 9, 12));
      skill.Requirment = SkillSet[3][0];
      SkillSet[3][1] = skill;

      skill = new Skill("Chef Insight", 2, "DomesticTrader/aChefInsight.gif", "DomesticTrader/iChefInsight.gif");
      skill.Description = "Reduces complexity of items for Chefs by -1 per point spent.";
      skill.Modifiers[0] = new Modifier("Chef Complexity Decrease", "", new Array(1, 2, 0, 0));
      SkillSet[5][1] = skill;

      skill = new Skill("Tailor Hypothesis", 4, "DomesticTrader/aTailorHypothesis.gif", "DomesticTrader/iTailorHypothesis.gif");
      skill.Description = "Gives a bonus to the experimentation roll for Tailors by +3% per point spent.";
      skill.Modifiers[0] = new Modifier("Tailor Experimentation Roll Increase", "", new Array(3, 6, 9, 12));
      skill.Requirment = SkillSet[0][0];
      SkillSet[0][2] = skill;

      skill = new Skill("Resource Processing", 2, "DomesticTrader/aResourceProcessing.gif", "DomesticTrader/iResourceProcessing.gif");
      skill.Description = "Increases resource quality during crafting process by +1% per point spent.";
      skill.Modifiers[0] = new Modifier("Resource Quality Increase", "", new Array(1, 2, 0, 0));
      SkillSet[2][2] = skill;

      skill = new Skill("Chef Hypothesis", 4, "DomesticTrader/aChefHypothesis.gif", "DomesticTrader/iChefHypothesis.gif");
      skill.Description = "Gives a bonus to the experimentation roll for Chefs by +3% per point spent.";
      skill.Modifiers[0] = new Modifier("Chef Experimentation Roll Increase", "", new Array(3, 6, 9, 12));
      skill.Requirment = SkillSet[6][0];
      SkillSet[6][2] = skill;

      skill = new Skill("Tailor Keen Understanding", 2, "DomesticTrader/aTailorKeenUnderstanding.gif", "DomesticTrader/iTailorKeenUnderstanding.gif");
      skill.Description = "Further reduces complexity of items for Tailors by -2 per point spent.";
      skill.Modifiers[0] = new Modifier("Tailor Complexity Decrease", "", new Array(2, 4, 0, 0));
      skill.Requirment = SkillSet[1][1];
      SkillSet[1][3] = skill;

      skill = new Skill("Advanced Resource Refinement", 2, "DomesticTrader/aAdvancedResourceRefinement.gif", "DomesticTrader/iAdvancedResourceRefinement.gif");
      skill.Description = "Further increases resource quality during the crafting process by +1% per point spent.";
      skill.Modifiers[0] = new Modifier("Resource Quality Increase", "", new Array(1, 2, 0, 0));
      skill.Requirment = SkillSet[2][2];
      SkillSet[2][3] = skill;

      skill = new Skill("Artisan's Advanced Theory", 1, "DomesticTrader/aArtisansAdvancedTheory.gif", "DomesticTrader/iArtisansAdvancedTheory.gif");
      skill.Description = "Gives one extra experimentation point for artisan items (+10 to experimentation skill equals one point during crafting).";
      skill.Modifiers[0] = new Modifier("Artisan Experimentation", "", new Array(10, 0, 0, 0));
      skill.Requirment = SkillSet[3][1];
      SkillSet[3][3] = skill;

      skill = new Skill("Chef Keen Understanding", 2, "DomesticTrader/aChefKeenUnderstanding.gif", "DomesticTrader/iChefKeenUnderstanding.gif");
      skill.Description = "Further reduces complexity of items for Chefs by -2 per point spent.";
      skill.Modifiers[0] = new Modifier("Chef Complexity Decrease", "", new Array(2, 4, 0, 0));
      skill.Requirment = SkillSet[5][1];
      SkillSet[5][3] = skill;

      skill = new Skill("Tailor Advanced Theory", 1, "DomesticTrader/aTailorAdvancedTheory.gif", "DomesticTrader/iTailorAdvancedTheory.gif");
      skill.Description = "Gives one extra experimentation point for Tailors (+10 to experimentation skill equals one point during crafting).";
      skill.Modifiers[0] = new Modifier("Cloathing Experimentation", "", new Array(10, 0, 0, 0));
      skill.Requirment = SkillSet[0][2];
      SkillSet[0][4] = skill;

      skill = new Skill("Tailor Socket Bonus", 1, "DomesticTrader/aTailorSocketBonus.gif", "DomesticTrader/iTailorSocketBonus.gif");
      skill.Description = "Grants the Socket Retrofitting Tool schematic.";
      SkillSet[1][4] = skill;

      skill = new Skill("Tailor Attachment Upgrade", 1, "DomesticTrader/aTailorAttachmentUpgrade.gif", "DomesticTrader/iTailorAttachmentUpgrade.gif");
      skill.Description = "Allows the creation of Skill Enhancing Attachments with multiple modifiers.";
      skill.Modifiers[0] = new Modifier("Attachment Upgrade", "", new Array(1, 0, 0, 0));
      SkillSet[2][4] = skill;

      skill = new Skill("Chef Schematic 1", 1, "DomesticTrader/aChefSchematic1.gif", "DomesticTrader/iChefSchematic1.gif");
      skill.Description = "Grants the Light and Medium Additive schematics.";
      SkillSet[4][4] = skill;

      skill = new Skill("Chef Schematic 2", 1, "DomesticTrader/aChefSchematic2.gif", "DomesticTrader/iChefSchematic2.gif");
      skill.Description = "Grants the Medium and Heavy Additive schematics.";
      SkillSet[5][4] = skill;

      skill = new Skill("Chef Advanced Theory", 1, "DomesticTrader/aChefAdvancedTheory.gif", "DomesticTrader/iChefAdvancedTheory.gif");
      skill.Description = "Gives one extra experimation point for Chefs (+10 to experimentation skill equals one point during crafting).";
      skill.Modifiers[0] = new Modifier("Food Experimentation", "", new Array(10, 0, 0, 0));
      skill.Requirment = SkillSet[6][2];
      SkillSet[6][4] = skill;

      break;

    case "Engineer Trader":

      skill = new Skill("Droid Dexterity", 4, "EngineerTrader/aDroidDexterity.gif", "EngineerTrader/iDroidDexterity.gif");
      skill.Description = "Increases the assembly skill mod for Droids by +5 per point spent.";
      skill.Modifiers[0] = new Modifier("Droid Assembly", "", new Array(5, 10, 15, 20));
      SkillSet[0][0] = skill;

      skill = new Skill("Artisan's Dexterity", 4, "EngineerTrader/aArtisansDexterity.gif", "EngineerTrader/iArtisansDexterity.gif");
      skill.Description = "Increases the general assembly skill modifier +5 per point spent.";
      skill.Modifiers[0] = new Modifier("Artisan Assembly", "", new Array(5, 10, 15, 20));
      SkillSet[3][0] = skill;

      skill = new Skill("Weaponsmith Dexterity", 4, "EngineerTrader/aWeaponsmithDexterity.gif", "EngineerTrader/iWeaponsmithDexterity.gif");
      skill.Description = "Increases the assembly skill mod for Weaponsmiths by +5 per point spent.";
      skill.Modifiers[0] = new Modifier("Weapon Assembly", "", new Array(5, 10, 15, 20));
      SkillSet[6][0] = skill;

      skill = new Skill("Droid Insight", 2, "EngineerTrader/aDroidInsight.gif", "EngineerTrader/iDroidInsight.gif");
      skill.Description = "Reduces complexity of items for Droids by -1 per point spent.";
      skill.Modifiers[0] = new Modifier("Droid Complexity Decrease", "", new Array(1, 2, 0, 0));
      SkillSet[1][1] = skill;

      skill = new Skill("Artisan's Hypothesis", 4, "EngineerTrader/aArtisansHypothesis.gif", "EngineerTrader/iArtisansHypothesis.gif");
      skill.Description = "Gives a bonus to the experimentation roll for artisan items by +3% per point spent.";
      skill.Modifiers[0] = new Modifier("Artisan Experimentation Roll Increase", "", new Array(3, 6, 9, 12));
      skill.Requirment = SkillSet[3][0];
      SkillSet[3][1] = skill;

      skill = new Skill("Weaponsmith Insight", 2, "EngineerTrader/aWeaponsmithInsight.gif", "EngineerTrader/iWeaponsmithInsight.gif");
      skill.Description = "Reduces complexity of items for Weaponsmiths by -1 per point spent.";
      skill.Modifiers[0] = new Modifier("Weaponsmith Complexity Decrease", "", new Array(1, 2, 0, 0));
      SkillSet[5][1] = skill;

      skill = new Skill("Droid Hypothesis", 4, "EngineerTrader/aDroidHypothesis.gif", "EngineerTrader/iDroidHypothesis.gif");
      skill.Description = "Gives a bonus to the experimentation roll for Droids by +3% per point spent.";
      skill.Modifiers[0] = new Modifier("Droid Experimentation Roll Increase", "", new Array(3, 6, 9, 12));
      skill.Requirment = SkillSet[0][0];
      SkillSet[0][2] = skill;

      skill = new Skill("Resource Processing", 2, "EngineerTrader/aResourceProcessing.gif", "EngineerTrader/iResourceProcessing.gif");
      skill.Description = "Increases resource quality during crafting process by +1% per point spent.";
      skill.Modifiers[0] = new Modifier("Resource Quality Increase", "", new Array(1, 2, 0, 0));
      SkillSet[2][2] = skill;

      skill = new Skill("Weaponsmith Hypothesis", 4, "EngineerTrader/aWeaponsmithHypothesis.gif", "EngineerTrader/iWeaponsmithHypothesis.gif");
      skill.Description = "Gives a bonus to the experimentation roll for Weaponsmiths by +3% per point spent.";
      skill.Modifiers[0] = new Modifier("Weaponsmith Experimentation Roll", "", new Array(3, 6, 9, 12));
      skill.Requirment = SkillSet[6][0];
      SkillSet[6][2] = skill;

      skill = new Skill("Droid Keen Understanding", 2, "EngineerTrader/aDroidKeenUnderstanding.gif", "EngineerTrader/iDroidKeenUnderstanding.gif");
      skill.Description = "Further reduces complexity of items for Droids by -2 per point spent.";
      skill.Modifiers[0] = new Modifier("Droid Complexity Decrease", "", new Array(2, 4, 0, 0));
      skill.Requirment = SkillSet[1][1];
      SkillSet[1][3] = skill;

      skill = new Skill("Advanced Resource Refinement", 2, "EngineerTrader/aAdvancedResourceRefinement.gif", "EngineerTrader/iAdvancedResourceRefinement.gif");
      skill.Description = "Further increases resource quality during the crafting process by +1% per point spent.";
      skill.Modifiers[0] = new Modifier("Resource Quality Increase", "", new Array(1, 2, 0, 0));
      skill.Requirment = SkillSet[2][2];
      SkillSet[2][3] = skill;

      skill = new Skill("Artisan's Advanced Theory", 1, "EngineerTrader/aArtisansAdvancedTheory.gif", "EngineerTrader/iArtisansAdvancedTheory.gif");
      skill.Description = "Gives one extra experimentation point for artisan items (+10 to experimentation skill equals one point during crafting).";
      skill.Modifiers[0] = new Modifier("Artisan Experimentation", "", new Array(10, 0, 0, 0));
      skill.Requirment = SkillSet[3][1];
      SkillSet[3][3] = skill;

      skill = new Skill("Weaponsmith Keen Understanding", 2, "EngineerTrader/aWeaponsmithKeenUnderstanding.gif", "EngineerTrader/iWeaponsmithKeenUnderstanding.gif");
      skill.Description = "Further reduces complexity of items for Weaponsmiths by -2 per point spent.";
      skill.Modifiers[0] = new Modifier("Weaponsmith Complexity Decrease", "", new Array(2, 4, 0, 0));
      skill.Requirment = SkillSet[5][1];
      SkillSet[5][3] = skill;

      skill = new Skill("Droid Advanced Theory", 1, "EngineerTrader/aDroidAdvancedTheory.gif", "EngineerTrader/iDroidAdvancedTheory.gif");
      skill.Description = "Gives one extra experimentation point for Droids (+10 to experimentation skill equals one point during crafting).";
      skill.Modifiers[0] = new Modifier("Droid Experimentation", "", new Array(10, 0, 0, 0));
      skill.Requirment = SkillSet[0][2];
      SkillSet[0][4] = skill;

      skill = new Skill("Droid Schematics", 1, "EngineerTrader/aDroidSchematics.gif", "EngineerTrader/iDroidSchematics.gif");
      skill.Description = "Grants three new droid schematics.";
      SkillSet[1][4] = skill;

      skill = new Skill("Module And Chassis Schematics", 1, "EngineerTrader/aModuleAndChassisSchematics.gif", "EngineerTrader/iModuleAndChassisSchematics.gif");
      skill.Description = "Grants two modules and three droid chassis schematics.";
      SkillSet[2][4] = skill;

      skill = new Skill("Weaponsmith Attachment", 1, "EngineerTrader/aWeaponsmithAttachment.gif", "EngineerTrader/iWeaponsmithAttachment.gif");
      skill.Description = "Allows the creation of Skill Enhancing Attachments with multiple modifiers.";
      skill.Modifiers[0] = new Modifier("Attachment Upgrade", "", new Array(1, 0, 0, 0));
      SkillSet[4][4] = skill;

      skill = new Skill("Weaponsmith Socket Bonus", 1, "EngineerTrader/aWeaponsmithSocketBonus.gif", "EngineerTrader/iWeaponsmithSocketBonus.gif");
      skill.Description = "Grants the schematic to create the Socket Retrofitting Tool.";
      SkillSet[5][4] = skill;

      skill = new Skill("Weaponsmith Advanced Theory", 1, "EngineerTrader/aWeaponsmithAdvancedTheory.gif", "EngineerTrader/iWeaponsmithAdvancedTheory.gif");
      skill.Description = "Gives one extra experimation point for Weaponsmiths (+10 to experimentation skill equals one point during crafting).";
      skill.Modifiers[0] = new Modifier("Weapon Experimentation", "", new Array(10, 0, 0, 0));
      skill.Requirment = SkillSet[6][2];
      SkillSet[6][4] = skill;

      break;

    case "Structure Trader":

      skill = new Skill("Architect Dexterity", 4, "StructureTrader/aArchitectDexterity.gif", "StructureTrader/iArchitectDexterity.gif");
      skill.Description = "Increases the assembly skill mod for Architects by +5 per point spent.";
      skill.Modifiers[0] = new Modifier("Architect Assembly", "", new Array(5, 10, 15, 20));
      SkillSet[0][0] = skill;

      skill = new Skill("Artisan's Dexterity", 4, "StructureTrader/aArtisansDexterity.gif", "StructureTrader/iArtisansDexterity.gif");
      skill.Description = "Increases the general assembly skill modifier +5 per point spent.";
      skill.Modifiers[0] = new Modifier("Artisan Assembly", "", new Array(5, 10, 15, 20));
      SkillSet[3][0] = skill;

      skill = new Skill("Shipwright Dexterity", 4, "StructureTrader/aShipwrightDexterity.gif", "StructureTrader/iShipwrightDexterity.gif");
      skill.Description = "Increases the assembly skill mod for Shipwrights by +5 per point spent.";
      skill.Modifiers[0] = new Modifier("Chassis Assembly", "", new Array(5, 10, 15, 20));
      skill.Modifiers[1] = new Modifier("Engine Assembly", "", new Array(5, 10, 15, 20));
      skill.Modifiers[2] = new Modifier("Booster Assembly", "", new Array(5, 10, 15, 20));
      SkillSet[6][0] = skill;

      skill = new Skill("Architect Insight", 2, "StructureTrader/aArchitectInsight.gif", "StructureTrader/iArchitectInsight.gif");
      skill.Description = "Reduces complexity of items for Architects by -1 per point spent.";
      skill.Modifiers[0] = new Modifier("Architect Complexity Decrease", "", new Array(1, 2, 0, 0));
      SkillSet[1][1] = skill;

      skill = new Skill("Artisan's Hypothesis", 4, "StructureTrader/aArtisansHypothesis.gif", "StructureTrader/iArtisansHypothesis.gif");
      skill.Description = "Gives a bonus to the experimentation roll for artisan items by +3% per point spent.";
      skill.Modifiers[0] = new Modifier("Artisan Experimentation Roll Increase", "", new Array(3, 6, 9, 12));
      skill.Requirment = SkillSet[3][0];
      SkillSet[3][1] = skill;

      skill = new Skill("Shipwright Insight", 2, "StructureTrader/aShipwrightInsight.gif", "StructureTrader/iShipwrightInsight.gif");
      skill.Description = "Reduces complexity of items for Shipwrights by -1 per point spent.";
      skill.Modifiers[0] = new Modifier("Shipwright Complexity Decrease", "", new Array(1, 2, 0, 0));
      SkillSet[5][1] = skill;

      skill = new Skill("Architect Hypothesis", 4, "StructureTrader/aArchitectHypothesis.gif", "StructureTrader/iArchitectHypothesis.gif");
      skill.Description = "Gives a bonus to the experimentation roll for Architects by +3% per point spent.";
      skill.Modifiers[0] = new Modifier("Architect Experimentation Roll Increase", "", new Array(3, 6, 9, 12));
      skill.Requirment = SkillSet[0][0];
      SkillSet[0][2] = skill;

      skill = new Skill("Resource Processing", 2, "StructureTrader/aResourceProcessing.gif", "StructureTrader/iResourceProcessing.gif");
      skill.Description = "Increases resource quality during crafting process by +1% per point spent.";
      skill.Modifiers[0] = new Modifier("Resource Quality Increase", "", new Array(1, 2, 0, 0));
      SkillSet[2][2] = skill;

      skill = new Skill("Shipwright Hypothesis", 4, "StructureTrader/aShipwrightHypothesis.gif", "StructureTrader/iShipwrightHypothesis.gif");
      skill.Description = "Gives a bonus to the experimentation roll for Shipwrights by +3% per point spent.";
      skill.Modifiers[0] = new Modifier("Shipwright Experimentation Roll", "", new Array(3, 6, 9, 12));
      skill.Requirment = SkillSet[6][0];
      SkillSet[6][2] = skill;

      skill = new Skill("Architect Keen Understanding", 2, "StructureTrader/aArchitectKeenUnderstanding.gif", "StructureTrader/iArchitectKeenUnderstanding.gif");
      skill.Description = "Further reduces complexity of items for Architects by -2 per point spent.";
      skill.Modifiers[0] = new Modifier("Architect Complexity Decrease", "", new Array(2, 4, 0, 0));
      skill.Requirment = SkillSet[1][1];
      SkillSet[1][3] = skill;

      skill = new Skill("Advanced Resource Refinement", 2, "StructureTrader/aAdvancedResourceRefinement.gif", "StructureTrader/iAdvancedResourceRefinement.gif");
      skill.Description = "Further increases resource quality during the crafting process by +1% per point spent.";
      skill.Modifiers[0] = new Modifier("Resource Quality Increase", "", new Array(1, 2, 0, 0));
      skill.Requirment = SkillSet[2][2];
      SkillSet[2][3] = skill;

      skill = new Skill("Artisan's Advanced Theory", 1, "StructureTrader/aArtisansAdvancedTheory.gif", "StructureTrader/iArtisansAdvancedTheory.gif");
      skill.Description = "Gives one extra experimentation point for artisan items (+10 to experimentation skill equals one point during crafting).";
      skill.Modifiers[0] = new Modifier("Artisan Experimentation", "", new Array(10, 0, 0, 0));
      skill.Requirment = SkillSet[3][1];
      SkillSet[3][3] = skill;

      skill = new Skill("Shipwright Keen Understanding", 2, "StructureTrader/aShipwrightKeenUnderstanding.gif", "StructureTrader/iShipwrightKeenUnderstanding.gif");
      skill.Description = "Further reduces complexity of items for Shipwrights by -2 per point spent.";
      skill.Modifiers[0] = new Modifier("Shipwright Complexity Decrease", "", new Array(2, 4, 0, 0));
      skill.Requirment = SkillSet[5][1];
      SkillSet[5][3] = skill;

      skill = new Skill("Architect Advanced Theory", 1, "StructureTrader/aArchitectAdvancedTheory.gif", "StructureTrader/iArchitectAdvancedTheory.gif");
      skill.Description = "Gives one extra experimentation point for Architects (+10 to experimentation skill equals one point during crafting).";
      skill.Modifiers[0] = new Modifier("Architect Experimentation", "", new Array(10, 0, 0, 0));
      skill.Requirment = SkillSet[0][2];
      SkillSet[0][4] = skill;

      skill = new Skill("Architect Schematic 1", 1, "StructureTrader/aArchitectSchematic1.gif", "StructureTrader/iArchitectSchematic1.gif");
      skill.Description = "Grants elite harvester schematics. Harvesters must be replaced to get expertise bonuses.";
      SkillSet[1][4] = skill;

      skill = new Skill("Architect Schematic 2", 1, "StructureTrader/aArchitectSchematic2.gif", "StructureTrader/iArchitectSchematic2.gif");
      skill.Description = "Grants elite harvester component schematics.";
      SkillSet[2][4] = skill;

      skill = new Skill("Shipwright Schematic 1", 1, "StructureTrader/aShipwrightSchematic1.gif", "StructureTrader/iShipwrightSchematic1.gif");
      skill.Description = "Grants two huge cargo hold schematics, a Mark 6 Capacitor schematic, and a Mark 6 Fusion Reactor schematic.";
      SkillSet[4][4] = skill;

      skill = new Skill("Shipwright Schematic 2", 1, "StructureTrader/aShipwrightSchematic2.gif", "StructureTrader/iShipwrightSchematic2.gif");
      skill.Description = "Grants two engine stabilizer schematics and two engine overhaul schematics.";
      SkillSet[5][4] = skill;

      skill = new Skill("Shipwright Advanced Theory", 1, "StructureTrader/aShipwrightAdvancedTheory.gif", "StructureTrader/iShipwrightAdvancedTheory.gif");
      skill.Description = "Grants 1 extrra expertise point for Shipwrights (+10 to experimentation skill equals one point during crafting).";
      skill.Modifiers[0] = new Modifier("Chassis Experimentation", "", new Array(10, 0, 0, 0));
      skill.Modifiers[1] = new Modifier("Weapon Systems Experimentation", "", new Array(10, 0, 0, 0));
      skill.Modifiers[2] = new Modifier("Engine Experimentation", "", new Array(10, 0, 0, 0));
      skill.Requirment = SkillSet[6][2];
      SkillSet[6][4] = skill;

      break;

    case "Scoundrel":

      skill = new Skill("Enhanced Precision", 2, "Scoundrel/aEnhancedPrecision.gif", "Scoundrel/iEnhancedPrecision.gif");
      skill.Description = "Increases Precision by 25 per point spent.";
      skill.Modifiers[0] = new Modifier("Precision", "", new Array(25, 50, 0, 0));
      SkillSet[1][0] = skill;

      skill = new Skill("Hidden Padding", 2, "Scoundrel/aHiddenPadding.gif", "Scoundrel/iHiddenPadding.gif");
      skill.Description = "Increases armor by 1475 per points spent in Hidden Pockets, diminishes by one point per two points of regular armor.";
      skill.Modifiers[0] = new Modifier("Overridable Protection", "", new Array(1475, 2950, 0, 0));
      SkillSet[2][0] = skill;

      skill = new Skill("Gun Oil", 1, "Scoundrel/aGunOil.gif", "Scoundrel/iGunOil.gif");
      skill.Description = "Grants a 5% action cost reduction to all sepial abilities, while wielding a pistol.";
      skill.Modifiers[0] = new Modifier("Pistol Action Cost", "", new Array(5, 0, 0, 0));
      SkillSet[3][0] = skill;

      skill = new Skill("Elbow Grease", 1, "Scoundrel/aElbowGrease.gif", "Scoundrel/iElbowGrease.gif");
      skill.Description = "Grants a 5% action cost reduction to all special abilities, while wielding a melee weapon.";
      skill.Modifiers[0] = new Modifier("Melee Weapon Action Cost", "", new Array(5, 0, 0, 0));
      SkillSet[4][0] = skill;

      skill = new Skill("Enhanced Luck", 2, "Scoundrel/aEnhancedLuck.gif", "Scoundrel/iEnhancedLuck.gif");
      skill.Description = "Increases Luck by 25 per point spent.";
      skill.Modifiers[0] = new Modifier("Luck", "", new Array(25, 50, 0, 0));
      SkillSet[5][0] = skill;

      skill = new Skill("Spot A Sucker", 1, "Scoundrel/aSpotASucker.gif", "Scoundrel/iSpotASucker.gif");
      skill.Description = "Grants the Spot a Sucker line of debuffs.";
      skill.Modifiers[0] = new Modifier("Spot A Sucker 1", "Spot a Sucker 1: A powerful debuff that lowers precision on the target.", null);
      SkillSet[1][1] = skill;

      skill = new Skill("Hair Trigger", 4, "Scoundrel/aHairTrigger.gif", "Scoundrel/iHairTrigger.gif");
      skill.Description = "Decreases Fast Draw line off attacks action cost 4% per point spent while using a pistol.";
      skill.Modifiers[0] = new Modifier("Fast Draw/Precision Strike Action Cost", "", new Array(4, 8, 12, 16));
      skill.Requirment = SkillSet[3][0];
      SkillSet[3][1] = skill;

      skill = new Skill("Switcheroo", 4, "Scoundrel/aSwitcheroo.gif", "Scoundrel/iSwitcheroo.gif");
      skill.Description = "Increase the chance to be hit by a glancing blow by 2% per point spent while using a melee weapon.";
      skill.Modifiers[0] = new Modifier("Glancing Blow Melee Defense", "", new Array(2, 4, 6, 8));
      skill.Requirment = SkillSet[4][0];
      SkillSet[4][1] = skill;

      skill = new Skill("Off The Cuff", 1, "Scoundrel/aOffTheCuff.gif", "Scoundrel/iOffTheCuff.gif");
      skill.Description = "A buff that allows the next strike to do a critical hit.";
      skill.Modifiers[0] = new Modifier("Off The Cuff", "Off the Cuff: Buffs you with the ability to strike a critical hit with your next attack.", null);
      SkillSet[5][1] = skill;

      skill = new Skill("Meager Fortune", 2, "Scoundrel/aMeagerFortune.gif", "Scoundrel/iMeagerFortune.gif");
      skill.Description = "Enemies aflicted with Spot a Sucker are 25% less likely to score a critical hit for each point spent in Meager Fortune.";
      skill.Modifiers[0] = new Modifier("Critical Chance Decrease", "", new Array(25, 50, 0, 0));
      skill.Requirment = SkillSet[1][1];
      SkillSet[1][2] = skill;

      skill = new Skill("Lined Pockets", 2, "Scoundrel/aLinedPockets.gif", "Scoundrel/iLinedPockets.gif");
      skill.Description = "Increases armor by 1475 per points spent in Lined Pockets, diminishes by one point per two points of regular armor.";
      skill.Modifiers[0] = new Modifier("Overridable Protection", "", new Array(1475, 2950, 0, 0));
      skill.Requirment = SkillSet[2][0];
      SkillSet[2][2] = skill;

      skill = new Skill("Precise Bead", 2, "Scoundrel/aPreciseBead.gif", "Scoundrel/iPreciseBead.gif");
      skill.Description = "5% per point spent to increase your critical chance rate with a pistol. Increased pistol range by 5m per point.";
      skill.Modifiers[0] = new Modifier("Pistol Critical Chance", "", new Array(5, 10, 0, 0));
      skill.Modifiers[1] = new Modifier("Pistol Range Bonus", "", new Array(5, 10, 0, 0));
      skill.Requirment = SkillSet[3][1];
      SkillSet[3][2] = skill;

      skill = new Skill("Head Crack", 2, "Scoundrel/aHeadCrack.gif", "Scoundrel/iHeadCrack.gif");
      skill.Description = "A passive chacne of 6% per point spent to stun an opponent with a melee weapon.";
      skill.Modifiers[0] = new Modifier("Melee Stun Chance", "", new Array(6, 12, 0, 0));
      skill.Requirment = SkillSet[4][1];
      SkillSet[4][2] = skill;

      skill = new Skill("Double Deal", 2, "Scoundrel/aDoubleDeal.gif", "Scoundrel/iDoubleDeal.gif");
      skill.Description = "A passive chance of 10% per point spent to reset Off the Cuff's cooldown.";
      skill.Modifiers[0] = new Modifier("Double Deal Chance", "", new Array(10, 20, 0, 0));
      skill.Requirment = SkillSet[5][1];
      SkillSet[5][2] = skill;

      skill = new Skill("Wretched Fate", 2, "Scoundrel/aWretchedFate.gif", "Scoundrel/iWretchedFate.gif");
      skill.Description = "While afflicted with Spot a Sucker, enemies glancing blow 25% more often per point spent.";
      skill.Modifiers[0] = new Modifier("Glancing Blow Chance", "", new Array(25, 50, 0, 0));
      skill.Requirment = SkillSet[1][2];
      SkillSet[1][3] = skill;

      skill = new Skill("Idiot Proof Plan", 2, "Scoundrel/aIdiotProofPlan.gif", "Scoundrel/iIdiotProofPlan.gif");
      skill.Description = "All damage is reduced by 2% per point.";
      skill.Modifiers[0] = new Modifier("Damage Decrease", "", new Array(2, 4, 0, 0));
      skill.Requirment = SkillSet[2][2];
      SkillSet[2][3] = skill;

      skill = new Skill("Hammer Fanning", 4, "Scoundrel/aHammerFanning.gif", "Scoundrel/iHammerFanning.gif");
      skill.Description = "A passive chance of 5% per point spent to shoot twice per second with a pistol.";
      skill.Modifiers[0] = new Modifier("Hammer Fanning Chance", "", new Array(5, 10, 15, 20));
      skill.Requirment = SkillSet[3][2];
      SkillSet[3][3] = skill;

      skill = new Skill("One-Two Pummel", 4, "Scoundrel/aOne-TwoPummel.gif", "Scoundrel/iOne-TwoPummel.gif");
      skill.Description = "A passive chance of 4% per point spent to strike twice as fast as usual with a melee weapon.";
      skill.Modifiers[0] = new Modifier("One-Two pummel Chance", "", new Array(4, 8, 12, 16));
      skill.Requirment = SkillSet[4][2];
      SkillSet[4][3] = skill;

      skill = new Skill("End Of The Line", 1, "Scoundrel/aEndOfTheLine.gif", "Scoundrel/iEndOfTheLine.gif");
      skill.Description = "Grants the End of the Line attack, which allows a critical attack to do double damage.";
      skill.Modifiers[0] = new Modifier("End Of The Line", "End of the Line: Buffs you with the ability do deal double damage once, when you critical hit.", null);
      skill.Requirment = SkillSet[5][2];
      SkillSet[5][3] = skill;

      skill = new Skill("Poor Prospect", 2, "Scoundrel/aPoorProspect.gif", "Scoundrel/iPoorProspect.gif");
      skill.Description = "Enemies afflicted with Spot a Sucker deal up to 20% less damage per point spent in Poor Prospect.";
      skill.Modifiers[0] = new Modifier("Damage Decreases Chance", "", new Array(20, 40, 0, 0));
      skill.Requirment = SkillSet[1][3];
      SkillSet[1][4] = skill;

      skill = new Skill("Narrow Escape", 1, "Scoundrel/aNarrowEscape.gif", "Scoundrel/iNarrowEscape.gif");
      skill.Description = "Grants the Narrow Escape line of abilities, which allow a Smuggler to temporarily become immune to snare.";
      skill.Modifiers[0] = new Modifier("Narrow Escape 1", "Narrow Escape 1: A level 34 buff that cures you of snares and makes you temporarily immune to being snared.", null);
      SkillSet[2][4] = skill;

      skill = new Skill("Break The Deal", 1, "Scoundrel/aBreakTheDeal.gif", "Scoundrel/iBreakTheDeal.gif");
      skill.Description = "Lower an enemy's damage by 75% for 5 seconds.";
      skill.Modifiers[0] = new Modifier("Break The Deal", "Break the Deal: An ability that befuddles your target causing all attacks to deal only 25% damage.", null);
      skill.Requirment = SkillSet[3][3];
      SkillSet[3][4] = skill;

      skill = new Skill("Bad Odds", 1, "Scoundrel/aBadOdds.gif", "Scoundrel/iBadOdds.gif");
      skill.Description = "Grants the Bad Odds line of DOT attacks.";
      skill.Modifiers[0] = new Modifier("Bad Odds 1", "Bad Odds 1: A level 34 poisonous attack that causes your opponent to take damage over time.", null);
      skill.Requirment = SkillSet[4][3];
      SkillSet[4][4] = skill;

      skill = new Skill("Nerf Herder", 1, "Scoundrel/aNerfHerder.gif", "Scoundrel/iNerfHerder.gif");
      skill.Description = "Grands the Nerf Herder attack, which allows a critical attack to root an opponent.";
      skill.Modifiers[0] = new Modifier("Nerf Herder", "Nerf Herder: A self buff that allows your next critical hit with a special action to root your opponent.", null);
      skill.Requirment = SkillSet[5][3];
      SkillSet[5][4] = skill;

      break;

    case "Smuggler":

      skill = new Skill("Skullduggery", 1, "Scoundrel/aSkullduggery.gif", "Scoundrel/iSkullduggery.gif");
      skill.Description = "A targetable debuff that increases the chance for an affected target to miss based on 4% of the Smuggler's luck.";
      skill.Modifiers[0] = new Modifier("Skullduggery", "A debuff that increases a target's chance to miss.", null);
      SkillSet[1][0] = skill;

      skill = new Skill("Blindside", 2, "Scoundrel/aBlindside.gif", "Scoundrel/iBlindside.gif");
      skill.Description = "Increases the debuff duration of Skullduggery by 13 seconds per point spent.";
      skill.Modifiers[0] = new Modifier("Skullduggery Duration Increase", "", new Array(13, 26, 0, 0));
      skill.Requirment = SkillSet[1][0];
      SkillSet[0][0] = skill;

      skill = new Skill("Eat Dirt", 2, "Scoundrel/aEatDirt.gif", "Scoundrel/iEatDirt.gif");
      skill.Description = "Increases Skullduggery's miss chance by 6% of the Smugglers luck per point spent.";
      skill.Modifiers[0] = new Modifier("Combat Miss Increase Percentage By Luck", "", new Array(6, 12, 0, 0));
      skill.Requirment = SkillSet[1][0];
      SkillSet[2][0] = skill;

      skill = new Skill("Easy Money", 2, "Scoundrel/aEasyMoney.gif", "Scoundrel/iEasyMoney.gif");
      skill.Description = "Adds +25 Luck per point spent.";
      skill.Modifiers[0] = new Modifier("Luck", "", new Array(25, 50, 0, 0));
      SkillSet[3][0] = skill;

      skill = new Skill("Ploy", 2, "Scoundrel/aPloy.gif", "Scoundrel/iPloy.gif");
      skill.Description = "Adds +25 Precision per point spent.";
      skill.Modifiers[0] = new Modifier("Precision", "", new Array(25, 50, 0, 0));
      SkillSet[4][0] = skill;

      skill = new Skill("Healthy Profits", 1, "Scoundrel/aHealthyProfits.gif", "Scoundrel/iHealthyProfits.gif");
      skill.Description = "Grants the ability to call a Medic to your side through a favor, instead of a Smuggler.";
      skill.Modifiers[0] = new Modifier("Call a Favor 2: Medic", "Call a Favor 2: The smuggler calls in a favor for a medic to aid in combat.", null);
      SkillSet[5][0] = skill;

      skill = new Skill("Impossible Odds", 1, "Scoundrel/aImpossibleOdds.gif", "Scoundrel/iImpossibleOdds.gif");
      skill.Description = "A targetable debuff that increases the chance for an affected target to be hit based on 4% of the Smuggler's luck.";
      skill.Modifiers[0] = new Modifier("Impossible Odds", "Impossible Odds: A debuff that increases the chance for a target to be hit.", null);
      skill.Requirment = SkillSet[1][0];
      SkillSet[1][1] = skill;

      skill = new Skill("Sleight Of Hand", 2, "Scoundrel/aSleightOfHand.gif", "Scoundrel/iSleightOfHand.gif");
      skill.Description = "Increases Skullduggery's hit chance by 8% of the Smuggler's luck per point spent.";
      skill.Modifiers[0] = new Modifier("Combat Hit Increase Percentage By Luck", "", new Array(8, 16, 0, 0));
      skill.Requirment = SkillSet[1][1];
      SkillSet[0][1] = skill;

      skill = new Skill("Loaded Chance Cubes", 2, "Scoundrel/aLoadedChanceCubes.gif", "Scoundrel/iLoadedChanceCubes.gif");
      skill.Description = "Increases hit rolls by 5% of the smuggler's luck per point spent on a target and increases duration by 13 seconds per point spent.";
      skill.Modifiers[0] = new Modifier("Hit Roll Percentage Increase By Luck", "", new Array(5, 10, 0, 0));
      skill.Modifiers[1] = new Modifier("Impossible Odds Duration Increase", "", new Array(13, 26, 0, 0));
      skill.Requirment = SkillSet[1][1];
      SkillSet[2][1] = skill;

      skill = new Skill("Feeling Lucky", 4, "Scoundrel/aFeelingLucky.gif", "Scoundrel/iFeelingLucky.gif");
      skill.Description = "Chance to find smuggler loot +1% per point spent over base chance; Finding smuggler loot grants a +100 Luck buff.";
      skill.Modifiers[0] = new Modifier("Smuggler Loot Bonus", "", new Array(1, 2, 3, 4));
      skill.Modifiers[1] = new Modifier("Feeling Lucky Proc", "", new Array(1, 2, 3, 4));
      skill.Requirment = SkillSet[3][0];
      SkillSet[3][1] = skill;

      skill = new Skill("Scandal", 4, "Scoundrel/aScandal.gif", "Scoundrel/iScandal.gif");
      skill.Description = "Increases area affect damage by 1% per point.";
      skill.Modifiers[0] = new Modifier("AOE Damage Bonus", "", new Array(1, 2, 3, 4));
      skill.Requirment = SkillSet[4][0];
      SkillSet[4][1] = skill;

      skill = new Skill("Lucky Break", 4, "Scoundrel/aLuckyBreak.gif", "Scoundrel/iLuckyBreak.gif");
      skill.Description = "While Feeling Lucky, Lucky Break hase a 1% chance per point to buff 100% critical hits for 10 seconds.";
      skill.Modifiers[0] = new Modifier("Card Up Your Sleeve", "", new Array(1, 2, 3, 4));
      skill.Requirment = SkillSet[3][1];
      SkillSet[3][2] = skill;

      skill = new Skill("Smooth Move", 4, "Scoundrel/aSmoothMove.gif", "Scoundrel/iSmoothMove.gif");
      skill.Description = "All damage is increased by 1%, while using a pistol or melee weapon.";
      skill.Modifiers[0] = new Modifier("Melee Damage Increase", "", new Array(1, 2, 3, 4));
      skill.Modifiers[1] = new Modifier("Pistol Damage", "", new Array(1, 2, 3, 4));
      skill.Requirment = SkillSet[4][1];
      SkillSet[4][2] = skill;

      skill = new Skill("Off The Books", 1, "Scoundrel/aOffTheBooks.gif", "Scoundrel/iOffTheBooks.gif");
      skill.Description = "Grants the Off the Books ability. Party members get a +50 luck buff when the dealer leaves.";
      skill.Modifiers[0] = new Modifier("Off The Books", "Off the Books: Communicates with a junk dealer to visit your location for party members to sell to.", null);
      SkillSet[5][2] = skill;

      skill = new Skill("Pistol Whip", 1, "Scoundrel/aPistolWhip.gif", "Scoundrel/iPistolWhip.gif");
      skill.Description = "Grants the Pistol Whip line of attacks.";
      skill.Modifiers[0] = new Modifier("Pistol Whip 1", "Pistol Whip 1: A melee attack with a pistol or melee weapon that causes damage. It can be trained to stun an enemy, causing that enemy to be rooted and unable to attack.", null);
      skill.Requirment = SkillSet[1][1];
      SkillSet[1][3] = skill;

      skill = new Skill("Flying Tackle", 2, "Scoundrel/aFlyingTackle.gif", "Scoundrel/iFlyingTackle.gif");
      skill.Description = "Increases the chance to stan an opponent with Pistol Whip by 50% per point spent.";
      skill.Modifiers[0] = new Modifier("Pistol whip Stun Chance", "", new Array(50, 100, 0, 0));
      skill.Requirment = SkillSet[1][3];
      SkillSet[0][3] = skill;

      skill = new Skill("Beat Down", 2, "Scoundrel/aBeatDown.gif", "Scoundrel/iBeatDown.gif");
      skill.Description = "Increases the Pistol Whip stun duration by 1 second per point spent.";
      skill.Modifiers[0] = new Modifier("Pistol whip Duration Increase", "", new Array(1, 2, 0, 0));
      skill.Requirment = SkillSet[1][3];
      SkillSet[2][3] = skill;

      skill = new Skill("Card Up Your Sleeve", 4, "Scoundrel/aCardUpYourSleeve.gif", "Scoundrel/iCardUpYourSleeve.gif");
      skill.Description = "10% chance per point to buff the player with double attacking for 5 seconds, while Feeling Lucky and Lucky Break.";
      skill.Modifiers[0] = new Modifier("Double Hit Chance", "", new Array(10, 20, 30, 40));
      skill.Modifiers[1] = new Modifier("Ranged Double Attack", "", new Array(25, 50, 75, 100));
      skill.Modifiers[2] = new Modifier("Melee Double Attack", "", new Array(25, 50, 75, 100));
      skill.Requirment = SkillSet[3][2];
      SkillSet[3][3] = skill;

      skill = new Skill("False Hope", 1, "Scoundrel/aFalseHope.gif", "Scoundrel/iFalseHope.gif");
      skill.Description = "Grants the False Hope ability, which is a stun area effect attack.";
      skill.Modifiers[0] = new Modifier("False Hope", "False Hope: Toss a fake crate of goods booby trapped with a stun device.", null);
      skill.Requirment = SkillSet[4][2];
      SkillSet[4][3] = skill;

      skill = new Skill("Under The Counter", 2, "Scoundrel/aUnderTheCounter.gif", "Scoundrel/iUnderTheCounter.gif");
      skill.Description = "Adds +25 Precision per point spent to the Off the Books buff.";
      skill.Modifiers[0] = new Modifier("Precision Bonus", "", new Array(25, 50, 0, 0));
      skill.Requirment = SkillSet[5][2];
      SkillSet[5][3] = skill;

      skill = new Skill("Inside Information", 1, "Scoundrel/aInsideInformation.gif", "Scoundrel/iInsideInformation.gif");
      skill.Description = "Grants the Inside Information ability.";
      skill.Modifiers[0] = new Modifier("Inside Information", "Inside Information: Communicates with a contact within Jabba's palace to get information on bounties.", null);
      SkillSet[6][3] = skill;

      skill = new Skill("Blaster At Your Side", 2, "Scoundrel/aBlasterAtYourSide.gif", "Scoundrel/iBlasterAtYourSide.gif");
      skill.Description = "Increases damage by 100% of class level per point spent.";
      skill.Modifiers[0] = new Modifier("Level Add To Damage", "", new Array(100, 200, 0, 0));
      skill.Requirment = SkillSet[1][3];
      SkillSet[1][4] = skill;

      skill = new Skill("Quick Fix", 4, "Scoundrel/aQuickFix.gif", "Scoundrel/iQuickFix.gif");
      skill.Description = "+10% damage healed to your self heals per point spent.";
      skill.Modifiers[0] = new Modifier("Smuggler Healing", "", new Array(10, 20, 30, 40));
      SkillSet[3][4] = skill;

      skill = new Skill("Fake Goods", 2, "Scoundrel/aFakeGoods.gif", "Scoundrel/iFakeGoods.gif");
      skill.Description = "Extends the duration of the root from False Hope by one second per point and reduces the delay to fire by one second per point.";
      skill.Modifiers[0] = new Modifier("False Hope Duration", "", new Array(1, 2, 0, 0));
      skill.Modifiers[1] = new Modifier("False Hope Delay Reduction", "", new Array(1, 2, 0, 0));
      skill.Requirment = SkillSet[4][3];
      SkillSet[4][4] = skill;

      skill = new Skill("Best Deal Ever", 2, "Scoundrel/aBestDealEver.gif", "Scoundrel/iBestDealEver.gif");
      skill.Description = "Smuggler gets 5% of profits per point. Off the Books buff reduces damage by 3% per point spent.";
      skill.Modifiers[0] = new Modifier("Damage Reduction", "", new Array(3, 6, 0, 0));
      skill.Modifiers[1] = new Modifier("Smuggler Profit Cut", "", new Array(5, 10, 0, 0));
      skill.Requirment = SkillSet[5][3];
      SkillSet[5][4] = skill;

      skill = new Skill("Shoot First", 1, "Scoundrel/aShootFirst.gif", "Scoundrel/iShootFirst.gif");
      skill.Description = "Grants the Shoot First line of attacks. This attack has a side-effect of revealing Bounty Hunters that are hunting you, if you use it on them.";
      skill.Modifiers[0] = new Modifier("Shoot First 1", "Shoot First 1: A level 34 attack that does massive damage and can initiate combat with Bounty Hunters hunting you.", null);
      skill.Requirment = SkillSet[6][3];
      SkillSet[6][4] = skill;

      break;

    case "Field Survival":

      skill = new Skill("Martial Training", 4, "Medic/aMartialTraining.gif", "Medic/iMartialTraining.gif");
      skill.Description = "Permanently increases Strengt.";
      skill.Modifiers[0] = new Modifier("Strength", "Modifies Strength", new Array(10, 20, 30, 50));
      SkillSet[0][0] = skill;

      skill = new Skill("Enhance Strength", 1, "Medic/aEnhanceStrength.gif", "Medic/iEnhanceStrength.gif");
      skill.Description = "Enhances the target's Strength statistic.";
      skill.Modifiers[0] = new Modifier("Enhance Strength (Mark 1)", "Enhance Strength (Mark 1): Enhances the target's Strength statistic.", null);
      skill.Requirment = SkillSet[0][0];
      SkillSet[1][0] = skill;

      skill = new Skill("Footwork", 4, "Medic/aFootwork.gif", "Medic/iFootwork.gif");
      skill.Description = "Permanently increases Agility.";
      skill.Modifiers[0] = new Modifier("Agility", "Modifies Agility", new Array(10, 20, 30, 50));
      SkillSet[2][0] = skill;

      skill = new Skill("Enhance Agility", 1, "Medic/aEnhanceAgility.gif", "Medic/iEnhanceAgility.gif");
      skill.Description = "Enhances the target's Agility statistic.";
      skill.Modifiers[0] = new Modifier("Enhance Agility (Mark 1)", "Enhance Agility (Mark 1): Enhances the target's Agility statistic.", null);
      skill.Requirment = SkillSet[2][0];
      SkillSet[4][0] = skill;

      skill = new Skill("Marksman Training", 4, "Medic/aMarksmanTraining.gif", "Medic/iMarksmanTraining.gif");
      skill.Description = "Permanently increases Precision.";
      skill.Modifiers[0] = new Modifier("Precision", "Modifies Precision", new Array(10, 20, 30, 50));
      SkillSet[5][0] = skill;

      skill = new Skill("Enhance Precision", 1, "Medic/aEnhancePrecision.gif", "Medic/iEnhancePrecision.gif");
      skill.Description = "Enhances the target's Precision statistic.";
      skill.Modifiers[0] = new Modifier("Enhance Precision (Mark 1)", "Enhance Precision (Mark 1): Enhances the target's Precision statistic.", null);
      skill.Requirment = SkillSet[5][0];
      SkillSet[6][0] = skill;

      skill = new Skill("Carbine Accuracy", 4, "Medic/aCarbineAccuracy.gif", "Medic/iCarbineAccuracy.gif");
      skill.Description = "Increases damage while using Carbines.";
      skill.Modifiers[0] = new Modifier("Carbine Damage", "", new Array(2, 4, 7, 10));
      SkillSet[0][1] = skill;

      skill = new Skill("Melee Accuracy", 4, "Medic/aUnarmedAccuracy.gif", "Medic/iUnarmedAccuracy.gif");
      skill.Description = "Increases melee and unarmed weapon damage.";
      skill.Modifiers[0] = new Modifier("Melee Damage Increase", "", new Array(3, 6, 10, 15));
      SkillSet[2][1] = skill;

      skill = new Skill("Subtlety", 3, "Medic/aSubtlety.gif", "Medic/iSubtlety.gif");
      skill.Description = "Reduces Hate generated by healing allies in combat.";
      skill.Modifiers[0] = new Modifier("Healing Hate Reduction", "", new Array(10, 30, 50, 0));
      SkillSet[3][1] = skill;

      skill = new Skill("Kinetic Armor", 4, "Medic/aKineticArmor.gif", "Medic/iKineticArmor.gif");
      skill.Description = "Permanently increases Kinetic Protection and gives a slight bonus to all protection types.";
      skill.Modifiers[0] = new Modifier("Kinetic Protection", "", new Array(150, 300, 450, 600));
      skill.Modifiers[1] = new Modifier("Innate Armor", "", new Array(75, 150, 225, 300));
      SkillSet[4][1] = skill;

      skill = new Skill("Energy Armor", 4, "Medic/aEnergyArmor.gif", "Medic/iEnergyArmor.gif");
      skill.Description = "Permanently increases Energy Protection and gives a slight bonus to all protection types.";
      skill.Modifiers[0] = new Modifier("Energy Protection", "", new Array(150, 300, 450, 600));
      skill.Modifiers[1] = new Modifier("Innate Armor", "", new Array(75, 150, 225, 300));
      SkillSet[6][1] = skill;

      skill = new Skill("Deuterium Rounds", 1, "Medic/aDeuteriumRounds.gif", "Medic/iDeuteriumRounds.gif");
      skill.Description = "Special ammunition gives you a chance to set your target on fire while using Carbines.";
      skill.Modifiers[0] = new Modifier("Deuterium Rounds", "", new Array(5, 0, 0, 0));
      skill.Requirment = SkillSet[0][1];
      SkillSet[0][2] = skill;

      skill = new Skill("Poison Knuckle", 1, "Medic/aPoisonKnuckle.gif", "Medic/iPoisonKnuckle.gif");
      skill.Description = "Your melee and unarmed attacks have a chance of poisoning your opponent.";
      skill.Modifiers[0] = new Modifier("Poison Knuckle", "", new Array(5, 0, 0, 0));
      skill.Requirment = SkillSet[2][1];
      SkillSet[2][2] = skill;

      skill = new Skill("Lethal Aim", 3, "Medic/aLethalAim.gif", "Medic/iLethalAim.gif");
      skill.Description = "Increases your critical hit chance against humanoids.";
      skill.Modifiers[0] = new Modifier("PvP Critical Chance", "", new Array(1, 3, 5, 0));
      skill.Modifiers[1] = new Modifier("Humanoid Critical Chance", "", new Array(1, 3, 5, 0));
      SkillSet[0][3] = skill;

      skill = new Skill("Lethal Strikes", 3, "Medic/aLethalStrikes.gif", "Medic/iLethalStrikes.gif");
      skill.Description = "Increases your critical hit chance while using melee and unarmed weapons.";
      skill.Modifiers[0] = new Modifier("Melee Critical Chance", "", new Array(1, 3, 5, 0));
      SkillSet[2][3] = skill;

      skill = new Skill("Evasion", 1, "Medic/aEvasion.gif", "Medic/iEvasion.gif");
      skill.Description = "Attempt to elude all non-boss enemies angry with you and exit combat. Reduces hate on bosses.";
      skill.Modifiers[0] = new Modifier("Evasion", "Evasion: You attempt to elude non-boss foes currently angry with you, ending combat and provides a defensive bonus for a short period of time. Reduces hate on bosses.", null);
      skill.Requirment = SkillSet[3][1];
      SkillSet[3][3] = skill;

      skill = new Skill("Burst", 1, "Medic/aBurst.gif", "Medic/iBurst.gif");
      skill.Description = "Unleashes a whild spray of gun fire causing damage and decreasing target's combat effectiveness.";
      skill.Modifiers[0] = new Modifier("Burst (Mark 1)", "Burst (Mark 1): Unleashes a wild spray of gun fire in an attempt to cow opponents. This leaves them with a slightly decreased chance to score Critical Hits against you and increasing their chance of Glancing Blows against you. Requires an equipped Carbine.", null);
      skill.Requirment = SkillSet[0][3];
      SkillSet[0][4] = skill;

      skill = new Skill("Flurry", 1, "Medic/aFlurry.gif", "Medic/iFlurry.gif");
      skill.Description = "A combination melee attack to vital areas. Reduces movement speed and combat effectiveness.";
      skill.Modifiers[0] = new Modifier("Flurry (Mark 1)", "Flurry (Mark 1): Unleashes a flurry of melee attacks aimed at a number of vital areas leaving the opponent with reduced movement speed and damage output. Requires Melee.", null);
      skill.Requirment = SkillSet[2][3];
      SkillSet[2][4] = skill;

      skill = new Skill("Enhance Block", 1, "Medic/aEnhanceBlock.gif", "Medic/iEnhanceBlock.gif");
      skill.Description = "Improves the targets block chance and block value.";
      skill.Modifiers[0] = new Modifier("Enhance Block", "Enhance Block: Improves the targets block chance and block value.", null);
      skill.Requirment = SkillSet[4][1];
      SkillSet[4][4] = skill;

      skill = new Skill("Enhance Dodge", 1, "Medic/aEnhanceDodge.gif", "Medic/iEnhanceDodge.gif");
      skill.Description = "Improves the targets chance to dodge an incoming attack.";
      skill.Modifiers[0] = new Modifier("Enhance Dodge", "Enhance Dodge: Improves the targets chance to dodge an incoming attack.", null);
      skill.Requirment = SkillSet[6][1];
      SkillSet[6][4] = skill;

      break;

    case "Medic Specialization":

      skill = new Skill("Bacta Concentration", 4, "Medic/aBactaConcentration.gif", "Medic/iBactaConcentration.gif");
      skill.Description = "Increases the amount healed by Bacta Infusion.";
      skill.Modifiers[0] = new Modifier("Heal Over Time Potency ", "", new Array(10, 20, 35, 50));
      SkillSet[0][0] = skill;

      skill = new Skill("Bacta Potency", 4, "Medic/aBactaPotency.gif", "Medic/iBactaPotency.gif");
      skill.Description = "Extra strength bacta increases the potency of your instant healing abilities.";
      skill.Modifiers[0] = new Modifier("Heal Potency", "", new Array(5, 10, 15, 25));
      SkillSet[1][0] = skill;

      skill = new Skill("Vital Efficiency", 4, "Medic/aVitalEfficiency.gif", "Medic/iVitalEfficiency.gif");
      skill.Description = "Reduces the action cost of Vital Strike special attacks.";
      skill.Modifiers[0] = new Modifier("Vital Strike Action Cost", "", new Array(5, 10, 15, 25));
      SkillSet[5][0] = skill;

      skill = new Skill("Vital Accuracy", 4, "Medic/aVitalAccuracy.gif", "Medic/iVitalAccuracy.gif");
      skill.Description = "Increases damage caused by Vital Strike special abilities.";
      skill.Modifiers[0] = new Modifier("Vital Strike Damage", "", new Array(5, 10, 15, 20));
      SkillSet[6][0] = skill;

      skill = new Skill("Drag Corpse", 1, "Medic/aDragCorpse.gif", "Medic/iDragCorpse.gif");
      skill.Description = "Drags all group mate's corpses within range to your location.";
      skill.Modifiers[0] = new Modifier("Drag Corpse", "Drag Corpse: Allows you to drag the corpses of all party members within range to your location.", null);
      skill.Requirment = SkillSet[0][0];
      SkillSet[0][1] = skill;

      skill = new Skill("Cure Affliction", 1, "Medic/aCureAffliction.gif", "Medic/iCureAffliction.gif");
      skill.Description = "Cures the target of damage over time effects such as bleeding, poison, disease or fire.";
      skill.Modifiers[0] = new Modifier("Cure Affliction", "Cure Affliction: Removes bleeding, poison, disease and fire damage over time effects from your target.", null);
      skill.Requirment = SkillSet[1][0];
      SkillSet[1][1] = skill;

      skill = new Skill("Enhancement Duration", 3, "Medic/aEnhancementDuration.gif", "Medic/iEnhancementDuration.gif");
      skill.Description = "Increases the duration of all medic Enhance abilities.";
      skill.Modifiers[0] = new Modifier("Enhancement Duration", "", new Array(300, 600, 1200, 0));
      SkillSet[3][1] = skill;

      skill = new Skill("Bacta Corruption", 1, "Medic/aBactaCorruption.gif", "Medic/iBactaCorruption.gif");
      skill.Description = "Reduces the effectiveness of your enemy's healing abilities.";
      skill.Modifiers[0] = new Modifier("Bacta Corruption", "Bacta Corruption: Reduces the effectiveness of the target's healing abilities.", null);
      skill.Requirment = SkillSet[5][0];
      SkillSet[5][1] = skill;

      skill = new Skill("Electrolyte Drain", 1, "Medic/aElectrolyteDrain.gif", "Medic/iElectrolyteDrain.gif");
      skill.Description = "Creates a chemical inbalance in the target leaving them listless and reducing movement speed.";
      skill.Modifiers[0] = new Modifier("Electrolyte Drain", "Electrolyte Drain: Creates a chemical inbalance in the target leaving them listless and reducing movement speed.", null);
      skill.Requirment = SkillSet[6][0];
      SkillSet[6][1] = skill;

      skill = new Skill("Hasty Resuscitation", 3, "Medic/aHastyResuscitation.gif", "Medic/iHastyResuscitation.gif");
      skill.Description = "Decreases cooldown time of all Revive and Area Revive abilities.";
      skill.Modifiers[0] = new Modifier("Revive Cooldown", "", new Array(5, 10, 15, 0));
      skill.Modifiers[1] = new Modifier("Area Revive Cooldown", "", new Array(5, 10, 15, 0));
      SkillSet[0][2] = skill;

      skill = new Skill("Bacta Efficiency", 3, "Medic/aBactaEfficiency.gif", "Medic/iBactaEfficiency.gif");
      skill.Description = "Decreases the action cost of all your instant healing abilites.";
      skill.Modifiers[0] = new Modifier("Heal Efficiency", "", new Array(10, 20, 35, 0));
      SkillSet[1][2] = skill;

      skill = new Skill("Enhancement Specialist", 1, "Medic/aEnhancementSpecialist.gif", "Medic/iEnhancementSpecialist.gif");
      skill.Description = "Allows access to Metabolic Accelerators and an extended Nutrient Injection enhancement line.";
      skill.Modifiers[0] = new Modifier("Metabolic Accelerators", "Metabolic Accelerators (Mark 1): Temporarily increases a being's metabolism allowing for more efficient conversion of stored calories to energy and increasing that being's total Action.", null);
      skill.Requirment = SkillSet[3][1];
      SkillSet[3][2] = skill;

      skill = new Skill("Affliction Intensity", 3, "Medic/aAfflictionIntensity.gif", "Medic/iAfflictionIntensity.gif");
      skill.Description = "Increases the damage caused by all Damage over Time abilities.";
      skill.Modifiers[0] = new Modifier("Dot Potency", "", new Array(5, 10, 15, 0));
      SkillSet[5][2] = skill;

      skill = new Skill("Affliction Duration ", 3, "Medic/aAfflictionDuration.gif", "Medic/iAfflictionDuration.gif");
      skill.Description = "Increases the duration of Damage over Time abilities.";
      skill.Modifiers[0] = new Modifier("Dot Duration", "", new Array(3, 6, 10, 0));
      SkillSet[6][2] = skill;

      skill = new Skill("Blood Cleansers", 1, "Medic/aBloodCleansers.gif", "Medic/iBloodCleansers.gif");
      skill.Description = "Removes the Weakened state, which is applied after incapacitation.";
      skill.Modifiers[0] = new Modifier("Blood Cleansers", "Blood Cleansers: Removes the 'Weakened' state, which is incurred upon incapacitation.", null);
      skill.Requirment = SkillSet[0][2];
      SkillSet[0][3] = skill;

      skill = new Skill("Serotonin Boost", 1, "Medic/aSerotoninBoost.gif", "Medic/iSerotoninBoost.gif");
      skill.Description = "Induces a feeling of well being and removes an adverse condition on the target.";
      skill.Modifiers[0] = new Modifier("Serotonin Boost", "Serotonin Boost: Induces a feeling of well being and allows the target to remain upbeat in the face of extreme adversity. Removes a harmful debuff effect. Note that some effects, such as Cloning Sickness and Weakness, are too strong to be removed by this ability.", null);
      skill.Requirment = SkillSet[1][2];
      SkillSet[1][3] = skill;

      skill = new Skill("Reckless Stimulation", 1, "Medic/aRecklessStimulation.gif", "Medic/iRecklessStimulation.gif");
      skill.Description = "A desperate ability that restores Action at the cost of Health.";
      skill.Modifiers[0] = new Modifier("Reckless Stimulation", "Reckless Stimulation (Mark 1): Restores some Action to you. Though effective, it is extremely painful and causes a loss of Health.", null);
      skill.Requirment = SkillSet[3][2];
      SkillSet[3][3] = skill;

      skill = new Skill("Serotonin Purge", 1, "Medic/aSerotoninPurge.gif", "Medic/iSerotoninPurge.gif");
      skill.Description = "Induces feelings of hopelessness on an enemy and removes a beneficial effect.";
      skill.Modifiers[0] = new Modifier("Serotonin Purge", "Serotonin Purge: Induces depression and fellings of hopelessness on an enemy, shaking their will to fight. Removes a beneficial buff effect.", null);
      skill.Requirment = SkillSet[5][2];
      SkillSet[5][3] = skill;

      skill = new Skill("Traumatize", 1, "Medic/aTraumatize.gif", "Medic/iTraumatize.gif");
      skill.Description = "Induces extreme trauma to sensory systems reducing the target's Action pool.";
      skill.Modifiers[0] = new Modifier("Traumatize (Mark 1)", "Traumatize (Mark 1): Induces extreme trauma to sensory systems reducing the target's Action pool.", null);
      skill.Requirment = SkillSet[6][2];
      SkillSet[6][3] = skill;

      skill = new Skill("Bacta Bomb", 1, "Medic/aBactaBomb.gif", "Medic/iBactaBomb.gif");
      skill.Description = "Heals the target of a large amount of Health at long range.";
      skill.Modifiers[0] = new Modifier("Bacta Bomb (Mark 1)", "Bacta Bomb (Mark 1): Long ranged healing ability that restores a large amount of Health to your target. This ability draws from the same bacta supply as your Bacta Jab and though much more efficient, takes longer to recharge.", null);
      skill.Requirment = SkillSet[0][3];
      SkillSet[0][4] = skill;

      skill = new Skill("Bacta Grenade", 1, "Medic/aBactaGrenade.gif", "Medic/iBactaGrenade.gif");
      skill.Description = "Restores health to a target at range.";
      skill.Modifiers[0] = new Modifier("Bacta Grenade (Mark 1)", "Bacta Grenade (Mark 1): Restores some Health to your targeet from long range. This ability draws from the same bacta supply as your Bacta Spray, however it recharges much more quickly.", null);
      skill.Requirment = SkillSet[1][3];
      SkillSet[1][4] = skill;

      skill = new Skill("Stasis Field", 1, "Medic/aStasisField.gif", "Medic/iStasisField.gif");
      skill.Description = "Restrains and protects the target from harm and form harming others.";
      skill.Modifiers[0] = new Modifier("Stasis Field", "Stasis Field: The target receives an extreme defensive increase while movement is extremely hampered and offense capability all but negated.", null);
      skill.Requirment = SkillSet[3][3];
      SkillSet[3][4] = skill;

      skill = new Skill("Rheumatic Calamity", 1, "Medic/aRheumaticCalamity.gif", "Medic/iRheumaticCalamity.gif");
      skill.Description = "Rheumatic Calamity: Connective tissues swell and surronding areas fill with fluid resulting in intense pain and joint dislocations. The target loses Health whenever Action is spend.";
      skill.Modifiers[0] = new Modifier("Rheumatic Calamity", "Rheumatic Calamity: Bleeding causes tissues to swell resulting in intense pain, when action is spent and damage over time.", null);
      skill.Requirment = SkillSet[5][3];
      SkillSet[5][4] = skill;

      skill = new Skill("Thyroid Rupture", 1, "Medic/aThyroidRupture.gif", "Medic/iThyroidRupture.gif");
      skill.Description = "Impedes the functioning of a number of vital organs reducing the target's damage output.";
      skill.Modifiers[0] = new Modifier("Thyroid Rupture", "Thyroid Rupture: Impedes the functioning of a number of vital organs reducing the target's damage output.", null);
      skill.Requirment = SkillSet[6][3];
      SkillSet[6][4] = skill;

      break;

    case "Commando":

      skill = new Skill("Remote Detonator", 1, "Commando/aRemoteDetonator.gif", "Commando/iRemoteDetonator.gif");
      skill.Description = "Grants the Remote Detonator ability, which allows a Commando to place a mine that detonates through a command.";
      skill.Modifiers[0] = new Modifier("Remote Detonator 1", "Remote Detonator 1: A level 10 remote detonation device that damages all targets in the blast area, after being triggered.", null);
      SkillSet[0][0] = skill;

      skill = new Skill("Powered Armor", 4, "Commando/aPoweredArmor.gif", "Commando/iPoweredArmor.gif");
      skill.Description = "Increases the Commando's armor by 250 per point spent.";
      skill.Modifiers[0] = new Modifier("Innate Armor", "", new Array(250, 500, 750, 1000));
      SkillSet[2][0] = skill;

      skill = new Skill("Suppressing Fire", 1, "Commando/aSuppressingFire.gif", "Commando/iSuppressingFire.gif");
      skill.Description = "Grants the Suppressing Fire debuff, which adds 10% glancing blow vulnerability to the target and reduces the targets movement speed towards the commando by 50%.";
      skill.Modifiers[0] = new Modifier("Suppressing Fire", "Suppressing Fire: An barrage of fire at a target which their ability to fire accurately and supresses movement towards the commando.", null);
      SkillSet[4][0] = skill;

      skill = new Skill("Cluster Bomb", 1, "Commando/aImprovedExplosives.gif", "Commando/iImprovedExplosives.gif");
      skill.Description = "This command will throw a pack of multiple small munitions to be deployed over a large area.";
      skill.Modifiers[0] = new Modifier("Cluster Bomb", "20 Kill Meter Points<br>Breaks down high explosive material and seperates them into muliple smaller bomblets allowing greater area dispersal.", null);
      SkillSet[6][0] = skill;

      skill = new Skill("Blow 'em Away", 2, "Commando/aBlowemAway.gif", "Commando/iBlowemAway.gif");
      skill.Description = "Adds an extra bomblet per point when using cluster bomb.";
      skill.Modifiers[0] = new Modifier("Additional Bomblet", "", new Array(2, 4, 0, 0));
      skill.Requirment = SkillSet[6][0];
      SkillSet[5][0] = skill;

      skill = new Skill("Flashbang", 2, "Commando/aFlashbang.gif", "Commando/iFlashbang.gif");
      skill.Description = "Adds a -50 precision per point spent debuff to Remote Detonator.";
      skill.Modifiers[0] = new Modifier("Precision Decrease", "", new Array(50, 100, 0, 0));
      skill.Requirment = SkillSet[0][0];
      SkillSet[0][1] = skill;

      skill = new Skill("Pinpoint Shielding", 4, "Commando/aPinpointShielding.gif", "Commando/iPinpointShielding.gif");
      skill.Description = "Increases the Commando's armor by 250 per point spent.";
      skill.Modifiers[0] = new Modifier("Innate Armor", "", new Array(250, 500, 750, 1000));
      skill.Requirment = SkillSet[2][0];
      SkillSet[2][1] = skill;

      skill = new Skill("Suppression Efficiency", 4, "Commando/aSuppressionEfficiency.gif", "Commando/iSuppressionEfficiency.gif");
      skill.Description = "Increases Suppressing Fire's chance for glancing blows against the Commando by 5% per point spent, increases approach speed reduction by 10%.";
      skill.Modifiers[0] = new Modifier("Improved Movement Supression", "", new Array(10, 20, 30, 40));
      skill.Modifiers[1] = new Modifier("Improved Glanceing Vulnerability", "", new Array(5, 10, 15, 20));
      skill.Requirment = SkillSet[4][0];
      SkillSet[4][1] = skill;

      skill = new Skill("Killing Spree", 1, "Commando/aKillingGrimace.gif", "Commando/iKillingGrimace.gif");
      skill.Description = "Randomly attack a random nearby enemy for 25% base weapon damage.";
      skill.Modifiers[0] = new Modifier("Killing Spree", "20 Kill Meter Points<br>The commando will randomly attack all nearby enemies for the duration of the effect.", null);
      SkillSet[6][1] = skill;

      skill = new Skill("Killing Grimace", 2, "Commando/aKillingGrimace.gif", "Commando/iKillingGrimace.gif");
      skill.Description = "Each point will attack an additional nearby target while the commando is on a killing spree.";
      skill.Modifiers[0] = new Modifier("Additional Target", "", new Array(1, 2, 0, 0));
      skill.Requirment = SkillSet[6][1];
      SkillSet[5][1] = skill;

      skill = new Skill("Timer Reset", 2, "Commando/aTimerReset.gif", "Commando/iTimerReset.gif");
      skill.Description = "Extends the Remote Detonator's time limit bye 240 seconds per point spent over the original 120 seconds.";
      skill.Modifiers[0] = new Modifier("Detonator Duration", "", new Array(240, 480, 0, 0));
      skill.Requirment = SkillSet[0][1];
      SkillSet[0][2] = skill;

      skill = new Skill("Deflective Armor", 4, "Commando/aDeflectiveArmor.gif", "Commando/iDeflectiveArmor.gif");
      skill.Description = "Damage against the Commando is reduced by 2% per point spent.";
      skill.Modifiers[0] = new Modifier("Damage Decrease", "", new Array(2, 4, 6, 8));
      skill.Requirment = SkillSet[2][1];
      SkillSet[2][2] = skill;

      skill = new Skill("Blast Resistance", 4, "Commando/aBlastResistance.gif", "Commando/iBlastResistance.gif");
      skill.Description = "All AOE damage you receive has a 5% chance per point spent to be fully resisted.";
      skill.Modifiers[0] = new Modifier("AOE Resistance", "", new Array(5, 10, 15, 20));
      skill.Requirment = SkillSet[2][2];
      SkillSet[3][2] = skill;

      skill = new Skill("Riddle Armor", 1, "Commando/aRiddleArmor.gif", "Commando/iRiddleArmor.gif");
      skill.Description = "Grants the Riddle Armor ability, which allows a Commando to lower a target's armor by applying teh Armor Break debuff. The Armor Break debuff stacks up to 5 times per target.";
      skill.Modifiers[0] = new Modifier("Riddle Armor", "Riddle Armor: An ability to damage a target's armor.", null);
      SkillSet[4][2] = skill;

      skill = new Skill("Improved Riddle Armor", 2, "Commando/aArmorSplash.gif", "Commando/iArmorSplash.gif");
      skill.Description = "Reduces the cooldown time of Riddle Armor and Armor Shredder by 2 seconds per point spent.";
      skill.Modifiers[0] = new Modifier("Riddle Armor Cooldown", "", new Array(2, 4, 0, 0));
      skill.Requirment = SkillSet[4][2];
      SkillSet[5][2] = skill;

      skill = new Skill("You'll Regret That", 4, "Commando/aYoullRegretThat.gif", "Commando/iYoullRegretThat.gif");
      skill.Description = "The Commando's armor is increased by 1000 per point spent, if snared.";
      skill.Modifiers[0] = new Modifier("Regret Chance", "", new Array(100, 100, 100, 100));
      skill.Modifiers[1] = new Modifier("Innate Armor Increase", "", new Array(1000, 2000, 3000, 4000));
      SkillSet[6][2] = skill;

      skill = new Skill("Angled Shrapnel", 2, "Commando/aAngledShrapnel.gif", "Commando/iAngledShrapnel.gif");
      skill.Description = "Increases the radius of the Remote Detonator by 5 meters per point spent.";
      skill.Modifiers[0] = new Modifier("Detonator Radius", "", new Array(5, 10, 0, 0));
      skill.Requirment = SkillSet[0][2];
      SkillSet[0][3] = skill;

      skill = new Skill("Stand Fast", 1, "Commando/aStandFast.gif", "Commando/iStandFast.gif");
      skill.Description = "Grants the Stand Fast buff. Damage against the Commando is reduced by 60% while Stand Fast is in effect.";
      skill.Modifiers[0] = new Modifier("Stand Fast", "Stand Fast: Lowers damage taken by the Commando by 60% (75% with 3 points in Improved Stand Fast).", null);
      skill.Requirment = SkillSet[2][2];
      SkillSet[2][3] = skill;

      skill = new Skill("Armor Shredder", 1, "Commando/aArmorCracker.gif", "Commando/iArmorCracker.gif");
      skill.Description = "Grants the Armor Shredder ability. It will apply the Armor Break debuff to all enemies within a 10m radius of the target. The Armor Break debuff stacks up to 5 times per target.";
      skill.Modifiers[0] = new Modifier("Armor Shredder", "Armor Shredder: An ability that damages enemy armor in a radius of 10m around the target.", null);
      skill.Requirment = SkillSet[4][2];
      SkillSet[4][3] = skill;

      skill = new Skill("Stim Armor", 1, "Commando/aStimArmor.gif", "Commando/iStimArmor.gif");
      skill.Description = "Grants the Stim Armor ability, which heals the Commando over time.";
      skill.Modifiers[0] = new Modifier("Stim Armor", "Stim Armor: A heal over time buff through modified armor.", null);
      SkillSet[6][3] = skill;

      skill = new Skill("Improved Explosives", 4, "Commando/aImprovedExplosives.gif", "Commando/iImprovedExplosives.gif");
      skill.Description = "Increases the damage of the Remote Detonator ability by 75% per point.";
      skill.Modifiers[0] = new Modifier("Detonator Damage", "", new Array(75, 150, 225, 300));
      skill.Requirment = SkillSet[0][3];
      SkillSet[0][4] = skill;

      skill = new Skill("Improved Stand Fast", 3, "Commando/aImprovedStandFast.gif", "Commando/iImprovedStandFast.gif");
      skill.Description = "Improvements to the Stand Fast ability. Each point lowers cooldown by 2 minutes, incoming damage by 5% and increases duration by 2 seconds.";
      skill.Modifiers[0] = new Modifier("Damage Decrease", "", new Array(5, 10, 15, 0));
      skill.Modifiers[1] = new Modifier("Stand Fast Duration", "", new Array(2, 4, 6, 0));
      skill.Modifiers[2] = new Modifier("Cooldown Decrease", "", new Array(120, 240, 360, 0));
      skill.Requirment = SkillSet[2][3];
      SkillSet[2][4] = skill;

      skill = new Skill("Diagnostic Armor", 1, "Commando/aDiagnosticArmor.gif", "Commando/iDiagnosticArmor.gif");
      skill.Description = "Gives the Commando 25% DOT damage absorption per point spent.";
      skill.Modifiers[0] = new Modifier("DOT Damage Reduction", "", new Array(25, 0, 0, 0));
      skill.Requirment = SkillSet[6][3];
      SkillSet[6][4] = skill;

      skill = new Skill("Mirror Armor", 1, "Commando/aMirrorArmor.gif", "Commando/iMirrorArmor.gif");
      skill.Description = "Grants the Mirror Armor ability, which allows a Commando to not appear on enemy radar for 120 seconds. When activated, it significantly lowers enemy aggression toward the Commando.";
      skill.Modifiers[0] = new Modifier("Mirror Armor", "Mirror Armor: This ability allows your armor to cloak you from radar detection and will lower enemy aggressiveness upon activotion.", null);
      skill.Requirment = SkillSet[6][4];
      SkillSet[5][4] = skill;

      break;

    case "Assault":

      skill = new Skill("Enhanced Luck", 2, "Commando/aEnhancedLuck.gif", "Commando/iEnhancedLuck.gif");
      skill.Description = "Increases Luck by 25 per point spent.";
      skill.Modifiers[0] = new Modifier("Luck", "", new Array(25, 50, 0, 0));
      SkillSet[0][0] = skill;

      skill = new Skill("Enhanced Precision", 2, "Commando/aEnhancedPrecision.gif", "Commando/iEnhancedPrecision.gif");
      skill.Description = "Precision increased by 25 points per point spent.";
      skill.Modifiers[0] = new Modifier("Precision", "", new Array(25, 50, 0, 0));
      SkillSet[2][0] = skill;

      skill = new Skill("Enhanced Constitution", 2, "Commando/aEnhancedConstitution.gif", "Commando/iEnhancedConstitution.gif");
      skill.Description = "Constitution increased by 50 points per point spent.";
      skill.Modifiers[0] = new Modifier("Constitution", "", new Array(50, 100, 0, 0));
      SkillSet[4][0] = skill;

      skill = new Skill("Enhanced Stamina", 2, "Commando/aEnhancedStamina.gif", "Commando/iEnhancedStamina.gif");
      skill.Description = "Stamina increased by 25 points per point spent.";
      skill.Modifiers[0] = new Modifier("Stamina", "", new Array(25, 50, 0, 0));
      SkillSet[6][0] = skill;

      skill = new Skill("Position Secured", 1, "Commando/aPositionSecured.gif", "Commando/iPositionSecured.gif");
      skill.Description = "Grants the Position Secured ability, which roots the Commando and increases Precision and Strength by 200.";
      skill.Modifiers[0] = new Modifier("Position Secured", "Position Secured: This ability digs you in and increases your Precision and Strength by 200.", null);
      SkillSet[0][1] = skill;

      skill = new Skill("Improved Position Secured", 3, "Commando/aImprovedPositionSecured.gif", "Commando/iImprovedPositionSecured.gif");
      skill.Description = "Action cost reduced by 10% per point for all the Commando's actions.";
      skill.Modifiers[0] = new Modifier("Action Cost Reduction Percent", "", new Array(10, 20, 30, 0));
      skill.Requirment = SkillSet[0][1];
      SkillSet[1][1] = skill;

      skill = new Skill("Hose Down", 2, "Commando/aHoseDown.gif", "Commando/iHoseDown.gif");
      skill.Description = "Reduces the action costs for the Focused Fire line of attacks by 5% per point spent.";
      skill.Modifiers[0] = new Modifier("Focused Fire Action", "", new Array(5, 10, 0, 0));
      SkillSet[2][1] = skill;

      skill = new Skill("Blast Radius", 4, "Commando/aBlastRadius.gif", "Commando/iBlastRadius.gif");
      skill.Description = "Inreases the blast radius of grenades by 1 meter per point spent.";
      skill.Modifiers[0] = new Modifier("Grenade Radius Increase", "", new Array(1, 2, 3, 4));
      SkillSet[4][1] = skill;

      skill = new Skill("Focused Beam", 1, "Commando/aFocusedBeam.gif", "Commando/iFocusedBeam.gif");
      skill.Description = "Grants teh Focused Beam line of attacks.";
      skill.Modifiers[0] = new Modifier("Focused Beam 1", "Focused Beam 1: A high powered heavy weapon attack.", null);
      SkillSet[6][1] = skill;

      skill = new Skill("Burst Fire", 2, "Commando/aBurstFire.gif", "Commando/iBurstFire.gif");
      skill.Description = "Adds a 10% chance to fire a second time (except with Heavy Weapons) and 5% dvastation per point spent, while using Position Secured.";
      skill.Modifiers[0] = new Modifier("Burst Fire Proc Chance Percent", "", new Array(10, 20, 0, 0));
      skill.Modifiers[1] = new Modifier("Devastation Chance Percent", "", new Array(5, 10, 0, 0));
      skill.Requirment = SkillSet[0][1];
      SkillSet[0][2] = skill;

      skill = new Skill("Keen Eye", 2, "Commando/aKeenEye.gif", "Commando/iKeenEye.gif");
      skill.Description = "Increases the range of ranged weapons by 4 meters per point spent, but not exceeding 64 meters.";
      skill.Modifiers[0] = new Modifier("Range Increase (Ranged Weapons)", "", new Array(4, 8, 0, 0));
      skill.Requirment = SkillSet[2][1];
      SkillSet[2][2] = skill;

      skill = new Skill("Strong Arm", 4, "Commando/aStrongArm.gif", "Commando/iStrongArm.gif");
      skill.Description = "Reduces the action costs for Grenade attacks by 2% per point spent.";
      skill.Modifiers[0] = new Modifier("Grenade Action Decrease", "", new Array(2, 4, 6, 8));
      skill.Requirment = SkillSet[4][1];
      SkillSet[4][2] = skill;

      skill = new Skill("Tibanna Gas", 4, "Commando/aTibannaGas.gif", "Commando/iTibannaGas.gif");
      skill.Description = "Increases the damage of heavy weapons and flamethrowers by 2% per point spent.";
      skill.Modifiers[0] = new Modifier("Heavy Weapon Damage", "", new Array(2, 4, 6, 8));
      skill.Modifiers[1] = new Modifier("Flamethrower Damage", "", new Array(2, 4, 6, 8));
      skill.Requirment = SkillSet[6][1];
      SkillSet[6][2] = skill;

      skill = new Skill("On Target", 4, "Commando/aOnTarget.gif", "Commando/iOnTarget.gif");
      skill.Description = "Adds a 2% chance to get a critical hit and 5% protection against critical hits per point spent, while using Position Secured.";
      skill.Modifiers[0] = new Modifier("Critical Attack Chance Percent", "", new Array(2, 4, 6, 8));
      skill.Modifiers[1] = new Modifier("Critical Protection Chance Percent", "", new Array(5, 10, 15, 20));
      skill.Requirment = SkillSet[0][2];
      SkillSet[0][3] = skill;

      skill = new Skill("Heavy Ammunition", 4, "Commando/aHeavyAmmunition.gif", "Commando/iHeavyAmmunition.gif");
      skill.Description = "Increases the damage of rifles and carbines by 2% per point spent.";
      skill.Modifiers[0] = new Modifier("Rifle Damage", "", new Array(2, 4, 6, 8));
      skill.Modifiers[1] = new Modifier("Carbine Damage", "", new Array(2, 4, 6, 8));
      skill.Requirment = SkillSet[2][2];
      SkillSet[2][3] = skill;

      skill = new Skill("Packed Explosives", 4, "Commando/aPackedExplosives.gif", "Commando/iPackedExplosives.gif");
      skill.Description = "Increases the damage of grenades by 2% per point spent.";
      skill.Modifiers[0] = new Modifier("Grenade Damage Increase", "", new Array(2, 4, 6, 8));
      skill.Requirment = SkillSet[4][2];
      SkillSet[4][3] = skill;

      skill = new Skill("Lethal Beam", 1, "Commando/aLethalBeam.gif", "Commando/iLethalBeam.gif");
      skill.Description = "Grants the Lethal Beam line of attacks.";
      skill.Modifiers[0] = new Modifier("Lethal Beam 1", "Lethal Beam 1: A high powered level heavy weapon attack that damages the opponent's health as well as a small amount of action.", null);
      skill.Requirment = SkillSet[6][2];
      SkillSet[6][3] = skill;

      skill = new Skill("Base Of Operations", 1, "Commando/aBaseOfOperations.gif", "Commando/iBaseOfOperations.gif");
      skill.Description = "When in Position Secured, grants the Base of Operations group buff. This adds 1000 armor and 5% critical chance to all group members.";
      skill.Modifiers[0] = new Modifier("Innate Armor Increase", "", new Array(1000, 0, 0, 0));
      skill.Modifiers[1] = new Modifier("Critical Attack Chance Percent", "", new Array(5, 0, 0, 0));
      skill.Requirment = SkillSet[0][3];
      SkillSet[0][4] = skill;

      skill = new Skill("Marksman", 3, "Commando/aMarksman.gif", "Commando/iMarksman.gif");
      skill.Description = "Reduces Action cost for the commando by 4% per point spent when using a Carbine or Rifle.";
      skill.Modifiers[0] = new Modifier("Rifle Action Cost Reduction", "", new Array(4, 8, 12, 0));
      skill.Modifiers[1] = new Modifier("Carbine Action Cost Reduction", "", new Array(4, 8, 12, 0));
      skill.Requirment = SkillSet[2][3];
      SkillSet[2][4] = skill;

      skill = new Skill("Short Fuse", 1, "Commando/aShortFuse.gif", "Commando/iShortFuse.gif");
      skill.Description = "Decreases the fuse on Grenades by 1 second.";
      skill.Modifiers[0] = new Modifier("Grenade Fuse Decrease (Seconds)", "", new Array(1, 0, 0, 0));
      skill.Requirment = SkillSet[4][3];
      SkillSet[4][4] = skill;

      skill = new Skill("Enhanced Fuel Canisters", 4, "Commando/aEnhancedFuelCanisters.gif", "Commando/iEnhancedFuelCanisters.gif");
      skill.Description = "Reduces the action cost of heavy weapon and flamethrower attacks by 5% per point, in addition adds 1% chance for passive DoT application with a heavy weapon.";
      skill.Modifiers[0] = new Modifier("Heavy Weapon Action Cost", "", new Array(5, 10, 15, 20));
      skill.Modifiers[1] = new Modifier("Flamethrower Action Cost", "", new Array(5, 10, 15, 20));
      skill.Modifiers[2] = new Modifier("Passice Dot Application Chance", "", new Array(1, 2, 3, 4));
      skill.Requirment = SkillSet[6][3];
      SkillSet[6][4] = skill;

      break;

    case "Officer Specialization":

      skill = new Skill("Close Combat", 4, "Officer/aCloseCombat.gif", "Officer/iCloseCombat.gif");
      skill.Description = "A permanent increase in Strength.";
      skill.Modifiers[0] = new Modifier("Strength", "", new Array(10, 20, 30, 50));
      SkillSet[0][0] = skill;

      skill = new Skill("Marksmanship", 4, "Officer/aMarksmanship.gif", "Officer/iMarksmanship.gif");
      skill.Description = "A permanent increase in Precision.";
      skill.Modifiers[0] = new Modifier("Precision", "", new Array(10, 20, 30, 50));
      SkillSet[2][0] = skill;

      skill = new Skill("Toughness", 4, "Officer/aToughness.gif", "Officer/iToughness.gif");
      skill.Description = "A permanent increase in Constitution.";
      skill.Modifiers[0] = new Modifier("Constitution", "", new Array(10, 20, 30, 50));
      SkillSet[4][0] = skill;

      skill = new Skill("Endurance", 4, "Officer/aEndurance.gif", "Officer/iEndurance.gif");
      skill.Description = "A permanent increase in Stamina.";
      skill.Modifiers[0] = new Modifier("Stamina", "", new Array(10, 20, 30, 50));
      SkillSet[6][0] = skill;

      skill = new Skill("Close Combat", 4, "Officer/aSwordsmanship.gif", "Officer/iSwordsmanship.gif");
      skill.Description = "Increases damage output of melee attacks.";
      skill.Modifiers[0] = new Modifier("Melee Damage Increase", "", new Array(3, 6, 9, 12));
      SkillSet[0][1] = skill;

      skill = new Skill("Side Arm Efficiency", 4, "Officer/aSideArmEfficiency.gif", "Officer/iSideArmEfficiency.gif");
      skill.Description = "Increase damage output while using a Pistol.";
      skill.Modifiers[0] = new Modifier("Pistol Damage", "", new Array(3, 6, 9, 12));
      SkillSet[2][1] = skill;

      skill = new Skill("Energy Defense", 2, "Officer/aEnergyDefense.gif", "Officer/iEnergyDefense.gif");
      skill.Description = "Improves your protection versus energy damage when you  wear a full suit of Battle Armor.";
      skill.Modifiers[0] = new Modifier("Energy Armor", "", new Array(500, 1000, 0, 0));
      SkillSet[4][1] = skill;

      skill = new Skill("Kinetic Defense", 2, "Officer/aKineticDefense.gif", "Officer/iKineticDefense.gif");
      skill.Description = "Improves your protection versus kinetic damage when you wear a full suit of Battle Armor.";
      skill.Modifiers[0] = new Modifier("Kinetic Armor", "", new Array(500, 1000, 0, 0));
      SkillSet[6][1] = skill;

      skill = new Skill("Grim Blows", 2, "Officer/aGrimBlows.gif", "Officer/iGrimBlows.gif");
      skill.Description = "Increases critical chance of melee attacks.";
      skill.Modifiers[0] = new Modifier("Melee Critical Chance", "", new Array(5, 10, 0, 0));
      SkillSet[0][2] = skill;

      skill = new Skill("Dire Strikes", 2, "Officer/aSideArmAccuracy.gif", "Officer/iSideArmAccuracy.gif");
      skill.Description = "Increases your critical chance while using a Pistol.";
      skill.Modifiers[0] = new Modifier("Pistol Critical Chance", "", new Array(5, 10, 0, 0));
      skill.Modifiers[1] = new Modifier("Pistol Range Bonus", "", new Array(4, 8, 0, 0));
      SkillSet[2][2] = skill;

      skill = new Skill("Decapitate", 1, "Officer/aDecapitate.gif", "Officer/iDecapitate.gif");
      skill.Description = "A slice to the neck of your opponent, leaving them bleeding.";
      skill.Modifiers[0] = new Modifier("Decapitate (Mark 1)", "Decapitate (Mark 1): A brutal slice to the neck damages your opponent and leaves them bleeding.", null);
      skill.Requirment = SkillSet[0][2];
      SkillSet[0][3] = skill;

      skill = new Skill("Pistol Overcharge", 1, "Officer/aPistolOvercharge.gif", "Officer/iPistolOvercharge.gif");
      skill.Description = "Ability to make your pistol shoot one blast and do double damage.";
      skill.Modifiers[0] = new Modifier("Pistol Overcharge", "Pistol Overcharge: Pistol attack that does double damage.", null);
      skill.Requirment = SkillSet[2][2];
      SkillSet[2][3] = skill;

      skill = new Skill("Synaptic Stimulator", 1, "Officer/aSynapticStimulator.gif", "Officer/iSynapticStimulator.gif");
      skill.Description = "Attempts to remove up to two debuffs.";
      skill.Modifiers[0] = new Modifier("Synaptic Stimulator", "Synaptic Stimulator: Electrodes inplemented in your helmet can be activated to shake you out of a varity of harmful states so you can return to full leadership capacity. This ability will attempt to remove up to two debuffs.", null);
      SkillSet[4][3] = skill;

      skill = new Skill("Environmental Purge", 1, "Officer/aEnvironmentalPurge.gif", "Officer/iEnvironmentalPurge.gif");
      skill.Description = "Reduces existing effects such as bleeding, disease, poison and being set on fire. Blocks any new applications while buff is active.";
      skill.Modifiers[0] = new Modifier("Environmental Purge", "Environmental Purge: Nanites in your armor cleanse your body of various deleterious, removing damage over time effects such as bleeding, disease, poison and being set on fire.", null);
      SkillSet[6][3] = skill;

      skill = new Skill("Crippling Vortex", 1, "Officer/aCripplingVortex.gif", "Officer/iCripplingVortex.gif");
      skill.Description = "Area damage bleed attack that hampers movement.";
      skill.Modifiers[0] = new Modifier("Crippling Vortex (Mark 1)", "Crippling Vortex (Mark 1): A lightning fast sweeping attack punishes every enemy in your immediate area, leaving them bleeding and severely hampering their movement for a period of time.", null);
      skill.Requirment = SkillSet[0][3];
      SkillSet[0][4] = skill;

      skill = new Skill("Pistol Burn", 1, "Officer/aPistolBurn.gif", "Officer/iPistolBurn.gif");
      skill.Description = "Grants pistol attack Pistol Burn. This is a high damage attack that can cause the target to bleed.";
      skill.Modifiers[0] = new Modifier("Pistol Burn", "Pistol Burn: A powerful pistol attack that has a chance to cause the target to bleed.", null);
      skill.Requirment = SkillSet[2][3];
      SkillSet[2][4] = skill;

      skill = new Skill("Bacta Flush", 2, "Officer/aBactaFlush.gif", "Officer/iBactaFlush.gif");
      skill.Description = "Increases the amount of damage restored by the Heal line.";
      skill.Modifiers[0] = new Modifier("Officer Heal", "", new Array(5, 15, 0, 0));
      skill.Requirment = SkillSet[4][3];
      SkillSet[4][4] = skill;

      skill = new Skill("Automated Diagnosis", 2, "Officer/aAutomatedDiagnosis.gif", "Officer/iAutomatedDiagnosis.gif");
      skill.Description = "Decreases the cooldown time of Heal line special abilities.";
      skill.Modifiers[0] = new Modifier("Heal Colldown", "", new Array(1, 3, 0, 0));
      skill.Requirment = SkillSet[6][3];
      SkillSet[6][4] = skill;

      break;

    case "Squad Command":

      skill = new Skill("Leadership", 2, "Officer/aLeadership.gif", "Officer/iLeadership.gif");
      skill.Description = "Increases the duration of all group buff abilities.<br>Increases the number of maintained group buffs.<br>Reduces the action cost of all group buff abilities.";
      skill.Modifiers[0] = new Modifier("Group Buff Duration", "", new Array(15, 30, 0, 0));
      skill.Modifiers[1] = new Modifier("Maintain Group Buffs", "", new Array(1, 2, 0, 0));
      skill.Modifiers[2] = new Modifier("Group Buff Action Cost", "", new Array(5, 10, 0, 0));
      SkillSet[0][0] = skill;

      skill = new Skill("Rapid Deployment", 4, "Officer/aRapidDeployment.gif", "Officer/iRapidDeployment.gif");
      skill.Description = "Reduces the cool down of all Supply Drop abilities.";
      skill.Modifiers[0] = new Modifier("Supply Drop Cooldown", "", new Array(3, 7, 11, 15));
      SkillSet[3][0] = skill;

      skill = new Skill("Explosives Expert", 4, "Officer/aExplosivesExpert.gif", "Officer/iExplosivesExpert.gif");
      skill.Description = "Reduces the action cost of all artillery and grenade type special abilities.";
      skill.Modifiers[0] = new Modifier("Area Effect Action Cost", "", new Array(5, 10, 15, 25));
      SkillSet[4][0] = skill;

      skill = new Skill("Sure Shot Efficiency", 4, "Officer/aSureShotEfficiency.gif", "Officer/iSureShotEfficiency.gif");
      skill.Description = "Reduces action cost of the Sure Shot line.";
      skill.Modifiers[0] = new Modifier("Sure Shot Action Cost", "", new Array(5, 10, 15, 25));
      SkillSet[5][0] = skill;

      skill = new Skill("Advanced Tactics", 1, "Officer/aAdvancedTactics.gif", "Officer/iAdvancedTactics.gif");
      skill.Description = "Extension of the Tactics group buff line.";
      skill.Modifiers[0] = new Modifier("Tactics (Mark 4)", "Tactics (Mark 4): Decisive battlefield commands provide your group with bonus defenses.", null);
      SkillSet[0][1] = skill;

      skill = new Skill("Focus Fire", 1, "Officer/aFocusFire.gif", "Officer/iFocusFire.gif");
      skill.Description = "Your group takes up a disciplined attack posture resulting in an increase in offensive statistics.";
      skill.Modifiers[0] = new Modifier("Focus Fire (Mark 1)", "Focus Fire (Mark 1): Your group takes up a disciplined attack posture resulting in an increase in offenive statistics.", null);
      skill.Requirment = SkillSet[0][1];
      SkillSet[1][1] = skill;

      skill = new Skill("Surgical Demolitions", 3, "Officer/aSurgicalDemolitions.gif", "Officer/iSurgicalDemolitions.gif");
      skill.Description = "Increases the critical chance of all artillery and grenade type special abilities.";
      skill.Modifiers[0] = new Modifier("AOE Critical Chance", "", new Array(10, 25, 50, 0));
      SkillSet[4][1] = skill;

      skill = new Skill("Lethal Aim", 4, "Officer/aLethalAim.gif", "Officer/iLethalAim.gif");
      skill.Description = "Increases the damage output of the Sure Shot line.";
      skill.Modifiers[0] = new Modifier("Sure Shot Damage", "", new Array(2, 4, 7, 10));
      SkillSet[5][1] = skill;

      skill = new Skill("Pistol Drillmaster", 1, "Officer/aPistolDrillmaster.gif", "Officer/iPistolDrillmaster.gif");
      skill.Description = "Group members gain increased damage output and reduced action cost.";
      skill.Modifiers[0] = new Modifier("Pistol Drillmaster", "Pistol Drillmaster: Your group members benefit from your advanced advanced knowledge of combat gaining increased damage output and reduced action cost.", null);
      skill.Requirment = SkillSet[0][1];
      SkillSet[0][2] = skill;

      skill = new Skill("Misdirected Anger", 1, "Officer/aMisdirectedAnger.gif", "Officer/iMisdirectedAnger.gif");
      skill.Description = "10% of the hate the officer generates is shared to an ally of their choice.";
      skill.Modifiers[0] = new Modifier("Misdirected Anger", "Misdirected Anger: Protion of hate Gained by Officer is redirected to an ally.", null);
      SkillSet[2][2] = skill;

      skill = new Skill("Medical Supply Drop", 1, "Officer/aMedicalSupplyDrop.gif", "Officer/iMedicalSupplyDrop.gif");
      skill.Description = "Calls in a supply transport for delivery of medical supplies in the field.";
      skill.Modifiers[0] = new Modifier("Medical Supply Drop (Mark 1)", "Medical Supply Drop (Mark 1): Calls in a supply transport for delivery of medical supplies in the field.", null);
      skill.Requirment = SkillSet[3][0];
      SkillSet[3][2] = skill;

      skill = new Skill("High Explosives", 2, "Officer/aHighExplosives.gif", "Officer/iHighExplosives.gif");
      skill.Description = "Increases the damage output of all artillery and grenade type special abilities.";
      skill.Modifiers[0] = new Modifier("Area Effect Damage", "", new Array(10, 25, 0, 0));
      SkillSet[4][2] = skill;

      skill = new Skill("Inspiration", 1, "Officer/aInspiration.gif", "Officer/iInspiration.gif");
      skill.Description = "Your group regains some action and enjoys a decrease in action cost for a short period of time.";
      skill.Modifiers[0] = new Modifier("Inspiration (Mark 1)", "Inspiration (Mark 1): Your leadership inspires those in your group resulting in some action restoration and a decrease in action cost for a short period of time.", null);
      skill.Requirment = SkillSet[0][2];
      SkillSet[0][3] = skill;

      skill = new Skill("Scatter!", 1, "Officer/aScatter.gif", "Officer/iScatter.gif");
      skill.Description = "A defensive command that increases run speed, glancing blow chance and removes snare effects of all group members.";
      skill.Modifiers[0] = new Modifier("Scatter!", "Scatter!: A defensive command that increases run speed, glancing blow chance and removes snare effects for all group members.", null);
      skill.Requirment = SkillSet[0][3];
      SkillSet[1][3] = skill;

      skill = new Skill("Tactical Supply Drop", 1, "Officer/aTacticalSupplyDrop.gif", "Officer/iTacticalSupplyDrop.gif");
      skill.Description = "You call in to headquarters for dilivery of tactical supplies in the field.";
      skill.Modifiers[0] = new Modifier("Tactical Supply Drop (Mark 1)", "Tactical Supply Drop (Mark 1): You call in to headquarters for delivery of tactical supplies in the field.", null);
      skill.Requirment = SkillSet[3][2];
      SkillSet[3][3] = skill;

      skill = new Skill("Superior Firepower", 1, "Officer/aSuperiorFirepower.gif", "Officer/iSuperiorFirepower.gif");
      skill.Description = "Dramatically increases the critical chance and damage output of all artillery and grenade type special abilities.";
      skill.Modifiers[0] = new Modifier("Superior Firerpower", "Superior Firepower: When you absolutely positively have to level an area, it's time to break out the good stuff. While active this buff dramatically increases the damage output and critical hit chance of all grenade and artillery area effect special attacks.", null);
      skill.Requirment = SkillSet[4][2];
      SkillSet[4][3] = skill;

      skill = new Skill("Identify Weakness", 2, "Officer/aIdentifyWeakness.gif", "Officer/iIdentifyWeakness.gif");
      skill.Description = "Increases the damage output and reduces the action cost of the Paint Target line.";
      skill.Modifiers[0] = new Modifier("Paint Target Damage", "", new Array(10, 20, 0, 0));
      skill.Modifiers[1] = new Modifier("Paint Target Action Cost", "", new Array(10, 20, 0, 0));
      SkillSet[5][3] = skill;

      skill = new Skill("Charge!", 1, "Officer/aCharge.gif", "Officer/iCharge.gif");
      skill.Description = "Increases damage output, run speed, reduces action cost and removes snaring effects on your group.";
      skill.Modifiers[0] = new Modifier("Charge!", "Charge!: Increases damage output, reduces action cost, provides a speed boost and removes snaring effects for all members of your party.", null);
      skill.Requirment = SkillSet[0][3];
      SkillSet[0][4] = skill;

      skill = new Skill("Last Words", 1, "Officer/aLastWords.gif", "Officer/iLastWords.gif");
      skill.Description = "If you die in action group members receive healing, restored action, increased damage output and dodge chance.";
      skill.Requirment = SkillSet[0][4];
      SkillSet[1][4] = skill;

      skill = new Skill("Anger Management", 2, "Officer/aMisdirectedAnger.gif", "Officer/iMisdirectedAnger.gif");
      skill.Description = "Increases the hate the officer shares with ally by 5% and 10%, making a total of 25%.";
      skill.Modifiers[0] = new Modifier("Hate Redirection", "", new Array(5, 15, 0, 0));
      skill.Requirment = SkillSet[2][2];
      SkillSet[2][4] = skill;

      skill = new Skill("Reinforcements", 1, "Officer/aReinforcements.gif", "Officer/iReinforcements.gif");
      skill.Description = "Deploys a soldier from headquarters who will serve under your command and assist you in combat.";
      skill.Modifiers[0] = new Modifier("Reinforcements (Mark 1)", "Reinforcements (Mark 1): Deploys a soldier from headquarters who will serve under your command and assist you in combat until dismissed or killed in action.", null);
      skill.Requirment = SkillSet[3][3];
      SkillSet[3][4] = skill;

      skill = new Skill("Primacy", 3, "Officer/aPrimacy.gif", "Officer/iPrimacy.gif");
      skill.Description = "Reduces the cooldown time of the Superior Firepower expertise.";
      skill.Modifiers[0] = new Modifier("Superior Firepower Cooldown", "", new Array(3, 6, 10, 0));
      skill.Requirment = SkillSet[4][3];
      SkillSet[4][4] = skill;

      skill = new Skill("Advanced Paint Target", 1, "Officer/aAdvancedPaintTarget.gif", "Officer/iAdvancedPaintTarget.gif");
      skill.Description = "An extended line of Paint Target abilities.";
      skill.Modifiers[0] = new Modifier("Paint Target (Mark 4)", "Paint Target (Mark 4): A command directing your group's fire at a single target, lowering their defenses.", null);
      skill.Requirment = SkillSet[5][3];
      SkillSet[5][4] = skill;

      break;

    case "Bounty Specialization":

      skill = new Skill("Endurance", 4, "BountyHunter/aEndurance.gif", "BountyHunter/iEndurance.gif");
      skill.Description = "Increased Stamina.";
      skill.Modifiers[0] = new Modifier("Stamina", "", new Array(10, 20, 30, 50));
      SkillSet[0][0] = skill;

      skill = new Skill("Marksmanship", 4, "BountyHunter/aMarksmanship.gif", "BountyHunter/iMarksmanship.gif");
      skill.Description = "Increased Precision.";
      skill.Modifiers[0] = new Modifier("Precision", "", new Array(10, 20, 30, 50));
      SkillSet[2][0] = skill;

      skill = new Skill("Evasion", 4, "BountyHunter/aEvasion.gif", "BountyHunter/iEvasion.gif");
      skill.Description = "Increased Agility.";
      skill.Modifiers[0] = new Modifier("Agility", "", new Array(10, 20, 30, 50));
      SkillSet[4][0] = skill;

      skill = new Skill("Pain Tolerance", 4, "BountyHunter/aPainTolerance.gif", "BountyHunter/iPainTolerance.gif");
      skill.Description = "Increased Constitution.";
      skill.Modifiers[0] = new Modifier("Constitution", "", new Array(10, 20, 30, 50));
      SkillSet[6][0] = skill;

      skill = new Skill("Small Arms Efficiency", 4, "BountyHunter/aCarbineEfficiency.gif", "BountyHunter/iCarbineEfficiency.gif");
      skill.Description = "Reduced action cost while using Carbines or Pistols.";
      skill.Modifiers[0] = new Modifier("Carbine Action Cost", "", new Array(3, 6, 10, 15));
      skill.Modifiers[1] = new Modifier("Pistol Action Cost", "", new Array(3, 6, 10, 15));
      SkillSet[0][1] = skill;

      skill = new Skill("Rifle Efficiency", 4, "BountyHunter/aRifleEfficiency.gif", "BountyHunter/iRifleEfficiency.gif");
      skill.Description = "Reduced action cost while using Rifles.";
      skill.Modifiers[0] = new Modifier("Rifle Action Cost", "", new Array(3, 6, 10, 15));
      SkillSet[2][1] = skill;

      skill = new Skill("Small Arms Accuracy", 2, "BountyHunter/aCarbineAccuracy.gif", "BountyHunter/iCarbineAccuracy.gif");
      skill.Description = "Increases damage while using Carbines or Pistols.";
      skill.Modifiers[0] = new Modifier("Carbine Damage", "", new Array(2, 5, 0, 0));
      skill.Modifiers[1] = new Modifier("Pistol Damage", "", new Array(2, 5, 0, 0));
      SkillSet[0][2] = skill;

      skill = new Skill("Rifle Marksmanship", 2, "BountyHunter/aRifleMarksmanship.gif", "BountyHunter/iRifleMarksmanship.gif");
      skill.Description = "Increases damage while using Rifles.";
      skill.Modifiers[0] = new Modifier("Rifle Damage", "", new Array(2, 5, 0, 0));
      SkillSet[2][2] = skill;

      skill = new Skill("Kinetic Armor", 4, "BountyHunter/aKineticArmor.gif", "BountyHunter/iKineticArmor.gif");
      skill.Description = "Increased Kinetic protection.";
      skill.Modifiers[0] = new Modifier("Kinetic Armor", "", new Array(250, 500, 750, 1000));
      SkillSet[4][2] = skill;

      skill = new Skill("Energy Armor", 4, "BountyHunter/aEnergyArmor.gif", "BountyHunter/iEnergyArmor.gif");
      skill.Description = "Increased Energy protection.";
      skill.Modifiers[0] = new Modifier("Energy Armor", "", new Array(500, 1000, 1500, 2000));
      SkillSet[6][2] = skill;

      skill = new Skill("Deadly Strikes", 1, "BountyHunter/aDeadlyStrikes.gif", "BountyHunter/iDeadlyStrikes.gif");
      skill.Description = "Grants 10% Critical hit bonus and 10m Range bonus while using Carabines or Pistols.";
      skill.Modifiers[0] = new Modifier("Carbine Range Bonus", "", new Array(10, 0, 0, 0));
      skill.Modifiers[1] = new Modifier("Carbine Critical Chance", "", new Array(10, 0, 0, 0));
      skill.Modifiers[2] = new Modifier("Pistol Critical Chance", "", new Array(10, 0, 0, 0));
      skill.Modifiers[3] = new Modifier("Pistol Range Bonus", "", new Array(5, 0, 0, 0));
      skill.Requirment = SkillSet[0][2];
      SkillSet[0][3] = skill;

      skill = new Skill("Sniper Shot", 1, "BountyHunter/aSniperShot.gif", "BountyHunter/iSniperShot.gif");
      skill.Description = "High damage attack made from the prone position.";
      skill.Modifiers[0] = new Modifier("Sniper Shot (Mark 1)", "Sniper Shot (Mark 1): A deadly high damage attack. Requires a rifle and the prone position to activate.", null);
      skill.Requirment = SkillSet[2][2];
      SkillSet[2][3] = skill;

      skill = new Skill("Melee Defense", 3, "BountyHunter/aMeleeDefense.gif", "BountyHunter/iMeleeDefense.gif");
      skill.Description = "Grants 1% Block per point against Melee Attacks when all vulnerable areas are equipped with Assault Armor.";
      skill.Modifiers[0] = new Modifier("Combat Defense: Melee Block", "", new Array(1, 2, 3, 0));
      SkillSet[4][3] = skill;

      skill = new Skill("Ranged Defense", 3, "BountyHunter/aRangedDefense.gif", "BountyHunter/iRangedDefense.gif");
      skill.Description = "Grants 1% Dodge per point against Ranged Attacks when all vulnerable areas are equipped with Assault Armor.";
      skill.Modifiers[0] = new Modifier("Combat Defense: Ranged Dodge", "", new Array(1, 2, 3, 0));
      SkillSet[6][3] = skill;

      skill = new Skill("Relentless Onslaught", 1, "BountyHunter/aRelentlessOnslaught.gif", "BountyHunter/iRelentlessOnslaught.gif");
      skill.Description = "All action costs are dramatically reduced or eliminated while active.";
      skill.Modifiers[0] = new Modifier("Relentless Onslaught", "Relentless Onslaught: When activated this ability will dramatically reduce or eliminate all action costs for a short period of time. This ability requires an equipped carbine to activate.", null);
      skill.Requirment = SkillSet[0][3];
      SkillSet[0][4] = skill;

      skill = new Skill("Take Cover", 1, "BountyHunter/aTakeCover.gif", "BountyHunter/iTakeCover.gif");
      skill.Description = "Increase in defense versus ranged attacks and turns the Bounty Hunter invisible to enemy radar. Requires the prone position.";
      skill.Modifiers[0] = new Modifier("Take Cover", "Take Cover: You gain exceptional protection versus ranged attacks when this ability is used. This ability requires an equipped rifle and the prone posture.", null);
      skill.Requirment = SkillSet[2][3];
      SkillSet[2][4] = skill;

      skill = new Skill("Power Sprint", 1, "BountyHunter/aPowerSprint.gif", "BountyHunter/iPowerSprint.gif");
      skill.Description = "Increases run speed and removes or prevents snaring effects.";
      skill.Modifiers[0] = new Modifier("Power Assisted Sprint", "Power Assisted Sprint: When used servos built into your armor give you the ability to run very fast and removes or prevents snaring effects.", null);
      skill.Requirment = SkillSet[4][3];
      SkillSet[4][4] = skill;

      skill = new Skill("Duelist Stance", 1, "BountyHunter/aDuelistStance.gif", "BountyHunter/iDuelistStance.gif");
      skill.Description = "While this ability is active, the Bounty Hunter will receive reactive heals when wounded.";
      skill.Modifiers[0] = new Modifier("Duelist Stance", "Duelist Stance (Mark 1): Hidden Bacta Injectors in the Bounty Hunters Assault Armor will react to impacts and instantly try to heal damaged organs. The effect can only be sustained for a short amount of time before the armor has to recharge itself.", null);
      skill.Requirment = SkillSet[6][3];
      SkillSet[6][4] = skill;

      break;

    case "Bounty Hunting":

      skill = new Skill("Assault Efficiency", 4, "BountyHunter/aAssaultEfficiency.gif", "BountyHunter/iAssaultEfficiency.gif");
      skill.Description = "Reduces action cost of Assault special attacks.";
      skill.Modifiers[0] = new Modifier("Assault Action Cost", "", new Array(5, 10, 15, 20));
      SkillSet[0][0] = skill;

      skill = new Skill("Absorption", 4, "BountyHunter/aAbsorption.gif", "BountyHunter/iAbsorption.gif");
      skill.Description = "Increases Kinetic protection.";
      skill.Modifiers[0] = new Modifier("Kinetic Protection", "", new Array(125, 250, 375, 500));
      SkillSet[3][0] = skill;

      skill = new Skill("Ambush Efficiency", 4, "BountyHunter/aAmbushEfficiency.gif", "BountyHunter/iAmbushEfficiency.gif");
      skill.Description = "Reduces action cost of Ambush special attacks.";
      skill.Modifiers[0] = new Modifier("Ambush Action Cost", "", new Array(5, 10, 15, 20));
      SkillSet[4][0] = skill;

      skill = new Skill("Lethality", 4, "BountyHunter/aLethality.gif", "BountyHunter/iLethality.gif");
      skill.Description = "Increases damage of Cripple special attacks.";
      skill.Modifiers[0] = new Modifier("Cripple Damage", "", new Array(5, 10, 15, 25));
      SkillSet[6][0] = skill;

      skill = new Skill("Intense Assault", 3, "BountyHunter/aIntenseAssault.gif", "BountyHunter/iIntenseAssault.gif");
      skill.Description = "Increases damage of Assault specials.";
      skill.Modifiers[0] = new Modifier("Assault Damage", "", new Array(2, 5, 10, 0));
      SkillSet[0][1] = skill;

      skill = new Skill("Return Fire", 1, "BountyHunter/aReturnFire.gif", "BountyHunter/iReturnFire.gif");
      skill.Description = "Automatically retaliate against attacks while Return Fire is active.";
      skill.Modifiers[0] = new Modifier("Return Fire", "Return Fire: When activated this ability will automatically execute a bonus attack against any enemy that strikes you.", null);
      skill.Requirment = SkillSet[0][1];
      SkillSet[2][1] = skill;

      skill = new Skill("Ambush Intensity", 3, "BountyHunter/aAmbushIntensity.gif", "BountyHunter/iAmbushIntensity.gif");
      skill.Description = "Increases damage of Ambush specials.";
      skill.Modifiers[0] = new Modifier("Ambush Damage", "", new Array(2, 5, 10, 0));
      SkillSet[4][1] = skill;

      skill = new Skill("Trap Extension", 2, "BountyHunter/aTrapExtension.gif", "BountyHunter/iTrapExtension.gif");
      skill.Description = "Increases radius of Razor Net and Tangle Bomb effects.";
      skill.Modifiers[0] = new Modifier("Trap Area Effect", "", new Array(1, 2, 0, 0));
      SkillSet[6][1] = skill;

      skill = new Skill("Rapid Assault", 2, "BountyHunter/aRapidAssault.gif", "BountyHunter/iRapidAssault.gif");
      skill.Description = "Reduces cooldown time of Assault specials.";
      skill.Modifiers[0] = new Modifier("Assault Cooldown", "", new Array(5, 10, 0, 0));
      SkillSet[0][2] = skill;

      skill = new Skill("Antagonize", 1, "BountyHunter/aAntagonize.gif", "BountyHunter/iAntagonize.gif");
      skill.Description = "An attack intended to goad your opponent into attacking you while leaving others alone.";
      skill.Modifiers[0] = new Modifier("Antagonize (Mark 1)", "Antagonize (Mark 1): This attack does little damage but makes your target extremely angry with you so they are more likely to attack you rather than your allies.", null);
      SkillSet[2][2] = skill;

      skill = new Skill("Deflection", 4, "BountyHunter/aDeflection.gif", "BountyHunter/iDeflection.gif");
      skill.Description = "Increases Energy protection.";
      skill.Modifiers[0] = new Modifier("Energy Protection", "", new Array(250, 500, 750, 1000));
      skill.Requirment = SkillSet[3][0];
      SkillSet[3][2] = skill;

      skill = new Skill("Swift Ambush", 2, "BountyHunter/aSwiftAmbush.gif", "BountyHunter/iSwiftAmbush.gif");
      skill.Description = "Reduces cooldown time of Ambush specials.";
      skill.Modifiers[0] = new Modifier("Ambush Cooldown", "", new Array(10, 20, 0, 0));
      SkillSet[4][2] = skill;

      skill = new Skill("Cruelty", 3, "BountyHunter/aCruelty.gif", "BountyHunter/iCruelty.gif");
      skill.Description = "Increases snare duration of Cripple, Razor Net and Tangle Bomb effects.";
      skill.Modifiers[0] = new Modifier("Snare Duration", "", new Array(1, 2, 3, 0));
      SkillSet[6][2] = skill;

      skill = new Skill("Fumble", 1, "BountyHunter/aFumble.gif", "BountyHunter/iFumble.gif");
      skill.Description = "Causes opponents to be more likely to make ineffective attacks but also more likely to attack you rather then others.";
      skill.Modifiers[0] = new Modifier("Fumble", "Fumble: This attack does little damage but unnerves your target so much that their attacks are more likely to be glancing blows. This attack generates a large amount of hate and is likely to cause the target to attack you rather than your allies.", null);
      skill.Requirment = SkillSet[2][2];
      SkillSet[2][3] = skill;

      skill = new Skill("Advanced Ambush", 1, "BountyHunter/aAdvancedAmbush.gif", "BountyHunter/iAdvancedAmbush.gif");
      skill.Description = "Extended line of Ambush special attacks that increases critical chance and lowers target's armor rating by applying the Armor Break debuff. The Armor Break debuff stacks up to 5 times per target.";
      skill.Modifiers[0] = new Modifier("Ambush (Mark 3)", "Ambush (Mark 3): A quick high powered attack that increases your target's vunerability to critical hits and reduces their armor rating.", null);
      skill.Requirment = SkillSet[4][2];
      SkillSet[4][3] = skill;

      skill = new Skill("Advanced Armor Break", 1, "BountyHunter/aAdvancedArmorBreak.gif", "BountyHunter/iAdvancedArmorBreak.gif");
      skill.Description = "Increases damage as well as increases the Bounty Hunter's chance to score a critical hit with ambush line attacks.";
      skill.Modifiers[0] = new Modifier("Ambush Damage", "", new Array(2, 0, 0, 0));
      skill.Modifiers[1] = new Modifier("Ambush Critical Chance", "", new Array(10, 0, 0, 0));
      skill.Requirment = SkillSet[4][3];
      SkillSet[5][3] = skill;

      skill = new Skill("Intimidating Strike", 1, "BountyHunter/aIntimidatingStrike.gif", "BountyHunter/iIntimidatingStrike.gif");
      skill.Description = "Attack against opponent's action pool.";
      skill.Modifiers[0] = new Modifier("Intimidating Strike", "Intimidating Strike (Mark 1): An attack that saps your opponent's will to fight and drains them of action.", null);
      skill.Requirment = SkillSet[6][2];
      SkillSet[6][3] = skill;

      skill = new Skill("Innate Assault", 1, "BountyHunter/aInnateAssault.gif", "BountyHunter/iInnateAssault.gif");
      skill.Description = "Chance for a Free Shot, reducing Assault special action cost to zero.";
      skill.Modifiers[0] = new Modifier("Assault Freeshot Chance", "", new Array(20, 0, 0, 0));
      skill.Requirment = SkillSet[0][2];
      SkillSet[0][4] = skill;

      skill = new Skill("Prescience", 1, "BountyHunter/aPrescience.gif", "BountyHunter/iPrescience.gif");
      skill.Description = "Careful attention paid to the target allows the bounty hunter to avoid most of their attacks for the duration of the effect.";
      skill.Modifiers[0] = new Modifier("Prescience", "Prescience: Careful attention paid to the target allows the bounty hunter to avoid most of their attacks for the duration of the effect.", null);
      skill.Requirment = SkillSet[2][3];
      SkillSet[2][4] = skill;

      skill = new Skill("Shields", 1, "BountyHunter/aShields.gif", "BountyHunter/iShields.gif");
      skill.Description = "Absorb incoming damage and redirects them to outgoing attacks.";
      skill.Modifiers[0] = new Modifier("Shields", "Shields: Surrounds you in a powerful energy shield that absorbs incoming attacks. Absorbed attacks will weaken the shield but that power is directed into your own outgoing attacks. This bonus damage will fade after a short time.", null);
      skill.Requirment = SkillSet[3][2];
      SkillSet[3][4] = skill;

      skill = new Skill("Man Hunter", 4, "BountyHunter/aManHunter.gif", "BountyHunter/iManHunter.gif");
      skill.Description = "Critical hit bonus versus humanoids.";
      skill.Modifiers[0] = new Modifier("PvP Critical Chance", "", new Array(1, 2, 3, 5));
      skill.Modifiers[1] = new Modifier("Humanoid Critical Chance", "", new Array(1, 2, 3, 5));
      SkillSet[4][4] = skill;

      skill = new Skill("Dread Strike", 1, "BountyHunter/aDreadStrike.gif", "BountyHunter/iDreadStrike.gif");
      skill.Description = "Reduces opponent's damage output and ability to heal.";
      skill.Modifiers[0] = new Modifier("Dread Strike", "Dread Strike: An attack that instills a sense of dread in your target and reduces their damage potential and reduces their ability to heal.", null);
      skill.Requirment = SkillSet[6][3];
      SkillSet[6][4] = skill;

      break;

    case "Jedi General":

      skill = new Skill("Enhanced Strength", 2, "Jedi/aEnhancedStrength.gif", "Jedi/iEnhancedStrength.gif");
      skill.Description = "Strength increased by 25 points per point spent.";
      skill.Modifiers[0] = new Modifier("Strength", "", new Array(25, 50, 0, 0));
      SkillSet[2][0] = skill;

      skill = new Skill("Enhanced Constitution", 2, "Jedi/aEnhancedConstitution.gif", "Jedi/iEnhancedConstitution.gif");
      skill.Description = "Constitution increased by 25 points per point spent.";
      skill.Modifiers[0] = new Modifier("Constitution", "", new Array(25, 50, 0, 0));
      SkillSet[3][0] = skill;

      skill = new Skill("Enhanced Agility", 2, "Jedi/aEnhancedAgility.gif", "Jedi/iEnhancedAgility.gif");
      skill.Description = "Agility increased by 25 points per point spent.";
      skill.Modifiers[0] = new Modifier("Agility", "", new Array(25, 50, 0, 0));
      SkillSet[4][0] = skill;

      skill = new Skill("Enhanced Stamina", 2, "Jedi/aEnhancedStamina.gif", "Jedi/iEnhancedStamina.gif");
      skill.Description = "Stamina increased by 25 points per point spent.";
      skill.Modifiers[0] = new Modifier("Stamina", "", new Array(25, 50, 0, 0));
      SkillSet[5][0] = skill;

      skill = new Skill("Improved Force Throw", 2, "Jedi/aImprovedForceThrow.gif", "Jedi/iImprovedForceThrow.gif");
      skill.Description = "Force Throw's damage is increased by 5% per point spent.";
      skill.Modifiers[0] = new Modifier("Force Throw Damage", "", new Array(5, 10, 0, 0));
      SkillSet[1][1] = skill;

      skill = new Skill("Alacrity", 4, "Jedi/aAlacrity.gif", "Jedi/iAlacrity.gif");
      skill.Description = "The chance for a blow to glance off you is increased by 2% per point spent.";
      skill.Modifiers[0] = new Modifier("Glancing Blow Increase", "", new Array(2, 4, 6, 8));
      SkillSet[4][1] = skill;

      skill = new Skill("Improved Crippling Accuracy", 3, "Jedi/aImprovedCripplingAccuracy.gif", "Jedi/iImprovedCripplingAccuracy.gif");
      skill.Description = "Force Throw's snare duration is increased by 2 seconds per point spent.";
      skill.Modifiers[0] = new Modifier("Throw Snare Duration", "", new Array(2, 4, 6, 0));
      skill.Requirment = SkillSet[1][1];
      SkillSet[1][2] = skill;

      skill = new Skill("Exacting Strikes", 4, "Jedi/aExactingStrikes.gif", "Jedi/iExactingStrikes.gif");
      skill.Description = "Strike and sweep damage is increased by 2% per point spent.";
      skill.Modifiers[0] = new Modifier("Sweep Damage", "", new Array(2, 4, 6, 8));
      skill.Modifiers[1] = new Modifier("Strike Damage", "", new Array(2, 4, 6, 8));
      SkillSet[3][2] = skill;

      skill = new Skill("Force Cloak", 1, "Jedi/aForceCloak.gif", "Jedi/iForceCloak.gif");
      skill.Description = "Grants the ability to use Force Cloak.";
      skill.Modifiers[0] = new Modifier("Force Cloak", "Force Cloak: This ability allows invisibility for a duration of time. With Improved Force Cloak, Jedi can escape combat.", null);
      skill.Requirment = SkillSet[4][1];
      SkillSet[4][2] = skill;

      skill = new Skill("Heightened Speed", 4, "Jedi/aHeightenedSpeed.gif", "Jedi/iHeightenedSpeed.gif");
      skill.Description = "Force Run's speed is increased by 10% per point spent.";
      skill.Modifiers[0] = new Modifier("Force Run Movement", "", new Array(10, 20, 30, 40));
      SkillSet[5][2] = skill;

      skill = new Skill("Defensive Fighting", 1, "Jedi/aStanceSaberBlock.gif", "Jedi/iStanceSaberBlock.gif");
      skill.Description = "Increase chance to parry by 10%.";
      skill.Modifiers[0] = new Modifier("Stance Saber Block", "", new Array(10, 0, 0, 0));
      SkillSet[1][3] = skill;

      skill = new Skill("Improved Saber Block", 3, "Jedi/aImprovedSaberBlock.gif", "Jedi/iImprovedSaberBlock.gif");
      skill.Description = "Improves the chance to parry an attack by 5% per point spent while saber block is active.";
      skill.Modifiers[0] = new Modifier("Saber Block", "", new Array(5, 10, 15, 0));
      skill.Requirment = SkillSet[1][3];
      SkillSet[2][3] = skill;

      skill = new Skill("Incisiveness", 4, "Jedi/aIncisiveness.gif", "Jedi/iIncisiveness.gif");
      skill.Description = "Increases the chance to critical strike by 1% per point spent.";
      skill.Modifiers[0] = new Modifier("Critical Chance Increase", "", new Array(1, 2, 3, 4));
      skill.Requirment = SkillSet[3][2];
      SkillSet[3][3] = skill;

      skill = new Skill("Second Wind", 2, "Jedi/aSecondWind.gif", "Jedi/iSecondWind.gif");
      skill.Description = "Force Run's duration is increased by 2 seconds per point spent.";
      skill.Modifiers[0] = new Modifier("Force Run Duration", "", new Array(2, 4, 0, 0));
      skill.Requirment = SkillSet[5][2];
      SkillSet[5][3] = skill;

      skill = new Skill("Force Shockwave", 1, "Jedi/aForceShockwave.gif", "Jedi/iForceShockwave.gif");
      skill.Description = "Grants the ability to use Force Shockwave attacks.";
      skill.Modifiers[0] = new Modifier("Force Shockwave 1: Crumple", "Force Crumple: A crushing Force cone effect attack that causes damage to your opponents in front of you.", null);
      SkillSet[1][4] = skill;

      skill = new Skill("Improved Force Shockwave", 3, "Jedi/aImprovedForceShockwave.gif", "Jedi/iImprovedForceShockwave.gif");
      skill.Description = "Force Shockwave's damage is increased by 2% per point spent.";
      skill.Modifiers[0] = new Modifier("Shockwave Damage", "", new Array(2, 4, 6, 0));
      skill.Requirment = SkillSet[1][4];
      SkillSet[2][4] = skill;

      skill = new Skill("Fidelity", 4, "Jedi/aFidelity.gif", "Jedi/iFidelity.gif");
      skill.Description = "All damage attacks are increased by 1% damage per point spent.";
      skill.Modifiers[0] = new Modifier("All Attacks Damage", "", new Array(1, 2, 3, 4));
      skill.Requirment = SkillSet[3][3];
      SkillSet[3][4] = skill;

      skill = new Skill("Improved Force Cloak", 1, "Jedi/aImprovedForceCloak.gif", "Jedi/iImprovedForceCloak.gif");
      skill.Description = "Force Cloak allows a Jedi to escape from combat.";
      skill.Modifiers[0] = new Modifier("Escape Combat", "", new Array(1, 0, 0, 0));
      skill.Requirment = SkillSet[4][2];
      SkillSet[4][4] = skill;

      break;

    case "Path":

      skill = new Skill("Cautious Nature", 4, "Jedi/aCautiousNature.gif", "Jedi/iCautiousNature.gif");
      skill.Description = "Constitution increased by 10 per point spent as well as Glancing Blow increased by 1% per point spent when using a Jedi stance.";
      skill.Modifiers[0] = new Modifier("Stance Constitution", "", new Array(10, 20, 30, 40));
      skill.Modifiers[1] = new Modifier("Stance Glance", "", new Array(1, 2, 3, 4));
      SkillSet[1][0] = skill;

      skill = new Skill("Remorseless Nature", 4, "Jedi/aRemorselessNature.gif", "Jedi/iRemorselessNature.gif");
      skill.Description = "Stamina is increased by 10 per point spent, when using a Jedi focus.";
      skill.Modifiers[0] = new Modifier("Focus Stamina", "", new Array(10, 20, 30, 40));
      SkillSet[5][0] = skill;

      skill = new Skill("Saber Shackle", 4, "Jedi/aPracticedFluidity.gif", "Jedi/iPracticedFluidity.gif");
      skill.Description = "Saber Shackle adds a 25% chance per point spent to snare and a 2% chance per point spent to root a target with Saber Throw, while in a stance.";
      skill.Modifiers[0] = new Modifier("Force Throw Snare Chance", "", new Array(25, 50, 75, 100));
      skill.Modifiers[1] = new Modifier("Force Throw Root Chance", "", new Array(2, 4, 6, 8));
      skill.Requirment = SkillSet[1][0];
      SkillSet[0][1] = skill;

      skill = new Skill("Perceptive Sentinel", 4, "Jedi/aPerceptiveSentinel.gif", "Jedi/iPerceptiveSentinel.gif");
      skill.Description = "Increases Critical Hit Defense by 1% per point spent and an additional 1% Critical Hit Defense for PvP per point spent, while in a stance.";
      skill.Modifiers[0] = new Modifier("Critical Chance Defense", "", new Array(1, 2, 3, 4));
      skill.Modifiers[1] = new Modifier("Critical Chance Defense PvP", "", new Array(1, 2, 3, 4));
      skill.Requirment = SkillSet[1][0];
      SkillSet[2][1] = skill;

      skill = new Skill("Brutality", 4, "Jedi/aBrutality.gif", "Jedi/iBrutality.gif");
      skill.Description = "Critical strikes are increased by 1% per point spent, when using a Jedi focus.";
      skill.Modifiers[0] = new Modifier("Focus Critical", "", new Array(1, 2, 3, 4));
      skill.Requirment = SkillSet[5][0];
      SkillSet[4][1] = skill;

      skill = new Skill("Ruthless Precision", 4, "Jedi/aRuthlessPrecision.gif", "Jedi/iRuthlessPrecision.gif");
      skill.Description = "Allows cruel, calculated strikes to increase damage by 2% per point spent to an opponent, while using a focus.";
      skill.Modifiers[0] = new Modifier("Damage Increase", "", new Array(2, 4, 6, 8));
      skill.Requirment = SkillSet[5][0];
      SkillSet[6][1] = skill;

      skill = new Skill("Reactive Response", 2, "Jedi/aReactiveResponse.gif", "Jedi/iReactiveResponse.gif");
      skill.Description = "Each damaging strike on the Jedi increases that Jedi's action by 2% per point spent, when using a Jedi stance.";
      skill.Modifiers[0] = new Modifier("Damage Adds To Action", "", new Array(2, 4, 0, 0));
      skill.Requirment = SkillSet[0][1];
      SkillSet[0][2] = skill;

      skill = new Skill("Riposte", 2, "Jedi/aRiposte.gif", "Jedi/iRiposte.gif");
      skill.Description = "A maneuver that has a 25% chance per point spent to counter attack a melee or ranged attack, when an opponent misses within a 5m range. It can only be performed while in a stance.";
      skill.Modifiers[0] = new Modifier("Riposte Chance", "", new Array(25, 50, 0, 0));
      skill.Requirment = SkillSet[1][0];
      SkillSet[1][2] = skill;

      skill = new Skill("Forsake Fear", 1, "Jedi/aForsakeFear.gif", "Jedi/iForsakeFear.gif");
      skill.Description = "For 10 seconds, the Jedi and all members of the Jedi's party regenerate an extra 6% of their action per second.";
      skill.Modifiers[0] = new Modifier("Forsake Fear", "Forsake Fear: A meditative state that focuses the Force to nearby party members and yourself to regenerate action. Combat damage does not interrupt this meditative state.", null);
      skill.Requirment = SkillSet[2][1];
      SkillSet[2][2] = skill;

      skill = new Skill("Cloud Minds", 1, "Jedi/aCloudMinds.gif", "Jedi/iCloudMinds.gif");
      skill.Description = "Grants the ability to use Mind Trick.";
      skill.Modifiers[0] = new Modifier("Mind Trick 2: Cloud Minds", "Claud Minds: An ability that briefly confuses opponents in the area causing them to forget you as threat.<br><br>Weaker attack: Mind Trick", null);
      SkillSet[3][2] = skill;

      skill = new Skill("Dark Lightning", 1, "Jedi/aDarkLightning.gif", "Jedi/iDarkLightning.gif");
      skill.Description = "Grants the ability to use Dark Lightning attacks.";
      skill.Modifiers[0] = new Modifier("Force Lightning 2: Shock", "Force Shock: Channel the Force into an electric shock that sends electricity burning through your opponent.<br><br>Weaker attack: Force Spark", null);
      skill.Requirment = SkillSet[4][1];
      SkillSet[4][2] = skill;

      skill = new Skill("Tempt Hatred", 2, "Jedi/aTemptHatred.gif", "Jedi/iTemptHatred.gif");
      skill.Description = "A Jedi gains a 2% percent of action per point spent from damage by tempting hatred in that opponent, while in a focus.";
      skill.Modifiers[0] = new Modifier("Attack Damage Action Bonus", "", new Array(2, 4, 0, 0));
      skill.Requirment = SkillSet[5][0];
      SkillSet[5][2] = skill;

      skill = new Skill("Force Choke", 1, "Jedi/aForceChoke.gif", "Jedi/iForceChoke.gif");
      skill.Description = "Grants the ability to use Force Choke attacks.";
      skill.Modifiers[0] = new Modifier("Force Choke 1: Grapple", "Grapple: A light choke attack that damages your opponent.", null);
      skill.Requirment = SkillSet[6][1];
      SkillSet[6][2] = skill;

      skill = new Skill("Force Clarity", 1, "Jedi/aForceClarity.gif", "Jedi/iForceClarity.gif");
      skill.Description = "Adds a 5% chance to strike twice with a lightsaber.";
      skill.Modifiers[0] = new Modifier("Second Attack", "", new Array(5, 0, 0, 0));
      skill.Requirment = SkillSet[0][2];
      SkillSet[0][3] = skill;

      skill = new Skill("Saber Reflect", 1, "Jedi/aSaberReflect.gif", "Jedi/iSaberReflect.gif");
      skill.Description = "A defensive state of mind that allows for reflecting melee and ranged attacks partially back on the attacker when parried within a 64m range. It can only be performed while in a stance.";
      skill.Modifiers[0] = new Modifier("Saber Reflect", "Saber Reflect allows a Jedi to return a portion of an incoming attack back on the attacker within a 64m range, for a ranged or melee attack.", null);
      skill.Requirment = SkillSet[1][2];
      SkillSet[1][3] = skill;

      skill = new Skill("Hermetic Touch", 1, "Jedi/aHermeticTouch.gif", "Jedi/iHermeticTouch.gif");
      skill.Description = "Grants the bermetic touch ability which will cure 5 levels of damage over time effects and temporarily become immune to all damage over time attacks, when using a Jedi stance.";
      skill.Modifiers[0] = new Modifier("Hermetic Touch", "This ability will clear up to 5 stacks of all damage over time debuffs and make the player immune to further applications for the duration.", null);
      skill.Requirment = SkillSet[2][2];
      SkillSet[2][3] = skill;

      skill = new Skill("Expansive Trickery", 3, "Jedi/aExpansiveTrickery.gif", "Jedi/iExpansiveTrickery.gif");
      skill.Description = "Increases the radius for Cloud Minds by 2 meters per point spent.";
      skill.Modifiers[0] = new Modifier("Cloud Minds Size", "", new Array(2, 4, 6, 0));
      skill.Requirment = SkillSet[3][2];
      SkillSet[3][3] = skill;

      skill = new Skill("Maelstrom", 1, "Jedi/aMaelstrom.gif", "Jedi/iMaelstrom.gif");
      skill.Description = "Grants the ability to use the Maelstrom attacks, which are a cone effect lightning attack.";
      skill.Modifiers[0] = new Modifier("Force Maelstrom 1", "Force Maelstrom 1: A cone effect Force Lightning attack.", null);
      skill.Requirment = SkillSet[4][2];
      SkillSet[4][3] = skill;

      skill = new Skill("Force Drain", 1, "Jedi/aForceDrain.gif", "Jedi/iForceDrain.gif");
      skill.Description = "Allows a Jedi to gain the ability to drain health from opponents, while in a focus.";
      skill.Modifiers[0] = new Modifier("Force Drain 1", "Force Drain 1: A force power that drains health from an opponent and adds it to your own, while in a focus. This attack cannot be parried.", null);
      skill.Requirment = SkillSet[5][2];
      SkillSet[5][3] = skill;

      skill = new Skill("Improved Force Choke", 2, "Jedi/aImprovedForceChoke.gif", "Jedi/iImprovedForceChoke.gif");
      skill.Description = "Force Choke's damage is increased by 10% per point spent and Force Choke's damage over time component is increased by 10% per point.";
      skill.Modifiers[0] = new Modifier("Choke Damage", "", new Array(10, 20, 0, 0));
      skill.Modifiers[1] = new Modifier("Suffocation", "", new Array(10, 20, 0, 0));
      skill.Requirment = SkillSet[6][2];
      SkillSet[6][3] = skill;

      skill = new Skill("Anticipate Aggression", 2, "Jedi/aAnticipateAggression.gif", "Jedi/iAnticipateAggression.gif");
      skill.Description = "All damage dealt to Jedi is reduced by 4% per point spent, when using a Jedi stance.";
      skill.Modifiers[0] = new Modifier("Convert Damage", "", new Array(4, 8, 0, 0));
      skill.Requirment = SkillSet[0][3];
      SkillSet[0][4] = skill;

      skill = new Skill("Improved Saber Reflect", 3, "Jedi/aImprovedSaberReflect.gif", "Jedi/iImprovedSaberReflect.gif");
      skill.Description = "Increases Saber Reflect damage by 33% per point spent as well as 16% per point for Force Alacrity effect to activate, while in a stance.";
      skill.Modifiers[0] = new Modifier("Saber Reflect Damage", "", new Array(33, 66, 100, 0));
      skill.Modifiers[1] = new Modifier("Force Alacrity", "", new Array(16, 32, 50, 0));
      skill.Requirment = SkillSet[1][3];
      SkillSet[1][4] = skill;

      skill = new Skill("Soothing Aura", 4, "Jedi/aSoothingAura.gif", "Jedi/iSoothingAura.gif");
      skill.Description = "Self heals are increased by 25% per point spent, when using a Jedi stance.";
      skill.Modifiers[0] = new Modifier("Jedi Healing", "", new Array(25, 50, 75, 100));
      skill.Requirment = SkillSet[2][3];
      SkillSet[2][4] = skill;

      skill = new Skill("Lethargy", 4, "Jedi/aLethargy.gif", "Jedi/iLethargy.gif");
      skill.Description = "The duration of the Mind Trick and Cloud Mind debuffs on affected targets are increased by two seconds for every point.";
      skill.Modifiers[0] = new Modifier("Mind Trick Duration", "", new Array(2, 4, 6, 8));
      skill.Requirment = SkillSet[3][3];
      SkillSet[3][4] = skill;

      skill = new Skill("Wracking Energy", 4, "Jedi/aWrackingEnergy.gif", "Jedi/iWrackingEnergy.gif");
      skill.Description = "Increases Force Lightning, Force Mealstrom and Force Drain armor penetration by 25% per point. Adds a snare to Force Lightning and increases snare duration by 2 seconds per point.";
      skill.Modifiers[0] = new Modifier("Piercing Energy", "", new Array(25, 50, 75, 100));
      skill.Modifiers[1] = new Modifier("Lightning Duration", "", new Array(2, 4, 6, 8));
      skill.Modifiers[2] = new Modifier("Force Lightning Snare", "", new Array(100, 100, 100, 100));
      skill.Requirment = SkillSet[4][3];
      SkillSet[4][4] = skill;

      skill = new Skill("Improved Force Drain", 3, "Jedi/aImprovedForceDrain.gif", "Jedi/iImprovedForceDrain.gif");
      skill.Description = "Improves the health returned on a successful force drain by 33% per point.";
      skill.Modifiers[0] = new Modifier("Improved Force Drain", "", new Array(33, 66, 100, 0));
      skill.Requirment = SkillSet[5][3];
      SkillSet[5][4] = skill;

      skill = new Skill("Strangulation", 2, "Jedi/aStrangulation.gif", "Jedi/iStrangulation.gif");
      skill.Description = "Reduces target's damage output by 5% per point while under teh effect of strangulation.";
      skill.Modifiers[0] = new Modifier("Strangulation", "", new Array(1, 2, 0, 0));
      skill.Requirment = SkillSet[6][3];
      SkillSet[6][4] = skill;

      break;
      
    case "Beast Mastery":
    
      skill = new Skill("Incubation", 1, "BeastMastery/aIncubation.gif", "BeastMastery/iIncubation.gif");
      skill.Description = "Allows you to use an Incubator to bioengineer new beasts. You will also receive the \"Revive Beast\" command.";
      skill.Modifiers[0] = new Modifier("Extract DNA", "Extract DNA: Ability used by Beast Masters to extract DNA of creatures. The DNA is stored in containers to keep the sample viable.", null);
      SkillSet[3][0] = skill;

      skill = new Skill("Attack!", 1, "BeastMastery/aAttack!.gif", "BeastMastery/iAttack!.gif");
      skill.Description = "You may command a beast under your control to attack anything you are able to attack yourself.";
      skill.Modifiers[0] = new Modifier("Attack!", "Attack: Order your beast to attack any target you are able to attack yourself.", null);
      skill.Requirment = SkillSet[3][0];
      SkillSet[2][0] = skill;

      skill = new Skill("Creature Knowledge", 1, "BeastMastery/aCreatureKnowledge.gif", "BeastMastery/iCreatureKnowledge.gif");
      skill.Description = "Enables you to gather detailed knowledge about creatures.";
      skill.Modifiers[0] = new Modifier("Creature Knowlege", "Creature Knowledge: Enables you to gather detailed knowledge about a creature. This ability is also used to attempt to learn an ability a creature is using against you as well aas to observe an ability the creature is using on themselves that you may later teach to your Beast Master pets.", null);
      skill.Requirment = SkillSet[2][0];
      SkillSet[1][0] = skill;
      
      skill = new Skill("Enhanced Skill Acquisition", 4, "BeastMastery/aEnhancedSkillAcquisition.gif", "BeastMastery/iEnhancedSkillAcquisition.gif");
      skill.Description = "This skill improves your chance to learn abilities that you may use to train your pet.";
      skill.Modifiers[0] = new Modifier("Ability Acquisition Bonus", "", new Array(3, 7, 11, 15));
      skill.Requirment = SkillSet[1][0];
      SkillSet[0][0] = skill;

      skill = new Skill("Beast Empathy", 3, "BeastMastery/aBeastEmpathy.gif", "BeastMastery/iBeastEmpathy.gif");
      skill.Description = "Improves your ability to keep your beasts happy.";
      skill.Modifiers[0] = new Modifier("Beast Happiness", "", new Array(5, 10, 15, 0));
      skill.Requirment = SkillSet[3][0];
      SkillSet[4][0] = skill;

      skill = new Skill("Stupid Pet Tricks", 1, "BeastMastery/aStupidPetTricks.gif", "BeastMastery/iStupidPetTricks.gif");
      skill.Description = "Beasts under your control will do tricks at your command.";
      skill.Modifiers[0] = new Modifier("Trick 1", "Trick 1: Asks your beast to perform a trick.", null);
      skill.Requirment = SkillSet[4][0];
      SkillSet[5][0] = skill;

      skill = new Skill("Create Mount", 1, "BeastMastery/aCreateMount.gif", "BeastMastery/iCreateMount.gif");
      skill.Description = "Allows you to make an incubated egg into a mount.";
      skill.Modifiers[0] = new Modifier("Create Mount", "", new Array(100, 0, 0, 0));
      skill.Requirment = SkillSet[5][0];
      SkillSet[6][0] = skill;

      skill = new Skill("Soothing Comfort", 1, "BeastMastery/aSoothingComfort.gif", "BeastMastery/iSoothingComfort.gif");
      skill.Description = "Removes a harmful effect, state or damage over time effect from your beast.";
      skill.Modifiers[0] = new Modifier("Soothing Comfort", "Soothing Comfort: Removes a harmful state, effect or damage over time effect from your beast.", null);
      skill.Requirment = SkillSet[0][0];
      SkillSet[0][1] = skill;

      skill = new Skill("Swift Recovery", 1, "BeastMastery/aSwiftRecovery.gif", "BeastMastery/iSwiftRecovery.gif");
      skill.Description = "Reduces the amount of time it takes to revive your beast from incapacitation.";
      skill.Modifiers[0] = new Modifier("Beast Revive Speed", "", new Array(10, 0, 0, 0));
      skill.Requirment = SkillSet[0][1];
      SkillSet[1][1] = skill;

      skill = new Skill("Mending", 1, "BeastMastery/aMending.gif", "BeastMastery/iMending.gif");
      skill.Description = "Restores health to your injured beast.";
      skill.Modifiers[0] = new Modifier("Heal Beast (Mark 1)", "Heal Beast (Mark 1): Restores some of your beast's health.", null);
      skill.Requirment = SkillSet[1][1];
      SkillSet[2][1] = skill;

      skill = new Skill("Additional Combat Command", 1, "BeastMastery/aAdditionalCombatCommand.gif", "BeastMastery/iAdditionalCombatCommand.gif");
      skill.Description = "You may teach your beasts an additional combat command.";
      skill.Modifiers[0] = new Modifier("Additional Combat Command", "", new Array(1, 0, 0, 0));
      skill.Requirment = SkillSet[2][1];
      SkillSet[3][1] = skill;

      skill = new Skill("Incubation Quality", 3, "BeastMastery/aIncubationQuality.gif", "BeastMastery/iIncubationQuality.gif");
      skill.Description = "Can provide up to a 20% bonus to your enzyme qualities during incubation.";
      skill.Modifiers[0] = new Modifier("Incubation Quality", "", new Array(5, 10, 20, 0));
      skill.Requirment = SkillSet[4][0];
      SkillSet[4][1] = skill;

      skill = new Skill("Incubation Processing Time", 3, "BeastMastery/aIncubationProcessingTime.gif", "BeastMastery/iIncubationProcessingTime.gif");
      skill.Description = "Reduces the time required to incubate and hatch a beast. Will reduce the time by 2, 5, and 8 hours for every point spent.";
      skill.Modifiers[0] = new Modifier("Incubation Processing Time", "", new Array(2, 5, 8, 0));
      skill.Requirment = SkillSet[6][0];
      SkillSet[6][1] = skill;

      skill = new Skill("Exceptional Nutrition", 2, "BeastMastery/aExceptionalNutrition.gif", "BeastMastery/iExceptionalNutrition.gif");
      skill.Description = "Increases the Health of all beasts under your control by up to 100%.";
      skill.Modifiers[0] = new Modifier("Beast Hitpoint Percent", "", new Array(50, 100, 0, 0));
      skill.Requirment = SkillSet[0][1];
      SkillSet[0][2] = skill;

      skill = new Skill("Improved Pet Recovery", 1, "BeastMastery/aImprovedPetRecovery.gif", "BeastMastery/iImprovedPetRecovery.gif");
      skill.Description = "Increases the amount of Health your beast receives when you revive it from incapacitation.";
      skill.Modifiers[0] = new Modifier("Beast Recovery Percent", "", new Array(50, 0, 0, 0));
      skill.Requirment = SkillSet[0][2];
      SkillSet[1][2] = skill;

      skill = new Skill("Additional Combat Command", 1, "BeastMastery/aAdditionalCombatCommand.gif", "BeastMastery/iAdditionalCombatCommand.gif");
      skill.Description = "You may teach your beasts an additional combat command.";
      skill.Modifiers[0] = new Modifier("Additional Combat Command", "", new Array(1, 0, 0, 0));
      skill.Requirment = SkillSet[1][2];
      SkillSet[2][2] = skill;

      skill = new Skill("Genetic Engineering", 3, "BeastMastery/aGeneticEngineering.gif", "BeastMastery/iGeneticEngineering.gif");
      skill.Description = "Grants a bonus to Genetic Engineering.";
      skill.Modifiers[0] = new Modifier("Genetic Engineering", "", new Array(30, 60, 100, 0));
      skill.Requirment = SkillSet[4][1];
      SkillSet[4][2] = skill;

      skill = new Skill("DNA Harvesting", 3, "BeastMastery/aDNAHarvesting.gif", "BeastMastery/iDNAHarvesting.gif");
      skill.Description = "A bonus to DNA Harvesting. Every 10 points gives you a 5% bonus to minimum quality from DNA extraction.";
      skill.Modifiers[0] = new Modifier("DNA Harvesting", "", new Array(30, 60, 100, 0));
      skill.Requirment = SkillSet[5][0];
      SkillSet[5][2] = skill;

      skill = new Skill("Dexterity Training", 2, "BeastMastery/aDexterityTraining.gif", "BeastMastery/iDexterityTraining.gif");
      skill.Description = "Increases the attack speed of beasts under your control by up to 100%";
      skill.Modifiers[0] = new Modifier("Beast Attack Speed Percent", "", new Array(50, 100, 0, 0));
      skill.Requirment = SkillSet[0][2];
      SkillSet[0][3] = skill;

      skill = new Skill("Specialized Supplements", 1, "BeastMastery/aSpecializedSupplements.gif", "BeastMastery/iSpecializedSupplements.gif");
      skill.Description = "Increases the Health and Action regeneration rate of your beast by up to 100%.";
      skill.Modifiers[0] = new Modifier("Beast Regeneration Rate", "", new Array(100, 0, 0, 0));
      skill.Requirment = SkillSet[0][3];
      SkillSet[1][3] = skill;

      skill = new Skill("Additional Combat Command", 1, "BeastMastery/aAdditionalCombatCommand.gif", "BeastMastery/iAdditionalCombatCommand.gif");
      skill.Description = "You may teach your beasts an additional combat command.";
      skill.Modifiers[0] = new Modifier("Additional Combat Command", "", new Array(1, 0, 0, 0));
      skill.Requirment = SkillSet[1][3];
      SkillSet[2][3] = skill;

      skill = new Skill("Fortitude", 3, "BeastMastery/aFortitude.gif", "BeastMastery/iFortitude.gif");
      skill.Description = "Increases the armor of beasts under your control by 100%.";
      skill.Modifiers[0] = new Modifier("Beast Armor Percent", "", new Array(30, 60, 100, 0));
      skill.Requirment = SkillSet[0][3];
      SkillSet[0][4] = skill;

      skill = new Skill("Savagery", 3, "BeastMastery/aSavagery.gif", "BeastMastery/iSavagery.gif");
      skill.Description = "Increases the damage caused by beasts under your control by 100%.";
      skill.Modifiers[0] = new Modifier("Beast Damage Percent", "", new Array(30, 60, 100, 0));
      skill.Requirment = SkillSet[0][4];
      SkillSet[1][4] = skill;

      skill = new Skill("Beast Mastery", 3, "BeastMastery/aBeastMastery.gif", "BeastMastery/iBeastMastery.gif");
      skill.Description = "You and your beast are able to anticipate each other's needs. Reduces your penalty when controlling a beast.";
      skill.Modifiers[0] = new Modifier("Attention Penalty Reduction", "", new Array(5, 15, 25, 0));
      skill.Requirment = SkillSet[1][4];
      SkillSet[2][4] = skill;
      
      break;
    }

  this.Skills = SkillSet;
  this.Name = Typ;
  }


function Expertise_getCheckBoxHTML(Name, Duty)
  {
  var HTMLCode = "";

  HTMLCode += '<table height="16" cellspacing="0" cellpadding="0" border="0" onclick="' + Duty + '">\n';
  HTMLCode += '  <tr>\n';
  HTMLCode += '    <td class="OptionBox"><img src="' + url+ 'iCheckbox.gif" width="21" height="16" id="' + Name.replace(/\s/g, '') + '"></td>\n';
  HTMLCode += '    <td class="OptionBox">&nbsp;' + Name + '</td>\n';
  HTMLCode += '  </tr>\n';
  HTMLCode += '</table>\n';

  return HTMLCode;
  }


function Expertise_selectCheckBox(ActiveBox, InactiveBox)
  {
  eval("document.all." + ActiveBox.replace(/\s/g, '') + ".src = '" + url + "aCheckbox.gif';");
  eval("document.all." + InactiveBox.replace(/\s/g, '') + ".src = '" + url + "iCheckbox.gif';");
  Expertise.actual.SkillOption = ActiveBox;
  }
  

function Expertise_getButtonHTML(Name, Duty)
  {
  var HTMLCode = "";
  
  HTMLCode += '<table height="20" cellspacing="0" cellpadding="0" border="0">\n';
  HTMLCode += '  <tr>\n';
  HTMLCode += '    <td  style="background:url(' + url + 'iButton_left.gif)" width="7" height="20" id="' + Name.replace(/\s/g, '') + '_left"><img src="shadow.gif" width="7" height="20"></td>\n';
  HTMLCode += '    <td  style="background:url(' + url + 'iButton_bg.gif)" height="20" id="' + Name.replace(/\s/g, '') + '_bg"';
  
  HTMLCode += ' onmouseover="Expertise.highlightButton(\'' + Name + '\');"';
  HTMLCode += ' onmouseout="Expertise.fadeButton(\'' + Name + '\');"';
  HTMLCode += ' onclick="' + Duty + '"';
  
  HTMLCode += ' class="Button">' + ((Name.length < 5) ? '&nbsp;&nbsp;&nbsp;' : '') + Name + ((Name.length < 5) ? '&nbsp;&nbsp;&nbsp;' : '') + '</td>\n';
  HTMLCode += '    <td  style="background:url(' + url + 'iButton_right.gif)" width="7" height="20" id="' + Name.replace(/\s/g, '') + '_right"><img src="shadow.gif" width="7" height="20"></td>\n';
  HTMLCode += '  </tr>\n';
  HTMLCode += '</table>\n';
  
  return HTMLCode;
  }
  
  
function Expertise_highlightButton(Name)
  {
  eval("document.all." + Name.replace(/\s/g, '') + "_left.style.background = 'url(" + url + "aButton_left.gif)';");
  eval("document.all." + Name.replace(/\s/g, '') + "_bg.style.background = 'url(" + url + "aButton_bg.gif)';");
  eval("document.all." + Name.replace(/\s/g, '') + "_right.style.background = 'url(" + url + "aButton_right.gif)';");
  eval("document.all." + Name.replace(/\s/g, '') + "_bg.style.color= '#0f2020'");
  }
  
  
function Expertise_fadeButton(Name)
  {
  eval("document.all." + Name.replace(/\s/g, '') + "_left.style.background = 'url(" + url + "iButton_left.gif)';");
  eval("document.all." + Name.replace(/\s/g, '') + "_bg.style.background = 'url(" + url + "iButton_bg.gif)';");
  eval("document.all." + Name.replace(/\s/g, '') + "_right.style.background = 'url(" + url + "iButton_right.gif)';");
  eval("document.all." + Name.replace(/\s/g, '') + "_bg.style.color= '#ffffff'");
  }

  
function Expertise_ShowActualSkillPage()
  {
  var i, j, tempRequirment;
  
  document.all.SkillTree.innerHTML = Expertise.getExpertiseTreeCode();

  for(i = 0; i < 5; i++)
    {
    for(j = 0; j < 7; j++)
      {
      eval("document.all.SkillPointsPic_" + j + "_" + i + ".src = 'shadow.gif';");
      if(this.actualSkillPage.Skills[j][i] != null)
        {
	      with(this.actualSkillPage.Skills[j][i])
          {
          tempRequirment = (Requirment != null) ? Requirment.maxRank - Requirment.actualRank : 0;

          if(this.usedSkillPointsActualPage >= (i * 4) && tempRequirment == 0)
            {
            eval("document.all.Skill_" + j + "_" + i + ".style.background = 'url(" + url + "aSkillBox.jpg)';");
            }
          else
            {
            eval("document.all.Skill_" + j + "_" + i + ".style.background = 'url(" + url + "iSkillBox.jpg)';");
            }
          }

        if(this.actualSkillPage.Skills[j][i].actualRank > 0)
          {
          eval("document.all.SkillPic_" + j + "_" + i + ".src = '" + url + this.actualSkillPage.Skills[j][i].ImageActive + "';");
          eval("document.all.SkillPointsPic_" + j + "_" + i + ".src = '" + url + "skillpoints" + this.actualSkillPage.Skills[j][i].actualRank + ".jpg';");
          }
        else
          {
          eval("document.all.SkillPic_" + j + "_" + i + ".src = '" + url + this.actualSkillPage.Skills[j][i].ImageInactiv + "';");
          }
        }
      else
        {
        eval("document.all.SkillPic_" + j + "_" + i + ".src = 'shadow.gif';");
        eval("document.all.Skill_" + j + "_" + i + ".style.background = 'url(shadow.gif)';");
        }
      eval("document.all.RequirmentPic_" + j + "_" + i + "_Top.src = 'shadow.gif';");
      eval("document.all.RequirmentPic_" + j + "_" + i + "_Left.src = 'shadow.gif';");
      eval("document.all.RequirmentPic_" + j + "_" + i + "_Right.src = 'shadow.gif';");
      eval("document.all.RequirmentPic_" + j + "_" + i + "_Bottom.src = 'shadow.gif';");
      }
    }

  this.ShowRequirmentLines();
  }


function Expertise_ShowRequirmentLines()
  {
  var i, j, IndexRequirment;

  for(i = 0; i < 5; i++)
    {
    for(j = 0; j < 7; j++)
      {
      if(this.actualSkillPage.Skills[j][i] != null)
        {
        if(this.actualSkillPage.Skills[j][i].Requirment != null)
          {
          IndexRequirment = Expertise_FindRequirmentSkill(j, i, this.actualSkillPage);
          Expertise_ShowRequirmentLine(j, i, IndexRequirment, this.actualSkillPage);
          }
        }
      }
    }
  }


function Expertise_FindRequirmentSkill(Column, Row, SkillPage)
  {
  var k = 0;
  var l = 0;
  var Title = SkillPage.Skills[Column][Row].Requirment.Title;
  
  while(((SkillPage.Skills[k][l] != null) ? SkillPage.Skills[k][l].Title != Title : 1) && l < 5)
    {
    k++;
    if(k > 6)
      {
      k = 0;
      l++;
      }
    }
    
  return new Index(k, l);
  }


function Expertise_checkActualSkills()
  {
  var i, j, tempRequirment;
  var Result = true;
  var usedSkillPoints = 0

  for(i = 0; i < 5; i++)
    {
    for(j = 0; j < 7; j++) 
      {
      if(this.actualSkillPage.Skills[j][i] != null)
        {
        with(this.actualSkillPage.Skills[j][i])
          {
          tempRequirment = (Requirment != null) ? Requirment.maxRank - Requirment.actualRank : 0;
          if(actualRank > 0 && (usedSkillPoints < (i * 4) || tempRequirment != 0) || actualRank > maxRank)
            {
            Result = false;
            }
          usedSkillPoints += actualRank;
          }
        }
      }
    }

  if(usedSkillPoints > this.maxSkillPoints || usedSkillPoints != this.usedSkillPointsActualPage) Result = false;

  return Result;
  }


function Expertise_ShowRequirmentLine(Column, Row, IndexRequirment, SkillPage)
  {
  var i;

  if(Column == IndexRequirment.Column)
    {
    eval("document.all.RequirmentPic_" + Column + "_" + Row + "_Top.src = '" + url + "LineArrowTop.gif';");
    eval("document.all.RequirmentPic_" + Column + "_" + IndexRequirment.Row + "_Bottom.src = '" + url + "LineStart.gif';");
    if((Row - 1) != IndexRequirment.Row)
      {
      for(i = IndexRequirment.Row + 1; i < Row; i++) eval("document.all.Skill_" + Column + "_" + i + ".style.background = 'url(" + url + "LineVertical.gif)';");
      }
    }

  if(Row == IndexRequirment.Row && Column > IndexRequirment.Column)
    {
    eval("document.all.RequirmentPic_" + Column + "_" + Row + "_Left.src = '" + url + "LineArrowLeft.gif';");
    eval("document.all.RequirmentPic_" + IndexRequirment.Column + "_" + Row + "_Right.src = '" + url + "LineStartRight.gif';");
    if((Column - 1) != IndexRequirment.Column)
      {
      for(i = IndexRequirment.Column + 1; i < Column; i++) eval("document.all.Skill_" + i + "_" + Row + ".style.background = 'url(" + url + "LineHorizontal.gif)';");
      }
    }

  if(Row == IndexRequirment.Row && Column < IndexRequirment.Column)
    {
    eval("document.all.RequirmentPic_" + IndexRequirment.Column + "_" + Row + "_Left.src = '" + url + "LineStartLeft.gif';");
    eval("document.all.RequirmentPic_" + Column + "_" + Row + "_Right.src = '" + url + "LineArrowRight.gif';");
    if((Column + 1) != IndexRequirment.Column)
      {
      for(i = IndexRequirment.Column - 1; i > Column; i--) eval("document.all.Skill_" + i + "_" + Row + ".style.background = 'url(" + url + "LineHorizontal.gif)';");
      }
    }

  if(Row > IndexRequirment.Row && Column > IndexRequirment.Column)
    {
    eval("document.all.RequirmentPic_" + Column + "_" + Row + "_Top.src = '" + url + "LineArrowTop.gif';");
    eval("document.all.RequirmentPic_" + IndexRequirment.Column + "_" + IndexRequirment.Row + "_Right.src = '" + url + "LineStartRight.gif';");
    eval("document.all.Skill_" + Column + "_" + IndexRequirment.Row + ".style.background = 'url(" + url + "LineCornerRight.gif)';");
    if((Row - 1) != IndexRequirment.Row)
      {
      for(i = IndexRequirment.Row + 1; i < Row; i++) eval("document.all.Skill_" + Column + "_" + i + ".style.background = 'url(" + url + "LineVertical.gif)';");
      }
    }

  if(Row > IndexRequirment.Row && Column < IndexRequirment.Column)
    {
    eval("document.all.RequirmentPic_" + Column + "_" + Row + "_Top.src = '" + url + "LineArrowTop.gif';");
    eval("document.all.RequirmentPic_" + IndexRequirment.Column + "_" + IndexRequirment.Row + "_Left.src = '" + url + "LineStartLeft.gif';");
    eval("document.all.Skill_" + Column + "_" + IndexRequirment.Row + ".style.background = 'url(" + url + "LineCornerLeft.gif)';");
    if((Row - 1) != IndexRequirment.Row)
      {
      for(i = IndexRequirment.Row + 1; i < Row; i++) eval("document.all.Skill_" + Column + "_" + i + ".style.background = 'url(" + url + "LineVertical.gif)';");
      }
    }
  }


function Expertise_getSkillPointHTML(Row, Column)
  {
  var HTMLCode = "";

  HTMLCode += '<table width="87" height="87" cellspacing="0" cellpadding="0" border="0" style="background:url(shadow.gif)" id="Skill_' + Column + '_' + Row + '">\n';
  HTMLCode += '    <tr>\n';
  HTMLCode += '      <td><img src="shadow.gif" width="24" height="24"></td>\n';
  HTMLCode += '      <td><img src="shadow.gif" width="39" height="24" id="RequirmentPic_' + Column + '_' + Row + '_Top"></td>\n';
  HTMLCode += '      <td><img src="shadow.gif" width="24" height="24"></td>\n';
  HTMLCode += '    </tr>\n';
  HTMLCode += '    <tr>\n';
  HTMLCode += '      <td><img src="shadow.gif" width="24" height="39" id="RequirmentPic_' + Column + '_' + Row + '_Left"></td>\n';
  HTMLCode += '      <td><img src="shadow.gif" width="39" height="39"\n';

  HTMLCode += '               onmouseover="Expertise.highlightSkill(' + Column + ', ' + Row + ');"\n';
  HTMLCode += '               onmouseout="Expertise.fadeSkill(' + Column + ', ' + Row + ');"\n';
  HTMLCode += '               onclick="Expertise.teachSkill(' + Column + ', ' + Row + ');"\n';
  HTMLCode += '               id="SkillPic_' + Column + '_' + Row + '"\n';

  HTMLCode += '          ></td>\n';
  HTMLCode += '      <td><img src="shadow.gif" width="24" height="39" id="RequirmentPic_' + Column + '_' + Row + '_Right"></td>\n';
  HTMLCode += '    </tr>\n';
  HTMLCode += '    <tr>\n';
  HTMLCode += '      <td><img src="shadow.gif" width="24" height="24"></td>\n';
  HTMLCode += '      <td><img src="shadow.gif" width="39" height="24" id="RequirmentPic_' + Column + '_' + Row + '_Bottom"></td>\n';
  HTMLCode += '      <td><img src="shadow.gif" width="24" height="24" id="SkillPointsPic_' + Column + '_' + Row + '"></td>\n';
  HTMLCode += '    </tr>\n';
  HTMLCode += '  </table>\n';

  return HTMLCode;
  }


function Expertise_getDescriptionHTML(Row, Column)
  {
  var i, j;
  var HTMLCode = "";
  var Skill = this.actualSkillPage.Skills[Column][Row]

  HTMLCode += '<table cellspacing="0" cellpadding="6" border="0" width="100%">\n';
  HTMLCode += '  <tr>\n';
  HTMLCode += '    <td width="51" height="51" background="' + url + 'SkillBox.jpg"><img src="' + url + this.actualSkillPage.Skills[Column][Row].ImageActive + '" width="39" height="39"></td>\n';
  HTMLCode += '    <td width="100%" class="DescriptionTitle">' + Skill.Title + '</td>\n';
  HTMLCode += '  </tr>\n';
  HTMLCode += '</table>\n';

  HTMLCode += '<p class="DescriptionText">' + Skill.Description + '</p>\n';
  HTMLCode += '<br>\n';
  HTMLCode += '<br>\n';

  HTMLCode += '<table cellspacing="0" cellpadding="5" border="0" width="100%">\n';
  HTMLCode += '  <tr>\n';
  HTMLCode += '    <td valign="top">Requires:</td>\n';
  HTMLCode += '    <td width="100%" valign="top">\n';

  if(Row > 0)
    {
    HTMLCode += '      ' + ((Row * 4 > this.usedSkillPointsActualPage) ? '<font color="red">' : '') + Row * 4 + ' Points In ' + this.actualSkillPage.Name + ((Row * 4 > this.usedSkillPointsActualPage) ? '</font>' : '') +  '<br>\n';
    }

  if(Skill.Requirment != null)
    {
    HTMLCode += '      ' + ((Skill.Requirment.actualRank < Skill.Requirment.maxRank) ? '<font color="red">' : '') + Skill.Requirment.maxRank + ' Point' + ((Skill.Requirment.maxRank > 1) ? 's' : '') + ' In ' + Skill.Requirment.Title + ((Skill.Requirment.actualRank < Skill.Requirment.maxRank) ? '</font>' : '') + '\n';
    }
  else if(Row == 0)
    {
    HTMLCode += '      None\n';
    }

  HTMLCode += '    </td>\n';
  HTMLCode += '  </tr>\n';
  HTMLCode += '</table>\n';

  HTMLCode += '<br>\n';
  HTMLCode += '<br>\n';
  HTMLCode += '<p class="DescriptionRank">Rank: ' + Skill.actualRank + '/' + Skill.maxRank + '</p>\n';
  HTMLCode += '<br>\n';

  if(Skill.Modifiers.length > 0)
    {
    HTMLCode += '<p>Grands ' + ((Skill.Modifiers[0].Value == null) ? 'Command' : 'Modifiers') + ':<br><br></p>\n';

    for(i = 0; i < Skill.Modifiers.length; i++)
      {
      if(Skill.Modifiers[i].Value != null)
        {
        HTMLCode += '<p class="DescriptionModifierTitle">' + Skill.Modifiers[i].Title + '</p>\n';
        HTMLCode += '<p class="DescriptionModifierText">' + Skill.Modifiers[i].Description + '</p>\n';
        HTMLCode += '<div align="center" width="100%">\n';
        HTMLCode += '<table cellspacing="1" cellpadding="0" border="0" width="208" height="30" bgcolor="#91c471">\n';
        HTMLCode += '  <tr>\n';
        for(j = 0; j < 4; j++)
          {
          HTMLCode += '    <td width="52" heigth="30" class="' + ((Skill.actualRank > j) ? 'DescriptionModifierTableActive' : 'DescriptionModifierTableInactive') + '">' + ((Skill.maxRank > j) ? (Skill.Modifiers[i].Value[j]) : '--') + '</td>\n';
          }
        HTMLCode += '  </tr>\n';
        HTMLCode += '</table></div>\n';
        }
      else
        {
        HTMLCode += '<p class="DescriptionModifierTitle"><table cellspacing="0" cellpadding="6" border="0" width="100%">\n';
        HTMLCode += '  <tr>\n';
        HTMLCode += '    <td width="51" height="51" background="' + url + 'SkillBox.jpg"><img src="' + url + this.actualSkillPage.Skills[Column][Row].ImageActive + '" width="39" height="39"></td>\n';
        HTMLCode += '    <td width="100%" class="DescriptionModifierTitle">' + Skill.Modifiers[i].Title + '</td>\n';
        HTMLCode += '  </tr>\n';
        HTMLCode += '</table></p>\n';
        HTMLCode += '<p class="DescriptionModifierText">' + Skill.Modifiers[i].Description + '</p>\n';
        }
      }
    }

  return HTMLCode;
  }


function Expertise_getRegisterHTML(activeTab)
  {
  var i;
  var HTMLCode = "";

  HTMLCode += '<table cellspacing="0" cellpadding="0" border="0">\n';
  HTMLCode += '  <tr>\n';

  for(i = 0; i < 3; i++)
    {
    if(i == activeTab)
      {
      HTMLCode += '    <td background="' + url + 'register_active_left.gif" width="12" height="25"><img src="shadow.gif" width="12" height="25"></td>\n';
      HTMLCode += '    <td background="' + url + 'register_active_bg.gif" height="25" class="Register" onClick="Expertise.ShowSkillPage(' + i + ');">' + this.SkillPage[i].Name + '</td>\n';
      HTMLCode += '    <td background="' + url + 'register_active_right.gif" width="12" height="25"><img src="shadow.gif" width="12" height="25"></td>\n';
      }
    else
      {
      HTMLCode += '    <td background="' + url + 'register_inactiv_left.gif" width="12" height="25"><img src="shadow.gif" width="12" height="25" id="' + this.SkillPage[i].Name.replace(/\s/g, '') + '_left"></td>\n';
      
      HTMLCode += '    <td background="' + url + 'register_inactiv_bg.gif" height="25" id="' + this.SkillPage[i].Name.replace(/\s/g, '') + '_bg" class="Register"';
      HTMLCode += ' onmouseover="Expertise.highlightRegister(\'' + this.SkillPage[i].Name + '\');"';
      HTMLCode += ' onmouseout="Expertise.fadeRegister(\'' + this.SkillPage[i].Name + '\');"';
      HTMLCode += ' onClick="Expertise.ShowSkillPage(' + i + ');">' + this.SkillPage[i].Name + '</td>\n';
      
      HTMLCode += '    <td background="' + url + 'register_inactiv_right.gif" width="12" height="25"><img src="shadow.gif" width="12" height="25" id="' + this.SkillPage[i].Name.replace(/\s/g, '') + '_right"></td>\n';
      }
    }
/* 
  HTMLCode += '    <td width="25" height="25"><img src="shadow.gif" width="25" height="25"></td>\n';
  
  if(2 == activeTab)
    {
    HTMLCode += '    <td background="' + url + 'register_active_left.gif" width="12" height="25"><img src="shadow.gif" width="12" height="25"></td>\n';
    HTMLCode += '    <td background="' + url + 'register_active_bg.gif" height="25" class="Register" onClick="Expertise.loadSavedSummary();">Summary</td>\n';
    HTMLCode += '    <td background="' + url + 'register_active_right.gif" width="12" height="25"><img src="shadow.gif" width="12" height="25"></td>\n';
    }
  else
    {
    HTMLCode += '    <td background="' + url + 'register_inactiv_left.gif" width="12" height="25"><img src="shadow.gif" width="12" height="25"></td>\n';
    HTMLCode += '    <td background="' + url + 'register_inactiv_bg.gif" height="25" class="Register" onClick="Expertise.loadSavedSummary();">Summary</td>\n';
    HTMLCode += '    <td background="' + url + 'register_inactiv_right.gif" width="12" height="25"><img src="shadow.gif" width="12" height="25"></td>\n';
    }
 */
  HTMLCode += '  </tr>\n';
  HTMLCode += '</table>\n';

  return HTMLCode;
  }


function Expertise_highlightRegister(Name)
  {
  eval("document.all." + Name.replace(/\s/g, '') + "_left.style.background = 'url(" + url + "register_highlight_left.gif)';");
  eval("document.all." + Name.replace(/\s/g, '') + "_bg.style.background = 'url(" + url + "register_highlight_bg.gif)';");
  eval("document.all." + Name.replace(/\s/g, '') + "_right.style.background = 'url(" + url + "register_highlight_right.gif)';");
  eval("document.all." + Name.replace(/\s/g, '') + "_bg.style.color= '#0f2020'");
  }


function Expertise_fadeRegister(Name)
  {
  eval("document.all." + Name.replace(/\s/g, '') + "_left.style.background = 'url(" + url + "register_inactiv_left.gif)';");
  eval("document.all." + Name.replace(/\s/g, '') + "_bg.style.background = 'url(" + url + "register_inactiv_bg.gif)';");
  eval("document.all." + Name.replace(/\s/g, '') + "_right.style.background = 'url(" + url + "register_inactiv_right.gif)';");
  eval("document.all." + Name.replace(/\s/g, '') + "_bg.style.color= '#ffffff'");
  }


function Expertise_getAvailebelSkillpointsHTML()
  {
  var HTMLCode = "";

  HTMLCode += '<table cellspacing="0" cellpadding="0" border="0" background-color="#0f2020" height="38">\n';

  HTMLCode += '  <tr>\n';
  HTMLCode += '    <td height="19" class="AvailablePoints" align="right">Required Level&nbsp;&nbsp;</td>\n';
  HTMLCode += '    <td background="' + url + 'skillpoints_left.jpg" width="9" height="19"><img src="shadow.gif" width="9" height="19"></td>\n';
  HTMLCode += '    <td background="' + url + 'skillpoints_bg.jpg" width="30" height="19" valign="center"><center class="AvailablePoints"><nobr>\n';

  HTMLCode += ((this.usedSkillPoints < 5) ? '10' : (this.usedSkillPoints * 2)) + '\n';

  HTMLCode += '    </nobr></center></td>\n';
  HTMLCode += '    <td background="' + url + 'skillpoints_right.jpg" width="9" height="19"><img src="shadow.gif" width="9" height="19"></td>\n';
  HTMLCode += '  </tr>\n';

  HTMLCode += '  <tr>\n';
  HTMLCode += '    <td height="19" class="AvailablePoints" align="right">Available Points&nbsp;&nbsp;</td>\n';
  HTMLCode += '    <td background="' + url + 'skillpoints_left.jpg" width="9" height="19"><img src="shadow.gif" width="9" height="19"></td>\n';
  HTMLCode += '    <td background="' + url + 'skillpoints_bg.jpg" width="30" height="19" valign="center"><center class="AvailablePoints"><nobr>\n';

  HTMLCode += ((this.usedSkillPoints >= 45) ? '<font color="red">0</font>' : this.maxSkillPoints - this.usedSkillPoints) + '/45\n';

  HTMLCode += '    </nobr></center></td>\n';
  HTMLCode += '    <td background="' + url + 'skillpoints_right.jpg" width="9" height="19"><img src="shadow.gif" width="9" height="19"></td>\n';
  HTMLCode += '  </tr>\n';

  HTMLCode += '</table>\n';

  return HTMLCode;
  }
  

function Expertise_getControlHTML()
  {
  var HTMLCode = "";
/*   
  HTMLCode += '<input type="radio" name="MouseFunction" value="add" checked> add Points\n';
  HTMLCode += '<input type="radio" name="MouseFunction" value="remove"> remove Points\n';
  
  HTMLCode += '<br><br>\n';
 */
  HTMLCode += '<center><table cellspacing="0" cellpadding="5" border="0" background-color="#0f2020">\n';

  HTMLCode += '  <tr>\n';
  HTMLCode += '    <td>\n';
  HTMLCode += Expertise.getCheckBoxHTML("add Points", "Expertise.selectCheckBox('add Points', 'remove Points');");
  HTMLCode += '    </td>\n';
  HTMLCode += '    <td>\n';
  HTMLCode += Expertise.getCheckBoxHTML("remove Points", "Expertise.selectCheckBox('remove Points', 'add Points');");
  HTMLCode += '    </td>\n';
  HTMLCode += '  </tr>\n';

  HTMLCode += '</table></center>\n';
  HTMLCode += '<center><table cellspacing="0" cellpadding="2" border="0" background-color="#0f2020">\n';

  HTMLCode += '  <tr>\n';
  HTMLCode += '    <td>\n';
  HTMLCode += Expertise.getButtonHTML("Save and show code", "Expertise.saveExpertise();");
  HTMLCode += '    </td>\n';
  HTMLCode += '    <td>\n';
  HTMLCode += Expertise.getButtonHTML("Clear All", "Expertise.clearExpertise();");
  HTMLCode += '    </td>\n';
  HTMLCode += '  </tr>\n';

  HTMLCode += '</table></center>\n';
  
  return HTMLCode;
  }


function Expertise_highlightSkill(Column, Row)
  {
  var tempRequirment;

  if(Expertise.actual.actualSkillPage.Skills[Column][Row] != null)
    {
    with(Expertise.actual.actualSkillPage.Skills[Column][Row])
      {
      tempRequirment = (Requirment != null) ? Requirment.maxRank - Requirment.actualRank : 0;
      }

    if(Expertise.actual.usedSkillPointsActualPage >= (Row * 4) && tempRequirment == 0)
      {
      eval("document.all.Skill_" + Column + "_" + Row + ".style.background = 'url(" + url + "aSkillBoxGreen.jpg)';");
      }
    else
      {
      eval("document.all.Skill_" + Column + "_" + Row + ".style.background = 'url(" + url + "iSkillBoxRed.jpg)';");
      }
    document.all.Description.innerHTML = Expertise.actual.getDescriptionHTML(Row, Column);
    }
  }


function Expertise_fadeSkill(Column, Row)
  {
  var tempRequirment;

  if(Expertise.actual.actualSkillPage.Skills[Column][Row] != null)
    {
    with(Expertise.actual.actualSkillPage.Skills[Column][Row])
      {
      tempRequirment = (Requirment != null) ? Requirment.maxRank - Requirment.actualRank : 0;
      }

    if(Expertise.actual.usedSkillPointsActualPage >= (Row * 4) && tempRequirment == 0)
      {
      eval("document.all.Skill_" + Column + "_" + Row + ".style.background = 'url(" + url + "aSkillBox.jpg)';");
      }
    else
      {
      eval("document.all.Skill_" + Column + "_" + Row + ".style.background = 'url(" + url + "iSkillBox.jpg)';");
      }
    }
  }


function Expertise_teachSkill(Column, Row)
  {
  var tempRequirment;

  if(Expertise.actual.actualSkillPage.Skills[Column][Row] != null)
    {
    if(Expertise.actual.SkillOption == "add Points")
      {
      with(Expertise.actual.actualSkillPage.Skills[Column][Row])
        {
        tempRequirment = (Requirment != null) ? Requirment.maxRank - Requirment.actualRank : 0;

        if(Expertise.actual.usedSkillPointsActualPage >= (Row * 4) && tempRequirment == 0 && actualRank < maxRank && Expertise.actual.usedSkillPoints < Expertise.actual.maxSkillPoints)
          {
          Expertise.actual.usedSkillPointsActualPage++;
          Expertise.actual.usedSkillPoints++;
          actualRank++;
          }
        }
      }
    else
      {
      if(Expertise.actual.actualSkillPage.Skills[Column][Row].actualRank > 0)
        {
        Expertise.actual.actualSkillPage.Skills[Column][Row].actualRank--;
        Expertise.actual.usedSkillPointsActualPage--;
        Expertise.actual.usedSkillPoints--;
        if(!Expertise.actual.checkActualSkills())
          {
          Expertise.actual.actualSkillPage.Skills[Column][Row].actualRank++;
          Expertise.actual.usedSkillPointsActualPage++;
          Expertise.actual.usedSkillPoints++;
          }
        }
      }
    Expertise.actual.ShowActualSkillPage();
    Expertise.highlightSkill(Column, Row);
    document.all.SkillPoints.innerHTML = Expertise.actual.getAvailebelSkillpointsHTML();
    }
  }


function Expertise_ShowSkillPage(Number)
  {
  if(Expertise.actual.SkillPage[0].Name == Expertise.actual.actualSkillPage.Name)
    {
    Expertise.actual.usedSkillPointsPages[0] = Expertise.actual.usedSkillPointsActualPage;
    }
  else if(Expertise.actual.SkillPage[1].Name == Expertise.actual.actualSkillPage.Name)
    {
    Expertise.actual.usedSkillPointsPages[1] = Expertise.actual.usedSkillPointsActualPage;
    }
  else
    {
    Expertise.actual.usedSkillPointsPages[2] = Expertise.actual.usedSkillPointsActualPage;
    }

  Expertise.actual.usedSkillPointsActualPage = Expertise.actual.usedSkillPointsPages[Number];
  Expertise.actual.actualSkillPage = Expertise.actual.SkillPage[Number];
  if(Expertise.actual.actualSkillPage.Name != "dummy")
    {
    document.all.Register.innerHTML = Expertise.actual.getRegisterHTML(Number);
    document.all.SkillPoints.innerHTML = Expertise.actual.getAvailebelSkillpointsHTML();
    document.all.Control.innerHTML = Expertise.getControlHTML();
    
    if(Expertise.actual.SkillOption == "add Points") Expertise.selectCheckBox('add Points', 'remove Points');
      else Expertise.selectCheckBox('remove Points', 'add Points');
    }
  else
    {
    document.all.Register.innerHTML = "";
    document.all.SkillPoints.innerHTML = "";
    document.all.Control.innerHTML = "";
    }
  Expertise.actual.ShowActualSkillPage();
  }


function Expertise_getExpertiseCode()
  {
  var i, j, k;
  var HexString = "";
  var PenteString = "";
  var Rank;

  for(k = 0; k < 3; k++)
    {
    Rank = 0;
    for(i = 0; i < 5; i++)
      {
      for(j = 0; j < 7; j++)
        {
        if(this.SkillPage[k].Skills[j][i] != null)
          {
          PenteString += Int2Hex(this.SkillPage[k].Skills[j][i].actualRank);
          }
        }
      }
    HexString += Pente2Hex(PenteString) + "-";

    PenteString = "";
    }

  switch(this.SkillPage[0].Name)
    {
    case "Spy":
      HexString += "1";
      break;
    case "Drama":
      HexString += "2";
      break;
    case "Munition Trader":
      HexString += "3";
      break;
    case "Domestic Trader":
      HexString += "4";
      break;
    case "Engineer Trader":
      HexString += "5";
      break;
    case "Structure Trader":
      HexString += "6";
      break;
    case "Scoundrel":
      HexString += "7";
      break;
    case "Field Survival":
      HexString += "8";
      break;
    case "Commando":
      HexString += "9";
      break;
    case "Officer Specialization":
      HexString += "10";
      break;
    case "Bounty Specialization":
      HexString += "11";
      break;
    case "Jedi General":
      HexString += "12";
      break;
    default:
      HexString += "0";
      break;
    }

  return HexString;
  }

function Expertise_loadSavedExpertise()
  {
  if(location.search.match(/e=[a-fA-F0-9]+-[a-fA-F0-9]+-[a-fA-F0-9]+-\d+/) != null)
    {
    this.loadSavedExpertiseBM();
    }
  else this.loadSavedExpertiseOld();
  }

function Expertise_loadSavedExpertise_Old()
  {
  var i, j, k, l;
  var PenteString;
  var savedTemplate;
  var usedSkillPoints;
  var ExpertiseString;

  if(location.search.match(/e=[a-fA-F0-9]+-[a-fA-F0-9]+-\d+/) != null)
    {
    ExpertiseString = location.search.match(/e=[a-fA-F0-9]+-[a-fA-F0-9]+-\d+/).toString().match(/[a-fA-F0-9]+-[a-fA-F0-9]+-\d+/).toString()
    }
  else return;

  savedTemplate = ExpertiseString.split("-");

  for(i = 0; i < document.Functions.selectedProfession.options.length; i++)
    {
    if(document.Functions.selectedProfession.options[i].value == savedTemplate[2]) document.Functions.selectedProfession.options[i].selected = true;
    }
  Expertise.loadSelectedProfession();

  this.usedSkillPoints = 0;
  for(l = 1; l >= 0; l--)
    {
    usedSkillPoints = 0;
    this.actualSkillPage = this.SkillPage[l];

    PenteString = Hex2Pente(savedTemplate[l]);

    k = PenteString.length - 1;
    for(i = 4; i >= 0 && k >= 0; i--)
      {
      for(j = 6; j >= 0 && k >= 0; j--)
        {
        if(this.actualSkillPage.Skills[j][i] != null)
          {
          this.actualSkillPage.Skills[j][i].actualRank = Hex2Int(PenteString.substr(k, 1));
          usedSkillPoints += Hex2Int(PenteString.substr(k, 1));
          k--;
          }
        }
      }

    this.usedSkillPoints += usedSkillPoints;
    this.usedSkillPointsPages[l] = usedSkillPoints;
    this.usedSkillPointsActualPage = usedSkillPoints;
    }

  for(l = 0; l < 2; l++)
    {
    this.actualSkillPage = this.SkillPage[l];
    this.usedSkillPointsActualPage = this.usedSkillPointsPages[l];

    if(!this.checkActualSkills())
      {
      for(k = 0; k < 2; k++)
        {
        this.actualSkillPage = this.SkillPage[k];
        for(i = 0; i < 5; i++)
          {
          for(j = 0; j < 7; j++)
            {
            if(this.actualSkillPage.Skills[j][i] != null)
              {
              this.actualSkillPage.Skills[j][i].actualRank = 0;
              }
            }
          }
        this.usedSkillPoints = 0;
        this.usedSkillPointsPages[k] = 0;
        }
      this.usedSkillPointsActualPage = 0;
      // alert("Error while loading saved template.");
      Expertise.showDialog("Error", "Error while loading saved template. Your templatecode is incorrect.", OkDialogButtons(""));
      }
    }

  Expertise.ShowSkillPage(0);
  }
  
function Expertise_loadSavedExpertise_BM()
  {
  var i, j, k, l;
  var PenteString;
  var savedTemplate;
  var usedSkillPoints;
  var ExpertiseString;

  if(location.search.match(/e=[a-fA-F0-9]+-[a-fA-F0-9]+-[a-fA-F0-9]+-\d+/) != null)
    {
    ExpertiseString = location.search.match(/e=[a-fA-F0-9]+-[a-fA-F0-9]+-[a-fA-F0-9]+-\d+/).toString().match(/[a-fA-F0-9]+-[a-fA-F0-9]+-[a-fA-F0-9]+-\d+/).toString()
    }
  else return;

  savedTemplate = ExpertiseString.split("-");

  for(i = 0; i < document.Functions.selectedProfession.options.length; i++)
    {
    if(document.Functions.selectedProfession.options[i].value == savedTemplate[3]) document.Functions.selectedProfession.options[i].selected = true;
    }
  Expertise.loadSelectedProfession();
  
  this.usedSkillPoints = 0;
  for(l = 2; l >= 0; l--)
    {
    usedSkillPoints = 0;
    this.actualSkillPage = this.SkillPage[l];

    PenteString = Hex2Pente(savedTemplate[l]);

    k = PenteString.length - 1;
    for(i = 4; i >= 0 && k >= 0; i--)
      {
      for(j = 6; j >= 0 && k >= 0; j--)
        {
        if(this.actualSkillPage.Skills[j][i] != null)
          {
          this.actualSkillPage.Skills[j][i].actualRank = Hex2Int(PenteString.substr(k, 1));
          usedSkillPoints += Hex2Int(PenteString.substr(k, 1));
          k--;
          }
        }
      }

    this.usedSkillPoints += usedSkillPoints;
    this.usedSkillPointsPages[l] = usedSkillPoints;
    this.usedSkillPointsActualPage = usedSkillPoints;
    }

  for(l = 0; l < 3; l++)
    {
    this.actualSkillPage = this.SkillPage[l];
    this.usedSkillPointsActualPage = this.usedSkillPointsPages[l];

    if(!this.checkActualSkills())
      {
      for(k = 0; k < 2; k++)
        {
        this.actualSkillPage = this.SkillPage[k];
        for(i = 0; i < 5; i++)
          {
          for(j = 0; j < 7; j++)
            {
            if(this.actualSkillPage.Skills[j][i] != null)
              {
              this.actualSkillPage.Skills[j][i].actualRank = 0;
              }
            }
          }
        this.usedSkillPoints = 0;
        this.usedSkillPointsPages[k] = 0;
        }
      this.usedSkillPointsActualPage = 0;
      // alert("Error while loading saved template.");
      Expertise.showDialog("Error", "Error while loading saved template. Your templatecode is incorrect.", OkDialogButtons(""));
      }
    }

  Expertise.ShowSkillPage(0);
  }


function Expertise_getExpertiseLinkCode()
  {
  var Code = this.getExpertiseCode();
  var HTMLCode = "";

  HTMLCode += "Use the following code to share your template with your friends:<br><br>\n";
  HTMLCode += "<table cellpadding=\"10\">\n";
  HTMLCode += "  <tr><td valign=\"top\" align=\"center\" colspan=\"2\">http://www.oekevo.org/expertisecalculator/index.html?e=" + Code + "</td></tr>\n";
  HTMLCode += "  <tr><td valign=\"top\" align=\"right\">BBCode (link only):</td><td>\n";
  HTMLCode += "    <textarea cols=\"30\" rows=\"2\">";
  HTMLCode += "[url=http://www.oekevo.org/expertisecalculator/index.html?e=" + Code + "]http://www.oekevo.org/expertisecalculator/index.html?e=" + Code + "[/url]";
  HTMLCode += "    </textarea></td></tr>\n";
  HTMLCode += "  <tr><td valign=\"top\" align=\"center\" colspan=\"2\"><img src=\"http://www.oekevo.org/expertisecalculator/Banner.php?e=" + Code + "\"></td></tr>\n";
  HTMLCode += "  <tr><td valign=\"top\" align=\"right\">BBCode (link with pic):</td><td>\n";
  HTMLCode += "    <textarea cols=\"30\" rows=\"2\">";
  HTMLCode += "[url=http://www.oekevo.org/expertisecalculator/index.html?e=" + Code + "][img]http://www.oekevo.org/expertisecalculator/Banner.php?e=" + Code + "[/img][/url]";
  HTMLCode += "    </textarea></td></tr>\n";
  HTMLCode += "  <tr><td valign=\"top\" align=\"right\">BBCode (pic only, for old BBCode versions):</td><td>\n";
  HTMLCode += "    <textarea cols=\"30\" rows=\"2\">";
  HTMLCode += "[img]http://www.oekevo.org/expertisecalculator/Banner.php?e=" + Code + "[/img]";
  HTMLCode += "    </textarea></td></tr>\n";
  HTMLCode += "</table>\n";

  return HTMLCode;
  }


function Expertise_saveExpertise()
  {
  if(location.href.match(/\?/))
    {
    Expertise.showDialog("Copy Your Template Code", Expertise.actual.getExpertiseLinkCode(), OkDialogButtons("location.replace('" + location.href.replace(/\?\S.+/, '?e=' + Expertise.actual.getExpertiseCode()) + "')"));
    }
  else
    {
    Expertise.showDialog("Copy Your Template Code", Expertise.actual.getExpertiseLinkCode(), OkDialogButtons("location.replace('" + location.href + '?e=' + Expertise.actual.getExpertiseCode() + "')"));
    }
  }


function Expertise_clearExpertise()
  {
  var i, j, l;
  var actual = Expertise.actual.actualSkillPage;

  for(l = 0; l < 3; l++)
    {
    Expertise.actual.actualSkillPage = Expertise.actual.SkillPage[l];

    for(i = 0; i < 5; i++)
      {
      for(j = 0; j < 7; j++)
        {
        if(Expertise.actual.actualSkillPage.Skills[j][i] != null)
          {
          Expertise.actual.actualSkillPage.Skills[j][i].actualRank = 0;
          }
        }
      }
    Expertise.actual.usedSkillPointsPages[l] = 0;
    }

  Expertise.actual.usedSkillPoints = 0;
  Expertise.actual.usedSkillPointsActualPage = 0;
  Expertise.actual.actualSkillPage = actual;
  document.all.Description.innerHTML = "";
  Expertise.actual.ShowActualSkillPage();
  document.all.SkillPoints.innerHTML = Expertise.actual.getAvailebelSkillpointsHTML();
  }


function Expertise_loadSelectedProfession()
  {
  Expertise.clearExpertise();

  switch(parseInt(document.Functions.selectedProfession.value))
    {
    case 1:
      Expertise.actual.SkillPage[0] = new ProfessionSkillPage("Spy");
      Expertise.actual.SkillPage[1] = new ProfessionSkillPage("Covert Operative");
      Expertise.actual.SkillPage[2] = new ProfessionSkillPage("Beast Mastery");
      break;
    case 2:
      Expertise.actual.SkillPage[0] = new ProfessionSkillPage("Drama");
      Expertise.actual.SkillPage[1] = new ProfessionSkillPage("Artiste");
      Expertise.actual.SkillPage[2] = new ProfessionSkillPage("Beast Mastery");
      break;
    case 3:
      Expertise.actual.SkillPage[0] = new ProfessionSkillPage("Munition Trader");
      Expertise.actual.SkillPage[1] = new ProfessionSkillPage("General");
      Expertise.actual.SkillPage[2] = new ProfessionSkillPage("Beast Mastery");
      break;
    case 4:
      Expertise.actual.SkillPage[0] = new ProfessionSkillPage("Domestic Trader");
      Expertise.actual.SkillPage[1] = new ProfessionSkillPage("General");
      Expertise.actual.SkillPage[2] = new ProfessionSkillPage("Beast Mastery");
      break;
    case 5:
      Expertise.actual.SkillPage[0] = new ProfessionSkillPage("Engineer Trader");
      Expertise.actual.SkillPage[1] = new ProfessionSkillPage("General");
      Expertise.actual.SkillPage[2] = new ProfessionSkillPage("Beast Mastery");
      break;
    case 6:
      Expertise.actual.SkillPage[0] = new ProfessionSkillPage("Structure Trader");
      Expertise.actual.SkillPage[1] = new ProfessionSkillPage("General");
      Expertise.actual.SkillPage[2] = new ProfessionSkillPage("Beast Mastery");
      break;
    case 7:
      Expertise.actual.SkillPage[0] = new ProfessionSkillPage("Scoundrel");
      Expertise.actual.SkillPage[1] = new ProfessionSkillPage("Smuggler");
      Expertise.actual.SkillPage[2] = new ProfessionSkillPage("Beast Mastery");
      break;
    case 8:
      Expertise.actual.SkillPage[0] = new ProfessionSkillPage("Field Survival");
      Expertise.actual.SkillPage[1] = new ProfessionSkillPage("Medic Specialization");
      Expertise.actual.SkillPage[2] = new ProfessionSkillPage("Beast Mastery");
      break;
    case 9:
      Expertise.actual.SkillPage[0] = new ProfessionSkillPage("Commando");
      Expertise.actual.SkillPage[1] = new ProfessionSkillPage("Assault");
      Expertise.actual.SkillPage[2] = new ProfessionSkillPage("Beast Mastery");
      break;
    case 10:
      Expertise.actual.SkillPage[0] = new ProfessionSkillPage("Officer Specialization");
      Expertise.actual.SkillPage[1] = new ProfessionSkillPage("Squad Command");
      Expertise.actual.SkillPage[2] = new ProfessionSkillPage("Beast Mastery");
      break;
    case 11:
      Expertise.actual.SkillPage[0] = new ProfessionSkillPage("Bounty Specialization");
      Expertise.actual.SkillPage[1] = new ProfessionSkillPage("Bounty Hunting");
      Expertise.actual.SkillPage[2] = new ProfessionSkillPage("Beast Mastery");
      break;
    case 12:
      Expertise.actual.SkillPage[0] = new ProfessionSkillPage("Jedi General");
      Expertise.actual.SkillPage[1] = new ProfessionSkillPage("Path");
      Expertise.actual.SkillPage[2] = new ProfessionSkillPage("Beast Mastery");
      break;
    default:
      Expertise.actual.SkillPage[0] = new ProfessionSkillPage("dummy");
      Expertise.actual.SkillPage[1] = new ProfessionSkillPage("dummy");
      Expertise.actual.SkillPage[2] = new ProfessionSkillPage("dummy");
      document.all.Description.innerHTML = Expertise.actual.description;
      break;
    }

  Expertise.ShowSkillPage(0);
  }


function Expertise_getExpertiseTreeCode()
  {
  var i, j;
  var HTMLCode = "";

  HTMLCode += '<table border="0" cellspacing="0" cellpadding="0">';
  for(i = 0; i < 5; i++)
    {
    HTMLCode += '<tr>';
    for(j = 0; j < 7; j++)
      {
      HTMLCode += '<td>' + Expertise_getSkillPointHTML(i, j) + '</td>';
      }
    HTMLCode += '</tr>';
    }
  HTMLCode += '</table>\n';

  return HTMLCode;
  }


function Expertise()
  {
  this.maxSkillPoints = 45;
  this.usedSkillPoints = 0;

  this.usedSkillPointsPages = new Array(0, 0, 0);
  this.usedSkillPointsActualPage = 0;
  this.SkillOption = "add Points";

  this.ShowActualSkillPage = Expertise_ShowActualSkillPage;
  this.getDescriptionHTML = Expertise_getDescriptionHTML;
  this.ShowRequirmentLines = Expertise_ShowRequirmentLines;
  this.getRegisterHTML = Expertise_getRegisterHTML;
  this.getAvailebelSkillpointsHTML =  Expertise_getAvailebelSkillpointsHTML;
  this.checkActualSkills = Expertise_checkActualSkills;
  this.getExpertiseCode = Expertise_getExpertiseCode;
  this.loadSavedExpertise = Expertise_loadSavedExpertise;
  this.loadSavedExpertiseBM = Expertise_loadSavedExpertise_BM;
  this.loadSavedExpertiseOld = Expertise_loadSavedExpertise_Old;
  this.getExpertiseLinkCode = Expertise_getExpertiseLinkCode;

  this.description = document.all.Description.innerHTML;
  this.main = document.all.SkillTree.innerHTML;

  this.MassageBox = 0;
  
  this.getSummaryCode = Expertise_getSummaryCode;

  this.SkillPage = new Array(3);
  this.SkillPage[0] = new ProfessionSkillPage("dummy");
  this.SkillPage[1] = new ProfessionSkillPage("dummy");
  this.SkillPage[2] = new ProfessionSkillPage("dummy");
  this.actualSkillPage = this.SkillPage[0];

  Expertise.actual = this;
  }

Expertise.fadeSkill = Expertise_fadeSkill;
Expertise.highlightSkill = Expertise_highlightSkill;
Expertise.teachSkill = Expertise_teachSkill;
Expertise.ShowSkillPage = Expertise_ShowSkillPage;
Expertise.saveExpertise = Expertise_saveExpertise;
Expertise.clearExpertise = Expertise_clearExpertise;
Expertise.loadSelectedProfession = Expertise_loadSelectedProfession;
Expertise.getExpertiseTreeCode = Expertise_getExpertiseTreeCode;
Expertise.loadSavedSummary = Expertise_loadSavedSummary;

Expertise.getButtonHTML = Expertise_getButtonHTML;
Expertise.highlightButton = Expertise_highlightButton;
Expertise.fadeButton = Expertise_fadeButton;
Expertise.getControlHTML = Expertise_getControlHTML;
Expertise.getCheckBoxHTML = Expertise_getCheckBoxHTML;
Expertise.selectCheckBox = Expertise_selectCheckBox;
Expertise.highlightRegister = Expertise_highlightRegister;
Expertise.fadeRegister = Expertise_fadeRegister;


function Button(Text, Duty)
  {
  this.Text = Text;
  this.Duty = Duty;
  }

  
function OkDialogButtons(Duty)
  {
  var Buttons = new Array(2);
  Buttons[0] = new Button("Close", Duty);
  Buttons[1] = new Button("Ok", Duty);
  return Buttons;
  }
  

function Expertise_showDialog(Title, Text, Buttons)
  {
  var i;
  var HTMLCode = ""
  
  document.all.MassageBox_Text.innerHTML = Text;
  document.all.MassageBox_Title.innerHTML = Title;
  document.all.MassageBox_Close.href = 'javascript:Expertise.hideDialog("' + Buttons[0].Duty + '")';
  
  HTMLCode += '<center><table cellspacing="0" cellpadding="2" border="0" background-color="#0f2020">\n';
  HTMLCode += '  <tr>\n';
  for(i = 1; i < Buttons.length; i++)
    {
    HTMLCode += '    <td>\n';
    HTMLCode += Expertise.getButtonHTML(Buttons[i].Text, 'Expertise.hideDialog(&quot;' + Buttons[i].Duty + '&quot;);');
    HTMLCode += '    </td>\n';
    }
  HTMLCode += '  </tr>\n';
  HTMLCode += '</table></center>\n';
  
  document.all.MassagBox_Buttons.innerHTML = HTMLCode;
  
  Expertise_scrollDialog();
  document.all.MassageBox.style.visibility = "visible";
  }
Expertise.showDialog = Expertise_showDialog;


function Expertise_hideDialog(Duty)
  {
  document.all.MassageBox.style.visibility = "hidden";
  window.clearTimeout(Expertise.DialogTimeout);
  eval(Duty);
  }
Expertise.hideDialog = Expertise_hideDialog;


function Expertise_scrollDialog()
  {
  document.all.MassageBox.style.top = ((window.pageYOffset) ? window.pageYOffset : document.body.scrollTop) + "px";
  document.all.MassageBox.style.left = ((window.pageXOffset) ? window.pageXOffset : document.body.scrollLeft) + "px";
  Expertise.DialogTimeout = window.setTimeout("Expertise.scrollDialog()", 20);
  }
Expertise.scrollDialog = Expertise_scrollDialog;
