// Ajax function by Amarok
// www.amarok.nostream.ru

function createXMLHttp()
{
	if (typeof XMLHttpRequest != "undefined")
    {
    	return new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
		var aVersions = ["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0",
        				 "MSXML2.XMLHttp.3.0","MSXML2.XMLHttp",
                         "Microsoft.XMLHttp"
                        ];

        for (var i = 0; i < aVersions.length; i++)
        {
        	try {
            	var oXmlHttp = new ActiveXObject(aVersoins[i]);
                return oXmlHttp;
            } catch (oError) {
				//just relax
            }
        }
    }
    //throw new Error("Невозможно создать объект XMLHttp");
    return null;
}

function fuck(pID,pSID)
{
	vote('fuck',pID,pSID);
}

function thank(pID,pSID)
{
	vote('thank',pID,pSID);
}

function vote(vType,pID,pSID)
{
	var xhr = new createXMLHttp();

    if (xhr != null)
    {
    	var argSID = '';
        if (pSID != '')
        {
        	argSID = '&'+pSID;
        }

    	xhr.open('GET', 'reputation.php?mode='+vType+'&p='+pID+argSID+'&ajax=1', true);

        var bt = document.getElementById('b_'+pID);

        bt.innerHTML = '<img src="templates/nostream/images/loading.gif">';

        xhr.onreadystatechange = function()
        {
        	if (xhr.readyState == 4)
            {
            	if (xhr.status == 200 || xhr.status == 304)
                {
					var oInfo = xhr.responseXML;
                    var tResponse = oInfo.getElementsByTagName('response')[0].firstChild.nodeValue;

                    try {
	                    var tOpinion = oInfo.getElementsByTagName('opinion')[0].firstChild.nodeValue;
                    } catch (oError) {
						var tOpinion = '';
                    }

                    try {
	                    var tReputation = oInfo.getElementsByTagName('reputation')[0].firstChild.nodeValue;
                    } catch (oError) {
						var tReputation = '';
                    }

                    try {
	                    var tUserID = oInfo.getElementsByTagName('user_id')[0].firstChild.nodeValue;
                        updateUserReputation(tUserID,tReputation);
                    } catch (oError) {
						//nothing left to do, but run run run...
                    }

                    bt.innerHTML = '<img src="templates/nostream/images/info.gif" onmouseover="Tip(\''+tResponse+'\');">';

                    try {
	                    var oVO = document.getElementById('vo_'+pID);
    	                oVO.innerHTML = tOpinion;
                    } catch (oError) {
						// people are strange...
                    }

                }else
                {
    	            bt.innerHTML = '<img src="templates/nostream/images/info.gif" alt="Ошибка соединения!">';
                }
            }
        };

        xhr.send(null);

	    return false;
    }
    return true;
}

function updateUserReputation(pUserID,pReputation)
{
	var spanNodes = document.getElementsByTagName('span');
    for (var i = 0; i < spanNodes.length; i++)
    {
    	var pattern = new RegExp("^ur_"+pUserID+"_([0123456789]*)");
    	if (pattern.test(spanNodes[i].id))
        {
			spanNodes[i].innerHTML = pReputation;
        }
    }
}

function showVoters(vType,pID,pSID)
{
    var xhr = new createXMLHttp();

    if (xhr != null)
    {
    	var argSID = '';
        if (pSID != '')
        {
        	argSID = '&'+pSID;
        }

    	xhr.open('GET', 'reputation.php?mode=list&p='+pID+argSID+'&ajax=1&type='+vType, true);

        Tip('<img src="templates/nostream/images/loading.gif">',TITLE,'');

        xhr.onreadystatechange = function()
        {
        	if (xhr.readyState == 4)
            {
            	if (xhr.status == 200 || xhr.status == 304)
                {
					var oInfo = xhr.responseXML;

                    try {
	                    var tResponse = oInfo.getElementsByTagName('response')[0].firstChild.nodeValue;
                    } catch (oError) {
						var tResponse = "Error getting response.."
                    }
                    Tip(tResponse);

                }else
                {
    	            Tip('Ошибка соединения!');
                }
            }
        };

        xhr.send(null);

	    return false;
    }
    return true;
}

function showUserRep(pUID,pSID)
{
    var xhr = new createXMLHttp();

    if (xhr != null)
    {
    	var argSID = '';
        if (pSID != '')
        {
        	argSID = '&'+pSID;
        }

    	xhr.open('GET', 'reputation.php?mode=list&u='+pUID+argSID+'&ajax=1', true);

        Tip('<img src="templates/nostream/images/loading.gif">',TITLE,'');

        xhr.onreadystatechange = function()
        {
        	if (xhr.readyState == 4)
            {
            	if (xhr.status == 200 || xhr.status == 304)
                {
					var oInfo = xhr.responseXML;

                    try {
	                    var tResponse = oInfo.getElementsByTagName('response')[0].firstChild.nodeValue;
                    } catch (oError) {
						var tResponse = "Error getting response.."
                    }
                    Tip(tResponse,TITLE,'');

                }else
                {
    	            Tip('Ошибка соединения!');
                }
            }
        };

        xhr.send(null);

	    return false;
    }
    return true;
}
