// Mile Edge Plus - Edge Selector

var category = 2;
var autoType_toggle = true;
var fuel_toggle = false;
var year_toggle = false;
var make_toggle = false;
var intake_toggle = false;
var ie6;
var makechange;

if (window.XMLHttpRequest) {
// IE 7, mozilla, safari, opera 9
	ie6 = false;
} else {
// IE6, older browsers
	ie6 = true;
}

function searchFuel()
{
	searchReq("engine_fuel_type");
}
function searchYear()
{
	searchReq("engine_year");
}
function searchMake()
{
	searchReq("engine_make");
}
function searchModel()
{
	searchReq("engine_model");
}
function searchIntake()
{
	searchReq("engine_intake");
}
function searchIntakes()
{
	searchReq("engine_intakes");
}

function searchReq(filter_name)
{
	params = new Array();
	gather_form = document.rightPanelForm;
	final_select = false;

	category = gather_form.auto_type.value;

	switch(filter_name)
	{
		case "engine_type":
			params[params.length] = new paramTemplate("category",category);
			autoType_toggle = true;
			fuel_toggle = false;
			year_toggle = false;
			make_toggle = false;
			model_toggle = false;
			intake_toggle = false;
		break;
		case "engine_fuel_type":
			params[params.length] = new paramTemplate("category",gather_form.auto_type.value);
			autoType_toggle = true;
			fuel_toggle = true;
			year_toggle = false;
			make_toggle = false;
			model_toggle = false;
			intake_toggle = false;
		break;
		case "engine_year":
			params[params.length] = new paramTemplate("category",gather_form.auto_type.value);
			autoType_toggle = true;
			if(category == 1)
			{
				fuel_toggle = true;
				params[params.length] = new paramTemplate("fuel_type",gather_form.fuel_type.value);
			}
			year_toggle = true;
			make_toggle = false;
			model_toggle = false;
			intake_toggle = false;
		break;
		case "engine_make":
			params[params.length] = new paramTemplate("category",gather_form.auto_type.value);
			if(category == 1)
			{
				fuel_toggle = true;
				intake_toggle = true;
				params[params.length] = new paramTemplate("fuel_type",gather_form.fuel_type.value);
			}
			params[params.length] = new paramTemplate("year",gather_form.year.value);
			autoType_toggle = true;
			year_toggle = true;
			make_toggle = true;
			model_toggle = false;
			intake_toggle = false;
		break;
		case "engine_model":
			params[params.length] = new paramTemplate("category",gather_form.auto_type.value);
			if(category == 1)
			{
				fuel_toggle = true;
				intake_toggle = true;
				params[params.length] = new paramTemplate("fuel_type",gather_form.fuel_type.value);
			}
			params[params.length] = new paramTemplate("year",gather_form.year.value);
			params[params.length] = new paramTemplate("make",gather_form.make.value);
			autoType_toggle = true;
			year_toggle = true;
			make_toggle = true;
			model_toggle = true;
			intake_toggle = false;
		break;
		case "engine_intake":
			params[params.length] = new paramTemplate("category",gather_form.auto_type.value);
			if(category == 1)
			{
				fuel_toggle = true;
				params[params.length] = new paramTemplate("fuel_type",gather_form.fuel_type.value);
			}
			params[params.length] = new paramTemplate("year",gather_form.year.value);
			params[params.length] = new paramTemplate("make",gather_form.make.value);
			params[params.length] = new paramTemplate("model",gather_form.model.value);
			autoType_toggle = true;
			year_toggle = true;
			make_toggle = true;
			model_toggle = true;
			intake_toggle = true;
		break;
		case "engine_intakes":
			params[params.length] = new paramTemplate("intake",gather_form.intake.value);
			autoType_toggle = true;
			year_toggle = true;
			make_toggle = true;
			model_toggle = true;
			intake_toggle = true;
		break;
	}

	if(autoType_toggle == false)
	{
			disableSelect(gather_form, "auto_type", "-- Select Vehicle Type --");
	} else { enableSelect(gather_form, "auto_type"); }
	if(fuel_toggle == false)
	{
			removeMenu("fuel_type");
	} //else { createMenu("fuel_type","Select Fuel Type"); }
	if(year_toggle == false)
	{
			removeMenu("year");
	} //else { createMenu("year","Select Year","engine_make"); }
	if(make_toggle == false)
	{
			removeMenu("make");
	} //else { createMenu("make","Select Make"); }
	if(model_toggle == false)
	{
			removeMenu("model");
	} //else { createMenu("model","Select Engine Model"); }
	if(intake_toggle == false)
	{
			removeMenu("intake");
	} //else { createMenu("intake","Select Intake Manifold"); }


	query = setQueryString(params, filter_name);
	//alert(query);
	searchForEdge(query);
}


