User:Ale jrb/Scripts/SkillCheck/skillcheck.js

From Guild Wars Wiki
Jump to navigationJump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
/* =========================================================== *\
** SkillCheck JavaScript skill checking program.                **
** Copyright (c) Alex Barley <ale_jrb> 2007 - 2009.            **
** =========================================================== **




** =========================================================== **
** SkillCheck - start main code. Do not edit below this line.   **
\* =========================================================== */


/* =========================================================== *\
** Full skill array                                            **
\* =========================================================== */
	var skillArray = new Array(	
		/* Warrior skills */
		'%22Charge%21%22',
		'%22Coward%21%22',
		'%22Fear_Me%21%22',
		'%22For_Great_Justice%21%22',
		'%22I_Meant_to_Do_That%21%22',
		'%22I_Will_Avenge_You%21%22',
		'%22I_Will_Survive%21%22',
		'%22Let%27s_Get_%27Em%21%22',
		'%22None_Shall_Pass%21%22',
		'%22On_Your_Knees%21%22',
		'%22Retreat%21%22',
		'%22Save_Yourselves%21%22',
		'%22Shields_Up%21%22',
		'%22To_the_Limit%21%22',
		'%22Victory_is_Mine%21%22',
		'%22Watch_Yourself%21%22',
		'%22You%27re_All_Alone%21%22',
		'%22You_Will_Die%21%22',
		'Agonizing_Chop',
		'Auspicious_Blow',
		'Auspicious_Parry',
		'Axe_Rake',
		'Axe_Twist',
		'Backbreaker',
		'Balanced_Stance',
		'Barbarous_Slice',
		'Battle_Rage',
		'Belly_Smash',
		'Berserker_Stance',
		'Body_Blow',
		'Bonetti%27s_Defense',
		'Bull%27s_Charge',
		'Bull%27s_Strike',
		'Burst_of_Aggression',
		'Charging_Strike',
		'Cleave',
		'Counter_Blow',
		'Counterattack',
		'Crippling_Slash',
		'Critical_Chop',
		'Crude_Swing',
		'Crushing_Blow',
		'Cyclone_Axe',
		'Deadly_Riposte',
		'Decapitate',
		'Defensive_Stance',
		'Deflect_Arrows',
		'Defy_Pain',
		'Desperation_Blow',
		'Devastating_Hammer',
		'Disarm',
		'Disciplined_Stance',
		'Dismember',
		'Disrupting_Chop',
		'Distracting_Blow',
		'Distracting_Strike',
		'Dolyak_Signet',
		'Dragon_Slash',
		'Dragon_Slash',
		'Drunken_Blow',
		'Dwarven_Battle_Stance',
		'Earth_Shaker',
		'Endure_Pain',
		'Enraged_Smash',
		'Enraging_Charge',
		'Eviscerate',
		'Executioner%27s_Strike',
		'Fierce_Blow',
		'Final_Thrust',
		'Flail',
		'Flourish',
		'Flurry',
		'Forceful_Blow',
		'Frenzied_Defense',
		'Frenzy',
		'Furious_Axe',
		'Galrath_Slash',
		'Gash',
		'Gladiator%27s_Defense',
		'Grapple',
		'Griffon%27s_Sweep',
		'Hammer_Bash',
		'Hamstring',
		'Headbutt',
		'Healing_Signet',
		'Heavy_Blow',
		'Hundred_Blades',
		'Irresistible_Blow',
		'Jaizhenju_Strike',
		'Keen_Chop',
		'Knee_Cutter',
		'Lacerating_Chop',
		'Leviathan%27s_Sweep',
		'Lion%27s_Comfort',
		'Magehunter%27s_Smash',
		'Magehunter_Strike',
		'Mighty_Blow',
		'Mokele_Smash',
		'Overbearing_Smash',
		'Penetrating_Blow',
		'Penetrating_Chop',
		'Power_Attack',
		'Primal_Rage',
		'Protector%27s_Defense',
		'Protector%27s_Strike',
		'Pulverizing_Smash',
		'Pure_Strike',
		'Quivering_Blade',
		'Rage_of_the_Ntouka',
		'Renewing_Smash',
		'Riposte',
		'Rush',
		'Savage_Slash',
		'Seeking_Blade',
		'Sever_Artery',
		'Shield_Bash',
		'Shield_Stance',
		'Shove',
		'Signet_of_Stamina',
		'Signet_of_Strength',
		'Silverwing_Slash',
		'Skull_Crack',
		'Soldier%27s_Defense',
		'Soldier%27s_Speed',
		'Soldier%27s_Stance',
		'Soldier%27s_Strike',
		'Sprint',
		'Staggering_Blow',
		'Standing_Slash',
		'Steady_Stance',
		'Steelfang_Slash',
		'Storm_of_Swords',
		'Sun_and_Moon_Slash',
		'Swift_Chop',
		'Symbolic_Strike',
		'Thrill_of_Victory',
		'Tiger_Stance',
		'Triple_Chop',
		'Warrior%27s_Cunning',
		'Warrior%27s_Endurance',
		'Wary_Stance',
		'Whirling_Axe',
		'Whirlwind_Attack',
		'Wild_Blow',
		'Yeti_Smash',
		
		/* Ranger skills */
		'Antidote_Signet',
		'Apply_Poison',
		'Archer%27s_Signet',
		'Arcing_Shot',
		'Barbed_Arrows',
		'Barbed_Trap',
		'Barrage',
		'Bestial_Fury',
		'Bestial_Mauling',
		'Bestial_Pounce',
		'Body_Shot',
		'Brambles',
		'Broad_Head_Arrow',
		'Brutal_Strike',
		'Burning_Arrow',
		'Call_of_Haste',
		'Call_of_Protection',
		'Called_Shot',
		'Celestial_Stance',
		'Charm_Animal',
		'Charm_Animal',
		'Charm_Animal_%28Codex%29',
		'Choking_Gas',
		'Comfort_Animal',
		'Companionship',
		'Concussion_Shot',
		'Conflagration',
		'Crippling_Shot',
		'Crossfire',
		'Debilitating_Shot',
		'Determined_Shot',
		'Disrupting_Accuracy',
		'Disrupting_Lunge',
		'Disrupting_Shot',
		'Distracting_Shot',
		'Dodge',
		'Dryder%27s_Defenses',
		'Dual_Shot',
		'Dust_Trap',
		'Edge_of_Extinction',
		'Energizing_Wind',
		'Enraged_Lunge',
		'Equinox',
		'Escape',
		'Expert%27s_Dexterity',
		'Expert_Focus',
		'Famine',
		'Favorable_Winds',
		'Feral_Aggression',
		'Feral_Lunge',
		'Ferocious_Strike',
		'Fertile_Season',
		'Flame_Trap',
		'Flurry_of_Ice',
		'Focused_Shot',
		'Forked_Arrow',
		'Frozen_Soil',
		'Glass_Arrows',
		'Greater_Conflagration',
		'Heal_as_One',
		'Healing_Spring',
		'Heket%27s_Rampage',
		'Hunter%27s_Shot',
		'Ignite_Arrows',
		'Incendiary_Arrows',
		'Infuriating_Heat',
		'Keen_Arrow',
		'Kindle_Arrows',
		'Lacerate',
		'Lightning_Reflexes',
		'Magebane_Shot',
		'Maiming_Strike',
		'Marauder%27s_Shot',
		'Marksman%27s_Wager',
		'Melandru%27s_Arrows',
		'Melandru%27s_Assault',
		'Melandru%27s_Resilience',
		'Melandru%27s_Shot',
		'Muddy_Terrain',
		'Natural_Stride',
		'Nature%27s_Renewal',
		'Needling_Shot',
		'Never_Rampage_Alone',
		'Oath_Shot',
		'Otyugh%27s_Cry',
		'Penetrating_Attack',
		'Pestilence',
		'Piercing_Trap',
		'Pin_Down',
		'Point_Blank_Shot',
		'Poison_Arrow',
		'Poison_Tip_Signet',
		'Poisonous_Bite',
		'Pounce',
		'Power_Shot',
		'Practiced_Stance',
		'Precision_Shot',
		'Predator%27s_Pounce',
		'Predatory_Bond',
		'Predatory_Season',
		'Prepared_Shot',
		'Primal_Echoes',
		'Punishing_Shot',
		'Quick_Shot',
		'Quickening_Zephyr',
		'Quicksand',
		'Rampage_as_One',
		'Rapid_Fire',
		'Read_the_Wind',
		'Revive_Animal',
		'Roaring_Winds',
		'Run_as_One',
		'Savage_Pounce',
		'Savage_Shot',
		'Scavenger%27s_Focus',
		'Scavenger_Strike',
		'Screaming_Shot',
		'Seeking_Arrows',
		'Serpent%27s_Quickness',
		'Sloth_Hunter%27s_Shot',
		'Smoke_Trap',
		'Snare',
		'Spike_Trap',
		'Splinter_Shot',
		'Storm%27s_Embrace',
		'Storm_Chaser',
		'Strike_as_One',
		'Sundering_Attack',
		'Symbiosis',
		'Symbiotic_Bond',
		'Throw_Dirt',
		'Tiger%27s_Fury',
		'Toxicity',
		'Tranquility',
		'Trapper%27s_Focus',
		'Trapper%27s_Speed',
		'Triple_Shot',
		'Tripwire',
		'Troll_Unguent',
		'Viper%27s_Nest',
		'Volley',
		'Whirling_Defense',
		'Winnowing',
		'Winter',
		'Zojun%27s_Haste',
		'Zojun%27s_Shot',
		
		/* Monk skills */
		'Aegis',
		'Air_of_Enchantment',
		'Amity',
		'Aura_of_Faith',
		'Aura_of_Stability',
		'Balthazar%27s_Aura',
		'Balthazar%27s_Pendulum',
		'Balthazar%27s_Spirit',
		'Bane_Signet',
		'Banish',
		'Blessed_Aura',
		'Blessed_Light',
		'Blessed_Signet',
		'Boon_Signet',
		'Castigation_Signet',
		'Castigation_Signet',
		'Contemplation_of_Purity',
		'Convert_Hexes',
		'Cure_Hex',
		'Defender%27s_Zeal',
		'Deny_Hexes',
		'Dismiss_Condition',
		'Divert_Hexes',
		'Divine_Boon',
		'Divine_Healing',
		'Divine_Intervention',
		'Divine_Spirit',
		'Draw_Conditions',
		'Dwayna%27s_Kiss',
		'Dwayna%27s_Sorrow',
		'Empathic_Removal',
		'Essence_Bond',
		'Ethereal_Light',
		'Extinguish',
		'Gift_of_Health',
		'Glimmer_of_Light',
		'Guardian',
		'Heal_Area',
		'Heal_Other',
		'Heal_Party',
		'Healer%27s_Boon',
		'Healer%27s_Covenant',
		'Healing_Breeze',
		'Healing_Burst',
		'Healing_Hands',
		'Healing_Light',
		'Healing_Ribbon',
		'Healing_Ring',
		'Healing_Seed',
		'Healing_Touch',
		'Healing_Whisper',
		'Heaven%27s_Delight',
		'Holy_Haste',
		'Holy_Strike',
		'Holy_Veil',
		'Holy_Wrath',
		'Ice_Breaker',
		'Infuse_Health',
		'Jamei%27s_Gaze',
		'Judge%27s_Insight',
		'Judge%27s_Intervention',
		'Karei%27s_Healing_Circle',
		'Kirin%27s_Wrath',
		'Life_Attunement',
		'Life_Barrier',
		'Life_Bond',
		'Life_Sheath',
		'Light_of_Deliverance',
		'Light_of_Dwayna',
		'Live_Vicariously',
		'Mark_of_Protection',
		'Martyr',
		'Mend_Ailment',
		'Mend_Condition',
		'Mending',
		'Mending_Touch',
		'Orison_of_Healing',
		'Pacifism',
		'Patient_Spirit',
		'Peace_and_Harmony',
		'Pensive_Guardian',
		'Protective_Bond',
		'Protective_Spirit',
		'Purge_Conditions',
		'Purge_Signet',
		'Purifying_Veil',
		'Ray_of_Judgment',
		'Rebirth',
		'Release_Enchantments',
		'Remove_Hex',
		'Renew_Life',
		'Restful_Breeze',
		'Restore_Condition',
		'Restore_Life',
		'Resurrect',
		'Resurrection_Chant',
		'Retribution',
		'Reversal_of_Damage',
		'Reversal_of_Fortune',
		'Reverse_Hex',
		'Scourge_Enchantment',
		'Scourge_Healing',
		'Scourge_Sacrifice',
		'Scribe%27s_Insight',
		'Seed_of_Life',
		'Selfless_Spirit',
		'Shield_Guardian',
		'Shield_of_Absorption',
		'Shield_of_Deflection',
		'Shield_of_Judgment',
		'Shield_of_Regeneration',
		'Shielding_Hands',
		'Signet_of_Devotion',
		'Signet_of_Judgment',
		'Signet_of_Mystic_Wrath',
		'Signet_of_Rage',
		'Signet_of_Rejuvenation',
		'Signet_of_Removal',
		'Smite',
		'Smite_Condition',
		'Smite_Hex',
		'Smiter%27s_Boon',
		'Spear_of_Light',
		'Spell_Breaker',
		'Spell_Shield',
		'Spirit_Bond',
		'Spotless_Mind',
		'Spotless_Soul',
		'Star_Shine',
		'Stonesoul_Strike',
		'Strength_of_Honor',
		'Succor',
		'Supportive_Spirit',
		'Symbol_of_Wrath',
		'Unyielding_Aura',
		'Vengeance',
		'Vigorous_Spirit',
		'Vital_Blessing',
		'Watchful_Healing',
		'Watchful_Spirit',
		'Withdraw_Hexes',
		'Word_of_Censure',
		'Word_of_Healing',
		'Words_of_Comfort',
		'Zealot%27s_Fire',
		'Zealous_Benediction',
		
		/* Necromancer skills */
		'Angorodon%27s_Gaze',
		'Animate_Bone_Fiend',
		'Animate_Bone_Horror',
		'Animate_Bone_Minions',
		'Animate_Flesh_Golem',
		'Animate_Shambling_Horror',
		'Animate_Vampiric_Horror',
		'Atrophy',
		'Aura_of_the_Lich',
		'Awaken_the_Blood',
		'Barbed_Signet',
		'Barbs',
		'Bitter_Chill',
		'Blood_Bond',
		'Blood_Drinker',
		'Blood_Renewal',
		'Blood_Ritual',
		'Blood_is_Power',
		'Blood_of_the_Aggressor',
		'Blood_of_the_Master',
		'Cacophony',
		'Chilblains',
		'Consume_Corpse',
		'Contagion',
		'Corrupt_Enchantment',
		'Cultist%27s_Fervor',
		'Dark_Aura',
		'Dark_Bond',
		'Dark_Fury',
		'Dark_Pact',
		'Death_Nova',
		'Deathly_Chill',
		'Deathly_Swarm',
		'Defile_Defenses',
		'Defile_Enchantments',
		'Defile_Flesh',
		'Demonic_Flesh',
		'Depravity',
		'Desecrate_Enchantments',
		'Discord',
		'Enfeeble',
		'Enfeebling_Blood',
		'Enfeebling_Touch',
		'Envenom_Enchantments',
		'Faintheartedness',
		'Feast_for_the_Dead',
		'Feast_of_Corruption',
		'Fetid_Ground',
		'Foul_Feast',
		'Gaze_of_Contempt',
		'Grenth%27s_Balance',
		'Hexer%27s_Vigor',
		'Holiday_Blues',
		'Icy_Veins',
		'Infuse_Condition',
		'Insidious_Parasite',
		'Jagged_Bones',
		'Jaundiced_Gaze',
		'Life_Siphon',
		'Life_Transfer',
		'Lifebane_Strike',
		'Lingering_Curse',
		'Malaise',
		'Malign_Intervention',
		'Mark_of_Fury',
		'Mark_of_Pain',
		'Mark_of_Subversion',
		'Masochism',
		'Meekness',
		'Necrosis',
		'Necrotic_Traversal',
		'Offering_of_Blood',
		'Oppressive_Gaze',
		'Order_of_Apostasy',
		'Order_of_Pain',
		'Order_of_Undeath',
		'Order_of_the_Vampire',
		'Pain_of_Disenchantment',
		'Parasitic_Bond',
		'Plague_Sending',
		'Plague_Signet',
		'Plague_Touch',
		'Poisoned_Heart',
		'Price_of_Failure',
		'Putrid_Bile',
		'Putrid_Explosion',
		'Putrid_Flesh',
		'Ravenous_Gaze',
		'Reaper%27s_Mark',
		'Reckless_Haste',
		'Rend_Enchantments',
		'Rigor_Mortis',
		'Rip_Enchantment',
		'Rising_Bile',
		'Rotting_Flesh',
		'Shadow_Strike',
		'Shadow_of_Fear',
		'Shivers_of_Dread',
		'Signet_of_Agony',
		'Signet_of_Corruption',
		'Signet_of_Lost_Souls',
		'Signet_of_Sorrow',
		'Signet_of_Suffering',
		'Soul_Barbs',
		'Soul_Bind',
		'Soul_Feast',
		'Soul_Leech',
		'Spinal_Shivers',
		'Spiteful_Spirit',
		'Spoil_Victor',
		'Star_Servant',
		'Strip_Enchantment',
		'Suffering',
		'Tainted_Flesh',
		'Taste_of_Death',
		'Taste_of_Pain',
		'Touch_of_Agony',
		'Toxic_Chill',
		'Ulcerous_Lungs',
		'Unholy_Feast',
		'Vampiric_Bite',
		'Vampiric_Gaze',
		'Vampiric_Spirit',
		'Vampiric_Swarm',
		'Vampiric_Touch',
		'Verata%27s_Aura',
		'Verata%27s_Gaze',
		'Verata%27s_Sacrifice',
		'Vile_Miasma',
		'Vile_Touch',
		'Virulence',
		'Vocal_Minority',
		'Wail_of_Doom',
		'Wallow%27s_Bite',
		'Weaken_Armor',
		'Weaken_Knees',
		'Well_of_Blood',
		'Well_of_Darkness',
		'Well_of_Power',
		'Well_of_Ruin',
		'Well_of_Silence',
		'Well_of_Suffering',
		'Well_of_Weariness',
		'Well_of_the_Profane',
		'Wither',
		'Withering_Aura',
		
		/* Mesmer skills */
		'Accumulated_Pain',
		'Air_of_Disenchantment',
		'Ancestor%27s_Visage',
		'Aneurysm',
		'Arcane_Conundrum',
		'Arcane_Echo',
		'Arcane_Languor',
		'Arcane_Larceny',
		'Arcane_Mimicry',
		'Arcane_Thievery',
		'Auspicious_Incantation',
		'Backfire',
		'Blackout',
		'Blinding_Snow',
		'Calculated_Risk',
		'Celestial_Haste',
		'Channeling',
		'Chaos_Storm',
		'Clumsiness',
		'Complicate',
		'Confusing_Images',
		'Conjure_Nightmare',
		'Conjure_Phantasm',
		'Crippling_Anguish',
		'Cry_of_Frustration',
		'Cry_of_Pain',
		'Discharge_Enchantment',
		'Distortion',
		'Distortion',
		'Diversion',
		'Drain_Delusions',
		'Drain_Enchantment',
		'Echo',
		'Elemental_Resistance',
		'Empathy',
		'Enchanter%27s_Conundrum',
		'Energy_Burn',
		'Energy_Drain',
		'Energy_Surge',
		'Energy_Tap',
		'Epidemic',
		'Ether_Feast',
		'Ether_Lord',
		'Ether_Nightmare',
		'Ether_Phantom',
		'Ether_Signet',
		'Ethereal_Burden',
		'Expel_Hexes',
		'Extend_Conditions',
		'Feedback',
		'Fevered_Dreams',
		'Fragility',
		'Frustration',
		'Guilt',
		'Hex_Breaker',
		'Hex_Eater_Signet',
		'Hex_Eater_Vortex',
		'Hypochondria',
		'Ignorance',
		'Illusion_of_Haste',
		'Illusion_of_Pain',
		'Illusion_of_Weakness',
		'Illusionary_Weaponry',
		'Images_of_Remorse',
		'Imagined_Burden',
		'Ineptitude',
		'Inspired_Enchantment',
		'Inspired_Hex',
		'Keystone_Signet',
		'Kitah%27s_Burden',
		'Leech_Signet',
		'Lyssa%27s_Aura',
		'Lyssa%27s_Balance',
		'Mantra_of_Concentration',
		'Mantra_of_Earth',
		'Mantra_of_Flame',
		'Mantra_of_Frost',
		'Mantra_of_Inscriptions',
		'Mantra_of_Lightning',
		'Mantra_of_Persistence',
		'Mantra_of_Recall',
		'Mantra_of_Recovery',
		'Mantra_of_Resolve',
		'Mantra_of_Signets',
		'Migraine',
		'Mind_Wrack',
		'Mirror_of_Disenchantment',
		'Mistrust',
		'Overload',
		'Panic',
		'Persistence_of_Memory',
		'Phantom_Pain',
		'Physical_Resistance',
		'Power_Block',
		'Power_Drain',
		'Power_Flux',
		'Power_Leak',
		'Power_Leech',
		'Power_Lock',
		'Power_Return',
		'Power_Spike',
		'Price_of_Pride',
		'Psychic_Distraction',
		'Psychic_Instability',
		'Recurring_Insecurity',
		'Revealed_Enchantment',
		'Revealed_Hex',
		'Shame',
		'Shared_Burden',
		'Shared_Burden',
		'Shatter_Delusions',
		'Shatter_Enchantment',
		'Shatter_Hex',
		'Shatter_Storm',
		'Shrinking_Armor',
		'Signet_of_Clumsiness',
		'Signet_of_Disenchantment',
		'Signet_of_Disruption',
		'Signet_of_Distraction',
		'Signet_of_Humility',
		'Signet_of_Illusions',
		'Signet_of_Midnight',
		'Signet_of_Recall',
		'Signet_of_Weariness',
		'Simple_Thievery',
		'Soothing_Images',
		'Spirit_Shackles',
		'Spirit_of_Failure',
		'Spiritual_Pain',
		'Stolen_Speed',
		'Sum_of_All_Fears',
		'Sum_of_All_Fears',
		'Symbolic_Celerity',
		'Symbolic_Posture',
		'Symbols_of_Inspiration',
		'Sympathetic_Visage',
		'Tease',
		'Unnatural_Signet',
		'Unnatural_Signet',
		'Visions_of_Regret',
		'Wandering_Eye',
		'Waste_Not%2C_Want_Not',
		'Wastrel%27s_Demise',
		'Wastrel%27s_Worry',
		'Web_of_Disruption',
		
		/* Elementalist skills */
		'Aftershock',
		'Air_Attunement',
		'Arc_Lightning',
		'Armor_of_Earth',
		'Armor_of_Frost',
		'Armor_of_Mist',
		'Ash_Blast',
		'Aura_of_Restoration',
		'Bed_of_Coals',
		'Blinding_Flash',
		'Blinding_Surge',
		'Blurred_Vision',
		'Breath_of_Fire',
		'Burning_Speed',
		'Celestial_Storm',
		'Chain_Lightning',
		'Chilling_Winds',
		'Churning_Earth',
		'Conjure_Flame',
		'Conjure_Frost',
		'Conjure_Lightning',
		'Crystal_Wave',
		'Deep_Freeze',
		'Double_Dragon',
		'Dragon%27s_Stomp',
		'Earth_Attunement',
		'Earthen_Shackles',
		'Earthquake',
		'Ebon_Hawk',
		'Elemental_Attunement',
		'Elemental_Flame',
		'Elemental_Lord',
		'Energy_Blast',
		'Energy_Boon',
		'Enervating_Charge',
		'Eruption',
		'Ether_Prism',
		'Ether_Prodigy',
		'Ether_Renewal',
		'Fire_Attunement',
		'Fire_Storm',
		'Fireball',
		'Flame_Burst',
		'Flame_Djinn%27s_Haste',
		'Flare',
		'Freezing_Gust',
		'Frigid_Armor',
		'Frozen_Burst',
		'Gale',
		'Glimmering_Mark',
		'Glowing_Gaze',
		'Glowing_Ice',
		'Glowstone',
		'Glyph_of_Concentration',
		'Glyph_of_Elemental_Power',
		'Glyph_of_Energy',
		'Glyph_of_Essence',
		'Glyph_of_Immolation',
		'Glyph_of_Lesser_Energy',
		'Glyph_of_Renewal',
		'Glyph_of_Restoration',
		'Glyph_of_Sacrifice',
		'Glyph_of_Swiftness',
		'Grasping_Earth',
		'Gust',
		'Ice_Prison',
		'Ice_Spear',
		'Ice_Spikes',
		'Icicles',
		'Icy_Prism',
		'Icy_Shackles',
		'Immolate',
		'Incendiary_Bonds',
		'Inferno',
		'Intensity',
		'Invoke_Lightning',
		'Iron_Mist',
		'Kinetic_Armor',
		'Lava_Arrows',
		'Lava_Font',
		'Lightning_Bolt',
		'Lightning_Hammer',
		'Lightning_Javelin',
		'Lightning_Orb',
		'Lightning_Strike',
		'Lightning_Surge',
		'Lightning_Touch',
		'Liquid_Flame',
		'Maelstrom',
		'Magnetic_Aura',
		'Magnetic_Surge',
		'Mark_of_Rodgort',
		'Master_of_Magic',
		'Meteor',
		'Meteor_Shower',
		'Mind_Blast',
		'Mind_Burn',
		'Mind_Freeze',
		'Mind_Shock',
		'Mirror_of_Ice',
		'Mist_Form',
		'Obsidian_Flame',
		'Obsidian_Flesh',
		'Phoenix',
		'Ride_the_Lightning',
		'Rodgort%27s_Invocation',
		'Rust',
		'Sandstorm',
		'Savannah_Heat',
		'Searing_Flames',
		'Searing_Heat',
		'Second_Wind',
		'Shard_Storm',
		'Shatterstone',
		'Shell_Shock',
		'Shock',
		'Shock_Arrow',
		'Shockwave',
		'Slippery_Ground',
		'Sliver_Armor',
		'Smoldering_Embers',
		'Star_Burst',
		'Steam',
		'Stone_Daggers',
		'Stone_Sheath',
		'Stone_Striker',
		'Stoneflesh_Aura',
		'Stoning',
		'Storm_Djinn%27s_Haste',
		'Swirling_Aura',
		'Teinai%27s_Crystals',
		'Teinai%27s_Heat',
		'Teinai%27s_Prison',
		'Teinai%27s_Wind',
		'Thunderclap',
		'Unsteady_Ground',
		'Vapor_Blade',
		'Ward_Against_Elements',
		'Ward_Against_Foes',
		'Ward_Against_Harm',
		'Ward_Against_Melee',
		'Ward_of_Stability',
		'Ward_of_Weakness',
		'Water_Attunement',
		'Water_Trident',
		'Whirlwind',
		'Windborne_Speed',
		'Winter%27s_Embrace',
		
		/* Assassin skills */
		'Assassin%27s_Promise',
		'Assassin%27s_Remedy',
		'Assault_Enchantments',
		'Augury_of_Death',
		'Aura_of_Displacement',
		'Beguiling_Haze',
		'Black_Lotus_Strike',
		'Black_Mantis_Thrust',
		'Black_Spider_Strike',
		'Blades_of_Steel',
		'Blinding_Powder',
		'Caltrops',
		'Crippling_Dagger',
		'Critical_Agility',
		'Critical_Defenses',
		'Critical_Eye',
		'Critical_Strike',
		'Dancing_Daggers',
		'Dark_Apostasy',
		'Dark_Escape',
		'Dark_Prison',
		'Dash',
		'Deadly_Haste',
		'Deadly_Paradox',
		'Death%27s_Charge',
		'Death%27s_Retreat',
		'Death_Blossom',
		'Desperate_Strike',
		'Disrupting_Dagger',
		'Disrupting_Stab',
		'Enduring_Toxin',
		'Entangling_Asp',
		'Exhausting_Assault',
		'Expose_Defenses',
		'Expunge_Enchantments',
		'Falling_Lotus_Strike',
		'Falling_Spider',
		'Feigned_Neutrality',
		'Flashing_Blades',
		'Fox%27s_Promise',
		'Fox_Fangs',
		'Golden_Fang_Strike',
		'Golden_Fox_Strike',
		'Golden_Lotus_Strike',
		'Golden_Phoenix_Strike',
		'Golden_Skull_Strike',
		'Heart_of_Shadow',
		'Hidden_Caltrops',
		'Horns_of_the_Ox',
		'Impale',
		'Iron_Palm',
		'Jagged_Strike',
		'Jungle_Strike',
		'Leaping_Mantis_Sting',
		'Lift_Enchantment',
		'Locust%27s_Fury',
		'Lotus_Strike',
		'Malicious_Strike',
		'Mantis_Touch',
		'Mark_of_Death',
		'Mark_of_Insecurity',
		'Mark_of_Instability',
		'Mirrored_Stance',
		'Moebius_Strike',
		'Nine_Tail_Strike',
		'Palm_Strike',
		'Recall',
		'Repeating_Strike',
		'Return',
		'Sadist%27s_Signet',
		'Scorpion_Wire',
		'Seeping_Wound',
		'Shadow_Fang',
		'Shadow_Form',
		'Shadow_Meld',
		'Shadow_Prison',
		'Shadow_Refuge',
		'Shadow_Sanctuary',
		'Shadow_Shroud',
		'Shadow_Walk',
		'Shadow_of_Haste',
		'Shadowy_Burden',
		'Shameful_Fear',
		'Sharpen_Daggers',
		'Shattering_Assault',
		'Shroud_of_Distress',
		'Shroud_of_Silence',
		'Side_Step',
		'Signet_of_Deadly_Corruption',
		'Signet_of_Malice',
		'Signet_of_Shadows',
		'Signet_of_Toxic_Shock',
		'Signet_of_Twilight',
		'Siphon_Speed',
		'Siphon_Strength',
		'Smoke_Powder_Defense',
		'Spirit_Walk',
		'Star_Strike',
		'Swap',
		'Temple_Strike',
		'Trampling_Ox',
		'Twisting_Fangs',
		'Unseen_Fury',
		'Unsuspecting_Strike',
		'Vampiric_Assault',
		'Viper%27s_Defense',
		'Wastrel%27s_Collapse',
		'Way_of_Perfection',
		'Way_of_the_Assassin',
		'Way_of_the_Empty_Palm',
		'Way_of_the_Fox',
		'Way_of_the_Lotus',
		'Way_of_the_Master',
		'Wild_Strike',
		
		/* Ritualist skills */
		'Agony',
		'Ancestors%27_Rage',
		'Anguish',
		'Anguished_Was_Lingwah',
		'Armor_of_Unfeeling',
		'Attuned_Was_Songkai',
		'Binding_Chains',
		'Blind_Was_Mingson',
		'Bloodsong',
		'Boon_of_Creation',
		'Brutal_Weapon',
		'Caretaker%27s_Charge',
		'Celestial_Summoning',
		'Channeled_Strike',
		'Clamor_of_Souls',
		'Consume_Soul',
		'Cruel_Was_Daoshen',
		'Death_Pact_Signet',
		'Defiant_Was_Xinrae',
		'Destruction',
		'Destructive_Was_Glaive',
		'Destructive_Was_Glaive',
		'Disenchantment',
		'Disenchantment',
		'Displacement',
		'Dissonance',
		'Doom',
		'Draw_Spirit',
		'Dulled_Weapon',
		'Earthbind',
		'Empowerment',
		'Energetic_Was_Lee_Sa',
		'Essence_Strike',
		'Explosive_Growth',
		'Feast_of_Souls',
		'Flesh_of_My_Flesh',
		'Gaze_from_Beyond',
		'Gaze_of_Fury',
		'Generous_Was_Tsungrai',
		'Ghostly_Haste',
		'Ghostly_Weapon',
		'Ghostmirror_Light',
		'Grasping_Was_Kuurong',
		'Guided_Weapon',
		'Jack_Frost',
		'Lamentation',
		'Life',
		'Lively_Was_Naomei',
		'Mend_Body_and_Soul',
		'Mending_Grip',
		'Mighty_Was_Vorizun',
		'Nightmare_Weapon',
		'Offering_of_Spirit',
		'Pain',
		'Painful_Bond',
		'Preservation',
		'Protective_Was_Kaolai',
		'Pure_Was_Li_Ming',
		'Reclaim_Essence',
		'Recovery',
		'Recuperation',
		'Rejuvenation',
		'Renewing_Memories',
		'Renewing_Surge',
		'Resilient_Was_Xiko',
		'Resilient_Weapon',
		'Restoration',
		'Ritual_Lord',
		'Rupture_Soul',
		'Shadowsong',
		'Shadowsong',
		'Shelter',
		'Sight_Beyond_Sight',
		'Signet_of_Binding',
		'Signet_of_Creation',
		'Signet_of_Ghostly_Might',
		'Signet_of_Spirits',
		'Soothing',
		'Soothing_Memories',
		'Soul_Twisting',
		'Spirit%27s_Gift',
		'Spirit%27s_Strength',
		'Spirit_Boon_Strike',
		'Spirit_Burn',
		'Spirit_Channeling',
		'Spirit_Light',
		'Spirit_Light_Weapon',
		'Spirit_Rift',
		'Spirit_Siphon',
		'Spirit_Siphon',
		'Spirit_Transfer',
		'Spirit_to_Flesh',
		'Spiritleech_Aura',
		'Splinter_Weapon',
		'Summon_Spirits',
		'Sundering_Weapon',
		'Tranquil_Was_Tanasen',
		'Union',
		'Vampirism',
		'Vengeful_Was_Khanhei',
		'Vengeful_Weapon',
		'Vital_Weapon',
		'Vocal_Was_Sogolon',
		'Wailing_Weapon',
		'Wanderlust',
		'Warmonger%27s_Weapon',
		'Weapon_of_Aggression',
		'Weapon_of_Fury',
		'Weapon_of_Quickening',
		'Weapon_of_Remedy',
		'Weapon_of_Renewal',
		'Weapon_of_Shadow',
		'Weapon_of_Warding',
		'Wielder%27s_Boon',
		'Wielder%27s_Remedy',
		'Wielder%27s_Strike',
		'Wielder%27s_Zeal',
		'Xinrae%27s_Weapon',
		
		/* Paragon skills */
		'%22Brace_Yourself%21%22',
		'%22Can%27t_Touch_This%21%22',
		'%22Fall_Back%21%22',
		'%22Find_Their_Weakness%21%22',
		'%22Go_for_the_Eyes%21%22',
		'%22Help_Me%21%22',
		'%22Incoming%21%22',
		'%22It%27s_Just_a_Flesh_Wound.%22',
		'%22Lead_the_Way%21%22',
		'%22Make_Haste%21%22',
		'%22Make_Your_Time%21%22',
		'%22Never_Give_Up%21%22',
		'%22Never_Surrender%21%22',
		'%22Stand_Your_Ground%21%22',
		'%22The_Power_Is_Yours%21%22',
		'%22There%27s_Nothing_to_Fear%21%22',
		'%22They%27re_on_Fire%21%22',
		'%22We_Shall_Return%21%22',
		'Aggressive_Refrain',
		'Angelic_Bond',
		'Angelic_Protection',
		'Anthem_of_Disruption',
		'Anthem_of_Envy',
		'Anthem_of_Flame',
		'Anthem_of_Fury',
		'Anthem_of_Guidance',
		'Anthem_of_Weariness',
		'Aria_of_Restoration',
		'Aria_of_Zeal',
		'Awe',
		'Ballad_of_Restoration',
		'Barbed_Spear',
		'Bladeturn_Refrain',
		'Blazing_Finale',
		'Blazing_Spear',
		'Burning_Refrain',
		'Burning_Shield',
		'Cautery_Signet',
		'Celestial_Summoning',
		'Chest_Thumper',
		'Chorus_of_Restoration',
		'Crippling_Anthem',
		'Cruel_Spear',
		'Defensive_Anthem',
		'Disrupting_Throw',
		'Enduring_Harmony',
		'Energizing_Chorus',
		'Energizing_Finale',
		'Finale_of_Restoration',
		'Focused_Anger',
		'Glowing_Signet',
		'Godspeed',
		'Harrier%27s_Toss',
		'Hasty_Refrain',
		'Hexbreaker_Aria',
		'Holy_Spear',
		'Inspirational_Speech',
		'Leader%27s_Comfort',
		'Leader%27s_Zeal',
		'Lyric_of_Purification',
		'Lyric_of_Zeal',
		'Maiming_Spear',
		'Mending_Refrain',
		'Merciless_Spear',
		'Mighty_Throw',
		'Natural_Temper',
		'Purifying_Finale',
		'Remedy_Signet',
		'Signet_of_Aggression',
		'Signet_of_Return',
		'Signet_of_Synergy',
		'Slayer%27s_Spear',
		'Soldier%27s_Fury',
		'Song_of_Concentration',
		'Song_of_Power',
		'Song_of_Purification',
		'Song_of_Restoration',
		'Spear_Swipe',
		'Spear_of_Fury',
		'Spear_of_Lightning',
		'Spear_of_Redemption',
		'Steady_Aim',
		'Stunning_Strike',
		'Swift_Javelin',
		'Unblockable_Throw',
		'Vicious_Attack',
		'Wearying_Spear',
		'Wild_Throw',
		'Zealous_Anthem',
		
		/* Dervish skills */
		'Arcane_Zeal',
		'Armor_of_Sanctity',
		'Attacker%27s_Insight',
		'Aura_Slicer',
		'Aura_of_Holy_Might',
		'Aura_of_Thorns',
		'Avatar_of_Balthazar',
		'Avatar_of_Dwayna',
		'Avatar_of_Dwayna',
		'Avatar_of_Grenth',
		'Avatar_of_Grenth',
		'Avatar_of_Lyssa',
		'Avatar_of_Melandru',
		'Balthazar%27s_Rage',
		'Banishing_Strike',
		'Celestial_Summoning',
		'Chilling_Victory',
		'Conviction',
		'Crippling_Sweep',
		'Crippling_Victory',
		'Dust_Cloak',
		'Dwayna%27s_Touch',
		'Ebon_Dust_Aura',
		'Enchanted_Haste',
		'Eremite%27s_Attack',
		'Eremite%27s_Zeal',
		'Eternal_Aura',
		'Extend_Enchantments',
		'Faithful_Intervention',
		'Farmer%27s_Scythe',
		'Featherfoot_Grace',
		'Fleeting_Stability',
		'Grenth%27s_Aura',
		'Grenth%27s_Fingers',
		'Grenth%27s_Grasp',
		'Guiding_Hands',
		'Harrier%27s_Grasp',
		'Harrier%27s_Haste',
		'Heart_of_Fury',
		'Heart_of_Holy_Flame',
		'Imbue_Health',
		'Intimidating_Aura',
		'Irresistible_Sweep',
		'Lyssa%27s_Assault',
		'Lyssa%27s_Haste',
		'Meditation',
		'Mirage_Cloak',
		'Mystic_Corruption',
		'Mystic_Healing',
		'Mystic_Regeneration',
		'Mystic_Sandstorm',
		'Mystic_Sweep',
		'Mystic_Twister',
		'Mystic_Vigor',
		'Natural_Healing',
		'Onslaught',
		'Pious_Assault',
		'Pious_Concentration',
		'Pious_Fury',
		'Pious_Haste',
		'Pious_Renewal',
		'Pious_Restoration',
		'Radiant_Scythe',
		'Reap_Impurities',
		'Reaper%27s_Sweep',
		'Rending_Aura',
		'Rending_Sweep',
		'Rending_Touch',
		'Sand_Shards',
		'Shield_of_Force',
		'Signet_of_Mystic_Speed',
		'Signet_of_Pious_Light',
		'Signet_of_Pious_Restraint',
		'Staggering_Force',
		'Test_of_Faith',
		'Twin_Moon_Sweep',
		'Veil_of_Thorns',
		'Victorious_Sweep',
		'Vital_Boon',
		'Vow_of_Piety',
		'Vow_of_Silence',
		'Vow_of_Strength',
		'Watchful_Intervention',
		'Wearying_Strike',
		'Whirling_Charge',
		'Winds_of_Disenchantment',
		'Wounding_Strike',
		'Zealous_Renewal',
		'Zealous_Sweep',
		'Zealous_Vow',
		
		/* Common skills */
		'Resurrection_Signet',
		'Signet_of_Capture',
		'Blinding_Breath',
		'Burning_Breath',
		'Choking_Breath',
		'Junundu_Bite',
		'Junundu_Feast',
		'Junundu_Siege',
		'Junundu_Smash',
		'Junundu_Strike',
		'Junundu_Tunnel',
		'Junundu_Wail',
		'Leave_Junundu',
		'Unknown_Junundu_Ability',
		'Lightbringer%27s_Gaze',
		'Lightbringer_Signet',
		'Sunspear_Rebirth_Signet',
		'Disarm_Trap',
		'Vial_of_Purified_Water',
		'Air_of_Superiority',
		'Asuran_Scan',
		'Mental_Block',
		'Mindbender',
		'Pain_Inverter',
		'Radiation_Field',
		'Smooth_Criminal',
		'Summon_Ice_Imp',
		'Summon_Mursaat',
		'Summon_Naga_Shaman',
		'Summon_Ruby_Djinn',
		'Technobabble',
		'%22By_Ural%27s_Hammer%21%22',
		'%22Don%27t_Trip%21%22',
		'Alkar%27s_Alchemical_Acid',
		'Black_Powder_Mine',
		'Brawling_Headbutt',
		'Breath_of_the_Great_Dwarf',
		'Drunken_Master',
		'Dwarven_Stability',
		'Ear_Bite',
		'Great_Dwarf_Armor',
		'Great_Dwarf_Weapon',
		'Light_of_Deldrimor',
		'Low_Blow',
		'Snow_Storm',
		'Deft_Strike',
		'Ebon_Battle_Standard_of_Courage',
		'Ebon_Battle_Standard_of_Honor',
		'Ebon_Battle_Standard_of_Wisdom',
		'Ebon_Escape',
		'Ebon_Vanguard_Assassin_Support',
		'Ebon_Vanguard_Sniper_Support',
		'Signet_of_Infection',
		'Sneak_Attack',
		'Tryptophan_Signet',
		'Weakness_Trap',
		'Winds',
		'%22Dodge_This%21%22',
		'%22Finish_Him%21%22',
		'%22I_Am_Unstoppable%21%22',
		'%22I_Am_the_Strongest%21%22',
		'%22You_Are_All_Weaklings%21%22',
		'%22You_Move_Like_a_Dwarf%21%22',
		'A_Touch_of_Guile',
		'Club_of_a_Thousand_Bears',
		'Feel_No_Pain',
		'Raven_Blessing',
		'Raven_Flight',
		'Raven_Shriek',
		'Raven_Swoop',
		'Raven_Talons',
		'Totem_of_Man',
		'Ursan_Blessing',
		'Ursan_Force',
		'Ursan_Rage',
		'Ursan_Roar',
		'Ursan_Strike',
		'Volfen_Agility',
		'Volfen_Blessing',
		'Volfen_Bloodlust',
		'Volfen_Claw',
		'Volfen_Pounce',
		'Devourer_Bite',
		'Devourer_Siege',
		'Dismount_Siege_Devourer',
		'HYAHHHHH%21',
		'Siege_Devourer_Feast',
		'Siege_Devourer_Swipe'
	);
	
	var enabled = 3;
	
	
