// 
//
//

function XSLParam(name, value) {
   this.name = name;
   this.value = value;
}


function XmlManager() {




this.getDom  = function getDom()
{
if (typeof ActiveXObject != 'undefined') {
  var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
  }
else {
  var xmlDoc= document.implementation.createDocument("","",null);
  }
  
  return xmlDoc;

}

this.getDomFromFile = function(file) {
			// Load XML
			try{
			if (typeof ActiveXObject != 'undefined') {// IE
				var xml = new ActiveXObject("Microsoft.XMLDOM");				
				xml.async = false;
				xml.load(file);
				if(xml.xml==""){
				    xml=undefined;
				    }
			}
			else {	// others
				var myXMLHTTPRequest = new XMLHttpRequest();
				myXMLHTTPRequest.open("GET", file, false);
				myXMLHTTPRequest.send(null);
				var xml = myXMLHTTPRequest.responseXML;				
			}
			}
			catch(e){
			  window.status=e.message ;
			  return ;
			}
			return xml;
		}
		
this.getDomFromXml = function(xml) {
          try{
			if (typeof ActiveXObject != 'undefined') {
				var dom = new ActiveXObject("Microsoft.XMLDOM");
				dom.async = false;
				dom.loadXML(xml);
				if(dom.xml==""){
				    dom=undefined;
				    }

			}
			else {
				parser = new DOMParser();
				dom = parser.parseFromString(xml, "text/xml");						
			}
			}
			catch(e){
			  window.status=e.message ;
			  return ;
			}
			return dom;
		}

this.getDomFromXml = function(xml) {
            try{
			if (typeof ActiveXObject != 'undefined') {
				var dom = new ActiveXObject("Microsoft.XMLDOM");
				dom.async = false;
				dom.loadXML(xml);
				if(dom.xml==""){
				    dom=undefined;
				    }			
			}
			else {
				parser = new DOMParser();
				dom = parser.parseFromString(xml, "text/xml");						
			}
			}
			catch(e){
			  window.status=e.message ;
			  return ;
			}
			return dom;
		}
		

this.transform = function(xmlDoc,xslDoc,parameters) {

			var transform="";

			parameters=parameters?parameters:new Array();
			try{
			if (typeof ActiveXObject != 'undefined') {
			   	
			   	var xslt = new ActiveXObject("Msxml2.XSLTemplate.4.0");
				var xslDoc4 = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.4.0");
				var xslProc;
				xslDoc4.async = false;
				xslDoc4.load(xslDoc);
				xslt.stylesheet = xslDoc4;
				xslProc = xslt.createProcessor();
				xslProc.input = xmlDoc;
				for(var i=0;i<parameters.length;i++){
				     xslProc.addParameter(parameters[i].name, parameters[i].value);
				}
				xslProc.transform();				
				transform = xslProc.output;
				
			}
			else {
				var xsl = new XSLTProcessor();
				for(var i=0;i<parameters.length;i++){
				     xsl.setParameter(null, parameters[i].name, parameters[i].value); 
				}				
				xsl.importStylesheet(xslDoc);
				var fragment=xsl.transformToFragment(xmlDoc, document);
				if( fragment.childNodes.length>0 ){

				  for(var t=0;t<fragment.childNodes.length;t++){
				    
				    transform += fragment.childNodes[t].innerHTML;
				  }
				  }
				else{
					alert("error");
				}
			}
			}
			catch(e){
			  window.status=e.message ;
			  return;
			}
			return transform;
		} 
	
	
	//this.checkMSXML();	
}   

