function XsltClass(xml,xsl,div){
	this.oDiv = div;
  	this.oXmlDoc = this.setXmlDoc(xml);
  	this.oXslDoc = this.setXslDoc(xsl);
	this.isReady = true;
	this.processor = this.setProcessor();
};
  	
XsltClass.prototype = {   	  
  		
  	  	isReady: false,
  	  	oDiv: null,
  	  	oXmlDoc: null,
  	  	oXslDoc: null,
  	  	processor: null,
  	  	
  		setXmlDoc: function(xml){
  			var xmlDoc;
  			
  			if(typeof xml == 'object')
  				xmlDoc = xml;
  			else if(typeof xml == 'string'){
  				if(this.isIE()){  				
  					xmlDoc=new ActiveXObject("MSXML2.FreeThreadedDOMDocument");
					xmlDoc.async=false;
					xmlDoc.load(xml);
  				}else{
  					xmlDoc = document.implementation.createDocument("", "", null); 
　　					xmlDoc.async = false;
　　 				xmlDoc.load(xml);
  				}  					
  			}  			
  			return xmlDoc;
  		},
  		
  		setXslDoc: function(xsl){
  			var xslDoc;
  			if(this.isIE()){
	  			var xslDoc=new ActiveXObject("MSXML2.FreeThreadedDOMDocument");
				xslDoc.async=false;
				xslDoc.load(xsl);				
  			}else{
  				xslDoc = document.implementation.createDocument("", "", null);
　　 			xslDoc.async = false; 
　　 			xslDoc.load(xsl); 
  			}
  				
  			return xslDoc;
  		},
  		
  		isIE: function(){
  			if(window.ActiveXObject)
  				return true;
  			else
  				return false;
  		}, 
  		
  		setProcessor: function(){
  			var tProcessor = null;
  			if(this.isIE()){
  				var xslTemplate = new ActiveXObject("MSXML2.XSLTemplate");
  				xslTemplate.stylesheet = this.oXslDoc;  				
				tProcessor = xslTemplate.createProcessor();
  			}else{
  				tProcessor = new XSLTProcessor();
  			}  					
  			return tProcessor;
  		},
  		
  		setParam: function(param,value){
  			if(this.isIE()){
  				this.processor.addParameter(param,value);
  			}else{
  				this.processor.setParameter(null,param,value);
  			}  			
  		},
  		
  		transformData: function(oXmlDoc,oXslDoc){  
  			var tProcessor = this.processor;
  			
  			if(this.isIE()){
  				tProcessor.input= this.oXmlDoc;
  				tProcessor.transform();			
				var rs = this.processor.output;
				return rs;
  			}else{  					
  				tProcessor.importStylesheet(oXslDoc);  				
  				var result = tProcessor.transformToDocument(oXmlDoc);
  				var xmls = new XMLSerializer();
  				var rs = xmls.serializeToString(result);
  				
  				return rs;
  			}  			
  		},
  		
  		output: function(){
  			var rs = null;
  			if(this.isReady){  				
  				rs = this.transformData(this.oXmlDoc,this.oXslDoc);
				document.getElementById(this.oDiv).innerHTML = rs;
  			}
  		}  		
};

function HttpRequestXmlDoc(xmlUrl){

	function getHttpRequest(){
		var xmlHttp = false;
		
		try{
			xmlHttp = new XMLHttpRequest();
		}catch(microsoft){
			try{
				xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
			}catch(otherMicrosoft){
				try{
					xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
				}catch(failed){
					xmlHttp = false;
				}
			}
		}		
		if(!xmlHttp)
			alert("Error initializing XMLHttpRequest!");			
		return xmlHttp;
	}
	
	var http_request = getHttpRequest();
	
	http_request.open('GET', xmlUrl, true);
    http_request.send(null);
    http_request.onreadystatechange = function(){
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                alert(http_request.responseXML);
            } else {
               alert("Error: status code is " + http_request.status);
            }
        }
    }
};
                               