var _HAS_DOM_IMPLEMENTATION = document.implementation && true;
var _HAS_DOM_CREATE_DOCUMENT = _HAS_DOM_IMPLEMENTATION && document.implementation.createDocument;
var _HAS_DOM_FEATURE = _HAS_DOM_IMPLEMENTATION && document.implementation.hasFeature;
var _IS_MOZ = _HAS_DOM_CREATE_DOCUMENT && _HAS_DOM_FEATURE;
var _IS_SAFARI = (navigator.userAgent && navigator.vendor && (navigator.userAgent.toLowerCase().indexOf("applewebkit") != -1 || navigator.vendor.indexOf("Apple") != -1));
var _IS_IE = document.all && window.ActiveXObject && navigator.userAgent.toLowerCase().indexOf("msie") > -1  && navigator.userAgent.toLowerCase().indexOf("opera") == -1;

var IframeDIV = null;
var LoadedXML = new Array();
var LoadedXSL = new Array();
var Iframe = {
	Object: null,
	TargetDIV: null,
	TargetXML: null,
	TargetXSL: null,
	AjaxObject: null,
	loadIframe: function(Object, reload) {
		this.Object = Object;
		this.TargetXML = Object.getAttribute('turl');
		this.TargetXSL = Object.getAttribute('xsl');
		this.TargetDIV = $(Object.getAttribute('target'));
		this.TargetCON = $(Object.getAttribute('target')+'[content]');
		if(Object.getAttribute('status') != null) {
			if(Object.getAttribute('status').toString() == 'true' && reload != true) {
				//changeDisplay(this.TargetDIV, 'none');
				changeImgDisplay(Object);
				return(false);
			}
			if(reload != true) {
				changeImgDisplay(Object);
			}
		}
		if(LoadedXML[this.TargetXML]) {
			//changeDisplay(this.TargetDIV, 'block');
			return(true);
			//var myXML = LoadedXML[this.TargetXML];
		}
		else {
			this.AjaxObject = new Ajax.Request(this.TargetXML,
				{	method: 'get',
					onComplete:this.showResponse.bind(this),
					onLoading: this.showLoading()
				}
			);
		}
	},
	showResponse: function(myXML) {
		LoadedXML[this.TargetXML] = myXML;
		if(LoadedXSL[this.TargetXSL]) {
			var myXSL = LoadedXSL[this.TargetXSL];
		}
		else {
			var myXSL = new Ajax.Request(this.TargetXSL, {method: 'get', asynchronous: false});
			LoadedXSL[this.TargetXSL] = myXSL;
		}
		if(_IS_IE) {
			var xsltDoc = loadActiveXObject(Array("Msxml2.FreeThreadedDOMDocument.5.0", "MSXML2.FreeThreadedDOMDocument.4.0", "MSXML2.FreeThreadedDOMDocument.3.0"));
			var xsltTemplate = loadActiveXObject(Array("Msxml2.XSLTemplate.5.0", "Msxml2.XSLTemplate.4.0", "MSXML2.XSLTemplate.3.0"));
			xsltDoc.loadXML(myXSL.transport.responseText);
			xsltTemplate.stylesheet = xsltDoc;
			var xsltProcessor = xsltTemplate.createProcessor();
			xsltProcessor.input = myXML.responseXML;
			xsltProcessor.addParameter("oid", this.TargetDIV.id);
			xsltProcessor.transform;
			var NewHTML = xsltProcessor.output;
			//var NewHTML = myXML.responseXML.transformNode(myXSL.transport.responseXML);
		}
		else {
			xsltProcessor = new XSLTProcessor();
			xsltProcessor.importStylesheet(myXSL.transport.responseXML);
			xsltProcessor.setParameter(null, "oid", this.TargetDIV.id);
			var NewHTML = (new XMLSerializer()).serializeToString(xsltProcessor.transformToDocument(myXML.responseXML));
		}
		
		if(this.TargetCON) {
			this.TargetCON.innerHTML = NewHTML;
		}
		else {
			this.TargetDIV.innerHTML = NewHTML;
		}
	},
	showLoading: function() {
		//this.TargetDIV.innerHTML = "Daten werden geladen...";
		changeDisplay(this.TargetDIV, 'block');
	}
}
function loadActiveXObject(idList) {
	var bFound = false;
	for(var i=0; i < idList.length && !bFound; i++){
		try{
			var xsltTemplate = new ActiveXObject(idList[i]);
			bFound = true;
		}
		catch (objException){
			//alert('Es konnte kein XSL Parser gefunden werden!');
			//return(false);
		};
	}
	if(! bFound){
		alert('Es konnte kein XSL Parser gefunden werden!');
		return(false);
	}
	return(xsltTemplate);
}
