src/cm/media/js/client/c_sync.js
changeset 329 00df963f91fb
parent 106 36165e7cd1f0
child 337 614669e0e313
--- a/src/cm/media/js/client/c_sync.js	Tue Nov 02 16:31:20 2010 +0100
+++ b/src/cm/media/js/client/c_sync.js	Mon Nov 08 12:41:44 2010 +0100
@@ -387,6 +387,20 @@
 				this._animateTo(topY) ;
 		}
 	},
+	_showFocusSingleComment : function(topComment, focusComment) {
+		if (topComment != null) {
+			var topY = 0 ;
+			if (topComment['start_wrapper'] != -1) 
+				topY = CY.get(".c-id-"+topComment.id).getY() ;
+			else 
+				topY = CY.get('document').get('scrollTop') ;
+			
+			this._showComments([topComment.id], topY, false) ;
+			// optim when browsing comments with no reply			
+			if (topComment.replies.length > 0)
+				this._animateToAndFocus(topY, focusComment.id) ;
+		}
+	},
 
 	showSingleComment : function(comment) {
 		this._q.add({fn:CY.bind(this.setPreventClickOn, this)}) ;
@@ -395,6 +409,13 @@
 		this._q.run();
 	},
 	
+	showFocusSingleComment : function(topComment, focusComment) {
+		this._q.add({fn:CY.bind(this.setPreventClickOn, this)}) ;
+		this._showFocusSingleComment(topComment, focusComment) ;
+		this._q.add({fn:CY.bind(this.setPreventClickOff, this)}) ;
+		this._q.run();
+	},
+	
 	browse : function(order, whereto) { 
 		var comment = gIComments.browse(order, whereto) ;
 		if (comment != null) 
@@ -436,6 +457,14 @@
 	            ) ;
 	},
 	
+	_animateToAndFocus : function(topY, focusCommentId) {
+		this._q.add({fn:function() {
+						gIComments.setAnimationToPositionsAndFocus(topY, focusCommentId) ;
+						}},
+					{id:"animationRun", autoContinue:false, fn:CY.bind(gIComments.runAnimations, gIComments)}
+	            ) ;
+	},
+	
 	_animateToTop : function() {
 		var topPos = gIComments.getTopPosition() ;
 		if (topPos != null)