var colorGreen = "1AFF1A";
var colorYellow = "FFD100";
var colorWhite = "FFFFFF";

function saveTheTemplate() {

	var templateString = "";
	for (i = 0; talent[i]; i++) {
		templateString = templateString + rankTop[i][0]
	}
	
    var w = window.open("","","resizable=1,toolbar=1,width=800,height=600,status=1,scrollbars=1,menubar=1, screenX=100, screenY=100, left=100, top=100");
	w.document.write("<html><body bgcolor=ffffff>");
	w.document.write("<font face = 'arial'><b>Copy the complete URL below:</b><br>");
	w.document.write("http://www.worldofwarcraft.com/info/classes/"+ nlclass +"/talents.html?" +templateString);	
	w.document.write("</font></body></html>");
}

function resetTree(theTree) {

	if (pointsTree[theTree] == 0)
		return;

	rankPoints += pointsTree[theTree];
	pointsTree[theTree] = 0;
	
	document.getElementById(tree[theTree]+'Points').innerHTML = 0;
	document.getElementById(tree[theTree]+'PointsTopRight').innerHTML = 0;							

	for (var y = 0; y < tierNum; y++)
		pointsTier[theTree][y] = 0;
	

	var i;
	var iStop;
	if (theTree == 0)
		i = 0;
	else
		i = treeStartStop[theTree-1] + 1;

	iStop = treeStartStop[theTree];			
	
	while (i <= iStop) {	
		rankTop[i][0] = 0;
		rankTop[i][1] = rank[i][0];
		rankTop[i][2] = rank[i][1];

		document.getElementById("modifyRankTopColor"+ i).style.color = colorWhite;
		document.getElementById("modifyRankTop"+ i).style.color = colorWhite;

		document.getElementById("learnClickRight"+ i).innerHTML = "";				
		document.getElementById("learnClickLeft"+ i).innerHTML = "";

		if (is_win && is_ie4up){
    		document.getElementById('modifyDescriptionTop'+i).innerHTML = rankTop[i][1];
			document.getElementById('modifyDescriptionTopNext'+i).innerHTML = rankTop[i][2];	

			if (talent[i][5]) {
				document.getElementById('requiresTalent'+ i).style.visibility = "visible";	
				document.getElementById('requiresTalent'+ i).style.display = "inline";	
				document.getElementById("arrowYellow"+ i).style.visibility = "hidden";
				document.getElementById("arrowGreen"+ i).style.visibility = "hidden";
			}
			if (talent[i][4] != 1) {
				document.getElementById('requiresPoints'+ i).style.visibility = "visible";
				document.getElementById('requiresPoints'+ i).style.display = "inline";
			}				 
		} else 
    		document.getElementById('modifyDescriptionTop'+i).innerHTML = rankTop[i][1];

		document.getElementById('rankNextTop'+i).style.visibility = "hidden";	
		document.getElementById('rankNextTop'+i).style.display = "none";	
		document.getElementById('modifyRankTopDescription'+i).innerHTML = 0;
		document.getElementById('modifyRankTop'+i).innerHTML = 0;
		document.getElementById('talentThumb'+ i).style.visibility = "hidden";
		document.getElementById('displayRight'+ i).style.visibility = "hidden";
		document.getElementById('displayRight'+ i).style.display = "none";

		document.getElementById('iconOverGreen'+ i).style.visibility = "hidden";
		document.getElementById('iconOverYellow'+ i).style.visibility = "hidden";
		
		if (talent[i][4] == 1 && (!talent[i][5])) {
			document.getElementById("modifyRankTopColor"+ i).style.color = colorGreen;
			document.getElementById("modifyRankTop"+ i).style.color = colorGreen;
			//document.getElementById("learnClickRight"+ i).style.color = colorYellow;
			document.getElementById("learnClickLeft"+ i).style.color = colorGreen;
			//document.getElementById("learnClickRight"+ i).innerHTML = "<br>Right Click to Learn All";
			document.getElementById("learnClickRight"+ i).innerHTML = "";
			document.getElementById("learnClickLeft"+ i).innerHTML = "<br>Left Click to Learn";
		}
		i++;
	}
	
    document.getElementById('levelRequired').innerHTML = rankPointsMax - rankPoints + levelMin - 1;	
	document.getElementById('modifyRankPoints').innerHTML = rankPointsMax - rankPoints;
	document.getElementById('tabPointsAvailable').innerHTML = rankPoints;
	document.getElementById('tabPoints').innerHTML = 0;
	
}

