var http_request = false;

function makeRequest(url) {
    http_request = false;
    if (window.XMLHttpRequest) { // Mozilla, 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('Cannot create XMLHTTP instance');
        return false;
    }
    http_request.onreadystatechange = alertContents;
    http_request.open('GET', url, true);
    http_request.send(null);
    return true;
}

function alertContents() {
    if (http_request.readyState == 4) {
        if (http_request.status == 200) {
            var xmldoc = http_request.responseXML;
            var msgObj =  xmldoc.getElementsByTagName('root').item(0);
            var selName = xmldoc.getElementsByTagName('root')[0].firstChild.nodeName;
            var rowLength = xmldoc.getElementsByTagName(selName).length;
            var rowObj = xmldoc.getElementsByTagName(selName);
            if (document.getElementById(selName)) {
                var selObj = document.getElementById(selName);
                while (selObj.length) {
                    selObj.options[0] = null;
                }
                for(var i = 0; i < rowLength; i++) {
                    var selKey = rowObj[i].childNodes[0].firstChild.nodeValue;
                    var selValue = rowObj[i].childNodes[1].firstChild.nodeValue;
                    addObj = new Option(selValue, selKey, false, i == 0 ? true:false);
                    selObj.options[selObj.length] = addObj;
                }
            }
        }
        else {
            alert('There was a problem with the request.');
        }
    }
}

function do_xml(selObj) {
    var action = selObj.id;
    for (i = 0; i < selObj.length; ++i) {
        if (selObj.options[i].selected == true)
            var id = selObj.options[i].value;
    }
    makeRequest('rpc.php?action='+action+'&id='+id);
}

var base64s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
function decode(encStr) {
    var bits, decOut = '', i = 0;
    for(; i<encStr.length; i += 4){
        bits =
            (base64s.indexOf(encStr.charAt(i))    & 0xff) <<18 |
            (base64s.indexOf(encStr.charAt(i +1)) & 0xff) <<12 | 
            (base64s.indexOf(encStr.charAt(i +2)) & 0xff) << 6 |
            base64s.indexOf(encStr.charAt(i +3)) & 0xff;
        decOut += String.fromCharCode((bits & 0xff0000) >>16, (bits & 0xff00) >>8, bits & 0xff);
    }
    if(encStr.charCodeAt(i -2) == 61) undecOut=decOut.substring(0, decOut.length -2);
    else if(encStr.charCodeAt(i -1) == 61) undecOut=decOut.substring(0, decOut.length -1);
    else undecOut=decOut;
    window.location.href = 'mailto:' + unescape(undecOut); 
}
