/* !!NOTOKENS!!
   $Id: comments.js,v 1.34 2009/07/23 17:50:14 mleite Exp $
   $Source: /home/np/shared/filmcom/static/js/pluck/comments.js,v $
*/
/*** For pluck comments ***/

function tryGetAuthorData(userGuid){
  if (document.getElementById('authorPluck')){
    if(userGuid){
      var requestBatch = new RequestBatch();
      requestBatch.AddToRequest(new UserKey(userGuid));
      requestBatch.BeginRequest(serverUrl, renderAuthorData);
    }
  }
}

var pluckStoryIdArray = new Array();
var pluckStoryIds;

function sortUnique(whatArray){
    var temp = new Array();

    for (var i=0;i<whatArray.length;i++){
        var tempString = temp.toString();
        if (tempString.indexOf(whatArray[i])<0){
            temp.push(whatArray[i]);
        }

    }
    return temp;
}

function addContentIds()
{
  pluckStoryIdArray = (pluckStoryIdArray.toString()).split(","); //first, make sure it's just one large array where each item in the array is a single content id
  pluckStoryIdArray = sortUnique(pluckStoryIdArray); //now pull out any dups
  pluckStoryIds = pluckStoryIdArray.toString();

  var articleKey = ""
  var requestBatch = new RequestBatch();
  strIds  = pluckStoryIds;
  var idArray;

  if (strIds!=null){
    idArray = strIds.split(",");
    for (i = 0; i < idArray.length; i++){
      articleKey = new ArticleKey("film_" + idArray[i]);
      requestBatch.AddToRequest(articleKey);
    }
    requestBatch.BeginRequest(serverUrl, renderArticle);
  }
}

function renderArticle(responseBatch){
//Checking ServerMessages first.  Happens when something goes wrong, usually no data for ArticleKey.

  for (i = 0; i < responseBatch.Messages.length;i++){
    //Parse out ServerMessage for ArticleKey
    strMessage = responseBatch.Messages[i].Message;
    intStartKey = strMessage.indexOf("ArticleKey = [");
    intEndKey = strMessage.indexOf(";") ;
    if (intStartKey > 0){
      strKey = strMessage.substring(intStartKey,intEndKey);
      var realKey = strKey.substring(strKey.indexOf("[film_")+6,strKey.indexOf("]"));
      //Populate span tags
      if(document.getElementById("comment_" + realKey)){
        document.getElementById("comment_" + realKey).innerHTML = "0";};
      if(document.getElementById("rec_" + realKey)){
        document.getElementById("rec_" + realKey).innerHTML = "0";};

    }
  }
  //Now getting the actual responses
  for (i = 0; i < responseBatch.Responses.length;i++){
    // get article from response
    var article = responseBatch.Responses[i].Article;
    var strKey = article.ArticleKey.Key;
    realKey = strKey.substr(strKey.indexOf("film_")+5, strKey.length);
    //Populate span tags with data
    if(document.getElementById("comment_" + realKey)){
      document.getElementById("comment_" + realKey).innerHTML = article.Comments.NumberOfComments;};
    if(document.getElementById("rec_" + realKey)){
      document.getElementById("rec_" + realKey).innerHTML = article.Recommendations.NumberOfRecommendations;};
  }
}

var showList1Images;
var showList2Images;

function showDiscoveryArticles(activity, section,theCategory,theContentType,theAge,maxNum,showImages) {
  var searchSections = new Array();
  if (section == "") section == "Story";
  searchSections[0] = new Section(section);
  var searchCategories = new Array();
  if (theCategory.length < 1) {
    theCategory = "All";
  }else{
    theCategory = "pagetype:" + theCategory.toLowerCase();
  }
  searchCategories[0] = new Category(theCategory);
  var activityDisco = new Activity(activity);
  var contentType = new ContentType("Article");
  var limitToContributorsDisco = new Array();
  limitToContributorsDisco[0] = new UserTier("Standard");
  //limitToContributorsDisco[1] = new UserTier("Editor");
  var age = theAge;
  var maximumNumberOfDiscoveries = maxNum;
  var newRequestBatch = new RequestBatch();
  var discoveryAction = new DiscoverContentAction(
     searchSections, searchCategories,
     limitToContributorsDisco,
     activityDisco, contentType, age,
     maximumNumberOfDiscoveries);
  newRequestBatch.AddToRequest(discoveryAction);
  if (activity=="Commented") {
    newRequestBatch.BeginRequest(serverUrl, processMostCommentedResults);
  }
  if (activity=="Recommended")  {
    newRequestBatch.BeginRequest(serverUrl, processMostRecommendedResults);
  }
}

