function clfxsltparserAddFrames(clfXML, addFrameData) {
	function addFrame(frame) {
		if (frame.nodeName == "Entities" || frame.nodeName == "Events_Facts") {
			var ntts = frame.childNodes;
			for (var i=0; i < ntts.length; i++) {
				var ntt = ntts[i];
				var name = ntt.nodeName;
				if (name == "#text")
					continue;
				var offset = parseInt(ntt.getAttribute("offset"));
				var len = parseInt(ntt.getAttribute("length"))
				var attrs = new Object();
				attrs['_category'] = name;
				var frameid = ntt.getAttribute("FID");
				if (frameid == null || frameid == "")
					frameid = ++_id;
				// traverse all terms inside the frame
				for (var j=0; j < ntt.childNodes.length; j++) {
					if (ntt.childNodes[j].firstChild != null && ntt.childNodes[j].firstChild.nodeValue != null && ntt.childNodes[j].firstChild.nodeValue.length > 0 /*&& ntt.childNodes[j].firstChild.nodeValue != "N/A"*/) {
						if (ntt.childNodes[j].nodeName.toLowerCase() == "detection")
							continue;
						attrs[ntt.childNodes[j].nodeName] = ntt.childNodes[j].firstChild.nodeValue.replace(/[\s\n\t\r]+/g, ' ');
						// mark terms inside frames
						var termlen = parseInt(ntt.childNodes[j].getAttribute("length"));
						var termoffset = parseInt(ntt.childNodes[j].getAttribute("offset"));
						if (len > termlen && offset <= termoffset && offset + len > termoffset)
							addFrameData(frameid * -1, attrs, termoffset, termlen);
					}
				}
				attrs['_isTerm'] = attrs[attrs['_category']] != null; //TODO: fill from CSS
				if (attrs['_isTerm']) {
					attrs['_name'] = attrs[attrs['_category']];
					attrs[attrs['_category']] = null;
				}
				addFrameData(frameid, attrs, offset, len);
			}
		}
	}
	var frmsroot = clfXML.getXML().getElementsByTagName("Results");
	if (frmsroot == null || frmsroot.length == 0)
		throw new Error("CLFERROR: Unsupported XSLT Document\n\t('Results' element is missing)");
	var allframes = frmsroot[0].childNodes;
	if (allframes == null || allframes.length == 0)
		throw new Error("CLFERROR: Unsupported XSLT Document\n\t(No 'Entities' or 'Events_Facts' elements)")
	var _id = 100000; // default frame id if no frame id found
	for (var i = 0; i < allframes.length; i++)
		addFrame(allframes[i]);
}