function getDomFromFile(file) {
	// Load XML
	var xml;
	
	if (typeof ActiveXObject != 'undefined') {// IE
		xml = new ActiveXObject("Microsoft.XMLDOM");
		xml.async = false;
		xml.load(file);
	}
	else {	// others
		var myXMLHTTPRequest = new XMLHttpRequest();
		myXMLHTTPRequest.open("GET", file, false);
		myXMLHTTPRequest.send(null);
		xml = myXMLHTTPRequest.responseXML;
	}
	return xml;
}

function getDomFromXml(xml) {
    var dom;
	if (typeof ActiveXObject != 'undefined') {
		dom = new ActiveXObject("Microsoft.XMLDOM");
		dom.async = false;
		dom.loadXML(xml);
	}
	else {
		parser = new DOMParser();
		dom = parser.parseFromString(xml, "text/xml");						
	}
	return dom;
}


function xslt(xml_file, xslt_file) {
    var xmlDoc = getDomFromFile(xml_file);
	var xslDoc = getDomFromFile(xslt_file);
	    
	var transform;
	if (typeof ActiveXObject != 'undefined') {
		transform = xmlDoc.transformNode(xslDoc);
	}else{
	    var xsl = new XSLTProcessor();
		xsl.importStylesheet(xslDoc);
		var fragment = xsl.transformToFragment(xmlDoc, document);
		transform = '';
		for(i=0;i<fragment.childNodes.length;i++){
		    transform += $.mtgcOuterHTML(fragment.childNodes[i]);   
		};
	}
	
	return transform;
}

(function($) {
    $.fn.xsltVesti = function(xml_file, xslt_file){
        this.html(xslt(xml_file, xslt_file));
    };
    $.fn.xsltVestiStr = function(xml_file, xslt_file){
        var xmlDoc = getDomFromXml(xml_file);
	    var xslDoc = getDomFromFile(xslt_file);
    	    
	    var transform;
	    if (typeof ActiveXObject != 'undefined') {
		    transform = xmlDoc.transformNode(xslDoc);
	    }else{
	        var xsl = new XSLTProcessor();
		    xsl.importStylesheet(xslDoc);
		    var fragment = xsl.transformToFragment(xmlDoc, document);
		    transform = '';
		    for(i=0;i<fragment.childNodes.length;i++){
		        transform += $.mtgcOuterHTML(fragment.childNodes[i]);   
		    };
	    }
    	
	    this.html(transform);
    }
})(jQuery);