﻿var globalSortCol;
var numHeaders = 6;
var headerClickedVal = -1;
var headerClickedDir ="";

function headerClicked(id_num) {
	for(var i = 0; i < numHeaders; i++) {
		document.getElementById('header_'+i).style.background='#99ADC5';
		document.getElementById('arrow_down_'+i).style.display='none';
		document.getElementById('arrow_up_'+i).style.display='none';
	}
	document.getElementById('header_'+id_num).style.background='#CDE1EC';
	if(headerClickedVal == id_num && headerClickedDir == "d") {
		document.getElementById('arrow_up_'+id_num).style.display='';
		headerClickedDir = "u";
		reverseTable();
	}
	else {
		document.getElementById('arrow_down_'+id_num).style.display='';
		headerClickedVal = id_num;
		headerClickedDir = "d";
		sortTableOnColumn(id_num);
	}
}
function doSearch(search_box) {

	var q = search_box.value;

	q = q.toLowerCase();
	var q_ars = new Array();
	q_ars = q.split(' ');

	for(var d = 0; d < q_ars.length; d++) {
		if(q_ars[d]=="") {
			q_ars.splice(d,1);
		}
	}

	var tbl = document.getElementById('main_table');
	var rows = tbl.rows;
	for(var i=1; i<rows.length; i++) {
		var cells = rows[i].cells;
		var q_parts_found = "";
		for(var j=0; j<cells.length; j++) {	
			var val = cells[j].innerHTML;
			val = val.toLowerCase();

			for(var k =0; k < q_ars.length; k++) {
				if(q_ars[k]!="" && val.indexOf(q_ars[k]) != -1) {
					q_parts_found += k + " ";
					rows[i].style.display='';
				}
			}
		}	

		var foundCell = 1;
		for(var n = 0; n < q_ars.length; n++) {
			if(q_parts_found.indexOf(n)==-1) {
				foundCell = 0;
			}
		}
		if(foundCell == 1) {
			rows[i].style.display='';
		}
		else {
			rows[i].style.display='none';
		}
	}
	reAlternateLines();
}

function sortTableOnColumn(col) {
	var tbl = document.getElementById('main_table');
	var rows = tbl.rows;
	var row_array = new Array();
	for(var i=1; i<rows.length; i++) {
		row_array[i-1] =  rows[i];
	}
	globalSortCol = col;
	row_array.sort(sortRowArrayOnColumn);
	globalSortCol = "";
	
	var innerHTMLArray = new Array();
	for(var l = 0; l < row_array.length; l++) {
		var innerHTMLArray2 = new Array();
		for(var c = 0; c < numHeaders; c++) {
			innerHTMLArray2[c] = row_array[l].cells[c].innerHTML;
		}
		innerHTMLArray[l] = innerHTMLArray2;
	}
	for(var l = 0; l < innerHTMLArray.length; l++) {
		for(var c = 0; c < numHeaders; c++) {
			tbl.rows[l+1].cells[c].innerHTML = innerHTMLArray[l][c];
		}
	}
	
	doSearch(document.getElementById('search'));
	reAlternateLines();
}
function sortRowArrayOnColumn(a,b) {	
	var x = a.cells[globalSortCol].innerHTML.toLowerCase();
	var y = b.cells[globalSortCol].innerHTML.toLowerCase();
	if(isNumeric(x) && isNumeric(y)) {
		x = x * 1;
		y = y * 1;
	}
	return ((x < y) ? -1 : ((x > y) ? 1 : 0));	
}
function reverseTable() {
	var tbl = document.getElementById('main_table');
	var rows = tbl.rows;
	var row_array = new Array();
	for(var i=1; i<rows.length; i++) {
		row_array[i-1] =  rows[i];
	}

	var innerHTMLArray = new Array();
	for(var l = 0; l < row_array.length; l++) {
		var innerHTMLArray2 = new Array();
		for(var c = 0; c < numHeaders; c++) {
			innerHTMLArray2[c] = row_array[l].cells[c].innerHTML;
		}
		innerHTMLArray[l] = innerHTMLArray2;
	}
	for(var l = 0; l < innerHTMLArray.length; l++) {
		for(var c = 0; c < numHeaders; c++) {
			tbl.rows[l+1].cells[c].innerHTML = innerHTMLArray[innerHTMLArray.length-1-l][c];
		}
	}
	
	doSearch(document.getElementById('search'));
	reAlternateLines();
}
function reAlternateLines() {
	var tbl = document.getElementById('main_table');
	var rows = tbl.rows;
	
	var counter = 1;
	for(var i=1; i<rows.length; i++) {
		if(rows[i].style.display!='none') {
			if(counter%2==0) {
				rows[i].className="alt";
			}
			else {
				rows[i].className="";
			}
			counter++;
		}
	}
}

function isNumeric(sText) {
   var validChars = "0123456789.";
   for (var i = 0; i < sText.length; i++) { 
      if (validChars.indexOf(sText.charAt(i)) == -1) {
         return false;
      }
   }
   return true;
}

//call this to get our tables sorted. It also alternates row colors for us
headerClicked(0);



/*
function showAllRows() {
	var tbl = document.getElementById('main_table');
	var rows = tbl.rows;

	for(var i=1; i<rows.length; i++) {
		rows[i].style.display='';
	}
}
*/

