function ajax(url, post, callback) {
    var request = false;
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        request = new XMLHttpRequest();
    }
    // IE
    else if (window.ActiveXObject) {
        request = new ActiveXObject("Microsoft.XMLHTTP");
    }
    request.open('POST', url, true);
    request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    request.onreadystatechange = function() {
        if (request.readyState == 4) {
            if(callback) {
                callback(request.responseText);
            }
        }
    }
    request.send(post);
    //wait
}



function sjax(url, post, callback) {
    var request = false;

    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        request = new XMLHttpRequest();
//        if (request.overrideMimeType) {
//           request.overrideMimeType('text/xml');
           // See note below about this line
//        }
    } else if (window.ActiveXObject) {
        request = new ActiveXObject("Microsoft.XMLHTTP");
    }
    request.open('POST', url, false);
    request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    var done = request.send(post);

    if(callback){
        callback(request.responseText);
    }

    return request.responseText;


}

function ajaxFillDiv(divName, remotePage, post, skipTemp) {
    if (del(divName) == null) {
        return;
    }
    if(!skipTemp) {
        del(divName).innerHTML = "<table><tr><td><img src=\"/slices/waiting.gif\"></td><td>Loading...</td></tr></table>";
    }
    sjax(remotePage, post, function(v) {
        try {
            var x = /<script.*>((.|\s)*?)<\/script>/gi;
            var ss = v.match(x);
            v = v.replace(x, "");
            document.getElementById(divName).innerHTML = v;
            if(ss != null) {
                for(i=0; i<ss.length; i++) {
                    try {
                        eval(ss[i].replace(x, "$1"));
                        //alert(ss[i].replace(x, "$1"));
                    } catch(evalE){
//                        alert("Ajax error 1a: " + evalE.message + ":" + ss[i].replace(x, "$1"));
                    }
                }
            }
        } catch(error) {
            alert("Ajax error 2a: " + error.message + ":" + divName);
        }

    });
}

function ajaxFillDivAsync(divName, remotePage, post, skipTemp) {
    if (del(divName) == null) {
        return;
    }
    if(!skipTemp) {
        del(divName).innerHTML = "<table><tr><td><img src=\"/slices/waiting.gif\"></td><td>Loading...</td></tr></table>";
    }
    ajax(remotePage, post, function(v) {
        try {
            var x = /<script.*>((.|\s)*?)<\/script>/gi;
            var ss = v.match(x);
            v = v.replace(x, "");
            document.getElementById(divName).innerHTML = v;
            if(ss != null) {
                for(i=0; i<ss.length; i++) {
                    try {
                        eval(ss[i].replace(x, "$1"));
                        //alert(ss[i].replace(x, "$1"));
                    } catch(evalE){
                        //alert("Ajax error 1a: " + evalE.message + ":" + ss[i].replace(x, "$1"));
                    }
                }
            }
        } catch(error) {
            alert("Ajax error 2a: " + error.message + ":" + divName);
        }

    });
}

function ajaxSetFld(fld, remotePage, post) {
   ajax(remotePage, post, function(v) {
        try {
            document.getElementById(fld).value = v;
        } catch(error) {
            alert("Ajax error 2a: " + error.message + ":" + fld);
        }
    });
}

function ajaxQs(fldAry) {
    var post = "";
    for(var fld in fldAry) {

        var el = del(fld);
        if(el) {
            post += fld;

        }
    }
}

function ajaxDiv(divName, prefix, qs) {
    ajaxFillDiv(divName, prefix + "/" + divName + ".jsp?" + qs, null, true);
}