

function getHttpRequest() {

    var httpRequest;
    
    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
        httpRequest = new XMLHttpRequest();
        if (httpRequest.overrideMimeType) {
            httpRequest.overrideMimeType('text/xml');
        }
    } else if (window.ActiveXObject) { // IE
        try {
            httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }

    if (!httpRequest) {
        alert('Cannot create an XMLHTTP instance');
        return null;
    }

    return httpRequest;

}

/**
 * Generic HTTP request function
 */
function makeRequest(url) {

    var httpRequest = getHttpRequest();

    if (httpRequest) {
        httpRequest.onreadystatechange = function() { processResponse(httpRequest); };
        //httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        httpRequest.open('GET', url, true);
        //httpRequest.send("key=value&a=b&whatnot=blah");
        httpRequest.send(null);
    }

}

/**
 * Generic HTTP response processing function
 */
function processResponse(httpRequest) {

    if (httpRequest.readyState == 4) {
        if (httpRequest.status == 200) {
            //alert(httpRequest.responseText);
        } else {
            alert("There was a problem with the request!");
        }
    }

}





function serializeForm(formElement) {

    var ret = "";
    
    var elements = formElement.elements;
    
    for (var i = 0; i < elements.length; i++) {
    
        var formElement = elements[i];
        
        if (formElement.name) {
        
            var elementName = formElement.nodeName;
            var elementType = formElement.getAttribute("type");
            
            if (elementName) elementName = elementName.toLowerCase();
            if (elementType) elementType = elementType.toLowerCase();

            if (elementName == "select") {
            
                if (i > 0) ret += "&";
                ret += formElement.name + "=";
                ret += escape(formElement.options[formElement.selectedIndex].value);

            } else if (elementName == "textarea") {
            
                if (i > 0) ret += "&";
                ret += formElement.name + "=";
                ret += escape(formElement.value);
            
            } else if (elementType == "radio" || elementType == "checkbox") {
            
                if (formElement.checked) {
                    if (i > 0) ret += "&";
                    ret += formElement.name + "=";
                    ret += escape(formElement.value);
                }
            
            } else if (elementType == "hidden" || elementType == "text" || elementType == "password") {
            
                if (i > 0) ret += "&";
                ret += formElement.name + "=";
                ret += escape(formElement.value);
                
            }
        
        }

    }
    
    return ret;

}

function DL_GetElementLeft(eElement)
{
    var nLeftPos = eElement.offsetLeft;          // initialize var to store calculations
    var eParElement = eElement.offsetParent;     // identify first offset parent element  
    while (eParElement != null)
    {                                            // move up through element hierarchy
        nLeftPos += eParElement.offsetLeft;      // appending left offset of each parent
        eParElement = eParElement.offsetParent;  // until no more offset parents exist
    }
    return nLeftPos;                             // return the number calculated
}

function DL_GetElementTop(eElement)
{
    var nTopPos = eElement.offsetTop;            // initialize var to store calculations
    var eParElement = eElement.offsetParent;     // identify first offset parent element  
    while (eParElement != null)
    {                                            // move up through element hierarchy
        nTopPos += eParElement.offsetTop;        // appending top offset of each parent
        eParElement = eParElement.offsetParent;  // until no more offset parents exist
    }
    return nTopPos;                              // return the number calculated
}


