/* 
**  Incorporate locally copied feeds
*/

if (!("console" in window)) {
    window.console = {};
}

var IfElse_Feeds = {
    init:    function() {
        feeds = [
                    {   src:  "/archives/index.xml",    callback: "ifelse"        },
                    {   src:  "/data/ffffound.xml",     callback: "ffffound"      },
                    {   src:  "/data/timespeople.xml",  callback: "timespeople"   }
                ];

        for (var f=0; f<feeds.length; f++) {
            this.getFeed(feeds[f].src, feeds[f].callback);
        }
        setTimeout(this.cleanup, 9000);
    },

    getFeed: function(src, callback) {
        var feedFile = src + '?' + Math.floor(Math.random()*111);
        new Ajax.Request(feedFile,
        {
            method:    'get',
            onSuccess: function(transport){
                if(src.indexOf(".js")>0) {
                    var x = eval(transport.responseText) || false;
                } else {
                    var x = transport.responseText       || false;
                }
                eval( "IfElse_Feeds.drawFeed_" + callback + "(x)"); // eval isn't always evil...
            },
            onFailure: function(){ 
            //  do nothing...
                if(feedName=='ffffound') {
                    $('ffffound').innerHTML    = '';
                } else {
                    $('timespeople').innerHTML = '';
                }
            }
        });
    },

    drawFeed_ffffound: function(x) {

        var html     = [];
        var column1  = [];
        var column2  = [];
        var fragment = [];

    //  Convert to XML object
        var xmlObj   = (new DOMParser()).parseFromString(x, "text/xml");
        var root     = xmlObj.getElementsByTagName('rss')[0];
        var channels = root.getElementsByTagName("channel");
        var items    = channels[0].getElementsByTagName("item");

        for (var i=0; i<4; i++) {
            var title, url, pubdate, thumb, source, savedby;
            for (var b=0; b<items[i].childNodes.length; b++) {

                var n    = items[i].childNodes.item(b);
                var nn   = n.nodeName.split(":");
                var base = nn[nn.length-1];

                switch(base) {
                    case "title":
                        title       = n.firstChild.nodeValue;
                        break;
                    case "link":
                        url         = n.firstChild.nodeValue;
                        break;
                    case "pubDate":
                        pubdate     = n.firstChild.nodeValue;
                        break;
                    case "thumbnail":
                        thumb       = n.getAttribute("url");
                        break;
                    case "source":
                        source      = n.getAttribute("referer");
                        break;
                    case "savedby":
                        savedby     = n.getAttribute("count");
                        break;
                    default:
                    //  default
                }
            }
            html.push("<a href='" + url +"' title='" + title + "' target='_blank'><img src='" + thumb + "' width='155' class='ffffound'/></a>"  );
        }
        $('ffffound').innerHTML = html.join('');
    },

    drawFeed_ifelse: function(x) {

        var html     = [];
        var column1  = [];
        var column2  = [];
        var fragment = [];

    //  Convert to XML object
        var xmlObj   = (new DOMParser()).parseFromString(x, "text/xml");
        var root     = xmlObj.getElementsByTagName('rss')[0];
        var channels = root.getElementsByTagName("channel");
        var items    = channels[0].getElementsByTagName("item");

        html.push("<table>\n<tr>\n");

        for (var i=0; i<items.length; i++) {
            var title, url, thumb, desc;
            var isLast = '';
            for (var b=0; b<items[i].childNodes.length; b++) {

                var n    = items[i].childNodes.item(b);
                var nn   = n.nodeName.split(":");
                var base = nn[nn.length-1];

                switch(base) {
                    case "title":
                        title       = n.firstChild.nodeValue;
                        break;
                    case "description":
                        desc        = n.firstChild.nodeValue;
                        break;
                    case "link":
                        url         = n.firstChild.nodeValue;
                        break;
                    case "thumbnail":
                        thumb       = n.getAttribute("url");
                        break;
                    default:
                    //  default
                }

            }
            if (i==items.length-1) {    isLast = " class='last'"; }
            var htmlImg  = (thumb.length>1) ? "<a href='" + url +"' title='" + title + "'><img src='" + thumb + "' alt='" + title + "' /></a>" : "";
            html.push("<td" + isLast + ">" + htmlImg + "<p>" + desc + "</p></td>\n" );
        }

        html.push("</tr>\n</table>\n");

        $('projects').innerHTML = html.join('');
    },

    drawFeed_timespeople: function(r) {

        var html     = [];
        var column1  = [];
        var column2  = [];
        var fragment = [];

    //  Convert to XML object
        var xmlObj   = (new DOMParser()).parseFromString(r, "text/xml");
        var root     = xmlObj.getElementsByTagName('rss')[0];
        var channels = root.getElementsByTagName("channel");
        var items    = channels[0].getElementsByTagName("item");

        for(var i=0; i<10; i++){

            var title, url, thumb, desc, pubdate;

            for (var b=0; b<items[i].childNodes.length; b++) {

                var n      = items[i].childNodes.item(b);
                var nn     = n.nodeName.split(":");
                var base   = nn[nn.length-1];
                var nValue = (n.firstChild) ? n.firstChild.nodeValue : '';

                switch(base) {
                    case "title":
                        title   = nValue;
                        break;
                    case "description":
                        desc    = nValue;
                        break;
                    case "link":
                        url     = nValue;
                        break;
                    case "pubDate":
                        pubdate = nValue;
                        break;
                    default:
                    //  default
                }

            }

        //  Custom edits
            title = title.replace(" Donohoe", "");
            title = title.replace(" : ", ": ");

            fragment.push("<li>");
            fragment.push("<a href='" +url+ "' target='_blank'>" +title+ "</a><p>"+ desc +"</p>");
            fragment.push("</li>\n");

            if (i%2 == 0) {
                column2.push(fragment.join(''));
            } else {
                column1.push(fragment.join(''));
            }
            fragment = [];    //    clear
        }

        html.push("<div id='aColumn' style='width: 50%; float:right'><ul>"+column1.join('')+"</ul>\n</div>\n");
        html.push("<div id='bColumn' style='width: 50%; '><ul>"+column2.join('')+"</ul>\n</div>\n<br clear=all />\n");
        html.push("<div id='feedlinks'><a href='http://timespeople.nytimes.com/view/user/37963625/rss.xml'>XML</a></div>");
        $('timespeople').innerHTML = html.join('');
    },

    cleanup: function() {
    //  Clear loading animation if feed not processed
        if ($('timespeople').innerHTML.indexOf('loading.gif')>0) {
            $('timespeople').innerHTML = '<!-- timed out -->';
        }
        if ($('ffffound').innerHTML.indexOf('loading.gif')>0) {
            $('ffffound').innerHTML = '<!-- timed out -->';
        }
    }
};

IfElse_Feeds.init();
