function toggleItem(ele) {
	var obj = document.getElementById(ele);
	if(obj) {
		if(obj.display == 'none') {
			obj.display = '';
		} else {
			obj.display = 'none';
		}
	}
}

function resetSearch2() {
	var f = document.forms.srch;
	f.mfg.selectedIndex = f.types.selectedIndex = f.poles.selectedIndex = f.amperages.selectedIndex = 0;
	f.voltages.selectedIndex = 0;
	toggleItem('status');
	toggleItem('greenlftlg');
	toggleItem('results');
	toggleItem('total');
	toggleItem('reset');
	propagate("none");
}

function resetSearch2() {
        var f = document.forms.srch;
        f.types.selectedIndex = f.poles.selectedIndex = f.amperages.selectedIndex = 0;
        f.voltages.selectedIndex = 0;
        toggleItem('status');
        toggleItem('greenlftlg');
        toggleItem('results');
        toggleItem('total');
        toggleItem('reset');
        propagate("none");
}

function retrieveURL(url) {
	ajFetch(url,retrieveURL_cb);
}

function retrieveURL_cb(input) {
	updateSelects(input);
}

function updateSelects(txt) {
	var lines = txt.split("\n");
	var i;
	var f = document.forms.srch;
	//alert("Txt: " + txt);
	for (i = 0; i < 7; i++) {
		//  alert("Line " + i + ": " + lines[i]);
		var items = lines[i].split("|");
		var opts = [];
		
		for (var j = 1; j < items.length; j++) {
			opts[j-1] = items[j];			
		}
		
		switch(items[0]) {
			case "mfg": 
				setSelect(f.mfg, opts, "Any Manufacturer"); 
				break;
			case "poles": 
				setSelect(f.poles, opts, "All Poles"); 
				break;
			case "voltages": 
				setSelect(f.voltages, opts, "All Voltages"); 
				break;
			case "amperages": 
				setSelect(f.amperages, opts, "All Amperages"); 
				break;
			case "types": 
				setSelect(f.types, opts, "All Types"); 
				break;
			case "total":
				document.getElementById('total').innerHTML = opts[0] + " Product" + (opts[0] == 1 ? "" : "s") + " Found"; 
				break;
		}
	}

	// interpret remainder as html
	var htmlLines = lines.slice(6);
	var html = htmlLines.join("\n");
	updateSearch(html);
}

var id_status = -1;
var status_amount = 0;

function setStatus(amount) {
	if (amount < 0) amount = ++status_amount;
	var imgs = document.getElementById('statusbar').getElementsByTagName('img');
	amount %= imgs.length;
	for (var j = 0; j < imgs.length; j++) {
		imgs[j].style.visibility = j < amount ? 'visible' : 'hidden';
	}
}

var ss_counter = 0;

function startSearch() {
	if (!ss_counter++) return;
	searchStarted = 1;
	document.getElementById('status').style.display = '';
	document.getElementById('status').style.visibility = 'visible';
	document.getElementById('statusbar').style.visibility = 'visible';
	document.getElementById('statushdr').style.visibility = 'visible';
	status_amount = 0;
	setStatus(0);
	clearInterval(id_status);
	id_status = setInterval('setStatus(-1)', 50);
}

var us_counter = 0;

function updateSearch(html) {
	if (!us_counter++) return;
	if (!searchStarted) return;
	document.getElementById('results').innerHTML = html;
	document.getElementById('results').style.display = '';
	document.getElementById('greenlftlg').style.display = '';
	clearInterval(id_status);
	setStatus(0);
	document.getElementById('statusbar').style.visibility = 'hidden';
	document.getElementById('statushdr').style.visibility = 'hidden';
	document.getElementById('total').style.visibility = 'visible';
	document.getElementById('reset').style.visibility = 'visible';
}

function setLoading(sbox) {
	var si = sbox.selectedIndex;
	for (var i = sbox.options.length - 1; i >= 0; i--) {
		sbox.options[i] = null;
	}
	sbox.options[0] = new Option("Loading...", -1);
	sbox.options[0].selected = false;
}

function encodeHiddenField(name, hf) {
	var qs = "";
	var values = hf.value.split(",");
	for (var i = 0; i < values.length; i++) {
		qs += "&" + name + "[]=" + escape(values[i]);
	}
	return qs;
}

