var gShadeReference = false;
var gMessageReference = false;

function getType(){
	var inputs = document.getElementsByTagName("input");
	for(var i = 0; i < inputs.length; i++){
		if(inputs[i].type == "radio" && inputs[i].name == "type" && inputs[i].checked == true){
			return("/type/" + inputs[i].value);
		}
	}
	return("");
}

function getBodyType(){
	var selects = document.getElementsByTagName("select");
	for(var i = 0; i < selects.length; i++){
		if(selects[i].name == "body_type"){
			return("/body_type/" + selects[i].options[selects[i].selectedIndex].value);
		}
	}
	return("");
}

function selectMake(obj){
	var type = getType();
	var make = obj.options[obj.selectedIndex].value;
	var bodyType = getBodyType();
	openPage("/mvc/ajax/models/make/" + make + type + bodyType, "json", function(data){parse("models", data);}, showLoadBar);
	openPage("/mvc/ajax/trims/make/" + make + type + bodyType, "json", function(data){parse("trims", data);}, showLoadBar);
}

function selectModel(obj){
	var type = getType();
	var make = document.getElementById("makeSelect").options[document.getElementById("makeSelect").selectedIndex].value;
	var model = obj.options[obj.selectedIndex].value;
	var bodyType = getBodyType();
	openPage("/mvc/ajax/trims/make/" + make + "/model/" + model + type + bodyType, "json", function(data){parse("trims", data);}, showLoadBar);
}

function selectTrim(obj){
}

function selectPriceLow(obj){
}

function selectPriceHigh(obj){
}

function selectYearLow(obj){
}

function selectYearHigh(obj){
}

function selectBodyType(obj){
	var bodyType = obj.options[obj.selectedIndex].value;
	if(bodyType !== ""){
		bodyType = "/body_type/" + bodyType;
	}
	var type = getType();
	openPage("/mvc/ajax/makes" + type + bodyType, "json", function(data){parse("makes", data);}, showLoadBar);
	openPage("/mvc/ajax/models" + type + bodyType, "json", function(data){parse("models", data);}, showLoadBar);
	openPage("/mvc/ajax/trims" + type + bodyType, "json", function(data){parse("trims", data);}, showLoadBar);
}

function selectType(obj){
	var type = obj.options[obj.selectedIndex].value;
	if(type !== ""){
		type = "/type/" + type;
	}
	openPage("/mvc/ajax/makes" + type, "json", function(data){parse("makes", data);}, showLoadBar);
	openPage("/mvc/ajax/models" + type, "json", function(data){parse("models", data);}, showLoadBar);
	openPage("/mvc/ajax/trims" + type, "json", function(data){parse("trims", data);}, showLoadBar);
}

//Show the loadbar
function showLoadBar(){
	var formNode = document.getElementById("inventory-filters");

	if(!document.getElementById("gInventoryFilterShade")){
		gShadeReference = document.createElement("div");
		gShadeReference.id = "gInventoryFilterShade";
		gShadeReference.className = "shade";
	
		gMessageReference = document.createElement("div");
		gMessageReference.id = "gInventoryFilterMessage";
		gMessageReference.innerHTML = "Loading...";
		gMessageReference.className = "message";
	
		formNode.appendChild(gShadeReference);
		formNode.appendChild(gMessageReference);
	}
}

function animateLoadingMessage(){
	if(document.getElementById("gInventoryFilterMessage")){
		document.getElementById("gInventoryFilterMessage").innerHTML += ".";
	}
}

function hideLoadBar(){
	if(gShadeReference.parentNode){
		gShadeReference.parentNode.removeChild(gShadeReference);
		gMessageReference.parentNode.removeChild(gMessageReference);
	}
}

//Parse the data with the given select to load the data into
function parse(type, data){
	switch(type){
		case "makes":
			var selectNode = document.getElementById("makeSelect");
			selectNode.innerHTML = "";
			var option = document.createElement("option");
			option.innerHTML = "Any";
			option.value = "";
			selectNode.appendChild(option);
			for(var i = 0; i < data.length; i++){
				option = document.createElement("option");
				option.innerHTML = data[i].strName;
				option.value = data[i].strName;
				selectNode.appendChild(option);
			}
			break;
		case "models":
			var selectNode = document.getElementById("modelSelect");
			selectNode.innerHTML = "";
			var option = document.createElement("option");
			option.innerHTML = "Any";
			option.value = "";
			selectNode.appendChild(option);
			for(var i = 0; i < data.length; i++){
				option = document.createElement("option");
				option.innerHTML = data[i].strName;
				option.value = data[i].strName;
				selectNode.appendChild(option);
			}
			break;
		case "trims":
			var selectNode = document.getElementById("trimSelect");
			selectNode.innerHTML = "";
			var option = document.createElement("option");
			option.innerHTML = "Any";
			option.value = "";
			selectNode.appendChild(option);
			for(var i = 0; i < data.length; i++){
				option = document.createElement("option");
				option.innerHTML = data[i].strName;
				option.value = data[i].strName;
				selectNode.appendChild(option);
			}
			break;
	}
	hideLoadBar();
}

if(!navigator.appName.match("Internet Explorer")){
	//Attach it for all good browsers
	window.addEventListener("load", function(){setInterval(function(){animateLoadingMessage();}, 500)}, false);
}else{
	//Attach the load event to crappy IE
	window.attachEvent("onload", function(){setInterval(function(){animateLoadingMessage();}, 500)});
}