window.onload = InitializePartsTable;
var sortcol, partstable, partstable2, partstable3, partstable4, parthdrs, partrows_copy, partrows_orig, partrows_other;
var dynamic_show_all = false;
var dynamic_hidden = true;
var lastclick = -1;
var reversed = false;

function InitializePartsTable () {
	partstable = document.getElementById("partstable");
	if (partstable) {
		if ('function' == typeof window.displayOtherModelsTab) displayOtherModelsTab();		
		parthdrs = partstable.getElementsByTagName('thead')[0].getElementsByTagName('th');
		var tmp_img;
		for (var i = 0; i < parthdrs.length; i++) {
			parthdrs[i].style.cursor = "pointer";
			parthdrs[i].onclick = SortPartsColEvent;
			tmp_img = document.createElement("IMG");
			tmp_img.src = "/images/icons/bump.gif";
			tmp_img.width = 10;
			tmp_img.height = 9;
			parthdrs[i].appendChild(tmp_img);
		}
		AltRows();
		var partsbody = partstable.getElementsByTagName('tbody')[0];
		var partrows = partsbody.getElementsByTagName('tr');
		partrows_copy = new Array();
		partrows_orig = new Array();
		partrows_other = new Array();
		for (var i = 0; i < partrows.length; i++) {
			if (partrows[i].parentNode.parentNode.id == "partstable") {
				if (((dynamic_show_all) && (partrows[i].className.indexOf("otherpart") == -1)) || (!dynamic_show_all)) {
					partrows_copy[partrows_copy.length] = partrows[i].cloneNode(true);
					partrows_orig[partrows_orig.length] = partrows[i].cloneNode(true);
				}
				else {
					partrows_other[partrows_other.length] = partrows[i].cloneNode(true);
				}
				if ((partrows[i].className.indexOf("otherpart") != -1) && (document.getElementById("model_menu_all_options"))) {
					document.getElementById("model_menu_all_options").style.display = "block";
				}
			}
		}
		ResetSortParts();
	}
	partstable2 = document.getElementById("partstable2");
	if (partstable2) {
		InitializePartsTable2();
	}
	partstable3 = document.getElementById("partstable3");
	if (partstable3) {
		InitializePartsTable3();
	}
	partstable4 = document.getElementById("partstable4");
	if (partstable4) {
		InitializePartsTable4();
	}
}

function AltRows () {
	var partsbody = partstable.getElementsByTagName('tbody')[0];
	var partrows = partsbody.getElementsByTagName('tr');
	var counter = 1;
	for (var i = 0; i < partrows.length; i++) {
		if (partrows[i].parentNode.parentNode.id == "partstable") {
			var newrowclass = (((counter) % 2) == 1) ? "odd" : "even";
			if ((partrows[i].className == "") || (partrows[i].className == "odd") || (partrows[i].className == "even")) {
				partrows[i].className = newrowclass;
			}
			else if (partrows[i].className.indexOf("odd") != -1) {
				partrows[i].className = partrows[i].className.replace(/ odd/, " " + newrowclass);
			}
			else if (partrows[i].className.indexOf("even") != -1) {
				partrows[i].className = partrows[i].className.replace(/ even/, " " + newrowclass);
			}
			else {
				partrows[i].className = partrows[i].className + " " + newrowclass;
			}
			counter++;
		}
	}
}

function sortParts (a, b) {
	var i = -1;
	var j = -1;
	while ((i+1 < a.childNodes.length) && (j < sortcol)) {
		i++;
		if ((a.childNodes[i].tagName) && (a.childNodes[i].tagName.toLowerCase() == "td")) {
			j++;
		} 
	}
	a_data = a.childNodes[i].innerHTML.replace(/<.*?>|\$/g, "");
	b_data = b.childNodes[i].innerHTML.replace(/<.*?>|\$/g, "");

	/*
	a_data = a.getElementsByTagName('td')[sortcol].innerHTML.replace(/<.*?>|\$/g, "");
	b_data = b.getElementsByTagName('td')[sortcol].innerHTML.replace(/<.*?>|\$/g, "");
	*/
	if ((!a_data.match(/[^0-9\.\s]/)) && (!b_data.match(/[^0-9\.\s]/))) {
		a_data = parseFloat(a_data);
		b_data = parseFloat(b_data);
	}

	if (a_data < b_data) return -1;
	if (a_data > b_data) return 1;
	return 0;
}

function sortPartsReversed (a, b) {
	var i = -1;
	var j = -1;
	while ((i+1 < a.childNodes.length) && (j < sortcol)) {
		i++;
		if ((a.childNodes[i].tagName) && (a.childNodes[i].tagName.toLowerCase() == "td")) {
			j++;
		} 
	}
	a_data = a.childNodes[i].innerHTML.replace(/<.*?>|\$/g, "");
	b_data = b.childNodes[i].innerHTML.replace(/<.*?>|\$/g, "");

	/*
	a_data = a.getElementsByTagName('td')[sortcol].innerHTML.replace(/<.*?>|\$/g, "");
	b_data = b.getElementsByTagName('td')[sortcol].innerHTML.replace(/<.*?>|\$/g, "");
	*/
	!a_data.match(/[^0-9\.\s]/)
	if ((!a_data.match(/[^0-9\.\s]/)) && (!b_data.match(/[^0-9\.\s]/))) {
		a_data = parseFloat(a_data);
		b_data = parseFloat(b_data);
	}

	if (a_data > b_data) return -1;
	if (a_data < b_data) return 1;
	return 0;
}

