(function($) {
	// $(...).xslt(options) - Set content to transformed XML
	// xml and xsl parameters should be DOM nodes (not text)
	$.fn.xslt = function(options) {
		
		var myXML=options.xmlUrl		
		var myXSL=options.xslUrl
			
		var xmlFile=options.xmlFile
		var xslFile=options.xslFile
		var elementId=options.elementId
		if (options.fn) var fn=options.fn
		
		var optionsXSL={}
		
		optionsXSL.xslFile=myXSL
		optionsXSL.elementId=this
		if (options.callbackPostRender) optionsXSL.fn=options.callbackPostRender
		if (options.xml) {optionsXSL.xml=options.xml}
		if (options.xmlUrl) {optionsXSL.xmlFile=options.xmlUrl}
	
		setTimeout(function() {showContent(optionsXSL);},1)   
			
		return this;
	}
})(jQuery);



 function transformXml(xml,xsl) {
   // code for IE
   if (window.ActiveXObject)
    return xml.transformNode(xsl);
   // code for Mozilla, Firefox, Opera, etc.
   else if (document.implementation && document.implementation.createDocument)
   {
    xsltProcessor=new XSLTProcessor();
    xsltProcessor.importStylesheet(xsl);
    return xsltProcessor.transformToFragment(xml,document);    
   }
  }
 
  function showContent(options) {

	var xml
	var xsl
	var xmlFile=options.xmlFile
	var xslFile=options.xslFile
	var elementId=options.elementId
	if (options.fn) var fn=options.fn

    if (options.xml) {
		xml=options.xml
	} else {
		  xml=loadXMLDoc(xmlFile);		
	}
   xsl=loadXMLDoc(xslFile);
   if (elementId == "none") return;
   // code for IE
   if (window.ActiveXObject)
     $(elementId).html(transformXml(xml,xsl));
   // code for Mozilla, Firefox, Opera, etc.
   else if (document.implementation && document.implementation.createDocument)
     $(elementId).html(transformXml(xml,xsl));
	
	
	//alert(transformXml(xml,xsl));
	 
	if (fn) fn() 
  }

  function stringToDoc(s) {
   var doc;
   if (window.ActiveXObject) {
       doc = new ActiveXObject('Microsoft.XMLDOM');
       doc.async = 'false';
       doc.loadXML(s);
   }
   else
       doc = (new DOMParser()).parseFromString(s, 'text/xml');
   return (doc && doc.documentElement && doc.documentElement.tagName != 'parsererror') ? doc : null;
}


  function loadXMLDoc(fname) {
		var xmlDoc
		
		$.ajax({
			url: fname,
			//beforeSend : function(req){req.overrideMimeType('text/xml')},
			dataType: 'text',
			async:false,
			success: function(data) {
				xmlDoc=stringToDoc(data);
			}
		})
		
		return xmlDoc	
  }
 



