Edit C:\galaxie\Back\galaxie\js\timeline\api\timeline-bundle.js
/* band.js */ Timeline._Band = function(B, G, C) { if (B.autoWidth && typeof G.width == "string") { G.width = G.width.indexOf("%") > -1 ? 0 : parseInt(G.width); } this._timeline = B; this._bandInfo = G; this._index = C; this._locale = ("locale" in G) ? G.locale : Timeline.getDefaultLocale(); this._timeZone = ("timeZone" in G) ? G.timeZone : 0; this._labeller = ("labeller" in G) ? G.labeller : (("createLabeller" in B .getUnit()) ? B.getUnit().createLabeller(this._locale, this._timeZone) : new Timeline.GregorianDateLabeller(this._locale, this._timeZone)); this._theme = G.theme; this._zoomIndex = ("zoomIndex" in G) ? G.zoomIndex : 0; this._zoomSteps = ("zoomSteps" in G) ? G.zoomSteps : null; this._dragging = false; this._changing = false; this._originalScrollSpeed = 5; this._scrollSpeed = this._originalScrollSpeed; this._onScrollListeners = []; var A = this; this._syncWithBand = null; this._syncWithBandHandler = function(H) { A._onHighlightBandScroll(); }; this._selectorListener = function(H) { A._onHighlightBandScroll(); }; var E = this._timeline.getDocument().createElement("div"); E.className = "timeline-band-input"; this._timeline.addDiv(E); this._keyboardInput = document.createElement("input"); this._keyboardInput.type = "text"; E.appendChild(this._keyboardInput); SimileAjax.DOM.registerEventWithObject(this._keyboardInput, "keydown", this, "_onKeyDown"); SimileAjax.DOM.registerEventWithObject(this._keyboardInput, "keyup", this, "_onKeyUp"); this._div = this._timeline.getDocument().createElement("div"); this._div.id = "timeline-band-" + C; this._div.className = "timeline-band timeline-band-" + C; this._timeline.addDiv(this._div); SimileAjax.DOM.registerEventWithObject(this._div, "mousedown", this, "_onMouseDown"); SimileAjax.DOM.registerEventWithObject(this._div, "mousemove", this, "_onMouseMove"); SimileAjax.DOM.registerEventWithObject(this._div, "mouseup", this, "_onMouseUp"); SimileAjax.DOM.registerEventWithObject(this._div, "mouseout", this, "_onMouseOut"); SimileAjax.DOM.registerEventWithObject(this._div, "dblclick", this, "_onDblClick"); var F = this._theme != null ? this._theme.mouseWheel : "scroll"; if (F === "zoom" || F === "scroll" || this._zoomSteps) { if (SimileAjax.Platform.browser.isFirefox) { SimileAjax.DOM.registerEventWithObject(this._div, "DOMMouseScroll", this, "_onMouseScroll"); } else { SimileAjax.DOM.registerEventWithObject(this._div, "mousewheel", this, "_onMouseScroll"); } } this._innerDiv = this._timeline.getDocument().createElement("div"); this._innerDiv.className = "timeline-band-inner"; this._div.appendChild(this._innerDiv); this._ether = G.ether; G.ether.initialize(this, B); this._etherPainter = G.etherPainter; G.etherPainter.initialize(this, B); this._eventSource = G.eventSource; if (this._eventSource) { this._eventListener = { onAddMany : function() { A._onAddMany(); }, onClear : function() { A._onClear(); } }; this._eventSource.addListener(this._eventListener); } this._eventPainter = G.eventPainter; this._eventTracksNeeded = 0; this._eventTrackIncrement = 0; G.eventPainter.initialize(this, B); this._decorators = ("decorators" in G) ? G.decorators : []; for ( var D = 0; D < this._decorators.length; D++) { this._decorators[D].initialize(this, B); } }; Timeline._Band.SCROLL_MULTIPLES = 5; Timeline._Band.prototype.dispose = function() { this.closeBubble(); if (this._eventSource) { this._eventSource.removeListener(this._eventListener); this._eventListener = null; this._eventSource = null; } this._timeline = null; this._bandInfo = null; this._labeller = null; this._ether = null; this._etherPainter = null; this._eventPainter = null; this._decorators = null; this._onScrollListeners = null; this._syncWithBandHandler = null; this._selectorListener = null; this._div = null; this._innerDiv = null; this._keyboardInput = null; }; Timeline._Band.prototype.addOnScrollListener = function(A) { this._onScrollListeners.push(A); }; Timeline._Band.prototype.removeOnScrollListener = function(B) { for ( var A = 0; A < this._onScrollListeners.length; A++) { if (this._onScrollListeners[A] == B) { this._onScrollListeners.splice(A, 1); break; } } }; Timeline._Band.prototype.setSyncWithBand = function(B, A) { if (this._syncWithBand) { this._syncWithBand.removeOnScrollListener(this._syncWithBandHandler); } this._syncWithBand = B; this._syncWithBand.addOnScrollListener(this._syncWithBandHandler); this._highlight = A; this._positionHighlight(); }; Timeline._Band.prototype.getLocale = function() { return this._locale; }; Timeline._Band.prototype.getTimeZone = function() { return this._timeZone; }; Timeline._Band.prototype.getLabeller = function() { return this._labeller; }; Timeline._Band.prototype.getIndex = function() { return this._index; }; Timeline._Band.prototype.getEther = function() { return this._ether; }; Timeline._Band.prototype.getEtherPainter = function() { return this._etherPainter; }; Timeline._Band.prototype.getEventSource = function() { return this._eventSource; }; Timeline._Band.prototype.getEventPainter = function() { return this._eventPainter; }; Timeline._Band.prototype.getTimeline = function() { return this._timeline; }; Timeline._Band.prototype.updateEventTrackInfo = function(A, B) { this._eventTrackIncrement = B; if (A > this._eventTracksNeeded) { this._eventTracksNeeded = A; } }; Timeline._Band.prototype.checkAutoWidth = function() { if (!this._timeline.autoWidth) { return; } var C = this._eventPainter.getType() == "overview"; var A = C ? this._theme.event.overviewTrack.autoWidthMargin : this._theme.event.track.autoWidthMargin; var B = Math .ceil((this._eventTracksNeeded + A) * this._eventTrackIncrement); B += C ? this._theme.event.overviewTrack.offset : this._theme.event.track.offset; var D = this._bandInfo; if (B != D.width) { D.width = B; } }; Timeline._Band.prototype.layout = function() { this.paint(); }; Timeline._Band.prototype.paint = function() { this._etherPainter.paint(); this._paintDecorators(); this._paintEvents(); }; Timeline._Band.prototype.softLayout = function() { this.softPaint(); }; Timeline._Band.prototype.softPaint = function() { this._etherPainter.softPaint(); this._softPaintDecorators(); this._softPaintEvents(); }; Timeline._Band.prototype.setBandShiftAndWidth = function(A, D) { var C = this._keyboardInput.parentNode; var B = A + Math.floor(D / 2); if (this._timeline.isHorizontal()) { this._div.style.top = A + "px"; this._div.style.height = D + "px"; C.style.top = B + "px"; C.style.left = "-1em"; } else { this._div.style.left = A + "px"; this._div.style.width = D + "px"; C.style.left = B + "px"; C.style.top = "-1em"; } }; Timeline._Band.prototype.getViewWidth = function() { if (this._timeline.isHorizontal()) { return this._div.offsetHeight; } else { return this._div.offsetWidth; } }; Timeline._Band.prototype.setViewLength = function(A) { this._viewLength = A; this._recenterDiv(); this._onChanging(); }; Timeline._Band.prototype.getViewLength = function() { return this._viewLength; }; Timeline._Band.prototype.getTotalViewLength = function() { return Timeline._Band.SCROLL_MULTIPLES * this._viewLength; }; Timeline._Band.prototype.getViewOffset = function() { return this._viewOffset; }; Timeline._Band.prototype.getMinDate = function() { return this._ether.pixelOffsetToDate(this._viewOffset); }; Timeline._Band.prototype.getMaxDate = function() { return this._ether.pixelOffsetToDate(this._viewOffset + Timeline._Band.SCROLL_MULTIPLES * this._viewLength); }; Timeline._Band.prototype.getMinVisibleDate = function() { return this._ether.pixelOffsetToDate(0); }; Timeline._Band.prototype.getMinVisibleDateAfterDelta = function(A) { return this._ether.pixelOffsetToDate(A); }; Timeline._Band.prototype.getMaxVisibleDate = function() { return this._ether.pixelOffsetToDate(this._viewLength); }; Timeline._Band.prototype.getMaxVisibleDateAfterDelta = function(A) { return this._ether.pixelOffsetToDate(this._viewLength + A); }; Timeline._Band.prototype.getCenterVisibleDate = function() { return this._ether.pixelOffsetToDate(this._viewLength / 2); }; Timeline._Band.prototype.setMinVisibleDate = function(A) { if (!this._changing) { this._moveEther(Math.round(-this._ether.dateToPixelOffset(A))); } }; Timeline._Band.prototype.setMaxVisibleDate = function(A) { if (!this._changing) { this._moveEther(Math.round(this._viewLength - this._ether.dateToPixelOffset(A))); } }; Timeline._Band.prototype.setCenterVisibleDate = function(A) { if (!this._changing) { this._moveEther(Math.round(this._viewLength / 2 - this._ether.dateToPixelOffset(A))); } }; Timeline._Band.prototype.dateToPixelOffset = function(A) { return this._ether.dateToPixelOffset(A) - this._viewOffset; }; Timeline._Band.prototype.pixelOffsetToDate = function(A) { return this._ether.pixelOffsetToDate(A + this._viewOffset); }; Timeline._Band.prototype.createLayerDiv = function(C, A) { var D = this._timeline.getDocument().createElement("div"); D.className = "timeline-band-layer" + (typeof A == "string" ? (" " + A) : ""); D.style.zIndex = C; this._innerDiv.appendChild(D); var B = this._timeline.getDocument().createElement("div"); B.className = "timeline-band-layer-inner"; if (SimileAjax.Platform.browser.isIE) { B.style.cursor = "move"; } else { B.style.cursor = "-moz-grab"; } D.appendChild(B); return B; }; Timeline._Band.prototype.removeLayerDiv = function(A) { this._innerDiv.removeChild(A.parentNode); }; Timeline._Band.prototype.scrollToCenter = function(A, C) { var B = this._ether.dateToPixelOffset(A); if (B < -this._viewLength / 2) { this.setCenterVisibleDate(this.pixelOffsetToDate(B + this._viewLength)); } else { if (B > 3 * this._viewLength / 2) { this.setCenterVisibleDate(this.pixelOffsetToDate(B - this._viewLength)); } } this._autoScroll(Math.round(this._viewLength / 2 - this._ether.dateToPixelOffset(A)), C); }; Timeline._Band.prototype.showBubbleForEvent = function(C) { var A = this.getEventSource().getEvent(C); if (A) { var B = this; this.scrollToCenter(A.getStart(), function() { B._eventPainter.showBubble(A); }); } }; Timeline._Band.prototype.zoom = function(C, A, F, E) { if (!this._zoomSteps) { return; } A += this._viewOffset; var D = this._ether.pixelOffsetToDate(A); var B = this._ether.zoom(C); this._etherPainter.zoom(B); this._moveEther(Math.round(-this._ether.dateToPixelOffset(D))); this._moveEther(A); }; Timeline._Band.prototype._onMouseDown = function(B, A, C) { this.closeBubble(); this._dragging = true; this._dragX = A.clientX; this._dragY = A.clientY; }; Timeline._Band.prototype._onMouseMove = function(D, A, E) { if (this._dragging) { var C = A.clientX - this._dragX; var B = A.clientY - this._dragY; this._dragX = A.clientX; this._dragY = A.clientY; this._moveEther(this._timeline.isHorizontal() ? C : B); this._positionHighlight(); } }; Timeline._Band.prototype._onMouseUp = function(B, A, C) { this._dragging = false; this._keyboardInput.focus(); }; Timeline._Band.prototype._onMouseOut = function(C, B, D) { var A = SimileAjax.DOM.getEventRelativeCoordinates(B, C); A.x += this._viewOffset; if (A.x < 0 || A.x > C.offsetWidth || A.y < 0 || A.y > C.offsetHeight) { this._dragging = false; } }; Timeline._Band.prototype._onMouseScroll = function(G, H, B) { var A = new Date(); A = A.getTime(); if (!this._lastScrollTime || ((A - this._lastScrollTime) > 50)) { this._lastScrollTime = A; var I = 0; if (H.wheelDelta) { I = H.wheelDelta / 120; } else { if (H.detail) { I = -H.detail / 3; } } var F = this._theme.mouseWheel; if (this._zoomSteps || F === "zoom") { var E = SimileAjax.DOM.getEventRelativeCoordinates(H, G); if (I != 0) { var D; if (I > 0) { D = true; } if (I < 0) { D = false; } this._timeline.zoom(D, E.x, E.y, G); } } else { if (F === "scroll") { var C = 50 * (I < 0 ? -1 : 1); this._moveEther(C); } } } if (H.stopPropagation) { H.stopPropagation(); } H.cancelBubble = true; if (H.preventDefault) { H.preventDefault(); } H.returnValue = false; }; Timeline._Band.prototype._onDblClick = function(C, B, E) { var A = SimileAjax.DOM.getEventRelativeCoordinates(B, C); var D = A.x - (this._viewLength / 2 - this._viewOffset); this._autoScroll(-D); }; Timeline._Band.prototype._onKeyDown = function(B, A, C) { if (!this._dragging) { switch (A.keyCode) { case 27: break; case 37: case 38: this._scrollSpeed = Math .min(50, Math.abs(this._scrollSpeed * 1.05)); this._moveEther(this._scrollSpeed); break; case 39: case 40: this._scrollSpeed = -Math.min(50, Math .abs(this._scrollSpeed * 1.05)); this._moveEther(this._scrollSpeed); break; default: return true; } this.closeBubble(); SimileAjax.DOM.cancelEvent(A); return false; } return true; }; Timeline._Band.prototype._onKeyUp = function(B, A, C) { if (!this._dragging) { this._scrollSpeed = this._originalScrollSpeed; switch (A.keyCode) { case 35: this.setCenterVisibleDate(this._eventSource.getLatestDate()); break; case 36: this.setCenterVisibleDate(this._eventSource.getEarliestDate()); break; case 33: this._autoScroll(this._timeline.getPixelLength()); break; case 34: this._autoScroll(-this._timeline.getPixelLength()); break; default: return true; } this.closeBubble(); SimileAjax.DOM.cancelEvent(A); return false; } return true; }; Timeline._Band.prototype._autoScroll = function(D, C) { var A = this; var B = SimileAjax.Graphics.createAnimation(function(E, F) { A._moveEther(F); }, 0, D, 1000, C); B.run(); }; Timeline._Band.prototype._moveEther = function(A) { this.closeBubble(); if (!this._timeline.shiftOK(this._index, A)) { return; } this._viewOffset += A; this._ether.shiftPixels(-A); if (this._timeline.isHorizontal()) { this._div.style.left = this._viewOffset + "px"; } else { this._div.style.top = this._viewOffset + "px"; } if (this._viewOffset > -this._viewLength * 0.5 || this._viewOffset < -this._viewLength * (Timeline._Band.SCROLL_MULTIPLES - 1.5)) { this._recenterDiv(); } else { this.softLayout(); } this._onChanging(); }; Timeline._Band.prototype._onChanging = function() { this._changing = true; this._fireOnScroll(); this._setSyncWithBandDate(); this._changing = false; }; Timeline._Band.prototype.busy = function() { return (this._changing); }; Timeline._Band.prototype._fireOnScroll = function() { for ( var A = 0; A < this._onScrollListeners.length; A++) { this._onScrollListeners[A](this); } }; Timeline._Band.prototype._setSyncWithBandDate = function() { if (this._syncWithBand) { var A = this._ether.pixelOffsetToDate(this.getViewLength() / 2); this._syncWithBand.setCenterVisibleDate(A); } }; Timeline._Band.prototype._onHighlightBandScroll = function() { if (this._syncWithBand) { var A = this._syncWithBand.getCenterVisibleDate(); var B = this._ether.dateToPixelOffset(A); this._moveEther(Math.round(this._viewLength / 2 - B)); if (this._highlight) { this._etherPainter.setHighlight(this._syncWithBand .getMinVisibleDate(), this._syncWithBand .getMaxVisibleDate()); } } }; Timeline._Band.prototype._onAddMany = function() { this._paintEvents(); }; Timeline._Band.prototype._onClear = function() { this._paintEvents(); }; Timeline._Band.prototype._positionHighlight = function() { if (this._syncWithBand) { var A = this._syncWithBand.getMinVisibleDate(); var B = this._syncWithBand.getMaxVisibleDate(); if (this._highlight) { this._etherPainter.setHighlight(A, B); } } }; Timeline._Band.prototype._recenterDiv = function() { this._viewOffset = -this._viewLength * (Timeline._Band.SCROLL_MULTIPLES - 1) / 2; if (this._timeline.isHorizontal()) { this._div.style.left = this._viewOffset + "px"; this._div.style.width = (Timeline._Band.SCROLL_MULTIPLES * this._viewLength) + "px"; } else { this._div.style.top = this._viewOffset + "px"; this._div.style.height = (Timeline._Band.SCROLL_MULTIPLES * this._viewLength) + "px"; } this.layout(); }; Timeline._Band.prototype._paintEvents = function() { this._eventPainter.paint(); }; Timeline._Band.prototype._softPaintEvents = function() { this._eventPainter.softPaint(); }; Timeline._Band.prototype._paintDecorators = function() { for ( var A = 0; A < this._decorators.length; A++) { this._decorators[A].paint(); } }; Timeline._Band.prototype._softPaintDecorators = function() { for ( var A = 0; A < this._decorators.length; A++) { this._decorators[A].softPaint(); } }; Timeline._Band.prototype.closeBubble = function() { SimileAjax.WindowManager.cancelPopups(); }; /* compact-painter.js */ Timeline.CompactEventPainter = function(A) { this._params = A; this._onSelectListeners = []; this._filterMatcher = null; this._highlightMatcher = null; this._frc = null; this._eventIdToElmt = {}; }; Timeline.CompactEventPainter.prototype.initialize = function(B, A) { this._band = B; this._timeline = A; this._backLayer = null; this._eventLayer = null; this._lineLayer = null; this._highlightLayer = null; this._eventIdToElmt = null; }; Timeline.CompactEventPainter.prototype.addOnSelectListener = function(A) { this._onSelectListeners.push(A); }; Timeline.CompactEventPainter.prototype.removeOnSelectListener = function(B) { for ( var A = 0; A < this._onSelectListeners.length; A++) { if (this._onSelectListeners[A] == B) { this._onSelectListeners.splice(A, 1); break; } } }; Timeline.CompactEventPainter.prototype.getFilterMatcher = function() { return this._filterMatcher; }; Timeline.CompactEventPainter.prototype.setFilterMatcher = function(A) { this._filterMatcher = A; }; Timeline.CompactEventPainter.prototype.getHighlightMatcher = function() { return this._highlightMatcher; }; Timeline.CompactEventPainter.prototype.setHighlightMatcher = function(A) { this._highlightMatcher = A; }; Timeline.CompactEventPainter.prototype.paint = function() { var N = this._band.getEventSource(); if (N == null) { return; } this._eventIdToElmt = {}; this._prepareForPainting(); var O = this._params.theme; var L = O.event; var G = { trackOffset : "trackOffset" in this._params ? this._params.trackOffset : 10, trackHeight : "trackHeight" in this._params ? this._params.trackHeight : 10, tapeHeight : O.event.tape.height, tapeBottomMargin : "tapeBottomMargin" in this._params ? this._params.tapeBottomMargin : 2, labelBottomMargin : "labelBottomMargin" in this._params ? this._params.labelBottomMargin : 5, labelRightMargin : "labelRightMargin" in this._params ? this._params.labelRightMargin : 5, defaultIcon : L.instant.icon, defaultIconWidth : L.instant.iconWidth, defaultIconHeight : L.instant.iconHeight, customIconWidth : "iconWidth" in this._params ? this._params.iconWidth : L.instant.iconWidth, customIconHeight : "iconHeight" in this._params ? this._params.iconHeight : L.instant.iconHeight, iconLabelGap : "iconLabelGap" in this._params ? this._params.iconLabelGap : 2, iconBottomMargin : "iconBottomMargin" in this._params ? this._params.iconBottomMargin : 2 }; if ("compositeIcon" in this._params) { G.compositeIcon = this._params.compositeIcon; G.compositeIconWidth = this._params.compositeIconWidth || G.customIconWidth; G.compositeIconHeight = this._params.compositeIconHeight || G.customIconHeight; } else { G.compositeIcon = G.defaultIcon; G.compositeIconWidth = G.defaultIconWidth; G.compositeIconHeight = G.defaultIconHeight; } G.defaultStackIcon = "icon" in this._params.stackConcurrentPreciseInstantEvents ? this._params.stackConcurrentPreciseInstantEvents.icon : G.defaultIcon; G.defaultStackIconWidth = "iconWidth" in this._params.stackConcurrentPreciseInstantEvents ? this._params.stackConcurrentPreciseInstantEvents.iconWidth : G.defaultIconWidth; G.defaultStackIconHeight = "iconHeight" in this._params.stackConcurrentPreciseInstantEvents ? this._params.stackConcurrentPreciseInstantEvents.iconHeight : G.defaultIconHeight; var B = this._band.getMinDate(); var D = this._band.getMaxDate(); var R = (this._filterMatcher != null) ? this._filterMatcher : function(S) { return true; }; var Q = (this._highlightMatcher != null) ? this._highlightMatcher : function(S) { return -1; }; var F = N.getEventIterator(B, D); var H = "stackConcurrentPreciseInstantEvents" in this._params && typeof this._params.stackConcurrentPreciseInstantEvents == "object"; var P = "collapseConcurrentPreciseInstantEvents" in this._params && this._params.collapseConcurrentPreciseInstantEvents; if (P || H) { var M = []; var A = null; while (F.hasNext()) { var E = F.next(); if (R(E)) { if (!E.isInstant() || E.isImprecise()) { this.paintEvent(E, G, this._params.theme, Q(E)); } else { if (A != null && A.getStart().getTime() == E.getStart().getTime()) { M[M.length - 1].push(E); } else { M.push([ E ]); A = E; } } } } for ( var J = 0; J < M.length; J++) { var K = M[J]; if (K.length == 1) { this.paintEvent(K[0], G, this._params.theme, Q(E)); } else { var C = -1; for ( var I = 0; C < 0 && I < K.length; I++) { C = Q(K[I]); } if (H) { this.paintStackedPreciseInstantEvents(K, G, this._params.theme, C); } else { this.paintCompositePreciseInstantEvents(K, G, this._params.theme, C); } } } } else { while (F.hasNext()) { var E = F.next(); if (R(E)) { this.paintEvent(E, G, this._params.theme, Q(E)); } } } this._highlightLayer.style.display = "block"; this._lineLayer.style.display = "block"; this._eventLayer.style.display = "block"; }; Timeline.CompactEventPainter.prototype.softPaint = function() { }; Timeline.CompactEventPainter.prototype._prepareForPainting = function() { var B = this._band; if (this._backLayer == null) { this._backLayer = this._band.createLayerDiv(0, "timeline-band-events"); this._backLayer.style.visibility = "hidden"; var A = document.createElement("span"); A.className = "timeline-event-label"; this._backLayer.appendChild(A); this._frc = SimileAjax.Graphics.getFontRenderingContext(A); } this._frc.update(); this._tracks = []; if (this._highlightLayer != null) { B.removeLayerDiv(this._highlightLayer); } this._highlightLayer = B.createLayerDiv(105, "timeline-band-highlights"); this._highlightLayer.style.display = "none"; if (this._lineLayer != null) { B.removeLayerDiv(this._lineLayer); } this._lineLayer = B.createLayerDiv(110, "timeline-band-lines"); this._lineLayer.style.display = "none"; if (this._eventLayer != null) { B.removeLayerDiv(this._eventLayer); } this._eventLayer = B.createLayerDiv(115, "timeline-band-events"); this._eventLayer.style.display = "none"; }; Timeline.CompactEventPainter.prototype.paintEvent = function(B, C, D, A) { if (B.isInstant()) { this.paintInstantEvent(B, C, D, A); } else { this.paintDurationEvent(B, C, D, A); } }; Timeline.CompactEventPainter.prototype.paintInstantEvent = function(B, C, D, A) { if (B.isImprecise()) { this.paintImpreciseInstantEvent(B, C, D, A); } else { this.paintPreciseInstantEvent(B, C, D, A); } }; Timeline.CompactEventPainter.prototype.paintDurationEvent = function(B, C, D, A) { if (B.isImprecise()) { this.paintImpreciseDurationEvent(B, C, D, A); } else { this.paintPreciseDurationEvent(B, C, D, A); } }; Timeline.CompactEventPainter.prototype.paintPreciseInstantEvent = function(H, F, B, A) { var C = { tooltip : H.getProperty("tooltip") || H.getText() }; var E = { url : H.getIcon() }; if (E.url == null) { E.url = F.defaultIcon; E.width = F.defaultIconWidth; E.height = F.defaultIconHeight; E.className = "timeline-event-icon-default"; } else { E.width = H.getProperty("iconWidth") || F.customIconWidth; E.height = H.getProperty("iconHeight") || F.customIconHeight; } var J = { text : H.getText(), color : H.getTextColor() || H.getColor(), className : H.getClassName() }; var G = this.paintTapeIconLabel(H.getStart(), C, null, E, J, F, B, A); var I = this; var D = function(L, K, M) { return I._onClickInstantEvent(G.iconElmtData.elmt, K, H); }; SimileAjax.DOM.registerEvent(G.iconElmtData.elmt, "mousedown", D); SimileAjax.DOM.registerEvent(G.labelElmtData.elmt, "mousedown", D); this._eventIdToElmt[H.getID()] = G.iconElmtData.elmt; }; Timeline.CompactEventPainter.prototype.paintCompositePreciseInstantEvents = function( J, H, D, B) { var K = J[0]; var A = []; for ( var C = 0; C < J.length; C++) { A.push(J[C].getProperty("tooltip") || J[C].getText()); } var E = { tooltip : A.join("; ") }; var G = { url : H.compositeIcon, width : H.compositeIconWidth, height : H.compositeIconHeight, className : "timeline-event-icon-composite" }; var M = { text : String.substitute(this._params.compositeEventLabelTemplate, [ J.length ]) }; var I = this.paintTapeIconLabel(K.getStart(), E, null, G, M, H, D, B); var L = this; var F = function(O, N, P) { return L._onClickMultiplePreciseInstantEvent(I.iconElmtData.elmt, N, J); }; SimileAjax.DOM.registerEvent(I.iconElmtData.elmt, "mousedown", F); SimileAjax.DOM.registerEvent(I.labelElmtData.elmt, "mousedown", F); for ( var C = 0; C < J.length; C++) { this._eventIdToElmt[J[C].getID()] = I.iconElmtData.elmt; } }; Timeline.CompactEventPainter.prototype.paintStackedPreciseInstantEvents = function( T, j, c, E) { var S = "limit" in this._params.stackConcurrentPreciseInstantEvents ? this._params.stackConcurrentPreciseInstantEvents.limit : 10; var G = "moreMessageTemplate" in this._params.stackConcurrentPreciseInstantEvents ? this._params.stackConcurrentPreciseInstantEvents.moreMessageTemplate : "%0 More Events"; var Q = S <= T.length - 2; var B = this._band; var L = function(i) { return Math.round(B.dateToPixelOffset(i)); }; var O = function(i) { var r = { url : i.getIcon() }; if (r.url == null) { r.url = j.defaultStackIcon; r.width = j.defaultStackIconWidth; r.height = j.defaultStackIconHeight; r.className = "timeline-event-icon-stack timeline-event-icon-default"; } else { r.width = i.getProperty("iconWidth") || j.customIconWidth; r.height = i.getProperty("iconHeight") || j.customIconHeight; r.className = "timeline-event-icon-stack"; } return r; }; var C = O(T[0]); var V = 5; var D = 0; var g = 0; var p = 0; var U = 0; var l = []; for ( var n = 0; n < T.length && (!Q || n < S); n++) { var b = T[n]; var a = b.getText(); var X = O(b); var W = this._frc.computeSize(a); var K = { text : a, iconData : X, labelSize : W, iconLeft : C.width + n * V - X.width }; K.labelLeft = C.width + n * V + j.iconLabelGap; K.top = p; l.push(K); D = Math.min(D, K.iconLeft); p += W.height; g = Math.max(g, K.labelLeft + W.width); U = Math.max(U, K.top + X.height); } if (Q) { var e = String.substitute(G, [ T.length - S ]); var H = this._frc.computeSize(e); var J = C.width + (S - 1) * V + j.iconLabelGap; var m = p; p += H.height; g = Math.max(g, J + H.width); } g += j.labelRightMargin; p += j.labelBottomMargin; U += j.iconBottomMargin; var F = L(T[0].getStart()); var Y = []; var N = Math.ceil(Math.max(U, p) / j.trackHeight); var M = C.width + (T.length - 1) * V; for ( var n = 0; n < N; n++) { Y.push({ start : D, end : M }); } var f = Math.ceil(p / j.trackHeight); for ( var n = 0; n < f; n++) { var P = Y[n]; P.end = Math.max(P.end, g); } var k = this._fitTracks(F, Y); var Z = k * j.trackHeight + j.trackOffset; var q = this._timeline.getDocument().createElement("div"); q.className = "timeline-event-icon-stack"; q.style.position = "absolute"; q.style.overflow = "visible"; q.style.left = F + "px"; q.style.top = Z + "px"; q.style.width = M + "px"; q.style.height = U + "px"; q.innerHTML = "<div style='position: relative'></div>"; this._eventLayer.appendChild(q); var I = this; var R = function(r) { try { var w = parseInt(this.getAttribute("index")); var u = q.firstChild.childNodes; for ( var s = 0; s < u.length; s++) { var v = u[s]; if (s == w) { v.style.zIndex = u.length; } else { v.style.zIndex = u.length - s; } } } catch (t) { } }; var d = function(u) { var w = l[u]; var r = T[u]; var i = r.getProperty("tooltip") || r.getText(); var v = I ._paintEventLabel({ tooltip : i }, { text : w.text }, F + w.labelLeft, Z + w.top, w.labelSize.width, w.labelSize.height, c); v.elmt.setAttribute("index", u); v.elmt.onmouseover = R; var t = SimileAjax.Graphics.createTranslucentImage(w.iconData.url); var s = I._timeline.getDocument().createElement("div"); s.className = "timeline-event-icon" + ("className" in w.iconData ? (" " + w.iconData.className) : ""); s.style.left = w.iconLeft + "px"; s.style.top = w.top + "px"; s.style.zIndex = (l.length - u); s.appendChild(t); s.setAttribute("index", u); s.onmouseover = R; q.firstChild.appendChild(s); var x = function(z, y, AA) { return I._onClickInstantEvent(v.elmt, y, r); }; SimileAjax.DOM.registerEvent(s, "mousedown", x); SimileAjax.DOM.registerEvent(v.elmt, "mousedown", x); I._eventIdToElmt[r.getID()] = s; }; for ( var n = 0; n < l.length; n++) { d(n); } if (Q) { var o = T.slice(S); var A = this._paintEventLabel({ tooltip : e }, { text : e }, F + J, Z + m, H.width, H.height, c); var h = function(r, i, s) { return I._onClickMultiplePreciseInstantEvent(A.elmt, i, o); }; SimileAjax.DOM.registerEvent(A.elmt, "mousedown", h); for ( var n = 0; n < o.length; n++) { this._eventIdToElmt[o[n].getID()] = A.elmt; } } }; Timeline.CompactEventPainter.prototype.paintImpreciseInstantEvent = function(I, G, B, A) { var C = { tooltip : I.getProperty("tooltip") || I.getText() }; var E = { start : I.getStart(), end : I.getEnd(), latestStart : I.getLatestStart(), earliestEnd : I.getEarliestEnd(), isInstant : true }; var F = { url : I.getIcon() }; if (F.url == null) { F = null; } else { F.width = I.getProperty("iconWidth") || G.customIconWidth; F.height = I.getProperty("iconHeight") || G.customIconHeight; } var K = { text : I.getText(), color : I.getTextColor() || I.getColor(), className : I.getClassName() }; var H = this.paintTapeIconLabel(I.getStart(), C, E, F, K, G, B, A); var J = this; var D = F != null ? function(M, L, N) { return J._onClickInstantEvent(H.iconElmtData.elmt, L, I); } : function(M, L, N) { return J._onClickInstantEvent(H.labelElmtData.elmt, L, I); }; SimileAjax.DOM.registerEvent(H.labelElmtData.elmt, "mousedown", D); SimileAjax.DOM.registerEvent(H.impreciseTapeElmtData.elmt, "mousedown", D); if (F != null) { SimileAjax.DOM.registerEvent(H.iconElmtData.elmt, "mousedown", D); this._eventIdToElmt[I.getID()] = H.iconElmtData.elmt; } else { this._eventIdToElmt[I.getID()] = H.labelElmtData.elmt; } }; Timeline.CompactEventPainter.prototype.paintPreciseDurationEvent = function(I, G, B, A) { var C = { tooltip : I.getProperty("tooltip") || I.getText() }; var E = { start : I.getStart(), end : I.getEnd(), isInstant : false }; var F = { url : I.getIcon() }; if (F.url == null) { F = null; } else { F.width = I.getProperty("iconWidth") || G.customIconWidth; F.height = I.getProperty("iconHeight") || G.customIconHeight; } var K = { text : I.getText(), color : I.getTextColor() || I.getColor(), className : I.getClassName() }; var H = this.paintTapeIconLabel(I.getLatestStart(), C, E, F, K, G, B, A); var J = this; var D = F != null ? function(M, L, N) { return J._onClickInstantEvent(H.iconElmtData.elmt, L, I); } : function(M, L, N) { return J._onClickInstantEvent(H.labelElmtData.elmt, L, I); }; SimileAjax.DOM.registerEvent(H.labelElmtData.elmt, "mousedown", D); SimileAjax.DOM.registerEvent(H.tapeElmtData.elmt, "mousedown", D); if (F != null) { SimileAjax.DOM.registerEvent(H.iconElmtData.elmt, "mousedown", D); this._eventIdToElmt[I.getID()] = H.iconElmtData.elmt; } else { this._eventIdToElmt[I.getID()] = H.labelElmtData.elmt; } }; Timeline.CompactEventPainter.prototype.paintImpreciseDurationEvent = function( I, G, B, A) { var C = { tooltip : I.getProperty("tooltip") || I.getText() }; var E = { start : I.getStart(), end : I.getEnd(), latestStart : I.getLatestStart(), earliestEnd : I.getEarliestEnd(), isInstant : false }; var F = { url : I.getIcon() }; if (F.url == null) { F = null; } else { F.width = I.getProperty("iconWidth") || G.customIconWidth; F.height = I.getProperty("iconHeight") || G.customIconHeight; } var K = { text : I.getText(), color : I.getTextColor() || I.getColor(), className : I.getClassName() }; var H = this.paintTapeIconLabel(I.getLatestStart(), C, E, F, K, G, B, A); var J = this; var D = F != null ? function(M, L, N) { return J._onClickInstantEvent(H.iconElmtData.elmt, L, I); } : function(M, L, N) { return J._onClickInstantEvent(H.labelElmtData.elmt, L, I); }; SimileAjax.DOM.registerEvent(H.labelElmtData.elmt, "mousedown", D); SimileAjax.DOM.registerEvent(H.tapeElmtData.elmt, "mousedown", D); if (F != null) { SimileAjax.DOM.registerEvent(H.iconElmtData.elmt, "mousedown", D); this._eventIdToElmt[I.getID()] = H.iconElmtData.elmt; } else { this._eventIdToElmt[I.getID()] = H.labelElmtData.elmt; } }; Timeline.CompactEventPainter.prototype.paintTapeIconLabel = function(V, O, S, I, a, X, c, Z) { var R = this._band; var F = function(e) { return Math.round(R.dateToPixelOffset(e)); }; var d = F(V); var W = []; var b = 0; var B = 0; var C = 0; if (S != null) { b = X.tapeHeight + X.tapeBottomMargin; B = Math.ceil(X.tapeHeight / X.trackHeight); var A = F(S.end) - d; var L = F(S.start) - d; for ( var Q = 0; Q < B; Q++) { W.push({ start : L, end : A }); } C = X.trackHeight - (b % X.tapeHeight); } var N = 0; var U = 0; if (I != null) { if ("iconAlign" in I && I.iconAlign == "center") { N = -Math.floor(I.width / 2); } U = N + I.width + X.iconLabelGap; if (B > 0) { W[B - 1].end = Math.max(W[B - 1].end, U); } var E = I.height + X.iconBottomMargin + C; while (E > 0) { W.push({ start : N, end : U }); E -= X.trackHeight; } } var P = a.text; var H = this._frc.computeSize(P); var M = H.height + X.labelBottomMargin + C; var J = U + H.width + X.labelRightMargin; if (B > 0) { W[B - 1].end = Math.max(W[B - 1].end, J); } for ( var Y = 0; M > 0; Y++) { if (B + Y < W.length) { var T = W[B + Y]; T.end = J; } else { W.push({ start : 0, end : J }); } M -= X.trackHeight; } var G = this._fitTracks(d, W); var K = G * X.trackHeight + X.trackOffset; var D = {}; D.labelElmtData = this._paintEventLabel(O, a, d + U, K + b, H.width, H.height, c); if (S != null) { if ("latestStart" in S || "earliestEnd" in S) { D.impreciseTapeElmtData = this._paintEventTape(O, S, X.tapeHeight, K, F(S.start), F(S.end), c.event.duration.impreciseColor, c.event.duration.impreciseOpacity, X, c); } if (!S.isInstant && "start" in S && "end" in S) { D.tapeElmtData = this._paintEventTape(O, S, X.tapeHeight, K, d, F("earliestEnd" in S ? S.earliestEnd : S.end), S.color, 100, X, c); } } if (I != null) { D.iconElmtData = this._paintEventIcon(O, I, K + b, d + N, X, c); } return D; }; Timeline.CompactEventPainter.prototype._fitTracks = function(F, C) { var H; for (H = 0; H < this._tracks.length; H++) { var E = true; for ( var B = 0; B < C.length && (H + B) < this._tracks.length; B++) { var G = this._tracks[H + B]; var A = C[B]; if (F + A.start < G) { E = false; break; } } if (E) { break; } } for ( var D = 0; D < C.length; D++) { this._tracks[H + D] = F + C[D].end; } return H; }; Timeline.CompactEventPainter.prototype._paintEventIcon = function(C, D, H, G, E, F) { var B = SimileAjax.Graphics.createTranslucentImage(D.url); var A = this._timeline.getDocument().createElement("div"); A.className = "timeline-event-icon" + ("className" in D ? (" " + D.className) : ""); A.style.left = G + "px"; A.style.top = H + "px"; A.appendChild(B); if ("tooltip" in C && typeof C.tooltip == "string") { A.title = C.tooltip; } this._eventLayer.appendChild(A); return { left : G, top : H, width : E.iconWidth, height : E.iconHeight, elmt : A }; }; Timeline.CompactEventPainter.prototype._paintEventLabel = function(E, I, C, F, A, G, D) { var H = this._timeline.getDocument(); var B = H.createElement("div"); B.className = "timeline-event-label"; B.style.left = C + "px"; B.style.width = (A + 1) + "px"; B.style.top = F + "px"; B.innerHTML = I.text; if ("tooltip" in E && typeof E.tooltip == "string") { B.title = E.tooltip; } if ("color" in I && typeof I.color == "string") { B.style.color = I.color; } if ("className" in I && typeof I.className == "string") { B.className += " " + I.className; } this._eventLayer.appendChild(B); return { left : C, top : F, width : A, height : G, elmt : B }; }; Timeline.CompactEventPainter.prototype._paintEventTape = function(G, H, K, J, D, A, E, C, I, F) { var B = A - D; var L = this._timeline.getDocument().createElement("div"); L.className = "timeline-event-tape"; L.style.left = D + "px"; L.style.top = J + "px"; L.style.width = B + "px"; L.style.height = K + "px"; if ("tooltip" in G && typeof G.tooltip == "string") { L.title = G.tooltip; } if (E != null && typeof H.color == "string") { L.style.backgroundColor = E; } if ("backgroundImage" in H && typeof H.backgroundImage == "string") { L.style.backgroundImage = "url(" + backgroundImage + ")"; L.style.backgroundRepeat = ("backgroundRepeat" in H && typeof H.backgroundRepeat == "string") ? H.backgroundRepeat : "repeat"; } SimileAjax.Graphics.setOpacity(L, C); if ("className" in H && typeof H.className == "string") { L.className += " " + H.className; } this._eventLayer.appendChild(L); return { left : D, top : J, width : B, height : K, elmt : L }; }; Timeline.CompactEventPainter.prototype._createHighlightDiv = function(A, C, E) { if (A >= 0) { var D = this._timeline.getDocument(); var G = E.event; var B = G.highlightColors[Math.min(A, G.highlightColors.length - 1)]; var F = D.createElement("div"); F.style.position = "absolute"; F.style.overflow = "hidden"; F.style.left = (C.left - 2) + "px"; F.style.width = (C.width + 4) + "px"; F.style.top = (C.top - 2) + "px"; F.style.height = (C.height + 4) + "px"; this._highlightLayer.appendChild(F); } }; Timeline.CompactEventPainter.prototype._onClickMultiplePreciseInstantEvent = function( E, A, B) { var F = SimileAjax.DOM.getPageCoordinates(E); this._showBubble(F.left + Math.ceil(E.offsetWidth / 2), F.top + Math.ceil(E.offsetHeight / 2), B); var D = []; for ( var C = 0; C < B.length; C++) { D.push(B[C].getID()); } this._fireOnSelect(D); A.cancelBubble = true; SimileAjax.DOM.cancelEvent(A); return false; }; Timeline.CompactEventPainter.prototype._onClickInstantEvent = function(C, A, B) { var D = SimileAjax.DOM.getPageCoordinates(C); this._showBubble(D.left + Math.ceil(C.offsetWidth / 2), D.top + Math.ceil(C.offsetHeight / 2), [ B ]); this._fireOnSelect([ B.getID() ]); A.cancelBubble = true; SimileAjax.DOM.cancelEvent(A); return false; }; Timeline.CompactEventPainter.prototype._onClickDurationEvent = function(F, B, C) { if ("pageX" in B) { var A = B.pageX; var E = B.pageY; } else { var D = SimileAjax.DOM.getPageCoordinates(F); var A = B.offsetX + D.left; var E = B.offsetY + D.top; } this._showBubble(A, E, [ C ]); this._fireOnSelect([ C.getID() ]); B.cancelBubble = true; SimileAjax.DOM.cancelEvent(B); return false; }; Timeline.CompactEventPainter.prototype.showBubble = function(A) { var B = this._eventIdToElmt[A.getID()]; if (B) { var C = SimileAjax.DOM.getPageCoordinates(B); this._showBubble(C.left + B.offsetWidth / 2, C.top + B.offsetHeight / 2, [ A ]); } }; Timeline.CompactEventPainter.prototype._showBubble = function(A, F, B) { var E = document.createElement("div"); B = ("fillInfoBubble" in B) ? [ B ] : B; for ( var D = 0; D < B.length; D++) { var C = document.createElement("div"); E.appendChild(C); B[D].fillInfoBubble(C, this._params.theme, this._band.getLabeller()); } SimileAjax.WindowManager.cancelPopups(); SimileAjax.Graphics.createBubbleForContentAndPoint(E, A, F, this._params.theme.event.bubble.width); }; Timeline.CompactEventPainter.prototype._fireOnSelect = function(B) { for ( var A = 0; A < this._onSelectListeners.length; A++) { this._onSelectListeners[A](B); } }; /* decorators.js */ Timeline.SpanHighlightDecorator = function(A) { this._unit = A.unit != null ? A.unit : SimileAjax.NativeDateUnit; this._startDate = (typeof A.startDate == "string") ? this._unit .parseFromObject(A.startDate) : A.startDate; this._endDate = (typeof A.endDate == "string") ? this._unit .parseFromObject(A.endDate) : A.endDate; this._startLabel = A.startLabel != null ? A.startLabel : ""; this._endLabel = A.endLabel != null ? A.endLabel : ""; this._color = A.color; this._cssClass = A.cssClass != null ? A.cssClass : null; this._opacity = A.opacity != null ? A.opacity : 100; this._zIndex = (A.inFront != null && A.inFront) ? 113 : 10; }; Timeline.SpanHighlightDecorator.prototype.initialize = function(B, A) { this._band = B; this._timeline = A; this._layerDiv = null; }; Timeline.SpanHighlightDecorator.prototype.paint = function() { if (this._layerDiv != null) { this._band.removeLayerDiv(this._layerDiv); } this._layerDiv = this._band.createLayerDiv(this._zIndex); this._layerDiv.setAttribute("name", "span-highlight-decorator"); this._layerDiv.style.display = "none"; var E = this._band.getMinDate(); var A = this._band.getMaxDate(); if (this._unit.compare(this._startDate, A) < 0 && this._unit.compare(this._endDate, E) > 0) { E = this._unit.later(E, this._startDate); A = this._unit.earlier(A, this._endDate); var F = this._band.dateToPixelOffset(E); var I = this._band.dateToPixelOffset(A); var H = this._timeline.getDocument(); var K = function() { var L = H.createElement("table"); L.insertRow(0).insertCell(0); return L; }; var B = H.createElement("div"); B.className = "timeline-highlight-decorator"; if (this._cssClass) { B.className += " " + this._cssClass; } if (this._color != null) { B.style.backgroundColor = this._color; } if (this._opacity < 100) { SimileAjax.Graphics.setOpacity(B, this._opacity); } this._layerDiv.appendChild(B); var J = K(); J.className = "timeline-highlight-label timeline-highlight-label-start"; var C = J.rows[0].cells[0]; C.innerHTML = this._startLabel; if (this._cssClass) { C.className = "label_" + this._cssClass; } this._layerDiv.appendChild(J); var G = K(); G.className = "timeline-highlight-label timeline-highlight-label-end"; var D = G.rows[0].cells[0]; D.innerHTML = this._endLabel; if (this._cssClass) { D.className = "label_" + this._cssClass; } this._layerDiv.appendChild(G); if (this._timeline.isHorizontal()) { B.style.left = F + "px"; B.style.width = (I - F) + "px"; J.style.right = (this._band.getTotalViewLength() - F) + "px"; J.style.width = (this._startLabel.length) + "em"; G.style.left = I + "px"; G.style.width = (this._endLabel.length) + "em"; } else { B.style.top = F + "px"; B.style.height = (I - F) + "px"; J.style.bottom = F + "px"; J.style.height = "1.5px"; G.style.top = I + "px"; G.style.height = "1.5px"; } } this._layerDiv.style.display = "block"; }; Timeline.SpanHighlightDecorator.prototype.softPaint = function() { }; Timeline.PointHighlightDecorator = function(A) { this._unit = A.unit != null ? A.unit : SimileAjax.NativeDateUnit; this._date = (typeof A.date == "string") ? this._unit .parseFromObject(A.date) : A.date; this._width = A.width != null ? A.width : 10; this._color = A.color; this._cssClass = A.cssClass != null ? A.cssClass : ""; this._opacity = A.opacity != null ? A.opacity : 100; }; Timeline.PointHighlightDecorator.prototype.initialize = function(B, A) { this._band = B; this._timeline = A; this._layerDiv = null; }; Timeline.PointHighlightDecorator.prototype.paint = function() { if (this._layerDiv != null) { this._band.removeLayerDiv(this._layerDiv); } this._layerDiv = this._band.createLayerDiv(10); this._layerDiv.setAttribute("name", "span-highlight-decorator"); this._layerDiv.style.display = "none"; var C = this._band.getMinDate(); var E = this._band.getMaxDate(); if (this._unit.compare(this._date, E) < 0 && this._unit.compare(this._date, C) > 0) { var A = this._band.dateToPixelOffset(this._date); var B = A - Math.round(this._width / 2); var D = this._timeline.getDocument(); var F = D.createElement("div"); F.className = "timeline-highlight-point-decorator"; F.className += " " + this._cssClass; if (this._color != null) { F.style.backgroundColor = this._color; } if (this._opacity < 100) { SimileAjax.Graphics.setOpacity(F, this._opacity); } this._layerDiv.appendChild(F); if (this._timeline.isHorizontal()) { F.style.left = B + "px"; F.style.width = this._width; } else { F.style.top = B + "px"; F.style.height = this._width; } } this._layerDiv.style.display = "block"; }; Timeline.PointHighlightDecorator.prototype.softPaint = function() { }; /* detailed-painter.js */ Timeline.DetailedEventPainter = function(A) { this._params = A; this._onSelectListeners = []; this._filterMatcher = null; this._highlightMatcher = null; this._frc = null; this._eventIdToElmt = {}; }; Timeline.DetailedEventPainter.prototype.initialize = function(B, A) { this._band = B; this._timeline = A; this._backLayer = null; this._eventLayer = null; this._lineLayer = null; this._highlightLayer = null; this._eventIdToElmt = null; }; Timeline.DetailedEventPainter.prototype.getType = function() { return "detailed"; }; Timeline.DetailedEventPainter.prototype.addOnSelectListener = function(A) { this._onSelectListeners.push(A); }; Timeline.DetailedEventPainter.prototype.removeOnSelectListener = function(B) { for ( var A = 0; A < this._onSelectListeners.length; A++) { if (this._onSelectListeners[A] == B) { this._onSelectListeners.splice(A, 1); break; } } }; Timeline.DetailedEventPainter.prototype.getFilterMatcher = function() { return this._filterMatcher; }; Timeline.DetailedEventPainter.prototype.setFilterMatcher = function(A) { this._filterMatcher = A; }; Timeline.DetailedEventPainter.prototype.getHighlightMatcher = function() { return this._highlightMatcher; }; Timeline.DetailedEventPainter.prototype.setHighlightMatcher = function(A) { this._highlightMatcher = A; }; Timeline.DetailedEventPainter.prototype.paint = function() { var C = this._band.getEventSource(); if (C == null) { return; } this._eventIdToElmt = {}; this._prepareForPainting(); var I = this._params.theme.event; var G = Math.max(I.track.height, this._frc.getLineHeight()); var F = { trackOffset : Math.round(this._band.getViewWidth() / 2 - G / 2), trackHeight : G, trackGap : I.track.gap, trackIncrement : G + I.track.gap, icon : I.instant.icon, iconWidth : I.instant.iconWidth, iconHeight : I.instant.iconHeight, labelWidth : I.label.width }; var D = this._band.getMinDate(); var B = this._band.getMaxDate(); var J = (this._filterMatcher != null) ? this._filterMatcher : function(K) { return true; }; var A = (this._highlightMatcher != null) ? this._highlightMatcher : function(K) { return -1; }; var E = C.getEventReverseIterator(D, B); while (E.hasNext()) { var H = E.next(); if (J(H)) { this.paintEvent(H, F, this._params.theme, A(H)); } } this._highlightLayer.style.display = "block"; this._lineLayer.style.display = "block"; this._eventLayer.style.display = "block"; this._band.updateEventTrackInfo(this._lowerTracks.length + this._upperTracks.length, F.trackIncrement); }; Timeline.DetailedEventPainter.prototype.softPaint = function() { }; Timeline.DetailedEventPainter.prototype._prepareForPainting = function() { var B = this._band; if (this._backLayer == null) { this._backLayer = this._band.createLayerDiv(0, "timeline-band-events"); this._backLayer.style.visibility = "hidden"; var A = document.createElement("span"); A.className = "timeline-event-label"; this._backLayer.appendChild(A); this._frc = SimileAjax.Graphics.getFontRenderingContext(A); } this._frc.update(); this._lowerTracks = []; this._upperTracks = []; if (this._highlightLayer != null) { B.removeLayerDiv(this._highlightLayer); } this._highlightLayer = B.createLayerDiv(105, "timeline-band-highlights"); this._highlightLayer.style.display = "none"; if (this._lineLayer != null) { B.removeLayerDiv(this._lineLayer); } this._lineLayer = B.createLayerDiv(110, "timeline-band-lines"); this._lineLayer.style.display = "none"; if (this._eventLayer != null) { B.removeLayerDiv(this._eventLayer); } this._eventLayer = B.createLayerDiv(110, "timeline-band-events"); this._eventLayer.style.display = "none"; }; Timeline.DetailedEventPainter.prototype.paintEvent = function(B, C, D, A) { if (B.isInstant()) { this.paintInstantEvent(B, C, D, A); } else { this.paintDurationEvent(B, C, D, A); } }; Timeline.DetailedEventPainter.prototype.paintInstantEvent = function(B, C, D, A) { if (B.isImprecise()) { this.paintImpreciseInstantEvent(B, C, D, A); } else { this.paintPreciseInstantEvent(B, C, D, A); } }; Timeline.DetailedEventPainter.prototype.paintDurationEvent = function(B, C, D, A) { if (B.isImprecise()) { this.paintImpreciseDurationEvent(B, C, D, A); } else { this.paintPreciseDurationEvent(B, C, D, A); } }; Timeline.DetailedEventPainter.prototype.paintPreciseInstantEvent = function(L, P, S, Q) { var T = this._timeline.getDocument(); var J = L.getText(); var G = L.getStart(); var H = Math.round(this._band.dateToPixelOffset(G)); var A = Math.round(H + P.iconWidth / 2); var C = Math.round(H - P.iconWidth / 2); var E = this._frc.computeSize(J); var F = this._findFreeTrackForSolid(A, H); var B = this._paintEventIcon(L, F, C, P, S); var K = A + S.event.label.offsetFromLine; var O = F; var D = this._getTrackData(F); if (Math.min(D.solid, D.text) >= K + E.width) { D.solid = C; D.text = K; } else { D.solid = C; K = H + S.event.label.offsetFromLine; O = this._findFreeTrackForText(F, K + E.width, function(U) { U.line = H - 2; }); this._getTrackData(O).text = C; this._paintEventLine(L, H, F, O, P, S); } var N = Math.round(P.trackOffset + O * P.trackIncrement + P.trackHeight / 2 - E.height / 2); var R = this._paintEventLabel(L, J, K, N, E.width, E.height, S); var M = this; var I = function(V, U, W) { return M._onClickInstantEvent(B.elmt, U, L); }; SimileAjax.DOM.registerEvent(B.elmt, "mousedown", I); SimileAjax.DOM.registerEvent(R.elmt, "mousedown", I); this._createHighlightDiv(Q, B, S); this._eventIdToElmt[L.getID()] = B.elmt; }; Timeline.DetailedEventPainter.prototype.paintImpreciseInstantEvent = function( O, S, W, T) { var X = this._timeline.getDocument(); var M = O.getText(); var I = O.getStart(); var U = O.getEnd(); var K = Math.round(this._band.dateToPixelOffset(I)); var B = Math.round(this._band.dateToPixelOffset(U)); var A = Math.round(K + S.iconWidth / 2); var D = Math.round(K - S.iconWidth / 2); var G = this._frc.computeSize(M); var H = this._findFreeTrackForSolid(B, K); var E = this._paintEventTape(O, H, K, B, W.event.instant.impreciseColor, W.event.instant.impreciseOpacity, S, W); var C = this._paintEventIcon(O, H, D, S, W); var F = this._getTrackData(H); F.solid = D; var N = A + W.event.label.offsetFromLine; var J = N + G.width; var R; if (J < B) { R = H; } else { N = K + W.event.label.offsetFromLine; J = N + G.width; R = this._findFreeTrackForText(H, J, function(Y) { Y.line = K - 2; }); this._getTrackData(R).text = D; this._paintEventLine(O, K, H, R, S, W); } var Q = Math.round(S.trackOffset + R * S.trackIncrement + S.trackHeight / 2 - G.height / 2); var V = this._paintEventLabel(O, M, N, Q, G.width, G.height, W); var P = this; var L = function(Z, Y, a) { return P._onClickInstantEvent(C.elmt, Y, O); }; SimileAjax.DOM.registerEvent(C.elmt, "mousedown", L); SimileAjax.DOM.registerEvent(E.elmt, "mousedown", L); SimileAjax.DOM.registerEvent(V.elmt, "mousedown", L); this._createHighlightDiv(T, C, W); this._eventIdToElmt[O.getID()] = C.elmt; }; Timeline.DetailedEventPainter.prototype.paintPreciseDurationEvent = function(K, O, T, Q) { var U = this._timeline.getDocument(); var I = K.getText(); var E = K.getStart(); var R = K.getEnd(); var F = Math.round(this._band.dateToPixelOffset(E)); var A = Math.round(this._band.dateToPixelOffset(R)); var C = this._frc.computeSize(I); var D = this._findFreeTrackForSolid(A); var P = K.getColor(); P = P != null ? P : T.event.duration.color; var B = this._paintEventTape(K, D, F, A, P, 100, O, T); var H = this._getTrackData(D); H.solid = F; var J = F + T.event.label.offsetFromLine; var N = this._findFreeTrackForText(D, J + C.width, function(V) { V.line = F - 2; }); this._getTrackData(N).text = F - 2; this._paintEventLine(K, F, D, N, O, T); var M = Math.round(O.trackOffset + N * O.trackIncrement + O.trackHeight / 2 - C.height / 2); var S = this._paintEventLabel(K, I, J, M, C.width, C.height, T); var L = this; var G = function(W, V, X) { return L._onClickDurationEvent(B.elmt, V, K); }; SimileAjax.DOM.registerEvent(B.elmt, "mousedown", G); SimileAjax.DOM.registerEvent(S.elmt, "mousedown", G); this._createHighlightDiv(Q, B, T); this._eventIdToElmt[K.getID()] = B.elmt; }; Timeline.DetailedEventPainter.prototype.paintImpreciseDurationEvent = function( M, T, Y, V) { var Z = this._timeline.getDocument(); var K = M.getText(); var G = M.getStart(); var S = M.getLatestStart(); var W = M.getEnd(); var O = M.getEarliestEnd(); var H = Math.round(this._band.dateToPixelOffset(G)); var E = Math.round(this._band.dateToPixelOffset(S)); var A = Math.round(this._band.dateToPixelOffset(W)); var F = Math.round(this._band.dateToPixelOffset(O)); var C = this._frc.computeSize(K); var D = this._findFreeTrackForSolid(A); var U = M.getColor(); U = U != null ? U : Y.event.duration.color; var R = this._paintEventTape(M, D, H, A, Y.event.duration.impreciseColor, Y.event.duration.impreciseOpacity, T, Y); var B = this._paintEventTape(M, D, E, F, U, 100, T, Y); var J = this._getTrackData(D); J.solid = H; var L = E + Y.event.label.offsetFromLine; var Q = this._findFreeTrackForText(D, L + C.width, function(a) { a.line = E - 2; }); this._getTrackData(Q).text = E - 2; this._paintEventLine(M, E, D, Q, T, Y); var P = Math.round(T.trackOffset + Q * T.trackIncrement + T.trackHeight / 2 - C.height / 2); var X = this._paintEventLabel(M, K, L, P, C.width, C.height, Y); var N = this; var I = function(b, a, c) { return N._onClickDurationEvent(B.elmt, a, M); }; SimileAjax.DOM.registerEvent(B.elmt, "mousedown", I); SimileAjax.DOM.registerEvent(X.elmt, "mousedown", I); this._createHighlightDiv(V, B, Y); this._eventIdToElmt[M.getID()] = B.elmt; }; Timeline.DetailedEventPainter.prototype._findFreeTrackForSolid = function(D, A) { for ( var C = 0; true; C++) { if (C < this._lowerTracks.length) { var B = this._lowerTracks[C]; if (Math.min(B.solid, B.text) > D && (!(A) || B.line > A)) { return C; } } else { this._lowerTracks.push({ solid : Number.POSITIVE_INFINITY, text : Number.POSITIVE_INFINITY, line : Number.POSITIVE_INFINITY }); return C; } if (C < this._upperTracks.length) { var B = this._upperTracks[C]; if (Math.min(B.solid, B.text) > D && (!(A) || B.line > A)) { return -1 - C; } } else { this._upperTracks.push({ solid : Number.POSITIVE_INFINITY, text : Number.POSITIVE_INFINITY, line : Number.POSITIVE_INFINITY }); return -1 - C; } } }; Timeline.DetailedEventPainter.prototype._findFreeTrackForText = function(C, A, I) { var B; var E; var F; var H; if (C < 0) { B = true; F = -C; E = this._findFreeUpperTrackForText(F, A); H = -1 - E; } else { if (C > 0) { B = false; F = C + 1; E = this._findFreeLowerTrackForText(F, A); H = E; } else { var G = this._findFreeUpperTrackForText(0, A); var J = this._findFreeLowerTrackForText(1, A); if (J - 1 <= G) { B = false; F = 1; E = J; H = E; } else { B = true; F = 0; E = G; H = -1 - E; } } } if (B) { if (E == this._upperTracks.length) { this._upperTracks.push({ solid : Number.POSITIVE_INFINITY, text : Number.POSITIVE_INFINITY, line : Number.POSITIVE_INFINITY }); } for ( var D = F; D < E; D++) { I(this._upperTracks[D]); } } else { if (E == this._lowerTracks.length) { this._lowerTracks.push({ solid : Number.POSITIVE_INFINITY, text : Number.POSITIVE_INFINITY, line : Number.POSITIVE_INFINITY }); } for ( var D = F; D < E; D++) { I(this._lowerTracks[D]); } } return H; }; Timeline.DetailedEventPainter.prototype._findFreeLowerTrackForText = function( A, C) { for (; A < this._lowerTracks.length; A++) { var B = this._lowerTracks[A]; if (Math.min(B.solid, B.text) >= C) { break; } } return A; }; Timeline.DetailedEventPainter.prototype._findFreeUpperTrackForText = function( A, C) { for (; A < this._upperTracks.length; A++) { var B = this._upperTracks[A]; if (Math.min(B.solid, B.text) >= C) { break; } } return A; }; Timeline.DetailedEventPainter.prototype._getTrackData = function(A) { return (A < 0) ? this._upperTracks[-A - 1] : this._lowerTracks[A]; }; Timeline.DetailedEventPainter.prototype._paintEventLine = function(J, E, D, A, G, F) { var H = Math .round(G.trackOffset + D * G.trackIncrement + G.trackHeight / 2); var I = Math.round(Math.abs(A - D) * G.trackIncrement); var C = "1px solid " + F.event.label.lineColor; var B = this._timeline.getDocument().createElement("div"); B.style.position = "absolute"; B.style.left = E + "px"; B.style.width = F.event.label.offsetFromLine + "px"; B.style.height = I + "px"; if (D > A) { B.style.top = (H - I) + "px"; B.style.borderTop = C; } else { B.style.top = H + "px"; B.style.borderBottom = C; } B.style.borderLeft = C; this._lineLayer.appendChild(B); }; Timeline.DetailedEventPainter.prototype._paintEventIcon = function(J, B, C, F, E) { var H = J.getIcon(); H = H != null ? H : F.icon; var G = F.trackOffset + B * F.trackIncrement + F.trackHeight / 2; var I = Math.round(G - F.iconHeight / 2); var D = SimileAjax.Graphics.createTranslucentImage(H); var A = this._timeline.getDocument().createElement("div"); A.style.position = "absolute"; A.style.left = C + "px"; A.style.top = I + "px"; A.appendChild(D); A.style.cursor = "pointer"; if (J._title != null) { A.title = J._title; } this._eventLayer.appendChild(A); return { left : C, top : I, width : F.iconWidth, height : F.iconHeight, elmt : A }; }; Timeline.DetailedEventPainter.prototype._paintEventLabel = function(I, J, C, F, A, G, E) { var H = this._timeline.getDocument(); var K = H.createElement("div"); K.style.position = "absolute"; K.style.left = C + "px"; K.style.width = A + "px"; K.style.top = F + "px"; K.style.height = G + "px"; K.style.backgroundColor = E.event.label.backgroundColor; SimileAjax.Graphics.setOpacity(K, E.event.label.backgroundOpacity); this._eventLayer.appendChild(K); var B = H.createElement("div"); B.style.position = "absolute"; B.style.left = C + "px"; B.style.width = A + "px"; B.style.top = F + "px"; B.innerHTML = J; B.style.cursor = "pointer"; if (I._title != null) { B.title = I._title; } var D = I.getTextColor(); if (D == null) { D = I.getColor(); } if (D != null) { B.style.color = D; } this._eventLayer.appendChild(B); return { left : C, top : F, width : A, height : G, elmt : B }; }; Timeline.DetailedEventPainter.prototype._paintEventTape = function(L, B, D, A, G, C, I, H) { var F = A - D; var E = H.event.tape.height; var K = I.trackOffset + B * I.trackIncrement + I.trackHeight / 2; var J = Math.round(K - E / 2); var M = this._timeline.getDocument().createElement("div"); M.style.position = "absolute"; M.style.left = D + "px"; M.style.width = F + "px"; M.style.top = J + "px"; M.style.height = E + "px"; M.style.backgroundColor = G; M.style.overflow = "hidden"; M.style.cursor = "pointer"; if (L._title != null) { M.title = L._title; } SimileAjax.Graphics.setOpacity(M, C); this._eventLayer.appendChild(M); return { left : D, top : J, width : F, height : E, elmt : M }; }; Timeline.DetailedEventPainter.prototype._createHighlightDiv = function(A, C, E) { if (A >= 0) { var D = this._timeline.getDocument(); var G = E.event; var B = G.highlightColors[Math.min(A, G.highlightColors.length - 1)]; var F = D.createElement("div"); F.style.position = "absolute"; F.style.overflow = "hidden"; F.style.left = (C.left - 2) + "px"; F.style.width = (C.width + 4) + "px"; F.style.top = (C.top - 2) + "px"; F.style.height = (C.height + 4) + "px"; F.style.background = B; this._highlightLayer.appendChild(F); } }; Timeline.DetailedEventPainter.prototype._onClickInstantEvent = function(C, A, B) { var D = SimileAjax.DOM.getPageCoordinates(C); this._showBubble(D.left + Math.ceil(C.offsetWidth / 2), D.top + Math.ceil(C.offsetHeight / 2), B); this._fireOnSelect(B.getID()); A.cancelBubble = true; SimileAjax.DOM.cancelEvent(A); return false; }; Timeline.DetailedEventPainter.prototype._onClickDurationEvent = function(F, B, C) { if ("pageX" in B) { var A = B.pageX; var E = B.pageY; } else { var D = SimileAjax.DOM.getPageCoordinates(F); var A = B.offsetX + D.left; var E = B.offsetY + D.top; } this._showBubble(A, E, C); this._fireOnSelect(C.getID()); B.cancelBubble = true; SimileAjax.DOM.cancelEvent(B); return false; }; Timeline.DetailedEventPainter.prototype.showBubble = function(A) { var B = this._eventIdToElmt[A.getID()]; if (B) { var C = SimileAjax.DOM.getPageCoordinates(B); this._showBubble(C.left + B.offsetWidth / 2, C.top + B.offsetHeight / 2, A); } }; Timeline.DetailedEventPainter.prototype._showBubble = function(B, E, C) { var D = document.createElement("div"); var A = this._params.theme.event.bubble; C.fillInfoBubble(D, this._params.theme, this._band.getLabeller()); SimileAjax.WindowManager.cancelPopups(); SimileAjax.Graphics.createBubbleForContentAndPoint(D, B, E, A.width, null, A.maxHeight); }; Timeline.DetailedEventPainter.prototype._fireOnSelect = function(A) { for ( var B = 0; B < this._onSelectListeners.length; B++) { this._onSelectListeners[B](A); } }; /* ether-painters.js */ Timeline.GregorianEtherPainter = function(A) { this._params = A; this._theme = A.theme; this._unit = A.unit; this._multiple = ("multiple" in A) ? A.multiple : 1; }; Timeline.GregorianEtherPainter.prototype.initialize = function(C, B) { this._band = C; this._timeline = B; this._backgroundLayer = C.createLayerDiv(0); this._backgroundLayer.setAttribute("name", "ether-background"); this._backgroundLayer.className = "timeline-ether-bg"; this._markerLayer = null; this._lineLayer = null; var D = ("align" in this._params && this._params.align != undefined) ? this._params.align : this._theme.ether.interval.marker[B.isHorizontal() ? "hAlign" : "vAlign"]; var A = ("showLine" in this._params) ? this._params.showLine : this._theme.ether.interval.line.show; this._intervalMarkerLayout = new Timeline.EtherIntervalMarkerLayout( this._timeline, this._band, this._theme, D, A); this._highlight = new Timeline.EtherHighlight(this._timeline, this._band, this._theme, this._backgroundLayer); }; Timeline.GregorianEtherPainter.prototype.setHighlight = function(A, B) { this._highlight.position(A, B); }; Timeline.GregorianEtherPainter.prototype.paint = function() { if (this._markerLayer) { this._band.removeLayerDiv(this._markerLayer); } this._markerLayer = this._band.createLayerDiv(100); this._markerLayer.setAttribute("name", "ether-markers"); this._markerLayer.style.display = "none"; if (this._lineLayer) { this._band.removeLayerDiv(this._lineLayer); } this._lineLayer = this._band.createLayerDiv(1); this._lineLayer.setAttribute("name", "ether-lines"); this._lineLayer.style.display = "none"; var C = this._band.getMinDate(); var F = this._band.getMaxDate(); var A = this._band.getTimeZone(); var E = this._band.getLabeller(); SimileAjax.DateTime.roundDownToInterval(C, this._unit, A, this._multiple, this._theme.firstDayOfWeek); var D = this; var B = function(G) { for ( var H = 0; H < D._multiple; H++) { SimileAjax.DateTime.incrementByInterval(G, D._unit); } }; while (C.getTime() < F.getTime()) { this._intervalMarkerLayout.createIntervalMarker(C, E, this._unit, this._markerLayer, this._lineLayer); B(C); } this._markerLayer.style.display = "block"; this._lineLayer.style.display = "block"; }; Timeline.GregorianEtherPainter.prototype.softPaint = function() { }; Timeline.GregorianEtherPainter.prototype.zoom = function(A) { if (A != 0) { this._unit += A; } }; Timeline.HotZoneGregorianEtherPainter = function(G) { this._params = G; this._theme = G.theme; this._zones = [ { startTime : Number.NEGATIVE_INFINITY, endTime : Number.POSITIVE_INFINITY, unit : G.unit, multiple : 1 } ]; for ( var F = 0; F < G.zones.length; F++) { var C = G.zones[F]; var E = SimileAjax.DateTime.parseGregorianDateTime(C.start).getTime(); var B = SimileAjax.DateTime.parseGregorianDateTime(C.end).getTime(); for ( var D = 0; D < this._zones.length && B > E; D++) { var A = this._zones[D]; if (E < A.endTime) { if (E > A.startTime) { this._zones.splice(D, 0, { startTime : A.startTime, endTime : E, unit : A.unit, multiple : A.multiple }); D++; A.startTime = E; } if (B < A.endTime) { this._zones.splice(D, 0, { startTime : E, endTime : B, unit : C.unit, multiple : (C.multiple) ? C.multiple : 1 }); D++; A.startTime = B; E = B; } else { A.multiple = C.multiple; A.unit = C.unit; E = A.endTime; } } } } }; Timeline.HotZoneGregorianEtherPainter.prototype.initialize = function(C, B) { this._band = C; this._timeline = B; this._backgroundLayer = C.createLayerDiv(0); this._backgroundLayer.setAttribute("name", "ether-background"); this._backgroundLayer.className = "timeline-ether-bg"; this._markerLayer = null; this._lineLayer = null; var D = ("align" in this._params && this._params.align != undefined) ? this._params.align : this._theme.ether.interval.marker[B.isHorizontal() ? "hAlign" : "vAlign"]; var A = ("showLine" in this._params) ? this._params.showLine : this._theme.ether.interval.line.show; this._intervalMarkerLayout = new Timeline.EtherIntervalMarkerLayout( this._timeline, this._band, this._theme, D, A); this._highlight = new Timeline.EtherHighlight(this._timeline, this._band, this._theme, this._backgroundLayer); }; Timeline.HotZoneGregorianEtherPainter.prototype.setHighlight = function(A, B) { this._highlight.position(A, B); }; Timeline.HotZoneGregorianEtherPainter.prototype.paint = function() { if (this._markerLayer) { this._band.removeLayerDiv(this._markerLayer); } this._markerLayer = this._band.createLayerDiv(100); this._markerLayer.setAttribute("name", "ether-markers"); this._markerLayer.style.display = "none"; if (this._lineLayer) { this._band.removeLayerDiv(this._lineLayer); } this._lineLayer = this._band.createLayerDiv(1); this._lineLayer.setAttribute("name", "ether-lines"); this._lineLayer.style.display = "none"; var C = this._band.getMinDate(); var A = this._band.getMaxDate(); var I = this._band.getTimeZone(); var L = this._band.getLabeller(); var B = this; var J = function(N, M) { for ( var O = 0; O < M.multiple; O++) { SimileAjax.DateTime.incrementByInterval(N, M.unit); } }; var D = 0; while (D < this._zones.length) { if (C.getTime() < this._zones[D].endTime) { break; } D++; } var E = this._zones.length - 1; while (E >= 0) { if (A.getTime() > this._zones[E].startTime) { break; } E--; } for ( var H = D; H <= E; H++) { var G = this._zones[H]; var K = new Date(Math.max(C.getTime(), G.startTime)); var F = new Date(Math.min(A.getTime(), G.endTime)); SimileAjax.DateTime.roundDownToInterval(K, G.unit, I, G.multiple, this._theme.firstDayOfWeek); SimileAjax.DateTime.roundUpToInterval(F, G.unit, I, G.multiple, this._theme.firstDayOfWeek); while (K.getTime() < F.getTime()) { this._intervalMarkerLayout.createIntervalMarker(K, L, G.unit, this._markerLayer, this._lineLayer); J(K, G); } } this._markerLayer.style.display = "block"; this._lineLayer.style.display = "block"; }; Timeline.HotZoneGregorianEtherPainter.prototype.softPaint = function() { }; Timeline.HotZoneGregorianEtherPainter.prototype.zoom = function(A) { if (A != 0) { for ( var B = 0; B < this._zones.length; ++B) { if (this._zones[B]) { this._zones[B].unit += A; } } } }; Timeline.YearCountEtherPainter = function(A) { this._params = A; this._theme = A.theme; this._startDate = SimileAjax.DateTime.parseGregorianDateTime(A.startDate); this._multiple = ("multiple" in A) ? A.multiple : 1; }; Timeline.YearCountEtherPainter.prototype.initialize = function(C, B) { this._band = C; this._timeline = B; this._backgroundLayer = C.createLayerDiv(0); this._backgroundLayer.setAttribute("name", "ether-background"); this._backgroundLayer.className = "timeline-ether-bg"; this._markerLayer = null; this._lineLayer = null; var D = ("align" in this._params) ? this._params.align : this._theme.ether.interval.marker[B.isHorizontal() ? "hAlign" : "vAlign"]; var A = ("showLine" in this._params) ? this._params.showLine : this._theme.ether.interval.line.show; this._intervalMarkerLayout = new Timeline.EtherIntervalMarkerLayout( this._timeline, this._band, this._theme, D, A); this._highlight = new Timeline.EtherHighlight(this._timeline, this._band, this._theme, this._backgroundLayer); }; Timeline.YearCountEtherPainter.prototype.setHighlight = function(A, B) { this._highlight.position(A, B); }; Timeline.YearCountEtherPainter.prototype.paint = function() { if (this._markerLayer) { this._band.removeLayerDiv(this._markerLayer); } this._markerLayer = this._band.createLayerDiv(100); this._markerLayer.setAttribute("name", "ether-markers"); this._markerLayer.style.display = "none"; if (this._lineLayer) { this._band.removeLayerDiv(this._lineLayer); } this._lineLayer = this._band.createLayerDiv(1); this._lineLayer.setAttribute("name", "ether-lines"); this._lineLayer.style.display = "none"; var B = new Date(this._startDate.getTime()); var F = this._band.getMaxDate(); var E = this._band.getMinDate().getUTCFullYear() - this._startDate.getUTCFullYear(); B.setUTCFullYear(this._band.getMinDate().getUTCFullYear() - E % this._multiple); var C = this; var A = function(G) { for ( var H = 0; H < C._multiple; H++) { SimileAjax.DateTime .incrementByInterval(G, SimileAjax.DateTime.YEAR); } }; var D = { labelInterval : function(G, I) { var H = G.getUTCFullYear() - C._startDate.getUTCFullYear(); return { text : H, emphasized : H == 0 }; } }; while (B.getTime() < F.getTime()) { this._intervalMarkerLayout.createIntervalMarker(B, D, SimileAjax.DateTime.YEAR, this._markerLayer, this._lineLayer); A(B); } this._markerLayer.style.display = "block"; this._lineLayer.style.display = "block"; }; Timeline.YearCountEtherPainter.prototype.softPaint = function() { }; Timeline.QuarterlyEtherPainter = function(A) { this._params = A; this._theme = A.theme; this._startDate = SimileAjax.DateTime.parseGregorianDateTime(A.startDate); }; Timeline.QuarterlyEtherPainter.prototype.initialize = function(C, B) { this._band = C; this._timeline = B; this._backgroundLayer = C.createLayerDiv(0); this._backgroundLayer.setAttribute("name", "ether-background"); this._backgroundLayer.className = "timeline-ether-bg"; this._markerLayer = null; this._lineLayer = null; var D = ("align" in this._params) ? this._params.align : this._theme.ether.interval.marker[B.isHorizontal() ? "hAlign" : "vAlign"]; var A = ("showLine" in this._params) ? this._params.showLine : this._theme.ether.interval.line.show; this._intervalMarkerLayout = new Timeline.EtherIntervalMarkerLayout( this._timeline, this._band, this._theme, D, A); this._highlight = new Timeline.EtherHighlight(this._timeline, this._band, this._theme, this._backgroundLayer); }; Timeline.QuarterlyEtherPainter.prototype.setHighlight = function(A, B) { this._highlight.position(A, B); }; Timeline.QuarterlyEtherPainter.prototype.paint = function() { if (this._markerLayer) { this._band.removeLayerDiv(this._markerLayer); } this._markerLayer = this._band.createLayerDiv(100); this._markerLayer.setAttribute("name", "ether-markers"); this._markerLayer.style.display = "none"; if (this._lineLayer) { this._band.removeLayerDiv(this._lineLayer); } this._lineLayer = this._band.createLayerDiv(1); this._lineLayer.setAttribute("name", "ether-lines"); this._lineLayer.style.display = "none"; var B = new Date(0); var E = this._band.getMaxDate(); B.setUTCFullYear(Math.max(this._startDate.getUTCFullYear(), this._band .getMinDate().getUTCFullYear())); B.setUTCMonth(this._startDate.getUTCMonth()); var C = this; var A = function(F) { F.setUTCMonth(F.getUTCMonth() + 3); }; var D = { labelInterval : function(G, H) { var F = (4 + (G.getUTCMonth() - C._startDate.getUTCMonth()) / 3) % 4; if (F != 0) { return { text : "Q" + (F + 1), emphasized : false }; } else { return { text : "Y" + (G.getUTCFullYear() - C._startDate.getUTCFullYear() + 1), emphasized : true }; } } }; while (B.getTime() < E.getTime()) { this._intervalMarkerLayout.createIntervalMarker(B, D, SimileAjax.DateTime.YEAR, this._markerLayer, this._lineLayer); A(B); } this._markerLayer.style.display = "block"; this._lineLayer.style.display = "block"; }; Timeline.QuarterlyEtherPainter.prototype.softPaint = function() { }; Timeline.EtherIntervalMarkerLayout = function(I, L, C, E, M) { var A = I.isHorizontal(); if (A) { if (E == "Top") { this.positionDiv = function(O, N) { O.style.left = N + "px"; O.style.top = "0px"; }; } else { this.positionDiv = function(O, N) { O.style.left = N + "px"; O.style.bottom = "0px"; }; } } else { if (E == "Left") { this.positionDiv = function(O, N) { O.style.top = N + "px"; O.style.left = "0px"; }; } else { this.positionDiv = function(O, N) { O.style.top = N + "px"; O.style.right = "0px"; }; } } var D = C.ether.interval.marker; var K = C.ether.interval.line; var B = C.ether.interval.weekend; var H = (A ? "h" : "v") + E; var G = D[H + "Styler"]; var J = D[H + "EmphasizedStyler"]; var F = SimileAjax.DateTime.gregorianUnitLengths[SimileAjax.DateTime.DAY]; this.createIntervalMarker = function(T, c, a, Y, P) { var U = Math.round(L.dateToPixelOffset(T)); if (M && a != SimileAjax.DateTime.WEEK) { var V = I.getDocument().createElement("div"); V.className = "timeline-ether-lines"; if (K.opacity < 100) { SimileAjax.Graphics.setOpacity(V, K.opacity); } if (A) { V.style.left = U + "px"; } else { V.style.top = U + "px"; } P.appendChild(V); } if (a == SimileAjax.DateTime.WEEK) { var N = C.firstDayOfWeek; var R = new Date(T.getTime() + (6 - N - 7) * F); var b = new Date(R.getTime() + 2 * F); var Q = Math.round(L.dateToPixelOffset(R)); var S = Math.round(L.dateToPixelOffset(b)); var W = Math.max(1, S - Q); var X = I.getDocument().createElement("div"); X.className = "timeline-ether-weekends"; if (B.opacity < 100) { SimileAjax.Graphics.setOpacity(X, B.opacity); } if (A) { X.style.left = Q + "px"; X.style.width = W + "px"; } else { X.style.top = Q + "px"; X.style.height = W + "px"; } P.appendChild(X); } var Z = c.labelInterval(T, a); var O = I.getDocument().createElement("div"); O.innerHTML = Z.text; O.className = "timeline-date-label"; if (Z.emphasized) { O.className += " timeline-date-label-em"; } this.positionDiv(O, U); Y.appendChild(O); return O; }; }; Timeline.EtherHighlight = function(B, E, D, C) { var A = B.isHorizontal(); this._highlightDiv = null; this._createHighlightDiv = function() { if (this._highlightDiv == null) { this._highlightDiv = B.getDocument().createElement("div"); this._highlightDiv.setAttribute("name", "ether-highlight"); this._highlightDiv.className = "timeline-ether-highlight"; var F = D.ether.highlightOpacity; if (F < 100) { SimileAjax.Graphics.setOpacity(this._highlightDiv, F); } C.appendChild(this._highlightDiv); } }; this.position = function(H, J) { this._createHighlightDiv(); var I = Math.round(E.dateToPixelOffset(H)); var G = Math.round(E.dateToPixelOffset(J)); var F = Math.max(G - I, 3); if (A) { this._highlightDiv.style.left = I + "px"; this._highlightDiv.style.width = F + "px"; this._highlightDiv.style.height = (E.getViewWidth() - 4) + "px"; } else { this._highlightDiv.style.top = I + "px"; this._highlightDiv.style.height = F + "px"; this._highlightDiv.style.width = (E.getViewWidth() - 4) + "px"; } }; }; /* ethers.js */ Timeline.LinearEther = function(A) { this._params = A; this._interval = A.interval; this._pixelsPerInterval = A.pixelsPerInterval; }; Timeline.LinearEther.prototype.initialize = function(B, A) { this._band = B; this._timeline = A; this._unit = A.getUnit(); if ("startsOn" in this._params) { this._start = this._unit.parseFromObject(this._params.startsOn); } else { if ("endsOn" in this._params) { this._start = this._unit.parseFromObject(this._params.endsOn); this.shiftPixels(-this._timeline.getPixelLength()); } else { if ("centersOn" in this._params) { this._start = this._unit .parseFromObject(this._params.centersOn); this.shiftPixels(-this._timeline.getPixelLength() / 2); } else { this._start = this._unit.makeDefaultValue(); this.shiftPixels(-this._timeline.getPixelLength() / 2); } } } }; Timeline.LinearEther.prototype.setDate = function(A) { this._start = this._unit.cloneValue(A); }; Timeline.LinearEther.prototype.shiftPixels = function(B) { var A = this._interval * B / this._pixelsPerInterval; this._start = this._unit.change(this._start, A); }; Timeline.LinearEther.prototype.dateToPixelOffset = function(B) { var A = this._unit.compare(B, this._start); return this._pixelsPerInterval * A / this._interval; }; Timeline.LinearEther.prototype.pixelOffsetToDate = function(B) { var A = B * this._interval / this._pixelsPerInterval; return this._unit.change(this._start, A); }; Timeline.LinearEther.prototype.zoom = function(D) { var A = 0; var B = this._band._zoomIndex; var C = B; if (D && (B > 0)) { C = B - 1; } if (!D && (B < (this._band._zoomSteps.length - 1))) { C = B + 1; } this._band._zoomIndex = C; this._interval = SimileAjax.DateTime.gregorianUnitLengths[this._band._zoomSteps[C].unit]; this._pixelsPerInterval = this._band._zoomSteps[C].pixelsPerInterval; A = this._band._zoomSteps[C].unit - this._band._zoomSteps[B].unit; return A; }; Timeline.HotZoneEther = function(A) { this._params = A; this._interval = A.interval; this._pixelsPerInterval = A.pixelsPerInterval; this._theme = A.theme; }; Timeline.HotZoneEther.prototype.initialize = function(I, H) { this._band = I; this._timeline = H; this._unit = H.getUnit(); this._zones = [ { startTime : Number.NEGATIVE_INFINITY, endTime : Number.POSITIVE_INFINITY, magnify : 1 } ]; var D = this._params; for ( var E = 0; E < D.zones.length; E++) { var G = D.zones[E]; var F = this._unit.parseFromObject(G.start); var B = this._unit.parseFromObject(G.end); for ( var C = 0; C < this._zones.length && this._unit.compare(B, F) > 0; C++) { var A = this._zones[C]; if (this._unit.compare(F, A.endTime) < 0) { if (this._unit.compare(F, A.startTime) > 0) { this._zones.splice(C, 0, { startTime : A.startTime, endTime : F, magnify : A.magnify }); C++; A.startTime = F; } if (this._unit.compare(B, A.endTime) < 0) { this._zones.splice(C, 0, { startTime : F, endTime : B, magnify : G.magnify * A.magnify }); C++; A.startTime = B; F = B; } else { A.magnify *= G.magnify; F = A.endTime; } } } } if ("startsOn" in this._params) { this._start = this._unit.parseFromObject(this._params.startsOn); } else { if ("endsOn" in this._params) { this._start = this._unit.parseFromObject(this._params.endsOn); this.shiftPixels(-this._timeline.getPixelLength()); } else { if ("centersOn" in this._params) { this._start = this._unit .parseFromObject(this._params.centersOn); this.shiftPixels(-this._timeline.getPixelLength() / 2); } else { this._start = this._unit.makeDefaultValue(); this.shiftPixels(-this._timeline.getPixelLength() / 2); } } } }; Timeline.HotZoneEther.prototype.setDate = function(A) { this._start = this._unit.cloneValue(A); }; Timeline.HotZoneEther.prototype.shiftPixels = function(A) { this._start = this.pixelOffsetToDate(A); }; Timeline.HotZoneEther.prototype.dateToPixelOffset = function(A) { return this._dateDiffToPixelOffset(this._start, A); }; Timeline.HotZoneEther.prototype.pixelOffsetToDate = function(A) { return this._pixelOffsetToDate(A, this._start); }; Timeline.HotZoneEther.prototype.zoom = function(D) { var A = 0; var B = this._band._zoomIndex; var C = B; if (D && (B > 0)) { C = B - 1; } if (!D && (B < (this._band._zoomSteps.length - 1))) { C = B + 1; } this._band._zoomIndex = C; this._interval = SimileAjax.DateTime.gregorianUnitLengths[this._band._zoomSteps[C].unit]; this._pixelsPerInterval = this._band._zoomSteps[C].pixelsPerInterval; A = this._band._zoomSteps[C].unit - this._band._zoomSteps[B].unit; return A; }; Timeline.HotZoneEther.prototype._dateDiffToPixelOffset = function(H, C) { var D = this._getScale(); var I = H; var B = C; var E = 0; if (this._unit.compare(I, B) < 0) { var G = 0; while (G < this._zones.length) { if (this._unit.compare(I, this._zones[G].endTime) < 0) { break; } G++; } while (this._unit.compare(I, B) < 0) { var F = this._zones[G]; var A = this._unit.earlier(B, F.endTime); E += (this._unit.compare(A, I) / (D / F.magnify)); I = A; G++; } } else { var G = this._zones.length - 1; while (G >= 0) { if (this._unit.compare(I, this._zones[G].startTime) > 0) { break; } G--; } while (this._unit.compare(I, B) > 0) { var F = this._zones[G]; var A = this._unit.later(B, F.startTime); E += (this._unit.compare(A, I) / (D / F.magnify)); I = A; G--; } } return E; }; Timeline.HotZoneEther.prototype._pixelOffsetToDate = function(E, B) { var G = this._getScale(); var D = B; if (E > 0) { var F = 0; while (F < this._zones.length) { if (this._unit.compare(D, this._zones[F].endTime) < 0) { break; } F++; } while (E > 0) { var A = this._zones[F]; var H = G / A.magnify; if (A.endTime == Number.POSITIVE_INFINITY) { D = this._unit.change(D, E * H); E = 0; } else { var C = this._unit.compare(A.endTime, D) / H; if (C > E) { D = this._unit.change(D, E * H); E = 0; } else { D = A.endTime; E -= C; } } F++; } } else { var F = this._zones.length - 1; while (F >= 0) { if (this._unit.compare(D, this._zones[F].startTime) > 0) { break; } F--; } E = -E; while (E > 0) { var A = this._zones[F]; var H = G / A.magnify; if (A.startTime == Number.NEGATIVE_INFINITY) { D = this._unit.change(D, -E * H); E = 0; } else { var C = this._unit.compare(D, A.startTime) / H; if (C > E) { D = this._unit.change(D, -E * H); E = 0; } else { D = A.startTime; E -= C; } } F--; } } return D; }; Timeline.HotZoneEther.prototype._getScale = function() { return this._interval / this._pixelsPerInterval; }; /* event-utils.js */ Timeline.EventUtils = {}; Timeline.EventUtils.getNewEventID = function() { if (this._lastEventID == null) { this._lastEventID = 0; } this._lastEventID += 1; return "e" + this._lastEventID; }; Timeline.EventUtils.decodeEventElID = function(C) { var D = C.split("-"); if (D[1] != "tl") { alert("Internal Timeline problem 101, please consult support"); return { band : null, evt : null }; } var B = Timeline.getTimelineFromID(D[2]); var E = B.getBand(D[3]); var A = E.getEventSource.getEvent(D[4]); return { band : E, evt : A }; }; Timeline.EventUtils.encodeEventElID = function(B, D, C, A) { return C + "-tl-" + B.timelineID + "-" + D.getIndex() + "-" + A.getID(); }; /* labellers.js */ Timeline.GregorianDateLabeller = function(B, A) { this._locale = B; this._timeZone = A; }; Timeline.GregorianDateLabeller.monthNames = []; Timeline.GregorianDateLabeller.dayNames = []; Timeline.GregorianDateLabeller.labelIntervalFunctions = []; Timeline.GregorianDateLabeller.getMonthName = function(B, A) { return Timeline.GregorianDateLabeller.monthNames[A][B]; }; Timeline.GregorianDateLabeller.prototype.labelInterval = function(A, C) { var B = Timeline.GregorianDateLabeller.labelIntervalFunctions[this._locale]; if (B == null) { B = Timeline.GregorianDateLabeller.prototype.defaultLabelInterval; } return B.call(this, A, C); }; Timeline.GregorianDateLabeller.prototype.labelPrecise = function(A) { return SimileAjax.DateTime.removeTimeZoneOffset(A, this._timeZone) .toUTCString(); }; Timeline.GregorianDateLabeller.prototype.defaultLabelInterval = function(B, C) { var D; var F = false; B = SimileAjax.DateTime.removeTimeZoneOffset(B, this._timeZone); switch (C) { case SimileAjax.DateTime.MILLISECOND: D = B.getUTCMilliseconds(); break; case SimileAjax.DateTime.SECOND: D = B.getUTCSeconds(); break; case SimileAjax.DateTime.MINUTE: var A = B.getUTCMinutes(); if (A == 0) { D = B.getUTCHours() + ":00"; F = true; } else { D = A; } break; case SimileAjax.DateTime.HOUR: D = B.getUTCHours() + "hr"; break; case SimileAjax.DateTime.DAY: D = Timeline.GregorianDateLabeller.getMonthName(B.getUTCMonth(), this._locale) + " " + B.getUTCDate(); break; case SimileAjax.DateTime.WEEK: D = Timeline.GregorianDateLabeller.getMonthName(B.getUTCMonth(), this._locale) + " " + B.getUTCDate(); break; case SimileAjax.DateTime.MONTH: var A = B.getUTCMonth(); if (A != 0) { D = Timeline.GregorianDateLabeller.getMonthName(A, this._locale); break; } case SimileAjax.DateTime.YEAR: case SimileAjax.DateTime.DECADE: case SimileAjax.DateTime.CENTURY: case SimileAjax.DateTime.MILLENNIUM: var E = B.getUTCFullYear(); if (E > 0) { D = B.getUTCFullYear(); } else { D = (1 - E) + "BC"; } F = (C == SimileAjax.DateTime.MONTH) || (C == SimileAjax.DateTime.DECADE && E % 100 == 0) || (C == SimileAjax.DateTime.CENTURY && E % 1000 == 0); break; default: D = B.toUTCString(); } return { text : D, emphasized : F }; }; /* original-painter.js */ Timeline.OriginalEventPainter = function(A) { this._params = A; this._onSelectListeners = []; this._eventPaintListeners = []; this._filterMatcher = null; this._highlightMatcher = null; this._frc = null; this._eventIdToElmt = {}; }; Timeline.OriginalEventPainter.prototype.initialize = function(B, A) { this._band = B; this._timeline = A; this._backLayer = null; this._eventLayer = null; this._lineLayer = null; this._highlightLayer = null; this._eventIdToElmt = null; }; Timeline.OriginalEventPainter.prototype.getType = function() { return "original"; }; Timeline.OriginalEventPainter.prototype.addOnSelectListener = function(A) { this._onSelectListeners.push(A); }; Timeline.OriginalEventPainter.prototype.removeOnSelectListener = function(B) { for ( var A = 0; A < this._onSelectListeners.length; A++) { if (this._onSelectListeners[A] == B) { this._onSelectListeners.splice(A, 1); break; } } }; Timeline.OriginalEventPainter.prototype.addEventPaintListener = function(A) { this._eventPaintListeners.push(A); }; Timeline.OriginalEventPainter.prototype.removeEventPaintListener = function(B) { for ( var A = 0; A < this._eventPaintListeners.length; A++) { if (this._eventPaintListeners[A] == B) { this._eventPaintListeners.splice(A, 1); break; } } }; Timeline.OriginalEventPainter.prototype.getFilterMatcher = function() { return this._filterMatcher; }; Timeline.OriginalEventPainter.prototype.setFilterMatcher = function(A) { this._filterMatcher = A; }; Timeline.OriginalEventPainter.prototype.getHighlightMatcher = function() { return this._highlightMatcher; }; Timeline.OriginalEventPainter.prototype.setHighlightMatcher = function(A) { this._highlightMatcher = A; }; Timeline.OriginalEventPainter.prototype.paint = function() { var C = this._band.getEventSource(); if (C == null) { return; } this._eventIdToElmt = {}; this._fireEventPaintListeners("paintStarting", null, null); this._prepareForPainting(); var I = this._params.theme.event; var G = Math.max(I.track.height, I.tape.height + this._frc.getLineHeight()); var F = { trackOffset : I.track.offset, trackHeight : G, trackGap : I.track.gap, trackIncrement : G + I.track.gap, icon : I.instant.icon, iconWidth : I.instant.iconWidth, iconHeight : I.instant.iconHeight, labelWidth : I.label.width, maxLabelChar : I.label.maxLabelChar, impreciseIconMargin : I.instant.impreciseIconMargin }; var D = this._band.getMinDate(); var B = this._band.getMaxDate(); var J = (this._filterMatcher != null) ? this._filterMatcher : function(K) { return true; }; var A = (this._highlightMatcher != null) ? this._highlightMatcher : function(K) { return -1; }; var E = C.getEventReverseIterator(D, B); while (E.hasNext()) { var H = E.next(); if (J(H)) { this.paintEvent(H, F, this._params.theme, A(H)); } } this._highlightLayer.style.display = "block"; this._lineLayer.style.display = "block"; this._eventLayer.style.display = "block"; this._band.updateEventTrackInfo(this._tracks.length, F.trackIncrement); this._fireEventPaintListeners("paintEnded", null, null); }; Timeline.OriginalEventPainter.prototype.softPaint = function() { }; Timeline.OriginalEventPainter.prototype._prepareForPainting = function() { var B = this._band; if (this._backLayer == null) { this._backLayer = this._band.createLayerDiv(0, "timeline-band-events"); this._backLayer.style.visibility = "hidden"; var A = document.createElement("span"); A.className = "timeline-event-label"; this._backLayer.appendChild(A); this._frc = SimileAjax.Graphics.getFontRenderingContext(A); } this._frc.update(); this._tracks = []; if (this._highlightLayer != null) { B.removeLayerDiv(this._highlightLayer); } this._highlightLayer = B.createLayerDiv(105, "timeline-band-highlights"); this._highlightLayer.style.display = "none"; if (this._lineLayer != null) { B.removeLayerDiv(this._lineLayer); } this._lineLayer = B.createLayerDiv(110, "timeline-band-lines"); this._lineLayer.style.display = "none"; if (this._eventLayer != null) { B.removeLayerDiv(this._eventLayer); } this._eventLayer = B.createLayerDiv(115, "timeline-band-events"); this._eventLayer.style.display = "none"; }; Timeline.OriginalEventPainter.prototype.paintEvent = function(B, C, D, A) { if (B.isInstant()) { this.paintInstantEvent(B, C, D, A); } else { this.paintDurationEvent(B, C, D, A); } }; Timeline.OriginalEventPainter.prototype.paintInstantEvent = function(B, C, D, A) { if (B.isImprecise()) { this.paintImpreciseInstantEvent(B, C, D, A); } else { this.paintPreciseInstantEvent(B, C, D, A); } }; Timeline.OriginalEventPainter.prototype.paintDurationEvent = function(B, C, D, A) { if (B.isImprecise()) { this.paintImpreciseDurationEvent(B, C, D, A); } else { this.paintPreciseDurationEvent(B, C, D, A); } }; Timeline.OriginalEventPainter.prototype.paintPreciseInstantEvent = function(N, S, V, T) { var W = this._timeline.getDocument(); var L = N.getText(); var H = N.getStart(); var I = Math.round(this._band.dateToPixelOffset(H)); var A = Math.round(I + S.iconWidth / 2); var C = Math.round(I - S.iconWidth / 2); var F = this._getLabelDivClassName(N); var D = this._frc.computeSize(L, F); var M = A + V.event.label.offsetFromLine; var J = M + D.width; var Q = J; var P = this._findFreeTrack(N, Q); var R = Math.round(S.trackOffset + P * S.trackIncrement + S.trackHeight / 2 - D.height / 2); var B = this._paintEventIcon(N, P, C, S, V, 0); var U = this._paintEventLabel(N, L, M, R, D.width, D.height, V, F, T); var E = [ B.elmt, U.elmt ]; var O = this; var K = function(Y, X, Z) { return O._onClickInstantEvent(B.elmt, X, N); }; SimileAjax.DOM.registerEvent(B.elmt, "mousedown", K); SimileAjax.DOM.registerEvent(U.elmt, "mousedown", K); var G = this._createHighlightDiv(T, B, V, N); if (G != null) { E.push(G); } this._fireEventPaintListeners("paintedEvent", N, E); this._eventIdToElmt[N.getID()] = B.elmt; this._tracks[P] = C; }; Timeline.OriginalEventPainter.prototype.paintImpreciseInstantEvent = function( P, U, Z, W) { var b = this._timeline.getDocument(); var N = P.getText(); var J = P.getStart(); var X = P.getEnd(); var K = Math.round(this._band.dateToPixelOffset(J)); var B = Math.round(this._band.dateToPixelOffset(X)); var A = Math.round(K + U.iconWidth / 2); var D = Math.round(K - U.iconWidth / 2); var H = this._getLabelDivClassName(P); var F = this._frc.computeSize(N, H); var O = A + Z.event.label.offsetFromLine; var L = O + F.width; var S = Math.max(L, B); var R = this._findFreeTrack(P, S); var a = Z.event.tape.height; var T = Math.round(U.trackOffset + R * U.trackIncrement + a); var C = this._paintEventIcon(P, R, D, U, Z, a); var Y = this._paintEventLabel(P, N, O, T, F.width, F.height, Z, H, W); var V = P.getColor(); V = V != null ? V : Z.event.instant.impreciseColor; var E = this._paintEventTape(P, R, K, B, V, Z.event.instant.impreciseOpacity, U, Z, 0); var G = [ C.elmt, Y.elmt, E.elmt ]; var Q = this; var M = function(d, c, e) { return Q._onClickInstantEvent(C.elmt, c, P); }; SimileAjax.DOM.registerEvent(C.elmt, "mousedown", M); SimileAjax.DOM.registerEvent(E.elmt, "mousedown", M); SimileAjax.DOM.registerEvent(Y.elmt, "mousedown", M); var I = this._createHighlightDiv(W, C, Z, P); if (I != null) { G.push(I); } this._fireEventPaintListeners("paintedEvent", P, G); this._eventIdToElmt[P.getID()] = C.elmt; this._tracks[R] = D; }; Timeline.OriginalEventPainter.prototype.paintPreciseDurationEvent = function(M, R, W, T) { var X = this._timeline.getDocument(); var K = M.getText(); var G = M.getStart(); var U = M.getEnd(); var H = Math.round(this._band.dateToPixelOffset(G)); var A = Math.round(this._band.dateToPixelOffset(U)); var E = this._getLabelDivClassName(M); var C = this._frc.computeSize(K, E); var L = H; var I = L + C.width; var P = Math.max(I, A); var O = this._findFreeTrack(M, P); var Q = Math.round(R.trackOffset + O * R.trackIncrement + W.event.tape.height); var S = M.getColor(); S = S != null ? S : W.event.duration.color; var B = this._paintEventTape(M, O, H, A, S, 100, R, W, 0); var V = this._paintEventLabel(M, K, L, Q, C.width, C.height, W, E, T); var D = [ B.elmt, V.elmt ]; var N = this; var J = function(Z, Y, a) { return N._onClickDurationEvent(B.elmt, Y, M); }; SimileAjax.DOM.registerEvent(B.elmt, "mousedown", J); SimileAjax.DOM.registerEvent(V.elmt, "mousedown", J); var F = this._createHighlightDiv(T, B, W, M); if (F != null) { D.push(F); } this._fireEventPaintListeners("paintedEvent", M, D); this._eventIdToElmt[M.getID()] = B.elmt; this._tracks[O] = H; }; Timeline.OriginalEventPainter.prototype.paintImpreciseDurationEvent = function( O, W, b, Y) { var c = this._timeline.getDocument(); var M = O.getText(); var I = O.getStart(); var V = O.getLatestStart(); var Z = O.getEnd(); var Q = O.getEarliestEnd(); var K = Math.round(this._band.dateToPixelOffset(I)); var F = Math.round(this._band.dateToPixelOffset(V)); var A = Math.round(this._band.dateToPixelOffset(Z)); var G = Math.round(this._band.dateToPixelOffset(Q)); var E = this._getLabelDivClassName(O); var C = this._frc.computeSize(M, E); var N = F; var J = N + C.width; var S = Math.max(J, A); var R = this._findFreeTrack(O, S); var T = Math.round(W.trackOffset + R * W.trackIncrement + b.event.tape.height); var X = O.getColor(); X = X != null ? X : b.event.duration.color; var U = this._paintEventTape(O, R, K, A, b.event.duration.impreciseColor, b.event.duration.impreciseOpacity, W, b, 0); var B = this._paintEventTape(O, R, F, G, X, 100, W, b, 1); var a = this._paintEventLabel(O, M, N, T, C.width, C.height, b, E, Y); var D = [ U.elmt, B.elmt, a.elmt ]; var P = this; var L = function(e, d, f) { return P._onClickDurationEvent(B.elmt, d, O); }; SimileAjax.DOM.registerEvent(B.elmt, "mousedown", L); SimileAjax.DOM.registerEvent(a.elmt, "mousedown", L); var H = this._createHighlightDiv(Y, B, b, O); if (H != null) { D.push(H); } this._fireEventPaintListeners("paintedEvent", O, D); this._eventIdToElmt[O.getID()] = B.elmt; this._tracks[R] = K; }; Timeline.OriginalEventPainter.prototype._encodeEventElID = function(B, A) { return Timeline.EventUtils .encodeEventElID(this._timeline, this._band, B, A); }; Timeline.OriginalEventPainter.prototype._findFreeTrack = function(E, D) { var A = E.getTrackNum(); if (A != null) { return A; } for ( var C = 0; C < this._tracks.length; C++) { var B = this._tracks[C]; if (B > D) { break; } } return C; }; Timeline.OriginalEventPainter.prototype._paintEventIcon = function(K, B, C, G, F, D) { var I = K.getIcon(); I = I != null ? I : G.icon; var J; if (D > 0) { J = G.trackOffset + B * G.trackIncrement + D + G.impreciseIconMargin; } else { var H = G.trackOffset + B * G.trackIncrement + G.trackHeight / 2; J = Math.round(H - G.iconHeight / 2); } var E = SimileAjax.Graphics.createTranslucentImage(I); var A = this._timeline.getDocument().createElement("div"); A.className = this._getElClassName("timeline-event-icon", K, "icon"); A.id = this._encodeEventElID("icon", K); A.style.left = C + "px"; A.style.top = J + "px"; A.appendChild(E); if (K._title != null) { A.title = K._title; } this._eventLayer.appendChild(A); return { left : C, top : J, width : G.iconWidth, height : G.iconHeight, elmt : A }; }; Timeline.OriginalEventPainter.prototype._paintEventLabel = function(K, L, D, H, A, J, G, E, C) { var I = this._timeline.getDocument(); var B = I.createElement("div"); B.className = E; B.id = this._encodeEventElID("label", K); B.style.left = D + "px"; B.style.width = A + "px"; B.style.top = H + "px"; B.innerHTML = L; if (K._title != null) { B.title = K._title; } var F = K.getTextColor(); if (F == null) { F = K.getColor(); } if (F != null) { B.style.color = F; } if (G.event.highlightLabelBackground && C >= 0) { B.style.background = this._getHighlightColor(C, G); } this._eventLayer.appendChild(B); return { left : D, top : H, width : A, height : J, elmt : B }; }; Timeline.OriginalEventPainter.prototype._paintEventTape = function(N, B, D, A, G, C, J, I, M) { var F = A - D; var E = I.event.tape.height; var K = J.trackOffset + B * J.trackIncrement; var O = this._timeline.getDocument().createElement("div"); O.className = this._getElClassName("timeline-event-tape", N, "tape"); O.id = this._encodeEventElID("tape" + M, N); O.style.left = D + "px"; O.style.width = F + "px"; O.style.height = E + "px"; O.style.top = K + "px"; if (N._title != null) { O.title = N._title; } if (G != null) { O.style.backgroundColor = G; } var L = N.getTapeImage(); var H = N.getTapeRepeat(); H = H != null ? H : "repeat"; if (L != null) { O.style.backgroundImage = "url(" + L + ")"; O.style.backgroundRepeat = H; } SimileAjax.Graphics.setOpacity(O, C); this._eventLayer.appendChild(O); return { left : D, top : K, width : F, height : E, elmt : O }; }; Timeline.OriginalEventPainter.prototype._getLabelDivClassName = function(A) { return this._getElClassName("timeline-event-label", A, "label"); }; Timeline.OriginalEventPainter.prototype._getElClassName = function(D, C, A) { var E = C.getClassName(), B = []; if (E) { if (A) { B.push(A + "-" + E + " "); } B.push(E + " "); } B.push(D); return (B.join("")); }; Timeline.OriginalEventPainter.prototype._getHighlightColor = function(A, B) { var C = B.event.highlightColors; return C[Math.min(A, C.length - 1)]; }; Timeline.OriginalEventPainter.prototype._createHighlightDiv = function(A, D, F, B) { var G = null; if (A >= 0) { var E = this._timeline.getDocument(); var C = this._getHighlightColor(A, F); G = E.createElement("div"); G.className = this._getElClassName("timeline-event-highlight", B, "highlight"); G.id = this._encodeEventElID("highlight0", B); G.style.position = "absolute"; G.style.overflow = "hidden"; G.style.left = (D.left - 2) + "px"; G.style.width = (D.width + 4) + "px"; G.style.top = (D.top - 2) + "px"; G.style.height = (D.height + 4) + "px"; G.style.background = C; this._highlightLayer.appendChild(G); } return G; }; Timeline.OriginalEventPainter.prototype._onClickInstantEvent = function(C, A, B) { var D = SimileAjax.DOM.getPageCoordinates(C); this._showBubble(D.left + Math.ceil(C.offsetWidth / 2), D.top + Math.ceil(C.offsetHeight / 2), B); this._fireOnSelect(B.getID()); A.cancelBubble = true; SimileAjax.DOM.cancelEvent(A); return false; }; Timeline.OriginalEventPainter.prototype._onClickDurationEvent = function(F, B, C) { if ("pageX" in B) { var A = B.pageX; var E = B.pageY; } else { var D = SimileAjax.DOM.getPageCoordinates(F); var A = B.offsetX + D.left; var E = B.offsetY + D.top; } this._showBubble(A, E, C); this._fireOnSelect(C.getID()); B.cancelBubble = true; SimileAjax.DOM.cancelEvent(B); return false; }; Timeline.OriginalEventPainter.prototype.showBubble = function(A) { var B = this._eventIdToElmt[A.getID()]; if (B) { var C = SimileAjax.DOM.getPageCoordinates(B); this._showBubble(C.left + B.offsetWidth / 2, C.top + B.offsetHeight / 2, A); } }; Timeline.OriginalEventPainter.prototype._showBubble = function(B, E, C) { var D = document.createElement("div"); var A = this._params.theme.event.bubble; C.fillInfoBubble(D, this._params.theme, this._band.getLabeller()); SimileAjax.WindowManager.cancelPopups(); SimileAjax.Graphics.createBubbleForContentAndPoint(D, B, E, A.width, null, A.maxHeight); }; Timeline.OriginalEventPainter.prototype._fireOnSelect = function(A) { for ( var B = 0; B < this._onSelectListeners.length; B++) { this._onSelectListeners[B](A); } }; Timeline.OriginalEventPainter.prototype._fireEventPaintListeners = function(D, A, C) { for ( var B = 0; B < this._eventPaintListeners.length; B++) { this._eventPaintListeners[B](this._band, D, A, C); } }; /* overview-painter.js */ Timeline.OverviewEventPainter = function(A) { this._params = A; this._onSelectListeners = []; this._filterMatcher = null; this._highlightMatcher = null; }; Timeline.OverviewEventPainter.prototype.initialize = function(B, A) { this._band = B; this._timeline = A; this._eventLayer = null; this._highlightLayer = null; }; Timeline.OverviewEventPainter.prototype.getType = function() { return "overview"; }; Timeline.OverviewEventPainter.prototype.addOnSelectListener = function(A) { this._onSelectListeners.push(A); }; Timeline.OverviewEventPainter.prototype.removeOnSelectListener = function(B) { for ( var A = 0; A < this._onSelectListeners.length; A++) { if (this._onSelectListeners[A] == B) { this._onSelectListeners.splice(A, 1); break; } } }; Timeline.OverviewEventPainter.prototype.getFilterMatcher = function() { return this._filterMatcher; }; Timeline.OverviewEventPainter.prototype.setFilterMatcher = function(A) { this._filterMatcher = A; }; Timeline.OverviewEventPainter.prototype.getHighlightMatcher = function() { return this._highlightMatcher; }; Timeline.OverviewEventPainter.prototype.setHighlightMatcher = function(A) { this._highlightMatcher = A; }; Timeline.OverviewEventPainter.prototype.paint = function() { var C = this._band.getEventSource(); if (C == null) { return; } this._prepareForPainting(); var H = this._params.theme.event; var F = { trackOffset : H.overviewTrack.offset, trackHeight : H.overviewTrack.height, trackGap : H.overviewTrack.gap, trackIncrement : H.overviewTrack.height + H.overviewTrack.gap }; var D = this._band.getMinDate(); var B = this._band.getMaxDate(); var I = (this._filterMatcher != null) ? this._filterMatcher : function(J) { return true; }; var A = (this._highlightMatcher != null) ? this._highlightMatcher : function(J) { return -1; }; var E = C.getEventReverseIterator(D, B); while (E.hasNext()) { var G = E.next(); if (I(G)) { this.paintEvent(G, F, this._params.theme, A(G)); } } this._highlightLayer.style.display = "block"; this._eventLayer.style.display = "block"; this._band.updateEventTrackInfo(this._tracks.length, F.trackIncrement); }; Timeline.OverviewEventPainter.prototype.softPaint = function() { }; Timeline.OverviewEventPainter.prototype._prepareForPainting = function() { var A = this._band; this._tracks = []; if (this._highlightLayer != null) { A.removeLayerDiv(this._highlightLayer); } this._highlightLayer = A.createLayerDiv(105, "timeline-band-highlights"); this._highlightLayer.style.display = "none"; if (this._eventLayer != null) { A.removeLayerDiv(this._eventLayer); } this._eventLayer = A.createLayerDiv(110, "timeline-band-events"); this._eventLayer.style.display = "none"; }; Timeline.OverviewEventPainter.prototype.paintEvent = function(B, C, D, A) { if (B.isInstant()) { this.paintInstantEvent(B, C, D, A); } else { this.paintDurationEvent(B, C, D, A); } }; Timeline.OverviewEventPainter.prototype.paintInstantEvent = function(I, H, E, A) { var F = I.getStart(); var B = Math.round(this._band.dateToPixelOffset(F)); var C = I.getColor(), D = I.getClassName(); if (D) { C = null; } else { C = C != null ? C : E.event.duration.color; } var G = this._paintEventTick(I, B, C, 100, H, E); this._createHighlightDiv(A, G, E); }; Timeline.OverviewEventPainter.prototype.paintDurationEvent = function(L, K, H, B) { var A = L.getLatestStart(); var I = L.getEarliestEnd(); var J = Math.round(this._band.dateToPixelOffset(A)); var C = Math.round(this._band.dateToPixelOffset(I)); var F = 0; for (; F < this._tracks.length; F++) { if (C < this._tracks[F]) { break; } } this._tracks[F] = C; var E = L.getColor(), G = L.getClassName(); if (G) { E = null; } else { E = E != null ? E : H.event.duration.color; } var D = this._paintEventTape(L, F, J, C, E, 100, K, H, G); this._createHighlightDiv(B, D, H); }; Timeline.OverviewEventPainter.prototype._paintEventTape = function(K, B, D, L, E, C, H, G, F) { var I = H.trackOffset + B * H.trackIncrement; var A = L - D; var J = H.trackHeight; var M = this._timeline.getDocument().createElement("div"); M.className = "timeline-small-event-tape"; if (F) { M.className += " small-" + F; } M.style.left = D + "px"; M.style.width = A + "px"; M.style.top = I + "px"; M.style.height = J + "px"; if (E) { M.style.backgroundColor = E; } if (C < 100) { SimileAjax.Graphics.setOpacity(M, C); } this._eventLayer.appendChild(M); return { left : D, top : I, width : A, height : J, elmt : M }; }; Timeline.OverviewEventPainter.prototype._paintEventTick = function(J, C, D, B, G, F) { var I = F.event.overviewTrack.tickHeight; var H = G.trackOffset - I; var A = 1; var K = this._timeline.getDocument().createElement("div"); K.className = "timeline-small-event-icon"; K.style.left = C + "px"; K.style.top = H + "px"; var E = J.getClassName(); if (E) { K.className += " small-" + E; } if (B < 100) { SimileAjax.Graphics.setOpacity(K, B); } this._eventLayer.appendChild(K); return { left : C, top : H, width : A, height : I, elmt : K }; }; Timeline.OverviewEventPainter.prototype._createHighlightDiv = function(A, C, E) { if (A >= 0) { var D = this._timeline.getDocument(); var G = E.event; var B = G.highlightColors[Math.min(A, G.highlightColors.length - 1)]; var F = D.createElement("div"); F.style.position = "absolute"; F.style.overflow = "hidden"; F.style.left = (C.left - 1) + "px"; F.style.width = (C.width + 2) + "px"; F.style.top = (C.top - 1) + "px"; F.style.height = (C.height + 2) + "px"; F.style.background = B; this._highlightLayer.appendChild(F); } }; Timeline.OverviewEventPainter.prototype.showBubble = function(A) { }; /* sources.js */ Timeline.DefaultEventSource = function(A) { this._events = (A instanceof Object) ? A : new SimileAjax.EventIndex(); this._listeners = []; }; Timeline.DefaultEventSource.prototype.addListener = function(A) { this._listeners.push(A); }; Timeline.DefaultEventSource.prototype.removeListener = function(B) { for ( var A = 0; A < this._listeners.length; A++) { if (this._listeners[A] == B) { this._listeners.splice(A, 1); break; } } }; Timeline.DefaultEventSource.prototype.loadXML = function(G, A) { var C = this._getBaseURL(A); var H = G.documentElement.getAttribute("wiki-url"); var J = G.documentElement.getAttribute("wiki-section"); var F = G.documentElement.getAttribute("date-time-format"); var E = this._events.getUnit().getParser(F); var D = G.documentElement.firstChild; var I = false; while (D != null) { if (D.nodeType == 1) { var L = ""; if (D.firstChild != null && D.firstChild.nodeType == 3) { L = D.firstChild.nodeValue; } var B = (D.getAttribute("isDuration") === null && D .getAttribute("durationEvent") === null) || D.getAttribute("isDuration") == "false" || D.getAttribute("durationEvent") == "false"; var K = new Timeline.DefaultEventSource.Event({ id : D.getAttribute("id"), start : E(D.getAttribute("start")), end : E(D.getAttribute("end")), latestStart : E(D.getAttribute("latestStart")), earliestEnd : E(D.getAttribute("earliestEnd")), instant : B, text : D.getAttribute("title"), description : L, image : this._resolveRelativeURL(D.getAttribute("image"), C), link : this._resolveRelativeURL(D.getAttribute("link"), C), icon : this._resolveRelativeURL(D.getAttribute("icon"), C), color : D.getAttribute("color"), textColor : D.getAttribute("textColor"), hoverText : D.getAttribute("hoverText"), classname : D.getAttribute("classname"), tapeImage : D.getAttribute("tapeImage"), tapeRepeat : D.getAttribute("tapeRepeat"), caption : D.getAttribute("caption"), eventID : D.getAttribute("eventID"), trackNum : D.getAttribute("trackNum") }); K._node = D; K.getProperty = function(M) { return this._node.getAttribute(M); }; K.setWikiInfo(H, J); this._events.add(K); I = true; } D = D.nextSibling; } if (I) { this._fire("onAddMany", []); } }; Timeline.DefaultEventSource.prototype.loadJSON = function(H, B) { var D = this._getBaseURL(B); var J = false; if (H && H.events) { var I = ("wikiURL" in H) ? H.wikiURL : null; var K = ("wikiSection" in H) ? H.wikiSection : null; var F = ("dateTimeFormat" in H) ? H.dateTimeFormat : null; var E = this._events.getUnit().getParser(F); for ( var G = 0; G < H.events.length; G++) { var A = H.events[G]; var C = A.isDuration || (A.durationEvent != null && !A.durationEvent); var L = new Timeline.DefaultEventSource.Event({ id : ("id" in A) ? A.id : undefined, start : E(A.start), end : E(A.end), latestStart : E(A.latestStart), earliestEnd : E(A.earliestEnd), instant : C, text : A.title, description : A.description, image : this._resolveRelativeURL(A.image, D), link : this._resolveRelativeURL(A.link, D), icon : this._resolveRelativeURL(A.icon, D), color : A.color, textColor : A.textColor, hoverText : A.hoverText, classname : A.classname, tapeImage : A.tapeImage, tapeRepeat : A.tapeRepeat, caption : A.caption, eventID : A.eventID, trackNum : A.trackNum }); L._obj = A; L.getProperty = function(M) { return this._obj[M]; }; L.setWikiInfo(I, K); this._events.add(L); J = true; } } if (J) { this._fire("onAddMany", []); } }; Timeline.DefaultEventSource.prototype.loadSPARQL = function(I, B) { var E = this._getBaseURL(B); var H = "iso8601"; var G = this._events.getUnit().getParser(H); if (I == null) { return; } var F = I.documentElement.firstChild; while (F != null && (F.nodeType != 1 || F.nodeName != "results")) { F = F.nextSibling; } var J = null; var L = null; if (F != null) { J = F.getAttribute("wiki-url"); L = F.getAttribute("wiki-section"); F = F.firstChild; } var K = false; while (F != null) { if (F.nodeType == 1) { var D = {}; var A = F.firstChild; while (A != null) { if (A.nodeType == 1 && A.firstChild != null && A.firstChild.nodeType == 1 && A.firstChild.firstChild != null && A.firstChild.firstChild.nodeType == 3) { D[A.getAttribute("name")] = A.firstChild.firstChild.nodeValue; } A = A.nextSibling; } if (D["start"] == null && D["date"] != null) { D["start"] = D["date"]; } var C = (D["isDuration"] === null && D["durationEvent"] === null) || D["isDuration"] == "false" || D["durationEvent"] == "false"; var M = new Timeline.DefaultEventSource.Event({ id : D["id"], start : G(D["start"]), end : G(D["end"]), latestStart : G(D["latestStart"]), earliestEnd : G(D["earliestEnd"]), instant : C, text : D["title"], description : D["description"], image : this._resolveRelativeURL(D["image"], E), link : this._resolveRelativeURL(D["link"], E), icon : this._resolveRelativeURL(D["icon"], E), color : D["color"], textColor : D["textColor"], hoverText : D["hoverText"], caption : D["caption"], classname : D["classname"], tapeImage : D["tapeImage"], tapeRepeat : D["tapeRepeat"], eventID : D["eventID"], trackNum : D["trackNum"] }); M._bindings = D; M.getProperty = function(N) { return this._bindings[N]; }; M.setWikiInfo(J, L); this._events.add(M); K = true; } F = F.nextSibling; } if (K) { this._fire("onAddMany", []); } }; Timeline.DefaultEventSource.prototype.add = function(A) { this._events.add(A); this._fire("onAddOne", [ A ]); }; Timeline.DefaultEventSource.prototype.addMany = function(A) { for ( var B = 0; B < A.length; B++) { this._events.add(A[B]); } this._fire("onAddMany", []); }; Timeline.DefaultEventSource.prototype.clear = function() { this._events.removeAll(); this._fire("onClear", []); }; Timeline.DefaultEventSource.prototype.getEvent = function(A) { return this._events.getEvent(A); }; Timeline.DefaultEventSource.prototype.getEventIterator = function(A, B) { return this._events.getIterator(A, B); }; Timeline.DefaultEventSource.prototype.getEventReverseIterator = function(A, B) { return this._events.getReverseIterator(A, B); }; Timeline.DefaultEventSource.prototype.getAllEventIterator = function() { return this._events.getAllIterator(); }; Timeline.DefaultEventSource.prototype.getCount = function() { return this._events.getCount(); }; Timeline.DefaultEventSource.prototype.getEarliestDate = function() { return this._events.getEarliestDate(); }; Timeline.DefaultEventSource.prototype.getLatestDate = function() { return this._events.getLatestDate(); }; Timeline.DefaultEventSource.prototype._fire = function(B, A) { for ( var C = 0; C < this._listeners.length; C++) { var D = this._listeners[C]; if (B in D) { try { D[B].apply(D, A); } catch (E) { SimileAjax.Debug.exception(E); } } } }; Timeline.DefaultEventSource.prototype._getBaseURL = function(A) { if (A.indexOf("://") < 0) { var C = this._getBaseURL(document.location.href); if (A.substr(0, 1) == "/") { A = C.substr(0, C.indexOf("/", C.indexOf("://") + 3)) + A; } else { A = C + A; } } var B = A.lastIndexOf("/"); if (B < 0) { return ""; } else { return A.substr(0, B + 1); } }; Timeline.DefaultEventSource.prototype._resolveRelativeURL = function(A, B) { if (A == null || A == "") { return A; } else { if (A.indexOf("://") > 0) { return A; } else { if (A.substr(0, 1) == "/") { return B.substr(0, B.indexOf("/", B.indexOf("://") + 3)) + A; } else { return B + A; } } } }; Timeline.DefaultEventSource.Event = function(A) { function D(E) { return (A[E] != null && A[E] != "") ? A[E] : null; } var C = A.id ? A.id.trim() : ""; this._id = C.length > 0 ? C : Timeline.EventUtils.getNewEventID(); this._instant = A.instant || (A.end == null); this._start = A.start; this._end = (A.end != null) ? A.end : A.start; this._latestStart = (A.latestStart != null) ? A.latestStart : (A.instant ? this._end : this._start); this._earliestEnd = (A.earliestEnd != null) ? A.earliestEnd : this._end; var B = []; if (this._start > this._latestStart) { this._latestStart = this._start; B.push("start is > latestStart"); } if (this._start > this._earliestEnd) { this._earliestEnd = this._latestStart; B.push("start is > earliestEnd"); } if (this._start > this._end) { this._end = this._earliestEnd; B.push("start is > end"); } if (this._latestStart > this._earliestEnd) { this._earliestEnd = this._latestStart; B.push("latestStart is > earliestEnd"); } if (this._latestStart > this._end) { this._end = this._earliestEnd; B.push("latestStart is > end"); } if (this._earliestEnd > this._end) { this._end = this._earliestEnd; B.push("earliestEnd is > end"); } this._eventID = D("eventID"); this._text = (A.text != null) ? SimileAjax.HTML.deEntify(A.text) : ""; if (B.length > 0) { this._text += " PROBLEM: " + B.join(", "); } this._description = SimileAjax.HTML.deEntify(A.description); this._image = D("image"); this._link = D("link"); this._title = D("hoverText"); this._title = D("caption"); this._icon = D("icon"); this._color = D("color"); this._textColor = D("textColor"); this._classname = D("classname"); this._tapeImage = D("tapeImage"); this._tapeRepeat = D("tapeRepeat"); this._trackNum = D("trackNum"); if (this._trackNum != null) { this._trackNum = parseInt(this._trackNum); } this._wikiURL = null; this._wikiSection = null; }; Timeline.DefaultEventSource.Event.prototype = { getID : function() { return this._id; }, isInstant : function() { return this._instant; }, isImprecise : function() { return this._start != this._latestStart || this._end != this._earliestEnd; }, getStart : function() { return this._start; }, getEnd : function() { return this._end; }, getLatestStart : function() { return this._latestStart; }, getEarliestEnd : function() { return this._earliestEnd; }, getEventID : function() { return this._eventID; }, getText : function() { return this._text; }, getDescription : function() { return this._description; }, getImage : function() { return this._image; }, getLink : function() { return this._link; }, getIcon : function() { return this._icon; }, getColor : function() { return this._color; }, getTextColor : function() { return this._textColor; }, getClassName : function() { return this._classname; }, getTapeImage : function() { return this._tapeImage; }, getTapeRepeat : function() { return this._tapeRepeat; }, getTrackNum : function() { return this._trackNum; }, getProperty : function(A) { return null; }, getWikiURL : function() { return this._wikiURL; }, getWikiSection : function() { return this._wikiSection; }, setWikiInfo : function(B, A) { this._wikiURL = B; this._wikiSection = A; }, fillDescription : function(A) { A.innerHTML = this._description; }, fillWikiInfo : function(D) { D.style.display = "none"; if (this._wikiURL == null || this._wikiSection == null) { return; } var C = this.getProperty("wikiID"); if (C == null || C.length == 0) { C = this.getText(); } if (C == null || C.length == 0) { return; } D.style.display = "inline"; C = C.replace(/\s/g, "_"); var B = this._wikiURL + this._wikiSection.replace(/\s/g, "_") + "/" + C; var A = document.createElement("a"); A.href = B; A.target = "new"; A.innerHTML = Timeline.strings[Timeline.clientLocale].wikiLinkLabel; D.appendChild(document.createTextNode("[")); D.appendChild(A); D.appendChild(document.createTextNode("]")); }, fillTime : function(A, B) { if (this._instant) { if (this.isImprecise()) { A.appendChild(A.ownerDocument.createTextNode(B .labelPrecise(this._start))); A.appendChild(A.ownerDocument.createElement("br")); A.appendChild(A.ownerDocument.createTextNode(B .labelPrecise(this._end))); } else { A.appendChild(A.ownerDocument.createTextNode(B .labelPrecise(this._start))); } } else { if (this.isImprecise()) { A.appendChild(A.ownerDocument.createTextNode(B .labelPrecise(this._start) + " ~ " + B.labelPrecise(this._latestStart))); A.appendChild(A.ownerDocument.createElement("br")); A.appendChild(A.ownerDocument.createTextNode(B .labelPrecise(this._earliestEnd) + " ~ " + B.labelPrecise(this._end))); } else { A.appendChild(A.ownerDocument.createTextNode(B .labelPrecise(this._start))); A.appendChild(A.ownerDocument.createElement("br")); A.appendChild(A.ownerDocument.createTextNode(B .labelPrecise(this._end))); } } }, fillInfoBubble : function(A, E, M) { var K = A.ownerDocument; var J = this.getText(); var H = this.getLink(); var B = this.getImage(); if (B != null) { var D = K.createElement("img"); D.src = B; E.event.bubble.imageStyler(D); A.appendChild(D); } var L = K.createElement("div"); var C = K.createTextNode(J); if (H != null) { var I = K.createElement("a"); I.href = H; I.appendChild(C); L.appendChild(I); } else { L.appendChild(C); } E.event.bubble.titleStyler(L); A.appendChild(L); var N = K.createElement("div"); this.fillDescription(N); E.event.bubble.bodyStyler(N); A.appendChild(N); var G = K.createElement("div"); this.fillTime(G, M); E.event.bubble.timeStyler(G); A.appendChild(G); var F = K.createElement("div"); this.fillWikiInfo(F); E.event.bubble.wikiStyler(F); A.appendChild(F); } }; /* themes.js */ Timeline.ClassicTheme = new Object(); Timeline.ClassicTheme.implementations = []; Timeline.ClassicTheme.create = function(B) { if (B == null) { B = Timeline.getDefaultLocale(); } var A = Timeline.ClassicTheme.implementations[B]; if (A == null) { A = Timeline.ClassicTheme._Impl; } return new A(); }; Timeline.ClassicTheme._Impl = function() { this.firstDayOfWeek = 0; this.autoWidth = false; this.autoWidthAnimationTime = 500; this.timeline_start = null; this.timeline_stop = null; this.ether = { backgroundColors : [], highlightOpacity : 50, interval : { line : { show : true, opacity : 25 }, weekend : { opacity : 30 }, marker : { hAlign : "Bottom", vAlign : "Right" } } }; this.event = { track : { height : 10, gap : 2, offset : 2, autoWidthMargin : 1.5 }, overviewTrack : { offset : 20, tickHeight : 6, height : 2, gap : 1, autoWidthMargin : 5 }, tape : { height : 4 }, instant : { icon : Timeline.urlPrefix + "images/dull-blue-circle.png", iconWidth : 10, iconHeight : 10, impreciseOpacity : 20, impreciseIconMargin : 3 }, duration : { impreciseOpacity : 20 }, label : { backgroundOpacity : 50, offsetFromLine : 3 }, highlightColors : [ "#FFFF00", "#FFC000", "#FF0000", "#0000FF" ], highlightLabelBackground : false, bubble : { width : 250, maxHeight : 0, titleStyler : function(A) { A.className = "timeline-event-bubble-title"; }, bodyStyler : function(A) { A.className = "timeline-event-bubble-body"; }, imageStyler : function(A) { A.className = "timeline-event-bubble-image"; }, wikiStyler : function(A) { A.className = "timeline-event-bubble-wiki"; }, timeStyler : function(A) { A.className = "timeline-event-bubble-time"; } } }; this.mouseWheel = "scroll"; }; /* timeline.js */ Timeline.version = "2.3.0"; Timeline.ajax_lib_version = SimileAjax.version; Timeline.display_version = Timeline.version + " (with Ajax lib " + Timeline.ajax_lib_version + ")"; Timeline.strings = {}; Timeline.HORIZONTAL = 0; Timeline.VERTICAL = 1; Timeline._defaultTheme = null; Timeline.getDefaultLocale = function() { return Timeline.clientLocale; }; Timeline.create = function(D, C, E, F) { if (Timeline.timelines == null) { Timeline.timelines = []; } var B = Timeline.timelines.length; Timeline.timelines[B] = null; var A = new Timeline._Impl(D, C, E, F, B); Timeline.timelines[B] = A; return A; }; Timeline.createBandInfo = function(F) { var G = ("theme" in F) ? F.theme : Timeline.getDefaultTheme(); var D = ("eventSource" in F) ? F.eventSource : null; var H = new Timeline.LinearEther({ centersOn : ("date" in F) ? F.date : new Date(), interval : SimileAjax.DateTime.gregorianUnitLengths[F.intervalUnit], pixelsPerInterval : F.intervalPixels, theme : G }); var C = new Timeline.GregorianEtherPainter({ unit : F.intervalUnit, multiple : ("multiple" in F) ? F.multiple : 1, theme : G, align : ("align" in F) ? F.align : undefined }); var I = { showText : ("showEventText" in F) ? F.showEventText : true, theme : G }; if ("eventPainterParams" in F) { for ( var A in F.eventPainterParams) { I[A] = F.eventPainterParams[A]; } } if ("trackHeight" in F) { I.trackHeight = F.trackHeight; } if ("trackGap" in F) { I.trackGap = F.trackGap; } var B = ("overview" in F && F.overview) ? "overview" : ("layout" in F ? F.layout : "original"); var E; if ("eventPainter" in F) { E = new F.eventPainter(I); } else { switch (B) { case "overview": E = new Timeline.OverviewEventPainter(I); break; case "detailed": E = new Timeline.DetailedEventPainter(I); break; default: E = new Timeline.OriginalEventPainter(I); } } return { width : F.width, eventSource : D, timeZone : ("timeZone" in F) ? F.timeZone : 0, ether : H, etherPainter : C, eventPainter : E, theme : G, zoomIndex : ("zoomIndex" in F) ? F.zoomIndex : 0, zoomSteps : ("zoomSteps" in F) ? F.zoomSteps : null }; }; Timeline.createHotZoneBandInfo = function(F) { var G = ("theme" in F) ? F.theme : Timeline.getDefaultTheme(); var D = ("eventSource" in F) ? F.eventSource : null; var H = new Timeline.HotZoneEther({ centersOn : ("date" in F) ? F.date : new Date(), interval : SimileAjax.DateTime.gregorianUnitLengths[F.intervalUnit], pixelsPerInterval : F.intervalPixels, zones : F.zones, theme : G }); var C = new Timeline.HotZoneGregorianEtherPainter({ unit : F.intervalUnit, zones : F.zones, theme : G, align : ("align" in F) ? F.align : undefined }); var I = { showText : ("showEventText" in F) ? F.showEventText : true, theme : G }; if ("eventPainterParams" in F) { for ( var A in F.eventPainterParams) { I[A] = F.eventPainterParams[A]; } } if ("trackHeight" in F) { I.trackHeight = F.trackHeight; } if ("trackGap" in F) { I.trackGap = F.trackGap; } var B = ("overview" in F && F.overview) ? "overview" : ("layout" in F ? F.layout : "original"); var E; if ("eventPainter" in F) { E = new F.eventPainter(I); } else { switch (B) { case "overview": E = new Timeline.OverviewEventPainter(I); break; case "detailed": E = new Timeline.DetailedEventPainter(I); break; default: E = new Timeline.OriginalEventPainter(I); } } return { width : F.width, eventSource : D, timeZone : ("timeZone" in F) ? F.timeZone : 0, ether : H, etherPainter : C, eventPainter : E, theme : G, zoomIndex : ("zoomIndex" in F) ? F.zoomIndex : 0, zoomSteps : ("zoomSteps" in F) ? F.zoomSteps : null }; }; Timeline.getDefaultTheme = function() { if (Timeline._defaultTheme == null) { Timeline._defaultTheme = Timeline.ClassicTheme.create(Timeline .getDefaultLocale()); } return Timeline._defaultTheme; }; Timeline.setDefaultTheme = function(A) { Timeline._defaultTheme = A; }; Timeline.loadXML = function(A, C) { var D = function(G, F, E) { alert("Failed to load data xml from " + A + "\n" + G); }; var B = function(F) { var E = F.responseXML; if (!E.documentElement && F.responseStream) { E.load(F.responseStream); } C(E, A); }; SimileAjax.XmlHttp.get(A, D, B); }; Timeline.loadJSON = function(url, f) { var fError = function(statusText, status, xmlhttp) { alert("Failed to load json data from " + url + "\n" + statusText); }; var fDone = function(xmlhttp) { f(eval("(" + xmlhttp.responseText + ")"), url); }; SimileAjax.XmlHttp.get(url, fError, fDone); }; Timeline.getTimelineFromID = function(A) { return Timeline.timelines[A]; }; Timeline.writeVersion = function(A) { document.getElementById(A).innerHTML = this.display_version; }; Timeline._Impl = function(C, B, D, E, A) { SimileAjax.WindowManager.initialize(); this._containerDiv = C; this._bandInfos = B; this._orientation = D == null ? Timeline.HORIZONTAL : D; this._unit = (E != null) ? E : SimileAjax.NativeDateUnit; this._starting = true; this._autoResizing = false; this.autoWidth = B && B[0] && B[0].theme && B[0].theme.autoWidth; this.autoWidthAnimationTime = B && B[0] && B[0].theme && B[0].theme.autoWidthAnimationTime; this.timelineID = A; this.timeline_start = B && B[0] && B[0].theme && B[0].theme.timeline_start; this.timeline_stop = B && B[0] && B[0].theme && B[0].theme.timeline_stop; this.timeline_at_start = false; this.timeline_at_stop = false; this._initialize(); }; Timeline._Impl.prototype.dispose = function() { for ( var A = 0; A < this._bands.length; A++) { this._bands[A].dispose(); } this._bands = null; this._bandInfos = null; this._containerDiv.innerHTML = ""; Timeline.timelines[this.timelineID] = null; }; Timeline._Impl.prototype.getBandCount = function() { return this._bands.length; }; Timeline._Impl.prototype.getBand = function(A) { return this._bands[A]; }; Timeline._Impl.prototype.finishedEventLoading = function() { this._autoWidthCheck(true); this._starting = false; }; Timeline._Impl.prototype.layout = function() { this._autoWidthCheck(true); this._distributeWidths(); }; Timeline._Impl.prototype.paint = function() { for ( var A = 0; A < this._bands.length; A++) { this._bands[A].paint(); } }; Timeline._Impl.prototype.getDocument = function() { return this._containerDiv.ownerDocument; }; Timeline._Impl.prototype.addDiv = function(A) { this._containerDiv.appendChild(A); }; Timeline._Impl.prototype.removeDiv = function(A) { this._containerDiv.removeChild(A); }; Timeline._Impl.prototype.isHorizontal = function() { return this._orientation == Timeline.HORIZONTAL; }; Timeline._Impl.prototype.isVertical = function() { return this._orientation == Timeline.VERTICAL; }; Timeline._Impl.prototype.getPixelLength = function() { return this._orientation == Timeline.HORIZONTAL ? this._containerDiv.offsetWidth : this._containerDiv.offsetHeight; }; Timeline._Impl.prototype.getPixelWidth = function() { return this._orientation == Timeline.VERTICAL ? this._containerDiv.offsetWidth : this._containerDiv.offsetHeight; }; Timeline._Impl.prototype.getUnit = function() { return this._unit; }; Timeline._Impl.prototype.getWidthStyle = function() { return this._orientation == Timeline.HORIZONTAL ? "height" : "width"; }; Timeline._Impl.prototype.loadXML = function(B, D) { var A = this; var E = function(H, G, F) { alert("Failed to load data xml from " + B + "\n" + H); A.hideLoadingMessage(); }; var C = function(G) { try { var F = G.responseXML; if (!F.documentElement && G.responseStream) { F.load(G.responseStream); } D(F, B); } finally { A.hideLoadingMessage(); } }; this.showLoadingMessage(); window.setTimeout(function() { SimileAjax.XmlHttp.get(B, E, C); }, 0); }; Timeline._Impl.prototype.loadJSON = function(url, f) { var tl = this; var fError = function(statusText, status, xmlhttp) { alert("Failed to load json data from " + url + "\n" + statusText); tl.hideLoadingMessage(); }; var fDone = function(xmlhttp) { try { f(eval("(" + xmlhttp.responseText + ")"), url); } finally { tl.hideLoadingMessage(); } }; this.showLoadingMessage(); window.setTimeout(function() { SimileAjax.XmlHttp.get(url, fError, fDone); }, 0); }; Timeline._Impl.prototype._autoWidthScrollListener = function(A) { A.getTimeline()._autoWidthCheck(false); }; Timeline._Impl.prototype._autoWidthCheck = function(C) { var A = this; var B = A._starting; var D = 0; function E() { var G = A.getWidthStyle(); if (B) { A._containerDiv.style[G] = D + "px"; } else { A._autoResizing = true; var H = {}; H[G] = D + "px"; SimileAjax.jQuery(A._containerDiv).animate(H, A.autoWidthAnimationTime, "linear", function() { A._autoResizing = false; }); } } function F() { var H = 0; var G = A.getPixelWidth(); if (A._autoResizing) { return; } for ( var I = 0; I < A._bands.length; I++) { A._bands[I].checkAutoWidth(); H += A._bandInfos[I].width; } if (H > G || C) { D = H; E(); A._distributeWidths(); } } if (!A.autoWidth) { return; } F(); }; Timeline._Impl.prototype._initialize = function() { var H = this._containerDiv; var E = H.ownerDocument; H.className = H.className.split(" ").concat("timeline-container").join(" "); var C = (this.isHorizontal()) ? "horizontal" : "vertical"; H.className += " timeline-" + C; while (H.firstChild) { H.removeChild(H.firstChild); } var A = SimileAjax.Graphics.createTranslucentImage(Timeline.urlPrefix + (this.isHorizontal() ? "images/copyright-vertical.png" : "images/copyright.png")); A.className = "timeline-copyright"; A.title = "Timeline copyright SIMILE - www.code.google.com/p/simile-widgets/"; SimileAjax.DOM.registerEvent(A, "click", function() { window.location = "http://code.google.com/p/simile-widgets/"; }); H.appendChild(A); this._bands = []; for ( var B = 0; B < this._bandInfos.length; B++) { var G = new Timeline._Band(this, this._bandInfos[B], B); this._bands.push(G); } this._distributeWidths(); for ( var B = 0; B < this._bandInfos.length; B++) { var F = this._bandInfos[B]; if ("syncWith" in F) { this._bands[B].setSyncWithBand(this._bands[F.syncWith], ("highlight" in F) ? F.highlight : false); } } if (this.autoWidth) { for ( var B = 0; B < this._bands.length; B++) { this._bands[B].addOnScrollListener(this._autoWidthScrollListener); } } var D = SimileAjax.Graphics.createMessageBubble(E); D.containerDiv.className = "timeline-message-container"; H.appendChild(D.containerDiv); D.contentDiv.className = "timeline-message"; D.contentDiv.innerHTML = "<img src='" + Timeline.urlPrefix + "images/progress-running.gif' /> Loading..."; this.showLoadingMessage = function() { D.containerDiv.style.display = "block"; }; this.hideLoadingMessage = function() { D.containerDiv.style.display = "none"; }; }; Timeline._Impl.prototype._distributeWidths = function() { var G = this.getPixelLength(); var B = this.getPixelWidth(); var C = 0; for ( var F = 0; F < this._bands.length; F++) { var J = this._bands[F]; var I = this._bandInfos[F]; var E = I.width; var D; if (typeof E == "string") { var H = E.indexOf("%"); if (H > 0) { var A = parseInt(E.substr(0, H)); D = Math.round(A * B / 100); } else { D = parseInt(E); } } else { D = E; } J.setBandShiftAndWidth(C, D); J.setViewLength(G); C += D; } }; Timeline._Impl.prototype.shiftOK = function(C, B) { var F = B > 0, A = B < 0; if ((F && this.timeline_start == null) || (A && this.timeline_stop == null) || (B == 0)) { return (true); } var H = false; for ( var E = 0; E < this._bands.length && !H; E++) { H = this._bands[E].busy(); } if (H) { return (true); } if ((F && this.timeline_at_start) || (A && this.timeline_at_stop)) { return (false); } var D = false; for ( var E = 0; E < this._bands.length && !D; E++) { var G = this._bands[E]; if (F) { D = (E == C ? G.getMinVisibleDateAfterDelta(B) : G .getMinVisibleDate()) >= this.timeline_start; } else { D = (E == C ? G.getMaxVisibleDateAfterDelta(B) : G .getMaxVisibleDate()) <= this.timeline_stop; } } if (F) { this.timeline_at_start = !D; this.timeline_at_stop = false; } else { this.timeline_at_stop = !D; this.timeline_at_start = false; } return (D); }; Timeline._Impl.prototype.zoom = function(D, A, G, F) { var C = new RegExp("^timeline-band-([0-9]+)$"); var E = null; var B = C.exec(F.id); if (B) { E = parseInt(B[1]); } if (E != null) { this._bands[E].zoom(D, A, G, F); } this.paint(); }; /* units.js */ Timeline.NativeDateUnit = new Object(); Timeline.NativeDateUnit.createLabeller = function(B, A) { return new Timeline.GregorianDateLabeller(B, A); }; Timeline.NativeDateUnit.makeDefaultValue = function() { return new Date(); }; Timeline.NativeDateUnit.cloneValue = function(A) { return new Date(A.getTime()); }; Timeline.NativeDateUnit.getParser = function(A) { if (typeof A == "string") { A = A.toLowerCase(); } return (A == "iso8601" || A == "iso 8601") ? Timeline.DateTime.parseIso8601DateTime : Timeline.DateTime.parseGregorianDateTime; }; Timeline.NativeDateUnit.parseFromObject = function(A) { return Timeline.DateTime.parseGregorianDateTime(A); }; Timeline.NativeDateUnit.toNumber = function(A) { return A.getTime(); }; Timeline.NativeDateUnit.fromNumber = function(A) { return new Date(A); }; Timeline.NativeDateUnit.compare = function(D, C) { var B, A; if (typeof D == "object") { B = D.getTime(); } else { B = Number(D); } if (typeof C == "object") { A = C.getTime(); } else { A = Number(C); } return B - A; }; Timeline.NativeDateUnit.earlier = function(B, A) { return Timeline.NativeDateUnit.compare(B, A) < 0 ? B : A; }; Timeline.NativeDateUnit.later = function(B, A) { return Timeline.NativeDateUnit.compare(B, A) > 0 ? B : A; }; Timeline.NativeDateUnit.change = function(A, B) { return new Date(A.getTime() + B); };
Ms-Dos/Windows
Unix
Write backup
jsp File Browser version 1.2 by
www.vonloesch.de