var post_ajax_functions = new Array();


// script_path = relative path to the PHP handler
// func_name = PHP function name to call
// div_id = div tag where to insert dynamic html content
// params_arr = parameters to pass to the function

function ajax (script_path, func_name, div_id, params_arr)
{
	var xmlhttp = null; 

	if(window.XMLHttpRequest)
	{
		xmlhttp = new XMLHttpRequest();
	}		 
	else if (window.ActiveXObject)
	{
		xmlhttp  = new ActiveXObject('Microsoft.XMLHTTP'); 
	}		

	xmlhttp.onreadystatechange = function()
	{
		// readyState values: 0 Uninitialized | 1 Loading | 2 Loaded | 3 Interactive | 4 Complete 

		if(xmlhttp.readyState == 4)
		{
			if (xmlhttp.status == 200) 
            {
                if (div_id.length) 
                {
                    document.getElementById(div_id).innerHTML = xmlhttp.responseText;
                    
                    // Perform Post-AJAX functions                    
                    do_post_ajax_funcs();
                }
            }
		}
	};
    
    var params = '';

    if (isset(params_arr) && count(params_arr)) 
    {
        for (var key in params_arr) 
        {
            params += '&' + key + '=' + params_arr[key];
        }
    }

	xmlhttp.open("POST", script_path, true);
	xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
	xmlhttp.send("func_name=" + func_name + params);
}


function ajax_load (script_path, func_name, div_id, params, wait)
{
    setTimeout(function() { ajax(script_path, func_name, div_id, params); }, wait * 1000);
}


// Determine how to handle params... use multi-scripted array for post_ajax_functions?
function do_post_ajax_funcs ()
{
    if (post_ajax_functions && post_ajax_functions.length) 
    {
        for (var x = 0; x < post_ajax_functions.length; x++) 
        {
            var func_name = post_ajax_functions[x];

            if (function_exists(func_name)) 
            {
                call_user_func(func_name);
            }
        }
    }
}
