function sendHttpRequest(url, callBackFunction)
{
    var http    = getRequestObject();

    if(http)
    {
        http.open('get', url);

        http.onreadystatechange =
        function(data)
        {
            if (http.readyState == 4)
            {
                callBackFunction(http);
            }
        } ;

        http.send(null);
    }
    else
    {
        alert("Your browser does not support this functionality.");
    }
}

function getRequestObject()
{
    var request_object;
    var browser = navigator.appName;

    try
    {
        request_object =
            (browser == 'Microsoft Internet Explorer')
            ? new ActiveXObject("Microsoft.XMLHTTP")
            : new XMLHttpRequest;
    }
    catch(e)
    {
        alert("Your browser does not support this functionality.");
    }

    return request_object;
}

function getNotificationObj(xml)
{
    var o = new Object();

    var Notifications = xml.getElementsByTagName("notification");

    if(Notifications && Notifications.length > 0)
    {
        var Notification = Notifications[0];

        o.error = (Notification.getElementsByTagName("error").length > 0 && Notification.getElementsByTagName("error")[0].childNodes.length > 0) ?
                  Notification.getElementsByTagName("error")[0].firstChild.nodeValue :
                  false;

        o.message = (Notification.getElementsByTagName("message").length > 0 && Notification.getElementsByTagName("message")[0].childNodes.length > 0) ?
                  Notification.getElementsByTagName("message")[0].firstChild.nodeValue :
                  false;

        o.data_id = (Notification.getElementsByTagName("data-return").length > 0 && Notification.getElementsByTagName("data-return")[0].childNodes.length > 0) ?
                  Notification.getElementsByTagName("data-return")[0].getAttribute('id') :
                  false;

        o.data_title = (Notification.getElementsByTagName("data-return").length > 0 && Notification.getElementsByTagName("data-return")[0].childNodes.length > 0) ?
                  Notification.getElementsByTagName("data-return")[0].firstChild.nodeValue :
                  false;
                  
	o.achievements = (Notification.getElementsByTagName("achievements").length > 0 && Notification.getElementsByTagName("achievements")[0].childNodes.length > 0) ?
                  (new String(Notification.getElementsByTagName("achievements")[0].firstChild.nodeValue)).split(",") :
                  [];
    }
    else
    {
        o.error = false;
        o.message = false;
        o.data_id = false;
        o.data_title = false;
        o.achievements = [];
    }

    return o;
}
