// // Globale Variablen // var _readyStateHooks = new Array(); // // Füge einen Ready-State-Hook hinzu // function addReadyStateHook( hook ) { if ( !inArray( hook, _readyStateHooks ) ) { _readyStateHooks[_readyStateHooks.length] = hook; } } // // Entferne einen Ready-State-Hook // function removeReadyStateHook( hook ) { arrayRemove( hook, _readyStateHooks ); } // // Erzeugt ein neues XML-HTTP-Request-Object (je nach Browser) und gibt es zurueck // function newXMLHttpRequest() { var xmlreq = false; if(window.XMLHttpRequest) { xmlreq = new XMLHttpRequest(); } else if(window.ActiveXObject) { try { xmlreq = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e1) { try { xmlreq = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e2) { } } } return xmlreq; } // // Behandelt die Rueckgabe des XML-HTTP-Requests entsprechend des HTTP-Error-Codes // function getReadyStateHandler ( req, responseXmlHandler, target, reqAction ) { return function() { if( req.readyState == 4 ) { // alert(req.status); if( req.status == 200 ) { // req.responseText contains response in plain text // req.responseXml contains XML or parsed DOM tree, RTFM! //responseXmlHandler(target, req.responseText); if ( target != null ) responseXmlHandler( target, req.responseText, reqAction ); } else if ( req.status == 401 ) { window.ignoreMods = true; window.location.href = window.baseUrl+"logout.php?sid="+window.sid; } else if( req.status == 403 ) { // http status 403, do something about that.. } else { if ( target != null ) { var errorString = "Error: "+req.status+' '+reqAction; // alert( errorString ); responseXmlHandler( target, errorString, reqAction ); } } } } } // // Schreibt den Inhalt content in das HTML-Element target // function update ( target, content, actionName ) { if ( typeof target == 'object' ) { target.responseHandler( content ); } else { var elem = document.getElementById(target); if( elem ) elem.innerHTML = content; } for ( var i = 0; i < _readyStateHooks.length; i++ ) { eval( _readyStateHooks[i]+"( target );" ); } if ( self.updateReport ) updateReport( actionName ); if ( self.updateSysTray ) updateSysTray(); } // // Fuehrt eine serverseitige Funktion aus // function action( name, target, getParams, postParams ) { // alert(target.id); send( name, target, getParams, postParams ); } function raction( name, param, responseHandler ) { req = send( name, null, param ); req.onreadystatechange = function() { if ( req.readyState == 4 && req.status == 200 ) eval( responseHandler+"( req.responseText );" ); } } // // Sendet einen XMLHTTPRequest an action.php ab, und schreibt die Rueckgabe // in das HTML-Element mit der ID target // function send( reqAction, target, getParams, postParams ) { if ( target === undefined ) target = activeId; var req = newXMLHttpRequest(); var handlerFunction = getReadyStateHandler(req, update, target, reqAction); var project = ( window['projectCode'] != undefined ) ? "&project=" + window['projectCode'] : ""; var projectLang = ( window['projectLang'] != undefined ) ? "&projectlang=" + window['projectLang'] : ""; var reqUrl = "action.php?action="+reqAction+project+projectLang; if ( getParams != undefined ) reqUrl += '&' + getParams; if ( postParams == undefined ) var postParams = ''; //var params = encodeURI( param1 ); //params += encodeURI("¶m1=" + param1); req.onreadystatechange = handlerFunction; req.open( "POST", reqUrl, true ); req.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded; charset=utf-8" ); req.setRequestHeader("Content-length", postParams.length); req.setRequestHeader("Connection", "close"); req.send( postParams ); return req; } // // Überprüft, ob auf eine entfernte Datei zugegriffen werden kann // function fileExists( fileName ) { var test = newXMLHttpRequest(); test.open("GET", fileName, false); test.send(); return ( test.status == 200 ) ? true : false; } // // Laedt eine JavaScript-Datei in den DOM-Baum nach // function loadScript( url, scrptId ) { if ( scriptId == undefined ) var scriptId = url.replace( /[\/\.]/g, '' ); if ( document.getElementById( scriptId ) ) return; /* eval("var old = document.getElementById('"+scriptId+"')"); if ( old != null ) { old.parentNode.removeChild( old ); delete old; }*/ var script = document.createElement( "script" ); script.src = url; script.type = "text/javascript"; script.id = scriptId; document.getElementsByTagName("head")[0].appendChild( script ); } // // Laedt einen CSS-Style-Sheet in den DOM-Baum nach // function loadCSS( url, sheetId ) { if ( sheetId == undefined ) var sheetId = url.replace( /[\/\.]/g, '' ); if ( document.getElementById( sheetId ) ) return; var sheet = document.createElement( "link" ); sheet.rel = "stylesheet"; sheet.href = url; sheet.id = sheetId; document.getElementsByTagName("head")[0].appendChild( sheet ); }