/* =========================================================== *\
** Start basic function definitions.                           **
\* =========================================================== */
	function launch() {
			popup = new skillCheck;
			document.onmousemove = popup.doMove;
		
			fixer = new pageManager;
			fixer.fixLinks();
	}
	
	function ds(skill) {
			if (enabled > 0) {
				popup = new skillCheck;
				popup.create(skill);
			}
	}
	
	function de() {
			popup = new skillCheck;
			popup.destroy();
	}
	
	function ajaxGet(page, caller) {
		page_request = false;
		var root = 'http://wiki.guildwars.com/api.php?action=query&prop=revisions&format=txtfm&redirects&rvprop=content&titles=';
		
		if (window.XMLHttpRequest)
			page_request = new XMLHttpRequest();
		else if (window.ActiveXObject){ 
			try {
			page_request = new ActiveXObject("Msxml2.XMLHTTP");
			} 
			catch (e){
				try{
				page_request = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch (e){}
			}
		}
		else
		{
			return false;
		}
		
		var url = root + page;
		
		page_request.onreadystatechange = function() {
			if (page_request.readyState == 4) {
				 if ((page_request.status) && (page_request.status == 200)) {
					 var pageContents = page_request.responseText;
					
					caller.contents = pageContents;
					caller.skillUpdate(page);
				 } else {
					if (enabled == 1) {
						alert("SkillCheck Error: \n\nSkillCheck has been unable to communicate with the server over the last several attempts and has been disabled for this page. \n\nIf you have solved the problem, simply refresh the page to reactivate it.");
						enabled = 0;
					}
					else
					{
						/*alert("SkillCheck Error: \n\nThe page request failed because an invalid response code was received from the browser (code: " + page_request.status + ").\n\nThis is usually caused by a problem with your internet connection or firewall, but may also be caused by an issue with the GWW servers. If you repeatedly get this error, contact User:Ale_jrb.");*/
						enabled = enabled - 1;
					}
					
					return false;
				 }
			}
		}
		//page_request.overrideMimeType('text/xml');
		page_request.open('GET', url, true);
		page_request.send(null);
	}
	
	function ajaxGetImage(page, caller) {
		page_request = false;
		var root = 'http://wiki.guildwars.com/api.php?action=query&prop=imageinfo&format=txtfm&iiprop=url&titles=';
		
		if (window.XMLHttpRequest)
			page_request = new XMLHttpRequest();
		else if (window.ActiveXObject){ 
			try {
			page_request = new ActiveXObject("Msxml2.XMLHTTP");
			} 
			catch (e){
				try{
				page_request = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch (e){}
			}
		}
		else
		{
			return false;
		}
		
		var url = root + page;
		
		page_request.onreadystatechange = function() {
			if (page_request.readyState == 4) {
				 if ((page_request.status) && (page_request.status == 200)) {
					 var pageContents = page_request.responseText;
					
					caller.imageUrl = pageContents;
					caller.showImage();
				 } else {
					return false;
				 }
			}
		}
		page_request.open('GET', url, true);
		page_request.send(null);
	}
	
	function getAllElementsByClassName(searchClass, node, tag) {
		var classElements = new Array();
		if ( node == null )
			node = document;
		if ( tag == null )
			tag = '*';
		var els = node.getElementsByTagName(tag);
		var elsLen = els.length;
		var pattern = new RegExp("(^|\\\\s)"+searchClass+"(\\\\s|$)");
		for (p = 0, l = 0; p < elsLen; p++) {
			if ( pattern.test(els[p].className) ) {
				classElements[l] = els[p];
				l++;
			}
		}
		return classElements;
	}
	
	function left(str, n){
			if (n <= 0)
				return '';
			else if (n > String(str).length)
				return str;
			else
				return String(str).substring(0,n);
	}
	
	function right (str, n){
			if (n <= 0)
			   return "";
			else if (n > String(str).length)
			   return str;
			else {
			   var iLen = String(str).length;
			   return String(str).substring(iLen, iLen - n);
			}
	}

/* =========================================================== *\
** Start class and OO definitions.                             **
\* =========================================================== */
	function pageManager() {
			this.fixLinks = function() {
					var linksArray = document.links;
				
					for (var i = 0; i < linksArray.length; i ++) {
							var linkHref = linksArray[i].href;
							
							var skillName = this.extractSkill(linkHref);
							
							if (this.checkSkillArray(skillName) == true) {
										document.links[i].onmouseover = new Function("ds('"+skillName+"')");
										document.links[i].onmouseout = new Function("de()");
										document.links[i].title = '';
							}
					}
			}
			
			this.checkSkillArray = function(skill) {
					// accept PvP versions
					if ( right( skill, 6 ) == '_(PvP)' ) {
						skill = left( skill, skill.length - 6 );
					}
					
					for (var j = 0; j < skillArray.length; j ++) {
							if (skill == skillArray[j]) {
								return true;
							}
					}
					
					return false;
			}
			
			this.extractSkill = function(href)  {
					if ((href.indexOf('.jpg') >= 0) || (href.indexOf('.png') >= 0)) {
							var skillName = right(href, href.length - 36);
							skillName = left (skillName, skillName.length - 4);
														
							return skillName;
					}
					else
					{
							var skillName = right(href, href.length - 31);
														
							return skillName;
					}
			}
			
	}



	function skillCheck() {
			this.contents = '';
			this.imageUrl = 0;
		
			this.create = function(skill) {
					var skill    = skill;
					var skillRef = 'sc_' + skill;
					
					this.div              	     = document.createElement("div");
					var title            	     = skillRef;
					this.div.id           		 = skillRef;
					this.div.className     		 = "skillcheck_skill";
					this.div.style.position		 = "absolute";
					
					var cont = ajaxGet(skill, this);
					
						var dwdata = '<div style="border: 1px solid #BBBBBB; padding: 3px; background-color: #F0F0F0; width: 400px; height: 100px;">'
						dwdata += '<strong><div style="position: relative; left: 40px;">Loading data - please wait...</div></strong><br /><br /><div style="font-size: 80%;">If this message does not disappear after several seconds, there may be a problem with your internet connection.</div>';
						dwdata += '</div>';
						this.div.innerHTML = dwdata;
						
						document.getElementById('bodyContent').appendChild(this.div);
			}
			
			this.skillUpdate = function(skillname) {
					var cont = this.skillParse(this.contents, skillname);
					
					var dwdata = '<div style="border: 1px solid #BBBBBB; padding: 3px; background-color: #F0F0F0; width: 400px; height: 100px;">'
					dwdata += cont;
					dwdata += '</div>';
					this.div.innerHTML = dwdata;
			}
			
			this.showImage = function() {
					var imgDiv = document.getElementById('skillCheckImg');
					
					if (this.imageUrl != 0) {
						regex = /\[url\] *=&gt; *<a href="(.+)">/i;
						var t = this.imageUrl.match(regex);
						if (t != null) { this.imageUrl = RegExp.$1; } else { try { imgDiv.innerHTML = 'Failed to retrieve image'; } catch(e) {  } return false; }
						
						var imgDat = '<img src="'+this.imageUrl+'" />';
						
						try { imgDiv.innerHTML = imgDat; } catch(e) {  }
					}
			}
			
			this.skillParse = function(data, skillname) {
					// Retrieve the revision content from the API returned data.
					data = data.substr(data.indexOf('[*] =&gt; '));
					if ( data.indexOf('Acquisition') != -1 ) {
						data = data.substr(0, data.indexOf('Acquisition'));
					}
					
					// Fix any fractions!
					data = data.replace("{{1/4}}", "<big>&#188;</big>");
					data = data.replace("{{1/2}}", "<big>&frac12;</big>");
					data = data.replace("{{3/4}}", "<big>&#190;</big>");
					
					// We have the data - use regexes to extract what we need.
					regex = /name *= *(.+)/i;
					var t = data.match(regex);
					if (t != null) { skillnameH = RegExp.$1; } else { skillnameH = 0; }
					regex = /profession *= *(.+)/i;
					var t = data.match(regex);
					if (t != null) { profession = RegExp.$1; } else { profession = ''; }
					regex = /attribute *= *(.+)/i;
					var t = data.match(regex);
					if (t != null) { attribute = RegExp.$1; } else { attribute = 'No attribute'; }
					regex = /type *= *(.+)/i;
					var t = data.match(regex);
					if (t != null) { type = RegExp.$1; } else { type = ''; }
					regex = /campaign *= *(.+)/i;
					var t = data.match(regex);
					if (t != null) { campaign = RegExp.$1; } else { campaign = ''; }
					
					regex = /energy *= *(.+)/i;
					var t = data.match(regex);
					if (t != null) { energy = RegExp.$1; } else { energy = 0; }
					regex = /recharge *= *(.+)/i;
					var t = data.match(regex);
					if (t != null) { recharge = RegExp.$1; } else { recharge = 0; }
					regex = /activation *= *(.+)/i;
					var t = data.match(regex);
					if (t != null) { casttime = RegExp.$1; } else { casttime = 0; }
					regex = /sacrifice *= *(.+)/i;
					var t = data.match(regex);
					if (t != null) { sacrifice = RegExp.$1; } else { sacrifice = 0; }
					regex = /adrenaline *= *(.+)/i;
					var t = data.match(regex);
					if (t != null) { adrenaline = RegExp.$1; } else { adrenaline = 0; }
					regex = /upkeep *= *(.+)/i;
					var t = data.match(regex);
					if (t != null) { upkeep = RegExp.$1; } else { upkeep = 0; }
					regex = /exhaustion *= *(.+)/i;
					var exhaustion = data.match(regex);
					
					regex = /description *=(?: *(?:\n)*? *)[\s]?(.+)(?:(?:\n)*?\|)??/i;
					var t = regex.exec(data);
					if (t != null) { description = t[1]; } else { description = ''; }
					
					// We have all the required data. Now, format the links so they look nice :).
					regex = /\[\[(?:[^\[\]\{\}\|]*?\|)?([^\[\]\{\}\|]*){1}\]\]([a-z]*)/ig;
					description = description.replace(regex, "<a href=\"#\">$1$2</a>");
					description = description.replace(/'''/g, '');
					
					// Because of the annoyingly complicated attribute system, we need to work out the values to show the user.
					matches = description.match(/\{\{gr\|[0-9]+\|[0-9]+(\|[0-9]*)?\}\}/g);
					if (matches != null) {
						for (var i = 0; i < matches.length; i ++) {
						
							regex = /\{\{gr\|([0-9]+)\|([0-9]+)(\|[0-9]*)?\}\}/i;
							var t = description.match(regex);
							var data1 = RegExp.$1;
							var data2 = RegExp.$2;
							
							var datam = Math.round(parseInt(data1) + (12 * ((parseInt(data2) - parseInt(data1)) / 15)));
							
							var replaceWith = '<span style="color: green; font-weight: bold;">' + data1 + '...' + datam + '...' + data2 + '</span>';
							description = description.replace(regex, replaceWith);
						}
					}
					
					matches = description.match(/\{\{gr2\|[0-9]+\|[0-9]+\}\}/g);
					if (matches != null) {
						for (var i = 0; i < matches.length; i ++) {
						
							regex = /\{\{gr2\|([0-9]+)\|([0-9]+)\}\}/i;
							var t = description.match(regex);
							var data1 = RegExp.$1;
							var data2 = RegExp.$2;
													
							var replaceWith = '<span style="color: green; font-weight: bold;">' + data1 + '...' + data2 + '</span>';
							description = description.replace(regex, replaceWith);
						}
					}
					
					// Create the infobox.
					var offset = 0;
					
					// Image
					var endString = '<div id="skillCheckImg" style="position: absolute; left: 10px; top: 10px; width: 66px; height: 64px; overflow: hidden; font-size: 0.8em; text-align: center;"></div>';
					
					var imageCode = 'Image:'+skillname+'.jpg';
					ajaxGetImage(imageCode, this);
					
					// Base info
					endString += '<div style="white-space: nowrap; overflow: hidden; background-color: #F8F8F8; height: 16px; width: 96px; font-size: 0.8em; text-align: center; position: absolute; left: 0px;   top: 90px; border: 1px solid #BBBBBB; margin-top: -2px; padding-bottom: 2px; padding-left: 2px; padding-right: 2px;">'+profession+'</div>';
					endString += '<div style="white-space: nowrap; overflow: hidden; background-color: #F8F8F8; height: 16px; width: 96px; font-size: 0.8em; text-align: center; position: absolute; left: 101px; top: 90px; border: 1px solid #BBBBBB; margin-top: -2px; padding-bottom: 2px; padding-left: 3px; padding-right: 3px;">'+attribute+'</div>';
					endString += '<div style="white-space: nowrap; overflow: hidden; background-color: #F8F8F8; height: 16px; width: 96px; font-size: 0.8em; text-align: center; position: absolute; left: 204px; top: 90px; border: 1px solid #BBBBBB; margin-top: -2px; padding-bottom: 2px; padding-left: 3px; padding-right: 3px;">'+type+'</div>';
					endString += '<div style="white-space: nowrap; overflow: hidden; background-color: #F8F8F8; height: 16px; width: 95px; font-size: 0.8em; text-align: center; position: absolute; left: 307px; top: 90px; border: 1px solid #BBBBBB; margin-top: -2px; padding-bottom: 2px; padding-left: 2px; padding-right: 2px;">'+campaign+'</div>';
					
					// Description
					endString += '<div style="position: absolute; top: 3px; left: 92px; max-height: 82px; overflow: hidden; font-size: 0.8em; line-height: 1em; width: 230px;"><div style="padding-bottom: 1px; text-decoration: underline;">'+skillnameH+'</div>'+description+'</div>';
					
					// Stats
					if (sacrifice != 0) 		{ temp = offset; endString += '<div style="align: right; position: absolute; right: 20px; top: '+ ((temp * 20) + (temp * 1) + 2) +'px;">'+sacrifice+' <img src="http://wiki.guildwars.com/images/7/78/Tango-sacrifice.png"</div>'; offset ++; }
					if (upkeep != 0) 			{ temp = offset; endString += '<div style="align: right; position: absolute; right: 20px; top: '+ ((temp * 20) + (temp * 1) + 2) +'px;">'+upkeep+' <img src="http://wiki.guildwars.com/images/0/01/Tango-upkeep.png"</div>'; offset ++; }
					if (energy != 0) 			{ temp = offset; endString += '<div style="align: right; position: absolute; right: 20px; top: '+ ((temp * 20) + (temp * 1) + 2) +'px;">'+energy+' <img src="http://wiki.guildwars.com/images/b/be/Tango-energy.png"</div>'; offset ++; }
					if (adrenaline != 0) 		{ temp = offset; endString += '<div style="align: right; position: absolute; right: 20px; top: '+ ((temp * 20) + (temp * 1) + 2) +'px;">'+adrenaline+' <img src="http://wiki.guildwars.com/images/0/0d/Tango-adrenaline.png"</div>'; offset ++; }
					if (casttime != 0) 			{ temp = offset; endString += '<div style="align: right; position: absolute; right: 20px; top: '+ ((temp * 20) + (temp * 1) + 2) +'px;">'+casttime+' <img src="http://wiki.guildwars.com/images/a/aa/Tango-activation-darker.png"</div>'; offset ++; }
					if (recharge != 0 )			{ temp = offset; endString += '<div style="align: right; position: absolute; right: 20px; top: '+ ((temp * 20) + (temp * 1) + 2) +'px;">'+recharge+' <img src="http://wiki.guildwars.com/images/f/f4/Tango-recharge-darker.png"</div>'; offset ++; }
					if (exhaustion != null)		{ temp = offset; endString += '<div style="align: right; position: absolute; right: 20px; top: '+ ((temp * 20) + (temp * 1) + 2) +'px;"><img src="http://wiki.guildwars.com/images/3/38/Tango-exhaustion.png"</div>'; offset ++; }
										
					return endString;
			}
			
			this.doMove = function(e) {
					e			= e || window.event;
					var el 		= getAllElementsByClassName('skillcheck_skill');
					var div 	= el[0];
					
					if (div) {
						if (e.pageX || e.pageY) {
								var x = e.pageX; 
								var y = e.pageY;
						}
						else 
						{
								var x = e.clientX + document.body.scrollLeft - document.body.clientLeft;
								var y = e.clientY + document.body.scrollTop  - document.body.clientTop;
						}
						
						var width = window.innerWidth;
						
						if (width < x + 438) {
								div.style.left = width - 145 - 438 + "px";
						}
						else
						{
								div.style.left = x - 145 + "px";	
						}
						
						div.style.top  = y - 20 + "px";
					}
			}
			
			this.destroy = function() {
					var els = getAllElementsByClassName('skillcheck_skill');
					
					for (k = 0; k < els.length; k ++) {
							var div = els[k];
							div.parentNode.removeChild(div);
					}
			}
	}
	
	
/* =========================================================== *\
** Run SkillCheck.                                             **
\* =========================================================== */
	hookEvent('load', launch);