var removed_tBodies;
var chaptersShowing;
var totalChapters;
var remaining_tBody_node;
var remaining_tBody_index;
var partsTable;
var chapterIndex;

function galleryInit(){
	removed_tBodies = new Array();
	partsTable = document.getElementById("partsTable");
	totalChapters = chaptersShowing = document.getElementById("partsTable").tBodies.length;
	chapterIndex = document.getElementById("chapter").selectedIndex;
	filterBikeOptionsForYear();
}

function alterChapterView(){
	if(ajaxRequestQueue.length > 0 ){
		document.getElementById("chapter").selectedIndex = chapterIndex;
		return;
	}
	var chapterSelect = document.getElementById("chapter");
	var chapterSelected = chapterSelect[chapterSelect.selectedIndex].value;
	if( chapterSelected == "all" ) add_tbodies();
	else if( chaptersShowing == 1 ) swap_tbodies(chapterSelected);
	else remove_tbodies(chapterSelected);
	chapterIndex = document.getElementById("chapter").selectedIndex;
	checkExpandabilityForAll(); 
	checkCollapsabilityForAll();
}

function swap_tbodies(chapterSelected){
	var length = removed_tBodies.length;
	var selectedNode;
	var curNode;
	for( var i=0; i<length+1; i++  ){
		if(i<length) curNode = removed_tBodies.shift();
		if( i == remaining_tBody_index ) removed_tBodies.push(remaining_tBody_node);
		if(i<length) removed_tBodies.push(curNode);
	}
	for( var i=0; i<length+1; i++ ){
		if( removed_tBodies[i].id == chapterSelected ){
			var temp = removed_tBodies.splice(i,1);
			selectedNode = temp[0];
			remaining_tBody_index = i;
			break;
		}
	}
	partsTable.replaceChild(selectedNode,remaining_tBody_node);
	remaining_tBody_node = selectedNode;
}

function add_tbodies(){
	var length = removed_tBodies.length;
	for( var i=0; i<length; i++ ){
		if( i<remaining_tBody_index ) partsTable.insertBefore(removed_tBodies.shift(),remaining_tBody_node);
		else partsTable.appendChild(removed_tBodies.shift());
		chaptersShowing++;
	}
}

function remove_tbodies(chapterSelected){
	var length = chaptersShowing;
	var nextChildIndex = 0; //THIS INCREMENTS WHEN id/chapterSelected MATCH IS MADE BECAUSE tBodies[0] IS NOW THE NODE THAT WAS NOT REMOVED
	for( var i=0; i<length; i++ ){
		if( partsTable.tBodies[nextChildIndex].id != chapterSelected ){
			var nodeRef = partsTable.removeChild(partsTable.tBodies[nextChildIndex]);
			removed_tBodies.push(nodeRef);
			chaptersShowing--;
		}
		else{
			remaining_tBody_node = partsTable.tBodies[nextChildIndex];	
			remaining_tBody_index = i;
			nextChildIndex++;
		}
	}
}

function filterBikeOptionsForYear(){
	var yearSelect = document.getElementById("year");
	if(yearSelect) var yearSelected = yearSelect[yearSelect.selectedIndex].value;
	else return;
	var validModels = document.getElementById(yearSelected).value.split("_");
	var modelsSelectNode = document.getElementById("model");

	while(modelsSelectNode.hasChildNodes()){
		modelsSelectNode.removeChild(modelsSelectNode.lastChild);
	}

	for(var i=0; i < validModels.length; i++){
		var newOptionNode = document.createElement("option");
		newOptionNode.setAttribute("value",validModels[i]);
		var newTextNode = document.createTextNode(validModels[i]);
		if(document.getElementById("thisModel").firstChild.nodeValue == validModels[i]) newOptionNode.setAttribute("selected", true);
		newOptionNode.appendChild(newTextNode);
		modelsSelectNode.appendChild(newOptionNode);
	}

}
