var type_xml = false;
var results_xml = false;

/* Switching Criteria */

function makeTypeXMLRequest(url, parameters) {
	type_xml = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		type_xml = new XMLHttpRequest();
		if (type_xml.overrideMimeType) {
			type_xml.overrideMimeType('text/plain');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			type_xml = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				type_xml = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!type_xml) {
		alert('Cannot make connection to server. Please upgrade or use a different browser.');
		return false;
	}
	type_xml.onreadystatechange = changeType;
	type_xml.open("POST", url, true);
	type_xml.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	type_xml.setRequestHeader("Content-length", parameters.length);
	type_xml.setRequestHeader("Connection", "close");
	type_xml.send(parameters);
}

function changeType() {
	if (type_xml.readyState != 4) return false;
	if (type_xml.status != 200) return false;
	var text = type_xml.responseText;
	if (!text) return false;
	document.getElementById('options').innerHTML = text;
	loadResults();
}

/* Searching and Getting Results */

function makeResultsXMLRequest(url, parameters) {
	results_xml = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		results_xml = new XMLHttpRequest();
		if (results_xml.overrideMimeType) {
			results_xml.overrideMimeType('text/plain');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			results_xml = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				results_xml = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!results_xml) {
		alert('Cannot make connection to server. Please upgrade or use a different browser.');
		return false;
	}
	results_xml.onreadystatechange = displayResults;
	results_xml.open("POST", url, true);
	results_xml.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	results_xml.setRequestHeader("Content-length", parameters.length);
	results_xml.setRequestHeader("Connection", "close");
	results_xml.send(parameters);
}

function displayResults() {
	if (results_xml.readyState != 4) return false;
	if (results_xml.status != 200) return false;
	var text = results_xml.responseText;
	if (!text) return false;

	document.getElementById('gear_results').innerHTML = text;
	document.getElementById('please_wait').style.visibility = 'hidden';
	for (var i=1; i<=3; i++) {
		document.getElementById('adframe_'+i).src = document.getElementById('adframe_'+i).src;
	}
}

/* Functions called by the page */

function setGearType() {
	var gt = document.getElementById('gt').value;
	makeTypeXMLRequest('/gear/gear_finder/gear_finder_results/', 'action=custom&bp=gf_types&gt='+gt);
}

function loadResults() {
	var gt = document.getElementById('gt').value;
	document.getElementById('please_wait').style.visibility = 'visible';

	var params = '';
	var fields;
	if (gt == 'ba') {
		fields = new Array('cost','frame','capacity','weight', 'women_specific');
	}
	if (gt == 'bv') {
		fields = new Array('cost','weight','shell');
	}
	if (gt == 'bo') {
		fields = new Array('cost','usage','height','upper','width','gender');
	}
	if (gt == 'sb') {
		fields = new Array('cost','temp','shape','lgth', 'women_specific');
//		fields = new Array('cost');
	}
	if (gt == 'te') {
		fields = new Array('cost','capacity','usage','weight');
	}
	if (gt == 'sp') {
		fields = new Array('women_specific','closed_cell','inflatable', 'cost', 'weight', 'thickness', 'length');
	}
	if (gt == 'st') {
		fields = new Array('fuel_type','weight','cost');
	}
	if (gt == 'tp') {
		fields = new Array('material','shock_absorbers','weight', 'cost', 'women_specific');
	}
	
	for (f = 0; f <= fields.length ; f++) {

		var arrParams = new Array;	
		var els = document.getElementsByName(fields[f]);
		for (i = 0; i < els.length ; i++) {
			if (els[i].checked) arrParams.push(els[i].value);
		}
		if (arrParams.length) params = params + '&'+fields[f]+'='+arrParams.join(",")
	}
	//alert('params == '+params);
	
	makeResultsXMLRequest('/gear/gear_finder/gear_finder_results/', 'action=custom&bp=gf_results&gt='+gt+params);	
}

function switchPage(uri) {
	document.getElementById('please_wait').style.visibility = 'visible';
	makeResultsXMLRequest('/gear/gear_finder/gear_finder_results/', uri);	
}
