/*
* AJAX-Funktion um Seiteninhalt dynamisch asynchron anzupassen
*/
function get_page(page){ // AJAX: get page
if (page == ""){ // No page defined -> error and exit
document.getElementById("content").innerHTML = "";
return;
}
if (window.XMLHttpRequest){ // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else{ // code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function(){
document.getElementById("author").innerHTML = ""; // Autor anpassen
document.getElementById("date_time").innerHTML = ""; // Erstellungsdatum anpassen
switch(xmlhttp.readyState){ // Verschiedene States von xhtml.Request
case 0: // Unset
document.getElementById("content").innerHTML = "<b>AJAX-ReadyState:<b><br/>The object has been constructed. ";
break;
case 1: // Opened
document.getElementById("content").innerHTML = "<b>AJAX-ReadyState:<b><br/>The 'open()' method has been successfully invoked";
break;
case 2: // Header received
var msg = "<b>AJAX-ReadyState:<b><br/>Header received:<br/>";
msg += "All redirects (if any) have been followed and all HTTP headers of the final response have been received. Several response members of the object are now available.";
document.getElementById("content").innerHTML = msg;
break;
case 3: // Loading
document.getElementById("content").innerHTML = "<b>AJAX-ReadyState:<b><br/>Loading: The response entity body is being received.";
break;
case 4: // Done
if(xmlhttp.status == 200){
var response = eval('(' + xmlhttp.responseText + ')'); // JSON-String decodieren
document.getElementById("content").innerHTML = response.content; // Content-Teil ändern
document.title = "Harmonie Schwarzenburg: " + response.title; // Titel anpassen
document.getElementById("author").innerHTML = response.author; // Autor anpassen
document.getElementById("date_time").innerHTML = response.date_time;// Erstellungsdatum anpassen
}
else{
var msg = "\r<table class=\"schrift_error\" align=\"center\">";
msg += "\r\t<tr>";
msg += "\r\t\t<td style=\"padding-right: 10px\">";
msg += "\r\t\t\t<img src=\"admin/images/error.png\" alt=\"Error\"/>";
msg += "\r\t\t</td>";
msg += "\r\t\t<td>";
msg += "\r\t\t\tAJAX request error:<br/>";
msg += "\r\t\t\tReload the page";
msg += "\r\t\t</td>";
msg += "\r\t</tr>";
msg += "\r</table>";
document.getElementById("content").innerHTML = msg; // Error-Ausgeben
document.title = "Titel: AJAX-Error"; // Titel anpassen
}
break;
}
overlay_hide(); // Loading Balken ausblenden
}
xmlhttp.open("GET", "/admin/get_content.php?page=" + page,true); // Send request
location.hash = "#!page=" + page; // Anker mit Seite in URL setzen (Refresh, vor und zurück)
xmlhttp.send();
overlay_show(); // Loading Balken einblenden
}
/*
* "Seite wird geladen"
*/
function overlay_show(){ // Seite abdunkeln, Ladebalken einblenden
document.getElementById("black_overlay").style.display = "block";
document.getElementById("loading").style.display = "block";
}
function overlay_hide(){ // Seite normal darstellen
document.getElementById("black_overlay").style.display = "none";
document.getElementById("loading").style.display = "none";
}
/*
* Refresh und Onload
*/
window.onload = function (){
if(location.hash != ""){ // Hash vorhanden
var str = location.hash; // Hash speichern
str = str.substr(2); // #! ignorieren
var parts = str.split("="); // String-Teile
if(parts[0] == "page"){ // AJAX-Anfrage stellen
get_page(parts[1]); // Entsprechende Seite neu laden
}
}
else{ // Startseite (erstes betetreten der Seite)
location.hash = "#!page=home"; // Anker mit Seite in URL setzen (Refresh, vor und zurück)
}
}
/*
* Vor und Zurück Aktionen des Browsers, Hash geändert
*/
window.onhashchange = function (){
if(xmlhttp.readyState != 1){ // Verhindern von doppeltem Laden, State bei open created
if(location.hash != ""){ // Hash vorhanden
var str = location.hash; // Hash speichern
str = str.substr(2); // #! ignorieren
var parts = str.split("="); // String-Teile
if(parts[0] == "page"){ // AJAX-Anfrage stellen
get_page(parts[1]); // Entsprechende Seite neu laden
}
}
else{
get_page("home"); // Startseite
}
}
}