function processMostCommentedResults(responseBatch){
  //Checking ServerMessages first.  Happens when something goes wrong, usually no data for ArticleKey.
  for (i = 0; i < responseBatch.Messages.length;i++){
    //Parse out ServerMessage for ArticleKey
    strMessage = responseBatch.Messages[i].Message;
     //alert('mostcommented message[' + i + ']: ' + strMessage);
    intStartKey = strMessage.indexOf("ArticleKey = [");
    intEndKey = strMessage.indexOf(";") ;
    if (intStartKey > 0){
      strKey = strMessage.substring(intStartKey,intEndKey);
      var realKey = strKey.substring(strKey.indexOf("[film_")+6,strKey.indexOf("]"));
    }
  }
//Now getting the actual responses
//alert("most commented length: " + responseBatch.Responses.length);
  for (c = 0; c < responseBatch.Responses.length; c++){
    // get article from response
    var variable = responseBatch.Responses[c];
    var discoveryAction = variable.DiscoverContentAction;
    var arts = discoveryAction.DiscoveredContent.length;
    var articleKeyArray = new Array();
    for (x=0;x<arts;x++){
      var content = discoveryAction.DiscoveredContent[x];
      var strKey = content.ArticleKey.Key;
      articleKeyArray[x] = strKey;
    }
    if (articleKeyArray.length==0){
      document.getElementById('pluckDiscoveryDiv' + 1).style.display='none';
    }
    for (a=0;a<articleKeyArray.length;a++){
      var requestDiscBatch = new RequestBatch();
      var articleKey = new ArticleKey(articleKeyArray[a] + "");
      requestDiscBatch.AddToRequest(articleKey);
      requestDiscBatch.BeginRequest(serverUrl, renderFirstDiscoveryArticle);
    }
  }
}

function processMostRecommendedResults(responseBatch){
  //Checking ServerMessages first.  Happens when something goes wrong, usually no data for ArticleKey.
  for (i = 0; i < responseBatch.Messages.length;i++){
    //Parse out ServerMessage for ArticleKey
    strMessage = responseBatch.Messages[i].Message;
    // alert('mostrecommended message[' + i + ']: ' + strMessage);
    intStartKey = strMessage.indexOf("ArticleKey = [");
    intEndKey = strMessage.indexOf(";") ;
    if (intStartKey > 0){
      strKey = strMessage.substring(intStartKey,intEndKey);
      var realKey = strKey.substring(strKey.indexOf("[film_")+6,strKey.indexOf("]"));
    }
  }
     //Now getting the actual responses
  for (c = 0; c < responseBatch.Responses.length; c++){
    // get article from response
    var variable = responseBatch.Responses[c];
    var discoveryAction = variable.DiscoverContentAction;
    var arts = discoveryAction.DiscoveredContent.length;
    var articleKeyArray = new Array();
    for (x=0;x<arts;x++){
      var content = discoveryAction.DiscoveredContent[x];
      var strKey = content.ArticleKey.Key;
      articleKeyArray[x] = strKey;
    }
    if (articleKeyArray.length==0){
      document.getElementById('pluckDiscoveryDiv' + 2).style.display='none';
    }
    for (a=0;a<articleKeyArray.length;a++){
      var requestDiscBatch = new RequestBatch();
      var articleKey = new ArticleKey(articleKeyArray[a] + "");
      requestDiscBatch.AddToRequest(articleKey);
      requestDiscBatch.BeginRequest(serverUrl, renderSecondDiscoveryArticle);
    }
  }
}

function renderFirstDiscoveryArticle(responseBatch){
  if (responseBatch.Responses.length==0){
    document.getElementById('pluckDiscoveryDiv' + 1).style.display='none';
  }else{
    renderTheArticle(responseBatch,'1',showList1Images);
  }
}

function renderSecondDiscoveryArticle(responseBatch){
  if (responseBatch.Responses.length==0){
    document.getElementById('pluckDiscoveryDiv' + 2).style.display='none';
  }else {
    renderTheArticle(responseBatch,'2',showList2Images);
  }
}

