﻿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(aVersions[i]);
                return oXmlHttp;
            } catch (oError) {

            }
        }
    }
    throw new Error("XMLHttp object could be created.");
}


function encodeNameAndValue(sName, sValue) {
    var sParam = encodeURIComponent(sName);
    sParam += "=";
    sParam += encodeURIComponent(sValue);
    return sParam;
}

function getRequestBody(oForm) {

    //array to hold the params
    var aParams = new Array();

    //get your reference to the form
    var oForm = document.forms[0]; // = oForm

    //iterate over each element in the form
    for (var i = 0; i < oForm.elements.length; i++) {

        //get reference to the field
        var oField = oForm.elements[i];

        //different behavior based on the type of field
        switch (oField.type) {

            //buttons - we don't care  
            case "button":
            case "submit":
            case "reset":
                break;

            //checkboxes/radio buttons - only return the value if the control is checked.  
            case "radio":
            case "checkbox":
                if (!oField.checked) {
                    break;
                } //End: if

                //text/hidden/password all return the value
            case "text":
            case "hidden":
            case "password":
                aParams.push(encodeNameAndValue(oField.name, oField.value));
                break;

            //everything else  
            default:

                switch (oField.tagName.toLowerCase()) {
//                    case "select":
//                        aParams.push(encodeNameAndValue(oField.name, oField.options[oField.selectedIndex].value));
//                        break;
                    default:
                        aParams.push(encodeNameAndValue(oField.name, oField.value));
                }
        }

    }

    return aParams.join("&");
}


