/** * Returns an XMLHttp instance to use for asynchronous * downloading. This method will never throw an exception, but will * return NULL if the browser does not support XmlHttp for any reason. * @return {XMLHttpRequest|Null} * * Original author: Mike Williams * Downloaded from www.geocodezip.com/scripts/downloadxml.js on 10/13/10 */ function createXmlHttpRequest() { try { if (typeof ActiveXObject != 'undefined') { return new ActiveXObject('Microsoft.XMLHTTP'); } else if (window["XMLHttpRequest"]) { return new XMLHttpRequest(); } } catch (e) { changeStatus(e); } return null; }; /** * This functions wraps XMLHttpRequest open/send function. * It lets you specify a URL and will call the callback if * it gets a status code of 200. * @param {String} url The URL to retrieve * @param {Function} callback The function to call once retrieved. */ function downloadUrl(url, callback) { var status = -1; var request = createXmlHttpRequest(); if (!request) { return false; } request.onreadystatechange = function() { if (request.readyState == 4) { try { status = request.status; } catch (e) { // Usually indicates request timed out in FF. } if ((status == 200) || (status == 0)) { callback(request.responseText, request.status); request.onreadystatechange = function() {}; } } } request.open('GET', url, true); try { request.send(null); } catch (e) { changeStatus(e); } }; /** * Parses the given XML string and returns the parsed document in a * DOM data structure. This function will return an empty DOM node if * XML parsing is not supported in this browser. * @param {string} str XML string. * @return {Element|Document} DOM. */ function xmlParse(str) { if (typeof ActiveXObject != 'undefined' && typeof GetObject != 'undefined') { var doc = new ActiveXObject('Microsoft.XMLDOM'); doc.loadXML(str); return doc; } if (typeof DOMParser != 'undefined') { return (new DOMParser()).parseFromString(str, 'text/xml'); } return createElement('div', null); } /** * Appends a JavaScript file to the page. * @param {string} url */ function downloadScript(url) { var script = document.createElement('script'); script.src = url; document.body.appendChild(script); }