2
* @fileoverview Contains the definition of a class for generating and displaying movies.
3
* @author <a href="mailto:vincent.k.hughitt@nasa.gov">Keith Hughitt</a>
6
/*global MoviesBuilder, Class, UIElement, Event, document, window, Shadowbox, getOS, Ajax */
7
//TODO: pass in bit-rate depending upon codec chosen! Xvid?
9
var MovieBuilder = Class.create(UIElement,
10
/** @lends MovieBuilder.prototype */
13
* @description Default MovieBuilder options
17
url : "api/index.php",
18
minZoomLevel: 13, //can relax for single layer movies...
23
format : {win: "asf", mac: "mov", linux: "mp4"}
28
* @description Creates a new MovieBuilder
29
* @param {Object} options Custom MovieBuilder options
31
initialize: function (options) {
32
Object.extend(this, this.defaultOptions);
33
Object.extend(this, options);
37
//Quick Movie Event Handler
38
Event.observe(this.id, 'click', function () {
40
var hv = self.controller,
41
hqFormat, displayRange, xhr;
45
// Chose an optimal codec based on User's OS
46
hqFormat = self.format[getOS()];
48
// Get range of tiles to use
49
displayRange = hv.viewport.displayRange();
52
xhr = new Ajax.Request(self.url, {
55
action: "buildQuickMovie",
56
layers: "SOHEITEIT304,SOHLAS0C20WL",
57
startDate: hv.date.getTime() / 1000,
58
zoomLevel: hv.viewport.zoomLevel, //Math.max(hv.viewport.zoomLevel, self.minZoomLevel),
59
numFrames: self.numFrames,
60
frameRate: self.frameRate,
61
edges: self.edgeEnhance,
62
sharpen: self.sharpen,
64
xRange: displayRange.xStart + ", " + displayRange.xEnd,
65
yRange: displayRange.yStart + ", " + displayRange.yEnd
67
onComplete: function (transport) {
68
// Let user know that video is read
69
var linkId = self.controller.messageConsole.link('', 'Quick-Video ready! Click here to start watching.');
73
Event.observe(linkId, 'click', function () {
76
title: 'Helioviewer Movie Player',
79
content: self.url + '?action=playMovie&format=' + hqFormat + '&url=' + transport.responseJSON