function createXMLHttpRequest(){
    var xmlhttp = null;
    try {
        // Moz supports XMLHttpRequest. IE uses ActiveX.
        // browser detction is bad. object detection works for any browser
        xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e) {
        // browser doesn’t support ajax. handle however you want
        //document.getElementById("errormsg").innerHTML = "Your browser doesnt support XMLHttpRequest.";
        alert("Your browser does not support the XMLHttpRequest Object!");
    }
    return xmlhttp;
}

var xhr = createXMLHttpRequest();

function karma(id, action, area, token){
    xhr.open('get', 'http\://www.adslzone.net/zone-karma.php?id='+ id +'&action='+ action +'&area='+ area +'&token='+ token);
    xhr.onreadystatechange = handleResponse;
    xhr.send(null);
}

function handleResponse(){
    if(xhr.readyState == 4){
        var response = xhr.responseText.split('|');
        
        if(response[0] == 'done'){
            if(response[1]){
                //Changes the thumbs to dull gray and disable the action
                document.getElementById("down-"+response[1]).src        = 'http\://cdn.adslzone.net/pub/adslzone.net/theme/icons/karma-gray_down.png';
                document.getElementById("down-"+response[1]).onclick    = '';
                document.getElementById("up-"+response[1]).src          = 'http\://cdn.adslzone.net/pub/adslzone.net/theme/icons/karma-gray_up.png';
                document.getElementById("up-"+response[1]).onclick      = '';
                //Update the karma number display
                //Grab prefix for minus and positive numbers
                if(response[2] < 0){
                    var prefix = '';
                } else {
                    var prefix = '+';
                }
                if(!response[2]){
                	alert("Response has no value");
                }
                var karmanumber = prefix + response[2];
                //The below line is commented out because there is no karma number atm.
                document.getElementById("karma-"+response[1]).innerHTML = karmanumber;
            } else {
                alert("WTF ?");
            }
        }
        else if(response[0] == 'info'){
            if(response[1]){
                //Changes the thumbs to dull gray and disable the action
                document.getElementById("down-"+response[1]).src        = 'http\://cdn.adslzone.net/pub/adslzone.net/theme/icons/karma-gray_down.png';
                document.getElementById("down-"+response[1]).onclick    = '';
                document.getElementById("up-"+response[1]).src          = 'http\://cdn.adslzone.net/pub/adslzone.net/theme/icons/karma-gray_up.png';
                document.getElementById("up-"+response[1]).onclick      = '';
                //Update the karma number display
                //Grab prefix for minus and positive numbers
                if(!response[2]){
                	alert("Response has no value");
                }
                var karmanumber = response[2];
                //The below line is commented out because there is no karma number atm.
                document.getElementById("karma-"+response[1]).innerHTML = karmanumber;
            } else {
                alert("WTF ?");
            }
        }
        else if(response[0] == 'error')
        {
            var error = 'Error: '+response[1];
            alert(error);
        } else {
        	alert("Reponse: "+response[0]);
            alert("Karma not changed, please try again later.");
        }
    }
}