function renderTheArticle(responseBatch,whichDiv,showImages){
  //Checking ServerMessages first.  Happens when something goes wrong, usually no data for ArticleKey.

  for (i = 0; i < responseBatch.Messages.length;i++){
    //Parse out ServerMessage for ArticleKey
    strMessage = responseBatch.Messages[i].Message;
    intStartKey = strMessage.indexOf("ArticleKey = [");
    intEndKey = strMessage.indexOf(";") ;
    if (intStartKey > 0){
      strKey = strMessage.substring(intStartKey,intEndKey);
      var realKey = strKey.substring(strKey.indexOf("[film_")+6,strKey.indexOf("]"));
    }
  }

  //Now getting the actual responses
  for (i = 0; i < responseBatch.Responses.length;i++){
    // get article from response
    var article = responseBatch.Responses[i].Article;
    var categories = article.Categories;
    var pagetype='';
    var pubdate='';
    var minithumbid='';
    var author='';
    var authorurl='#';
    var storycontentid = article.ArticleKey.Key;
    var pageurl = article.PageUrl;
    if (pageurl.indexOf("?")>-1) pageurl = pageurl.substring(0, pageurl.indexOf('?'));
    if (pageurl.indexOf("#")>-1) pageurl = pageurl.substring(0, pageurl.indexOf('#'));

    pageurl = deriveRelativeUrl(pageurl);
    storycontentid = storycontentid.substring(storycontentid.indexOf("_")+1,storycontentid.length);
    pagetype = pullFromCategories(categories,'pagetype');
    pubdate = pullFromCategories(categories,'pubdate');
    if (pubdate.length>0){
      pubdate = retrieveDate(pubdate);
    }
    minithumbid = pullFromCategories(categories, 'minithumbid');
    author = pullFromCategories(categories, 'author');
    author = author.substring(0,1).toUpperCase() + author.substring(1, author.length);
    authorurl = pullFromCategories(categories,'authorurl');

    //populate the div
    var table = "";
    var border=true;
    if (document.getElementById('pluckDiscoveryResults'+whichDiv).innerHTML=='') border=false;
    if (border){
      table += "<div style='width:100%;margin:0;padding:10px 0;'>";
    }else {
         table += "<div style='width:100%;margin:0;padding:10px 0;'>";
    }
     table += "<table border='0' cellpadding='0' cellspacing='0'><tr><td valign='top' height='100%'>";
    if (showImages && minithumbid.length>0){
      minithumbid = decodeURI(minithumbid);
      table +=  "<div style='width:78px;height:78px;overflow:hidden'><a href='" + pageurl + "'><img border='0' src='" + minithumbid + "' /></a></div>";
    }else {
      table += '';
    }
    table += "</td><td height='100%' width='7'>&nbsp;</td><td valign='top' height='100%'><a href='" + pageurl + "'>" + article.PageTitle + "</a><br/>";
    if (pubdate.length>0)
      table += "<span style='width:33%;color:#999;font-size:10px;'>" + pubdate + "</span>";
    if (pubdate.length>0 && author.length>0)
      table += "<span style='color:#999;font-size:10px;font-weight:bold;margin:0 5px;padding:0;'>|</span>";
    if (author.length>0){
      if (authorurl.indexOf('film.com')>-1) {
        authorurl = deriveRelativeUrl(authorurl);
      }
      table += "<span style='text-transform:capitalize;font-size:10px;width:33%;'><a href='" + authorurl + "' class='pluckDiscoveryAuthorLink' style='text-transform:capitalize;font-size:10px;font-weight:bold;'/>" + author + "</a></span>";
    }
    table += "</td></tr></table></div>";
    if ( (article.PageTitle).length > 0 && article.PageTitle != null){
      document.getElementById('pluckDiscoveryResults'+whichDiv).innerHTML =  document.getElementById('pluckDiscoveryResults'+whichDiv).innerHTML + table;
      document.getElementById('pluckDiscoveryDiv'+whichDiv).style.display="block";
    }
  }
}

function deriveRelativeUrl(fromwhat){
  var f = fromwhat;
  if (fromwhat.indexOf('film.com')>-1)
    f = fromwhat.substring(fromwhat.indexOf('film.com')+8,fromwhat.length);
  return f;
}

function pullFromCategories(array,what){
  var returnValue='';
  if (array.length){ // it's an array
    for (z=0;z<array.length;z++) {
      var name = array[z].Name;
      name = name.toString();
      var number = name.indexOf(what+":");
      if (number != -1){
        number = number + what.length + 1;
        var length = name.length;
        returnValue = name.substring(number, length);
      }
    }
  }
  return returnValue;
}

function retrieveDateAndTimeForPersona(timestamp){
  //5/1/2008 3:54:24 PM example timestamp
  var returnValue="";
  var firstArray = timestamp.split(' ');
  var time = firstArray[1] + firstArray[2];
  var date = firstArray[0];
  var dateArray = date.split('/');
  var month = dateArray[0];
  var day = dateArray[1];
  var year = dateArray[2];
  var timezone = "PST";
  if (parseInt(month) >= 3 && parseInt(month) <=11){
    if ( ( (parseInt(month)==3 && parseInt(day) >=9) || parseInt(month)>3) && ( parseInt(month)<11 || (parseInt(month)==11 && parseInt(day) <=2)) ){
      timezone="PDT";
    }
  }
  month = getMonth(month);
  date = month + " " + day + ", " + year;
  returnValue = '<span class="date">' + date + '</span> <span class="time">' + time + ' ' + timezone + '</span>';
  return returnValue;
}

function getMonth(num){
  var month = num;
  if (month=='01' || month=='1') month = 'Jan';
  if (month=='02' || month=='2') month = 'Feb';
  if (month=='03' || month=='3') month = "Mar";
  if (month=='04' || month=='4') month = "Apr";
  if (month=='05' || month=='5') month = "May";
  if (month=='06' || month=='6') month = "Jun";
  if (month=='07' || month=='7') month = "Jul";
  if (month=='08' || month=='8') month = "Aug";
  if (month=='09' || month=='9') month = "Sep";
  if (month=='10') month = "Oct";
  if (month=='11') month = "Nov";
  if (month=='12') month = "Dec";
  return month;
}

