// AJAX core v.5
// By Pegasus Epsilon
//
// Known issues:
// - Google Chrome is strict about changing the innards of a css tag.
// --- gonna have to find a way around this.
var content = document.getElementById('content');
var style = document.getElementById('style');
var script = document.getElementById('script');
function run_handler (req) {
if (req.readyState == 4) {
if (req.status == 200) {
try { window.eval(req.responseText); }
catch (e) { alert("Error running external javascript: "+req.responseText); }
} else {
alert("Error "+req.status+" running external javascript:"+req.statusText);
}
}
}
function load_handler (req, dst) {
if (req.readyState == 4) {
if (req.status == 200 || req.status == 304) {
dst.innerHTML = req.responseText;
} else {
alert(
"failed: HTTP/1.1 "+req.status+" "+req.statusText+"\n"+req.getAllResponseHeaders()
);
history.go(0);
}
}
/* progress indicator, displayed DOM elements only.
else {
dst.innerHTML = "loading...";
}*/
}
function create_request () {
var req = false;
if (window.ActiveXObject) { // fuck microsoft right now.
try { req = new ActiveXObject("Msxml2.XMLHTTP"); }
catch (e) { req = new ActiveXObject("Microsoft.XMLHTTP"); }
} else { req = new XMLHttpRequest(); }
return req;
}
function send_request (req, uri, data) {
if (data) {
req.open('POST', uri, true);
req.setRequestHeader('Content-Type',
'application/x-www-form-urlencoded');
} else { req.open('GET', uri, true); }
req.send(data);
}
function run (uri, data) {
var req = create_request();
req.onreadystatechange = function () { run_handler(req) };
send_request(req, uri, data);
}
function load (uri, css, js, data) {
var req = create_request();
req.onreadystatechange = function () { load_handler(req, content); };
send_request(req, uri, data);
if (style && css) {
var cssreq = create_request();
cssreq.onreadystatechange = function () { load_handler(cssreq, style); };
send_request(cssreq, css);
}
if (js) { run(js); } // firefox
if (script && js) { // opera
var jsreq = create_request();
jsreq.onreadystatechange = function () { load_handler(jsreq, script); };
send_request(jsreq, js);
}
}
// load(uri, css, js, make_data(form_id));
// run(uri, make_data(form_id));
// doesn't include data from textareas yet.
function make_data (src_id) {
var inputs = document.getElementById(src_id).getElementsByTagName('INPUT');
var data = inputs[0].id+"="+inputs[0].value;
for (var i = 1; i < inputs.length; i++) {
data += "&"+inputs[i].id+"="+inputs[i].value;
}
return data;
}