function() {
    var versions = ["Msxml2.XMLHTTP",
                    "Msxml3.XMLHTTP",
                    "Microsoft.XMLHTTP",
                    "MSXML2.XmlHttp.6.0",
                    "MSXML2.XmlHttp.5.0",
                    "MSXML2.XmlHttp.4.0",
                    "MSXML2.XmlHttp.3.0",
                    "MSXML2.XmlHttp.2.0"
    ]

    if(XMLHttpRequest !== undefined) {  // For non-IE browsers
        createXMLHTTPObject = function() {  // Use memoization to cache the factory
            return new XMLHttpRequest()
        }
        return createXMLHTTPObject()

    } else { // IE
        for(var i=0, n=versions.length; i<n; i++) {
            try {
                var version = versions[i]
                var fn = function() {
                    return new ActiveXObject(version)
                }
                createXMLHTTPObject = fn   // Use memoization to cache the factory
                return createXMLHTTPObject()

            } catch(e) {   }
        }
    }

    throw new Error('Cant get XmlHttpRequest object')
}
function() {
    var versions = ["Msxml2.XMLHTTP",
                    "Msxml3.XMLHTTP",
                    "Microsoft.XMLHTTP",
                    "MSXML2.XmlHttp.6.0",
                    "MSXML2.XmlHttp.5.0",
                    "MSXML2.XmlHttp.4.0",
                    "MSXML2.XmlHttp.3.0",
                    "MSXML2.XmlHttp.2.0"
    ]

    if(XMLHttpRequest !== undefined) {  
        createXMLHTTPObject = function() {  
            return new XMLHttpRequest()
        }
        return createXMLHTTPObject()

    } else { 
        for(var i=0, n=versions.length; i<n; i++) {
            try {
                var version = versions[i]
                var fn = function() {
                    return new ActiveXObject(version)
                }
                createXMLHTTPObject = fn   
                return createXMLHTTPObject()

            } catch(e) {   }
        }
    }

    throw new Error('Cant get XmlHttpRequest object')
}
function ( ) { var versions = [ "Msxml2.XMLHTTP" , "Msxml3.XMLHTTP" , "Microsoft.XMLHTTP" , "MSXML2.XmlHttp.6.0" , "MSXML2.XmlHttp.5.0" , "MSXML2.XmlHttp.4.0" , "MSXML2.XmlHttp.3.0" , "MSXML2.XmlHttp.2.0" ] if ( XMLHttpRequest !== undefined ) { // For non-IE browsers createXMLHTTPObject = function ( ) { // Use memoization to cache the factory return new XMLHttpRequest ( ) } return createXMLHTTPObject ( ) } else { // IE for ( var i = 0 , n = versions . length ; i < n ; i ++ ) { try { var version = versions [ i ] var fn = function ( ) { return new ActiveXObject ( version ) } createXMLHTTPObject = fn // Use memoization to cache the factory return createXMLHTTPObject ( ) } catch ( e ) { } } } throw new Error ( 'Cant get XmlHttpRequest object' ) }
returns the XHR function or equivalent for use with ajax memoizes the function for faster repeated use
returns the XHR function or equivalent for use with ajax memoizes the function for faster repeated use