function retrieveDate(timestamp){
  //2007-07-19 11:35:00.0 example timestamp
  var returnValue = "";
  var array = timestamp.split('-');
  if (array.length){
    var year = array[0];
    var day = array[2].substring(0,array[2].indexOf(' '));
    if (day.indexOf('0')==0) day = day.substring(1,day.length);
    var month = array[1];
    month = month +'';
    month = getMonth(month);
    returnValue = month + ' ' + day + ', ' + year;
  }
  return returnValue;
}

function setMastheadCookie(iconUrl){
  document.cookie = "pck=" + encodeURI(iconUrl) + "; path=/";
}

function removeMastheadCookie(){
  document.cookie = "pck=" + null + "; path=/";
}

function getMastHeadCookie(){
  if (document.cookie.length>0){
    c_name="pck"
    c_start=document.cookie.indexOf(c_name + "=");
    if (c_start!=-1){
      c_start=c_start + c_name.length+1;
      c_end=document.cookie.indexOf(";",c_start);
      if (c_end==-1) c_end=document.cookie.length;
        return decodeURI(document.cookie.substring(c_start,c_end));
    }
  }
  return null;
}

function getUserMastheadImage(){
  mastHeadCookie = getMastHeadCookie();
  var qs = location.search.substring(1);
  if ((authenticated && (mastHeadCookie == null || mastHeadCookie == "null")) || qs.indexOf("PersonaProfile") > 0){
    var requestBatch = new RequestBatch();
    requestBatch.AddToRequest(new UserKey(userGuid));
    requestBatch.BeginRequest(serverUrl, renderUserMastheadImage);
  }else if (authenticated){
    document.getElementById('mastheadPersonaImage').src=mastHeadCookie;
  }else if (!authenticated){
    removeMastheadCookie();
  }
}


function renderUserMastheadImage(responseBatch){
  //Checking ServerMessages first.  Happens when something goes wrong, usually no data for ArticleKey.

  for (i = 0; i < responseBatch.Messages.length;i++){
    //Parse out ServerMessage for ArticleKey
    strMessage = responseBatch.Messages[i].Message;
    intStartKey = strMessage.indexOf("ArticleKey = [");
    intEndKey = strMessage.indexOf(";") ;
    if (intStartKey > 0){
      strKey = strMessage.substring(intStartKey,intEndKey);
      var realKey = strKey.substring(strKey.indexOf("[film_")+6,strKey.indexOf("]"));
    }
  }

  //Now getting the actual responses
  for (i = 0; i < responseBatch.Responses.length;i++){
    // get user from response
    var theUser = responseBatch.Responses[i].User;
    var avatarImage = '';
    if (theUser.AvatarPhotoUrl)
    avatarImage = theUser.AvatarPhotoUrl;
    if (avatarImage == "") {
      avatarImage = "/images/pluck/persona/no-user-image.gif";
    }
    setMastheadCookie(avatarImage);
    document.getElementById('mastheadPersonaImage').src=avatarImage;

    if ( (document.location.toString()).indexOf('community/persona')>-1 ) {
      document.title = "Film.com | " + theUser.DisplayName;
    }
  }
}

var littleRedStar = 'http://i.realone.com/assets/rn/img/9/9/4/9/21829499.gif';
var littleYellowStar = 'http://i.realone.com/assets/rn/img/8/9/4/9/21829498.gif';

var totalComments = 0;
var totalPages = 0;
var abuseCommentCount = 0;
var lastPage = false;
var realKey;
var currPluckUser;



function addContentIdsPC(){
  var articleKey = ""
  var commentPage = "";
  var requestBatch = new RequestBatch();

  if(facebookON){
    turnOnFaceBook();
    slFB.init();
  }

  requestBatch.AddToRequest(new UserKey());
  strIds = contentId;

  articleKey = new ArticleKey("film_" + strIds);
  requestBatch.AddToRequest(articleKey);
  commentPage = new CommentPage(articleKey, 10, currPage);
  requestBatch.AddToRequest(commentPage);
  requestBatch.BeginRequest(serverUrl, renderResponsePC);
}

