Something went wrong on our end
timeline.min.js 28.12 KiB
/*!
* jQuery Timeline Plugin
* ------------------------
* Version: 1.0.0
* Author: Ka2 ( https://ka2.org/ )
* Repository: https://github.com/ka215/jquery.timeline
* Lisenced: MIT
*/
!function(e){function t(t){var i,n,r,l=e(t),s=l.data("timeline");console.info(s.timeline[0].attributes),r=/-|\/|\s|\:/,n=s.timeline.attr("actual-start-datetime").split(r);var c=new Date(Number(n[0]),Number(n[1])-1,Number(n[2]),Number(n[3]),Number(n[4]),Number(n[5]));Number(n[0])<100&&c.setFullYear(Number(n[0]));var h=e("<div />",{addClass:"timeline-header"}),u=e("<div />",{addClass:"timeline-body"}),p=e("<div />",{addClass:"timeline-footer"}),g=e("<div />",{addClass:"timeline-wrapper"}),y=e("<table />",{addClass:"timeline-timetable timeline-scale"}),v=e("<div />",{addClass:"timeline-events"}),b=e("<table />",{addClass:"timeline-timetable timeline-grids"}),w=e("<div />",{addClass:"timeline-needle-pointer"}),x=e("<div />",{addClass:"timeline-events default-events"}),M=new Date(c),D={years:{medium_scale:"months",medium_cols:12,small_scale:"days",small_cols:Number(s.timeline.attr("min-grid-per"))},months:{medium_scale:"days",medium_cols:new Date(c.getFullYear(),c.getMonth()+1,0).getDate(),small_scale:"hours",small_cols:Number(s.timeline.attr("min-grid-per"))},days:{medium_scale:"hours",medium_cols:24,small_scale:"minutes",small_cols:Number(s.timeline.attr("min-grid-per"))}},k=s.timeline.attr("scale"),N=D[k].medium_scale,F=D[k].small_scale,Y=Number(s.timeline.attr("min-grid-per"))*Number(s.timeline.attr("min-grid-size")),C=[D[k].medium_cols];if(l.hasClass("timeline-container")||l.addClass("timeline-container"),l.find(".timeline-events").length>0&&(l.find(".timeline-events").clone().appendTo(x),a(x,s)),"point"===s.timeline.attr("type")||"mixed"===s.timeline.attr("type"))var L=e("<canvas />",{addClass:"timeline-line-canvas"});if(l.empty(),M="years"===s.timeline.attr("scale")?new Date(M.setFullYear(M.getFullYear()+Number(s.timeline.attr("range"))-1)):"months"===s.timeline.attr("scale")?new Date(M.setMonth(M.getMonth()+Number(s.timeline.attr("range"))-1)):new Date(M.setDate(M.getDate()+Number(s.timeline.attr("range"))-1)),"days"===N&&Number(s.timeline.attr("range"))>1)for(i=1;i<Number(s.timeline.attr("range"));i++)C.push(new Date(c.getFullYear(),c.getMonth()+1+i,0).getDate());else for(i=1;i<Number(s.timeline.attr("range"));i++)C.push(D[k].medium_cols);if(s.timeline.attr("show-headline")){var z,H,T,I,S;switch(s.timeline.attr("scale")){case"years":T=I="",1==s.timeline.attr("zerofill-year")&&(c.getFullYear()<100?T="00":c.getFullYear()<1e3&&(T="0"),M.getFullYear()<100?I="00":M.getFullYear()<1e3&&(I="0")),z=s.timeline.attr("datetime-prefix")+T+f(s.timeline.attr("datetime-format-year"),c),H=s.timeline.attr("datetime-prefix")+I+f(s.timeline.attr("datetime-format-year"),M);break;case"months":z=s.timeline.attr("datetime-prefix")+f(s.timeline.attr("datetime-format-year")+s.timeline.attr("datetime-format-month"),c),H=s.timeline.attr("datetime-prefix")+f(s.timeline.attr("datetime-format-year")+s.timeline.attr("datetime-format-month"),M);break;case"days":z=s.timeline.attr("datetime-prefix")+f(s.timeline.attr("datetime-format-full"),c),H=s.timeline.attr("datetime-prefix")+f(s.timeline.attr("datetime-format-full"),M)}S='<span class="timeline-from-date">'+z+'</span><span class="timeline-to-date">'+H+"</span>",h.append('<h3 class="timeline-headline">'+S+"</h3>")}var j,P,A,E=mediumLevelRow=smallLevelRow="<tr>",_=d(C)*D[k].small_cols;for(s.timeline.attr("total-cols",_),i=0;i<Number(s.timeline.attr("range"));i++){switch(E+='<th colspan="'+C[i]*D[k].small_cols+'" class="scale-major scale-'+k+'">',j=new Date(c),k){case"years":j.setFullYear(j.getFullYear()+i),A=f(s.timeline.attr("datetime-format-year"),j);break;case"months":j.setMonth(j.getMonth()+i),A=f(s.timeline.attr("datetime-format-month"),j);break;case"days":j.setDate(j.getDate()+i),A=f(s.timeline.attr("datetime-format-day"),j)}E+=A+"</th>"}for(E+="</tr>",i=0;i<d(C);i++){switch(mediumLevelRow+='<th colspan="'+D[k].small_cols+'" class="scale-medium scale-'+N+'">',j=new Date(c),N){case"months":P=i%D[k].medium_cols,A=Y<18?"":P+1;break;case"days":j.setDate(j.getDate()+i),A=Y<20?"":j.getDate();break;case"hours":P=i%D[k].medium_cols,A=Y<40?"":P+":00"}mediumLevelRow+=A+"</th>"}for(mediumLevelRow+="</tr>",i=0;i<_;i++)smallLevelRow+='<th class="scale-small scale-'+F+'"><span class="spacer-cell"></span></th>';var O="<tr>";for(i=0;i<_;i++)O+='<td class="scale-small"><span class="spacer-cell"></span></td>';if(O+="</tr>",0==s.timeline.attr("show-pointer"))w.css("display","none");else{var W=m(o(!0),s);W>-1?w.css("left",W+"px"):w.css("display","none")}var G=e("<div />",{addClass:"timeline-loader",css:{display:"block"}});G.append('<i class="jqtl-spinner"></i><span class="sr-only">Loading...</span>');var J='<div class="timeline-nav">',X=""===s.timeline.attr("navi-icon-left")?"jqtl-circle-left":s.timeline.attr("navi-icon-left"),R=""===s.timeline.attr("navi-icon-right")?"jqtl-circle-right":s.timeline.attr("navi-icon-right");return J+='<a href="javascript:void(0);" class="timeline-to-prev '+(/^jqtl-circle-.*$/.test(X)?"timeline-to-prev-default":"timeline-to-prev-custom")+'"><i class="'+X+'"></i></a>',J+='<a href="javascript:void(0);" class="timeline-to-next '+(/^jqtl-circle-.*$/.test(R)?"timeline-to-next-default":"timeline-to-next-custom")+'"><i class="'+R+'"></i></a>',J+="</div>",y.append("<thead>"+E+mediumLevelRow+smallLevelRow+"</thead>"),b.append("<tbody>"+O+"</tbody>"),"point"===s.timeline.attr("type")||"mixed"===s.timeline.attr("type")?g.append(y.prop("outerHTML")+v.prop("outerHTML")+L.prop("outerHTML")+b.prop("outerHTML")+w.prop("outerHTML")):g.append(y.prop("outerHTML")+v.prop("outerHTML")+b.prop("outerHTML")+w.prop("outerHTML")),u.append(g),p.append(J),l.append(h),l.append(u),l.append(p),l.append(G.prop("outerHTML")),l}function i(t){var i=e(t),a=i.data("timeline");y="auto"===a.timeline.attr("timeline-height")||"number"!=typeof a.timeline.attr("timeline-height")?Number(a.timeline.attr("rows"))*p:Number(a.timeline.attr("timeline-height"));var n={width:i.find(".timeline-timetable.timeline-scale").outerWidth(),height:63};i.find(".timeline-wrapper")[0].offsetHeight!=n.height+y&&(i.find(".timeline-wrapper").css("height",n.height+y+"px"),i.find(".timeline-events").css("height",y+"px"),i.find(".timeline-line-canvas").css("height",y+"px").attr("width",n.width).attr("height",y),i.find(".timeline-grids").css("height",y+"px")),a.timeline.attr("min-grid-size",Number(a.timeline.attr("min-grid-size"))<5?30:Number(a.timeline.attr("min-grid-size"))),i.find(".spacer-cell").width()!=a.timeline.attr("min-grid-size")-1&&i.find(".spacer-cell").css("width",a.timeline.attr("min-grid-size")-1+"px");var r=-1*((i.find(".timeline-body").outerHeight()-i.find(".timeline-scale").outerHeight())/2+i.find(".timeline-to-prev").outerHeight());return i.find(".timeline-to-prev").css("top",r+"px"),i.find(".timeline-to-next").css("top",r+"px"),i.find(".timeline-body").scroll(function(){var t=e(this).scrollLeft();t<1?i.find(".timeline-to-prev").hide():t>=n.width-e(this).outerWidth()-2?i.find(".timeline-to-next").hide():(i.find(".timeline-to-prev").show(),i.find(".timeline-to-next").show())}),i}function a(t,i){if(e(t).find(".timeline-events").children().length>0){var a=[],n=[],r=0;e(t).find(".timeline-events").children().each(function(){if(e(this).data("timelineNode")){var t=new Function("return "+e(this).data("timelineNode"))();t.label=e(this).text(),t.eventId&&n.push(Number(t.eventId)),a.push(t)}}),a.length>0&&(r=n.length>0?Math.max.apply(null,n)+1:r,a.forEach(function(e,t,i){e.eventId||(i[t].eventId=r,r++)}),i.timeline.text(JSON.stringify(a)))}}function n(t){var i=e(t),a=i.data("timeline"),n=new Function("return "+a.timeline.text())(),l=new Date(a.timeline.attr("actual-start-datetime")),o=new Date(l),m=a.timeline.attr("type"),d=a.timeline.attr("scale"),c=Number(a.timeline.attr("range")),h=(Number(a.timeline.attr("rows")),Number(a.timeline.attr("total-cols"))),u=Number(a.timeline.attr("min-grid-per")),f=Number(a.timeline.attr("min-grid-size")),y={x:0,y:0,w:0},v=f*h-1;switch(i.find(".timeline-loader").css("display","block"),d){case"years":o.setYear(o.getFullYear()+c);break;case"months":o.setMonth(o.getMonth()+c-1);break;case"days":o.setDate(o.getDate()+c)}console.info(["placeEvents",a.timeline,n,l,o,h,v]),i.find(".timeline-events").empty(),n.forEach(function(t,a){if(t.start){var n,r=new Date(t.start),c=void 0==t.end?new Date(t.start):new Date(t.end),h=u*f;if(s(r,l,o)){switch(d){case"years":y.x=Math.round((r-l)*v/(o-l));break;case"months":y.x=Math.floor((r-l)/864e5*h);break;case"days":y.x=Math.floor((r-l)/36e5*h)}if(y.y=void 0!==t.row?(t.row-1)*p:0,s(c,l,o)){switch(d){case"years":y.w=Math.floor((c-l)/2592e6*h-y.x);break;case"months":y.w=Math.floor((c-l)/864e5*h-y.x);break;case"days":y.w=Math.floor((c-l)/36e5*h-y.x)}0==y.w&&(y.w=1)}else switch(d){case"years":y.w=Math.floor((o-l)/2592e6*h-y.x);break;case"months":y.w=Math.floor((o-l)/864e5*h-y.x);break;case"days":y.w=Math.floor((o-l)/36e5*h-y.x)}}else if(s(c,l,o))switch(y.x=0,y.y=void 0!==t.row?(t.row-1)*p:0,d){case"years":y.w=Math.floor((c-l)/2592e6*h);break;case"months":y.w=Math.floor((c-l)/864e5*h);break;case"days":y.w=Math.floor((c-l)/36e5*h)}else if(s(l,r,c)&&s(o,r,c))switch(y.x=0,y.y=void 0!==t.row?(t.row-1)*p:0,d){case"years":y.w=Math.floor((o-l)/2592e6*h);break;case"months":y.w=Math.floor((o-l)/864e5*h);break;case"days":y.w=Math.floor((o-l)/36e5*h)}else y.w=0;if(console.info([y.x,y.y,y.w,r,c,t.eventId]),y.w>0){if("point"===m){var b=t.margin?Number(t.margin):g;b=(b=b<0?0:b)>p/2?p/2-1:b,n=e("<div />",{addClass:"timeline-node timeline-event-pointer",id:"evt-"+t.eventId,css:{left:y.x-Math.floor(p/2)+b+"px",top:y.y+b+"px",width:p-2*b+"px",height:p-2*b+"px"},title:t.label}),t.bdColor?n.css("border-color",t.bdColor):t.bgColor&&n.css("border-color",t.bgColor),t.image&&n.css("background-image","url("+t.image+")"),t.relation&&e.each(t.relation,function(t,i){-1==e.inArray(t,["before","after","size"])||isNaN(i)?"curve"===t?-1!=e.inArray(i,["lt","rt","lb","rb"])&&n.attr("data-relay-curve",i):n.attr("data-relay-"+t,i):n.attr("data-relay-"+t,Number(i))})}else n=e("<div />",{addClass:"timeline-node timeline-text-truncate",id:"evt-"+t.eventId,css:{left:y.x+"px",top:y.y+"px",width:y.w+"px"},text:t.label}),t.color&&n.css("color",t.color),y.w<f&&n.css("padding-left","1.5rem").css("padding-right","0").css("text-overflow","clip");t.bgColor&&n.css("background-color",t.bgColor),t.extend&&e.each(t.extend,function(e,t){n.attr("data-"+e,t)}),i.find(".timeline-events").append(n.prop("outerHTML"))}}}),i.find(".timeline-loader").css("display","none"),"point"!==m&&"mixed"!==m||(r(i),i.find(".timeline-event-pointer").hover(function(t){var i;"mouseenter"===t.type?(i={left:parseInt(e(this).css("left")),top:parseInt(e(this).css("top")),width:parseInt(e(this).css("width")),height:parseInt(e(this).css("height"))},e(this).attr("data-default-axis",JSON.stringify(i)),e(this).hasClass("hovered")||e(this).addClass("hovered").animate({left:i.left-p/10,top:i.top-p/10,width:i.width+p/10*2,height:i.height+p/10*2},0)):"mouseleave"===t.type&&(i=e(this).data("defaultAxis"),e(this).css("left",i.left+"px").css("top",i.top+"px").css("width",i.width+"px").css("height",i.height+"px"),e(this).removeAttr("data-default-axis"),e(this).hasClass("hovered")&&e(this).removeClass("hovered"))}))}function r(t){function i(e,t,i){if("object"==typeof e&&"object"==typeof t){i=i||!1;var n={x:Math.abs((e.x-t.x)/p),y:Math.abs((e.y-t.y)/p)};if(a.beginPath(),a.moveTo(e.x,e.y),!1!==i){switch(i){case"lt":controlPoint={relayStartX:e.x,relayStartY:t.y+p,cpx:e.x,cpy:t.y,relayEndX:e.x+p,relayEndY:t.y};break;case"rt":controlPoint={relayStartX:t.x-p,relayStartY:e.y,cpx:t.x,cpy:e.y,relayEndX:t.x,relayEndY:e.y+p};break;case"lb":controlPoint={relayStartX:e.x,relayStartY:t.y-p,cpx:e.x,cpy:t.y,relayEndX:e.x+p,relayEndY:t.y};break;case"rb":controlPoint={relayStartX:t.x-p,relayStartY:e.y,cpx:t.x,cpy:e.y,relayEndX:t.x,relayEndY:e.y-p}}(n.x>1||n.y>1)&&a.lineTo(controlPoint.relayStartX,controlPoint.relayStartY),a.quadraticCurveTo(controlPoint.cpx,controlPoint.cpy,controlPoint.relayEndX,controlPoint.relayEndY)}a.lineTo(t.x,t.y),a.stroke()}}var a,n=t.find(".timeline-node.timeline-event-pointer"),r=t.find(".timeline-line-canvas")[0];r.getContext&&(a=r.getContext("2d"),n.each(function(){var t,n,l,o,s,m=void 0==e(this).data("relayLinecolor")?e(this).css("border-left-color"):e(this).data("relayLinecolor"),d=void 0==e(this).data("relayLinesize")?Math.round(p/10):e(this).data("relayLinesize");a.strokeStyle=m,a.lineWidth=d,a.lineJoin="round",a.lineCap="round",o={x:(p-a.lineWidth)/2,y:p/2},t={x:e(this)[0].offsetLeft+o.x,y:Math.floor(e(this)[0].offsetTop/p)*p+o.y},void 0!=e(this).data("relayBefore")&&(s=((n=e(this).data("relayBefore")>0?{x:e("#evt-"+e(this).data("relayBefore"))[0].offsetLeft+o.x,y:Math.floor(e("#evt-"+e(this).data("relayBefore"))[0].offsetTop/p)*p+o.y}:{x:0,y:t.y}).y-t.y)/p,Math.abs(s)>0&&void 0!=e(this).data("relayCurve")&&-1!=e.inArray(e(this).data("relayCurve"),["lt","rt","lb","rb"])?i(n,t,e(this).data("relayCurve")):i(n,t)),void 0!=e(this).data("relayAfter")&&(l=e(this).data("relayAfter")>0?{x:e("#evt-"+e(this).data("relayAfter"))[0].offsetLeft+o.x,y:Math.floor(e("#evt-"+e(this).data("relayAfter"))[0].offsetTop/p)*p+o.y}:{x:r.width,y:t.y},s=(t.y-l.y)/p,Math.abs(s)>0&&void 0!=e(this).data("relayCurve")&&-1!=e.inArray(e(this).data("relayCurve"),["lt","rt","lb","rb"])?i(t,l,e(this).data("relayCurve")):i(t,l))}))}function l(t){if(0==e(".timeline-event-view").length)return!0;console.info(t),e(".timeline-event-view").empty();var i,a=e("<div />",{addClass:"timeline-event-header"}),n=e("<h3 />",{addClass:"timeline-event-label"}),r=e("<div />",{addClass:"timeline-event-meta"}),l=e("<div />",{addClass:"timeline-event-body"}),o=e("<div />",{addClass:"timeline-event-footer"});return n.text(t.label),i='<span class="timeline-event-start-date">'+f("Y/m/d H:i",t.start)+"</span>",t.end&&(i+='<span class="timeline-event-date-separator"></span>',i+='<span class="timeline-event-end-date">'+f("Y/m/d H:i",t.end)+"</span>"),a.append(n.prop("outerHTML")+r.append(i).prop("outerHTML")),t.content&&l.html(t.content),e(".timeline-event-view").append(a.prop("outerHTML")+l.prop("outerHTML")+o.prop("outerHTML")),!0}function o(t){var i=new Date;return t&&b().then(function(){i=e("body").data("serverDate"),e.removeData("body","serverDate")},function(){i=new Date}),i}function s(e,t,i){var a=new Date(e).getTime(),n=new Date(t).getTime(),r=new Date(i).getTime();return a-n>=0&&r-a>=0}function m(e,t){var i,e="[object Date]"===Object.prototype.toString.call(e)?e:new Date(e),a=t.timeline,n=new Date(a.attr("actual-start-datetime")),r=new Date(n),l=a.attr("scale"),o=Number(a.attr("range")),m=Number(a.attr("total-cols")),d=Number(a.attr("min-grid-per")),c=Number(a.attr("min-grid-size")),h=c*m-1,u=d*c;switch(l){case"years":r=new Date(r.setFullYear(r.getFullYear()+o-1));break;case"months":r=new Date(r.setMonth(r.getMonth()+o-1));break;case"days":r=new Date(r.setDate(r.getDate()+o-1))}if(s(e,n,r)){switch(l){case"years":i=Math.round((e-n)*h/(r-n));break;case"months":i=Math.floor((e-n)/864e5*u);break;case"days":i=Math.floor((e-n)/36e5*u)}return i}return!1}function d(e){return e.reduce(function(e,t,i,a){return e+t})}function c(e){var t=[];for(var i in e)e.hasOwnProperty(i)&&t.push(e[i]);return t}function h(e){var t=[];for(var i in e)e.hasOwnProperty(i)&&t.push(i);return t}function u(e,t){var i=function(e,t){return Array(e+1).join(t)}(t-1,"0");return String(e).length==t?e:(i+e).substr(-1*e)}function f(t,i){var a="[object Date]"===Object.prototype.toString.call(i)?i:new Date(i),n={Jan:"January",Feb:"February",Mar:"March",Apr:"April",May:"May",Jun:"June",Jul:"July",Aug:"August",Sep:"September",Oct:"October",Nov:"November",Dec:"December"},r={Sun:"Sunday",Mon:"Monday",Tue:"Tuesday",Wed:"Wednesday",Thu:"Thurseday",Fri:"Friday",Sat:"Saturday"},l=["am","pm"],o=t.split(""),s="",m=!1,d=function(e){var t=new Date(e.getFullYear(),e.getMonth()+1,1);return t.setTime(t.getTime()-1),t.getDate()},f=function(e){var t,i=new Date(e.getFullYear(),0,1),a=0;for(t=0;t<12;t++)i.setMonth(t),a+=d(i);return 365===a?0:1},p=function(e){var t,i=new Date(e.getFullYear(),0,1),a=0;for(t=0;t<e.getMonth();t++)i.setMonth(t),a+=d(i);return a+e.getDate()},g=function(e){var t=e.getHours();return t>12?t-12:t},y=function(e){return e.getHours()>12?l[1]:l[0]};return""===t?a:("object"==typeof e.timeline.global&&(n="object"==typeof e.timeline.global.month?e.timeline.global.month:n,r="object"==typeof e.timeline.global.day?e.timeline.global.day:r,l="object"==typeof e.timeline.global.ma?e.timeline.global.ma:l),o.forEach(function(e,t){var i,l,v;if(!1!==m)return m=!1,!0;switch(e){case"Y":case"o":i=a.getFullYear();break;case"y":i=(""+a.getFullYear()).slice(-2);break;case"m":i=("0"+(a.getMonth()+1)).slice(-2);break;case"n":i=a.getMonth()+1;break;case"F":i=c(n)[a.getMonth()];break;case"M":i=h(n)[a.getMonth()];break;case"d":i=("0"+a.getDate()).slice(-2);break;case"j":i=a.getDate();break;case"S":i=["st","nd","rd","th"][function(){var e=a.getDate();return 1==e||2==e||3==e||21==e||22==e||23==e||31==e?Number((""+e).slice(-1)-1):3}()];break;case"w":case"W":i=a.getDay();break;case"l":i=c(r)[a.getDay()];break;case"D":i=h(r)[a.getDay()];break;case"N":i=0===a.getDay()?7:a.getDay();break;case"a":i=y(a);break;case"A":i=y(a).toUpperCase();break;case"g":i=g(a);break;case"h":i=("0"+g(a)).slice(-2);break;case"G":i=a.getHours();break;case"H":i=("0"+a.getHours()).slice(-2);break;case"i":i=("0"+a.getMinutes()).slice(-2);break;case"s":i=("0"+a.getSeconds()).slice(-2);break;case"z":i=p(a);break;case"t":i=d(a);break;case"L":i=f(a);break;case"c":l=a.getTimezoneOffset(),tzo=[Math.floor(Math.abs(l)/60),Math.abs(l)%60],v=l<0?"+":"-",i=a.getFullYear()+"-"+u(a.getMonth()+1,2)+"-"+u(a.getDate(),2)+"T",i+=u(a.getHours(),2)+":"+u(a.getMinutes(),2)+":"+u(a.getSeconds(),2),i+=v+u(tzo[0],2)+":"+u(tzo[1],2);break;case"r":l=a.getTimezoneOffset(),tzo=[Math.floor(Math.abs(l)/60),Math.abs(l)%60],v=l<0?"+":"-",i=h(r)[a.getDay()]+", "+a.getDate()+" "+h(n)[a.getMonth()]+" "+a.getFullYear()+" ",i+=u(a.getHours(),2)+":"+u(a.getMinutes(),2)+":"+u(a.getSeconds(),2)+" ",i+=v+u(tzo[0],2)+u(tzo[1],2);break;case"u":i=a.getTime();break;case"U":i=Date.parse(a)/1e3;break;case"\\":m=!0,i=o[t+1];break;default:i=e}s+=i}),s)}var p=40,g=2,y=0;"global"in e.timeline&&"object"==typeof e.timeline.global&&void 0!==e.timeline.global.rowH&&(p=Number(e.timeline.global.rowH));var v={init:function(a){var r=e.extend({type:"bar",scale:"days",startDatetime:"currently",datetimePrefix:"",showHeadline:!0,datetimeFormat:{full:"Y/m/d",year:"Y",month:"n",day:"n/j"},minuteInterval:30,zerofillYear:!1,range:3,rows:5,height:"auto",minGridPer:2,minGridSize:30,rangeAlign:"current",naviIcon:{left:"jqtl-circle-left",right:"jqtl-circle-right"},showPointer:!0},a);return this.each(function(){var a=e(this),l=a.data("timeline"),s=e("<div />",{title:a.find(".timeline-headline").text(),type:r.type,scale:r.scale,"start-datetime":r.startDatetime,"datetime-prefix":r.datetimePrefix,"show-headline":r.showHeadline?1:0,"datetime-format-full":r.datetimeFormat.full,"datetime-format-year":r.datetimeFormat.year,"datetime-format-month":r.datetimeFormat.month,"datetime-format-day":r.datetimeFormat.day,"minute-interval":r.minuteInterval,"zerofill-year":r.zerofillYear?1:0,range:r.range,rows:r.rows,"timeline-height":r.height,"min-grid-per":r.minGridPer,"min-grid-size":r.minGridSize,"range-align":r.rangeAlign,"navi-icon-left":r.naviIcon.left,"navi-icon-right":r.naviIcon.right,"show-pointer":r.showPointer?1:0,text:""});if(a.on("click.timeline",".timeline-to-prev",v.dateback),a.on("click.timeline",".timeline-to-next",v.dateforth),a.on("click.timeline",".timeline-node",v.openEvent),a.on("align.timeline",v.alignment),!l){a.data("timeline",{target:a,timeline:s});var m,d,c,h;switch("currently"===r.startDatetime?m=o(!0):(m=new Date(r.startDatetime),h=/-|\//,c=r.startDatetime.split(h),Number(c[0])<100&&m.setFullYear(Number(c[0]))),r.scale){case"years":d=m.getFullYear()+"-01-01 00:00:00";break;case"months":d=m.getFullYear()+"-"+(m.getMonth()+1)+"-01 00:00:00";break;case"days":d=m.getFullYear()+"-"+(m.getMonth()+1)+"-"+m.getDate()+" 00:00:00";break;default:d=m.getFullYear()+"-"+(m.getMonth()+1)+"-"+m.getDate()+" "+d.getHours()+":00:00"}console.info(m,d),a.data("timeline").timeline.attr("actual-start-datetime",d),t(a),i(a),a.trigger("align.timeline",[r.rangeAlign]),a.css("visibility","visible")}var u=0,f=setInterval(function(){1==++u&&(n(a),clearInterval(f))},300)})},destroy:function(){return this.each(function(){var t=e(this),i=t.data("timeline");e(window).off(".timeline"),i&&(i.timeline.remove(),t.removeData("timeline"))})},render:function(a){return this.each(function(){var r=e(this),l=r.data("timeline");"type"in a&&l.timeline.attr("type",a.type),"scale"in a&&l.timeline.attr("scale",a.scale),"startDatetime"in a&&l.timeline.attr("start-datetime",a.startDatetime),"datetimePrefix"in a&&l.timeline.attr("datetime-prefix",a.datetimePrefix),"showHeadline"in a&&l.timeline.attr("show-headline",a.showHeadline?1:0),"datetimeFormat"in a&&(void 0!=typeof a.datetimeFormat.full&&l.timeline.attr("datetime-format-full",a.datetimeFormat.full),void 0!=typeof a.datetimeFormat.year&&l.timeline.attr("datetime-format-year",a.datetimeFormat.year),void 0!=typeof a.datetimeFormat.day&&l.timeline.attr("datetime-format-day",a.datetimeFormat.day)),"minuteInterval"in a&&l.timeline.attr("minute-interval",a.minuteInterval),"zerofillYear"in a&&l.timeline.attr("zerofill-year",a.zerofillYear?1:0),"range"in a&&l.timeline.attr("range",a.range),"rows"in a&&l.timeline.attr("rows",a.rows),"height"in a&&l.timeline.attr("timeline-height",a.height),"minGridPer"in a&&l.timeline.attr("min-grid-per",a.minGridPer),"minGridSize"in a&&l.timeline.attr("min-grid-size",a.minGridSize),"rangeAlign"in a&&l.timeline.attr("range-align",a.rangeAlign),"naviIcon"in a&&(void 0!=typeof a.naviIcon.left&&l.timeline.attr("navi-icon-left",a.naviIcon.left),void 0!=typeof a.naviIcon.right&&l.timeline.attr("navi-icon-right",a.naviIcon.right)),"showPointer"in a&&l.timeline.attr("show-pointer",a.showPointer?1:0);var s,m,d,c;switch("currently"===l.timeline.attr("start-datetime")?s=o(!0):(s=new Date(l.timeline.attr("start-datetime")),c=/-|\//,d=l.timeline.attr("start-datetime").split(c),Number(d[0])<100&&s.setFullYear(Number(d[0]))),l.timeline.attr("scale")){case"years":m=s.getFullYear()+"-01-01 00:00:00";break;case"months":m=s.getFullYear()+"-"+(s.getMonth()+1)+"-01 00:00:00";break;case"days":m=s.getFullYear()+"-"+(s.getMonth()+1)+"-"+s.getDate()+" 00:00:00";break;default:m=s.getFullYear()+"-"+(s.getMonth()+1)+"-"+s.getDate()+" "+m.getHours()+":00:00"}l.timeline.attr("actual-start-datetime",m),console.info('Fired "render" method',a,l.timeline),r.find(".timeline-container").empty().removeClass("timeline-container"),t(r),i(r),n(r),r.trigger("align.timeline",[l.timeline.attr("range-align")])})},show:function(){return this.each(function(){e(this).css("display","block").css("visibility","visible")})},hide:function(){return this.each(function(){e(this).css("visibility","hidden").css("display","none")})},initialized:function(t){return this.each(function(){var i=e(this),a=i.data("timeline");a&&"function"==typeof t&&(console.info('Fired "initialized" method after initialize this plugin.'),t(i,a))})},dateback:function(t){t.preventDefault();var i=e(this).parents(".timeline-container"),a=i.data("timeline"),n=i.find(".timeline-body")[0].clientWidth,r=i.find(".timeline-wrapper")[0].scrollWidth,l=i.find(".timeline-body").scrollLeft(),o=0;return r>n&&(o=(o=l/n>1?l-n:l-(r-n)/Number(a.timeline.attr("range")))<0?0:o,i.find(".timeline-body").animate({scrollLeft:o},300)),this},dateforth:function(t){t.preventDefault();var i=e(this).parents(".timeline-container"),a=i.data("timeline"),n=i.find(".timeline-body")[0].clientWidth,r=i.find(".timeline-wrapper")[0].scrollWidth,l=i.find(".timeline-body").scrollLeft(),o=0;return r>n&&(o=(o=(r-l)/n>1?l+n:l+(r-n)/Number(a.timeline.attr("range")))>r-n+1?r-n+1:o,i.find(".timeline-body").animate({scrollLeft:o},300)),this},alignment:function(){var t=arguments.length>1?Array.prototype.slice.call(arguments,1):[arguments[0]],i=t[0].toLowerCase(),a=void 0!==t[1]?String(t[1]).toLowerCase():0,n=e(this).find(".timeline-body")[0].clientWidth,r=e(this).find(".timeline-wrapper")[0].scrollWidth,l=0;if(r>n){switch(i){case"left":l=0;break;case"right":l=r-n+1;break;case"center":l=(r-n)/2;break;case"current":l=(h=m(o(!0),u=e(this).data("timeline")))>-1?h-n/2>r-n+1?r-n+1:h-n/2:r-n+1;break;case"latest":var s,d,c,h,u=e(this).data("timeline"),p=new Function("return "+u.timeline.text())();e.each(p,function(e,t){d=f("U",t.start),0==e?(s=d,c=e):d>=s&&(s=d,c=e)}),l=(h=m(new Date(p[c].start),u))>-1?h-n/2>r-n+1?r-n+1:h-n/2:r-n+1;break;default:l=0;var g="#"+i;e(g).length&&(l=(h=e(g).position().left)-n/2>r-n+1?r-n+1:h-n/2)}-1!=e.inArray(a,["slow","normal","fast"])||Number(a)>0?e(this).find(".timeline-body").animate({scrollLeft:l},a):e(this).find(".timeline-body").scrollLeft(l)}return this},getOptions:function(){var t=e(this).data("timeline");return{title:t.timeline.attr("title"),type:t.timeline.attr("type"),scale:t.timeline.attr("scale"),startDatetime:t.timeline.attr("start-datetime"),datetimePrefix:t.timeline.attr("datetime-prefix"),showHeadline:1==Number(t.timeline.attr("show-headline")),datetimeFormat:{full:t.timeline.attr("datetime-format-full"),year:t.timeline.attr("datetime-format-year"),month:t.timeline.attr("datetime-format-month"),day:t.timeline.attr("datetime-format-day")},minuteInterval:Number(t.timeline.attr("minute-interval")),zerofillYear:1==Number(t.timeline.attr("zerofill-year")),range:Number(t.timeline.attr("range")),rows:Number(t.timeline.attr("rows")),height:"auto"===t.timeline.attr("timeline-height")?"auto":Number(t.timeline.attr("timeline-height")),minGridPer:Number(t.timeline.attr("min-grid-per")),minGridSize:Number(t.timeline.attr("min-grid-size")),rangeAlign:t.timeline.attr("range-align"),naviIcon:{left:t.timeline.attr("navi-icon-left"),right:t.timeline.attr("navi-icon-right")},showPointer:t.timeline.attr("show-pointer"),events:new Function("return "+t.timeline.text())()}},addEvent:function(t,i){return this.each(function(){var a=e(this),r=a.data("timeline"),l=new Function("return "+r.timeline.text())(),o=1,s=[o];t.length>0&&(e.each(l,function(e,t){s.push(Number(t.eventId))}),o=Math.max.apply(null,s)+1,e.each(t,function(e,t){t.eventId=o,o++,l.push(t)}),r.timeline.text(JSON.stringify(l))),n(a),e(this).trigger("align.timeline",["evt-"+(o-1),"fast"]),r&&"function"==typeof i&&(console.info('Fired "addEvent" method after events addition.'),i(a,r))})},removeEvent:function(){var t,i;return 0==arguments.length?(t="all",i=null):1==arguments.length?"function"==typeof arguments[0]?(t="all",i=arguments[0]):(t=arguments[0],i=null):(t=arguments[0],i=arguments[1]),this.each(function(){var a=e(this),r=a.data("timeline"),l=new Function("return "+r.timeline.text())();if("all"===t)l=[];else{var o=[];e.each(l,function(i,a){-1==e.inArray(a.eventId,t)&&o.push(a)}),l=o}r.timeline.text(JSON.stringify(l)),n(a),r&&"function"==typeof i&&(console.info('Fired "removeEvent" method after events removing.'),i(a,r))})},updateEvent:function(t,i){return void 0!==t&&this.each(function(){var a,r=e(this),l=r.data("timeline"),o=new Function("return "+l.timeline.text())(),s=[];t.length>0&&e.each(t,function(e,t){s.push(t.eventId)}),o.length>0&&s.length>0&&(e.each(o,function(i,n){if(-1!=e.inArray(n.eventId,s)){var r;e.each(t,function(e,t){if(t.eventId==n.eventId)return r=t,a=t.eventId,!1}),o[i]=r}}),l.timeline.text(JSON.stringify(o))),n(r),e(this).trigger("align.timeline",["evt-"+a,"fast"]),l&&"function"==typeof i&&(console.info('Fired "updateEvent" method after events updating.'),i(r,l))})},openEvent:function(t){var i=Number(e(t.target).attr("id").replace("evt-","")),a=t.delegateTarget;return""!==i&&0!=i&&e(a).each(function(){var t,a=e(this).data("timeline"),n=new Function("return "+a.timeline.text())();e.each(n,function(e,a){if(a.eventId==i)return t=a,!1}),e(this).find(".timeline-node").each(function(){e(this).attr("id")==="evt-"+i?e(this).addClass("active"):e(this).removeClass("active")}),e(this).trigger("align.timeline",["evt-"+i,"fast"]),l(t)&&t.callback&&(console.info('Fired "openEvent" method after event shown.'),Function.call(null,"return "+t.callback)())})}};e.fn.timeline=function(t){return v[t]?v[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void e.error("Method "+t+" does not exist on jQuery.timeline."):v.init.apply(this,arguments)};var b=function(){return e.ajax({type:"GET"}).done(function(t,i,a){e("body").data("serverDate",new Date(a.getResponseHeader("Date")))}).promise()}}(jQuery);