function resetTreeAll() {
	for (var i = 0; i < tree.length; i++) {
		resetTree(i);
	}
}

function getMaxTier(theTree) {
	var maxTier = 0;
	for (var loopMaxTier = 0; loopMaxTier < tierNum; loopMaxTier++) {	
		if (pointsTier[theTree][loopMaxTier] != 0)
			maxTier = loopMaxTier;
	}
	maxTier++;
	return maxTier;
}

function getPointsAboveAndCurrent(theTree, maxTier) {
	var pointsTierTotalAboveAndCurrent = 0;
	var loopPointsTierAbove = 0;
	for (loopPointsTierAbove; loopPointsTierAbove < maxTier; loopPointsTierAbove++) {
		pointsTierTotalAboveAndCurrent += pointsTier[theTree][loopPointsTierAbove];
	}
	return pointsTierTotalAboveAndCurrent;
}
		
function canUnlearn(talentID, clickLeftRight, maxTier) {
	var treeID = talent[talentID][0];
	var maxRank = talent[talentID][2];
	var treePoints = pointsTree[treeID];	
	var necessaryPoints;
	var projectedPoints;
	var pointsAboveAndCurrent;

	if (hasDependentTalentWithPoints(talentID))
		return false;
			
	if (clickLeftRight == 0) { //left click

		if (rankTop[talentID][0] < maxRank) {

			necessaryPoints = (talent[talentID][4] - 1) * 5;
			if (treePoints < necessaryPoints)
				return false;
		
			if (rankPoints == 0)
				return false;		
				
			if (!checkRequiredTalent(talentID) && rankTop[talentID][0] == 0)
				return false;
				
			projectedPoints = pointsAboveAndCurrent++;

		} else {

			return false; 
			/*deleted feature
			pointsAboveAndCurrent = getPointsAboveAndCurrent(treeID, maxTier-1);	
			projectedPoints = pointsAboveAndCurrent - maxRank + pointsTier[treeID][maxTier-1];
			
			for (var thisTier = talent[talentID][4]; thisTier < maxTier; maxTier--) {

				necessaryPoints = (maxTier-1) * 5;
				projectedPoints -= pointsTier[treeID][maxTier-1];

				if (projectedPoints < necessaryPoints)
					return false;		
			}
								*/
		
		}

	} else {	//right click

		if (rankTop[talentID][0] != 0){

			pointsAboveAndCurrent = getPointsAboveAndCurrent(treeID, maxTier-1);	
			projectedPoints = pointsAboveAndCurrent - 1 + pointsTier[treeID][maxTier-1];

			for (var thisTier = talent[talentID][4]; thisTier < maxTier; maxTier--) {

				necessaryPoints = (maxTier-1) *5;		
				projectedPoints -= pointsTier[treeID][maxTier-1];
				if (projectedPoints < necessaryPoints)
					return false;
			}
			
		} else {  //if the rank is 0

			return false;
			/*deleted feature
			necessaryPoints = (talent[talentID][4] - 1) * 5;
			if (treePoints < necessaryPoints)
				return false;		
		
			if (!checkRequiredTalent(talentID))
				return false;
			if (rankPoints < maxRank)
				return false;
			projectedPoints = pointsAboveAndCurrent + maxRank;
			*/
		}
	
	}	
	return true;

}

function getTalentID(talentName) {
	var theTalentID;
	for (theTalentID = 0; talent[theTalentID]; theTalentID++) {
		if (talent[theTalentID][1] == talentName)
			return theTalentID;
	}
}

function getMinLevel(talentID) {
	return ((talent[talentID][4] -1)* 5 + 10);
}

