var HOME="";
var CURRENT_ENTITY_TYPE="post_event";
var CURRENT_ENTITY_ID="";	
window.onDOMLoadEvents=new Array();window.DOMContentLoadedInitDone=false;function addDOMLoadEvent(listener){if(window.DOMContentLoadedInitDone){listener();return;}window.onDOMLoadEvents[window.onDOMLoadEvents.length]=listener;}
        

function addArgument(url, key, value) {
    if (url.indexOf('?') != -1) {
        url = url + "&" + key + "=" + encodeURIComponent(value);
    } else {
        url = url + "?" + key + "=" + encodeURIComponent(value);
    }
    return url
}

function addArguments(url, value) {
    if (url.indexOf('?') != -1) {
        url = url + "&" + value;
    } else {
        url = url + "?" + value;
    }
    return url
}

function handleJSON(response) {
    //alert(response.responseText);
    var i = 0;
    var result = response.responseXML.getElementsByTagName("content")[0];
    var data = null;
    if (!result) {
        data = null;
    } else {
        if (result.childNodes.length > 1) {
            data = result.childNodes[1].nodeValue;
        } else {
            data = result.firstChild.nodeValue;
        }
        data = data.replace(/&#93;&#93;&#62;/,"]]>")
    }
    
    if (data != null) {
        encoded = true;
        for (i=0; i<result.attributes.length; i++) {
            if (result.attributes[i].name == 'encoded') {
                encoded = result.attributes[i].value == 'true';
            }
        }

        if (encoded) {
            return data.evalJSON();
        } else {
            return data;
        }
    }
    return null;
}

function loadJSON(url, handle, postdata) {
    var result = loadXML(HOME + url, 
                         (handle) ? function(response) {
                             handle(handleJSON(response));
                         } : handle,
                         postdata);
    if (result) return handleJSON(result);
    return result;
}

function loadXML(url, handle, postdata) {
    return _load(url, handle, postdata, processReqChange);
}

function _load(url, handle, postdata, statechange) {
    var req = false;
    var isAsync = false;
    if (handle) {
        isAsync = true;
    }
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        try {
            req = new XMLHttpRequest();
        } catch(e) {
            req = false;
        }
        // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        try {
            req = new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e) {
            try {
                req = new ActiveXObject("Microsoft.XMLHTTP");
            } catch(e) {
                req = false;
            }
        }
    }
    if (req) {
        if (isAsync) {
            req.onreadystatechange = function() {
                statechange(req, handle);
            }
        }

        var currentTime = new Date();
        url = addArgument(url, "time", "" + currentTime.getTime());
        if (CURRENT_ENTITY_TYPE && CURRENT_ENTITY_TYPE !="") url = addArgument(url, "track", CURRENT_ENTITY_TYPE);

        if (postdata) {
            req.open('POST', url, isAsync);
            req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            req.setRequestHeader("Content-length", postdata.length);
            //req.setRequestHeader("Connection", "close");
            req.send(postdata);
        } else {
            req.open("GET", url, isAsync);
            req.send("");
        }

        if (!isAsync) {
            return req;
        }
    }
    return null;
}

function processReqChange(req, handle) {
    // only if req shows "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
            // ...processing statements go here...
            handle(req);
        } else {
            //alert("There was a problem retrieving the XML data:\n" + req.statusText);
        }
    }
}


