// manarth.js

window.onload = LoadHandlers;

function LoadHandlers() {
	LoadTheMenu();
}
	
function LoadTheMenu() {
	var x=null;
	if (x = document.getElementById('highlight-menu')) {

			z  = "<label>Show: <select onchange=\"ShowHider(this, 'formula')\">";
			z += "<option value=\"all\" selected=\"selected=\">All</option>";
			z += "<optgroup label=\"Show only:\">";
			z += "<option value=\"FF\">Formula (FF)</option>";
			z += "<option value=\"FR\">Freerace (FR)</option>";
			z += "<option value=\"N\">National (N)</option>";
			z += "<option value=\"T\">Techno (T)</option>";
			z += "</optgroup>";
			z += "</select></label>";
			z += "<br />";
	
			z += "<fieldset>";
			z += "<strong>Highlight:</strong> ";
			z += "<label for=\"J\" title=\"&lt; 16\" class=\"junior\">"
			z += "<input type=\"checkbox\" name=\"J\" id=\"J\" onclick=\"HighLight(this)\" />";
			z += "Junior</label>";
			z += "<label for=\"Y\" title=\"&lt; 19\" class=\"youth\">"
			z += "<input type=\"checkbox\" name=\"Y\" id=\"Y\" onclick=\"HighLight(this)\" />";
			z += " Youth</label>";
			z += "<label for=\"M\" title=\"&gt; 35\" class=\"master\">";
			z += "<input type=\"checkbox\" name=\"M\" id=\"M\" onclick=\"HighLight(this)\" />";
			z += " Master</label>";
			z += "<label for=\"V\" title=\"&gt; 50\" class=\"veteran\">";
			z += "<input type=\"checkbox\" name=\"V\" id=\"V\" onclick=\"HighLight(this)\" />";
			z += " Veteran</label>";
			z += "<label for=\"F\" class=\"women\">";
			z += "<input type=\"checkbox\" name=\"F\" id=\"F\" onclick=\"HighLight(this)\" />";
			z += " Women</label>";
			z += "</fieldset>"
	} else if (x = document.getElementById('highlight-menu-2')) {
	
			z  = "<label>Show: </label><select onchange=\"ShowHider(this, 'raceboard');\">";
			z += "<option value=\"all\" selected=\"selected=\">Show All</option>";
			z += "<optgroup label=\"Show only:\">";
			z += "<option value=\"RB\">Adult (RB)</option>";
			z += "<option value=\"RN\">Junior (RN)</option>";
			z += "<option value=\"I\">IMCO (I)</option>";
			z += "<option value=\"O\">Olympic (RSX) (O)</option>";
			z += "<option value=\"N\">Aloha (N)</option>";
			z += "<option value=\"U\">Unlimited (U)</option>";
			z += "<option value=\"R\">Raceboard (R)</option>";
			z += "</optgroup>";
			z += "</select>";
			z += "<br />";
	
			z += "<fieldset>";
			z += "<strong>Highlight:</strong> ";
			z += "<label for=\"J\" title=\"&lt; 19\" class=\"junior\">"
			z += "<input type=\"checkbox\" name=\"J\" id=\"J\" onclick=\"HighLight(this)\" />";
			z += " Junior</label>";
			z += "<label for=\"Y\" title=\"&lt; 19\" class=\"youth\">"
			z += "<input type=\"checkbox\" name=\"Y\" id=\"Y\" onclick=\"HighLight(this)\" />";
			z += " Youth</label>";
			z += "<label for=\"M\" title=\"&gt; 35\" class=\"master\">";
			z += "<input type=\"checkbox\" name=\"M\" id=\"M\" onclick=\"HighLight(this)\" />";
			z += " Master</label>";
			z += "<label for=\"V\" title=\"&gt; 50\" class=\"veteran\">";
			z += "<input type=\"checkbox\" name=\"V\" id=\"V\" onclick=\"HighLight(this)\" />";
			z += " Veteran</label>";
			z += "<label for=\"F\" class=\"women\">";
			z += "<input type=\"checkbox\" name=\"F\" id=\"F\" onclick=\"HighLight(this)\" />";
			z += " Women</label>";
			z += "</fieldset>"
	}
	x.innerHTML = z;
	
}

function AddText(inText, toAdd) {
	var y = inText + " " + toAdd;
	return y;
}

function RemoveText(inText, toRem) {
	var x = null;
	var y = new Array;
	var z = new Array;
	
	z = inText.split(' ');
	for (var i=0; i<z.length; i++) {
		if (z[i]!=toRem) y.push(z[i]);
	}
	x = y.join(' ');
	return x;
}

