function xmlManager( http , XMLDoc ) { this.http = http; this.XMLDoc = XMLDoc; this.check = xmlManager_check; this.insert = xmlManager_insert; this.insertHtml = xmlManager_insertHtml; this.insertScript = xmlManager_insertScript; this.insertStyle = xmlManager_insertStyle; this.insertInclude = xmlManager_insertInclude; this.setTitle = xmlManager_setTitle; this.getContent = xmlManager_getContent; this.scriptExists = xmlManager_scriptExists; this.styleExists = xmlManager_styleExists; this.check( http.responseXML ); this.insert( http , XMLDoc ); } function xmlManager_check( xml ) { if (xml == null) { syslog('error', this.XMLDoc + " Ungültiges XML Format!") return false; } } function xmlManager_insert( http, XMLDoc) { hash.startEdit(); for (var i = 0; i < http.responseXML.getElementsByTagName('data')[0].childNodes.length; i++) { switch (http.responseXML.getElementsByTagName('data')[0].childNodes[i].nodeName.toLowerCase()) { case 'html': this.insertHtml( http.responseXML.getElementsByTagName('data')[0].childNodes[i] ); break; case 'script': this.insertScript( http.responseXML.getElementsByTagName('data')[0].childNodes[i] ); break; case 'style': this.insertStyle( http.responseXML.getElementsByTagName('data')[0].childNodes[i] ); break; case 'include': this.insertInclude( http.responseXML.getElementsByTagName('data')[0].childNodes[i] ); break; case 'hash': hash.setHashDataNode(http.responseXML.getElementsByTagName('data')[0].childNodes[i]); break; case 'title': this.setTitle( http.responseXML.getElementsByTagName('data')[0].childNodes[i] ); break; } } hash.stopEdit(); } function xmlManager_insertHtml( html ) { var target = html.getElementsByTagName('target')[0].childNodes[0].nodeValue; var type = html.getElementsByTagName('type')[0].childNodes[0].nodeValue; var content = this.getContent( html.getElementsByTagName('content')[0]); while (content.search(/###amp###/) > 0) { content = content.replace(/###amp###/, "&"); } document.getElementById(target).innerHTML = content; } function xmlManager_insertScript( script ) { var ScriptSrc = script.childNodes[0].nodeValue; var node = this.scriptExists( ScriptSrc ); if (node != false) { if (script.getAttribute('require') == 'once') { return true; } document.getElementsByTagName('head')[0].removeChild( node ); } document.getElementsByTagName('head')[0].appendChild(document.createElement('script')); document.getElementsByTagName('head')[0].lastChild.setAttribute('type', 'text/javascript'); document.getElementsByTagName('head')[0].lastChild.setAttribute('src', ScriptSrc + "//" + '?&SID=e7f9580a87c5b4b32fe7f68a9bac262f'); } function xmlManager_insertStyle( style ) { var StyleSrc = style.childNodes[0].nodeValue; var node = this.styleExists( StyleSrc ); if (node != false) { if (style.getAttribute('require') == 'once') { return true; } document.getElementsByTagName('head')[0].removeChild( node ); } document.getElementsByTagName('head')[0].appendChild(document.createElement('link')); document.getElementsByTagName('head')[0].lastChild.setAttribute('type', 'text/css'); document.getElementsByTagName('head')[0].lastChild.setAttribute('rel', 'stylesheet'); document.getElementsByTagName('head')[0].lastChild.setAttribute('href', StyleSrc + "//" + '?&SID=e7f9580a87c5b4b32fe7f68a9bac262f'); } function xmlManager_insertInclude( include ) { var IncludeSrc = include.childNodes[0].nodeValue; while (IncludeSrc.search(/###amp###amp;/) > 0) { IncludeSrc = IncludeSrc.replace(/###amp###amp;/, "&"); } if (include.getAttribute('timeout') > 0) { window.setTimeout("sendGetRequest('" + IncludeSrc + "');", include.getAttribute('timeout')); return; } if (include.getAttribute('interval') > 0) { window.setInterval("sendGetRequest('" + IncludeSrc + "');", include.getAttribute('timeout')); return; } sendGetRequest(IncludeSrc); } function xmlManager_setTitle( title ) { document.title = title.childNodes[0].nodeValue; } function xmlManager_getContent( node ) { var content = ''; var tag = ''; for (var i = 0; i < node.childNodes.length; i++) { switch ( node.childNodes[i].nodeType ) { case 1: tag = node.childNodes[i].nodeName; for (var j = 0; j < node.childNodes[i].attributes.length; j++) { tag = tag + ' ' + node.childNodes[i].attributes[j].nodeName + '="' + node.childNodes[i].attributes[j].nodeValue + '"'; } switch( node.childNodes[i].nodeName ) { case 'br': case 'input': content = content + '<' + tag + ' />' break; default: content = content + '<' + tag + '>' + this.getContent( node.childNodes[i] ) + ''; break; } break; case 3: content = content + node.childNodes[i].nodeValue; break; } } return content; } function xmlManager_scriptExists( ScriptSrc ) { for (var i = 0; i < document.getElementsByTagName('head')[0].childNodes.length; i++) { if (document.getElementsByTagName('head')[0].childNodes[i].nodeName.toLowerCase() == 'script') { if (document.getElementsByTagName('head')[0].childNodes[i].getAttribute('type') == 'text/javascript' && document.getElementsByTagName('head')[0].childNodes[i].getAttribute('src') == ScriptSrc + "//" + '?&SID=e7f9580a87c5b4b32fe7f68a9bac262f' ) { return document.getElementsByTagName('head')[0].childNodes[i]; } } } return false; } function xmlManager_styleExists( StyleSrc ) { for (var i = 0; i < document.getElementsByTagName('head')[0].childNodes.length; i++) { if (document.getElementsByTagName('head')[0].childNodes[i].nodeName.toLowerCase() == 'link') { if (document.getElementsByTagName('head')[0].childNodes[i].getAttribute('type') == 'text/css' && document.getElementsByTagName('head')[0].childNodes[i].getAttribute('rel') == 'stylesheet' && document.getElementsByTagName('head')[0].childNodes[i].getAttribute('href') == StyleSrc + "//" + '?&SID=e7f9580a87c5b4b32fe7f68a9bac262f' ) { return document.getElementsByTagName('head')[0].childNodes[i]; } } } return false; }