DWREngine.setErrorHandler(DWRMessageHandler);
DWREngine.setWarningHandler(DWRMessageHandler);

function populateDaily(rssFeed){
    populateComponent("daily_fd", 4, rssFeed, false);
    // Display more link on last component.
    document.getElementById("daily_fd").innerHTML += "<span class=\"seemore\"><a href=\"/magazine/blogs/\">See all blogs</a></span>";
}

function populateComponent(componentName, numItems, rssFeed, isXrail){
    document.getElementById(componentName).innerHTML = "";
    if( numItems > rssFeed.feedItems.length ) numItems = rssFeed.feedItems.length;
      for( var i = 0; i < numItems; i++ ){
    var blogURLArray = rssFeed.feedItems[i].url.split("/",6);
    var blogURL = "";
    for( var z=1; z < blogURLArray.length; z++){
       blogURL = blogURL + "/" + blogURLArray[z];
    }

    var componentHTML = document.getElementById(componentName).innerHTML;
    componentHTML = componentHTML + "<ul class='rss'><li class='title'><a href='" + (isXrail ? rssFeed.completeUrl : blogURL) + "' >" + rssFeed.feedItems[i].title + "</a></li><li class='description'>";
    var splitString = rssFeed.feedItems[i].description.split(" ",10);
    for( var y=0; y < splitString.length; y++){
       componentHTML = componentHTML + " " + splitString[y];
    }

    componentHTML = componentHTML + "..." +
       "</li><li class='pubDate'>" + rssFormatTime(rssFeed.feedItems[i].publishDate) +
       "</li></ul>";
    document.getElementById(componentName).innerHTML = componentHTML;
  }
    SI.ClearChildren.clear();
}

function rssFormatTime(d) {
  var fdate = new Date(d);

  /*
   * MT 4.25 fails to have 1 hr daylight shift in RFC 822 date/time.
   * TODO fix only for daylight time and change every year until MT is fixed.
   */

  var dtStart = new Date("Mar 8, 2009 02:00 EST");
  var dtEnd = new Date("Nov 1, 2009 02:00 EST");

  if (dtStart < fdate && fdate < dtEnd) {
     // Note: shifting 1 hr back could result in diff day, so do it first.
     var millis = fdate.getTime();
     millis -= 3600000;  //-- set 1 hr back
     fdate.setTime( millis);
     // alert("corrected date: " + fdate);
  }

  var month = fdate.getMonth();
  var date = fdate.getDate();
  var month = fdate.getMonth();
  var aMonth = ['January','February','March','April','May','June','July','August','September','October','November','December'];
  var year = fdate.getFullYear();
  var fhour = fdate.getHours();
  var ap = "PM";

  if (fhour < 12) {
    ap = "AM";
  }

  if (fhour == 0) {
    fhour = 12;
  }

  if (fhour >= 13) {
    fhour = fhour - 12;
  }

  var fmin = fdate.getMinutes();
  fmin = fmin + "";

  if (fmin.length == 1) {
    fmin = "0" + fmin;
  }

  return fhour + ":" + fmin + ap + ", " + aMonth[month] + " " +  date + ", " + year;
}

function truncateOnBoundary( longString, minLength, maxLength ){
    for( var i = minLength; i < maxLength; i++ ){
        var boundary = /\W/;

        if( boundary.test(longString[i]) ){
            break;
        }
    }

    return longString.slice(0, i);
}