function SortPartsColEvent (event) {
	if (!event) var event = window.event;
	var colhdr_element = (event.target) ? event.target : event.srcElement;
	if (colhdr_element.tagName == "IMG") colhdr_element = colhdr_element.parentNode;
	SortPartsCol(colhdr_element)
}

function SortPartsCol (colhdr_element) {
	for (var i = 0; i < parthdrs.length; i++) {
		if (colhdr_element.innerHTML == parthdrs[i].innerHTML) {
			sortcol = i;
			i = parthdrs.length;
		}
	}
	var partsbody = partstable.getElementsByTagName('tbody')[0];

	reversed = ((!reversed) && (lastclick == sortcol));
	if (!reversed) {
		partrows_copy.sort(sortParts);
	}
	else {
		partrows_copy.sort(sortPartsReversed);
	}
	var partsbody_copy = document.createElement('tbody');
	for (var i = 0; i < partrows_copy.length; i++) {
		partsbody_copy.appendChild(partrows_copy[i]);
	}

	if ((partstable.parentNode.className = "tableContainer") && (!window.sidebar))	{
		partstable.parentNode.scrollTop = 0;
		partstable.parentNode.style.overflowX = "hidden";
	}
	
	partstable.replaceChild(partsbody_copy, partsbody);

	AltRows();

	if (lastclick != -1) parthdrs[lastclick].getElementsByTagName('img')[0].src = "/images/icons/bump.gif";
	colhdr_element.getElementsByTagName('img')[0].src = (reversed) ? "/images/icons/down.gif" : "/images/icons/up.gif";
	lastclick = sortcol;
	
	if ('function' == typeof window.partsTablePostSort) partsTablePostSort();
}

function ResetSortParts () {
	var partsbody = partstable.getElementsByTagName('tbody')[0];

	reversed = false;
	
	var partsbody_copy = document.createElement('tbody');
	for (var i = 0; i < partrows_orig.length; i++) {
		partsbody_copy.appendChild(partrows_orig[i]);
	}

	if ((partstable.parentNode.className = "tableContainer") && (!window.sidebar))	{
		partstable.parentNode.scrollTop = 0;
		partstable.parentNode.style.overflowX = "hidden";
	}
	
	partstable.replaceChild(partsbody_copy, partsbody);

	AltRows();

	if (lastclick != -1) parthdrs[lastclick].getElementsByTagName('img')[0].src = "/images/icons/bump.gif";
	lastclick = -1;
	
	if ('function' == typeof window.partsTablePostSort) partsTablePostSort();
}

function showDynamicRows () {
	var partsbody = partstable.getElementsByTagName('tbody')[0].cloneNode(true);
	for (var i = 0; i < partrows_other.length; i++) {
		partrows_other[i].className = 'otherpartshow';
		partrows_copy[partrows_copy.length] = partrows_other[i].cloneNode(true);
		partrows_orig[partrows_orig.length] = partrows_other[i].cloneNode(true);
		partsbody.appendChild(partrows_other[i]);
	}

	if ((partstable.parentNode.className = "tableContainer") && (!window.sidebar))	{
		partstable.parentNode.scrollTop = 0;
		partstable.parentNode.style.overflowX = "hidden";
	}

	partstable.replaceChild(partsbody, partstable.getElementsByTagName('tbody')[0]);

	AltRows();

	if ('function' == typeof window.partsTablePostSort) partsTablePostSort();

	dynamic_hidden = false;
}

function hideDynamicRows () {
	var partsbody = partstable.getElementsByTagName('tbody')[0].cloneNode(true);
	for (var i = 0; i < partrows_other.length; i++) {
		partrows_other[i].className = 'otherpart';
	}
	for (var i = 0; i < partrows_copy.length; i++) {
		if (partrows_copy[i].className.indexOf("otherpartshow") != -1) {
			partrows_copy.splice(i, 1);
			i--;
		}
	}
	for (var i = 0; i < partrows_orig.length; i++) {
		if (partrows_orig[i].className.indexOf("otherpartshow") != -1) {
			partrows_orig.splice(i, 1);
			i--;
		}
	}
	var partsbody_rows = partsbody.getElementsByTagName('tr').length;
	var rows_to_remove = new Array()
	for (var i = 0; i < partsbody_rows; i++) {
		if (partsbody.getElementsByTagName('tr')[i].className.indexOf("otherpartshow") != -1) {
			rows_to_remove[rows_to_remove.length] = i;
		}
	}
	
	for (var i = 0; i < rows_to_remove.length; i++) {
		partsbody.removeChild(partsbody.getElementsByTagName('tr')[rows_to_remove[i]-i]);
	}

	if ((partstable.parentNode.className = "tableContainer") && (!window.sidebar))	{
		partstable.parentNode.scrollTop = 0;
		partstable.parentNode.style.overflowX = "hidden";
	}

	partstable.replaceChild(partsbody, partstable.getElementsByTagName('tbody')[0]);

	AltRows();

	if ('function' == typeof window.partsTablePostSort) partsTablePostSort();

	dynamic_hidden = true;
}

function toggleDynamicRows () {
	if (dynamic_hidden) {
		showDynamicRows();
		document.getElementById('view_more_configs_show').style.display = "none";
		document.getElementById('view_more_configs_hide').style.display = "block";
	}
	else {
		hideDynamicRows();
		document.getElementById('view_more_configs_hide').style.display = "none";
		document.getElementById('view_more_configs_show').style.display = "block";
		location.href = "#partstable"
	}
}
