function getElementsByTagNames(list, obj) {
	if (!obj) var obj = document;
	var tagNames = list.split(',');
	var resultArray = new Array();
	for (var i = 0; i < tagNames.length; i++) {
		var tags = obj.getElementsByTagName(tagNames[i]);
		for (var j = 0; j < tags.length; j++) {
			resultArray.push(tags[j]);
		}
	}
	var testNode = resultArray[0];
	if (!testNode) return [];
	if (testNode.sourceIndex) {
		resultArray.sort(function (a, b) {
				return a.sourceIndex - b.sourceIndex;
		});
	}
	else if (testNode.compareDocumentPosition) {
		resultArray.sort(function (a, b) {
				return 3 - (a.compareDocumentPosition(b) & 6);
		});
	}
	return resultArray;
}


//var file = 'http://www.hornblasters.com/xml/terms/compressors.xml';
//var file = 'test.xml';
var xmlDoc;
function importXML(file) {
 var moz = (typeof document.implementation != 'undefined') && (typeof
document.implementation.createDocument != 'undefined');
 var ie = (typeof window.ActiveXObject != 'undefined');

 if (moz) {
   xmlDoc = document.implementation.createDocument("", "", null)
   xmlDoc.onload = readXML;
 } else if (ie) {
   xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
   xmlDoc.async = false;
   while(xmlDoc.readyState != 4) {};
 } else {
 	alert('Error');
 }
 xmlDoc.load('/terms.xml');
}

var termArray = new Array();

function stringFilter(stringValue) {
	stringValue = stringValue.toLowerCase();
	var filter = 'abcdefghijklmnopqrstuvwxyz';
	var numeric   = '0123456789';
	var firstChar = 0;
	var returnval ='';
	for (j = 0; j < stringValue.length; j++) {
		if (firstChar) {
			filter = filter + numeric;
		}
		if (filter.indexOf(stringValue.charAt(j)) > -1) {
			returnval += stringValue.charAt(j);
		if (!firstChar) firstChar =1;
		}
	}
	return returnval;
}

function readXML() {
	var termObject = document.getElementById ? document.getElementById("product_specs") : document.all.product_specs;
	var termObjects = getElementsByTagNames('b', termObject);

	var rootNode = xmlDoc.getElementsByTagName('terms').item(0);

	var nodes = rootNode.getElementsByTagName('term');
	var nodesLength = nodes.length;


	for (i = 0; i < nodesLength; i++) {
		currentObject = nodes[i];
		termName = 't' + currentObject.getAttribute('name');
		termDef = currentObject.textContent;
		if (termName && termDef) termArray[termName] = termDef;
	}

	arrayLength = termObjects.length;
	for (i = 0; i < arrayLength; i++) {
		currentObject = termObjects[i];
		termName = 't' + stringFilter(currentObject.innerHTML);
		if (termArray[termName]) {
			currentObject.setAttribute('onmouseover', 'ttShow(\'' + termArray[termName] + '\');');
			currentObject.setAttribute('onmouseout', 'ttExit();');
			currentObject.setAttribute('class', 'ttClass');
		}
	}
}


importXML();