function renderResponsePC(responseBatch){
  //Checking ServerMessages first.  Happens when something goes wrong, usually no data for ArticleKey.


  for (i = 0; i < responseBatch.Messages.length;i++)
  {

    //Parse out ServerMessage for ArticleKey
    strMessage = responseBatch.Messages[i].Message;
    intStartKey = strMessage.indexOf("ArticleKey = [");
    intEndKey = strMessage.indexOf(";") ;
    if (intStartKey > 0)
    {
      strKey = strMessage.substring(intStartKey,intEndKey);
      realKey = strKey.substring(strKey.indexOf("[film_")+6,strKey.indexOf("]"));
      //Populate span tags

      for (i = 1;i<3;i++)
      {
        if (document.getElementById("comment_" + realKey + "_" + i))
          document.getElementById("comment_" + realKey + "_" + i).innerHTML = "0";
        if(document.getElementById("rec_" + realKey + "_" + i))
          document.getElementById("rec_" + realKey + "_" + i).innerHTML = "0";
         if (document.getElementById('numberOfComments'))
            document.getElementById('numberOfComments').innerHTML = "(0)";
      }
    }
  }

  var article, comments;
  //Now getting the actual responses
  for (c = 0; c < responseBatch.Responses.length; c++)
  {
    if (responseBatch.Responses[c].Article != undefined){
      article = responseBatch.Responses[c].Article;
      renderArticlePC(article);
    }
    if (responseBatch.Responses[c].CommentPage != undefined){
      comments = responseBatch.Responses[c].CommentPage;
      renderCommentsPC(comments);
    }
    if (responseBatch.Responses[c].User != undefined){
      currPluckUser = responseBatch.Responses[c].User;
    }
  }


}

function renderArticlePC(article){

  var strKey = article.ArticleKey.Key;
  realKey = strKey.substr(strKey.indexOf("film_")+5, strKey.length);
  totalComments = article.Comments.NumberOfComments - abuseCommentCount;
  totalPages = parseInt((totalComments-1)/10) + 1;
  var pagesNav = 'Page&nbsp;';

  for (var i=0;i<totalPages;i++){
    if (i > 0){
      pagesNav = pagesNav +  '<span class="rightNavNumBorder">&nbsp;</span>';
    }
    if (currPage != (i+1)){
      var whichNumToPaginate;
      if ( currPage < (i+1) ){
        whichNumToPaginate = (i+1) - currPage;
      } else {
        whichNumToPaginate = currPage - (i+1);
        whichNumToPaginate = 0 - whichNumToPaginate;
      }
      pagesNav = pagesNav + '<span class="pageNavNumberLink"><a href="#previous_comments" onclick="commentPaginate(' + whichNumToPaginate + ');if (!isIE){return false;}">' + (i+1) + '</a></span>';
    } else {
      pagesNav = pagesNav + '<span class="pageNavNumber">' + (i+1) + '</span>';
    }
  }

  var showPrev = false;
  var showNext = false;
  var commentNav = document.getElementById("commentNav");
  var pageNavDiv = document.getElementById("pageNumNav");
  var prevDiv = document.getElementById("prevComment");
  var nextDiv = document.getElementById("nextComment");

  if (currPage > 1) showPrev = true;
  if (currPage + 1 <= totalPages) showNext = true;

  pageNavDiv.innerHTML =  pagesNav;
  commentNav.style.diplay = "block";
  prevDiv.style.diplay = "block";
  nextDiv.style.diplay = "block";

  if (showPrev) {
    prevDiv.innerHTML = '<a href="#previous_comments" onclick="commentPaginate(-1);if (!isIE){return false;}"><img src="'+ staticBaseURL + '/images/global/previousArrowActive.gif" width="14" height="14" id="prevImage" alt="Previous Comments"/><span class="previousNav">&nbsp;Previous</span></a>';
  } else {
    prevDiv.innerHTML = '<img src="'+ staticBaseURL + '/images/global/previousArrowInactive.gif" width="14" height="15" id="prevImage" alt="Previous Comments"/><span class="previousNav">&nbsp;Previous</span>';
  }

  if (showNext) {
    nextDiv.innerHTML = '<a href="#previous_comments" onclick="commentPaginate(1);if (!isIE){return false;}"><span class="nextNav">Next&nbsp;</span><img src="'+ staticBaseURL + '/images/global/nextArrowActive.gif" width="14" height="15" id="nextImage" alt="Next Comments"/></a>';
  } else {
    nextDiv.innerHTML = '<span class="nextNav">Next&nbsp;</span><img src="'+ staticBaseURL + '/images/global/nextArrowInactive.gif" width="14" height="15" id="nextImage" alt="Next Comments"/>';
  }

  //Populate span tags with data
  for (i = 1;i<3;i++){
    if(document.getElementById("rec_" + realKey + "_" + i)){
      document.getElementById("comment_" + realKey + "_" + i).innerHTML = totalComments;
      document.getElementById('numberOfComments').innerHTML = "(" + totalComments + ")";
      if (document.getElementById("comment_" + realKey + "_" + i +"a")){
        document.getElementById("comment_" + realKey + "_" + i +"a").innerHTML = totalComments;
      }
      document.getElementById("rec_" + realKey + "_" + i).innerHTML = article.Recommendations.NumberOfRecommendations;
    }
  if (document.getElementById('rec_' + realKey + '_1a'))
    document.getElementById("rec_" + realKey + "_1a").innerHTML  = article.Recommendations.NumberOfRecommendations;
  }
  //Check to see if this user has reccomended the article
  if(document.getElementById('rec_story_tool') && article.Recommendations.CurrentUserHasRecommended == "True"){
    document.getElementById("rec_story_tool").innerHTML  = "Recommended&nbsp;<img src=\""+ staticBaseURL +"/images/icons/recommend_checked.gif\">";
    document.getElementById("rec_story_tool").innerHTML += "&nbsp;<span class='rating_count' style='width:300px;align:left'>" + article.Recommendations.NumberOfRecommendations + "</span>";
  }
  if (document.getElementById('rec_story_toolx') && article.Recommendations.CurrentUserHasRecommended == "True") {
    document.getElementById("rec_story_tool_span").innerHTML = '<img class="stool_icon" src=\"'+ staticBaseURL +'/images/icons/icon_recommend.gif" />&nbsp;<span class="tool_text">Recommended</span>&nbsp;(' + article.Recommendations.NumberOfRecommendations + ')</a>&nbsp;';
  if (document.getElementById('rec_story_tool_spana'))
    document.getElementById("rec_story_tool_spana").innerHTML = '<img class="stool_icon" src=\"'+ staticBaseURL +'/images/icons/icon_recommend.gif" />&nbsp;<span class="tool_text">Recommended</span>&nbsp;(' + article.Recommendations.NumberOfRecommendations + ')</a>&nbsp;';
  }

  //document.getElementById('commentNav').innerHTML = pagesNav;
  //document.getElementById("commentNav").style.border="none";
}

