
// skill consts

SkillOverall = 1;
SkillAttack = 2;
SkillDefence = 3;
SkillStrength = 4;
SkillHitpoints = 5;
SkillRanged = 6;
SkillPrayer = 7;
SkillMagic = 8;
SkillCooking = 9;
SkillWoodcutting = 10;
SkillFletching = 11;
SkillFishing = 12;
SkillFiremaking = 13;
SkillCrafting = 14;
SkillSmithing = 15;
SkillMining = 16;
SkillHerblore = 17;
SkillAgility = 18;
SkillThieving = 19;
SkillSlayer = 20;
SkillFarming = 21;
SkillRunecrafting = 22;
SkillHunter = 23;
SkillConstruction = 24;
SkillSummoning = 25;

skillNames = [' ',
  'Overall',
  'Attack',
  'Defence',
  'Strength',
  'Hitpoints',
  'Ranged',
  'Prayer',
  'Magic',
  'Cooking',
  'Woodcutting',
  'Fletching',
  'Fishing',
  'Firemaking',
  'Crafting',
  'Smithing',
  'Mining',
  'Herblore',
  'Agility',
  'Thieving',
  'Slayer',
  'Farming',
  'Runecrafting',
  'Hunter',
  'Construction',
  'Summoning'];


function HighscoresReader() {

  var httpRequest = false;
  var skills = [];
  var onGetSkills = 0; // function onGetSkills(levelArray, xpArray)

  var MakeRequest = function(url) {

    httpRequest = false;

    if (window.XMLHttpRequest) { // Mozilla, Safari,...
      httpRequest = new XMLHttpRequest();
      if (httpRequest.overrideMimeType) {
        httpRequest.overrideMimeType('text/xml');
      }
    } else if (window.ActiveXObject) { // IE
      try {
        httpRequest = new ActiveXObject('Msxml2.XMLHTTP');
      } catch (e) {
        try {
        httpRequest = new ActiveXObject('Microsoft.XMLHTTP');
        } catch (e) {}
      }
    }

    if (!httpRequest) {
      alert('Cannot create an XMLHTTP instance');
      return false;
    }
    httpRequest.onreadystatechange = OnReadyStateChange;
    httpRequest.open('GET', url, true);
    httpRequest.send(null);
  }

  var OnReadyStateChange = function() {

    if (httpRequest.readyState == 4) {
      if (httpRequest.status == 200) {
        ParseXml(httpRequest.responseXML);
      } else {
        alert('There was a problem with the request.');
      }
    }
  }

  var ParseXml = function(xml) {

    var levelArray = [];
    var xpArray = [];

    for (var i = 0; i < skills.length; i++) {
      try {
        var skill = xml.getElementsByTagName(skillNames[skills[i]].toLowerCase()).item(0);
        levelArray[i] = skill.getElementsByTagName('level').item(0).firstChild.data;
        xpArray[i] = skill.getElementsByTagName('xp').item(0).firstChild.data;

      } catch (e) {
        if (i != SkillDefence)
          levelArray[i] = NaN;
        else levelArray[i] = NaN;
        xpArray[i] = NaN;
      }
    }
    onGetSkills(levelArray, xpArray);
  }

  this.Read = function(runescapeName, skillsArray, onGetSkillsFunction) {
    skills = skillsArray;
    onGetSkills = onGetSkillsFunction;

    MakeRequest('rune/runexml.php?' + 'username=' + runescapeName);
  }

}
