<div id="downloadLinksContainer"> </div>
<script type="text/javascript">
// Function to build the SOAP request body XML string
function buildSoapRequestBody(latestVersionsCount) {
return (
'<?xml version="1.0" encoding="utf-8"?>' +
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">' +
' <soap:Body>' +
' <GetDownloadLinks xmlns="http://tempuri.org/">' +
' <latestVersionsCount>' + latestVersionsCount + '</latestVersionsCount>' +
' </GetDownloadLinks>' +
' </soap:Body>' +
'</soap:Envelope>'
);
}
// Function to convert the SOAP XML response to an array of JavaScript objects
function convertSoapXmlToJsArray(xmlDoc) {
var downloadLinksArray = [];
if (!xmlDoc) {
console.error("convertSoapXmlToJsArray: XML document is null or undefined.");
return downloadLinksArray;
}
var downloadLinkInfoNodes = xmlDoc.getElementsByTagName("DownloadLinkInfo");
// Helper function to get text content from an XML node
function getNodeText(parentElement, tagName) {
var child = parentElement.getElementsByTagName(tagName)[0];
return child && child.textContent ? child.textContent : "N/A";
}
for (var i = 0; i < downloadLinkInfoNodes.length; i++) {
var node = downloadLinkInfoNodes[i];
var jsObject = {
Version: getNodeText(node, "Version"),
ReleaseDate: getNodeText(node, "ReleaseDate"),
DownloadLink: getNodeText(node, "DownloadLink"),
CustomDownloadLink: getNodeText(node, "CustomDownloadLink")
};
downloadLinksArray.push(jsObject);
}
return downloadLinksArray;
}
// Function to display download links in the specified container
function displayDownloadLinks(downloadLinksArray, containerElement) {
containerElement.innerHTML = ""; // Clear previous content
if (!downloadLinksArray || downloadLinksArray.length === 0) {
containerElement.innerHTML = "<p>No download links to display.</p>";
return;
}
for (var k = 0; k < downloadLinksArray.length; k++) {
var linkInfo = downloadLinksArray[k];
var version = linkInfo.Version;
var releaseDateStr = linkInfo.ReleaseDate;
var downloadLink = linkInfo.DownloadLink;
var customDownloadLink = linkInfo.CustomDownloadLink;
try {
var dateObj = new Date(releaseDateStr);
if (!isNaN(dateObj.getTime())) {
releaseDateStr = dateObj.toLocaleDateString() + " " + dateObj.toLocaleTimeString();
}
} catch(e) { /* ignore date parsing error, use original string */ }
var entryDiv = document.createElement("div");
entryDiv.className = "version-entry";
var versionHeader = document.createElement("h3");
versionHeader.textContent = "Version: " + version;
entryDiv.appendChild(versionHeader);
var datePara = document.createElement("p");
datePara.textContent = "Released: " + releaseDateStr;
entryDiv.appendChild(datePara);
if (downloadLink !== "N/A" && downloadLink) {
var dlLinkElement = document.createElement("a");
dlLinkElement.href = downloadLink;
dlLinkElement.textContent = "Download EXE";
dlLinkElement.target = "_blank";
entryDiv.appendChild(dlLinkElement);
}
if (customDownloadLink !== "N/A" && customDownloadLink) {
var customDlLinkElement = document.createElement("a");
customDlLinkElement.href = customDownloadLink;
customDlLinkElement.textContent = "Download ZIP";
customDlLinkElement.target = "_blank";
entryDiv.appendChild(customDlLinkElement);
}
containerElement.appendChild(entryDiv);
}
}
// Main function to fetch data and trigger display
function fetchAndDisplayDownloads(count) {
var xhr = new XMLHttpRequest();
var url = "https://staging.visualcron.com/wsx/2005-09-26/VCWebService.asmx";
var soapRequestBody = buildSoapRequestBody(count);
var container = document.getElementById("downloadLinksContainer");
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xhr.setRequestHeader("SOAPAction", "http://tempuri.org/GetDownloadLinks");
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) { // 4 = DONE
if (xhr.status === 200) { // 200 = OK
var xmlDoc = xhr.responseXML;
if (!xmlDoc && xhr.responseText) {
var parser = new DOMParser();
xmlDoc = parser.parseFromString(xhr.responseText, "text/xml");
}
var downloadLinksArray = convertSoapXmlToJsArray(xmlDoc);
displayDownloadLinks(downloadLinksArray, container);
} else {
container.innerHTML = "<p>Error fetching download links. Status: " + xhr.status + "</p>";
console.error("Error fetching download links:", xhr.status, xhr.statusText, xhr.responseText);
}
}
};
xhr.send(soapRequestBody);
}
// Call the function when the page loads, requesting 3 versions
window.onload = function() {
fetchAndDisplayDownloads(3);
};
</script>