function breakLongWords(textola){
  var breakAt = 15;
  var tempText="";
  textola = textola.replace(/(<([^>]+)>)/ig," ");
  var textArray = textola.split(" ");
  for (x=0;x<textArray.length;x++){
    if (textArray[x].length > breakAt) {
      tempText += textArray[x].substring(0,breakAt) + "<br/>" + textArray[x].substring(breakAt,textArray[x].length) + " ";
    }else{
      tempText += textArray[x] + " ";
    }
  }
  return tempText;
}

function breakLines(what){
  what = what.replace(/(<([^>]+)>)/ig," ");
  var breakAt = 90;
  var s = "";
  var lines = what.length / 90 + "";

  if (lines.indexOf('.')>-1)
    lines = lines.substring(0, lines.indexOf('.'));
  if (lines > 1) {
    for (i=0;i<lines+1;i++){
      if (what.length > breakAt * (i+1) ) {
        s += what.substring(i * breakAt, breakAt * (i+1) ) + "<br/>";
      } else {
        s += what.substring( (i) * breakAt, what.length);
      }
    }
    return s;
  } else {
    return what;
  }
}

function renderCommentsPC(commentPage){
  var commentText='';
  var comment = "";
  var commentHTML = "";
  if (commentPage.Comments.length > 0){

    for (i = 0; i < commentPage.Comments.length; i++){
      comment = commentPage.Comments[i];
      commUser = comment.Author;

      if ((comment.AbuseReportCount < 5 && commUser.IsBlocked == "False") || (commUser.UserKey.Key == currPluckUser.UserKey.Key)){
        commentText = comment.CommentBody;
        //alert("comment.CommentBody: [" + comment.CommentBody + "]");
        var avatarImage = '';

        if (commUser.AvatarPhotoUrl)
          avatarImage = commUser.AvatarPhotoUrl;

        commentHTML += '<div class="ucomment_content">';
        var viewedUserTier = commUser.UserTier;

        if (viewedUserTier == "Editor") viewedUserTier = "Writer";
        var userTier = "white";
        var style;
        if (commUser.UserTier == "Standard"){
          userTier = "standard";
          style= 'style="background:transparent;background-image:none;" ';
        }else{
          style= 'style="background: url(\'' + staticBaseURL + '/images/pluck/persona/avatar_tag_white_bg.gif\') no-repeat transparent;" ';
        }
        commentHTML += '<div class="ucomment_body">';
        var communityUserKey =  commUser.UserKey.Key.toLowerCase();
        communityUserKey = communityUserKey.replace (/"/g, "");

        if (currPluckUser.UserKey.Key.toLowerCase() == communityUserKey){
          commentHTML += '<div class="avatarThumbnail" display="none" onclick="document.location=\'' + baseURL + '/community/persona?tab=home&uid=' + communityUserKey + '\'"><div class="cursored avatar ' + userTier + '"><img class="avatarImage" src="' + avatarImage + '"/><span class="extra"><img height="11" width="11" class="avatarIcon" src="';
          if (viewedUserTier=='Writer'){
            commentHTML = commentHTML + littleYellowStar;
          }else{
            commentHTML = commentHTML + littleRedStar;
          }
          commentHTML =  commentHTML + '"/><div class="userTier"><a href="#" >'  + viewedUserTier + '</a></div></span></div></div>';
        }else{
          commentHTML += '<div class="avatarThumbnail" display="none" onclick="document.location=\'' + baseURL + '/community/persona?uid=' + communityUserKey + '\'"><div class="cursored avatar ' + userTier + '"><img class="avatarImage" src="' + avatarImage + '"/><span class="extra"><img height="11" width="11" class="avatarIcon" src="';
          if (viewedUserTier=='Writer'){
            commentHTML = commentHTML + littleYellowStar;
          }else {
            commentHTML = commentHTML + littleRedStar;
          }
          commentHTML = commentHTML + '"/><div class="userTier"><a href="#" >' + viewedUserTier + '</a></div></span></div></div>';
        }
        commentHTML += '<div class="ucomment_text">';
        commentHTML += '<div class="ucomment_date_name">';

        if (comment.CurrentUserHasReportedAbuse == "True")
            commentHTML += "<span class='abuseReported'>Abuse Reported</span>";
        else
            commentHTML += '<a class="reportAbuseLink" href="#" onclick="reportAbuse(\'' + comment.CommentKey.Key + '\')">Report abuse</a>';

        if (currPluckUser.UserKey.Key.toLowerCase() == communityUserKey){
          commentHTML += '<a class="commentusername" href="/community/persona?tab=home&uid=' + communityUserKey + '">' + commUser.DisplayName + '</a>&nbsp;&nbsp;|&nbsp;&nbsp;' + retrieveDateAndTimeForPersona(comment.PostedAtTime) + '</div>';
        }else{
          commentHTML += '<a class="commentusername" href="/community/persona?uid=' + communityUserKey + '">' + commUser.DisplayName + '</a>&nbsp;&nbsp;|&nbsp;&nbsp;' + retrieveDateAndTimeForPersona(comment.PostedAtTime) + '</div>';
        }
        commentHTML += commentText + '</div></div></div>';
      }else{
        abuseCommentCount += 1;
      }
    }
    document.getElementById("comments").innerHTML = commentHTML;
    showCommentNav();
  }else{
    commentHTML = noCommentNav();
  }
  //alert("commUser.UserKey.Key: " + commUser.UserKey.Key);
  //alert(commentHTML);


}

function reportAbuse(key){
  var commentKey = new CommentKey(key);
  var requestBatch = new RequestBatch();
  var pageTitle = document.title;
  var reportAbuseAction = new ReportAbuseAction(commentKey, getLocation(), pageTitle);
  requestBatch.AddToRequest(reportAbuseAction);
  requestBatch.BeginRequest(serverUrl, pluckResponder);
}

function pluckResponder(responseBatch){
  if (responseBatch.Messages[0].Message == 'ok')
  {
    document.location = getLocation();
  }
}

function recommendReview(key){
  var articleKey = new ArticleKey("film_" + key);
  var requestBatch = new RequestBatch();
  var reccomendAction = new RecommendAction(articleKey);
  requestBatch.AddToRequest(reccomendAction);
  requestBatch.BeginRequest(serverUrl, pluckResponder);
}

function noCommentNav(){
  document.getElementById("previous_comments").style.display = "none";
  document.getElementById("noComment").style.display = "block";
  document.getElementById("prevComment").innerHTML = "";
  document.getElementById("nextComment").innerHTML = "";
  document.getElementById("commentNav").innerHTML = "";
  document.getElementById("commentNav").style.border = "0";
  document.getElementById("commentNav").style.height = "0";
  document.getElementById("commentNav").style.display = "none";
  if(document.getElementById("prevComment")){
    document.getElementById("prevComment").style.display = "none";
  }
  if(document.getElementById("nextComment")){
    document.getElementById("nextComment").style.display = "none";
  }
  return "";
}

function showCommentNav(){
  document.getElementById("previous_comments").style.display = "block";
  document.getElementById("noComment").style.display = "none";
  if( totalPages > 1 ){
    document.getElementById("commentNav").style.display = "block";
    if(document.getElementById("prevComment")){
      document.getElementById("prevComment").style.display = "block";
    }
    if(document.getElementById("nextComment")){
      document.getElementById("nextComment").style.display = "block";
    }
    return true;
  }else{
    return false;
  }
}

/* submit Comments with Facebook connect */

function submitCommentToPluck(responseBatch){
  if(facebookON){
    var endTime = new Date();
    endTime = endTime.setMilliseconds(endTime.getMilliseconds() + 3000);

    while(endTime >= Date()){
      if (responseBatch.Messages[0].Message == 'ok'){
        submitToFacebook();
      }else {
       alert(responseBatch.Messages[0].Message);
      }
    }
    submitToFacebook();
  }else{
    submitComment(responseBatch);
  }

}

/* OLD call to submit comment--  */
function submitComment(responseBatch){
  var endTime = new Date();
  endTime = endTime.setMilliseconds(endTime.getMilliseconds() + 3000);

  while(endTime >= Date()){
    if (responseBatch.Messages[0].Message == 'ok'){
      document.location = getLocation();
    }else {
      alert(responseBatch.Messages[0].Message);
    }
  }
  document.location = getLocation();
}


function commentSubmitted(responseBatch) {
  if (responseBatch.Messages[0].Message == 'ok'){
    var article;
    for (c = 0; c < responseBatch.Responses.length; c++){
    if (responseBatch.Responses[c].Article != undefined)
      article = responseBatch.Responses[c].Article;
    }
    if(article){
      var totalComments = article.Comments.NumberOfComments;
      totalPages = parseInt((totalComments-1)/10) + 1;
      if( totalPages > 1 ){
        showCommentNav();
        commentPaginate(totalPages-currPage);
      }else{
        noCommentNav();
      }
    }
    document.location = getLocation();
  }
  else {
   alert(responseBatch.Messages[0].Message);
  }
  if (document.getElementById('submitComButton')){
    document.getElementById('submitComButton').style.display="block";
    document.getElementById('ajax_loading').style.display="none";
  }
}

function commentPaginate(pageVar){
  sQueryString = window.location.search.substring(1);
  var page = currPage + pageVar;
  tempHref = "" + document.location.href;

  if (tempHref.indexOf("?") > 0){
    tempHref = tempHref.substring(0,tempHref.indexOf("?"));
  }
  if (sQueryString != null && sQueryString.length > 0){
    if (sQueryString.indexOf("&commentPage=") >= 0){
      sQueryString = sQueryString.substring(0,sQueryString.indexOf("&commentPage="));
      location.href = tempHref + "?" + sQueryString + "&commentPage=" + page + "#previous_comments" ;
    }
    else if(sQueryString.indexOf("commentPage=") >= 0){
      location.href = tempHref + "?commentPage=" + page+ "#previous_comments" ;
    }
  }else{
     location.href = tempHref + "?commentPage=" + page+ "#previous_comments" ;
  }
}

function renderAuthorData(responseBatch){
  //Checking ServerMessages first.  Happens when something goes wrong, usually no data for ArticleKey.
  for (i = 0; i < responseBatch.Messages.length;i++){
    //Parse out ServerMessage for ArticleKey
    strMessage = responseBatch.Messages[i].Message;
    //alert(strMessage);
    intStartKey = strMessage.indexOf("ArticleKey = [");
    intEndKey = strMessage.indexOf(";") ;
    if (intStartKey > 0){
      strKey = strMessage.substring(intStartKey,intEndKey);
      var realKey = strKey.substring(strKey.indexOf("[film_")+6,strKey.indexOf("]"));
    }
  }

  //Now getting the actual responses
  for (i = 0; i < responseBatch.Responses.length;i++){
    // get user from response
    var author = responseBatch.Responses[i].User;
    var authorKey = author.UserKey.Key;
    var authorAvatar = author.AvatarPhotoUrl;
    var authorUserTier = author.UserTier;
    if (authorUserTier = "Editor"){
      authorUserTier = "Writer";
    }
    var littleStar;

    if (authorUserTier == "Writer") {
      littleStar = littleYellowStar;
    } else {
      littleStar = littleRedStar;
    }
  var authorHTML= '<div class="avatarThumbnail" onclick="document.location=\'' + baseURL + '/community/persona?tab=home&uid=' + authorKey + '\'" display="block"><div class="avatar"><img class="avatarImage" src="' + authorAvatar + '"/><span class="extra"><img height="11" width="11" class="avatarIcon" src="' + littleStar + '"/><div class="userTier">' + authorUserTier + '</div></span></div></div>';
    document.getElementById('authorPluck').innerHTML = authorHTML;
  }
}


// facebook connect
function submitToFacebook() {
  var fbChecked = document.getElementById("facebook_connect_checkbox").checked;
    if (fbChecked && slFB.connectEnabled()) {
        var title = trimPageTitle('');
        var excerpt = "";
        var userComment = document.getElementById("input_rev_txt").value;
        if (document.getElementById("input_rev_txt").value != "") { document.getElementById("input_rev_txt").value = ""; }
        var previewImages = [];
        previewImages.push("http://www.film.com/images/logos/film.com.gif");

        slFB.submitArticleComment(title, getLocation(), excerpt, userComment, previewImages, pageReload);
    } else {
       pageReload();
    }
}

function pageReload() {
  document.location = getLocation('');
}

function trimPageTitle(title) {
   var pageTitle = '';

   if (title == '') {
     pageTitle = document.title;
   }else{
     pageTitle = title;
   }

   if (pageTitle.indexOf(" Story - Film.com") > -1) {
     pageTitle = pageTitle.substring(0, pageTitle.indexOf("Story - Film.com") );
   } else if (pageTitle.indexOf(" Story - at Film.com") > -1) {
     pageTitle = pageTitle.substring(0, pageTitle.indexOf("Story - at Film.com") );
   }  else if (pageTitle.indexOf(" at Film.com") > -1) {
     pageTitle = pageTitle.substring(0, pageTitle.indexOf("at Film.com") );
   }

  return pageTitle;
}

function turnOnFaceBook(){
  if(document.getElementById('facebook_connect_wrapper')){
    document.getElementById('facebook_connect_wrapper').style.display = "block";
  }
}
