﻿/* 
* Generic function to make Ajax requests, inspired by
* Stonyan Stefanov (http://www.sitepoint.com/article/take-command-ajax)
*
* @param url                            the url to request
* @param callback_function              the function to invoke with the javascript results
* @param return_xml                     true or false, if true we expect xml back, other wise we expect plain text
*/
function makeHttpRequest(url, callback_function, return_xml)
{
    var http_request = false;
    if(window.XMLHttpRequest)
    {//Mozila, Safari, ...
        http_request = new XMLHttpRequest();
        if(http_request.overrideMimeType)
        {
            http_request.overrideMimeType('text/xml');
        }
    }
    else if (window.ActiveXObject)
    {//IE        
        try
        {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");                 
        }
        catch(e)
        {
            try
            {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");             
            }
            catch(e)
            {
            }
        }
    }
    if(!http_request)
    {
        alert('Your browser doesn\'t support this feature.');
        return false;
    }
    http_request.onreadystatechange = function()
    {/* The request can go through a number of states but we only care about four
        0 (uninitialized)
        1 (loading)
        2 (loaded)
        3 (interactive)
        4 (complete)
     */
        if(http_request.readyState == 4)
        {            
            if(http_request.status == 200)
            {                
                if(return_xml)
                {          
                    eval(callback_function + '(http_request.responseXML)');
                }
                else
                {
                    eval(callback_function + '(http_request.responseText)');
                }
            }
            else if(http_request.status != 0)
            {//Some versions of IE can return 0
                alert('There was a problem with the request.(Code: ' + http_request.status + ')');
            }
        }
    }
    http_request.open('GET', url, true);
    http_request.send(null);
}


