/* decorators.js */ Timeline.SpanHighlightDecorator=function(A){this._unit=("unit" in A)?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; this._endLabel=A.endLabel; this._color=A.color; this._cssClass=("cssClass" in A)?A.cssClass:null; this._opacity=("opacity" in A)?A.opacity:100; }; 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(10); 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._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=("unit" in A)?A.unit:SimileAjax.NativeDateUnit; this._date=(typeof A.date=="string")?this._unit.parseFromObject(A.date):A.date; this._width=("width" in A)?A.width:10; this._color=A.color; this._cssClass=("cssClass" in A)?A.cssClass:""; this._opacity=("opacity" in A)?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._opacity<100){SimileAjax.Graphics.setOpacity(F,this._opacity); }this._layerDiv.appendChild(F); if(this._timeline.isHorizontal()){F.style.left=B+"px"; }else{F.style.top=B+"px"; }}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.addOnSelectListener=function(A){this._onSelectListeners.push(A); }; Timeline.DetailedEventPainter.prototype.removeOnSelectListener=function(B){for(var A=0; A=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(JD&&(!(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(CD&&(!(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=C){break; }}return A; }; Timeline.DetailedEventPainter.prototype._findFreeUpperTrackForText=function(A,C){for(; A=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(A,D,B){var C=document.createElement("div"); B.fillInfoBubble(C,this._params.theme,this._band.getLabeller()); SimileAjax.WindowManager.cancelPopups(); SimileAjax.Graphics.createBubbleForContentAndPoint(C,A,D,this._params.theme.event.bubble.width); }; Timeline.DetailedEventPainter.prototype._fireOnSelect=function(A){for(var B=0; BE; D++){var A=this._zones[D]; if(EA.startTime){this._zones.splice(D,0,{startTime:A.startTime,endTime:E,unit:A.unit,multiple:A.multiple}); D++; A.startTime=E; }if(B=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()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; E0; 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=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(F0){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; }; /* 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._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.addOnSelectListener=function(A){this._onSelectListeners.push(A); }; Timeline.OriginalEventPainter.prototype.removeOnSelectListener=function(B){for(var A=0; AC){break; }}return B; }; Timeline.OriginalEventPainter.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.className="timeline-event-icon"; A.style.left=C+"px"; A.style.top=I+"px"; A.appendChild(D); 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.OriginalEventPainter.prototype._paintEventLabel=function(J,K,C,G,A,H,F){var I=this._timeline.getDocument(); var B=I.createElement("div"); B.className="timeline-event-label"; B.style.left=C+"px"; B.style.width=A+"px"; B.style.top=G+"px"; B.innerHTML=K; if(J._title!=null){B.title=J._title; }var D=J.getTextColor(); if(D==null){D=J.getColor(); }if(D!=null){B.style.color=D; }var E=J.getClassName(); if(E!=null){B.className+=" "+E; }this._eventLayer.appendChild(B); return{left:C,top:G,width:A,height:H,elmt:B}; }; Timeline.OriginalEventPainter.prototype._paintEventTape=function(N,B,D,A,G,C,K,J){var F=A-D; var E=J.event.tape.height; var L=K.trackOffset+B*K.trackIncrement; var O=this._timeline.getDocument().createElement("div"); O.className="timeline-event-tape"; O.style.left=D+"px"; O.style.width=F+"px"; O.style.top=L+"px"; if(N._title!=null){O.title=N._title; }if(G!=null){O.style.backgroundColor=G; }var M=N.getTapeImage(); var H=N.getTapeRepeat(); H=H!=null?H:"repeat"; if(M!=null){O.style.backgroundImage="url("+M+")"; O.style.backgroundRepeat=H; }SimileAjax.Graphics.setOpacity(O,C); var I=N.getClassName(); if(I!=null){O.className+=" "+I; }this._eventLayer.appendChild(O); return{left:D,top:L,width:F,height:E,elmt:O}; }; Timeline.OriginalEventPainter.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.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(A,D,B){var C=document.createElement("div"); B.fillInfoBubble(C,this._params.theme,this._band.getLabeller()); SimileAjax.WindowManager.cancelPopups(); SimileAjax.Graphics.createBubbleForContentAndPoint(C,A,D,this._params.theme.event.bubble.width); }; Timeline.OriginalEventPainter.prototype._fireOnSelect=function(A){for(var B=0; B=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; A0){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 C(D){return(A[D]!=null&&A[D]!="")?A[D]:null; }var B=(A.id)?A.id.trim():""; this._id=B.length>0?B:("e"+Math.floor(Math.random()*1000000)); 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:(A.instant?this._start:this._end); this._eventID=C("eventID"); this._text=SimileAjax.HTML.deEntify(A.text); this._description=SimileAjax.HTML.deEntify(A.description); this._image=C("image"); this._link=C("link"); this._title=C("hoverText"); this._title=C("caption"); this._icon=C("icon"); this._color=C("color"); this._textColor=C("textColor"); this._classname=C("classname"); this._tapeImage=C("tapeImage"); this._tapeRepeat=C("tapeRepeat"); 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; },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){if(this._wikiURL!=null&&this._wikiSection!=null){var C=this.getProperty("wikiID"); if(C==null||C.length==0){C=this.getText(); }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("]")); }else{D.style.display="none"; }},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.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},overviewTrack:{offset:20,tickHeight:6,height:2,gap:1},tape:{height:4},instant:{icon:Timeline.urlPrefix+"images/dull-blue-circle.png",iconWidth:10,iconHeight:10,impreciseOpacity:20},duration:{impreciseOpacity:20},label:{backgroundOpacity:50,offsetFromLine:3},highlightColors:[],bubble:{width:250,height:125,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.strings={}; Timeline.getDefaultLocale=function(){return Timeline.clientLocale; }; Timeline.create=function(B,A,C,D){return new Timeline._Impl(B,A,C,D); }; Timeline.HORIZONTAL=0; Timeline.VERTICAL=1; Timeline._defaultTheme=null; 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._Impl=function(B,A,C,D){SimileAjax.WindowManager.initialize(); this._containerDiv=B; this._bandInfos=A; this._orientation=C==null?Timeline.HORIZONTAL:C; this._unit=(D!=null)?D:SimileAjax.NativeDateUnit; this._initialize(); }; Timeline._Impl.prototype.dispose=function(){for(var A=0; A 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; F0){var A=parseInt(E.substr(0,H)); var D=A*B/100; }else{var D=parseInt(E); }J.setBandShiftAndWidth(C,D); J.setViewLength(G); C+=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(); }; Timeline._Band=function(B,G,C){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; G.eventPainter.initialize(this,B); this._decorators=("decorators" in G)?G.decorators:[]; for(var D=0; D3*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(); 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._fireOnScroll=function(){for(var A=0; A0?B:A; }; Timeline.NativeDateUnit.change=function(A,B){return new Date(A.getTime()+B); };