﻿// helper functions
var setupStats = function() {

    var myGraph = new mooBarGraph({
        container: $('statChart'),
        data: new Array([0, '', '', '', '']),
        colors: ['#3a87d0', '#1d75c9', '#0063c1', '#1d75c9'],
        color: '#1A2944',
        width: 288,
        height: 50,
        barSpace: 0

    });

    myGraph.draw('/feeds/stats_json.aspx');

}


var gotoPage = function(page) {
    //$('CurrentPage').setProperty('text', page);
    var baseURL;
    if (location.href.indexOf('#') < 0) {
        baseURL = location.href;
    }
    else
{
baseURL = location.href.slice(0, location.href.indexOf('#'));
}
    
 
    if (page > 1) {
        location.href = baseURL + '#' + page;
    }
    else {
        location.href = baseURL;
    }

    $('news').setProperty('text', '');
    $('Pager').setProperty('text', '');
    startPage();
    $('imgLoader').style.visibility = "Visible";
    $('Status').style.display = "inherit";
    scroll(0, 0);

}

var renderPager = function() {

var currentPage = getPage(); //$('CurrentPage').getProperty('text');

var prevPage = '<span class=\"NewsPagerPage\"><a href=\"#\" id=\"pPage\"><img src=\"/img/previous.png\" alt=\"Previous Page\" align=\"absbottom\"/>&nbsp;Previous Page&nbsp;</a></span>';
var nextPage = '<span class=\"NewsPagerPage\"><a href=\"#\" id=\"nPage\">&nbsp;Next Page&nbsp;<img src=\"/img/next.png\" alt=\"Next Page\" align=\"absbottom\"/></a></span>';
var goLive = '<span class=\"NewsPagerPage\"><a href=\"#\" id=\"lPage\"><img src=\"/img/previous.png\" alt=\"Previous Page\" align=\"absbottom\"/>&nbsp;Go Live&nbsp;</a></span>';

    if (currentPage == 1) {
        $('Pager').setProperty('html', nextPage);
        $('nPage').addEvent('click', function(e) {
            e = new Event(e).stop();
            gotoPage(2);
        });
    }
    else {
        $('Pager').setProperty('html', goLive + '&nbsp;' + prevPage + '&nbsp;' + nextPage);
        $('nPage').addEvent('click', function(e) {
            e = new Event(e).stop();
            gotoPage((parseInt(currentPage, 10) + 1));
        });
        $('pPage').addEvent('click', function(e) {
            e = new Event(e).stop();
            gotoPage((parseInt(currentPage, 10) - 1));
        });
        $('lPage').addEvent('click', function(e) {
            e = new Event(e).stop();
            gotoPage(1);
        });
    }

}

var updateDates = function() {
    var table = $('news');
    // logic to determine where to add
    var currentRows = table.getElements('tr');

    if (currentRows.length != 0) {
        for (x = 0; x < currentRows.length; x++) {
            //do browser check since FF is special
            if (Browser.Engine.gecko) {
                var origTime = currentRows[x].getElementsByTagName('span')[0].getProperty('id');
                currentRows[x].getElementsByTagName('span')[0].setProperty('text', processDate(origTime));
            }
            else {
                var origTime = currentRows[x].getElementsByTagName('span')[0].id; 
                currentRows[x].getElementsByTagName('span')[0].innerText = processDate(origTime);
            }

        }
    }
}

