window.onload = function(){
	// lets parse the XML, and JSLT
	doJsltProcessing(0);

}

var xmlData;
var jsltCode;

function setCode(x){document.getElementById('taCode').value = x;}
function setResult(x){document.getElementById('taResult').value = x;}
function getJslt(){return document.getElementById('taJslt').value;}
function getXml(){ return document.getElementById('taXml').value;}


function doParseXML(){
	try{ xmlData = parseXML(getXml());}
	catch(e){
		xmlData= null;
	}
	if(!xmlData || !xmlData.documentElement)setResult("XML Parsing error occured\n");
	
}

function doCompileJSLT(){
	try{ jsltCode = JSLT.compile(getJslt(),true) }
	catch(e){
		setResult("JSLT Compilation occured:\n"+e.message);
		jsltCode = null;
		return;
	}
	setCode(jsltCode[1]);
}

// do the processing
function doJsltProcessing(x){
	if(!xmlData || x&1)doParseXML();
	if(!xmlData || !xmlData.documentElement)return;
	if(!jsltCode || x&2)doCompileJSLT();
	if(!jsltCode)return;
	try{ setResult( jsltCode[0](xmlData.documentElement) ); }
	catch(e){
		setResult("JSLT Execution occured:\n"+e.message);
	}
}

// util function
function parseXML(x){			
	var p;	
	if(document.all){p = new ActiveXObject("microsoft.XMLDOM");p.setProperty("SelectionLanguage", "XPath");p.loadXML(x);}
	else{p = new DOMParser();if(x) p = p.parseFromString(x, "text/xml");}
	return p;
}