var activerequest = "0"; var fallback = 0; var xmlhttp = false; var lasturl = ""; var params = ""; var lastparams = ""; var passelement = ""; var passquestion = ""; // Next all the AJAX stuff function checkactive(url, parameters) { if(activerequest == "0") makePOSTRequest(url, parameters); else setTimeout("checkactive('" + url + "', '" + parameters + "')", 500); } function makePOSTRequest(url, parameters) { params = parameters; xmlhttp = false; if (window.XMLHttpRequest) { // Mozilla, Safari,... xmlhttp = new XMLHttpRequest(); if (xmlhttp.overrideMimeType) { // set type accordingly to anticipated content type xmlhttp.overrideMimeType('text/html'); } } else if (window.ActiveXObject) { // IE try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!xmlhttp) { var fallback = 1; lowload(); return false; } lasturl = url; lastparams = parameters; setTimeout("cancelchk('" + url + "', 'n')", 20000); if(url == "showquestion.inc.php" || url == "restorequestion.inc.php" || url == "restoreuser.inc.php" || url == "edituser.inc.php") xmlhttp.onreadystatechange = replacequestion; else if(url == "changeaccount.inc.php") xmlhttp.onreadystatechange = accountchanged; else if(url == "edit.inc.php") xmlhttp.onreadystatechange = editing; else if(url == "postanswer.inc.php") xmlhttp.onreadystatechange = showanswer; else if(url == "postquestion.inc.php") xmlhttp.onreadystatechange = questionsaved; else if(url == "delete.inc.php" || url == "deleteuser.inc.php") xmlhttp.onreadystatechange = deleted; else if(url == "topbar.inc.php") xmlhttp.onreadystatechange = topbar; else if(url == "updatesection.inc.php") xmlhttp.onreadystatechange = sectionupdate; else if(url == "updateuser.inc.php") xmlhttp.onreadystatechange = userupdate; else xmlhttp.onreadystatechange = showresponse; activerequest = "1"; // setTimeout("cancelshow('" + url + "', '" + parameters + "')", 10000); xmlhttp.open('POST', url, true); xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlhttp.setRequestHeader("Content-length", parameters.length); xmlhttp.setRequestHeader("Connection", "close"); xmlhttp.send(parameters); return false; } function cancelchk(passurl, userinit) { if(passurl == lasturl && activerequest == "1") { activerequest = "0"; xmlhttp.abort(); if(userinit == "n") msgshow("Could not connect to server!"); } } function cancelclick() { var passurl = lasturl; activerequest = "1"; cancelchk(passurl, "y"); } function cancelshow(url, params) { if(url == lasturl && params == lastparams && activerequest == "1") msgshow("Option to cancel will appear here."); } function showresponse() { if (xmlhttp.readyState == 4) { if (xmlhttp.status == 200) { activerequest = "0"; var output = xmlhttp.responseText; msgshow(output); } } } function accountchanged() { if (xmlhttp.readyState == 4) { if (xmlhttp.status == 200) { activerequest = "0"; var output = xmlhttp.responseText; msgshow(output); setTimeout("updatetopbar()", 500); } } } function deleted() { if (xmlhttp.readyState == 4) { if (xmlhttp.status == 200) { activerequest = "0"; var output = xmlhttp.responseText.split(""); document.getElementById(output[0]).style.display = "none"; msgshow(output[1]); } } } function editing() { if (xmlhttp.readyState == 4) { if (xmlhttp.status == 200) { activerequest = "0"; var output = xmlhttp.responseText.split(""); var part = output[1]; var element = output[0]; document.getElementById(part + '[' + element + ']').innerHTML = output[2]; } } } function replacequestion() { if (xmlhttp.readyState == 4) { if (xmlhttp.status == 200) { activerequest = "0"; var output = xmlhttp.responseText.split(""); document.getElementById(output[0]).innerHTML = output[1]; } } } function showanswer() { if (xmlhttp.readyState == 4) { if (xmlhttp.status == 200) { activerequest = "0"; var output = xmlhttp.responseText.split(""); if(passelement != "") { loadquest(passelement, passquestion); passelement = ""; } else if(document.getElementById('mostrec')) { reloadsec('mostrec'); reloadsec('unansw'); } else loadquest(output[0], output[1]); msgshow(output[2]); } } } function questionsaved() { if (xmlhttp.readyState == 4) { if (xmlhttp.status == 200) { activerequest = "0"; var output = xmlhttp.responseText; document.getElementById('newquestion').value = ""; document.getElementById('newdetails').value = ""; if(passelement != "") { loadquest(passelement, passquestion); passelement = ""; } else if(document.getElementById('unansw')) reloadsec('unansw'); msgshow(output); } } } function sectionupdate() { if (xmlhttp.readyState == 4) { if (xmlhttp.status == 200) { activerequest = "0"; var output = xmlhttp.responseText.split(""); document.getElementById(output[0]).innerHTML = output[1]; document.getElementById('tot' + output[0]).innerHTML = output[2]; } } } function topbar() { if (xmlhttp.readyState == 4) { if (xmlhttp.status == 200) { activerequest = "0"; document.getElementById('infobar').innerHTML = xmlhttp.responseText; } } } function userupdate() { if (xmlhttp.readyState == 4) { if (xmlhttp.status == 200) { activerequest = "0"; var output = xmlhttp.responseText.split(""); restoreuser(output[0], output[1]); msgshow(output[2]); } } } // Customised stuff function changeaccount() { shaccountbox('hide'); var newname = encodeURIComponent(document.getElementById('newname').value); var curpass = encodeURIComponent(document.getElementById('curpass').value); var newpass = encodeURIComponent(document.getElementById('newpass').value); var newpass2 = encodeURIComponent(document.getElementById('newpass2').value); var newoffset = encodeURIComponent(document.getElementById('newoffset').value); if(document.getElementById('newemail').checked == true) var newemail = "1"; else var newemail = "0"; checkactive('changeaccount.inc.php', 'newname=' + newname + '&curpass=' + curpass + '&newpass=' + newpass + '&newpass2=' + newpass2 + '&newemail=' + newemail + '&newoffset=' + newoffset); } function deleteconfirm(elementid, questionid) { checkactive('delete.inc.php', 'questionid=' + questionid + '&elementid=' + elementid); } function deletequestion(elementid, questionid) { msgshow("To confirm you wish to delete this question, please click here."); } function deleteuser(elementid, userid) { msgshow("To confirm you wish to delete this user, please click here."); } function deleteuserconfirm(elementid, userid) { checkactive('deleteuser.inc.php', 'uid=' + userid + '&elementid=' + elementid); } function edituser(elementid, userid) { checkactive('edituser.inc.php', 'uid=' + userid+ '&elementid=' + elementid); } function editexisting(elementid, questionid, editpart) { checkactive('edit.inc.php', 'questionid=' + questionid + '&elementid=' + elementid + '&editpart=' + editpart); } function loadquest(elementid, questionid) { checkactive('showquestion.inc.php', 'questionid=' + questionid + '&elementid=' + elementid); } function restorequestion(elementid, questionid) { checkactive('restorequestion.inc.php', 'questionid=' + questionid + '&elementid=' + elementid); } function restoreuser(elementid, userid) { checkactive('restoreuser.inc.php', 'uid=' + userid + '&elementid=' + elementid); } function postanswer(elementid, questionid) { var answer = encodeURIComponent(document.getElementById('answer[' + questionid + ']').value); var tags = encodeURIComponent(document.getElementById('tags[' + questionid + ']').value); checkactive('postanswer.inc.php', 'questionid=' + questionid + '&elementid=' + elementid + '&answer=' + answer + '&tags=' + tags); } function postquestion() { var question = encodeURIComponent(document.getElementById('newquestion').value); var details = encodeURIComponent(document.getElementById('newdetails').value); shquestionbox('hide'); checkactive('postquestion.inc.php', 'question=' + question + '&details=' + details); } function reloadsec(section) { checkactive('updatesection.inc.php', 'section=' + section); } function saveedit(elementid, questionid, editpart) { if(editpart == "question") { passelement = elementid; passquestion = questionid; var question = encodeURIComponent(document.getElementById('newquestion[' + elementid + ']').value); var details = encodeURIComponent(document.getElementById('newdetails[' + elementid + ']').value); checkactive('postquestion.inc.php', 'edit=1&questionid=' + questionid + '&question=' + question + '&details=' + details); } else if(editpart == "answer") { passelement = elementid; passquestion = questionid; var answer = encodeURIComponent(document.getElementById('newanswer[' + elementid + ']').value); checkactive('postanswer.inc.php', 'edit=1&questionid=' + questionid + '&answer=' + answer); } else if(editpart == "tags") { passelement = elementid; passquestion = questionid; var tags = encodeURIComponent(document.getElementById('newtags[' + elementid + ']').value); checkactive('postanswer.inc.php', 'edit=1&questionid=' + questionid + '&tags=' + tags); } } function sendemail(user) { var subject = encodeURIComponent(document.getElementById('subject').value); var message = encodeURIComponent(document.getElementById('message').value); document.getElementById('sendemail').style.display = "none"; checkactive('sendmessage.inc.php', 'userto=' + user + '&subject=' + subject + '&message=' + message); } function updatetopbar() { checkactive('topbar.inc.php', ''); } function updateuser(elementid, userid) { var newname = encodeURIComponent(document.getElementById('newname[' + elementid + ']').value); var newoffset = encodeURIComponent(document.getElementById('newoffset[' + elementid + ']').value); if(document.getElementById('newview[' + elementid + ']').checked == true) var newview = "1"; else var newview = "0"; if(document.getElementById('newask[' + elementid + ']').checked == true) var newask = "1"; else var newask = "0"; if(document.getElementById('newanswer[' + elementid + ']').checked == true) var newanswer = "1"; else var newanswer = "0"; if(document.getElementById('newedit[' + elementid + ']').checked == true) var newedit = "1"; else var newedit = "0"; if(document.getElementById('newnotify[' + elementid + ']').checked == true) var newnotify = "1"; else var newnotify = "0"; var poststr = "elementid=" + elementid + "&uid=" + userid + "&newname=" + newname + "&newview=" + newview + "&newask=" + newask + "&newoffset=" + newoffset + "&newanswer=" + newanswer + "&newedit=" + newedit + "&newnotify=" + newnotify; if(document.getElementById('newverify[' + elementid + ']')) { if(document.getElementById('newverify[' + elementid + ']').checked == true) poststr += "&newverify=1"; } checkactive('updateuser.inc.php', poststr); } function shaccountbox(action) { if(action == "show") { document.getElementById('myaccountwrap').style.display = "block"; document.getElementById('postquestionwrap').style.display = "none"; } else document.getElementById('myaccountwrap').style.display = "none"; } function shquestionbox(action) { if(action == "show") { document.getElementById('postquestionwrap').style.display = "block"; document.getElementById('myaccountwrap').style.display = "none"; } else document.getElementById('postquestionwrap').style.display = "none"; } // And the message bar function msgshow(message) { var curmarg = document.getElementById('msgbar').style.marginTop; if(curmarg == "-24px" || curmarg == "") { document.getElementById('msgbar').innerHTML = message; msgin(); setTimeout("msgout()", 7000); } else { message = message.replace(/\'/g, "\\'"); setTimeout("msgshow('" + message + "')", 1000); } } function msgin() { var time = 0; for(var i = -23; i <= 0; i++) { setTimeout("document.getElementById('msgbar').style.marginTop = '" + i + "px'", time); time = time + 10; } } function msgout() { var time = 0; for(var i = -1; i >= -24; i = i - 1) { setTimeout("document.getElementById('msgbar').style.marginTop = '" + i + "px'", time); time = time + 10; } }