var FACEBOOK_LOGO_SRC = "/img/facebook_share_icon.gif";
var DELICIOUS_LOGO_SRC = "/img/delicious.small.gif";
var READER_LOGO_SRC = "/img/shared.gif";

function makeDeliciousTags(item) {
  var tags = SPAN({"class": "tags"});
  if (item["dc:subject"] && item["dc:subject"].length > 0) {
    tags.appendChild(document.createTextNode(" — "));

    var categories = item["dc:subject"].split(" ");
    
    var tag = categories[0];
    tags.appendChild(A({href: (item.feed.alternate.href + tag)}, tag));
    
    for (var i = 1; i < categories.length; ++i) {
      var tag = categories[i];
      tags.appendChild(document.createTextNode(" "));
      tags.appendChild(A({href: (item.feed.alternate.href + tag)}, tag));
    }
  }
  
  return tags;
}

function makeByline(item) {
  switch (item.feed.type) {
    case "facebook":
      return SPAN({}, IMG({src: FACEBOOK_LOGO_SRC, alt: "", border: "0"}), " ",
          A({href: item.source.link[0].href}, "view on Facebook"));
    
    case "del.icio.us":
      return SPAN({}, IMG({src: DELICIOUS_LOGO_SRC, alt: "", border: "0"}), " ", 
          A({href: "http://del.icio.us/phopkins"}, "phopkins"), makeDeliciousTags(item));
      
    case "reader":
      return SPAN({}, IMG({src: READER_LOGO_SRC, alt: "", border: "0"}), " shared from ", 
          A({href: item.source.link[0].href}, item.source.title.content));
  }
}

function cleanDescription(item) {
  switch (item.feed.type) {
    case "reader":
      var idx = item.description.indexOf("<br>");
      if (idx < 0) idx = item.description.indexOf("</p>");
      if (idx < 0) idx = item.description.length;
      
      return item.description.substring(0, idx).replace(/<[^>]*>/g, "");
    
    default:
      return item.description.replace(/^\s*/, "");
  }
}

function faviconFailed(img) {
  window.alert("onerror");
  img.src = "http://www.grogmaster.com/img/link.gif";
}

function makeFaviconLoadHandler(img) {
  return function() {
  		img.style.visibility = "visible";
  		img.parentNode.style["background"] = "white";
  };
}

function renderShared(data) {
  var sharedList = createDOM("DL");
  
  for (var i = 0; i < data.value.items.length; ++i) {
    var item = data.value.items[i];
    
    var date = new Date(item["y:published"].utime * 1000);
    
    var faviconDOM = IMG({src: item.link.split('/').splice(0,3).join('/')+"/favicon.ico",
        alt: "", "class": "favicon"});
    faviconDOM.onload = makeFaviconLoadHandler(faviconDOM);
    faviconDOM = SPAN({"class": "favicon-holder"}, faviconDOM);
    
    var titleDOM = A({href: item.link}, item.title);
    var dateDOM = SPAN({"class": "date"}, (date.getMonth() + 1) + "/" + date.getDate());
    
    sharedList.appendChild(createDOM("DT", {}, faviconDOM, " ", titleDOM, " ", dateDOM));
    
    if (item.description) {
      sharedList.appendChild(
          createDOM("DD", {"class": "snippet"},
              SPAN({"class": "quote-left"}, "“"), 
              SPAN({"class": "snippet-text"}, cleanDescription(item)),
              SPAN({"class": "quote-right"}, "”")));
    }

    if (item.comment) {
      sharedList.appendChild(createDOM("DD", {"class": "comment"}, item.comment));
    }
    
    sharedList.appendChild(createDOM("DD", {"class": "byline"}, makeByline(item)));    
  }
  
  swapDOM($("shared-list"), sharedList);
}