function encodeModifyDropdown(name, dd, threshold) {
	var qs = "";
	var opts = 0;
	for (var i = threshold; i < dd.options.length; i++) {
		if (dd.options[i].selected) {
			qs += "&" + name + "[]=" + escape(dd.options[i].value);
			opts++;
		}
	}
	if (opts == 0) {
		// nothing selected - so set to Loading...
		setLoading(dd);
	}
	return qs;
}

function loadSelects(src,f) {

	searchStarted = 0;
	if (src != "none")
	startSearch();

	// if no selection has yet been made, update text to "Loading..."
	// f.mfg poles voltages amperages

	// find all items with a selection & serialize.
	var url = "xml.php";
	var qs = "";
	if (f.mfg && f.mfg.options) {
		qs += encodeModifyDropdown("mfg", f.mfg, 0);		
	} else if (f.mfg) { 
		qs += encodeHiddenField("mfg", f.mfg); 
	}
	// if (src != "mfg") {
	qs += encodeModifyDropdown("types", f.types, 1);
	qs += encodeModifyDropdown("poles", f.poles, 1);
	qs += encodeModifyDropdown("amperages", f.amperages, 1);
	qs += encodeModifyDropdown("voltages", f.voltages, 1);
	// }
	if (f.keywords.value != "") {
		qs += "&keywords=" + escape(f.keywords.value);
	}

	// if (qs != "") {
	url += "?" + qs.substring(1);
	//   alert("Request: |" + url + "|");
	retrieveURL(url);
	// }

	// do search in parallel

}

function loadAllSelects() {
	// called from search results "Narrow Your Search" page
	var f = document.forms.srch;
	if (f && f["types[]"] && f["poles[]"] && f["voltages[]"] && f["amperages[]"]) {
		loadSelects("types", f);
		loadSelects("poles", f);
		loadSelects("voltages", f);
		loadSelects("amperages", f);
	}
}

function propagate(src) {
	loadSelects(src,document.forms.srch);

}

function defselect(sbox, string) {
	var si = sbox.selectedIndex;
	for (var i = sbox.options.length - 1; i >= 0; i--) {
		sbox.options[i] = null;
		sbox.options[0] = new Option(string, 0);
	}
	sbox.options[0].selected = true;
}

/*
function getSelection(sbox) {
	var a = Array();
	var j = 0;
	if (sbox.options[0].selected)
	return a;

	for (i = 1; i < sbox.options.length; i++) {
		if (sbox.options[i].selected) {
			a[j++] = sbox.options[i].value;
		}
	}
	return a;
}
*/
function optName(s) {
	if (s.indexOf('=') == -1) return s;
	return s.substr(0, s.indexOf('='));
}

function optValue(s) {
	if (s.indexOf('=') == -1) return s;
	return s.substr(s.indexOf('=')+1);
}



function setSelect(sbox, opts, defaultValue) {
	var name = defaultValue;
	var si = sbox.selectedIndex;
	var j = 0;
	var orig = Array();
	var z = 0;
	var selIdx = 0;
	var hassel = 0;

	for (var x = 0; x < sbox.options.length; x++) {
		if (sbox.options[x].selected)
		orig[z++] = sbox.options[x].value;
	}

	// TODO
	// if (isSelf && opts.length < sbox.options.length) return;

	for (var i = sbox.options.length - 1; i >= 0; i--)
	sbox.options[i] = null;
	sbox.options[0] = new Option(name, 0);
	if (orig.length == 0 || orig[0] == 0) {
		sbox.options[0].selected = true;
		hassel = 1;
	}

	for (j = 0; j < opts.length; j++) {
		var value = "";
		sbox.options[j+1] = new Option(optName(opts[j]), optValue(opts[j]));
		value = optValue(opts[j]);
		for (x = 0; x < orig.length; x++) {
			if (value == orig[x]) break;
		}
		if (x != orig.length) {
			sbox.options[j+1].selected = true;
			hassel = 1;
		}
	}
	if (!hassel) {
		sbox.options[0].selected = true;
	}
}

function resetsearch2()
{
	resetSearch2();
}
function resetsearch() {
	resetSearch();
	return;

	var mfg = document.forms["srch"].mfg;
	var types = document.forms["srch"].types;
	var poles = document.forms["srch"].poles;
	var amps = document.forms["srch"].amperages;
	var volts = document.forms["srch"].voltages;

	mfg.selectedIndex = types.selectedIndex = poles.selectedIndex =
	amps.selectedIndex = volts.selectedIndex = 0;
	propagate("");
}
