/*  ==================================================================================================================
FILE 						:XMLXSLTparser.js 
DESCRIPTION 		:This javascript fille provides parsing for  XML files.  After the parsing of an XML and an XSL file , an XSLT transformation can be performed on client side. 
COMPATIBILITY 		:IE6+ ; NN  ; FF 
ATTENTION 			: url 's are provided for local testing as  "file ://"
AUTHOR 				: J.Vannieuwenhuyse  - Feb , 2007
==================================================================================================================*/
<!--

function parseXML(sFileName) {
		if (navigator.userAgent.indexOf("MSIE") != -1) {
		//1A. IE : een instantie van het DOM document aanmaken
		oDomDoc =  new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
		oDomDoc.validateOnParse=true		//default : true
		}
		
		if ( (navigator.appName =='Netscape') && ( navigator.userAgent.indexOf('Opera') == -1) ) {
		//1B.Mozilla:een instantie van het DOM document aanmaken
		oDomDoc = document.implementation.createDocument("MijnNS", "rootElement",null); 
		//voor snelheid van parsing: een eventlistener toevoegen
		oDomDoc.addEventListener("load", documentLoaded, false);//NN alternatief op oDom.async	
		}
	
	//2.opladen in het geheugen 
	oDomDoc.async = false; // true = wacht niet op volledige parsing
	oDomDoc.validateOnParse=true	;
	oDomDoc.load(sFileName);
	documentLoaded("");
	return oDomDoc
}	
	
function documentLoaded(e) {
	var sXML ;  var  sErrorXML ;
	//3A. foutdetectie IE
		if (navigator.userAgent.indexOf("MSIE") != -1) {
			sErrorXML = oDomDoc.parseError;
			if (sErrorXML.errorCode != 0 ) {
			alert( sErrorXML.reason + '\n Line ' + sErrorXML.line ) ;
			} else {
			sXML =oDomDoc.xml	
			}
		}
	// 3B.foutdetectie NN
		if ( (navigator.appName =='Netscape') && ( navigator.userAgent.indexOf('Opera') == -1) ) {
			//Mozilla voorziet actueel geen XML validatie (DTD/Schema)
			if (oDomDoc.documentElement.nodeName == "parsererror") {
 			var oXMLSerializer = new XMLSerializer();
			sErrorXML= oXMLSerializer.serializeToString(oDomDoc);
			alert (sErrorXML);
			} else {
			// test purposes only- object naar string convertor
			var oSerializer = new XMLSerializer();
			var sXML = oSerializer.serializeToString(oDomDoc);
			//alert (sXML) 
			}
		}
	//4. test  en dugging purposes only : show loaded XML file 
	//window.alert (sXML);
	//window.alert (oDomDoc.documentElement.nodeName + " is  loaded .") ;
}
	
function transformXML( xmlURL , xslURL , arrParam) {
		//5. Parsen van de  XML file :
			oDomDocXML = parseXML(xmlURL) ;
		//6. Parsen van de XSL file  : 
			oDomDocXSL = parseXML(xslURL) ;
		//7. transformatie uitvoeren
		var processor ;
		var  sNewDocument ;
		
		if ( (navigator.appName =='Netscape') && ( navigator.userAgent.indexOf('Opera') == -1) ) { 
		processor = new XSLTProcessor();
		processor.importStylesheet(oDomDocXSL); 
			//8. parameters toevoegen binnen Mozilla 
		 	if ( arguments.length > 2) {
		 		for ( i=0 ; i<arguments.length-2 ; i++)  {
				sParamTxt ='param'+i  //param0 ; param1 ... 
				sParamValue = arguments[2+i] ;
				//alert(sParamTxt + ":" + sParamValue) // Moz.debugging purposes only 
				processor.setParameter( null,sParamTxt,sParamValue) ;//namespace, localName , value 
				}
		 	}
			oNewDocument = processor.transformToDocument(oDomDocXML);
			var oSerializer = new XMLSerializer(); // blijft anders een (HTML) object .
			sNewDocument = oSerializer.serializeToString(oNewDocument);
		} else {
			var xslt = new ActiveXObject("Msxml2.XSLTemplate"); 
			xslt.stylesheet = oDomDocXSL;
			var xslProc = xslt.createProcessor(); 
			xslProc.input = oDomDocXML; 
				//8. parameters toevoegen binnen IE 
		 	if ( arguments.length > 2) {
		 		for ( i=0 ; i<arguments.length-2 ; i++)  {
				sParamTxt ='param'+i  //param0 ; param1 ... 
				sParamValue = arguments[2+i] ;
				//alert(sParamTxt + ":" + sParamValue) // IE debugging purposes only 
				xslProc.addParameter( sParamTxt, sParamValue); 
				}
			}
			//9. transformatie uitvoeren
			xslProc.transform(); 
			sNewDocument = xslProc.output	// prerendering noodzakelijk alvorens return 
	//		sNewDocument = oDomDocXML.transformNode(oDomDocXSL)
		}
	//test and debugging purposes only 
	//alert ( sNewDocument)  // transformed document
	return sNewDocument
}


function showInWindow(sNewDocument, iWidth, iHeight , iLeft , iTop  ) {
		var newWindow = window.open("", "XSL_Transformation", 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=auto, resizable=yes,copyhistory=yes,width='+iWidth+',height='+iHeight+', left='+iLeft+', top='+iTop+'');
		newWindow.document.write(sNewDocument);		
		newWindow.document.close();   
}

function  getAppLocation() {
	//FF verwacht het fullpath bij local rendering 
	applicationLocation= unescape(document.location.href.substring(0 , location.href.lastIndexOf("/")+1));  // substring 10 wo disk
	return applicationLocation

}
-->
