function process_faq () {

	// Get the faq list object.
	oList = document.getElementById('faq');

	// Get the faq summary object.
	_oSummary = document.getElementById('summary');
	oSummary = _oSummary.appendChild(document.createElement('ol'));

	// Initiate the question and answer counts.
	qcount = 1; acount = 1;
	
	// Loop through each of its nodes.
	for(var iI=0; iI < oList.childNodes.length; iI++) {
		
		// Save a reference to the node.
		oNode = oList.childNodes[iI];
		
		// Check on the tag type.
		if (typeof oNode.tagName == 'string') {
			
			// If its a dt then.
			if (oNode.tagName.toUpperCase() == 'DT') {
				
				// Add the question link to the summary.
				oSummary.appendChild(document.createElement('li'));
				oSummary.childNodes[oSummary.childNodes.length - 1].innerHTML = '<a href="#'+qcount+'">'+oNode.innerHTML+'</a>';

				// Add a Q, number and anchor.
				oNode.innerHTML = '<a id="'+qcount+'"></a>Q.'+qcount+'.&nbsp;'+oNode.innerHTML;

				// Increament the count.
				qcount++;
			}

			// If its a dd then.
			if (oNode.tagName.toUpperCase() == 'DD') {
				
				// Add an A and number to the first element.
				if (document.all)
					oNode.childNodes[0].innerHTML = '<b>A.'+acount+'.</b>&nbsp;'+oNode.childNodes[0].innerHTML;
				else
					oNode.childNodes[1].innerHTML = '<b>A.'+acount+'.</b>&nbsp;'+oNode.childNodes[1].innerHTML;

				// Add a back to top link.
				oNode.appendChild(document.createElement('p'));
				oNode.childNodes[oNode.childNodes.length - 1].className = 'back';
				oNode.childNodes[oNode.childNodes.length - 1].innerHTML = '<a href="#">Back to top</a>';
				
				// Increament the count.
				acount++;
			}
		}
	}
}