function createMenu(menu_id,init_opt,thechange)
{
	menuContainer = document.getElementById('edgeContainer');
	if(document.getElementById(menu_id))
	{
		var remselect = document.getElementById(menu_id);
		clearOptions(remselect);
	} else
	{
		var newselect = document.createElement('select');
		newselect.setAttribute("id",menu_id);
		newselect.setAttribute("name",menu_id);
		newselect.setAttribute("class","indexPullDowns");
		newselect.setAttribute("className","indexPullDowns");
		newselect.setAttribute("onchange",thechange+"();");
		
		if(ie6 == true)
		{
			switch(thechange)
			{
				case "searchFuel": newselect.attachEvent("onchange",searchFuel); break;
				case "searchYear": newselect.attachEvent("onchange",searchYear); break;
				case "searchMake": newselect.attachEvent("onchange",searchMake); break;
				case "searchModel": newselect.attachEvent("onchange",searchModel); break;
				case "searchIntake": newselect.attachEvent("onchange",searchIntake); break;
				case "searchIntakes": newselect.attachEvent("onchange",searchIntakes); break;				
			}
			//newselect.attachEvent("onchange",thechange);
		} else
		{
			//newselect.addEventListener("change",thechange, false);
			newselect.setAttribute("onchange",thechange+"();");
		}
		
		makechange = thechange;
		menuContainer.appendChild(newselect);
		addToOptionList(newselect, "", "-- "+ init_opt +" --");
		return true;
	}
}

function removeMenu(menu_id)
{
	menuContainer = document.getElementById('edgeContainer');
	if(document.getElementById(menu_id))
	{
		var remselect = document.getElementById(menu_id);
		menuContainer.removeChild(remselect);
	}
}

function disableSelect(gather_form, clear_field, txt_default)
{
	clearOptions(gather_form.elements[clear_field]);
	addToOptionList(gather_form.elements[clear_field], "", "-- "+ txt_default +" --");
	gather_form.elements[clear_field].disabled = true;
}

function enableSelect(gather_form, open_field)
{
	gather_form.elements[open_field].disabled = false;
}

function clearOptions(OptionList)
{
	for (x = OptionList.length; x >= 0; x = x - 1)
	{
		OptionList[x] = null;
	}
 
}

function addToOptionList(OptionList, OptionValue, OptionText)
{
	OptionList[OptionList.length] = new Option(OptionText, OptionValue);
}

function AttachEvent(obj,evt,fnc,useCapture)
{
	if (!useCapture) useCapture=false;
	if (obj.addEventListener)
	{
		obj.addEventListener(evt,fnc,useCapture);
		return true;
	} else if (obj.attachEvent) return obj.attachEvent("on"+evt,fnc);
	else
	{
		MyAttachEvent(obj,evt,fnc);
		obj['on'+evt]=function(){ MyFireEvent(obj,evt) };
	}
} 

//The following are for browsers like NS4 or IE5Mac which don't support either
//attachEvent or addEventListener
function MyAttachEvent(obj,evt,fnc){
	if (!obj.myEvents) obj.myEvents={};
	if (!obj.myEvents[evt]) obj.myEvents[evt]=[];
	var evts = obj.myEvents[evt];
	evts[evts.length]=fnc;
}
function MyFireEvent(obj,evt){
	if (!obj || !obj.myEvents || !obj.myEvents[evt]) return;
	var evts = obj.myEvents[evt];
	for (var i=0,len=evts.length;i<len;i++) evts[i]();
}



