/* GENERAL FUNCTIONS */

function GetObj( id ) {
	if ( document.getElementById ) {
		return document.getElementById( id );
	} else if ( document.all ) {
		return document.all[id];
	} else if ( document.layers ) {
		if ( document.layers[id] ) {
			return document.layers[id]
		} else {
			return null;
		}
	}
}

/* CALENDAR TOOLTIP FUNCTIONS */

function ShowRaid( loc, time ) {
	var TT = GetObj( "ClearedZonesToolTip" );
	if ( time == "N/A" || time == "EVENT" ) { GetObj( "ToolTipText" ).innerHTML = loc; }
	else { GetObj( "ToolTipText" ).innerHTML = "Location: " + loc + "<br>Time: " + time; }
	TT.style.display = "";
}

function HideRaid() {
	var TT = GetObj( "ClearedZonesToolTip" );
	TT.style.display = "none";
}

/* PROGRESSION TOOLTIP FUNCTIONS */

function ShowCleared( zone ) {
	var TT = GetObj( "ClearedZonesToolTip" );
	GetObj( "ToolTipText" ).innerHTML = GetZoneProgress( zone );
	TT.style.display = "";
}

function KeepVisible() {
	var TT = GetObj( "ClearedZonesToolTip" );
	TT.style.display = "";
}

function HideCleared() {
	var TT = GetObj( "ClearedZonesToolTip" );
	TT.style.display = "none";
}

