﻿function getPosts(template) {
    var xhr = getXHR();
    if (xhr) {
        xhr.open("GET", template.feedUrl, true);
        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4) {
                var nodes = xhr.responseXML.getElementsByTagName("item");
                var markup = template.postMarkUp;
                var html;

                for (var i = 0; i < nodes.length; i++) {
                    var node = nodes[i];
                    var title = getNodeValue(node, "title"); //node.getElementsByTagName("title")[0].childNodes[0].nodeValue;
                    var body = getNodeValue(node, "description"); //node.getElementsByTagName("description")[0].childNodes[0].nodeValue;
                    var link = getNodeValue(node, "link"); //node.getElementsByTagName("link")[0].childNodes[0].nodeValue;
                    var date = toShortDate(getNodeValue(node, "pubDate")); //node.getElementsByTagName("pubDate")[0].childNodes[0].nodeValue;

                    var temp = markup + "\r\n";
                    temp = temp.replace(/%title%/g, title);
                    temp = temp.replace(/%date%/g, date);
                    temp = temp.replace(/%body%/g, body);
                    temp = temp.replace(/%link%/g, link);

                    if (html) {
                        html += temp;
                    } else {
                        html = temp;
                    }
                }

                var container = document.getElementById(template.containerID);
                container.innerHTML = html;
            }
        }
        xhr.send();
    }
}

function getNodeValue(node, tagName) {
    if (node) {
        var children = node.getElementsByTagName(tagName);
        if (children && children.length == 1) {
            var child = children[0];
            if (child && child.childNodes.length == 1) {
                if (child.childNodes[0].nodeType == 3) 
                    return child.childNodes[0].nodeValue;
            }
        }
    }
    return '';
}

function getXHR() {
    if (window.XMLHttpRequest) {
        return new window.XMLHttpRequest;
    } else {
        try {
            return new ActiveXObject("MSXML2.XMLHTTP.3.0");
            }
        catch (e) {
            return null;
        }
    }
}

function postTemplate() {
    this.feedUrl;
    this.containerID;
    this.postMarkUp;
}

function toShortDate(d) {

   var dt = new Date(d);
   var sd = dt.getFullYear() + '-' + dt.getMonth() + '-' + dt.getDay();
   return sd
  
}
