thd/web/js/segmentation/tagtool.js
changeset 35 94a1dc255022
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thd/web/js/segmentation/tagtool.js	Tue Sep 22 16:40:38 2009 +0200
@@ -0,0 +1,83 @@
+var tagTool = {
+    
+    // Segments: {in (ms), out (ms), tag, user}
+    segments: Array(),
+    currentTags: Array(),
+
+    tagContainer: "",
+    player: false,
+    showTagInPage: true,
+    showTagInPlayer: true,
+    stopOnSegment: false,
+
+    playSegment: function(seg, pause) {
+
+        if (pause == "on")
+            this.stopOnSegment = this.segments[seg].sout;
+
+        this.player.seek(this.segments[seg].sin / 1000);
+    },
+
+    displayTags: function() {
+                
+        if (this.showTagInPage) {
+            taglist=$('<ul></ul>');
+            for (tag in this.currentTags)
+                $('<li>' + this.currentTags[tag] + '</li>').appendTo(taglist);
+            $(this.tagContainer).html(taglist);
+        }
+
+        if (this.showTagInPlayer) {
+            if (this.currentTags.length == 0)
+                this.player.getPlugin('content').fadeOut();
+            else {
+                line = '<p>' + this.currentTags.join('<br>') + '</p>';
+                this.player.getPlugin('content').animate({height: 15*(this.currentTags.length + 1) + 'px'});
+                this.player.getPlugin('content').setHtml(line).fadeIn();
+            }
+        }
+    },
+
+    addTag: function(tag) {
+        this.currentTags.push(tag);
+        this.displayTags();
+    },
+
+    removeTag: function(tag) {
+        this.currentTags.splice(this.currentTags.indexOf(tag), 1);
+        this.displayTags();
+    },
+
+    rebuildCurrentTags: function(position) {
+        this.currentTags = new Array();
+        for (seg in this.segments) {
+            if (this.segments[seg].sin < position && this.segments[seg].sout > position) {
+                this.currentTags.push(this.segments[seg].tag);
+            }
+        }
+        this.displayTags();
+    },
+
+    setupHandlers: function(player) {
+
+        cuepoints = new Array();
+        for (seg in this.segments) {
+            cuepoint = {time: this.segments[seg].sin, tag: this.segments[seg].tag};
+            cuepoints.push(cuepoint);
+            cuepoint = {time: this.segments[seg].sout, tag: this.segments[seg].tag, out: 'true'};
+            cuepoints.push(cuepoint);
+        }
+        player.onCuepoint(cuepoints, function(clip, cuepoint) {
+            if (cuepoint.out) {
+                tagTool.removeTag(cuepoint.tag);
+                if (tagTool.stopOnSegment == cuepoint.time) {
+                    this.pause();
+                    tagTool.stopOnSegment = false;
+                }
+            } else {
+                tagTool.addTag(cuepoint.tag);
+            }
+        });
+
+    }
+}
\ No newline at end of file