var sajax_debug_mode = false;
var sajax_request_type = "GET";
var sajax_target_id = "";

function sajax_debug(text) {
    if (sajax_debug_mode)
        alert("RSD: " + text)
}
 function sajax_init_object() {
     sajax_debug("sajax_init_object() called..")
     
    var A;
    try {
        A=new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try {
            A=new ActiveXObject("Microsoft.XMLHTTP");
        } catch (oc) {
            A=null;
        }
    }
    if(!A && typeof XMLHttpRequest != "undefined")
        A = new XMLHttpRequest();
    if (!A)
        sajax_debug("Could not create connection object.");
    return A;
}
function sajax_do_call(func_name, args) {
    var i, x, n;
    var uri;
    var post_data;
    var target_id;
    
    sajax_debug("in sajax_do_call().." + sajax_request_type + "/" + sajax_target_id);
    target_id = sajax_target_id;
    if (sajax_request_type == "") 
        sajax_request_type = "GET";
    
    uri = "";
    if (sajax_request_type == "GET") {

        if (uri.indexOf("?") == -1) 
            uri += "?rs=" + escape(func_name);
        else
            uri += "&rs=" + escape(func_name);
        uri += "&rst=" + escape(sajax_target_id);
        uri += "&rsrnd=" + new Date().getTime();
        
        for (i = 0; i < args.length-1; i++) 
            uri += "&rsargs[]=" + escape(args[i]);

        post_data = null;
    } 
    else if (sajax_request_type == "POST") {
        post_data = "rs=" + escape(func_name);
        post_data += "&rst=" + escape(sajax_target_id);
        post_data += "&rsrnd=" + new Date().getTime();
        
        for (i = 0; i < args.length-1; i++) 
            post_data = post_data + "&rsargs[]=" + escape(args[i]);
    }
    else {
        alert("Illegal request type: " + sajax_request_type);
    }
    
    x = sajax_init_object();

    x.open(sajax_request_type, uri, true);
    
    if (sajax_request_type == "POST") {
        x.setRequestHeader("Method", "POST " + uri + " HTTP/1.1");
        x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    }
    
    x.onreadystatechange = function() { //Made it to here debugging
        if (x.readyState != 4) 
            return;

        sajax_debug("received " + x.responseText);
        
        var status;
        var data;
        var txt = x.responseText.replace(/^\s*|\s*$/g,"");
        status = txt.charAt(0);
        data = txt.substring(2);
        if (status == "-") 
            alert("Error: " + data);
        else {
            if (target_id != "") 
                document.getElementById(target_id).innerHTML = eval(data);
            else {
                try {
                    var callback;
                    var extra_data = false;
                    if (typeof args[args.length-1] == "object") {
                        callback = args[args.length-1].callback;
                        extra_data = args[args.length-1].extra_data;
                    } else {
                        callback = args[args.length-1];
                    }
                    callback(eval(data), extra_data);
                } catch (e) {
                    alert(e + ": Could not eval " + data);
                }
            }
        }
    }
    sajax_debug(func_name + " uri = " + uri + "/post = " + post_data);
    x.send(post_data);
    sajax_debug(func_name + " waiting..");
    delete x;
    return true;
}

// wrapper for get_user_list        
function x_get_user_list() {
    sajax_do_call("get_user_list",
        x_get_user_list.arguments);
}

// wrapper for get_help        
function x_get_help() {
    sajax_do_call("get_help",
        x_get_help.arguments);
}

// wrapper for get_activity_messages_ajax        
function x_get_activity_messages_ajax() {
    sajax_do_call("get_activity_messages_ajax",
        x_get_activity_messages_ajax.arguments);
}
        
// wrapper for get_activities_attend_ajax
function x_get_activities_attend_ajax() {
    sajax_do_call("get_activities_attend_ajax",
        x_get_activities_attend_ajax.arguments);
}

