function transformFile(file,target,options)
{ 
if (!options){options = ""}	
var A   = file.split(".")
ext     = A[A.length-1] 
ext     = ext.match(/[a-z]{1,4}/i)+""
ext     = ext.toLowerCase() 
switch(ext)
	{ 
	case "xml"  : transFormXML(file,target,options)
	              break;
	case "html" :
	case "asp"  :
	case "mht"  :
	case "htm"  : transFormHTML(file,target,options)
	             break; 
	case "doc"  :window.open(file,"_blank")
	             break;
	default     :alert("transformFile - Invalid file extension - "+ext+"\nFile = "+file)
	}
} 
//------------------------------------------------------------------
function loadXMLDoc(dname,fileType,options)
{  	
xhttp       =   new XMLHttpRequest(); 
xhttp.async =   false;
try{  
xhttp.open("GET",dname,false); 
xhttp.send("");
}
catch(e){  
if (options.search(/noerrors/i) != -1){return false}
alert("transformFile.js loadXMLDoc failed - Reason - "+e.description+"\nURL="+dname)
return false
}
finally{} 
if (xhttp.status != 200){return xhttp.status}
switch(fileType)
	{
	case "xml"    :response =  xhttp.responseXML;
	               break;
	default       :response =  xhttp.responseText;
	} 
return response
}  
//------------------------------------------------------------------
function transFormHTML(htmlFile,targetId,options)
{ 
try{ 
var html = loadXMLDoc(htmlFile,"html");
}
catch(e){
if (options.search(/noerrors/i) != -1){return false} 
alert("transFormFile.js/transformHTML Error - "+e.description+"\nFile = "+htmlFile+" make sure file exists & is valid")
return false
} 
finally{} 
if (html == "404" || html == "500")
{  
if (options.search(/noerrors/i) != -1){return false}
alert("transFormFile.js/transformHTML Error 404/500 -  File '"+htmlFile+"' does not exist or in error code - "+html+"  Options - "+options);return
}
//--------------------------------------------
var D  = document.getElementById(targetId) 
if (options.search(/plain/i) != -1)
{ 
 D.innerHTML = html	
 return
}
var s1   = html.search(/<body/i)
var s2   = html.search(/<\/body/i) 
if (s1 != -1 && s2 != -1)
	{
	html     = html.substr(s1,s2-s1).replace(/body/i,"Div ")
	} 
D.innerHTML = html+"</Div></center>" 
D.innerHTML = D.innerHTML.replace(/\ufffd/g,"&#160;")
D.innerHTML = D.innerHTML.replace(/\$\$/ig,"£")	
//-------------- Adjust IMG src -------------------------	
if (htmlFile.search(/[\\\/]/i) != -1)
{	
  var A = htmlFile.split(/[\\\/]/i)
  folder = A[0]
  imgArray    = D.getElementsByTagName("img")	
  for (i=0;i<imgArray.length;i++)
	{
	  oldSrc    = imgArray[i].src
	  memId     = oldSrc.match(/M[0-9]+/i)
	  if (memId)
	  {   
		imgArray[i].src = oldSrc.replace(memId,memId+"/"+folder)
	    //alert("New="+imgArray[i].src +" Old="+oldSrc)
	  }
	 } 
  }
}
//------------------------------------------------------------------
function transFormXML(xmlFile,targetId,options)
{ 
var xml = loadXMLDoc(xmlFile,"xml",options); 
if (!xml){return false}	
try{
xslFile = xml.getElementsByTagName("_Config")[0].getAttribute("xslHref") 
}
catch(e){ 
if (options.search(/noerrors/i) != -1){return false}
emsg ="JavaScripts/transFormXML.js/TransFormXML - Error getting xslHref \nDescription - "+e.description+"\n\nCheck file '"+xmlFile+"' exists and has <_config> node" 
alert(emsg)
return false
}  
finally{}  
var xsl =loadXMLDoc(xslFile,"xml");	
// code for IE window.ActiveXObject
if (window.ActiveXObject)
  {  
  try{
  code ="Transform node " 
  document.getElementById(targetId).innerHTML = xml.transformNode(xsl)
  code="Get target"
  }	// End try
  catch(e){
  if (options.search(/noerrors/i) != -1){return false} 
  alert("TransformFile.js - Error transforming file - "+xmlFile+"\nDescription - "+e.description+"\nxslFile="+xslFile+"\nCode="+code+"\nTarget="+targetId)
  return
  }
  finally{}
  }
// code for Mozilla, Firefox, Opera, etc.
else 
  if (document.implementation && document.implementation.createDocument)
  {	
  try{
  xsltProcessor =  new XSLTProcessor();
  xsltProcessor.importStylesheet(xsl);
  resultDocument = xsltProcessor.transformToFragment(xml,document); 
  }
  catch(e){
  var amsg  = "Transformfile/loadxml - Error -"+e.description+"\n XML="+xml+"\nxsl="+xsl
  alert(amsg)
  return
  }
  finally{}
  document.getElementById(targetId).innerHTML = ""
  document.getElementById(targetId).appendChild(resultDocument);
  }	
return document.getElementById(targetId).innerHTML
}	
//--------------------------------------------------------------
function transformAllXml(O)
{
var A = O.getElementsByTagName("Div") 
for (var i=0;i<A.length;i++)
	{  
	 if (A[i].id.substr(0,3) == "xml")
	 { 
	  var xmlFile = A[i].innerHTML
	  var targetId = A[i].id
	  transFormXML(xmlFile,targetId,"")
	 }
	} 
} 
//--------------------------------------------------------------- 

