From: <tz...@us...> - 2007-10-24 09:41:03
|
Revision: 590 http://zkforge.svn.sourceforge.net/zkforge/?rev=590&view=rev Author: tzgwx Date: 2007-10-24 02:41:01 -0700 (Wed, 24 Oct 2007) Log Message: ----------- Added Paths: ----------- trunk/timeplotz/src/archive/web/js/ext/timeline/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/bundle.css trunk/timeplotz/src/archive/web/js/ext/timeline/api/bundle.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/ext/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/ext/geochrono/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/ext/geochrono/geochrono-api.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/ext/geochrono/images/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/ext/geochrono/scripts/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/ext/geochrono/scripts/ether-painters.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/ext/geochrono/scripts/geochrono.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/ext/geochrono/scripts/l10n/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/ext/geochrono/scripts/l10n/en/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/ext/geochrono/scripts/l10n/en/labellers.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/ext/geochrono/scripts/labellers.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/ext/geochrono/scripts/units.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/ext/geochrono/styles/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/ext/planning/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/ext/planning/planning-api.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/ext/planning/scripts/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/ext/planning/scripts/ether-painters.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/ext/planning/scripts/l10n/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/ext/planning/scripts/l10n/en/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/ext/planning/scripts/l10n/en/labellers.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/ext/planning/scripts/labellers.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/ext/planning/scripts/planning.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/ext/planning/scripts/units.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/blue-circle.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/bubble-bottom-arrow.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/bubble-bottom-left.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/bubble-bottom-right.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/bubble-bottom.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/bubble-left-arrow.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/bubble-left.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/bubble-right-arrow.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/bubble-right.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/bubble-top-arrow.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/bubble-top-left.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/bubble-top-right.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/bubble-top.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/close-button.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/copyright-vertical.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/copyright.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/dark-blue-circle.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/dark-green-circle.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/dark-red-circle.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/dull-blue-circle.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/dull-green-circle.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/dull-red-circle.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/gray-circle.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/green-circle.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/message-bottom-left.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/message-bottom-right.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/message-left.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/message-right.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/message-top-left.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/message-top-right.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/progress-running.gif trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/red-circle.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/images/top-bubble.png trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/decorators.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/ether-painters.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/ethers.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/ext/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/ext/japanese-eras.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/cs/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/cs/labellers.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/cs/timeline.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/de/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/de/labellers.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/de/timeline.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/en/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/en/labellers.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/en/timeline.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/es/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/es/labellers.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/es/timeline.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/fr/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/fr/labellers.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/fr/timeline.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/it/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/it/labellers.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/it/timeline.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/ru/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/ru/labellers.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/ru/timeline.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/se/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/se/labellers.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/se/timeline.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/vi/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/vi/labellers.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/vi/timeline.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/zh/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/zh/labellers.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/l10n/zh/timeline.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/labellers.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/layouts.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/painters.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/sources.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/themes.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/timeline.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/units.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/util/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/util/data-structure.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/util/date-time.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/util/debug.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/util/dom.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/util/graphics.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/util/html.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/util/platform.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/scripts/util/xmlhttp.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/styles/ trunk/timeplotz/src/archive/web/js/ext/timeline/api/styles/ethers.css trunk/timeplotz/src/archive/web/js/ext/timeline/api/styles/events.css trunk/timeplotz/src/archive/web/js/ext/timeline/api/styles/timeline.css trunk/timeplotz/src/archive/web/js/ext/timeline/api/timeline-api.js trunk/timeplotz/src/archive/web/js/ext/timeline/api/zkTimeline-api.js trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/ trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/blue-circle.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/bubble-bottom-arrow.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/bubble-bottom-left.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/bubble-bottom-right.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/bubble-bottom.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/bubble-left-arrow.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/bubble-left.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/bubble-right-arrow.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/bubble-right.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/bubble-top-arrow.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/bubble-top-left.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/bubble-top-right.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/bubble-top.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/close-button.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/copyright-vertical.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/copyright.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/dark-blue-circle.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/dark-green-circle.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/dark-red-circle.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/dull-blue-circle.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/dull-green-circle.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/dull-red-circle.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/gray-circle.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/green-circle.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/line.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/line_left.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/line_right.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/message-bottom-left.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/message-bottom-right.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/message-left.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/message-right.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/message-top-left.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/message-top-right.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/progress-running.gif trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/red-circle.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/top-bubble.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/images/triangle.png trunk/timeplotz/src/archive/web/js/ext/timeplot/api/locales/ trunk/timeplotz/src/archive/web/js/ext/timeplot/api/locales/en/ trunk/timeplotz/src/archive/web/js/ext/timeplot/api/locales/en/locale.js trunk/timeplotz/src/archive/web/js/ext/timeplot/api/scripts/ trunk/timeplotz/src/archive/web/js/ext/timeplot/api/scripts/color.js trunk/timeplotz/src/archive/web/js/ext/timeplot/api/scripts/ethers.css trunk/timeplotz/src/archive/web/js/ext/timeplot/api/scripts/events.css trunk/timeplotz/src/archive/web/js/ext/timeplot/api/scripts/excanvas.js trunk/timeplotz/src/archive/web/js/ext/timeplot/api/scripts/geometry.js trunk/timeplotz/src/archive/web/js/ext/timeplot/api/scripts/math.js trunk/timeplotz/src/archive/web/js/ext/timeplot/api/scripts/oop.js trunk/timeplotz/src/archive/web/js/ext/timeplot/api/scripts/plot.js trunk/timeplotz/src/archive/web/js/ext/timeplot/api/scripts/processor.js trunk/timeplotz/src/archive/web/js/ext/timeplot/api/scripts/signal.js trunk/timeplotz/src/archive/web/js/ext/timeplot/api/scripts/sources.js trunk/timeplotz/src/archive/web/js/ext/timeplot/api/scripts/timeline.css trunk/timeplotz/src/archive/web/js/ext/timeplot/api/scripts/timeplot.js trunk/timeplotz/src/archive/web/js/ext/timeplot/api/simile-ajax-api.js trunk/timeplotz/src/archive/web/js/ext/timeplot/api/simile-ajax-bundle.js trunk/timeplotz/src/archive/web/js/ext/timeplot/api/styles/ trunk/timeplotz/src/archive/web/js/ext/timeplot/api/styles/ethers.css trunk/timeplotz/src/archive/web/js/ext/timeplot/api/styles/events.css trunk/timeplotz/src/archive/web/js/ext/timeplot/api/styles/timeline.css trunk/timeplotz/src/archive/web/js/ext/timeplot/api/styles/timeplot-bundle.css trunk/timeplotz/src/archive/web/js/ext/timeplot/api/styles/timeplot.css trunk/timeplotz/src/archive/web/js/ext/timeplot/api/styles.css trunk/timeplotz/src/archive/web/js/ext/timeplot/api/timeline-bundle.css trunk/timeplotz/src/archive/web/js/ext/timeplot/api/timeline-bundle.js trunk/timeplotz/src/archive/web/js/ext/timeplot/api/timeplot-api.js trunk/timeplotz/src/archive/web/js/ext/timeplot/api/timeplot-bundle.js trunk/timeplotz/src/archive/web/js/ext/timeplot/api/zkTimeplot-api.js trunk/timeplotz/src/archive/web/timeplot/plotinfo.dsp Removed Paths: ------------- trunk/timeplotz/src/archive/web/js/timeplotz/timeplot.js trunk/timeplotz/src/archive/web/timeplot/timeplot.dsp Added: trunk/timeplotz/src/archive/web/js/ext/timeline/api/bundle.css =================================================================== --- trunk/timeplotz/src/archive/web/js/ext/timeline/api/bundle.css (rev 0) +++ trunk/timeplotz/src/archive/web/js/ext/timeline/api/bundle.css 2007-10-24 09:41:01 UTC (rev 590) @@ -0,0 +1,172 @@ +.timeline-ether-marker-bottom { + width: 5em; + height: 1.5em; + border-left: 1px solid #aaa; + padding-left: 2px; + color: #aaa; +} + +.timeline-ether-marker-bottom-emphasized { + width: 5em; + height: 2em; + border-left: 1px solid #aaa; + padding-left: 2px; + color: black; +} + +.timeline-ether-marker-top { + width: 5em; + height: 1.5em; + border-left: 1px solid #aaa; + padding-left: 2px; + color: #aaa; +} + +.timeline-ether-marker-top-emphasized { + width: 5em; + height: 2em; + border-left: 1px solid #aaa; + padding-left: 2px; + color: black; +} + + +.timeline-ether-marker-right { + width: 5em; + height: 1.5em; + border-top: 1px solid #aaa; + padding-top: 2px; + color: #aaa; +} + +.timeline-ether-marker-right-emphasized { + width: 7em; + height: 1.5em; + border-top: 1px solid #aaa; + padding-top: 2px; + color: black; +} +.timeline-ether-marker-left { + width: 5em; + height: 1.5em; + border-top: 1px solid #aaa; + padding-top: 2px; + color: #aaa; +} + +.timeline-ether-marker-left-emphasized { + width: 7em; + height: 1.5em; + border-top: 1px solid #aaa; + padding-top: 2px; + color: black; +} +.timeline-duration-event { + position: absolute; + overflow: hidden; + border: 1px solid blue; +} + +.timeline-instant-event2 { + position: absolute; + overflow: hidden; + border-left: 1px solid blue; + padding-left: 2px; +} + +.timeline-instant-event { + position: absolute; + overflow: hidden; +} + +.timeline-event-bubble-title { + font-weight: bold; + border-bottom: 1px solid #888; + margin-bottom: 0.5em; +} + +.timeline-event-bubble-body { +} + +.timeline-event-bubble-wiki { + margin: 0.5em; + text-align: right; + color: #A0A040; +} +.timeline-event-bubble-wiki a { + color: #A0A040; +} + +.timeline-event-bubble-time { + color: #aaa; +} + +.timeline-event-bubble-image { + float: right; + padding-left: 5px; + padding-bottom: 5px; +}.timeline-container { + position: relative; + overflow: hidden; +} + +.timeline-copyright { + position: absolute; + bottom: 0px; + left: 0px; + z-index: 1000; + cursor: pointer; +} + +.timeline-message-container { + position: absolute; + top: 30%; + left: 35%; + right: 35%; + z-index: 1000; + display: none; +} +.timeline-message { + font-size: 120%; + font-weight: bold; + text-align: center; +} +.timeline-message img { + vertical-align: middle; +} + +.timeline-band { + position: absolute; + background: #eee; + z-index: 10; +} + +.timeline-band-inner { + position: relative; + width: 100%; + height: 100%; +} + +.timeline-band-input { + position: absolute; + width: 1em; + height: 1em; + overflow: hidden; + z-index: 0; +} +.timeline-band-input input{ + width: 0; +} + +.timeline-band-layer { + position: absolute; + width: 100%; + height: 100%; +} + +.timeline-band-layer-inner { + position: relative; + width: 100%; + height: 100%; +} + Added: trunk/timeplotz/src/archive/web/js/ext/timeline/api/bundle.js =================================================================== --- trunk/timeplotz/src/archive/web/js/ext/timeline/api/bundle.js (rev 0) +++ trunk/timeplotz/src/archive/web/js/ext/timeline/api/bundle.js 2007-10-24 09:41:01 UTC (rev 590) @@ -0,0 +1,4515 @@ + + +/* timeline.js */ + + + +Timeline.strings={}; + +Timeline.create=function(elmt,bandInfos,orientation,unit){ +return new Timeline._Impl(elmt,bandInfos,orientation,unit); +}; + +Timeline.HORIZONTAL=0; +Timeline.VERTICAL=1; + +Timeline._defaultTheme=null; + +Timeline.createBandInfo=function(params){ +var theme=("theme"in params)?params.theme:Timeline.getDefaultTheme(); + +var eventSource=("eventSource"in params)?params.eventSource:null; + +var ether=new Timeline.LinearEther({ +centersOn:("date"in params)?params.date:new Date(), +interval:Timeline.DateTime.gregorianUnitLengths[params.intervalUnit], +pixelsPerInterval:params.intervalPixels +}); + +var etherPainter=new Timeline.GregorianEtherPainter({ +unit:params.intervalUnit, +multiple:("multiple"in params)?params.multiple:1, +theme:theme, +align:("align"in params)?params.align:undefined +}); + +var layout=new Timeline.StaticTrackBasedLayout({ +eventSource:eventSource, +ether:ether, +showText:("showEventText"in params)?params.showEventText:true, +theme:theme +}); + +var eventPainterParams={ +showText:("showEventText"in params)?params.showEventText:true, +layout:layout, +theme:theme +}; +if("trackHeight"in params){ +eventPainterParams.trackHeight=params.trackHeight; +} +if("trackGap"in params){ +eventPainterParams.trackGap=params.trackGap; +} +var eventPainter=new Timeline.DurationEventPainter(eventPainterParams); + +return{ +width:params.width, +eventSource:eventSource, +timeZone:("timeZone"in params)?params.timeZone:0, +ether:ether, +etherPainter:etherPainter, +eventPainter:eventPainter +}; +}; + +Timeline.createHotZoneBandInfo=function(params){ +var theme=("theme"in params)?params.theme:Timeline.getDefaultTheme(); + +var eventSource=("eventSource"in params)?params.eventSource:null; + +var ether=new Timeline.HotZoneEther({ +centersOn:("date"in params)?params.date:new Date(), +interval:Timeline.DateTime.gregorianUnitLengths[params.intervalUnit], +pixelsPerInterval:params.intervalPixels, +zones:params.zones +}); + +var etherPainter=new Timeline.HotZoneGregorianEtherPainter({ +unit:params.intervalUnit, +zones:params.zones, +theme:theme, +align:("align"in params)?params.align:undefined +}); + +var layout=new Timeline.StaticTrackBasedLayout({ +eventSource:eventSource, +ether:ether, +theme:theme +}); + +var eventPainterParams={ +showText:("showEventText"in params)?params.showEventText:true, +layout:layout, +theme:theme +}; +if("trackHeight"in params){ +eventPainterParams.trackHeight=params.trackHeight; +} +if("trackGap"in params){ +eventPainterParams.trackGap=params.trackGap; +} +var eventPainter=new Timeline.DurationEventPainter(eventPainterParams); + +return{ +width:params.width, +eventSource:eventSource, +timeZone:("timeZone"in params)?params.timeZone:0, +ether:ether, +etherPainter:etherPainter, +eventPainter:eventPainter +}; +}; + +Timeline.getDefaultTheme=function(){ +if(Timeline._defaultTheme==null){ +Timeline._defaultTheme=Timeline.ClassicTheme.create(Timeline.Platform.getDefaultLocale()); +} +return Timeline._defaultTheme; +}; + +Timeline.setDefaultTheme=function(theme){ +Timeline._defaultTheme=theme; +}; + +Timeline.loadXML=function(url,f){ +var fError=function(statusText,status,xmlhttp){ +alert("Failed to load data xml from "+url+"\n"+statusText); +}; +var fDone=function(xmlhttp){ +var xml=xmlhttp.responseXML; +if(!xml.documentElement&&xmlhttp.responseStream){ +xml.load(xmlhttp.responseStream); +} +f(xml,url); +}; +Timeline.XmlHttp.get(url,fError,fDone); +}; + + +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); +}; +Timeline.XmlHttp.get(url,fError,fDone); +}; + + +Timeline._Impl=function(elmt,bandInfos,orientation,unit){ +this._containerDiv=elmt; + +this._bandInfos=bandInfos; +this._orientation=orientation==null?Timeline.HORIZONTAL:orientation; +this._unit=(unit!=null)?unit:Timeline.NativeDateUnit; + +this._initialize(); +}; + +Timeline._Impl.prototype.dispose=function(){ +for(var i=0;i<this._bands.length;i++){ +this._bands[i].dispose(); +} +this._bands=null; +this._bandInfos=null; +this._containerDiv.innerHTML=""; +}; + +Timeline._Impl.prototype.getBandCount=function(){ +return this._bands.length; +}; + +Timeline._Impl.prototype.getBand=function(index){ +return this._bands[index]; +}; + +Timeline._Impl.prototype.layout=function(){ +this._distributeWidths(); +}; + +Timeline._Impl.prototype.paint=function(){ +for(var i=0;i<this._bands.length;i++){ +this._bands[i].paint(); +} +}; + +Timeline._Impl.prototype.getDocument=function(){ +return this._containerDiv.ownerDocument; +}; + +Timeline._Impl.prototype.addDiv=function(div){ +this._containerDiv.appendChild(div); +}; + +Timeline._Impl.prototype.removeDiv=function(div){ +this._containerDiv.removeChild(div); +}; + +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.loadXML=function(url,f){ +var tl=this; + + +var fError=function(statusText,status,xmlhttp){ +alert("Failed to load data xml from "+url+"\n"+statusText); +tl.hideLoadingMessage(); +}; +var fDone=function(xmlhttp){ +try{ +var xml=xmlhttp.responseXML; +if(!xml.documentElement&&xmlhttp.responseStream){ +xml.load(xmlhttp.responseStream); +} +f(xml,url); +}finally{ +tl.hideLoadingMessage(); +} +}; + +this.showLoadingMessage(); +window.setTimeout(function(){Timeline.XmlHttp.get(url,fError,fDone);},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(){Timeline.XmlHttp.get(url,fError,fDone);},0); +}; + +Timeline._Impl.prototype._initialize=function(){ +var containerDiv=this._containerDiv; +var doc=containerDiv.ownerDocument; + +containerDiv.className= +containerDiv.className.split(" ").concat("timeline-container").join(" "); + +while(containerDiv.firstChild){ +containerDiv.removeChild(containerDiv.firstChild); +} + + +var elmtCopyright=Timeline.Graphics.createTranslucentImage(doc,Timeline.urlPrefix+(this.isHorizontal()?"images/copyright-vertical.png":"images/copyright.png")); +elmtCopyright.className="timeline-copyright"; +elmtCopyright.title="Timeline (c) SIMILE - http://simile.mit.edu/timeline/"; +Timeline.DOM.registerEvent(elmtCopyright,"click",function(){window.location="http://simile.mit.edu/timeline/";}); +containerDiv.appendChild(elmtCopyright); + + +this._bands=[]; +for(var i=0;i<this._bandInfos.length;i++){ +var band=new Timeline._Band(this,this._bandInfos[i],i); +this._bands.push(band); +} +this._distributeWidths(); + + +for(var i=0;i<this._bandInfos.length;i++){ +var bandInfo=this._bandInfos[i]; +if("syncWith"in bandInfo){ +this._bands[i].setSyncWithBand( +this._bands[bandInfo.syncWith], +("highlight"in bandInfo)?bandInfo.highlight:false +); +} +} + + +var message=Timeline.Graphics.createMessageBubble(doc); +message.containerDiv.className="timeline-message-container"; +containerDiv.appendChild(message.containerDiv); + +message.contentDiv.className="timeline-message"; +message.contentDiv.innerHTML="<img src='"+Timeline.urlPrefix+"images/progress-running.gif' /> Loading..."; + +this.showLoadingMessage=function(){message.containerDiv.style.display="block";}; +this.hideLoadingMessage=function(){message.containerDiv.style.display="none";}; +}; + +Timeline._Impl.prototype._distributeWidths=function(){ +var length=this.getPixelLength(); +var width=this.getPixelWidth(); +var cumulativeWidth=0; + +for(var i=0;i<this._bands.length;i++){ +var band=this._bands[i]; +var bandInfos=this._bandInfos[i]; +var widthString=bandInfos.width; + +var x=widthString.indexOf("%"); +if(x>0){ +var percent=parseInt(widthString.substr(0,x)); +var bandWidth=percent*width/100; +}else{ +var bandWidth=parseInt(widthString); +} + +band.setBandShiftAndWidth(cumulativeWidth,bandWidth); +band.setViewLength(length); + +cumulativeWidth+=bandWidth; +} +}; + + +Timeline._Band=function(timeline,bandInfo,index){ +this._timeline=timeline; +this._bandInfo=bandInfo; +this._index=index; + +this._locale=("locale"in bandInfo)?bandInfo.locale:Timeline.Platform.getDefaultLocale(); +this._timeZone=("timeZone"in bandInfo)?bandInfo.timeZone:0; +this._labeller=("labeller"in bandInfo)?bandInfo.labeller: +timeline.getUnit().createLabeller(this._locale,this._timeZone); + +this._dragging=false; +this._changing=false; +this._originalScrollSpeed=5; +this._scrollSpeed=this._originalScrollSpeed; +this._onScrollListeners=[]; + +var b=this; +this._syncWithBand=null; +this._syncWithBandHandler=function(band){ +b._onHighlightBandScroll(); +}; +this._selectorListener=function(band){ +b._onHighlightBandScroll(); +}; + + +var inputDiv=this._timeline.getDocument().createElement("div"); +inputDiv.className="timeline-band-input"; +this._timeline.addDiv(inputDiv); + +this._keyboardInput=document.createElement("input"); +this._keyboardInput.type="text"; +inputDiv.appendChild(this._keyboardInput); +Timeline.DOM.registerEventWithObject(this._keyboardInput,"keydown",this,this._onKeyDown); +Timeline.DOM.registerEventWithObject(this._keyboardInput,"keyup",this,this._onKeyUp); + + +this._div=this._timeline.getDocument().createElement("div"); +this._div.className="timeline-band"; +this._timeline.addDiv(this._div); + +Timeline.DOM.registerEventWithObject(this._div,"mousedown",this,this._onMouseDown); +Timeline.DOM.registerEventWithObject(this._div,"mousemove",this,this._onMouseMove); +Timeline.DOM.registerEventWithObject(this._div,"mouseup",this,this._onMouseUp); +Timeline.DOM.registerEventWithObject(this._div,"mouseout",this,this._onMouseOut); +Timeline.DOM.registerEventWithObject(this._div,"dblclick",this,this._onDblClick); + + +this._innerDiv=this._timeline.getDocument().createElement("div"); +this._innerDiv.className="timeline-band-inner"; +this._div.appendChild(this._innerDiv); + + +this._ether=bandInfo.ether; +bandInfo.ether.initialize(timeline); + +this._etherPainter=bandInfo.etherPainter; +bandInfo.etherPainter.initialize(this,timeline); + +this._eventSource=bandInfo.eventSource; +if(this._eventSource){ +this._eventListener={ +onAddMany:function(){b._onAddMany();}, +onClear:function(){b._onClear();} +} +this._eventSource.addListener(this._eventListener); +} + +this._eventPainter=bandInfo.eventPainter; +bandInfo.eventPainter.initialize(this,timeline); + +this._decorators=("decorators"in bandInfo)?bandInfo.decorators:[]; +for(var i=0;i<this._decorators.length;i++){ +this._decorators[i].initialize(this,timeline); +} + +this._bubble=null; +}; + +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; +this._bubble=null; +}; + +Timeline._Band.prototype.addOnScrollListener=function(listener){ +this._onScrollListeners.push(listener); +}; + +Timeline._Band.prototype.removeOnScrollListener=function(listener){ +for(var i=0;i<this._onScrollListeners.length;i++){ +if(this._onScrollListeners[i]==listener){ +this._onScrollListeners.splice(i,1); +break; +} +} +}; + +Timeline._Band.prototype.setSyncWithBand=function(band,highlight){ +if(this._syncWithBand){ +this._syncWithBand.removeOnScrollListener(this._syncWithBandHandler); +} + +this._syncWithBand=band; +this._syncWithBand.addOnScrollListener(this._syncWithBandHandler); +this._highlight=highlight; +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.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(shift,width){ +var inputDiv=this._keyboardInput.parentNode; +var middle=shift+Math.floor(width/2); +if(this._timeline.isHorizontal()){ +this._div.style.top=shift+"px"; +this._div.style.height=width+"px"; + +inputDiv.style.top=middle+"px"; +inputDiv.style.left="-1em"; +}else{ +this._div.style.left=shift+"px"; +this._div.style.width=width+"px"; + +inputDiv.style.left=middle+"px"; +inputDiv.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(length){ +this._viewLength=length; +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.getMaxVisibleDate=function(){ +return this._ether.pixelOffsetToDate(this._viewLength); +}; + +Timeline._Band.prototype.getCenterVisibleDate=function(){ +return this._ether.pixelOffsetToDate(this._viewLength/2); +}; + +Timeline._Band.prototype.setMinVisibleDate=function(date){ +if(!this._changing){ +this._moveEther(Math.round(-this._ether.dateToPixelOffset(date))); +} +}; + +Timeline._Band.prototype.setMaxVisibleDate=function(date){ +if(!this._changing){ +this._moveEther(Math.round(this._viewLength-this._ether.dateToPixelOffset(date))); +} +}; + +Timeline._Band.prototype.setCenterVisibleDate=function(date){ +if(!this._changing){ +this._moveEther(Math.round(this._viewLength/2-this._ether.dateToPixelOffset(date))); +} +}; + +Timeline._Band.prototype.dateToPixelOffset=function(date){ +return this._ether.dateToPixelOffset(date)-this._viewOffset; +}; + +Timeline._Band.prototype.pixelOffsetToDate=function(pixels){ +return this._ether.pixelOffsetToDate(pixels+this._viewOffset); +}; + +Timeline._Band.prototype.createLayerDiv=function(zIndex){ +var div=this._timeline.getDocument().createElement("div"); +div.className="timeline-band-layer"; +div.style.zIndex=zIndex; +this._innerDiv.appendChild(div); + +var innerDiv=this._timeline.getDocument().createElement("div"); +innerDiv.className="timeline-band-layer-inner"; +if(Timeline.Platform.browser.isIE){ +innerDiv.style.cursor="move"; +}else{ +innerDiv.style.cursor="-moz-grab"; +} +div.appendChild(innerDiv); + +return innerDiv; +}; + +Timeline._Band.prototype.removeLayerDiv=function(div){ +this._innerDiv.removeChild(div.parentNode); +}; + +Timeline._Band.prototype.closeBubble=function(){ +if(this._bubble!=null){ +this._bubble.close(); +this._bubble=null; +} +}; + +Timeline._Band.prototype.openBubbleForPoint=function(pageX,pageY,width,height){ +this.closeBubble(); + +this._bubble=Timeline.Graphics.createBubbleForPoint( +this._timeline.getDocument(),pageX,pageY,width,height); + +return this._bubble.content; +}; + +Timeline._Band.prototype.scrollToCenter=function(date){ +var pixelOffset=this._ether.dateToPixelOffset(date); +if(pixelOffset<-this._viewLength/2){ +this.setCenterVisibleDate(this.pixelOffsetToDate(pixelOffset+this._viewLength)); +}else if(pixelOffset>3*this._viewLength/2){ +this.setCenterVisibleDate(this.pixelOffsetToDate(pixelOffset-this._viewLength)); +} +this._autoScroll(Math.round(this._viewLength/2-this._ether.dateToPixelOffset(date))); +}; + +Timeline._Band.prototype._onMouseDown=function(innerFrame,evt,target){ +this.closeBubble(); + +this._dragging=true; +this._dragX=evt.clientX; +this._dragY=evt.clientY; +}; + +Timeline._Band.prototype._onMouseMove=function(innerFrame,evt,target){ +if(this._dragging){ +var diffX=evt.clientX-this._dragX; +var diffY=evt.clientY-this._dragY; + +this._dragX=evt.clientX; +this._dragY=evt.clientY; + +this._moveEther(this._timeline.isHorizontal()?diffX:diffY); +this._positionHighlight(); +} +}; + +Timeline._Band.prototype._onMouseUp=function(innerFrame,evt,target){ +this._dragging=false; +this._keyboardInput.focus(); +}; + +Timeline._Band.prototype._onMouseOut=function(innerFrame,evt,target){ +var coords=Timeline.DOM.getEventRelativeCoordinates(evt,innerFrame); +coords.x+=this._viewOffset; +if(coords.x<0||coords.x>innerFrame.offsetWidth|| +coords.y<0||coords.y>innerFrame.offsetHeight){ +this._dragging=false; +} +}; + +Timeline._Band.prototype._onDblClick=function(innerFrame,evt,target){ +var coords=Timeline.DOM.getEventRelativeCoordinates(evt,innerFrame); +var distance=coords.x-(this._viewLength/2-this._viewOffset); + +this._autoScroll(-distance); +}; + +Timeline._Band.prototype._onKeyDown=function(keyboardInput,evt,target){ +if(!this._dragging){ +switch(evt.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(); + +Timeline.DOM.cancelEvent(evt); +return false; +} +return true; +}; + +Timeline._Band.prototype._onKeyUp=function(keyboardInput,evt,target){ +if(!this._dragging){ +this._scrollSpeed=this._originalScrollSpeed; + +switch(evt.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(); + +Timeline.DOM.cancelEvent(evt); +return false; +} +return true; +}; + +Timeline._Band.prototype._autoScroll=function(distance){ +var b=this; +var a=Timeline.Graphics.createAnimation(function(abs,diff){ +b._moveEther(diff); +},0,distance,1000); +a.run(); +}; + +Timeline._Band.prototype._moveEther=function(shift){ +this.closeBubble(); + +this._viewOffset+=shift; +this._ether.shiftPixels(-shift); +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._fireOnScroll=function(){ +for(var i=0;i<this._onScrollListeners.length;i++){ +this._onScrollListeners[i](this); +} +}; + +Timeline._Band.prototype._setSyncWithBandDate=function(){ +if(this._syncWithBand){ +var centerDate=this._ether.pixelOffsetToDate(this.getViewLength()/2); +this._syncWithBand.setCenterVisibleDate(centerDate); +} +}; + +Timeline._Band.prototype._onHighlightBandScroll=function(){ +if(this._syncWithBand){ +var centerDate=this._syncWithBand.getCenterVisibleDate(); +var centerPixelOffset=this._ether.dateToPixelOffset(centerDate); + +this._moveEther(Math.round(this._viewLength/2-centerPixelOffset)); + +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 startDate=this._syncWithBand.getMinVisibleDate(); +var endDate=this._syncWithBand.getMaxVisibleDate(); + +if(this._highlight){ +this._etherPainter.setHighlight(startDate,endDate); +} +} +}; + +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 i=0;i<this._decorators.length;i++){ +this._decorators[i].paint(); +} +}; + +Timeline._Band.prototype._softPaintDecorators=function(){ +for(var i=0;i<this._decorators.length;i++){ +this._decorators[i].softPaint(); +} +}; + + +/* platform.js */ + + + +Timeline.Platform.os={ +isMac:false, +isWin:false, +isWin32:false, +isUnix:false +}; +Timeline.Platform.browser={ +isIE:false, +isNetscape:false, +isMozilla:false, +isFirefox:false, +isOpera:false, +isSafari:false, + +majorVersion:0, +minorVersion:0 +}; + +(function(){ +var an=navigator.appName.toLowerCase(); +var ua=navigator.userAgent.toLowerCase(); + + + +Timeline.Platform.os.isMac=(ua.indexOf('mac')!=-1); + +Timeline.Platform.os.isWin=(ua.indexOf('win')!=-1); + +Timeline.Platform.os.isWin32=Timeline.Platform.isWin&&( +ua.indexOf('95')!=-1|| +ua.indexOf('98')!=-1|| +ua.indexOf('nt')!=-1|| +ua.indexOf('win32')!=-1|| +ua.indexOf('32bit')!=-1 +); +Timeline.Platform.os.isUnix=(ua.indexOf('x11')!=-1); + + + +Timeline.Platform.browser.isIE=(an.indexOf("microsoft")!=-1); +Timeline.Platform.browser.isNetscape=(an.indexOf("netscape")!=-1); +Timeline.Platform.browser.isMozilla=(ua.indexOf("mozilla")!=-1); +Timeline.Platform.browser.isFirefox=(ua.indexOf("firefox")!=-1); +Timeline.Platform.browser.isOpera=(an.indexOf("opera")!=-1); + + +var parseVersionString=function(s){ +var a=s.split("."); +Timeline.Platform.browser.majorVersion=parseInt(a[0]); +Timeline.Platform.browser.minorVersion=parseInt(a[1]); +}; +var indexOf=function(s,sub,start){ +var i=s.indexOf(sub,start); +return i>=0?i:s.length; +}; + +if(Timeline.Platform.browser.isMozilla){ +var offset=ua.indexOf("mozilla/"); +if(offset>=0){ +parseVersionString(ua.substring(offset+8,indexOf(ua," ",offset))); +} +} + +if(Timeline.Platform.browser.isIE){ +var offset=ua.indexOf("msie "); +if(offset>=0){ +parseVersionString(ua.substring(offset+5,indexOf(ua,";",offset))); +} +} +if(Timeline.Platform.browser.isNetscape){ +var offset=ua.indexOf("rv:"); +if(offset>=0){ +parseVersionString(ua.substring(offset+3,indexOf(ua,")",offset))); +} +} + +if(Timeline.Platform.browser.isFirefox){ +var offset=ua.indexOf("firefox/"); +if(offset>=0){ +parseVersionString(ua.substring(offset+8,indexOf(ua," ",offset))); +} +} +})(); + +Timeline.Platform.getDefaultLocale=function(){ +return Timeline.Platform.clientLocale; +}; + +/* data-structure.js */ + + + +Timeline.SortedArray=function(compare,initialArray){ +this._a=(initialArray instanceof Array)?initialArray:[]; +this._compare=compare; +}; + +Timeline.SortedArray.prototype.add=function(elmt){ +var sa=this; +var index=this.find(function(elmt2){ +return sa._compare(elmt2,elmt); +}); + +if(index<this._a.length){ +this._a.splice(index,0,elmt); +}else{ +this._a.push(elmt); +} +}; + +Timeline.SortedArray.prototype.remove=function(elmt){ +var sa=this; +var index=this.find(function(elmt2){ +return sa._compare(elmt2,elmt); +}); + +while(index<this._a.length&&this._compare(this._a[index],elmt)==0){ +if(this._a[index]==elmt){ +this._a.splice(index,1); +return true; +}else{ +index++; +} +} +return false; +}; + +Timeline.SortedArray.prototype.removeAll=function(){ +this._a=[]; +}; + +Timeline.SortedArray.prototype.elementAt=function(index){ +return this._a[index]; +}; + +Timeline.SortedArray.prototype.length=function(){ +return this._a.length; +}; + +Timeline.SortedArray.prototype.find=function(compare){ +var a=0; +var b=this._a.length; + +while(a<b){ +var mid=Math.floor((a+b)/2); +var c=compare(this._a[mid]); +if(mid==a){ +return c<0?a+1:a; +}else if(c<0){ +a=mid; +}else{ +b=mid; +} +} +return a; +}; + +Timeline.SortedArray.prototype.getFirst=function(){ +return(this._a.length>0)?this._a[0]:null; +}; + +Timeline.SortedArray.prototype.getLast=function(){ +return(this._a.length>0)?this._a[this._a.length-1]:null; +}; + + + +Timeline.EventIndex=function(unit){ +var eventIndex=this; + +this._unit=(unit!=null)?unit:Timeline.NativeDateUnit; +this._events=new Timeline.SortedArray( +function(event1,event2){ +return eventIndex._unit.compare(event1.getStart(),event2.getStart()); +} +); +this._indexed=true; +}; + +Timeline.EventIndex.prototype.getUnit=function(){ +return this._unit; +}; + +Timeline.EventIndex.prototype.add=function(evt){ +this._events.add(evt); +this._indexed=false; +}; + +Timeline.EventIndex.prototype.removeAll=function(){ +this._events.removeAll(); +this._indexed=false; +}; + +Timeline.EventIndex.prototype.getCount=function(){ +return this._events.length(); +}; + +Timeline.EventIndex.prototype.getIterator=function(startDate,endDate){ +if(!this._indexed){ +this._index(); +} +return new Timeline.EventIndex._Iterator(this._events,startDate,endDate,this._unit); +}; + +Timeline.EventIndex.prototype.getAllIterator=function(){ +return new Timeline.EventIndex._AllIterator(this._events); +}; + +Timeline.EventIndex.prototype.getEarliestDate=function(){ +var evt=this._events.getFirst(); +return(evt==null)?null:evt.getStart(); +}; + +Timeline.EventIndex.prototype.getLatestDate=function(){ +var evt=this._events.getLast(); +if(evt==null){ +return null; +} + +if(!this._indexed){ +this._index(); +} + +var index=evt._earliestOverlapIndex; +var date=this._events.elementAt(index).getEnd(); +for(var i=index+1;i<this._events.length();i++){ +date=this._unit.later(date,this._events.elementAt(i).getEnd()); +} + +return date; +}; + +Timeline.EventIndex.prototype._index=function(){ + + +var l=this._events.length(); +for(var i=0;i<l;i++){ +var evt=this._events.elementAt(i); +evt._earliestOverlapIndex=i; +} + +var toIndex=1; +for(var i=0;i<l;i++){ +var evt=this._events.elementAt(i); +var end=evt.getEnd(); + +toIndex=Math.max(toIndex,i+1); +while(toIndex<l){ +var evt2=this._events.elementAt(toIndex); +var start2=evt2.getStart(); + +if(this._unit.compare(start2,end)<0){ +evt2._earliestOverlapIndex=i; +toIndex++; +}else{ +break; +} +} +} +this._indexed=true; +}; + +Timeline.EventIndex._Iterator=function(events,startDate,endDate,unit){ +this._events=events; +this._startDate=startDate; +this._endDate=endDate; +this._unit=unit; + +this._currentIndex=events.find(function(evt){ +return unit.compare(evt.getStart(),startDate); +}); +if(this._currentIndex-1>=0){ +this._currentIndex=this._events.elementAt(this._currentIndex-1)._earliestOverlapIndex; +} +this._currentIndex--; + +this._maxIndex=events.find(function(evt){ +return unit.compare(evt.getStart(),endDate); +}); + +this._hasNext=false; +this._next=null; +this._findNext(); +}; + +Timeline.EventIndex._Iterator.prototype={ +hasNext:function(){return this._hasNext;}, +next:function(){ +if(this._hasNext){ +var next=this._next; +this._findNext(); + +return next; +}else{ +return null; +} +}, +_findNext:function(){ +var unit=this._unit; +while((++this._currentIndex)<this._maxIndex){ +var evt=this._events.elementAt(this._currentIndex); +if(unit.compare(evt.getStart(),this._endDate)<0&& +unit.compare(evt.getEnd(),this._startDate)>0){ + +this._next=evt; +this._hasNext=true; +return; +} +} +this._next=null; +this._hasNext=false; +} +}; + +Timeline.EventIndex._AllIterator=function(events){ +this._events=events; +this._index=0; +}; + +Timeline.EventIndex._AllIterator.prototype={ +hasNext:function(){ +return this._index<this._events.length(); +}, +next:function(){ +return this._index<this._events.length()? +this._events.elementAt(this._index++):null; +} +}; + +/* date-time.js */ + + + +Timeline.DateTime=new Object(); + +Timeline.DateTime.MILLISECOND=0; +Timeline.DateTime.SECOND=1; +Timeline.DateTime.MINUTE=2; +Timeline.DateTime.HOUR=3; +Timeline.DateTime.DAY=4; +Timeline.DateTime.WEEK=5; +Timeline.DateTime.MONTH=6; +Timeline.DateTime.YEAR=7; +Timeline.DateTime.DECADE=8; +Timeline.DateTime.CENTURY=9; +Timeline.DateTime.MILLENNIUM=10; + +Timeline.DateTime.EPOCH=-1; +Timeline.DateTime.ERA=-2; + +Timeline.DateTime.gregorianUnitLengths=[]; +(function(){ +var d=Timeline.DateTime; +var a=d.gregorianUnitLengths; + +a[d.MILLISECOND]=1; +a[d.SECOND]=1000; +a[d.MINUTE]=a[d.SECOND]*60; +a[d.HOUR]=a[d.MINUTE]*60; +a[d.DAY]=a[d.HOUR]*24; +a[d.WEEK]=a[d.DAY]*7; +a[d.MONTH]=a[d.DAY]*31; +a[d.YEAR]=a[d.DAY]*365; +a[d.DECADE]=a[d.YEAR]*10; +a[d.CENTURY]=a[d.YEAR]*100; +a[d.MILLENNIUM]=a[d.YEAR]*1000; +})(); + +Timeline.DateTime.parseGregorianDateTime=function(o){ +if(o==null){ +return null; +}else if(o instanceof Date){ +return o; +} + +var s=o.toString(); +if(s.length>0&&s.length<8){ +var space=s.indexOf(" "); +if(space>0){ +var year=parseInt(s.substr(0,space)); +var suffix=s.substr(space+1); +if(suffix.toLowerCase()=="bc"){ +year=1-year; +} +}else{ +var year=parseInt(s); +} + +var d=new Date(0); +d.setUTCFullYear(year); + +return d; +} + +try{ +return new Date(Date.parse(s)); +}catch(e){ +return null; +} +}; + +Timeline.DateTime._iso8601DateRegExp="^(-?)([0-9]{4})("+[ +"(-?([0-9]{2})(-?([0-9]{2}))?)", +"(-?([0-9]{3}))", +"(-?W([0-9]{2})(-?([1-7]))?)" +].join("|")+")?$"; + +Timeline.DateTime.setIso8601Date=function(dateObject,string){ + + +var regexp=Timeline.DateTime._iso8601DateRegExp; +var d=string.match(new RegExp(regexp)); +if(!d){ +throw new Error("Invalid date string: "+string); +} + +var sign=(d[1]=="-")?-1:1; +var year=sign*d[2]; +var month=d[5]; +var date=d[7]; +var dayofyear=d[9]; +var week=d[11]; +var dayofweek=(d[13])?d[13]:1; + +dateObject.setUTCFullYear(year); +if(dayofyear){ +dateObject.setUTCMonth(0); +dateObject.setUTCDate(Number(dayofyear)); +}else if(week){ +dateObject.setUTCMonth(0); +dateObject.setUTCDate(1); +var gd=dateObject.getUTCDay(); +var day=(gd)?gd:7; +var offset=Number(dayofweek)+(7*Number(week)); + +if(day<=4){ +dateObject.setUTCDate(offset+1-day); +}else{ +dateObject.setUTCDate(offset+8-day); +} +}else{ +if(month){ +dateObject.setUTCDate(1); +dateObject.setUTCMonth(month-1); +} +if(date){ +dateObject.setUTCDate(date); +} +} + +return dateObject; +}; + +Timeline.DateTime.setIso8601Time=function(dateObject,string){ + + + +var timezone="Z|(([-+])([0-9]{2})(:?([0-9]{2}))?)$"; +var d=string.match(new RegExp(timezone)); + +var offset=0; +if(d){ +if(d[0]!='Z'){ +offset=(Number(d[3])*60)+Number(d[5]); +offset*=((d[2]=='-')?1:-1); +} +string=string.substr(0,string.length-d[0].length); +} + + +var regexp="^([0-9]{2})(:?([0-9]{2})(:?([0-9]{2})(\.([0-9]+))?)?)?$"; +var d=string.match(new RegExp(regexp)); +if(!d){ +dojo.debug("invalid time string: "+string); +return false; +} +var hours=d[1]; +var mins=Number((d[3])?d[3]:0); +var secs=(d[5])?d[5]:0; +var ms=d[7]?(Number("0."+d[7])*1000):0; + +dateObject.setUTCHours(hours); +dateObject.setUTCMinutes(mins); +dateObject.setUTCSeconds(secs); +dateObject.setUTCMilliseconds(ms); + +return dateObject; +}; + +Timeline.DateTime.setIso8601=function(dateObject,string){ + + +var comps=(string.indexOf("T")==-1)?string.split(" "):string.split("T"); + +Timeline.DateTime.setIso8601Date(dateObject,comps[0]); +if(comps.length==2){ +Timeline.DateTime.setIso8601Time(dateObject,comps[1]); +} +return dateObject; +}; + +Timeline.DateTime.parseIso8601DateTime=function(string){ +try{ +return Timeline.DateTime.setIso8601(new Date(0),string); +}catch(e){ +return null; +} +}; + +Timeline.DateTime.roundDownToInterval=function(date,intervalUnit,timeZone,multiple,firstDayOfWeek){ +var timeShift=timeZone* +Timeline.DateTime.gregorianUnitLengths[Timeline.DateTime.HOUR]; + +var date2=new Date(date.getTime()+timeShift); +var clearInDay=function(d){ +d.setUTCMilliseconds(0); +d.setUTCSeconds(0); +d.setUTCMinutes(0); +d.setUTCHours(0); +}; +var clearInYear=function(d){ +clearInDay(d); +d.setUTCDate(1); +d.setUTCMonth(0); +}; + +switch(intervalUnit){ +case Timeline.DateTime.MILLISECOND: +var x=date2.getUTCMilliseconds(); +date2.setUTCMilliseconds(x-(x%multiple)); +break; +case Timeline.DateTime.SECOND: +date2.setUTCMilliseconds(0); + +var x=date2.getUTCSeconds(); +date2.setUTCSeconds(x-(x%multiple)); +break; +case Timeline.DateTime.MINUTE: +date2.setUTCMilliseconds(0); +date2.setUTCSeconds(0); + +var x=date2.getUTCMinutes(); +date2.setTime(date2.getTime()- +(x%multiple)*Timeline.DateTime.gregorianUnitLengths[Timeline.DateTime.MINUTE]); +break; +case Timeline.DateTime.HOUR: +date2.setUTCMilliseconds(0); +date2.setUTCSeconds(0); +date2.setUTCMinutes(0); + +var x=date2.getUTCHours(); +date2.setUTCHours(x-(x%multiple)); +break; +case Timeline.DateTime.DAY: +clearInDay(date2); +break; +case Timeline.DateTime.WEEK: +clearInDay(date2); +var d=(date2.getUTCDay()+7-firstDayOfWeek)%7; +date2.setTime(date2.getTime()- +d*Timeline.DateTime.gregorianUnitLengths[Timeline.DateTime.DAY]); +break; +case Timeline.DateTime.MONTH: +clearInDay(date2); +date2.setUTCDate(1); + +var x=date2.getUTCMonth(); +date2.setUTCMonth(x-(x%multiple)); +break; +case Timeline.DateTime.YEAR: +clearInYear(date2); + +var x=date2.getUTCFullYear(); +date2.setUTCFullYear(x-(x%multiple)); +break; +case Timeline.DateTime.DECADE: +clearInYear(date2); +date2.setUTCFullYear(Math.floor(date2.getUTCFullYear()/10)*10); +break; +case Timeline.DateTime.CENTURY: +clearInYear(date2); +date2.setUTCFullYear(Math.floor(date2.getUTCFullYear()/100)*100); +break; +case Timeline.DateTime.MILLENNIUM: +clearInYear(date2); +date2.setUTCFullYear(Math.floor(date2.getUTCFullYear()/1000)*1000); +break; +} + +date.setTime(date2.getTime()-timeShift); +}; + +Timeline.DateTime.roundUpToInterval=function(date,intervalUnit,timeZone,multiple,firstDayOfWeek){ +var originalTime=date.getTime(); +Timeline.DateTime.roundDownToInterval(date,intervalUnit,timeZone,multiple,firstDayOfWeek); +if(date.getTime()<originalTime){ +date.setTime(date.getTime()+ +Timeline.DateTime.gregorianUnitLengths[intervalUnit]*multiple); +} +}; + +Timeline.DateTime.incrementByInterval=function(date,intervalUnit){ +switch(intervalUnit){ +case Timeline.DateTime.MILLISECOND: +date.setTime(date.getTime()+1) +break; +case Timeline.DateTime.SECOND: +date.setTime(date.getTime()+1000); +break; +case Timeline.DateTime.MINUTE: +date.setTime(date.getTime()+ +Timeline.DateTime.gregorianUnitLengths[Timeline.DateTime.MINUTE]); +break; +case Timeline.DateTime.HOUR: +date.setTime(date.getTime()+ +Timeline.DateTime.gregorianUnitLengths[Timeline.DateTime.HOUR]); +break; +case Timeline.DateTime.DAY: +date.setUTCDate(date.getUTCDate()+1); +break; +case Timeline.DateTime.WEEK: +date.setUTCDate(date.getUTCDate()+7); +break; +case Timeline.DateTime.MONTH: +date.setUTCMonth(date.getUTCMonth()+1); +break; +case Timeline.DateTime.YEAR: +date.setUTCFullYear(date.getUTCFullYear()+1); +break; +case Timeline.DateTime.DECADE: +date.setUTCFullYear(date.getUTCFullYear()+10); +break; +case Timeline.DateTime.CENTURY: +date.setUTCFullYear(date.getUTCFullYear()+100); +break; +case Timeline.DateTime.MILLENNIUM: +date.setUTCFullYear(date.getUTCFullYear()+1000); +break; +} +}; + +Timeline.DateTime.removeTimeZoneOffset=function(date,timeZone){ +return new Date(date.getTime()+ +timeZone*Timeline.DateTime.gregorianUnitLengths[Timeline.DateTime.HOUR]); +}; + + + +/* debug.js */ + + + +Timeline.Debug=new Object(); + +Timeline.Debug.log=function(msg){ +}; + +Timeline.Debug.exception=function(e){ +alert("Caught exception: "+(Timeline.Platform.isIE?e.message:e)); +}; + + + +/* dom.js */ + + + +Timeline.DOM=new Object(); + +Timeline.DOM.registerEventWithObject=function(elmt,eventName,obj,handler){ +Timeline.DOM.registerEvent(elmt,eventName,function(elmt2,evt,target){ +return handler.call(obj,elmt2,evt,target); +}); +}; + +Timeline.DOM.registerEvent=function(elmt,eventName,handler){ +var handler2=function(evt){ +evt=(evt)?evt:((event)?event:null); +if(evt){ +var target=(evt.target)? +evt.target:((evt.srcElement)?evt.srcElement:null); + +if(target){ + +target=(target.nodeType==1||target.nodeType==9)? +target:target.parentNode; + +} + +return handler(elmt,evt,target); +} +return true; +} + +if(Timeline.Platform.browser.isIE){ +elmt.attachEvent("on"+eventName,handler2); +}else{ +elmt.addEventListener(eventName,handler2,false); +} +}; + +Timeline.DOM.getPageCoordinates=function(elmt){ +var left=0; +var top=0; + +if(elmt.nodeType!=1){ +elmt=elmt.parentNode; +} + +while(elmt!=null){ +left+=elmt.offsetLeft; +top+=elmt.offsetTop; + +elmt=elmt.offsetParent; +} +return{left:left,top:top}; +}; + +Timeline.DOM.getEventRelativeCoordinates=function(evt,elmt){ +if(Timeline.Platform.browser.isIE){ +return{ +x:evt.offsetX, +y:evt.offsetY +}; +}else{ +var coords=Timeline.DOM.getPageCoordinates(elmt); +return{ +x:evt.pageX-coords.left, +y:evt.pageY-coords.top +}; +} +}; + +Timeline.DOM.cancelEvent=function(evt){ +evt.returnValue=false; +evt.cancelBubble=true; +if("preventDefault"in evt){ +evt.preventDefault(); +} +}; + + + +/* graphics.js */ + + + +Timeline.Graphics=new Object(); +Timeline.Graphics.pngIsTranslucent=(!Timeline.Platform.browser.isIE)||(Timeline.Platform.browser.majorVersion>6); + + +Timeline.Graphics.createTranslucentImage=function(doc,url,verticalAlign){ +var elmt; +if(Timeline.Graphics.pngIsTranslucent){ +elmt=doc.createElement("img"); +elmt.setAttribute("src",url); +}else{ +elmt=doc.createElement("img"); +elmt.style.display="inline"; +elmt.style.width="1px"; +elmt.style.height="1px"; +elmt.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+url+"', sizingMethod='image')"; +} +elmt.style.verticalAlign=(verticalAlign!=null)?verticalAlign:"middle"; +return elmt; +}; + +Timeline.Graphics.setOpacity=function(elmt,opacity){ +if(Timeline.Platform.browser.isIE){ +elmt.style.filter="progid:DXImageTransform.Microsoft.Alpha(Style=0,Opacity="+opacity+")"; +}else{ +var o=(opacity/100).toString(); +elmt.style.opacity=o; +elmt.style.MozOpacity=o; +} +}; + +Timeline.Graphics._bubbleMargins={ +top:33, +bottom:42, +left:33, +right:40 +} + + +Timeline.Graphics._arrowOffsets={ +top:0, +bottom:9, +left:1, +right:8 +} + +Timeline.Graphics._bubblePadding=15; +Timeline.Graphics._bubblePointOffset=6; +Timeline.Graphics._halfArrowWidth=18; + +Timeline.Graphics.createBubbleForPoint=function(doc,pageX,pageY,contentWidth,contentHeight){ +function getWindowDims(){ +if(typeof window.innerWidth=='number'){ +return{w:window.innerWidth,h:window.innerHeight}; +}else if(document.documentElement&&document.documentElement.clientWidth){ +return{ +w:document.documentElement.clientWidth, +h:document.documentElement.clientHeight +}; +}else if(document.body&&document.body.clientWidth){ +return{ +w:document.body.clientWidth, +h:document.body.clientHeight +}; +} +} + +var bubble={ +_closed:false, +_doc:doc, +close:function(){ +if(!this._closed){ +this._doc.body.removeChild(this._div); +this._doc=null; +this._div=null; +this._content=null; +this._closed=true; +} +} +}; + +var dims=getWindowDims(); +var docWidth=dims.w; +var docHeight=dims.h; + +var marg... [truncated message content] |