
function ajaxSend(url, callback, post, parameters){
function ajaxBindCallback(){
if (ajaxRequest.readyState == 4) {
if (ajaxRequest.status == 200) {
if (ajaxCallback){
eval(ajaxCallback+'(ajaxRequest.responseXML)');
return true;
}
else {
alert('no callback defined');
return false;
}
}
else {
alert("There was a problem retrieving the xml data");
return false;
}
}
}
var ajaxCallback = callback;
var now = new Date();
var ajaxRequest = null;
url += '&time=' + now.getTime();
if (window.XMLHttpRequest) {
ajaxRequest = new XMLHttpRequest();
if (ajaxRequest.overrideMimeType)
ajaxRequest.overrideMimeType('text/xml');
ajaxRequest.onreadystatechange = ajaxBindCallback;
if (post == true) {
ajaxRequest.open('POST', url, true);
ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajaxRequest.setRequestHeader("Content-length", parameters.length);
ajaxRequest.setRequestHeader("Connection", "close");
ajaxRequest.send(parameters);
}
else {
ajaxRequest.open("GET", url, true);
ajaxRequest.send(null);
}
}
else if (window.ActiveXObject) {
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
if (ajaxRequest)
ajaxRequest.onreadystatechange = ajaxBindCallback;
if (post == true) {
ajaxRequest.open('POST', url, true);
ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajaxRequest.setRequestHeader("Content-length", parameters.length);
ajaxRequest.setRequestHeader("Connection", "close");
ajaxRequest.send(parameters);
}
else {
ajaxRequest.open("GET", url, true);
ajaxRequest.send();
}
}
else {
}
}
function URLDecode(url)
{
var HEXCHARS = "0123456789ABCDEFabcdef";
var encoded = url;
var plaintext = "";
var i = 0;
while (i < encoded.length) {
var ch = encoded.charAt(i);
if (ch == "+") {
plaintext += " ";
i++;
} else if (ch == "%") {
if (i < (encoded.length-2)
&& HEXCHARS.indexOf(encoded.charAt(i+1)) != -1
&& HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
plaintext += unescape( encoded.substr(i,3) );
i += 3;
} else {
alert( 'Bad escape combination near ...' + encoded.substr(i) );
plaintext += "%[ERROR]";
i++;
}
} else {
plaintext += ch;
i++;
}
} 
return plaintext;
}
function URLEncode(url)
{
var SAFECHARS = "0123456789" +                                        
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +        
"abcdefghijklmnopqrstuvwxyz" +
"-_.!~*'()";                                        
var HEX = "0123456789ABCDEF";
var plaintext = url;
var encoded = "";
for (var i = 0; i < plaintext.length; i++ ) {
var ch = plaintext.charAt(i);
if (ch == " ") {
encoded += "+";                                
} else if (SAFECHARS.indexOf(ch) != -1) {
encoded += ch;
} else {
var charCode = ch.charCodeAt(0);
if (charCode > 255) {
alert( "Unicode Character '"
+ ch
+ "' cannot be encoded using standard URL encoding.\n" +
"(URL encoding only supports 8-bit characters.)\n" +
"A space (+) will be substituted." );
encoded += "+";
} else {
encoded += "%";
encoded += HEX.charAt((charCode >> 4) & 0xF);
encoded += HEX.charAt(charCode & 0xF);
}
}
} 
return encoded;
}
function ajaxSendPost(form, url, callback) {
var getstr = '';
for (i=0; i < form.elements.length; i++) {
el = form.elements[i];
if (el.name != '') {
if (el.type == "SELECT")
getstr += el.name + "=" + URLEncode(el.options[el.selectedIndex].value) + "&";
else
getstr += el.name + "=" + URLEncode(el.value) + "&";
}
}
ajaxSend(url, callback, true, getstr);
}
var progress;
var width = 500;
var t;
var progressbar_mode = '';
function progressBarRequest(response) {
response = response.documentElement;
progress = response.getElementsByTagName('progress')[0].firstChild.data;
if (progress > 0) {
document.getElementById('su_progress_pct').innerHTML = progress;
}
}
function refreshProgressBar() {
if (document.getElementById('UploadProgress') && document.getElementById('UploadProgress').style.display == 'none')
return;
else if (!document.getElementById('UploadProgress'))
return;
else if (progress == -1) {
window.clearTimeout(t);
return;
}
if (progress >= 100) {
window.clearTimeout(t);
document.getElementById('su_message_inprogress').style.display = 'none';
document.getElementById('su_message_completed').style.display = '';
/*if (document.getElementById('upload_inprogress_ovtable')) {
document.getElementById('upload_inprogress_ovtable').style.display = 'none';
document.getElementById('upload_finished_ovtable').style.display = '';
} */
return;
}
else {
ajaxSend('/apps/ajax/php/progressBarRequest.php?mode='+progressbar_mode+'&', 'progressBarRequest');
t = window.setTimeout("refreshProgressBar()", 1500);
}
}

