function filterModelsBy(filter) {
	var models = new Array();
	var items = machineAttachments[filter];
	if (items)
		for (var i = 0; i < items.length; ++i)
			models += filterModelsBy(items[i]);
	else
		models += '-' + filter;
	return models;
}
function getFilter(m1, m2) {
	if (m1.selectedIndex == 0) {
		return '';
	}
	result = '&filter=';
	var m1val = m1.options[m1.selectedIndex];
	var m2val = m2.options[m2.selectedIndex];
	if (m2.selectedIndex == 0) {
		result += m1val.text;
	} else {
		if (m2val.value.indexOf('s') > -1) {
			result += m1val.text + '>' + m2val.text;
		} else {
			result += m2val.value;
		}
	}
	return result;
}
function handleMachineDropdown() {
	var m1 = document.form1.machines;
	var m2 = document.form1.machines2;
	var m1val = m1.options[m1.selectedIndex].value + '';
	var m2val = m2.options[m2.selectedIndex].value + '';

	m2.style.visibility = m1.selectedIndex == 0 ? 'hidden' : 'visible';
	if (document.getElementById('dl')) {
		var anchors = document.getElementById('dl').getElementsByTagName('span');
		for (var i = 0; i < anchors.length; ++i)
			anchors[i].style.display = m1.selectedIndex == 0 ? 'block' : 'none';
		var isModel = m2.selectedIndex > 0;
		var arr = isModel ? attachments[m2val] : attachments[m1val];
		if (arr) {
			var filter = getFilter(m1, m2);
			for (var i = 0; i < arr.length; ++i) {
				var spanAnc = document.getElementById('a' + arr[i]);
				spanAnc.style.display = 'block';
				var anchor = spanAnc.getElementsByTagName('a')[0];
				anchor.href = anchor.href.split('&filter=')[0] + filter;
			}
		}
	}
	var dt = document.getElementsByTagName('dt');
	var al = document.form1.attachmentLinks;
	if (al) {
		al.options.length = 1;
		for (var i = 0; i < dt.length; ++i) {
			var block = false;
			var anchors = dt[i].getElementsByTagName('span');
			for (var j = 0; j < anchors.length && !block; ++j) {
				block = anchors[j].style.display == 'block';
			}
			dt[i].style.display = block ? 'block' : 'none';
			if (block) {
				var groupTitle = dt[i].getElementsByTagName('div')[2].innerHTML;
				al.options[al.options.length] = new Option(groupTitle, groupTitle);
			}
		}
		var crumb = document.getElementById('attachmentCrumb');
		if (crumb)
			crumb.innerHTML = 'Work Tool Attachments for ' + m1.options[m1.selectedIndex].text + (m2.selectedIndex > 0 ? '>' + m2.options[m2.selectedIndex].text : '');
	} else {
		//all machine families that support this subfamily + "all" value
		var isModel = m2.selectedIndex > 0;
		if (window.buildRelatedEquipmentTab)
			buildRelatedEquipmentTab(getFilter(m1, m2));
	}
}
var allModels;
function getLocationFilter() {
	var parts = location.search.split('&filter=');
	if (parts.length == 2) {
		var filter = parts[1].indexOf('&') == -1 ? parts[1] : parts[1].substring(0, parts[1].indexOf('&'));
		return filter;
	}
}
function setFilter() {
	var filter = getLocationFilter();
	if (filter) {
		var found = false;
		var filterParts = unescape(filter).split('>');
		var m1 = document.form1.machines;
		for (var i = 0; i < m1.options.length; ++i) {
			if (m1.options[i].text == filterParts[0]) {
				m1.selectedIndex = i;
				change(m1);
				found = true;
				break;
			}
		}
		if (filterParts.length == 2) {
			var m2 = document.form1.machines2;
			for (var i = 0; i < m2.options.length; ++i) {
				if (m2.options[i].text == filterParts[1]) {
					m2.selectedIndex = i;
					change(m2);
					break;
					found = true;
				}
			}
		}
		if (!found)
			setValue(document.form1.machines, filter.indexOf('m') == 0 ? filter.substring(1) : filter);
	}
}
function handlePageMachineDropdown(modelId) {
	if (!allModels || allModels.length == 0) {
		setFilter();
	}
	var m1 = document.form1.machines;
	var m2 = document.form1.machines2;
	var m1val = m1.options[m1.selectedIndex].value + '';
	var m2val = m2.options[m2.selectedIndex].value + '';

	m2.style.visibility = m1.selectedIndex == 0 ? 'hidden' : 'visible';

	var modelAncs = new Array();
	var c7 = document.getElementById('C7');
	if (!allModels || allModels.length == 0) {
		allModels = new Array();
		if (c7) {
			var ancs = c7.getElementsByTagName('a');
			for (var i in ancs) {
				if (ancs[i].className != 'oE' && ancs[i].innerHTML) {
					ancs[i].id = attNames[trim(ancs[i].innerHTML)];
					allModels.push(ancs[i].id);
				}
			}
		} else if (modelId) {
			allModels.push(modelId + '');
		}
	}
	var val = m2.selectedIndex > 0 ? m2val : m1.selectedIndex > 0 ? m1val : '';
	var atts = pagesArray[val];
	filterModels(val);
	drawRelatedEquipment(val);
}
function trim(str) {
	return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}
