
// hands over the transformation to the browser specific function
function XsltInsert(DivId,XmlPath,XslPath){

	// isMOZILLA
	if (document.implementation&&document.implementation.createDocument){
		XsltInsertGecko(DivId,XmlPath,XslPath);
		return true;
	}
	// isIE
	else if (document.all){
		XsltInsertIE(DivId,XmlPath,XslPath);
		return true
	}
	else {
		return false;
	}
}

//Loads an XML XSLTransformation into a specific Div
//IE implementation
function XsltInsertIE(DivId,XmlPath,XslPath) {

	//Dom object to modify.
	var oDiv=document.getElementById(DivId);
	var xslt = new ActiveXObject("Msxml2.XSLTemplate.3.0");
	var xsldoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.3.0");
	var xslproc;
	xsldoc.async = false;
	xsldoc.load(XslPath);
	if (xsldoc.parseError.errorCode != 0) {
	   var myErr = xsldoc.parseError;
	   alert("You have error " + myErr.reason);
	} else {
	   xslt.stylesheet = xsldoc;
	   var xmldoc = new ActiveXObject("Msxml2.DOMDocument.3.0");
	   xmldoc.async = false;
	   xmldoc.load(XmlPath);
	   if (xmldoc.parseError.errorCode != 0) {
		  var myErr = xmldoc.parseError;
		  alert("You have error " + myErr.reason);
	   }else {
		xslproc = xslt.createProcessor();
		xslproc.input = xmldoc;
		xslproc.transform();
		// Transform
		oDiv.innerHTML = xslproc.output;
		}
	}

}

//Loads an XML XSLTransformation into a specific Div
//Gecko implementation (Moz 1.2 up?)
function XsltInsertGecko(DivId,XmlPath,XslPath) {

		var xsltProcessor = new XSLTProcessor();

		var myXMLHTTPRequest = new XMLHttpRequest();
		myXMLHTTPRequest.open("GET", XslPath, false);
		myXMLHTTPRequest.send(null);
		var xslStylesheet = myXMLHTTPRequest.responseXML;
		xsltProcessor.importStylesheet(xslStylesheet);

		myXMLHTTPRequest = new XMLHttpRequest();
		myXMLHTTPRequest.open("GET", XmlPath, false);
		myXMLHTTPRequest.send(null);
		var xmlDoc = myXMLHTTPRequest.responseXML;

		xmlDoc = xsltProcessor.transformToDocument(xmlDoc);

		var xmls = new XMLSerializer();
		var output = xmls.serializeToString(xmlDoc);

		//document.write(output);

		//Dom object to modify.
		var oDiv=document.getElementById(DivId);

		// Transform
		oDiv.innerHTML = output;

}