function ShowHider(Elem, mode) {
	/*
		Elem is a select box.
		Read the select box's option's value.  
		
		Formula / Freerace options are: FF / FR (Row 1) and N / T (Row 2)
		Raceboard options are: RB / RN (Row 1) and O, M, R, U, N, 3, 4, 5
	*/
	//alert ('ShowHider caller with '+mode+' mode');
	
	var TheClass=Elem.options[Elem.selectedIndex].value;
	
	if (mode=='formula') {
			 if (TheClass=='FF' || TheClass=='FR') rowNumber=1;
		else if (TheClass=='N' || TheClass=='T')   rowNumber=2;
	} else if (mode=='raceboard') {
		// alert ('Parsing raceboard mode');
			 if (TheClass=='RB' || TheClass=='RN') rowNumber=1;
		else if (TheClass=='I' || TheClass=='M' || TheClass=='N' || TheClass=='O' || TheClass=='R' || TheClass=='U') rowNumber=2;
	} else {
		alert ("It's not formula, it's not raceboard.  So what is it?  It must be a mistake ;)");
	}
	// alert ('TheClass: ' + TheClass + ".  RowNumber: "+rowNumber);

	x = document.getElementById('resultsTable');
	
	if (x) {
		rows = x.getElementsByTagName('tr');


		// alert ('There are ' + rows.length + ' rows in the table');

		for (var i=1; i<rows.length; i++) { // parsing EACH row
			myCells = rows[i].getElementsByTagName('td');
			myCell = myCells[rowNumber];

			if (TheClass=='all' || myCell.childNodes.item(0).data == TheClass) rows[i].className=RemoveText(rows[i].className, 'rm');
			else rows[i].className=AddText(rows[i].className, 'rm');
		}
	} else {
		alert ("No records found.  There has to be a mistake ;)");
	}

}

function HighLight(Elem) {
	/*
		possible values for Elem.id are j, y, m, v, f.
		action: parse the table for a (class eq Elem.id) and either apply or remove the classname to the row.
	*/
	
	// alert ('Function called with Element id: ' + Elem.id);
	
	var myRowNum = null;
	var myClassName= null;
	
	
		if (Elem.id == 'J') { myClassName='junior';   myRowNum="3"; }
	else if (Elem.id == 'Y') { myClassName='youth';    myRowNum="3"; }
	else if (Elem.id == 'M') { myClassName='master';   myRowNum="3"; }
	else if (Elem.id == 'V') { myClassName='veteran';  myRowNum="3"; }
	else if (Elem.id == 'F') { myClassName='women';    myRowNum="4"; }
	
		
	// alert("myClassName ended up as " + myClassName);

	
	if (x = GetRowsMatchingClass(myRowNum, Elem.id, true)) {
		// alert ('GetRows function has returned ' + x.length + ' rows');
		for (var i=0; i<x.length; i++) {
			if (Elem.checked) x[i].className=AddText(x[i].className, myClassName);
			else x[i].className=RemoveText(x[i].className, myClassName);
		}
	}	
	else {
		alert ("No records to highlight.  There has to be a mistake ;)");
	}
	
	
}


function GetRowsMatchingClass(rowNumber, TheClass) {
	/* row fields:
		2 - N (National) or T (Techno)
		3 - J / Y / M / V (Junior / Youth / Master / Vet)
		4 - F (Female) or blank
		
		if match is true, then it's if it matches.  otherwise, reverse.
	*/
	// alert ("rowNumber: "+rowNumber+".  TheClass: "+TheClass);
	
	var x = null;
	var y = new Array();
	var rows = null;
	var myCells = null;
	var myCell = null;
	var classNames = null;

	x = document.getElementById('resultsTable');
	if (x != null) {
		rows = x.getElementsByTagName('tr');

		// alert ('There are ' + rows.length + ' rows in the table');

		for (var i=1; i<rows.length; i++) {
			myCells = rows[i].getElementsByTagName('td');
			myCell = myCells[rowNumber];

			// if (i<30) alert ("Row: "+i+".   Cell("+rowNumber+")Data: |"+myCell.childNodes.item(0).data+"|");

			if (myCell.childNodes.item(0).data == TheClass) y.push(rows[i]);
		}

		// if (y) alert ("GetRowsMatchingClass is returning " + y.length + " rows.");
		return y;
	} else return false;
}
