Ciao a tutti.
Avrei bisogno del vostro aiuto per capire il funzionamento di questa funzione che ho trovato in uso su un sito web, e che non riesco a decifrare:

codice:
var obj;
function addFav(itm, id)
{
        obj = false;
        if(navigator.userAgent.indexOf('Opera') != -1 ||
	navigator.userAgent.indexOf('Konqueror') != -1)
        {
                return true;
        }
        if(window.XMLHttpRequest)
        {
                try
                {
                        obj = new XMLHttpRequest();
                }
                catch(e)
                {
                        obj = false;
                }
        }
        else if(window.ActiveXObject)
        {
                try
                {
                        obj = new ActiveXObject("Msxml2.XMLHTTP");
                }
                catch(e)
                {
                        try
                        {
                                obj = new ActiveXObject("Microsoft.XMLHTTP");
                        }
                        catch(e)
                        {
                                return true;
                        }
                }
        }
        if(obj)
        {
                var prevNum = itm.innerHTML.match(/\((.+)\)/);
                var prevStr = itm.innerHTML;
                itm.innerHTML = 'Please wait...';
                obj.onreadystatechange = function() { getChange(itm, prevNum, prevStr); };
                obj.open("GET", 'favlive.php?id=' + id, true);
                obj.send(0);
                
                return false;
        }
        else
        {
                return true;
        }
}

function getChange(itm, prevNum, prevStr)
{
        if (obj.readyState == 4)
        {
                if (obj.status == 200)
                {
                        if(obj.responseText.indexOf('true') != -1)
                        {
                                alert('Thanks, your vote has been registered!');
                                itm.innerHTML = 'Favourites (' + (parseInt(prevNum[1]) + 1) + ')';
                        }
                        else
                        {
                                alert('You\'ve already voted for this item!');
                                itm.innerHTML = prevStr;
                        }
                }
                else
                {
                        itm.innerHTML = prevStr;
                }
        }
}
qualcuno sa aiutarmi?
si tratta per caso di ajax? se si come funziona?
la funzione viene sfruttata in questo sito:
http://thesis.veracon.net/
per incrementare dei voti.
Mi aiutate?