function hasDependentTalentWithPoints(talentID) {

	//var count;
	//if (!(count = hasDependentTalents[talentID]))	//don't do the loop if they don't have any
	//	return false;

	var loopStart;
	var loopStop;
	var theTree = talent[talentID][0];
	loopStart = talentID;
	loopStop = treeStartStop[theTree];	
	
	while (loopStart <= loopStop){	
//	while (loopStart <= loopStop && count > 0){
		if (talent[loopStart][5] && talent[loopStart][5][0] == talentID && rankTop[loopStart][0] != 0)
			return true;
		loopStart++;
//		count--;
	}
	return false;	
	
}

function canTurnGreen(totalPoints, tree, oldMaxTier) {
	var i;
	var necessaryPoints;
	var iStop;
	var thisTier;
	
	if (tree == 0)
		i = 0;
	else
		i = treeStartStop[tree-1] + 1;

	iStop = treeStartStop[tree];
	
	while (i <= iStop) {
	
		thisTier = talent[i][4];

		necessaryPoints = (talent[i][4]-1) * 5;

		if (thisTier <= oldMaxTier+3 || necessaryPoints <= totalPoints){	

			if (is_win && is_ie4up){

				if (talent[i][4] > 1 && totalPoints >= necessaryPoints) {
					document.getElementById("requiresPoints"+ i).style.visibility = "hidden";
					document.getElementById("requiresPoints"+ i).style.display = "none";				
				} else if (talent[i][4] > 1 && totalPoints < necessaryPoints) {
					document.getElementById("requiresPoints"+ i).style.visibility = "visible";
					document.getElementById("requiresPoints"+ i).style.display = "inline";						
				}

				if (talent[i][5] && rankTop[talent[i][5][0]][0] == talent[i][5][1]) {
					document.getElementById("requiresTalent"+ i).style.visibility = "hidden";
					document.getElementById("requiresTalent"+ i).style.display = "none";		
				} else if (talent[i][5] && rankTop[talent[i][5][0]][0] < talent[i][5][1]) {
					document.getElementById("requiresTalent"+ i).style.visibility = "visible";
					document.getElementById("requiresTalent"+ i).style.display = "inline";		
				}
			}		

			var noRequirement = checkRequiredTalent(i);
				
			if ((talent[i][4] * 5) <= totalPoints && 
				talent[i][2] != rankTop[i][0] && 
				noRequirement
				||
				(rankTop[i][0] < talent[i][2] && totalPoints >= necessaryPoints && noRequirement)
				) {
	
				document.getElementById("modifyRankTopColor"+ i).style.color = colorGreen;
				document.getElementById("modifyRankTop"+ i).style.color = colorGreen;

				//document.getElementById("iconOverGreen"+ i).style.visibility = "visible";
				
				if (canUnlearn(i, 0, oldMaxTier)) {
					document.getElementById("learnClickLeft"+ i).innerHTML = "<br>Left Click to Learn";
					document.getElementById("learnClickLeft"+ i).style.color = colorGreen;
					if (talent[i][5])
						document.getElementById("arrowGreen"+ i).style.visibility = "visible";
				} else {
					document.getElementById("learnClickLeft"+ i).innerHTML = "";
				}
				
				if (rankTop[i][0] == 0)	{
					/*deleted feature
					if (canUnlearn(i, 1, oldMaxTier)) {
						//document.getElementById("learnClickRight"+ i).innerHTML = "<br>Right Click to Learn All";
						document.getElementById("learnClickRight"+ i).innerHTML = "";
						document.getElementById("learnClickRight"+ i).style.color = colorYellow;
					} else {
						document.getElementById("learnClickRight"+ i).innerHTML = "";
					}*/
						document.getElementById("learnClickRight"+ i).innerHTML = "";					
				} else {
					if (canUnlearn(i, 1, oldMaxTier)) {
						document.getElementById("learnClickRight"+ i).innerHTML = "<br>Right Click to Unlearn";
						document.getElementById("learnClickRight"+ i).style.color = "red";
					} else {
						document.getElementById("learnClickRight"+ i).innerHTML = "";
					}								
				}				
			} else if (talent[i][2] == rankTop[i][0]) {
				document.getElementById("modifyRankTopColor"+ i).style.color = colorYellow;
				document.getElementById("modifyRankTop"+ i).style.color = colorYellow;

				/*deleted feature
				if (canUnlearn(i, 0, oldMaxTier)) {
					//document.getElementById("learnClickLeft"+ i).innerHTML = "<br>Left Click to Unlearn All";				
					document.getElementById("learnClickLeft"+ i).innerHTML = "";
					document.getElementById("learnClickLeft"+ i).style.color = "white";
				} else {				
					document.getElementById("learnClickLeft"+ i).innerHTML = "";
				}*/

				document.getElementById("learnClickLeft"+ i).innerHTML = "";
				
				if (canUnlearn(i, 1, oldMaxTier))
				{				
					document.getElementById("learnClickRight"+ i).innerHTML = "<br>Right Click to Unlearn";
					document.getElementById("learnClickRight"+ i).style.color = "red";
				} else {
					document.getElementById("learnClickRight"+ i).innerHTML = "";
				}
				
			} else {
				document.getElementById("modifyRankTopColor"+ i).style.color = colorWhite;
				document.getElementById("modifyRankTop"+ i).style.color = colorWhite;

				document.getElementById("iconOverGreen"+ i).style.visibility = "hidden";
				
				if (talent[i][5])
					document.getElementById("arrowGreen"+ i).style.visibility = "hidden";
				
				document.getElementById("learnClickRight"+ i).innerHTML = "";				
				document.getElementById("learnClickLeft"+ i).innerHTML = "";
			}
		}
		i++;
	}	

	i=0;
	if (rankPoints == 0) {
		while (talent[i]){
			if (rankTop[i][0] == 0) {
				document.getElementById("modifyRankTopColor"+ i).style.color = colorWhite;		
				document.getElementById("modifyRankTop"+ i).style.color = colorWhite;
				document.getElementById("iconOverGreen"+ i).style.visibility = "hidden";								
			}
			i++;
		}	
	}
	
}