function GetZoneProgress( zone ) {
	var BossList = "";
	switch( zone ) {
		case 'tier4' :
			BossList+= "<b>Karazhan</b><br>";
			BossList+= "<span class='beaten'>Attumen the Huntsman<br>";
			BossList+= "Moroes<br>";
			BossList+= "Maiden of Virtue<br>";
			BossList+= "Opera Event<br>";
			BossList+= "The Curator<br>";
			BossList+= "Terestian Illhoof<br>";
			BossList+= "Shade of Aran<br>";
			BossList+= "Netherspite<br>";
			BossList+= "Chess Event<br>";
			BossList+= "Prince Malchezaar<br>";
			BossList+= "Nightbane</span><br><br>";
			BossList+= "<b>Zul'Aman</b><br>";
			BossList+= "<span class='beaten'>Nalorakk<br>";
			BossList+= "Akil'zon<br>";
			BossList+= "Jan'alai<br>";
			BossList+= "Halazzi<br>";
			BossList+= "Hex Lord Malacrass<br>";
			BossList+= "Zul'jin</span><br><br>";
			BossList+= "<b>Gruul's Lair</b><br>";
			BossList+= "<span class='beaten'>High King Maulgar<br>";
			BossList+= "Gruul the Dragonkiller</span><br><br>";
			BossList+= "<b>Magtheridon's Lair</b><br>";
			BossList+= "<span class='beaten'>Magtheridon</span><br><br>";
			BossList+= "<b>World Bosses</b><br>";
			BossList+= "<span class='beaten'>Doom Lord Kazzak<br>";
			BossList+= "Doomwalker</span>";
			break;
		case 'tier5' :
			BossList+= "<b>Serpentshrine Cavern</b><br>";
			BossList+= "<span class='beaten'>Hydross the Unstable<br>";
			BossList+= "The Lurker Below<br>";
			BossList+= "Leotheras the Blind<br>";
			BossList+= "Fathom-Lord Karathress<br>";
			BossList+= "Morogrim Tidewalker<br>";
			BossList+= "Lady Vashj</span><br><br>";
			BossList+= "<b>The Eye</b><br>";
			BossList+= "<span class='beaten'>Al'ar<br>";
			BossList+= "Void Reaver<br>";
			BossList+= "High Astromancer Solarian<br>";
			BossList+= "Kael'thas Sunstrider</span><br>";
			break;
		case 'tier6' :
			BossList+= "<b>Battle of Mount Hyjal</b><br>";
			BossList+= "<span class='beaten'>Rage Winterchill<br>";
			BossList+= "Anetheron<br>";
			BossList+= "Kaz'rogal<br>";
			BossList+= "Azgalor<br>";
			BossList+= "Archimonde</span><br><br>";
			BossList+= "<b>Black Temple</b><br>";
			BossList+= "<span class='beaten'>High Warlord Naj'entus<br>";
			BossList+= "Supremus<br>";
			BossList+= "Shade of Akama<br>";
			BossList+= "Teron Gorefiend<br>";
			BossList+= "Gurtogg Bloodboil<br>";
			BossList+= "Reliquary of Souls<br>";
			BossList+= "Mother Shahraz<br>";
			BossList+= "Illidari Council<br>";
			BossList+= "Illidan Stormrage</span><br><br>";
			BossList+= "<b>Sunwell Plateau</b><br>";
			BossList+= "<span class='beaten'>Kalecgos<br>";
			BossList+= "Brutallus</span><br>";
			BossList+= "Felmyst<br>";
			BossList+= "Eredar Twins<br>";
			BossList+= "M'uru<br>";
			BossList+= "Kil'jaeden<br>";
			break;
		case 'naxx' :
			BossList+= "<b>Naxxramas (10)</b><br>";
			BossList+= "<span class='beaten'>The Arachnid Quarter<br>The Plague Quarter<br>The Military Quarter<br>The Construct Quarter<br>Sapphiron<br>Kel'Thuzad</span><br><br>";
			BossList+= "<b>Naxxramas (25)</b><br>";
			BossList+= "<span class='beaten'>The Arachnid Quarter<br>The Plague Quarter<br>The Military Quarter<br>The Construct Quarter<br>Sapphiron<br>Kel'Thuzad</span>";
			break;
		case 'obsid' :
			BossList+= "<b>Obsidian Sanctum (10)</b><br>";
			BossList+= "<span class='beaten'>Sartharion<br>Sartharion &amp; 1 Drake<br>Sartharion &amp; 2 Drakes<br>Sartharion &amp; 3 Drakes</span><br><br>";
			BossList+= "<b>Obsidian Sanctum (25)</b><br>";
			BossList+= "<span class='beaten'>Sartharion<br>Sartharion &amp; 1 Drake<br>Sartharion &amp; 2 Drakes</span><br>Sartharion &amp; 3 Drakes";
			break;
		case 'eye' :
			BossList+= "<b>Eye of Eternity (10)</b><br>";
			BossList+= "<span class='beaten'>Malygos</span><br><br>";
			BossList+= "<b>Eye of Eternity (25)</b><br>";
			BossList+= "<span class='beaten'>Malygos</span>";
			break;
		case 'ulduar' :
			BossList+= "Flame Leviathan (<span class='beaten'>10</span>/10H/25/25H)";
			BossList+= "Ignis the Furnace Master (<span class='beaten'>10</span>/10H/25/25H)";
			BossList+= "Razorscale (<span class='beaten'>10</span>/10H/25/25H)";
			BossList+= "XT-002 Deconstructor (<span class='beaten'>10</span>/10H/25/25H)";
			BossList+= "The Iron Council (<span class='beaten'>10</span>/10H/25/25H)";
			BossList+= "Kologarn (<span class='beaten'>10</span>/10H/25/25H)";
			BossList+= "Auriaya (<span class='beaten'>10</span>/10H/25/25H)";
			BossList+= "Hodir (<span class='beaten'>10</span>/10H/25/25H)";
			BossList+= "Freya (10/10H/25/25H)";
			BossList+= "Thorim (<span class='beaten'>10</span>/10H/25/25H)";
			BossList+= "Mimiron (10/10H/25/25H)";
			BossList+= "General Vezax (10/10H/25/25H)";
			BossList+= "Algalon the Observer (10/10H/25/25H)";
			BossList+= "Yogg-Saron (10/10H/25/25H)";
			break;
	}
	 
	return BossList;
}

function GetCoords( e ) {
	var TT = GetObj( "ClearedZonesToolTip" );
	if (!e) e = window.event; 
	if ( TT.style.display == "" ) {
		if (e.pageX && e.pageY) {
			TT.style.left = e.pageX + 15;
			TT.style.top  = e.pageY + 15;
		} else if (e.clientX && e.clientY) {
			TT.style.left = e.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + 15;
			TT.style.top  = e.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + 15;
		} else {
			TT.style.left = 0;
			TT.style.top = 0;	
		}
	}
}

