/////////////////////////////////////////////////////////////////
// Raidbuilder, Javascript feeds library v.01 (24th March 2009)
//--------------------------------------------------------------


// Set globals
var rbActiveStyleSheet;


// Register a remote stylesheet to be used for presentation
function rbRegisterRemoteStyleSheet(rbRemoteXSLString) {
	rbActiveStyleSheet = rbLoadXMLString(rbUnTokeniseString(rbRemoteXSLString));
}


// Register a local stylesheet to be used for presentation
function rbRegisterLocalStyleSheet(rbLocalXSLURL) {
	rbActiveStyleSheet = rbLoadXML(rbLocalXSLURL);
}


// Render feed XML into the specified container using the active stylesheet
function rbRenderContentIntoContainer(rbContentXMLString, rbContentContainer) {

	// Load the feed XML
	var rbContentXML = rbLoadXMLString(rbUnTokeniseString(rbContentXMLString));

	// For IE
	if (window.ActiveXObject) {
	  var rbTransformedXML = rbContentXML.transformNode(rbActiveStyleSheet);
	  rbContentContainer.innerHTML = rbTransformedXML;
	}

	// For Mozilla, Firefox, Opera, etc.
	else if (document.implementation && document.implementation.createDocument) {
	  var xsltProcessor = new XSLTProcessor();
	  xsltProcessor.importStylesheet(rbActiveStyleSheet);
	  var rbTransformedXML = xsltProcessor.transformToFragment(rbContentXML, document);
	  rbContentContainer.appendChild(rbTransformedXML);
	}
}


// Load XML from a URL
function rbLoadXML(rbLocalXMLURL) {
	var rbXMLDoc;

	// For IE
	if (window.ActiveXObject) {
	  rbXMLDoc = new ActiveXObject("Microsoft.XMLDOM");
	}

	// For Mozilla, Firefox, Opera, etc.
	else if (document.implementation && document.implementation.createDocument) {
	  rbXMLDoc = document.implementation.createDocument("","",null);
	}

	// Load the XML
	rbXMLDoc.async=false;
	rbXMLDoc.load(rbLocalXMLURL);
	return rbXMLDoc;
}


// Load XML from a string
function rbLoadXMLString(rbXMLString) {
	var rbXMLDoc;

	// For IE
	if (window.ActiveXObject) {
	  rbXMLDoc = new ActiveXObject("Microsoft.XMLDOM");
	  rbXMLDoc.async = false;
		rbXMLDoc.loadXML(rbXMLString);
	}

	// For Mozilla, Firefox, Opera, etc.
	else if (document.implementation && document.implementation.createDocument) {
		var rbXMLParser = new DOMParser();
    rbXMLDoc = rbXMLParser.parseFromString(rbXMLString, "text/xml");

	}

	// Return the XML document
	return rbXMLDoc;
}


// Untokenise string (to keep XML well formed)
function rbUnTokeniseString(rbTokenisedString) {
	return rbTokenisedString.replace(/_APOS_/g, "'");
}