var processDate = function(dateUtc) {
    var diff = 0;
    var postDate = new Date(parseInt(dateUtc, 10));
    var currentDate = new Date();
    var yearToday = currentDate.getUTCFullYear();
    var monthToday = currentDate.getUTCMonth();
    var dayToday = currentDate.getUTCDate();
    var hourToday = currentDate.getUTCHours();
    var minToday = currentDate.getUTCMinutes();
    var secToday = currentDate.getUTCSeconds();
    var msToday = currentDate.getUTCMilliseconds();
    var utcDate = Date.UTC(yearToday, monthToday, dayToday, hourToday, minToday, secToday, msToday);

    diff = utcDate - postDate;

    var daysPast = Math.floor((diff / 86400000));
    var hoursPast = Math.floor((diff % 86400000) / 3600000);
    var minutesPast = Math.floor(((diff % 86400000) % 3600000) / 60000);

    if (daysPast < 1 && hoursPast < 1) {
        if (minutesPast < 1) {
            return 'seconds';
        }
        else if (minutesPast == 1) {
            return '1 minute';
        }
        else {
            return minutesPast + ' minutes';
        }
    }
    else if (daysPast < 1) {
        if (hoursPast == 1) {
            return '1 hour';
        }
        else {
            return hoursPast + ' hours';
        }
    }
    else {
        if (daysPast == 1) {
            return '1 day';
        }
        else {
            return daysPast + ' days';
        }

    }

    //return minTwoDigits(daysPast) + ':' + minTwoDigits(hoursPast) + ':' + minTwoDigits(minutesPast);
}

var minTwoDigits = function(n) {
    if (n > 9) return n;
    if (n == 0) return '00';
    if (n < 0) return '00';
    return '0' + n;
}

//main ajax content
var insertRow = function(row) {
    var table = $('news');
    var currentRows = table.getElements('tr');

    if (currentRows.length == 0) {
        row.injectInside(table);
    }
    else {
        var firstRow = table.getFirst('tr');
        row.injectBefore(firstRow);
    }

    //setup tooltip
    var customTips = row.getElementsByTagName('a')[0];
    var toolTips = new Tips(customTips, { className: 'msnews_tip', fixed: true, showDelay: 300, hideDelay: 0, offset: { 'x': 16, 'y': 26}});

    //remove the last element if list is too big
    if (currentRows.length > 25) table.getLast('tr').destroy();
}

var processDeal = function(deals) {
    var lastid;
    deals.each(function(deal) {
        var row = new Element('tr');
        var link = new Element('td', { 'id': deal.id, 'class': 'DealTitle' }).set('html', '<div class=\"ArticleContentMSNewsItem\"><img src=\"/img/item.png\" style=\"float: left;padding: 4px 4px 0px 0px;\" /><div>' + deal.link + '</div><div class=\"ArticleDetails\">Published <span id=\"' + deal.datefound + '\">' + processDate(deal.datefound) + '</span> ago at ' + deal.source + '</div></div>').injectInside(row);
        
        
        insertRow(row);
        lastid = deal.id;
    });

    // window.product_paginator.update_pages();
    if (lastid != null) $('LastUpdateID').set('text', lastid);

    $('imgLoader').style.visibility = "hidden";
    $('Status').style.display = "none";
    renderPager();
}



var getUpdates = function() {
    $('imgLoader').style.visibility = "visible";
    var lastid = $('LastUpdateID').get('text');
    getFeed('/feeds/msnews_json.aspx?l=' + lastid);

    updateDates();
}

var getFeed = function(furl) {
    var request = new Request.JSON({
        url: furl,
        onComplete: function(jsonObj) {
            if (jsonObj != null) {
                processDeal(jsonObj);
            }
        }
    }).send();
}

var getPage = function() {

    var urlCheck = location.href.indexOf('#');
    if (urlCheck < 0) {
        return 1;
    }
    else {
        return location.href.slice(location.href.indexOf('#') + 1);
    }
}

var startPage = function() {
    $clear(window.Updates);
    var currentPage = getPage(); //$('CurrentPage').getProperty('text');
  

    if (currentPage == 1 || currentPage=='x') {
        getFeed('/feeds/msnews_json.aspx');

        //check for updates
        window.Updates = getUpdates.periodical(60000);
    }
    else {
        getFeed('/feeds/msnews_json.aspx?p=' + currentPage);
        window.Updates = updateDates.periodical(60000);
    }

    if (currentPage > 1) {
        $('HeaderDetail').setProperty('text', ' - Page ' + currentPage);
    }
    else {
        $('HeaderDetail').setProperty('text', '');
    }


}

//Finally start everything up
window.addEvent('domready', function() {
    startPage();
    //ConfigureSearch();
    setupStats();
});