function checkRequiredTalent(talentID) {

	var reqTalent;
	if (reqTalent = talent[talentID][5]) {
		reqTalentID = reqTalent[0];
		reqTalentPoints = reqTalent[1];
		if (rankTop[reqTalentID][0] != reqTalentPoints)
			return false;
	}
	return true;
}

function rankTopOnClick(talentID) {

	var theTree = talent[talentID][0];
	var oldMaxTier = getMaxTier(theTree);

	if (!canUnlearn(talentID, 0, oldMaxTier))
		return;
		
	maxRank = talent[talentID][2];					//maximum rank possible	
	var theTier = talent[talentID][4];		
	var theTierIndex = theTier - 1;
	var rankString = rankTop[talentID][1];
	
	if (rankTop[talentID][0] < maxRank)					//see if you hit max rank
	{

		rankTop[talentID][1] = rank[talentID][rankTop[talentID][0]];
		rankTop[talentID][0]++;						//if you haven't hit max rank, increment
		rankTop[talentID][2] = rank[talentID][(rankTop[talentID][0])];
		rankPoints--;

		if (rankTop[talentID][0] != maxRank) {
		  	if (is_ie4up){
				document.getElementById("rankNextTop"+ talentID).style.visibility = "visible";			
				document.getElementById("rankNextTop"+ talentID).style.display = "inline";
			} else
				rankString = rankTop[talentID][1] +"<p><font color=ffffff>Next Rank:</font><br>"+ rankTop[talentID][2];

			document.getElementById('iconOverGreen'+ talentID).style.visibility = "visible";
		} else {
		  	if (is_ie4up){
				document.getElementById("rankNextTop"+ talentID).style.visibility = "hidden";			
				document.getElementById("rankNextTop"+ talentID).style.display = "none";			
			} else
				rankString = rankTop[talentID][1];			

			document.getElementById('iconOverYellow'+ talentID).style.visibility = "visible";
		}

		if (talent[talentID][5])
			document.getElementById("arrowYellow"+ talentID).style.visibility = "visible";
		
		//keep track of points in the tier		
		pointsTree[theTree]++;
		pointsTier[theTree][theTierIndex] = pointsTier[theTree][theTierIndex] + 1;
		document.getElementById("talentThumb"+ talentID).style.visibility = "visible";
		
	} else {
/*
		rankTop[talentID][0] = 0;						//otherwise, go back to 1
		rankTop[talentID][1] = rank[talentID][0];
		rankPoints += maxRank;

		//keep track of points in the tier		
		pointsTree[theTree] -= maxRank;
		pointsTier[theTree][theTierIndex] -= maxRank;

	  	if (is_win && is_ie4up){
			document.getElementById("rankNextTop"+ talentID).style.visibility = "hidden";					
			document.getElementById("rankNextTop"+ talentID).style.display = "none";
		} else 
			rankString = rankTop[talentID][1];

		document.getElementById("talentThumb"+ talentID).style.visibility = "hidden";
		document.getElementById("modifyRankTopColor"+ talentID).style.color = colorWhite;

		document.getElementById('iconOverGreen'+ talentID).style.visibility = "hidden";			

		document.getElementById('iconOverYellow'+ talentID).style.visibility = "hidden";	
		
		if (talent[talentID][5])
			document.getElementById("arrowYellow"+ talentID).style.visibility = "hidden";
		*/		
	}
	
  	if (is_win && is_ie4up){
		document.getElementById('modifyDescriptionTop'+talentID).innerHTML = rankTop[talentID][1];	
		document.getElementById('modifyDescriptionTopNext'+talentID).innerHTML = rankTop[talentID][2];
	} else 
		document.getElementById('modifyDescriptionTop'+talentID).innerHTML = rankString;	

	if (pointsTree[theTree] == 1)
	    document.getElementById('letterS'+theTree).innerHTML = "";	
	else
	    document.getElementById('letterS'+theTree).innerHTML = "s";	
	
	if (rankTop[talentID][0] == 0) {
	    document.getElementById('displayRight'+talentID).style.visibility = "hidden";
	    document.getElementById('displayRight'+talentID).style.display = "none";
	} else {
	    document.getElementById('displayRight'+talentID).style.visibility = "visible";
	    document.getElementById('displayRight'+talentID).style.display = "inline";
	}	


    document.getElementById('modifyRankTop'+talentID).innerHTML = rankTop[talentID][0];
    document.getElementById('modifyRankTopDescription'+talentID).innerHTML = rankTop[talentID][0];
    document.getElementById('modifyRankRight'+talentID).innerHTML = rankTop[talentID][0];	
    document.getElementById('modifyRankPoints').innerHTML = rankPointsMax - rankPoints;
    document.getElementById('levelRequired').innerHTML = rankPointsMax - rankPoints + levelMin - 1;	
    document.getElementById(tree[theTree]+'Points').innerHTML = pointsTree[theTree];
    document.getElementById(tree[theTree]+'PointsTopRight').innerHTML = pointsTree[theTree];
    document.getElementById('tabPointsAvailable').innerHTML = rankPoints;	
    document.getElementById('tabPoints').innerHTML = pointsTree[theTree];		
	oldMaxTier = getMaxTier(theTree);
	canTurnGreen(pointsTree[theTree], theTree, oldMaxTier);			
}

