(function($){
  $(document).ready(function() {
    activate_share_menu();
    window.commentReplyTo = null;
  });

  $("li.quick-add, li.vote-video").live('click', function(){
    targetWrap = $(this).closest(".entry").find(".sharing-options");
    if($(targetWrap).find(".sharing-prompt").length == 0) {
      var message = document.createElement("div");
      message.setAttribute("class","sharing-prompt");
      $(targetWrap).append(message);
      setTimeout(function(){
        $(message).animate({opacity: 0},1000,function(){$(message).remove()});
      },3000);
    }
  })
  
  $('li.vote-video a').live('click', function() {
    var video_id = $(this).closest('.inline-playback').attr('data-video-id');
    var vote_button = $(this);
    var points_node = vote_button.find('.count');

    points_node.fadeTo('slow', 0.05);
    $.post('/video/vote', {id: video_id}, function(points) {
      points_node[0].innerHTML = points;
      points_node.fadeTo('slow', 1);
    }, 'text');
  });
  
  var showShareWindow = function(trigger, type) {
    et_track('inline_playback', 'share_' + type);
    
    var capitalize = function(s) {
      return s.charAt(0).toUpperCase() + s.slice(1);
    };
    
    var videoID =  $(trigger).closest('li.entry').find('div.inline-playback').attr('data-video-id');
    showAjaxLightbox('/account/share_popup/' + videoID + '/?type=' + type, {title: 'Share on ' + capitalize(type)});
    return false;
  };
  
  $('a.ico-facebook').live('click', function() {
    return showShareWindow(this, 'facebook');
  });
  
  $('a.ico-twitter').live('click', function() {
    return showShareWindow(this, 'twitter');
  });
  
  $('a.ico-tumblr').live('click', function() {
    return showShareWindow(this, 'tumblr');
  });
  
  $('a.ico-blogger').live('click', function() {
    return showShareWindow(this, 'blogger');
  });
  
  $('a.ico-wordpress').live('click', function() {
    return showShareWindow(this, 'wordpress');
  });
  
  window.showVideo = function(trigger) {
    // Is a video already open?  If so, close it
    var currentVideo = $(trigger).closest('ul').find('.active');
    if (currentVideo) {
      closeVideo(currentVideo);
    }
    if (!$(trigger).data('fetched-comments')) {
      $(trigger).data('fetched-comments', true);
      fetchComments(trigger);
    }
	  
    $("#mod-feed .active").removeClass("active");
    $("#mod-feed .inline-playback-expanded").hide().removeClass("feed-item-video-expanded");
    $("#mod-feed .feed-item-info-collapsed").show().removeClass("feed-item-info-collapsed");
    var parentEntry = $(trigger).closest(".entry");
    parentEntry.find(".inline-playback").slideDown().addClass("feed-item-video-expanded");
    parentEntry.find(".inline-playback-item").hide().addClass("feed-item-info-collapsed");
    parentEntry.addClass("active");
    setCommentSize(trigger);
    resetCounter(parentEntry);
    if ( !(parentEntry.find('.inline-playback .truncate-1-row').hasClass("truncated") ) ) {
      parentEntry.find('.inline-playback .truncate-1-row').ThreeDots({max_rows: 1, ellipsis_string: '...'}).addClass("truncated");
    }
    fetchEmbed(trigger);
    
    var data_et = $(trigger).attr('data-et') || 'feed_click';
    et_track(data_et);
  };

  window.closeVideo = function(trigger) {
    var parentEntry = $(trigger).closest(".entry");
    parentEntry.find(".inline-playback textarea").val("");
    resetCounter(parentEntry);
    parentEntry.find(".inline-playback").slideUp().removeClass("feed-item-video-expanded");
    parentEntry.find(".inline-playback-item").show().removeClass("feed-item-info-collapsed");
    parentEntry.removeClass("active");
    removeEmbed(trigger);
  };
	      
  var setCommentSize = function(trigger){
    try {
      var parentEntry = $(trigger).closest(".entry");
    	var commentColHeight = parentEntry.find(".comments").height();
    	var commentReplies = parentEntry.find(".comment-replies");
    	var commentRepliesPos = commentReplies.position();
    	var finalHeight = commentColHeight - commentRepliesPos.top + 7;
      if ( finalHeight > 50 ) {
    	  commentReplies.height(finalHeight).css("visibility","visible");				
    	} else {
    	  commentReplies.css("visibility","hidden");	
    	}
    } catch(e) { }
  };

  var resetCounter = function(entry) {
    $('textarea', entry).NobleCount('#mod-feed .char-counter', {
		  max_chars: 160,
			block_negative: true
		});
  };
	
  var collectVideo = function(video, collection) {
    var button = $('#collect-button');
    var editButton = $('<button class="button-tiny button-green">Edit</button>');
    
    editButton.click(function() {
		  window.location = '/account/videos?video_id=' + video;
	  });
    
    button
      .removeClass('collect-dropdown').removeClass('btn-tiny-dropdown')
      .html('<a class="btn-tiny btn-orange">Adding...</a>');
    
    $.post('/account/quick_collect', {
      video_id: video,
      collection_id: collection
    }, function(data) {
      button.find('a').text('Done!');
      button.append(editButton);
    }, 'json');
  };
	      
  window.addComment = function(trigger) {
    var parentEntry = $(trigger).closest('li.entry');
    var videoID = parentEntry.find('div.inline-playback').attr('data-video-id');
    var groupID = parentEntry.find('div.inline-playback').attr('data-group-id');
    var message = parentEntry.find('textarea').val();
    var commentParent = parentEntry.find('ul.comment-replies');
    
    data = {id: videoID, group_id: groupID, message: message}
    
    if (window.commentReplyTo)
      data.response_to = window.commentReplyTo;
    
    $.post('/video/comment', data);
    
    var comment = createComment({
	    user: user,
	    link: '/account',
	    comment: message,
	    date: 'just now'
	  });
    
    comment.css('display', 'none');
    commentParent.prepend(comment);
    comment.fadeIn('slow');
    parentEntry.find('textarea').val('');
    resetCounter(parentEntry);
  };
	      
  var createComment = function(c) {
    var user = c.user
	  
    if (c.link) {
      user = $('<a class="username"></a>')
        .attr('href', c.link)
        .text(c.user)
    }
	  
    return $('<li></li>')
      .append(user)
      .append(' ' + c.comment)
      .append('<br>')
      .append($('<span class="de-emph"></span>').text(c.date))
  };
	
	var fetchComments = function(trigger) {
	  var parentEntry = $(trigger).closest('li.entry');
	  var commentParent = parentEntry.find('ul.comment-replies');
	  var groupvideoID = parentEntry.find('div.inline-playback').attr('data-groupvideo-id');
	  var videoID = parentEntry.find('div.inline-playback').attr('data-video-id');
	  var auditID = parentEntry.find('div.inline-playback').attr('data-audit-id');
	  var data = {}
	  
	  if (auditID != "")
	    data.audit_id = auditID;
	  else if (groupvideoID != "")
	    data.groupvideo_id = groupvideoID;
	  else
	    data.video_id = videoID;
	    		  
	  $.getJSON('/video/feed_comments', data, function(data) {
	    window.commentReplyTo = data.reply_to;   
	    $.each(data.comments, function() {
	      commentParent.append(createComment(this));
	    });
	  });
	};
	
	var fetchEmbed = function(trigger) {
	  var parentEntry = $(trigger).closest('li.entry').find('div.inline-playback');
	  var videoID = parentEntry.attr('data-video-id');
	  var groupvideoID = parentEntry.attr('data-groupvideo-id');
	  var data = {}
	  
	  if (groupvideoID == "")
	    data.video_id = videoID
	  else
	    data.groupvideo_id = groupvideoID
	  
	  parentEntry.find('div.video-wrapper').load('/video/inline_video_object', data, fitEmbed);
	};
	
	var removeEmbed = function(trigger) {
	  var parentEntry = $(trigger).closest('li.entry').find('div.video-wrapper').html('');
	};
	
	var fitEmbed = function() {		  
	  showFullsizeViewer = function(embed) {
	    var width = parseInt(embed.attr('data-pref-width'));
	    
      embed.closest('.inline-playback').addClass('feed-item-video-wide');
      embed.closest('#embed_holder').css({
        height: embed.attr('data-pref-height') + 'px',
        width: embed.attr('data-pref-width') + 'px',
        marginLeft: ((660 - width) / 2) + 'px'
      });
		};
	  
	  $('embed[data-pref-height], iframe[data-pref-height]').each(function() {
	    showFullsizeViewer($(this));
	  });
	};
})(jQuery);