	function $(id) {
		return document.getElementById(id);
	}

	var r = Math.floor(Math.random()*1000000);
	var timer;
	var done = 0;
	var rName;
	var tab;
	var cInfo = new Array();
		cInfo['Death Knight'] = 'Blood|Frost|Unholy|Runic|runic|1';
		cInfo['Druid'] = 'Balance|Feral Combat|Restoration|Mana|mana|3';
		cInfo['Hunter'] = 'Beast Mastery|Marksmanship|Survival|Mana|mana|2';
		cInfo['Mage'] = 'Arcane|Fire|Frost|Mana|mana|3';
		cInfo['Paladin'] = 'Holy|Protection|Retribution|Mana|mana|3';
		cInfo['Priest'] = 'Discipline|Holy|Shadow|Mana|mana|3';
		cInfo['Rogue'] = 'Assassination|Combat|Subtlety|Energy|energy|1';
		cInfo['Shaman'] = 'Elemental|Enhancement|Restoration|Mana|mana|3';
		cInfo['Warlock'] = 'Affliction|Demonology|Destruction|Mana|mana|3';
		cInfo['Warrior'] = 'Arms|Fury|Protection|Rage|rage|1';
	var chInfo = new Array();
	var chClass;
	var chSpec = new Array();
	var chBar = new Array();
	var stName = new Array(
		new Array('Strength','Agility','Stamina','Intellect','Spirit','Armor'),
		new Array('DPS','Speed','Power','+Hit%','Crit%','Expertise'),
		new Array('DPS','Speed','Power','+Hit%','Crit%','-Armor%'),
		new Array('+Damage','+Healing','Hit Rating','Crit Rating','Haste%','Mana Regen'),
		new Array('Armor%','Defense','Dodge%','Parry%','Block%','Resilience'));
	var stVal = new Array(
		new Array('','','','','',''),
		new Array('','','','','',''),
		new Array('','','','','',''),
		new Array('','','','','',''),
		new Array('','','','','',''));
	
	function randomArmory() {
		function cb(data) {
			rName = data;
			getCharXML();
		}
		if(done == 0) {
			done = 1;
			timer = setTimeout('showError()',10000);
			getDataReturnText('includes/getRandomChar.php?r='+r, cb);
		}
	}
	function getCharXML() {
		function cb(dataXML) {
			function px(tag,n,att) {
				return dataXML.getElementsByTagName(tag)[n].attributes.getNamedItem(att).nodeValue;
			}
			chInfo['name'] = px('character',0,'name');
			chInfo['level'] = px('character',0,'level');
			chInfo['race'] = px('character',0,'race');
			chInfo['raceId'] = px('character',0,'raceId');
			chInfo['class'] = px('character',0,'class');
			chInfo['classId'] = px('character',0,'classId');
			chInfo['guildName'] = px('character',0,'guildName');
			chInfo['faction'] = px('character',0,'faction');
			chInfo['realm'] = px('character',0,'realm');
			chInfo['gender'] = px('character',0,'gender');
			chInfo['genderId'] = px('character',0,'genderId');
			chInfo['points'] = px('character',0,'points');
			
			chSpec[0] = parseInt(px('talentSpec',0,'treeOne'),10);
			chSpec[1] = parseInt(px('talentSpec',0,'treeTwo'),10);
			chSpec[2] = parseInt(px('talentSpec',0,'treeThree'),10);
			chSpec['prim'] = px('talentSpec',0,'prim');
			
			chBar[0] = px('health',0,'effective');
			chBar[1] = px('secondBar',0,'effective');
			
			stVal[0][0] = px('strength',0,'effective');
			stVal[0][1] = px('agility',0,'effective');
			stVal[0][2] = px('stamina',0,'effective');
			stVal[0][3] = px('intellect',0,'effective');
			stVal[0][4] = px('spirit',0,'effective');
			stVal[0][5] = px('armor',0,'effective');
			stVal[1][0] = px('mainHandDamage',0,'dps');
			stVal[1][1] = px('mainHandDamage',0,'speed');
			stVal[1][2] = px('power',0,'effective');
			stVal[1][3] = px('hitRating',0,'increasedHitPercent');
			stVal[1][4] = px('critChance',0,'percent');
			stVal[1][5] = px('expertise',0,'value');
			stVal[2][0] = px('damage',0,'dps');
			stVal[2][1] = px('damage',0,'speed');
			stVal[2][2] = px('power',1,'effective');
			stVal[2][3] = px('hitRating',1,'increasedHitPercent');
			stVal[2][4] = px('critChance',1,'percent');
			stVal[2][5] = px('hitRating',1,'reducedArmorPercent');
			stVal[3][0] = px('bonusHealing',0,'value');
			stVal[3][1] = px('bonusHealing',0,'value');
			stVal[3][2] = px('hitRating',2,'value');
			stVal[3][3] = px('critChance',2,'rating');
			stVal[3][4] = px('hasteRating',0,'hastePercent');
			stVal[3][5] = px('manaRegen',0,'notCasting');
			stVal[4][0] = px('armor',1,'percent');
			stVal[4][1] = px('defense',0,'value');
			stVal[4][2] = px('dodge',0,'percent');
			stVal[4][3] = px('parry',0,'percent');
			stVal[4][4] = px('block',0,'percent');
			stVal[4][5] = px('resilience',0,'value');
			
			chClass = chInfo['class'];
			tab = cInfo[chClass].split('|')[5];
			if(chSpec['prim'] == 'Feral Combat') { tab = 0; }
			if(chSpec['prim'] == 'Retribution') { tab = 1; }
			if(chSpec['prim'] == 'Protection') { tab = 4; }
			showCharInfo(tab);
		}
		getDataReturnXML('includes/getCharXML.php?n='+rName+'&r='+r, cb);
	}
	function showCharInfo(tab) {
		var charMT = 0;
		var navStat = new Array();
			navStat[0] = $('basestats');
			navStat[1] = $('melee');
			navStat[2] = $('ranged');
			navStat[3] = $('spell');
			navStat[4] = $('defense');
		
		for(i = 0; i < 5; i++) { navStat[i].style.background = ''; }
		navStat[tab].style.background = 'url(images/dkp_middle.gif) no-repeat 14px -6px';
		
		if(chSpec[0] > chSpec[1] && chSpec[0] > chSpec[2]) { charMT = 0; }
		if(chSpec[1] > chSpec[2] && chSpec[1] > chSpec[0]) { charMT = 1; }
		if(chSpec[2] > chSpec[0] && chSpec[2] > chSpec[1]) { charMT = 2; }
		
		$('char_avatar').style.background = 'url(images/avatars/'+chInfo['genderId']+'-'+chInfo['raceId']+'-'+chInfo['classId']+'.gif) no-repeat 2px 2px';
		$('char_class_icon').innerHTML = '<img src="images/classes/'+chInfo['class'].toLowerCase().replace(' ', '')+'.gif" />';
		$('char_name').innerHTML = '<a href="http://www.wowarmory.com/character-sheet.xml?r='+chInfo['realm']+'&n='+chInfo['name']+'" rel="external">'+chInfo['name']+'</a>';
		$('char_race_class').innerHTML = 'Level '+chInfo['level']+' '+chInfo['race']+'<br />'+chInfo['class'];
		$('char_guild').innerHTML = chInfo['guildName'];
		
		$('health').innerHTML = '<div id="health_value">'+chBar[0]+'</div><div>Health:</div>';
		$('second_bar').innerHTML = '<div id="second_bar_value" style="background:url(images/'+cInfo[chClass].split('|')[4]+'.gif);">'+chBar[1]+'</div><div>'+cInfo[chClass].split('|')[3]+'</div>';
		
		$('talent_icon').innerHTML = '<img id="talent_icon_img" align="absmiddle" src="images/talents/'+chInfo['class'].toLowerCase().replace(' ', '')+charMT+'.png" />';
		$('talent_spec').innerHTML = cInfo[chClass].split('|')[charMT].toUpperCase()+'<br />'+chSpec[0]+' / '+chSpec[1]+' / '+chSpec[2];
		
		$('stats_names').innerHTML = '<table><tr><td>'+stName[tab][0]+':</td></tr><tr><td>'+stName[tab][1]+':</td></tr><tr><td>'+stName[tab][2]+':</td></tr><tr><td>'+stName[tab][3]+':</td></tr><tr><td>'+stName[tab][4]+':</td></tr><tr><td>'+stName[tab][5]+':</td></tr></table>';
		$('stats_values').innerHTML = '<table><tr><td>'+stVal[tab][0]+'</td></tr><tr><td>'+stVal[tab][1]+'</td></tr><tr><td>'+stVal[tab][2]+'</td></tr><tr><td>'+stVal[tab][3]+'</td></tr><tr><td>'+stVal[tab][4]+'</td></tr><tr><td>'+stVal[tab][5]+'</td></tr></table>';
		
		$('armory_random').innerHTML = 'Random New Player!';
		clearTimeout(timer);
		done = 2;
	}
	
	function showError() {
		if(done == 1) {
			done = 2;
			$('armory_random').innerHTML = 'Try Again!';
		}
	}
	
	function showArmory() {
		if(done == 2) { done = 0; }
		$('armory_random').innerHTML = 'Loading...';
		randomArmory();
	}