function rankTopOnRightClick(talentID) {

	var theTree = talent[talentID][0];				
	var oldMaxTier = getMaxTier(theTree);

	if (!canUnlearn(talentID, 1, oldMaxTier))
		return;		
		
	var maxRank = talent[talentID][2];					//maximum rank possible
	var theTier = talent[talentID][4];	
	var theTierIndex = theTier - 1;	
	var rankString = rankTop[talentID][1];

	
	if (rankTop[talentID][0] > 0) {
	
		rankTop[talentID][0]--;						
		if (rankTop[talentID][0]-1 != -1) {
			rankTop[talentID][1] = rank[talentID][(rankTop[talentID][0]-1)];
			rankTop[talentID][2] = rank[talentID][(rankTop[talentID][0])];
			rankString = rankTop[talentID][1] +"<p><font color=ffffff>Next Rank:</font><br>"+ rankTop[talentID][2];			
			
			if (is_ie4up){
				document.getElementById("rankNextTop"+ talentID).style.visibility = "visible";
				document.getElementById("rankNextTop"+ talentID).style.display = "inline";
			}
			
		} else {
			rankTop[talentID][1] = rank[talentID][rankTop[talentID][0]];						
			rankString = rankTop[talentID][1];			
			if (is_ie4up){
				document.getElementById("rankNextTop"+ talentID).style.visibility = "hidden";
				document.getElementById("rankNextTop"+ talentID).style.display = "none";
			}
		}

		rankPoints++;
		
		//keep track of points in the tier		
		pointsTree[theTree]--;					
		pointsTier[theTree][theTierIndex]--;

		document.getElementById('iconOverYellow'+ talentID).style.visibility = "hidden";			
		document.getElementById('iconOverGreen'+ talentID).style.visibility = "visible";
		
		if (rankTop[talentID][0] == 0) {
			document.getElementById('iconOverGreen'+ talentID).style.visibility = "hidden";
			document.getElementById('iconOverYellow'+ talentID).style.visibility = "hidden";
			document.getElementById("talentThumb"+ talentID).style.visibility = "hidden";
			
			if (talent[talentID][5])
				document.getElementById("arrowYellow"+ talentID).style.visibility = "hidden";
			
		}
		
	} else {
/*
		rankTop[talentID][1] = rank[talentID][rank[talentID].length-1];
		rankTop[talentID][0] = maxRank;						//if you haven't hit max rank, increment
		rankPoints -= maxRank;

		//keep track of points in the tier		
		pointsTree[theTree] += maxRank;
		pointsTier[theTree][theTierIndex] +=maxRank;

		document.getElementById("talentThumb"+ talentID).style.visibility = "visible";		
		document.getElementById('iconOverGreen'+ talentID).style.visibility = "visible";			
		document.getElementById('iconOverYellow'+ talentID).style.visibility = "visible";			
		if (talent[talentID][5])
			document.getElementById("arrowYellow"+ talentID).style.visibility = "visible";
*/		
	}
	
	if (rankTop[talentID][0] == 0) {
	    document.getElementById('displayRight'+talentID).style.visibility = "hidden";
	    document.getElementById('displayRight'+talentID).style.display = "none";
	} else {
		document.getElementById('displayRight'+talentID).style.visibility = "visible";
		document.getElementById('displayRight'+talentID).style.display = "inline";
	}		

	if (is_win && is_ie4up) {
	    document.getElementById('modifyDescriptionTop'+talentID).innerHTML = rankTop[talentID][1];
		document.getElementById('modifyDescriptionTopNext'+talentID).innerHTML = rankTop[talentID][2];	
	} else 
	    document.getElementById('modifyDescriptionTop'+talentID).innerHTML = rankString;

	if (pointsTree[theTree] == 1)
	    document.getElementById('letterS'+theTree).innerHTML = "";	
	else
	    document.getElementById('letterS'+theTree).innerHTML = "s";
		
    document.getElementById('modifyRankTop'+talentID).innerHTML = rankTop[talentID][0];
    document.getElementById('modifyRankTopDescription'+talentID).innerHTML = rankTop[talentID][0];
    document.getElementById('modifyRankRight'+talentID).innerHTML = rankTop[talentID][0];
    document.getElementById('modifyRankPoints').innerHTML = rankPointsMax - rankPoints;	
    document.getElementById('levelRequired').innerHTML = rankPointsMax - rankPoints + levelMin - 1;	
    document.getElementById(tree[theTree] +'Points').innerHTML = pointsTree[theTree];	
    document.getElementById(tree[theTree]+'PointsTopRight').innerHTML = pointsTree[theTree];	
    document.getElementById('tabPoints').innerHTML = pointsTree[theTree];	
    document.getElementById('tabPointsAvailable').innerHTML = rankPoints;		
	oldMaxTier = getMaxTier(theTree);
	canTurnGreen(pointsTree[theTree], theTree, oldMaxTier);
	
}