function filterModels(val) {
	var atts = val ? pagesArray[val] : allModels;
	var allAtts = ',' + atts.join(',') + ',';
	var oddrow = true;
	var c7 = document.getElementById('C7');
	var attachmentContent = c7 && c7.getElementsByTagName('table')[2];
	if (attachmentContent) {
		var table = '<table id=contentList border=0 cellspacing=0 cellpadding=0 width=100% class="innerList"><tr>' + attachmentContent.rows[0].innerHTML + '</tr>';
		for (var i in allModels) {
			if (allModels[i] && allAtts.indexOf(',' + allModels[i] + ',') > -1) {
				table += '<tr>';
				var tds = document.getElementById(allModels[i]).parentNode.parentNode.getElementsByTagName('td');
				for (var j in tds)
					if (tds[j].innerHTML)
						table += '<td class=' + (oddrow ? 'oddrow' : 'evenrow') + '>' + tds[j].innerHTML + '</td>';
				table += '</tr>';
				oddrow = !oddrow;
			}
		}
		var odd = false;
		table += '</table>';
		if (!document.getElementById('filterTarget')) {
			var filterTarget = document.createElement('div');
			filterTarget.id = 'filterTarget';
			attachmentContent.parentNode.appendChild(filterTarget);
		}
		attachmentContent.style.display = 'none';
		document.getElementById('filterTarget').innerHTML = table;
		var ancs = document.getElementById('filterTarget').getElementsByTagName('a');
		for (var i = 0; i < ancs.length; ++i) {
			ancs[i].href = addFilterParameter(ancs[i].href);
		}
	}
}
function addFilterParameter(href, param) {
	var filter = getFilter(document.form1.machines, document.form1.machines2);
	if (filter)
		return href.split('&filter=')[0] + filter;
	return href;
}
function drawRelatedEquipment(val) {
	if (document.getElementById('relatedEquipment')) {
		var text = '<table id=contentList border=0 cellspacing=0 cellpadding=0 width=100% class="innerList">';
		var atts = val ? pagesArray[val] : allModels;
		var oddrow = true;
		for (var i in atts) {
			var hasMachineLinks = false;
			var anc = document.getElementById(atts[i]);
			if (anc) {
				var localText = '<tr><td valign=top class=' + (oddrow ? "oddrow" : "evenrow") + '><a href="' + anc.href + '">' + anc.innerHTML + '</a></td><td class=' + (oddrow ? "oddrow" : "evenrow") + '>';
				var mach = pagesArray[atts[i]];
				for (var j in mach) {
					if (auArray[mach[j]]) {
						hasMachineLinks = true;
						var val = getOptByValue(document.form1.machines, mach[j]);
						localText += '<a href="' + auArray[mach[j]] + '">' + val.text + ' - ' + getOptByValue(document.form1.machines, val.parentVal).text + '<br>';
					}
				}
				if (hasMachineLinks) {
					oddrow = !oddrow;
					text += localText + '</td></tr>';
				}
			}
		}
		text += '</table>';
		document.getElementById('relatedEquipment').innerHTML = text;
	}
}
var attachments = new Array();
function jumpToFamily() {
	var al = document.form1.attachmentLinks;
	window.location.hash = al.options[al.selectedIndex].text;
}
function attach(val) {
	var arr = attachments[val + ''];
	if (!arr)
		arr = new Array();
	for (var i = 1; i < arguments.length; ++i)
		arr.push(arguments[i]);
	attachments[val + ''] = arr;
}
var auArray = new Array();
function au(modelId, path) {
	auArray[modelId] = path;
}
var pagesArray = new Array();
function attachPages(val) {
	var arr = pagesArray[val];
	if (!arr)
		arr = new Array();
	for (var i = 1; i < arguments.length; ++i) {
		arr.push(arguments[i]);
		var arr2 = pagesArray[arguments[i]];
		if (!arr2)
			arr2 = new Array();
		arr2.push(val);
		pagesArray[arguments[i]] = arr2;
	}
	pagesArray[val] = arr;
}
var attNames = new Array();
function attName(id, name) {
	attNames[name] = id;
}