//
var request;
var xmldoc;

function searchForEdge(query)
{
	var rn = Math.random();
	var url = "edge_selection.php?action=search&rn=" + rn;
	httpRequest("POST",url,query,true);
}

function httpRequest(reqType,url,query,asynch)
{
	// Mozilla Browsers
	if(window.XMLHttpRequest)
	{
		request = new XMLHttpRequest();
	} else if (window.ActiveXObject)
	{
		request = new ActiveXObject("Msxml2.XMLHTTP");
		if(!request)
		{
			request = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}

	if(request)
	{
		initReq(reqType,url,query,asynch);
	} else
	{
		alert("Your browser does not support this applications features!");
	}
}

function initReq(reqType,url,query,isAsynch)
{
	request.onreadystatechange=handleResponse;
	request.open(reqType,url,isAsynch);
	request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
	request.send(query);
}

function handleResponse()
{
	if(request.readyState == 4)
	{
		if(request.status == 200)
		{
			xmldoc = request.responseXML;
			displayResult();
		} else
		{
			alert("A problem occurred communicating with the server.");
		}
	}
}

function displayResult()
{
	gather_form = document.rightPanelForm;
	populate_field = "";
	request_type = xmldoc.getElementsByTagName('request_type').item(0).firstChild.data;
	if(request_type != "None" && request_type != "selected_model")
	{
		switch(request_type)
		{
			case "list_categories": populate_field = "auto_type"; break;
			case "list_fuel_types": populate_field = "fuel_type"; createMenu("fuel_type","Select Fuel Type","searchYear"); break;
			case "list_year_range": populate_field = "year"; createMenu("year","Select Year","searchMake"); break;
			case "list_makes": populate_field = "make"; createMenu("make","Select Make","searchModel"); break;
			case "list_models": populate_field = "model"; createMenu("model","Select Engine Model","searchIntake"); break;
			case "list_intakes": populate_field = "intake"; createMenu("intake","Select Intake Manifold","searchIntakes"); break;
		}
		if(populate_field != "") { listing_amount = xmldoc.getElementsByTagName('listing_amount').item(0).firstChild.data; }
		if(populate_field != "" && listing_amount > 0)
		{
			for(i=0;i<listing_amount;i++)
			{
				addToOptionList(gather_form.elements[populate_field], xmldoc.getElementsByTagName('listing_id').item(i).firstChild.data, xmldoc.getElementsByTagName('listing_name').item(i).firstChild.data);
			}
		}
	}

	if(request_type == "selected_model")
	{
		document.getElementById("p_id").value = xmldoc.getElementsByTagName('products_id').item(0).firstChild.data;
		productSelect(xmldoc.getElementsByTagName('products_id').item(0).firstChild.data);
	}
}


//
function paramTemplate(var_name,var_value)
{
	this.var_name = var_name;
	this.var_value = var_value;
}

function setQueryString(params, filter_name)
{
	var param_string = "";
	if(params.length > 0)
	{
		for(i=0;i<params.length;i++)
		{
			param_string += "&" + params[i].var_name + "=" + params[i].var_value;
		}
	}
	query_string = "search_filter=" + filter_name + param_string;
	return query_string;
}



function model_seeking(model_seek_flag)
{
	model_seek = model_seek_flag;
}

function filter_change()
{
	if(document.rightPanelForm.auto_type.value == 2) { searchReq('engine_model'); }
	else { searchReq('engine_list'); }
}



function categorySelect(cid)
{
	if(cid > 0)
	{
		window.location = "products.php?cPath=" + cid;
	} else { cid = 2; }
}

function productSelect(pid)
{
	if(pid > 0)
	{
		window.location = "product_info.php?cPath="+ document.rightPanelForm.auto_type.value +"&products_id=" + pid;
	} else { pid = 0; }
}