//changes the talents displayed on the page
function changeTree(treeID) {

	var showMe = tree[treeID];
	/*
	This functions first hides all the trees and unbolds all the tabs
	Then, it shows the tree the user selected and bolds the tab too
	*/
	var a;
	for (a = 0; a < tree.length; a++)  //hide all the tables and unbold all the tabs
	{
		var hideAllTrees = tree[a]+"Tree";
		var hideAllTrees2 = tree[a]+"Tree2";
		var unboldAllTabs = tree[a]+"Tab";
		var unboldAllTabs2 = tree[a]+"Tab2";
		
		var hideUs = document.getElementById(hideAllTrees);
		hideUs.style.visibility = "hidden";  //hide the info
		hideUs.style.display = "none";  //hide the info

		hideUs = document.getElementById(hideAllTrees2);
		hideUs.style.visibility = "hidden";  //hide the info
		hideUs.style.display = "none";  //hide the info
		
		var unboldMe = document.getElementById(unboldAllTabs);
		unboldMe.style.fontWeight = "normal";

		var unboldMe2 = document.getElementById(unboldAllTabs2);
		unboldMe2.style.fontWeight = "normal";

		document.getElementById("tabUp"+ a).style.visibility = "visible";
		
	}
	
	//set the names
	showTree = showMe + "Tree";			//div name for the entire freaking talent tree
	showTree2 = showMe + "Tree2";			//div name for the entire freaking talent tree
	boldTab = showMe + "Tab";			//name of the talent tab text
	boldTab2 = showMe + "Tab2";			//name of the talent tab text
	
	//unhide the table
	var unhideMe = document.getElementById(showTree); //unhide the table you want
	unhideMe.style.visibility = "visible";  //show the info
	unhideMe.style.display = "inline";  //show the info

	unhideMe = document.getElementById(showTree2); //unhide the table you want
	unhideMe.style.visibility = "visible";  //show the info
	unhideMe.style.display = "inline";  //show the info
	
	//bold the tab
	var boldMe = document.getElementById(boldTab);		
	boldMe.style.fontWeight = "bold";  //bold the selected tab	

	var boldMe2 = document.getElementById(boldTab2);		
	boldMe2.style.fontWeight = "bold";  //bold the selected tab		
	
	document.getElementById('tabNameTree').innerHTML = tree[treeID];	
	document.getElementById('tabPoints').innerHTML = pointsTree[treeID];	

	document.getElementById("tabUp"+ treeID).style.visibility = "hidden";
	
	canTurnGreen(pointsTree[treeID], treeID)	
	
}

