Files
SIPAIIS_WMS_JSSW/WebRoot/JS/jquery-gantt/js/jquery.fn.gantt.min.js
2026-01-16 14:13:44 +08:00

1 line
30 KiB
JavaScript

(function(e,t){"use strict";e.fn.gantt=function(n){function o(e,t){for(var n=1;;n++){var r=new Date(e);r.setHours(e.getHours()+t*n);if(r.getTime()!==e.getTime()){return r}}}var r="jquery.fn.gantt";var i=["hours","days","weeks","months"];var s={source:null,itemsPerPage:7,months:["January","February","March","April","May","June","July","August","September","October","November","December"],dow:["S","M","T","W","T","F","S"],navigate:"buttons",scale:"days",useCookie:false,maxScale:"months",minScale:"hours",waitText:"Please wait...",onItemClick:function(e){return},onAddClick:function(e){return},onRender:function(){return},scrollToToday:true};if(n){e.extend(s,n)}s.useCookie=s.useCookie&&e.isFunction(e.cookie);e.extend(e.expr[":"],{findday:function(t,n,r){var i=new Date(parseInt(r[3],10));var s=e(t).attr("id");s=s?s:"";var o=s.indexOf("-")+1;var u=new Date(parseInt(s.substring(o,s.length),10));i=new Date(i.getFullYear(),i.getMonth(),i.getDate());u=new Date(u.getFullYear(),u.getMonth(),u.getDate());return i.getTime()===u.getTime()}});e.extend(e.expr[":"],{findweek:function(t,n,r){var i=new Date(parseInt(r[3],10));var s=e(t).attr("id");s=s?s:"";var o=s.indexOf("-")+1;i=i.getFullYear()+"-"+i.getDayForWeek().getWeekOfYear();var u=s.substring(o,s.length);return i===u}});e.extend(e.expr[":"],{findmonth:function(t,n,r){var i=new Date(parseInt(r[3],10));i=i.getFullYear()+"-"+i.getMonth();var s=e(t).attr("id");s=s?s:"";var o=s.indexOf("-")+1;var u=s.substring(o,s.length);return i===u}});Date.prototype.getWeekId=function(){var e=this.getFullYear();var t=this.getDayForWeek().getWeekOfYear();var n=this.getMonth();if(n===11&&t===1){e++}return"dh-"+e+"-"+t};Date.prototype.genRepDate=function(){switch(s.scale){case"hours":return this.getTime();case"weeks":return this.getDayForWeek().getTime();case"months":return(new Date(this.getFullYear(),this.getMonth(),1)).getTime();default:return this.getTime()}};Date.prototype.getDayOfYear=function(){var e=new Date(this.getFullYear(),0,0);var t=new Date(this.getFullYear(),this.getMonth(),this.getDate());return Math.ceil((t-e)/864e5)};Date.prototype.getWeekOfYear=function(){var e=new Date(this.getFullYear(),0,1);var t=new Date(this.getFullYear(),this.getMonth(),this.getDate());if(e.getDay()>3){e=new Date(t.getFullYear(),0,7-e.getDay())}var n=t.getDayOfYear()-e.getDayOfYear();return Math.ceil(n/7)};Date.prototype.getDaysInMonth=function(){return 32-(new Date(this.getFullYear(),this.getMonth(),32)).getDate()};Date.prototype.hasWeek=function(){var e=new Date(this.valueOf());e.setDate(e.getDate()-e.getDay());var t=new Date(this.valueOf());t.setDate(t.getDate()+(6-t.getDay()));if(e.getMonth()===t.getMonth()){return true}else{return e.getMonth()===this.getMonth()&&t.getDate()<4||e.getMonth()!==this.getMonth()&&t.getDate()>=4}};Date.prototype.getDayForWeek=function(){var e=new Date(this.valueOf());e.setDate(e.getDate()-e.getDay());var t=new Date(this.valueOf());t.setDate(t.getDate()+(6-t.getDay()));if(e.getMonth()===t.getMonth()||e.getMonth()!==t.getMonth()&&t.getDate()>=4){return new Date(t.setDate(t.getDate()-3))}else{return new Date(e.setDate(e.getDate()+3))}};var u={elementFromPoint:function(t,n){if(!e.support.boxModel){t-=e(document).scrollLeft();n-=e(document).scrollTop()}else{t-=window.pageXOffset;n-=window.pageYOffset}return document.elementFromPoint(t,n)},create:function(t){if(typeof s.source!=="string"){t.data=s.source;u.init(t)}else{e.getJSON(s.source,function(e){t.data=e;u.init(t)})}},init:function(e){e.rowsNum=e.data.length;e.pageCount=Math.ceil(e.rowsNum/s.itemsPerPage);e.rowsOnLastPage=e.rowsNum-Math.floor(e.rowsNum/s.itemsPerPage)*s.itemsPerPage;e.dateStart=a.getMinDate(e);e.dateEnd=a.getMaxDate(e);u.waitToggle(e,true,function(){u.render(e)})},render:function(t){var n=e('<div class="fn-content"/>');var r=u.leftPanel(t);n.append(r);var i=u.rightPanel(t,r);var o,a;n.append(i);n.append(u.navigation(t));var f=i.find(".dataPanel");t.gantt=e('<div class="fn-gantt" />').append(n);e(t).html(t.gantt);t.scrollNavigation.panelMargin=parseInt(f.css("margin-left").replace("px",""),10);t.scrollNavigation.panelMaxPos=f.width()-i.width();t.scrollNavigation.canScroll=f.width()>i.width();u.markNow(t);u.fillData(t,f,r);if(s.useCookie){var l=e.cookie(this.cookieKey+"ScrollPos");if(l){t.hPosition=l}}if(s.scrollToToday){u.navigateTo(t,"now");u.scrollPanel(t,0)}else{if(t.hPosition!==0){if(t.scaleOldWidth){o=f.width()-i.width();a=o*t.hPosition/t.scaleOldWidth;a=a>0?0:a;f.css({"margin-left":a+"px"});t.scrollNavigation.panelMargin=a;t.hPosition=a;t.scaleOldWidth=null}else{f.css({"margin-left":t.hPosition+"px"});t.scrollNavigation.panelMargin=t.hPosition}u.repositionLabel(t)}else{u.repositionLabel(t)}}f.css({height:r.height()});u.waitToggle(t,false);s.onRender()},leftPanel:function(t){var n=e('<div class="leftPanel"/>').append(e('<div class="row spacer"/>').css("height",a.getCellSize()*t.headerRows+"px").css("width","100%"));var r=[];e.each(t.data,function(e,n){if(e>=t.pageNum*s.itemsPerPage&&e<t.pageNum*s.itemsPerPage+s.itemsPerPage){r.push('<div class="row name row'+e+(n.desc?"":" fn-wide")+'" id="rowheader'+e+'" offset="'+e%s.itemsPerPage*a.getCellSize()+'">');r.push('<span class="fn-label'+(n.cssClass?" "+n.cssClass:"")+'">'+n.name+"</span>");r.push("</div>");if(n.desc){r.push('<div class="row desc row'+e+' " id="RowdId_'+e+'" data-id="'+n.id+'">');r.push('<span class="fn-label'+(n.cssClass?" "+n.cssClass:"")+'">'+n.desc+"</span>");r.push("</div>")}}});n.append(r.join(""));return n},dataPanel:function(n,r){var i=e('<div class="dataPanel" style="width: '+r+'px;"/>');var o="onwheel"in n?"wheel":document.onmousewheel!==t?"mousewheel":"DOMMouseScroll";e(n).on(o,function(e){u.wheelScroll(n,e)});i.click(function(t){t.stopPropagation();var r,i;var o=e(n).find(".fn-gantt .leftPanel");var f=e(n).find(".fn-gantt .dataPanel");switch(s.scale){case"weeks":i=a.getCellSize()*2;break;case"months":i=a.getCellSize();break;case"hours":i=a.getCellSize()*4;break;case"days":i=a.getCellSize()*3;break;default:i=a.getCellSize()*2;break}var l=u.elementFromPoint(t.pageX,f.offset().top+i);if(l.className==="fn-label"){l=e(l.parentNode)}else{l=e(l)}var c=l.attr("repdate");var h=u.elementFromPoint(o.offset().left+o.width()-10,t.pageY);if(h.className.indexOf("fn-label")===0){h=e(h.parentNode)}else{h=e(h)}var p=h.data().id;s.onAddClick(c,p)});return i},rightPanel:function(t,n){var r=null;var i=[" sn"," wd"," wd"," wd"," wd"," wd"," sa"];var f=['<div class="row"/>'];var l=0;var c=['<div class="row"/>'];var h=0;var p=[];var d=0;var v=[];var m=[];var g=new Date;g=new Date(g.getFullYear(),g.getMonth(),g.getDate());var y=s.holidays?s.holidays.join():"";switch(s.scale){case"hours":r=a.parseTimeRange(t.dateStart,t.dateEnd,t.scaleStep);var b=r[0].getFullYear();var w=r[0].getMonth();var E=r[0];for(var S=0;S<r.length;S++){var x=r[S];var T=x.getFullYear();if(T!==b){f.push('<div class="row header year" style="width: '+a.getCellSize()*l+'px;"><div class="fn-label">'+b+"</div></div>");b=T;l=0}l++;var N=x.getMonth();if(N!==w){c.push('<div class="row header month" style="width: '+a.getCellSize()*h+'px"><div class="fn-label">'+s.months[w]+"</div></div>");w=N;h=0}h++;var C=x.getDay();var k=E.getDay();var L=i[C];var A=E.getTime();if(y.indexOf((new Date(x.getFullYear(),x.getMonth(),x.getDate())).getTime())>-1){L="holiday"}if(C!==k){var O=g-E===0?" today":y.indexOf(A)>-1?"holiday":i[k];p.push('<div class="row date '+O+'" '+' style="width: '+a.getCellSize()*d+'px;"> '+' <div class="fn-label">'+E.getDate()+"</div></div>");v.push('<div class="row day '+O+'" '+' style="width: '+a.getCellSize()*d+'px;"> '+' <div class="fn-label">'+s.dow[k]+"</div></div>");E=x;d=0}d++;m.push('<div class="row day '+L+'" id="dh-'+x.getTime()+'" offset="'+S*a.getCellSize()+'" repdate="'+x.genRepDate()+'"><div class="fn-label">'+x.getHours()+"</div></div>")}f.push('<div class="row header year" style="width: '+a.getCellSize()*l+'px;"><div class="fn-label">'+b+"</div></div>");c.push('<div class="row header month" style="width: '+a.getCellSize()*h+'px"><div class="fn-label">'+s.months[w]+"</div></div>");var L=i[E.getDay()];if(y.indexOf((new Date(E.getFullYear(),E.getMonth(),E.getDate())).getTime())>-1){L="holiday"}p.push('<div class="row date '+L+'" '+' style="width: '+a.getCellSize()*d+'px;"> '+' <div class="fn-label">'+E.getDate()+"</div></div>");v.push('<div class="row day '+L+'" '+' style="width: '+a.getCellSize()*d+'px;"> '+' <div class="fn-label">'+s.dow[E.getDay()]+"</div></div>");var M=u.dataPanel(t,r.length*a.getCellSize());M.append(f.join(""));M.append(c.join(""));M.append(e('<div class="row"/>').html(p.join("")));M.append(e('<div class="row"/>').html(v.join("")));M.append(e('<div class="row"/>').html(m.join("")));break;case"weeks":r=a.parseWeeksRange(t.dateStart,t.dateEnd);f=['<div class="row"/>'];c=['<div class="row"/>'];var b=r[0].getFullYear();var w=r[0].getMonth();var E=r[0];for(var S=0;S<r.length;S++){var x=r[S];if(x.getFullYear()!==b){f.push('<div class="row header year" style="width: '+a.getCellSize()*l+'px;"><div class="fn-label">'+b+"</div></div>");b=x.getFullYear();l=0}l++;if(x.getMonth()!==w){c.push('<div class="row header month" style="width:'+a.getCellSize()*h+'px;"><div class="fn-label">'+s.months[w]+"</div></div>");w=x.getMonth();h=0}h++;p.push('<div class="row day wd" '+' id="'+x.getWeekId()+'" offset="'+S*a.getCellSize()+'" repdate="'+x.genRepDate()+'"> '+' <div class="fn-label">'+x.getWeekOfYear()+"</div></div>")}f.push('<div class="row header year" style="width: '+a.getCellSize()*l+'px;"><div class="fn-label">'+b+"</div></div>");c.push('<div class="row header month" style="width: '+a.getCellSize()*h+'px"><div class="fn-label">'+s.months[w]+"</div></div>");var M=u.dataPanel(t,r.length*a.getCellSize());M.append(f.join("")+c.join("")+p.join("")+v.join(""));break;case"months":r=a.parseMonthsRange(t.dateStart,t.dateEnd);var b=r[0].getFullYear();var w=r[0].getMonth();var E=r[0];for(var S=0;S<r.length;S++){var x=r[S];if(x.getFullYear()!==b){f.push('<div class="row header year" style="width: '+a.getCellSize()*l+'px;"><div class="fn-label">'+b+"</div></div>");b=x.getFullYear();l=0}l++;c.push('<div class="row day wd" id="dh-'+a.genId(x.getTime())+'" offset="'+S*a.getCellSize()+'" repdate="'+x.genRepDate()+'">'+(1+x.getMonth())+"</div>")}f.push('<div class="row header year" style="width: '+a.getCellSize()*l+'px;"><div class="fn-label">'+b+"</div></div>");c.push('<div class="row header month" style="width: '+a.getCellSize()*h+'px">"<div class="fn-label">'+s.months[w]+"</div></div>");var M=u.dataPanel(t,r.length*a.getCellSize());M.append(f.join(""));M.append(c.join(""));M.append(e('<div class="row"/>').html(p.join("")));M.append(e('<div class="row"/>').html(v.join("")));break;default:r=a.parseDateRange(t.dateStart,t.dateEnd);var _=o(r[0],-1);var b=_.getFullYear();var w=_.getMonth();var E=_;for(var S=0;S<r.length;S++){var x=r[S];if(x.getFullYear()!==b){f.push('<div class="row header year" style="width:'+a.getCellSize()*l+'px;"><div class="fn-label">'+b+"</div></div>");b=x.getFullYear();l=0}l++;if(x.getMonth()!==w){c.push('<div class="row header month" style="width:'+a.getCellSize()*h+'px;"><div class="fn-label">'+s.months[w]+"</div></div>");w=x.getMonth();h=0}h++;var k=x.getDay();var L=i[k];if(y.indexOf((new Date(x.getFullYear(),x.getMonth(),x.getDate())).getTime())>-1){L="holiday"}p.push('<div class="row date '+L+'" '+' id="dh-'+a.genId(x.getTime())+'" offset="'+S*a.getCellSize()+'" repdate="'+x.genRepDate()+'"> '+' <div class="fn-label">'+x.getDate()+"</div></div>");v.push('<div class="row day '+L+'" '+' id="dw-'+a.genId(x.getTime())+'" repdate="'+x.genRepDate()+'"> '+' <div class="fn-label">'+s.dow[k]+"</div></div>")}f.push('<div class="row header year" style="width: '+a.getCellSize()*l+'px;"><div class="fn-label">'+b+"</div></div>");c.push('<div class="row header month" style="width: '+a.getCellSize()*h+'px"><div class="fn-label">'+s.months[w]+"</div></div>");var M=u.dataPanel(t,r.length*a.getCellSize());M.append(f.join(""));M.append(c.join(""));M.append(e('<div class="row" style="margin-left: 0;" />').html(p.join("")));M.append(e('<div class="row" style="margin-left: 0;" />').html(v.join("")));break}return e('<div class="rightPanel"></div>').append(M)},navigation:function(t){var n=null;if(s.navigate==="scroll"){n=e('<div class="navigate" />').append(e('<div class="nav-slider" />').append(e('<div class="nav-slider-left" />').append(e('<span role="button" class="nav-link nav-page-back"/>').html("<").click(function(){u.navigatePage(t,-1)})).append(e('<div class="page-number"/>').append(e("<span/>").html(t.pageNum+1+" of "+t.pageCount))).append(e('<span role="button" class="nav-link nav-page-next"/>').html(">").click(function(){u.navigatePage(t,1)})).append(e('<span role="button" class="nav-link nav-now"/>').html("&#9679;").click(function(){u.navigateTo(t,"now")})).append(e('<span role="button" class="nav-link nav-prev-week"/>').html("<<").click(function(){if(s.scale==="hours"){u.navigateTo(t,a.getCellSize()*8)}else if(s.scale==="days"){u.navigateTo(t,a.getCellSize()*30)}else if(s.scale==="weeks"){u.navigateTo(t,a.getCellSize()*12)}else if(s.scale==="months"){u.navigateTo(t,a.getCellSize()*6)}})).append(e('<span role="button" class="nav-link nav-prev-day"/>').html("<").click(function(){if(s.scale==="hours"){u.navigateTo(t,a.getCellSize()*4)}else if(s.scale==="days"){u.navigateTo(t,a.getCellSize()*7)}else if(s.scale==="weeks"){u.navigateTo(t,a.getCellSize()*4)}else if(s.scale==="months"){u.navigateTo(t,a.getCellSize()*3)}}))).append(e('<div class="nav-slider-content" />').append(e('<div class="nav-slider-bar" />').append(e('<a class="nav-slider-button" />')).mousedown(function(e){if(e.preventDefault){e.preventDefault()}t.scrollNavigation.scrollerMouseDown=true;u.sliderScroll(t,e)}).mousemove(function(e){if(t.scrollNavigation.scrollerMouseDown){u.sliderScroll(t,e)}}))).append(e('<div class="nav-slider-right" />').append(e('<span role="button" class="nav-link nav-next-day"/>').html(">").click(function(){if(s.scale==="hours"){u.navigateTo(t,a.getCellSize()*-4)}else if(s.scale==="days"){u.navigateTo(t,a.getCellSize()*-7)}else if(s.scale==="weeks"){u.navigateTo(t,a.getCellSize()*-4)}else if(s.scale==="months"){u.navigateTo(t,a.getCellSize()*-3)}})).append(e('<span role="button" class="nav-link nav-next-week"/>').html(">>").click(function(){if(s.scale==="hours"){u.navigateTo(t,a.getCellSize()*-8)}else if(s.scale==="days"){u.navigateTo(t,a.getCellSize()*-30)}else if(s.scale==="weeks"){u.navigateTo(t,a.getCellSize()*-12)}else if(s.scale==="months"){u.navigateTo(t,a.getCellSize()*-6)}})).append(e('<span role="button" class="nav-link nav-zoomIn"/>').html("&#43;").click(function(){u.zoomInOut(t,-1)})).append(e('<span role="button" class="nav-link nav-zoomOut"/>').html("&#45;").click(function(){u.zoomInOut(t,1)}))));e(document).mouseup(function(){t.scrollNavigation.scrollerMouseDown=false})}else{n=e('<div class="navigate" />').append(e('<span role="button" class="nav-link nav-page-back"/>').html("<").click(function(){u.navigatePage(t,-1)})).append(e('<div class="page-number"/>').append(e("<span/>").html(t.pageNum+1+" of "+t.pageCount))).append(e('<span role="button" class="nav-link nav-page-next"/>').html(">").click(function(){u.navigatePage(t,1)})).append(e('<span role="button" class="nav-link nav-begin"/>').html("&#124;<").click(function(){u.navigateTo(t,"begin")})).append(e('<span role="button" class="nav-link nav-prev-week"/>').html("<<").click(function(){u.navigateTo(t,a.getCellSize()*7)})).append(e('<span role="button" class="nav-link nav-prev-day"/>').html("<").click(function(){u.navigateTo(t,a.getCellSize())})).append(e('<span role="button" class="nav-link nav-now"/>').html("&#9679;").click(function(){u.navigateTo(t,"now")})).append(e('<span role="button" class="nav-link nav-next-day"/>').html(">").click(function(){u.navigateTo(t,a.getCellSize()*-1)})).append(e('<span role="button" class="nav-link nav-next-week"/>').html(">>").click(function(){u.navigateTo(t,a.getCellSize()*-7)})).append(e('<span role="button" class="nav-link nav-end"/>').html(">&#124;").click(function(){u.navigateTo(t,"end")})).append(e('<span role="button" class="nav-link nav-zoomIn"/>').html("&#43;").click(function(){u.zoomInOut(t,-1)})).append(e('<span role="button" class="nav-link nav-zoomOut"/>').html("&#45;").click(function(){u.zoomInOut(t,1)}))}return e('<div class="bottom"/>').append(n)},createProgressBar:function(t,n,r,i,o){var u=a.getCellSize();var f=a.getProgressBarMargin()||0;var l=e('<div class="bar"><div class="fn-label">'+i+"</div></div>").addClass(n).css({width:u*t-f+5}).data("dataObj",o);if(r){l.mouseover(function(t){var n=e('<div class="fn-gantt-hint" />').html(r);e("body").append(n);n.css("left",t.pageX);n.css("top",t.pageY);n.show()}).mouseout(function(){e(".fn-gantt-hint").remove()}).mousemove(function(t){e(".fn-gantt-hint").css("left",t.pageX);e(".fn-gantt-hint").css("top",t.pageY+15)})}l.click(function(t){t.stopPropagation();s.onItemClick(e(this).data("dataObj"))});return l},markNow:function(t){switch(s.scale){case"weeks":var n=Date.parse(new Date);n=Math.floor(n/364e5)*364e5;e(t).find(':findweek("'+n+'")').removeClass("wd").addClass("today");break;case"months":e(t).find(':findmonth("'+(new Date).getTime()+'")').removeClass("wd").addClass("today");break;default:var n=Date.parse(new Date);n=Math.floor(n/364e5)*364e5;e(t).find(':findday("'+n+'")').removeClass("wd").addClass("today");break}},fillData:function(t,n,r){var i=function(e){try{e=e.replace("rgb(","").replace(")","");var t=e.split(",");var n=parseInt(t[0],10);var r=parseInt(t[1],10);var i=parseInt(t[2],10);var s=Math.round((255-(.299*n+.587*r+.114*i))*.9,1);return"rgb("+s+", "+s+", "+s+")"}catch(o){return""}};e.each(t.data,function(r,o){if(r>=t.pageNum*s.itemsPerPage&&r<t.pageNum*s.itemsPerPage+s.itemsPerPage){e.each(o.values,function(o,f){var l=null;switch(s.scale){case"hours":var c=a.genId(a.dateDeserialize(f.from).getTime(),t.scaleStep);var h=e(t).find("#dh-"+c);var p=a.genId(a.dateDeserialize(f.to).getTime(),t.scaleStep);var d=e(t).find("#dh-"+p);var v=h.attr("offset");var m=d.attr("offset");var g=Math.floor((m-v)/a.getCellSize())+1;l=u.createProgressBar(g,f.customClass?f.customClass:"",f.desc?f.desc:"",f.label?f.label:"",f.dataObj?f.dataObj:null);var y=e(t).find("#rowheader"+r);var b=a.getCellSize()*5+2+parseInt(y.attr("offset"),10);l.css({"margin-top":b,"margin-left":Math.floor(v)});n.append(l);break;case"weeks":var w=a.dateDeserialize(f.from);var E=a.dateDeserialize(f.to);if(w.getDate()<=3&&w.getMonth()===0){w.setDate(w.getDate()+4)}if(w.getDate()<=3&&w.getMonth()===0){w.setDate(w.getDate()+4)}if(E.getDate()<=3&&E.getMonth()===0){E.setDate(E.getDate()+4)}var h=e(t).find("#"+w.getWeekId());var v=h.attr("offset");var d=e(t).find("#"+E.getWeekId());var m=d.attr("offset");var g=Math.round((m-v)/a.getCellSize())+1;l=u.createProgressBar(g,f.customClass?f.customClass:"",f.desc?f.desc:"",f.label?f.label:"",f.dataObj?f.dataObj:null);var y=e(t).find("#rowheader"+r);var b=a.getCellSize()*3+2+parseInt(y.attr("offset"),10);l.css({"margin-top":b,"margin-left":Math.floor(v)});n.append(l);break;case"months":var w=a.dateDeserialize(f.from);var E=a.dateDeserialize(f.to);if(w.getDate()<=3&&w.getMonth()===0){w.setDate(w.getDate()+4)}if(w.getDate()<=3&&w.getMonth()===0){w.setDate(w.getDate()+4)}if(E.getDate()<=3&&E.getMonth()===0){E.setDate(E.getDate()+4)}var h=e(t).find("#dh-"+a.genId(w.getTime()));var v=h.attr("offset");var d=e(t).find("#dh-"+a.genId(E.getTime()));var m=d.attr("offset");var g=Math.round((m-v)/a.getCellSize())+1;l=u.createProgressBar(g,f.customClass?f.customClass:"",f.desc?f.desc:"",f.label?f.label:"",f.dataObj?f.dataObj:null);var y=e(t).find("#rowheader"+r);var b=a.getCellSize()*2+2+parseInt(y.attr("offset"),10);l.css({"margin-top":b,"margin-left":Math.floor(v)});n.append(l);break;default:var c=a.genId(a.dateDeserialize(f.from).getTime());var p=a.genId(a.dateDeserialize(f.to).getTime());var h=e(t).find("#dh-"+c);var v=h.attr("offset");var g=Math.floor((p/1e3-c/1e3)/86400)+1;l=u.createProgressBar(g,f.customClass?f.customClass:"",f.desc?f.desc:"",f.label?f.label:"",f.dataObj?f.dataObj:null);var y=e(t).find("#rowheader"+r);var b=a.getCellSize()*4+2+parseInt(y.attr("offset"),10);l.css({"margin-top":b,"margin-left":Math.floor(v)});n.append(l);break}var S=l.find(".fn-label");if(S&&l.length){var x=i(l[0].style.backgroundColor);S.css("color",x)}else if(S){S.css("color","")}})}})},navigateTo:function(t,n){var r=e(t).find(".fn-gantt .rightPanel");var i=r.find(".dataPanel");var s=r.width();var o=i.width();switch(n){case"begin":i.animate({"margin-left":"0px"},"fast",function(){u.repositionLabel(t)});t.scrollNavigation.panelMargin=0;break;case"end":var a=o-s;t.scrollNavigation.panelMargin=a*-1;i.animate({"margin-left":"-"+a+"px"},"fast",function(){u.repositionLabel(t)});break;case"now":if(!t.scrollNavigation.canScroll||!i.find(".today").length){return false}var f=(o-s)*-1;var l=i.css("margin-left").replace("px","");var n=i.find(".today").offset().left-i.offset().left;n*=-1;if(n>0){n=0}else if(n<f){n=f}i.animate({"margin-left":n+"px"},"fast",u.repositionLabel(t));t.scrollNavigation.panelMargin=n;break;default:var f=(o-s)*-1;var l=i.css("margin-left").replace("px","");var n=parseInt(l,10)+n;if(n<=0&&n>=f){i.animate({"margin-left":n+"px"},"fast",u.repositionLabel(t))}t.scrollNavigation.panelMargin=n;break}},navigatePage:function(t,n){if(t.pageNum+n>=0&&t.pageNum+n<Math.ceil(t.rowsNum/s.itemsPerPage)){u.waitToggle(t,true,function(){t.pageNum+=n;t.hPosition=e(".fn-gantt .dataPanel").css("margin-left").replace("px","");t.scaleOldWidth=false;u.init(t)})}},zoomInOut:function(t,n){u.waitToggle(t,true,function(){var r=n<0;var o=t.scaleStep+n*3;o=o<=1?1:o===4?3:o;var a=s.scale;var f=t.headerRows;if(s.scale==="hours"&&o>=13){a="days";f=4;o=13}else if(s.scale==="days"&&r){a="hours";f=5;o=12}else if(s.scale==="days"&&!r){a="weeks";f=3;o=13}else if(s.scale==="weeks"&&!r){a="months";f=2;o=14}else if(s.scale==="weeks"&&r){a="days";f=4;o=13}else if(s.scale==="months"&&r){a="weeks";f=3;o=13}if(r&&e.inArray(a,i)<e.inArray(s.minScale,i)||!r&&e.inArray(a,i)>e.inArray(s.maxScale,i)){u.init(t);return}t.scaleStep=o;s.scale=a;t.headerRows=f;var l=e(t).find(".fn-gantt .rightPanel");var c=l.find(".dataPanel");t.hPosition=c.css("margin-left").replace("px","");t.scaleOldWidth=c.width()-l.width();if(s.useCookie){e.cookie(this.cookieKey+"CurrentScale",s.scale);e.cookie(this.cookieKey+"ScrollPos",null)}u.init(t)})},mouseScroll:function(t,n){var r=e(t).find(".fn-gantt .dataPanel");r.css("cursor","move");var i=r.offset();var s=t.scrollNavigation.mouseX===null?n.pageX:t.scrollNavigation.mouseX;var o=n.pageX-s;t.scrollNavigation.mouseX=n.pageX;u.scrollPanel(t,o);clearTimeout(t.scrollNavigation.repositionDelay);t.scrollNavigation.repositionDelay=setTimeout(u.repositionLabel,50,t)},wheelScroll:function(e,t){var n=-50*("detail"in t?t.detail:-1/120*t.originalEvent.wheelDelta);u.scrollPanel(e,n);clearTimeout(e.scrollNavigation.repositionDelay);e.scrollNavigation.repositionDelay=setTimeout(u.repositionLabel,50,e);if(t.preventDefault){t.preventDefault()}else{return false}},sliderScroll:function(t,n){var r=e(t).find(".nav-slider-bar");var i=r.find(".nav-slider-button");var s=e(t).find(".fn-gantt .rightPanel");var o=s.find(".dataPanel");var a=r.offset();var f=r.width();var l=i.width();var c,h;if(n.pageX>=a.left&&n.pageX<=a.left+f){c=n.pageX-a.left;c=c-l/2;i.css("left",c);h=o.width()-s.width();var p=c*h/f*-1;if(p>=0){o.css("margin-left","0px");t.scrollNavigation.panelMargin=0}else if(c>=f-l*1){o.css("margin-left",h*-1+"px");t.scrollNavigation.panelMargin=h*-1}else{o.css("margin-left",p+"px");t.scrollNavigation.panelMargin=p}clearTimeout(t.scrollNavigation.repositionDelay);t.scrollNavigation.repositionDelay=setTimeout(u.repositionLabel,5,t)}},scrollPanel:function(t,n){if(!t.scrollNavigation.canScroll){return false}var r=parseInt(t.scrollNavigation.panelMargin,10)+n;if(r>0){t.scrollNavigation.panelMargin=0;e(t).find(".fn-gantt .dataPanel").css("margin-left",t.scrollNavigation.panelMargin+"px")}else if(r<t.scrollNavigation.panelMaxPos*-1){t.scrollNavigation.panelMargin=t.scrollNavigation.panelMaxPos*-1;e(t).find(".fn-gantt .dataPanel").css("margin-left",t.scrollNavigation.panelMargin+"px")}else{t.scrollNavigation.panelMargin=r;e(t).find(".fn-gantt .dataPanel").css("margin-left",t.scrollNavigation.panelMargin+"px")}u.synchronizeScroller(t)},synchronizeScroller:function(t){if(s.navigate==="scroll"){var n=e(t).find(".fn-gantt .rightPanel");var r=n.find(".dataPanel");var i=e(t).find(".nav-slider-bar");var o=i.find(".nav-slider-button");var u=i.width();var a=o.width();var f=r.width()-n.width();var l=0;if(r.css("margin-left")){l=r.css("margin-left").replace("px","")}var c=l*u/f-o.width()*.25;c=c>0?0:c*-1>=u-a*.75?(u-a*1.25)*-1:c;o.css("left",c*-1)}},repositionLabel:function(t){setTimeout(function(){var n;if(!t){n=e(".fn-gantt .rightPanel .dataPanel")}else{var r=e(t).find(".fn-gantt .rightPanel");n=r.find(".dataPanel")}if(s.useCookie){e.cookie(this.cookieKey+"ScrollPos",n.css("margin-left").replace("px",""))}},500)},waitToggle:function(t,n,r){if(n){var i=e(t).offset();var o=e(t).outerWidth();var u=e(t).outerHeight();if(!t.loader){t.loader=e('<div class="fn-gantt-loader">'+'<div class="fn-gantt-loader-spinner"><span>'+s.waitText+"</span></div></div>")}e(t).append(t.loader);setTimeout(r,500)}else{if(t.loader){t.loader.remove()}t.loader=null}}};var a={getMaxDate:function(t){var n=null;e.each(t.data,function(t,r){e.each(r.values,function(e,t){n=n<a.dateDeserialize(t.to)?a.dateDeserialize(t.to):n})});switch(s.scale){case"hours":n.setHours(Math.ceil(n.getHours()/t.scaleStep)*t.scaleStep);n.setHours(n.getHours()+t.scaleStep*3);break;case"weeks":var r=new Date(n.getTime());var r=new Date(r.setDate(r.getDate()+3*7));var i=Math.floor(r.getDate()/7)*7;n=new Date(r.getFullYear(),r.getMonth(),i===0?4:i-3);break;case"months":var r=new Date(n.getFullYear(),n.getMonth(),1);r.setMonth(r.getMonth()+2);n=new Date(r.getFullYear(),r.getMonth(),1);break;default:n.setHours(0);n.setDate(n.getDate()+3);break}return n},getMinDate:function(t){var n=null;e.each(t.data,function(t,r){e.each(r.values,function(e,t){n=n>a.dateDeserialize(t.from)||n===null?a.dateDeserialize(t.from):n})});switch(s.scale){case"hours":n.setHours(Math.floor(n.getHours()/t.scaleStep)*t.scaleStep);n.setHours(n.getHours()-t.scaleStep*3);break;case"weeks":var r=new Date(n.getTime());var r=new Date(r.setDate(r.getDate()-3*7));var i=Math.floor(r.getDate()/7)*7;n=new Date(r.getFullYear(),r.getMonth(),i===0?4:i-3);break;case"months":var r=new Date(n.getFullYear(),n.getMonth(),1);r.setMonth(r.getMonth()-3);n=new Date(r.getFullYear(),r.getMonth(),1);break;default:n.setHours(0);n.setDate(n.getDate()-3);break}return n},parseDateRange:function(e,t){var n=new Date(e.getTime());var r=new Date(t.getTime());var i=[];var s=0;do{i[s++]=new Date(n.getTime());n.setDate(n.getDate()+1)}while(n.getTime()<=t.getTime());return i},parseTimeRange:function(e,t,n){var r=new Date(e);var i=new Date(t);r.setMilliseconds(0);r.setSeconds(0);r.setMinutes(0);r.setHours(0);i.setMilliseconds(0);i.setSeconds(0);if(i.getMinutes()>0||i.getHours()>0){i.setMinutes(0);i.setHours(0);i.setTime(i.getTime()+864e5)}var s=[];var u=0;for(;;){var a=new Date(r);a.setHours(Math.floor(r.getHours()/n)*n);if(s[u]&&a.getDay()!==s[u].getDay()){a.setHours(0)}s[u]=a;if(r.getTime()>t.getTime())break;r=o(a,n);u++}return s},parseWeeksRange:function(e,t){var n=new Date(e);var r=new Date(t);var i=[];var s=0;do{if(n.getDay()===0){i[s++]=n.getDayForWeek()}n.setDate(n.getDate()+1)}while(n.getTime()<=t.getTime());return i},parseMonthsRange:function(e,t){var n=new Date(e);var r=new Date(t);var i=[];var s=0;do{i[s++]=new Date(n.getFullYear(),n.getMonth(),1);n.setMonth(n.getMonth()+1)}while(n.getTime()<=t.getTime());return i},dateDeserialize:function(t){var n=t.replace(/\/Date\((.*)\)\//,"$1");n=e.isNumeric(n)?parseInt(n,10):e.trim(n);return new Date(n)},genId:function(e){var t=new Date(e);switch(s.scale){case"hours":var n=t.getHours();if(arguments.length>=2){n=Math.floor(t.getHours()/arguments[1])*arguments[1]}return(new Date(t.getFullYear(),t.getMonth(),t.getDate(),n)).getTime();case"weeks":var r=t.getFullYear();var i=t.getDayForWeek().getWeekOfYear();var o=t.getMonth();if(o===11&&i===1){r++}return r+"-"+i;case"months":return t.getFullYear()+"-"+t.getMonth();default:return(new Date(t.getFullYear(),t.getMonth(),t.getDate())).getTime()}},_getCellSize:null,getCellSize:function(){if(!a._getCellSize){e("body").append(e('<div style="display: none; position: absolute;" class="fn-gantt" id="measureCellWidth"><div class="row"></div></div>'));a._getCellSize=e("#measureCellWidth .row").height();e("#measureCellWidth").empty().remove()}return a._getCellSize},getRightPanelSize:function(){e("body").append(e('<div style="display: none; position: absolute;" class="fn-gantt" id="measureCellWidth"><div class="rightPanel"></div></div>'));var t=e("#measureCellWidth .rightPanel").height();e("#measureCellWidth").empty().remove();return t},getPageHeight:function(e){return e.pageNum+1===e.pageCount?e.rowsOnLastPage*a.getCellSize():s.itemsPerPage*a.getCellSize()},_getProgressBarMargin:null,getProgressBarMargin:function(){if(!a._getProgressBarMargin){e("body").append(e('<div style="display: none; position: absolute;" id="measureBarWidth" ><div class="fn-gantt"><div class="rightPanel"><div class="dataPanel"><div class="row day"><div class="bar" /></div></div></div></div></div>'));a._getProgressBarMargin=parseInt(e("#measureBarWidth .fn-gantt .rightPanel .day .bar").css("margin-left").replace("px",""),10);a._getProgressBarMargin+=parseInt(e("#measureBarWidth .fn-gantt .rightPanel .day .bar").css("margin-right").replace("px",""),10);e("#measureBarWidth").empty().remove()}return a._getProgressBarMargin}};this.each(function(){this.data=null;this.pageNum=0;this.pageCount=0;this.rowsOnLastPage=0;this.rowsNum=0;this.hPosition=0;this.dateStart=null;this.dateEnd=null;this.scrollClicked=false;this.scaleOldWidth=null;this.headerRows=null;if(s.useCookie){var t=e.cookie(this.cookieKey+"CurrentScale");if(t){s.scale=e.cookie(this.cookieKey+"CurrentScale")}else{e.cookie(this.cookieKey+"CurrentScale",s.scale)}}switch(s.scale){case"hours":this.headerRows=5;this.scaleStep=1;break;case"weeks":this.headerRows=3;this.scaleStep=13;break;case"months":this.headerRows=2;this.scaleStep=14;break;default:this.headerRows=4;this.scaleStep=13;break}this.scrollNavigation={panelMouseDown:false,scrollerMouseDown:false,mouseX:null,panelMargin:0,repositionDelay:0,panelMaxPos:0,canScroll:true};this.gantt=null;this.loader=null;u.create(this)})}})(jQuery)