document.onmousemove = GetCoords;

/* CALENDAR FUNCTIONS */

function ChangeCalendarDate( date ) {
	location.href = "calendar.php?d="+date;
}

/* APPLICATION FORM FUNCTIONS */

function classHandler() {
	classStr = GetObj( "char_class" );
	classVal = classStr.value;
	
	specs = new Array();
	specs[0] = GetObj( "char_spec" );
	specs[1] = GetObj( "char_spec2" );
	
	specs[0].options.length = 0;
	specs[1].options.length = 0;

	if ( classVal != "" ) {
		specs[0].options[0] = new Option( 'Select a spec', '' );
		specs[1].options[0] = new Option( 'No second spec', 'No second spec' );
	}
	
	for ( i = 0; i <= 1; i++ ) {
		switch (classVal) {
			case "Death Knight":
				specs[i].options[1] = new Option( 'Blood Tank', 'Blood Tank' );
				specs[i].options[2] = new Option( 'Blood DPS', 'Blood DPS' );
				specs[i].options[3] = new Option( 'Frost Tank', 'Frost Tank' );
				specs[i].options[4] = new Option( 'Frost DPS', 'Frost DPS' );
				specs[i].options[5] = new Option( 'Unholy Tank', 'Unholy Tank' );
				specs[i].options[6] = new Option( 'Unholy DPS', 'Unholy DPS' );
				specs[i].disabled = false;
				break;
			case "Druid":
				specs[i].options[1] = new Option( 'Balance', 'Balance' );
				specs[i].options[2] = new Option( 'Feral Combat', 'Feral Combat' );
				specs[i].options[3] = new Option( 'Restoration', 'Restoration' );
				specs[i].disabled = false;
				break;
			case "Hunter":
				specs[i].options[1] = new Option( 'Beast Mastery', 'Beast Mastery' );
				specs[i].options[2] = new Option( 'Marksmanship', 'Marksmanship' );
				specs[i].options[3] = new Option( 'Survival', 'Survival' );
				specs[i].disabled = false;
				break;
			case "Mage":
				specs[i].options[1] = new Option( 'Arcane', 'Arcane' );
				specs[i].options[2] = new Option( 'Fire', 'Fire' );
				specs[i].options[3] = new Option( 'Frost', 'Frost' );
				specs[i].disabled = false;
				break;
			case "Paladin":
				specs[i].options[1] = new Option( 'Holy', 'Holy' );
				specs[i].options[2] = new Option( 'Protection', 'Protection' );
				specs[i].options[3] = new Option( 'Retribution', 'Retribution' );
				specs[i].disabled = false;
				break;
			case "Priest":
				specs[i].options[1] = new Option( 'Discipline', 'Discipline' );
				specs[i].options[2] = new Option( 'Holy', 'Holy' );
				specs[i].options[3] = new Option( 'Shadow', 'Shadow' );
				specs[i].disabled = false;
				break;
			case "Rogue":
				specs[i].options[1] = new Option( 'Assassination', 'Assassination' );
				specs[i].options[2] = new Option( 'Combat', 'Combat' );
				specs[i].options[3] = new Option( 'Subtlety', 'Subtlety' );
				specs[i].disabled = false;
				break;
			case "Shaman":
				specs[i].options[1] = new Option( 'Elemental', 'Elemental' );
				specs[i].options[2] = new Option( 'Enhancement', 'Enhancement' );
				specs[i].options[3] = new Option( 'Restoration', 'Restoration' );
				specs[i].disabled = false;
				break;
			case "Warlock":
				specs[i].options[1] = new Option( 'Affliction', 'Affliction' );
				specs[i].options[2] = new Option( 'Demonology', 'Demonology' );
				specs[i].options[3] = new Option( 'Destruction', 'Destruction' );
				specs[i].disabled = false;
				break;
			case "Warrior":
				specs[i].options[1] = new Option( 'Arms', 'Arms' );
				specs[i].options[2] = new Option( 'Fury', 'Fury' );
				specs[i].options[3] = new Option( 'Protection', 'Protection' );
				specs[i].disabled = false;
				break;
			default : 
				specs[i].options[0] = new Option( 'Select a class', '' );
				specs[i].disabled = true;
		}
	}
}