function unhideTalent(input) {
	document.getElementById("talentMouseOver"+ input).style.visibility = "visible";
}

function hideTalent(input) {
	document.getElementById("talentMouseOver"+ input).style.visibility = "hidden";
}

function printableVersion() {

	var levelRequired = rankPointsMax - rankPoints + levelMin - 1;	
	var pointsRequired = rankPointsMax - rankPoints;

    var w = window.open("","","resizable=1,toolbar=1,width=800,height=600,status=1,scrollbars=1,menubar=1, screenX=100, screenY=100, left=100, top=100");
	w.document.write("<html><body bgcolor=ffffff>");
	w.document.write("<h3>"+ className + " Talents</h3>Minimum Required Level: <b>"+ levelRequired +"</b><br>Required Talent Points: <b>"+ pointsRequired +"</b>");	
	w.document.write("<table border=0 cellpadding=0 cellspacing=0 width=100%>");

	
	if (pointsRequired == 0) {
		w.document.write("<br>&nbsp;&nbsp;&nbsp;Don't waste paper");
	}
	
	var rightTreeID = -1;
	for (var blah = 0; blah != talent.length; blah++){
		if (talent[blah][0] != rightTreeID) {
			rightTreeID = talent[blah][0];

			if (pointsTree[rightTreeID] != 0)
				w.document.write("<tr><td width=100%><br><b><u>"+tree[rightTreeID]+" Talents</u> - </b></span><span class=mySmall>&nbsp;<span id='"+ tree[rightTreeID] +"Points' class=mySmall>"+ pointsTree[rightTreeID] +"</span> point<span id='letterS"+ rightTreeID +"' class=mySmall>s</span><p></td></tr>");
		}

		if (rankTop[blah][0] != 0) {
			w.document.write("<tr><td colspan=2 style = \"padding-left:18px\"><span id='displayRight"+ blah +"'><li><b>"+ talent[blah][1] +"</b> - rank <span id='modifyRankRight"+ blah +"' class=mySmallBlack>"+ rankTop[blah][0] +"</span>/<span class=mySmallBlack>"+ talent[blah][2] +"</span><br></span></td></tr>");
			//w.document.write("<tr><td colspan=2 style = \"padding-left:36px\">"+ rankTop[blah][1] +"</td></tr>");
		}
	}

	w.document.write("</table>");	
	w.document.write("</body></html>");
	w.document.close();
	
}