{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./sources/utils/utils.js","webpack:///./sources/utils/dom_helpers.js","webpack:///./sources/utils/extends.js","webpack:///./sources/utils/eventable.js","webpack:///./sources/core/lightbox/controls/base_control.js","webpack:///./sources/utils/date_helpers.js","webpack:///./sources/utils/helpers.js","webpack:///./sources/core/ui/grid/editors/editors/base.js","webpack:///./sources/core/ui/layout/cell.js","webpack:///./sources/core/ui/mouse_event_container.js","webpack:///./sources/core/ui/grid/editors/controller.js","webpack:///./sources/utils/env.js","webpack:///./sources/locale/locale.js","webpack:///./sources/core/lightbox/controls/select_control.js","webpack:///./sources/core/worktime/calendar_arguments_helper.js","webpack:///./sources/utils/task_tree_helpers.js","webpack:///./sources/core/gantt_data_range.js","webpack:///./sources/core/datastore/power_array.js","webpack:///./sources/core/datastore/datastore.js","webpack:///./sources/core/ui/render/task_bar_render.js","webpack:///./sources/core/ui/grid/grid.js","webpack:///./sources/core/ui/timeline/scales.js","webpack:///./sources/core/ui/timeline/timeline.js","webpack:///./sources/core/ui/layout/layout.js","webpack:///./sources/utils/dom_event_scope.js","webpack:///./sources/utils/timeout.js","webpack:///./sources/core/destructor.js","webpack:///./sources/core/common/assert.js","webpack:///./sources/core/gantt_core.js","webpack:///./sources/core/touch.js","webpack:///./sources/css/skins/contrast_white.js","webpack:///./sources/css/skins/contrast_black.js","webpack:///./sources/css/skins/material.js","webpack:///./sources/css/skins/broadway.js","webpack:///./sources/css/skins/terrace.js","webpack:///./sources/css/skins/meadow.js","webpack:///./sources/css/skins/skyblue.js","webpack:///./sources/core/skin.js","webpack:///./sources/core/cached_functions.js","webpack:///./sources/core/data_task_types.gpl.js","webpack:///./sources/core/lightbox_optional_time.js","webpack:///./sources/core/lightbox/controls/parent_control.js","webpack:///./sources/core/lightbox/controls/duration_control.js","webpack:///./sources/core/lightbox/controls/radio_control.js","webpack:///./sources/core/lightbox/controls/checkbox_control.js","webpack:///./sources/core/lightbox/controls/time_control.js","webpack:///./sources/core/lightbox/controls/textarea_control.js","webpack:///./sources/core/lightbox/controls/template_control.js","webpack:///./sources/core/lightbox/index.js","webpack:///./sources/core/data.js","webpack:///./sources/core/facades/worktime_calendars.js","webpack:///./sources/core/worktime/strategy/no_work_time.js","webpack:///./sources/core/worktime/time_calculator.js","webpack:///./sources/core/worktime/strategy/calendar_workunit_cache.js","webpack:///./sources/core/worktime/strategy/calendar_strategy.js","webpack:///./sources/core/worktime/calendar_manager.js","webpack:///./sources/core/worktime/work_time.js","webpack:///./sources/core/load.js","webpack:///./sources/core/tasks.js","webpack:///./sources/core/wai_aria.js","webpack:///./sources/core/grid_column_api.gpl.js","webpack:///./sources/core/dynamic_loading.gpl.js","webpack:///./sources/core/plugins/auto_task_types.js","webpack:///./sources/core/plugins/new_task_placeholder.js","webpack:///./sources/core/plugins/resources.js","webpack:///./sources/core/plugins/dhtmlx_hooks.js","webpack:///./sources/core/plugins/jquery_hooks.js","webpack:///./sources/core/plugins/wbs.js","webpack:///./sources/core/plugins/batch_update.js","webpack:///./sources/core/plugins/autoscroll.js","webpack:///./sources/core/plugins/index.js","webpack:///./sources/core/dataprocessor/dataprocessor.js","webpack:///./sources/core/dataprocessor/live_update_hooks.js","webpack:///./sources/core/dataprocessor/hooks.js","webpack:///./sources/core/datastore/datastore_render.js","webpack:///./sources/core/datastore/select.js","webpack:///./sources/core/datastore/treedatastore.js","webpack:///./sources/core/facades/datastore_links.js","webpack:///./sources/core/facades/datastore_tasks.js","webpack:///./sources/core/facades/datastore.js","webpack:///./sources/core/datastore/datastore_hooks.js","webpack:///./sources/core/facades/layout.js","webpack:///./sources/core/data_task_layers.gpl.js","webpack:///./sources/core/ui/main_layout_initializer.js","webpack:///./sources/core/ui/timeline/links_dnd.js","webpack:///./sources/core/ui/timeline/tasks_dnd.js","webpack:///./sources/core/ui/timeline/main_timeline_initializer.js","webpack:///./sources/core/ui/grid/tasks_grid_dnd.js","webpack:///./sources/core/ui/grid/main_grid_initializer.js","webpack:///./sources/core/ui/render/task_grid_line_render.js","webpack:///./sources/core/ui/render/link_render.js","webpack:///./sources/core/ui/render/task_bg_render.js","webpack:///./sources/core/ui/render/task_split_render.js","webpack:///./sources/core/ui/grid/editors/editors/predecessor.js","webpack:///./sources/core/ui/grid/editors/editors/date.js","webpack:///./sources/core/ui/grid/editors/editors/select.js","webpack:///./sources/core/ui/grid/editors/editors/number.js","webpack:///./sources/core/ui/grid/editors/editors/text.js","webpack:///./sources/core/ui/grid/editors/keyboard_mappings/keyboard_navigation.js","webpack:///./sources/core/ui/grid/editors/keyboard_mappings/default.js","webpack:///./sources/core/ui/grid/editors/keyboard_mappings.js","webpack:///./sources/core/ui/grid/grid_resize.gpl.js","webpack:///./sources/core/ui/timeline/tasks_canvas_render.gpl.js","webpack:///./sources/core/ui/layout/scrollbar_cell.js","webpack:///./sources/core/ui/layout/resizer_cell.gpl.js","webpack:///./sources/core/ui/layout/view_cell.js","webpack:///./sources/core/ui/layout/view_layout.js","webpack:///./sources/core/ui/render/render_factory.js","webpack:///./sources/core/ui/render/layer_engine.js","webpack:///./sources/core/ui/gantt_layers.js","webpack:///./sources/core/ui/mouse.js","webpack:///./sources/core/ui/configurable.js","webpack:///./sources/core/ui/ui_factory.js","webpack:///./sources/core/ui/index.js","webpack:///./sources/core/message.js","webpack:///./sources/core/common/state.js","webpack:///./sources/core/common/templates.js","webpack:///./sources/core/common/dnd.js","webpack:///./sources/core/common/date.js","webpack:///./sources/core/common/ajax.js","webpack:///./sources/core/common/config.js","webpack:///./sources/core/common/services.js","webpack:///./sources/core/common/import.js","webpack:///./sources/constants/index.js","webpack:///./sources/core/gantt.js","webpack:///./sources/core/deprecated_warnings.js","webpack:///./sources/dhtmlxgantt.gpl.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","seed","dateHelper","copy","result","Array","Number","String","Boolean","length","isDate","Date","apply","defined","obj","mixin","target","source","force","f","undefined","uid","valueOf","functor","arguments","event","el","handler","capture","addEventListener","attachEvent","eventRemove","removeEventListener","detachEvent","elementPosition","elem","top","left","right","bottom","getBoundingClientRect","box","body","document","docElem","documentElement","parentNode","scrollTop","window","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","offsetWidth","offsetHeight","parseInt","offsetTop","offsetLeft","offsetParent","y","Math","round","x","width","height","isVisible","node","display","visibility","getComputedStyle","style","currentStyle","hasNonNegativeTabIndex","isNaN","getAttribute","hasHref","a","area","nodeName","loLowerCase","isEnabled","input","select","textarea","button","toLowerCase","hasAttribute","getClassName","className","baseVal","indexOf","_trimString","_slave","createElement","getTargetNode","e","tagName","srcElement","str","trim","this","replace","getNodePosition","getFocusableNodes","root","nodes","querySelectorAll","join","nodesArray","slice","splice","getScrollSize","div","cssText","appendChild","clientWidth","removeChild","addClassName","removeClassName","split","regEx","RegExp","insertNode","newone","innerHTML","child","firstChild","removeNode","getChildNodes","css","ch","childNodes","len","out","push","toNode","getElementById","querySelector","locateClassName","classname","strict","trg","ind","charAt","locateAttribute","attribute","getRelativeEventPosition","ev","pageX","pageY","pos","clientX","clientY","isChildOf","parent","b","__","constructor","EventHost","_connected","_silent_mode","_silentStart","_silentEnd","createEventStorage","dhx_catch","z","res","zr","addEvent","removeEvent","id","eventHost","catcher","callObj","attachAll","callback","callEvent","arg0","handlerName","concat","checkEvent","list","detachAllEvents","dummy","console","log","BaseControl","render","set_value","get_value","focus","gantt","getFullYear","getMonth","getDate","units","second","minute","hour","day","week","month","quarter","year","getSecondsInUnit","unit","forEach","arr","workArray","arrayMap","map","resArray","BaseEditor","show","column","config","placeholder","hide","get_input","is_changed","currentValue","is_valid","save","utils","eventable","domHelpers","Cell","factory","$container","$parent","$config","headerHeight","$gantt","$domEvents","_createDomEventScope","$id","$name","$factory","destructor","$view","$services","getService","detach","_headerClickHandler","detachAll","cell","scrollTo","clear","getNode","padding","resize","final","$preResize","topCont","topSize","getSize","minWidth","maxWidth","minHeight","maxHeight","setSize","_hide","index","cellIndex","moveView","hidden","$toHTML","content","header","raw","html","canCollapse","$fill","init","self","toggle","delegate","collapsed","size","gravity","getContentSize","$lastSize","contentX","contentY","_getBorderSizes","borders","horizontal","vertical","_currentBorders","_borders","_sizeHeader","_sizeContent","_setBorders","view","cssHash","xLayout","floor","transform","events","mouseEvents","h","getKeyboardMapping","textEditorFactory","numberEditorFactory","selectEditorFactory","dateEditorFactory","predecessorEditorFactory","initConfigs","editor_types","text","number","date","predecessor","keyboardMapping","eventBus","inlineEditController","createEditors","grid","_createPlaceholder","itemId","columnName","getItemTop","getItemHeight","cols","getGridColumns","_getEditorPosition","setAttribute","item_attribute","getColumnIndex","handlers","store","controller","_itemId","_columnName","_editor","_editorType","_placeholder","locateCell","row","getEditorConfig","getColumn","editor","mapping","getMapping","getDatastore","oldId","newId","getState","batch_update","editorType","startEdit","exists","editorState","setValue","editorConfig","$getConfig","type","$grid_data","onShow","state","item","getItem","map_to","getValue","_getItemValue","getTask","isChanged","onHide","newValue","oldValue","end_date","calculateEndDate","start_date","duration","task","updateItem","_findEditableCell","start","direction","nextIndex","nextColumn","getNextCell","dir","getFirstCell","getLastCell","editNextCell","canChangeRow","moveRow","editPrevCell","getNext","getPrev","editNextRow","editPrevRow","handlerId","env","isIE","navigator","userAgent","isIE6","XMLHttpRequest","isIE7","isIE8","isOpera","isChrome","isKHTML","isFF","isIPad","search","isEdge","locale","month_full","month_short","day_full","day_short","labels","new_task","icon_save","icon_cancel","icon_details","icon_edit","icon_delete","confirm_closing","confirm_deleting","section_description","section_time","section_type","column_wbs","column_text","column_start_date","column_duration","column_add","link","confirm_link_deleting","link_start","link_end","type_task","type_project","type_milestone","minutes","hours","days","weeks","months","years","message_ok","message_cancel","__extends","_super","SelectControl","sns","options","label","_dhx_onchange","onchange","_focus","IsWorkTimeArgument","calendar","ClosestWorkTimeArgument","CalculateEndDateArgument","step","GetDurationArgument","end","getWorkHoursArguments","setWorkTimeArguments","unsetWorkTimeArguments","isWorkTimeArguments","processedConfig","duration_unit","getClosestWorkTimeArguments","arg","_getStartEndConfig","param","argumentType","duration_step","getDurationArguments","hasDurationArguments","calculateEndDateArguments","copyLinkIdsArray","linkIds","targetHash","isLinkExists","getLink","copyLinkIds","$source","$target","getSubtreeLinks","rootId","isTaskExists","eachTask","getSubtreeTasks","ScaleHelper","_init_tasks_range","cfg","scale_unit","scale_offset_minimal","helper","scales","primaryScale","subscales","sortScales","_scale_range_unit","range","start_interval","add","resolveConfigRange","getSubtaskDates","dateRangeResolver","_min_date","_max_date","fit_tasks","old_min","old_max","_adjust_scales","$powerArray","$create","array","$removeAt","$remove","$find","$insertAt","data","$each","master","$map","$filter","powerArray","DataStore","pull","$initItem","initItem","visibleOrder","fullOrder","_skip_refresh","_filterRule","_searchVisibleOrder","_parseInner","loaded","parse","refresh","_updateOrder","code","_removeItemInner","removeItem","filter","_addItemInner","silent","order","data_size","min","getVisibleItems","getIndexRange","addItem","_changeIdInner","changeId","_moveInner","sindex","tindex","getIdByIndex","move","clearAll","arraysEqual","arr1","arr2","quick","oldOrder","count","countVisible","sort","serialize","eachItem","rule","filteredOrder","from","to","Infinity","ret","getItems","getIndexById","_getNullIfUndefined","getFirst","getLast","_task_default_render","_isAllowedUnscheduledTask","getItemPosition","templates","$getTemplates","taskType","getTaskType","padd","row_height","types","milestone","link_line_width","show_progress","element","done","progress","max","pr","progressColor","backgroundColor","opacity","progress_text","rtl","position","wrapper","drag_progress","isReadonly","drag","markerPos","_render_task_progress","task_text","_render_task_content","textColor","color","basic","template","project","isSummaryTask","isSplitTask","select_task","selected_task","drag_id","drag_mode","touch_drag","link_source_id","link_target_id","highlight_critical_path","isCriticalTask","link_landing_area","from_id","from_start","link_from_start","to_start","link_to_start","allowDrag","isLinkAllowed","dragClass","_combine_item_class","task_class","styles","side","_get_link_crossing_css","_render_side_content","leftside_text","_render_leftside_content","rightside_text","_render_rightside_content","_waiAria","setTaskBarAttr","drag_resize","_render_pair","drag_links","show_links","outer","inner","showLinkPoints","touch","cssClass","cond","leftside","links","start_to_start","finish_to_start","finish_to_finish","_get_conditions","ln","tp","min_date","max_date","renderer","type_renderers","defaultRenderer","gridResize","Grid","$state","container","gridAriaAttr","gridAttrString","gridDataAriaAttr","gridDataAttrString","$grid","gridScaleRowAttrString","$grid_scale","attr","layers","_createLayerConfig","resizer","_renderHeaderResizers","doOnRender","_mouseDelegates","_addLayers","_initEvents","outerWidth","columns","innerWidth","scrollable","_setColumnsWidth","grid_width","dataHeight","scale_height","rowStore","contentHeight","contentWidth","_getGridWidth","scrollHeight","scrollWidth","_initSmartRenderingPlaceholder","_calculateGridWidth","_renderGridHeader","$ui","gridLine","_taskLayers","taskRenderer","getDataRender","createDataRender","defaultContainer","taskLayers","layer","host","bar_layer","addLayer","_refreshPlaceholderOnStoreUpdate","smart_rendering","scrollY","scroll","getView","getScrollState","scrollSize","$rowsPlaceholder","_staticBgHandler","close","open","_clearLayers","removeLayer","_getColumnWidth","min_width","min_grid_column_width","new_width","max_width","_getGridWidthLimits","min_limit","max_limit","newWidth","start_index","columns_width","final_width","extra_width","start_width","col","share","iterator","curExtra","_getColsTotalWidth","cols_width","v","parseFloat","unknown","gridWidth","autofit","diff","delta","changed","_setContentSize","reverse","cells","lineHeigth","last","colWidth","_sort","grid_header_class","gridScaleCellAttrString","lineHeight","services","getSum","sizes","summ","setSumWidth","sum_width","scale","parts","adjustSize","full_width","splitSize","full","cellSize","initTemplate","date_scale","scale_cell_class","prepareConfigs","min_coll_width","container_width","minDate","maxDate","heights","configs","main_scale","initScaleConfig","processIgnores","initColSizes","limitVisibleRange","unshift","alineScaleColumns","reverseScale","setPosSettings","trace_x","indexes","trace_indexes","trace_index_transition","_ignore_time_config","skip_off_time","skip","probe","isWorkTime","ignore_x","display_count","min_col_width","line_height","cont_width","column_count","col_width","ignores","eachColumn","trace_x_ascending","iterateScales","lower_scale","upper_scale","upper_dates","lower_dates","prev","prevUpper","up","target_index","upper_start","upper_end","lower_start","lower_end","targetWidth","curr","tzOffset","getTimezoneOffset","_correct_dst_change","dates","lastDate","outDate","shared","canvasRender","Timeline","$scaleHelper","_findBinary","low","high","$task","$task_scale","$task_data","$task_bg","$task_links","$task_bars","_tasks","rendered","linksAttr","bindLinks","link_attribute","tasks","linkLayers","_attachLayers","backgroundImage","data_els","_refreshScales","smart_scales","_scales","_getScaleChunkHtml","taskFilter","expose","taskBar","taskSplitBar","append","taskBg","static_background","_linkLayers","_taskRenderer","getLayer","_initStaticBackgroundRender","linkStore","linkRenderer","linkLayer","_linkRenderer","staticRender","getScale","_render_tasks_scales","scales_html","outer_width","helpers","_getScales","availWidth","autosize","autosize_min_width","cfgs","min_column_width","fromPos","toPos","scale_row_class","tplClass","_prepareScaleHtml","globalConfig","globalTemplates","date_to_str","startIndex","endIndex","inherit_scale_class","cssclass","getTimelineCellAttr","dateFromPos","part","_getColumnDuration","posFromDate","columnIndexByDate","assert","wholeCells","partCell","day_ind","transition","xLeft","xRight","task_height","offset","task_height_offset","getRowTop","task_id","getParent","Layout","_this","$root","_parseConfig","$cells","_resizeScrollbars","scrollbars","scrollbar","scrollChanged","visibleScrollbars","hiddenSrollbars","showScrollbar","hideScrollbar","shouldHide","shouldShow","visibleGroups","group","_syncCellSizes","groupName","newSize","groups","_eachChild","_syncGroupSize","_xLayout","getNextSibling","ownSize","resizeSibling","getPrevSibling","siblingSize","totalGravity","totalSize","k","mainGrid","$content","startStage","mainCall","_resizeInProgress","contentViews","getCellsByType","setContentSize","_getAutosizeMode","isChild","children","cellId","sub","alert","insertBefore","rows","views","initUI","getCells","_cleanElSize","toString","_getBoxStyles","computed","properties","boxSizing","clientHeight","MozBoxSizing","horPaddings","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","vertPaddings","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth","borderBox","innerHeight","outerHeight","boxSizes","contentSizes","_sizes","margin","_calcFreeSpace","_free","_gravity","_calcSize","_configureBorders","borderClass","lastVisibleIndex","lastCell","borderColorClass","_updateCellVisibility","oldVisibleCells","_visibleCells","firstCall","visibleCells","cellView","marginSide","dx","dy","createScope","attach","extend","updPerSecond","_on_timeout","timeout","ceil","setTimeout","_eventRemoveAll","$layout","resetLightbox","_dp","check","message","show_errors","expire","calculateScaleRange","resizeDelay","scroll_size","clearTimeout","_reinit","_update_flags","initTemplates","_clearTaskLayers","_clearLinkLayers","reset","layout","createView","storeNames","refreshData","$mouseEvents","$click","buttons","edit","showLightbox","delete","question","title","confirm_deleting_title","_dhtmlx_confirm","$new","deleteTask","hideLightbox","posX","_getHorizontalScrollbar","codeScrollLeft","visible_date","task_scroll_offset","preserve_scroll","new_pos","showDate","setSizes","locate","targetAttribute","task_attribute","_locate_css","_locateHTML","getTaskRowNode","els","changeLightboxType","getLightboxType","_silent_redraw_lightbox","_get_link_type","start_to_finish","prevOffset","time_unit","offsetChanged","hasChild","_is_icon_open_click","getTaskDND","_tasks_dnd","touch_feedback","touch_feedback_duration","_prevent_touch_scroll","_touch_feedback","vibrate","touchEventsSupported","createEvent","_touch_events","touches","pointerEnabled","pointerType","msPointerEnabled","MSPOINTER_TYPE_MOUSE","touchHandlers","names","accessor","ignore","scroll_state","dblclicktime","action_mode","scroll_mode","action_start","long_tap_timer","current_target","start_drag","on_mouse_move","preventDefault","cancelBubble","abs","_touch_scroll_active","new_scroll_state","block_action","taskId","on_mouse_down","renders","_getTaskLayers","isTaskVisible","cloneNode","cloneTaskRendered","_start_dnd","_touch_drag","refreshTask","on_mouse_up","now","onDoubleClick","skins","link_arrow_size","lightbox_additional_height","_second_column_width","_third_column_width","material","_redefine_lightbox_buttons","buttons_left","buttons_right","getTaskNode","indx","broadway","_lightbox_template","_config_buttons_left","_config_buttons_right","gantt_delete_btn","gantt_save_btn","terrace","meadow","skyblue","_get_skin","skin","getElementsByTagName","href","match","skinset","_configure","resetSkin","activate","_cached_functions","update_if_changed","active","cache","critical_path_mode","wrap_methods","methods","_prefetch_originals","prefetch","methodname","original","optimizer","argumentsArray","args","get_arguments_hash","cached_values","has_cached_value","get_cached_value","cache_value","arguments_hash","is_date","getUTCDate","values","stringify_argument","deactivate","setup","override_gantt","gantt_methods","optimize_render","deactivTimeout","_extend_to_optional","lightbox_block","optional_time","section","_resolve_default_mapping","disable","val","enable","disabled","update_block","_lightbox_id","previousSibling","button_text","resizeLightbox","button_click","_get_typed_lightbox_config","form_blocks","duration_optional","time_optional","time","ParentControl","_display","item_id","getTaskByTime","allow_root","root_id","root_label","_filter","tmpDom","newOptions","onselect","replaceChild","DurationControl","_getStartDate","_time_format_order","_getDuration","getTimePicker","singleDate","single_date","readonly","lightboxDurationInputAttrString","duration_val","inps","btns","endspan","_calc_date","task_date","_change_duration","onclick","onkeydown","charCode","keyCode","which","constants","KEY_CODES","DOWN","UP","calculateDuration","_fill_lightbox_select","startDate","endDate","RadioControl","radio","default_value","checked","CheckboxControl","checkboxes","entry","TimeControl","auto_end_date","_update_lightbox_select","selects","needSetTime","_getDate","mapOffset","_get_timepicker_step","_getEndDate","TextareaControl","_get_input","TemplateControl","getHtmlButtons","floatRight","_migrate_buttons","lightboxButtonAttrString","getHtmlTimePickerOptions","settings","start_year","end_year","tdate","timeFormat","year_range","first","_time_values","time_picker","setTime","getHours","getMinutes","_lightbox_methods","registerProvider","lightbox","getLightbox","_center_lightbox","showCover","_fill_lightbox","lightboxVisibleAttr","round_dnd_dates","timeline","_is_chart_visible","time_step","getLabel","sections","j","updateCollection","list_name","collection","serverList","_lightbox_type","lightboxDiv","fullWidth","classNames","_lightbox","_is_lightbox_timepicker","wide_form","lightboxAttr","drag_lightbox","onmousedown","_ready_to_dnd","onselectstart","cursor","_init_dnd_events","_render_sections","labelBlock","inputBlock","nextSibling","inputId","bindLabelsToInputs","_init_lightbox_events","block","con","scroll_top","scroll_left","view_height","_cover","_document_height","_scroll_height","lightbox_events","_save_lightbox","gantt_cancel_btn","_cancel_lightbox","src","sec","buttonTarget","SPACE","shiftKey","click","keys","edit_save","edit_cancel","getLightboxValues","$data","tasksStore","addTask","updateTask","lightboxHiddenAttr","hideCover","_custom_lightbox","_set_lightbox_values","lightboxHeader","lightbox_header","task_time","substr","getLightboxSection","get_template_control","control","get_select_control","get_textarea_control","get_time_control","_move_while_dnd","_finish_dnd","_dnd_start_lb","gantt_unselectable","lb","_lb_start","ariaAttrs","date_part","time_format","getTimeFormat","limit_time_select","first_hour","last_hour","setHours","lightboxSelectAttrString","checkbox","ok","opts","confirm","field","type_value","oldType","formData","updTask","isUnscheduledTask","unscheduled","show_unscheduled","taskStart","taskEnd","getGlobalTaskIndex","_defaultTaskDate","parent_id","getTaskByIndex","_set_default_task_timing","createTask","setParent","$open","details_on_create","selectTask","showTask","oldid","newid","unselect","getSelectedId","_get_task_timing_mode","task_type","$no_start","$no_end","$rendered_type","_init_task_timing","task_mode","dirty","resetProjectDates","taskMode","_assign_project_dates","getSubtaskDuration","taskTiming","_update_parents","pid","has_changed","oldStart","oldEnd","roundDate","upper","lower","colIndex","steps","correctTaskWorkTime","work_time","correct_work_time","getClosestWorkTime","calendarManager","timeCalculator","getWorkHours","setWorkTime","unsetWorkTime","_hasDuration","hasDuration","createCalendar","addCalendar","getCalendar","getCalendars","getTaskCalendar","deleteCalendar","CalendarDisabledTimeStrategy","argumentsHelper","_calculateDuration","fixedUnits","createArgumentsHelper","NoWorkTimeCalendar","TimeCalculator","$disabledCalendar","_getCalendar","manager","WorkUnitsCache","_cache","getTime","put","Cache","CalendarWorkTimeStrategy","_workingUnitsCache","_getUnitOrder","_timestamp","timestamp","UTC","_checkIfWorkingUnit","_isWorkTime","_is_work_day","_getWorkHours","_is_work_hour","_internDatesPull","_nextDate","_getWorkUnitsBetweenGeneric","stepStart","stepEnd","next","checkFirst","checkLast","isLastStep","_getHoursPerDay","_getWorkHoursForRange","_getWorkUnitsBetweenHours","firstDayStart","firstDayEnd","day_start","lastDayStart","lastDayEnd","startPart","endPart","hourRange","worktime","_setCalendar","_tryChangeCalendarSettings","payload","backup","JSON","stringify","_isEmptyCalendar","datesArray","isFullWeekSet","checkFullArray","getDay","reset_calendar","is_work_unit","mult","_calculateEndDate","added","_getClosestWorkTime","future_target","prev_target","tick","both_directins","inc","unitOrder","biggerTimeUnit","biggerTimeUnitSettings","CalendarWorktimeStrategy","CalendarManager","_calendars","_getDayHoursForMultiple","calendars","currPos","reduce","acc","mergeCalendars","newCalendar","_convertWorktimeSettings","parentCalendar","defaults","fulltime","apiCore","createDefaultCalendars","calendar_property","resource_calendars","resource","calendarId","worktimes","restoreConfigCalendars","global","worktimeFacadeFactory","facade","load","url","_load_url","cl","_load_type","ajax","on_load","xmlDoc","responseText","resp","_process_loading","collections","_load_collections","linksStore","initial_scroll","firstTask","collections_loaded","option","option_key","$ignore","json","dhx_security","security_key","serializeTask","_copyObject","serializeLink","_copyLink","xml_format","rawLinks","getLinks","xml","_xmlNodeToJSON","attrs_only","attributes","nodeType","nodeValue","_getCollections","loader","xpath","itms","attrs","_getXML","toptag","getXMLTopNode","xmltop","skey","evs","oldxml","startdate","est","enddate","predecessortasks","editable_property","readonly_property","htmlTags","extraSpaces","stripHTMLLite","htmlText","singleQuotes","escapeQuotes","getAttributeString","dateString","aria-label","_taskCommonAttr","tooltip_text","$dataprocessor_class","isSelectedTask","drag_move","taskRowAttr","order_branch","$level","linkAttr","linkTypes","toStart","fromStart","drag_link","gridSeparatorAttr","buttonName","role","tabindex","headerText","time_option","aria-valuemin","multiselect","gridCellAttrString","textValue","gridAddButtonAttrString","messageButtonAttrString","buttonLabel","messageInfoAttr","messageModalAttr","quickInfoAttr","quickInfoHeaderAttrString","quickInfoHeader","quickInfoButtonAttrString","tooltipAttr","tooltipVisibleAttr","tooltipHiddenAttr","wai_aria_attributes","getGridColumn","callIfEnabled","auto_types","updateParents","childId","batchUpdate","checkParent","setTaskType","delTaskParent","originalRowDndParent","originalMoveTaskParent","allTypes","targetType","updateAfterRemoveChild","sid","placeholder_task","silenceDataProcessor","dataProcessor","_silencedPlaceholder","setUpdated","insertPlaceholder","placeholders","getTaskBy","afterEdit","newTask","createResourceMethods","resourceTaskCache","propertyName","propertyValue","filterResourceTasks","getResourceTasks","resourceIds","cacheKey","resourceHash","getResourceLoad","resourceId","resourceProperty","timegrid","currDate","timetable","resource_render_empty_cells","calculateResourceLoad","renderLine","resource_property","resource_cell_class","resource_cell_value","filterTasks","resourceRow","resource_store","dhtmlx","attaches","attachGantt","cmp","attachObject","dataType","dataObj","that","vs","av","border","gridId","gridObj","dhtmlXCellObject","jQuery","$","fn","dhx_gantt","each","newgantt","Gantt","getGanttInstance","error","wbs","_needRecalc","_isRecalcNeeded","_isGroupSort","_groups","is_active","_getWBSCode","_calcWBS","$virtual","$wbs","_setWBSCode","getWBSCode","getByWBSCode","currentNode","getChildren","_isFirst","_prevSibling","_wbs","_parent","createWbs","getTaskByWBSCode","createMethod","isActive","disableMethod","methodName","dummyMethod","restoreMethod","restoreMethods","batchUpdatePayload","noRedraw","dp_mode","call_dp","updateMode","setUpdateMode","resetProjects","refreshLink","methodsHash","setGanttMode","sendData","scrollRange","scrollStep","scrollDelay","scrollSpeed","interval","isMove","delayTimeout","startPos","started","eventPos","getAutoscrollContainer","isScrollState","dragMarker","isResize","isLink","defineDelayTimeout","speed","autoscroll_speed","setInterval","autoscroll_delay","defineScrollInterval","clearInterval","autoscrollInterval","isScroll","autoscroll","posY","need_scroll","scrollState","currentScrollTop","scrollOuterHeight","inner_height","scrollInnerHeight","currentScrollLeft","scrollOuterWidth","inner_width","scrollInnerWidth","autoscroll_step","boxSize","startCoord","serverProcessorURL","serverProcessor","action_param","updatedRows","autoUpdate","_tMode","_headers","_payload","post_delim","_waitMode","_in_progress","_invalid","mandatoryFields","messages","updated","inserted","deleted","invalid","invalid_cell","enableUTFencoding","setTransactionMode","total","headers","_tSend","_endnm","escape","_utf","encodeURIComponent","setDataColumns","_columns","getSyncState","enableDataNames","enablePartialDataSend","_changed","dnd","rowId","findRow","existing","getUserData","set_invalid","setUserData","is_invalid","_clearUpdateFlag","markRow","_methods","details","checkBeforeUpdate","mytype","_h2","editStop","sendAllData","_beforeSendData","_getRowData","_sendData","serialize_one","stack","pref","_applyPayload","urlSeparator","a1","back","ids","afterUpdate","a3","_user","a4","query","method","action","gr_id","valid","_getAllData","has_one","setVerificator","verifFunction","clearVerificator","pattern","defineAction","_uActions","afterUpdateCallback","tid","btag","marker","correct","soid","tag","finalizeUpdate","cleanUpdate","atag","anObj","_dp_init","setOnAfterUpdate","enableDebug","setOnBeforeUpdateHandler","func","setAutoUpdate","user","_need_update","_update_busy","xml_node","afterAutoUpdate","fullSync","loadUpdate","getUpdates","_v","_a","version","vers","upds","status","insertCallback","upd","isExist","addLink","deleteCallback","deleteLink","dataprocessor","liveUpdateHooks","oldAfterUpdate","dataProcessorHandlers","dp","_serverProcessor","modes","_ganttMode","newState","reqUrl","filePath","_change_id","changeLinkId","changeTaskId","_row_style","row_id","_delete_task","_sendTaskOrder","$drop_target","clientSideDelete","clientOnly","treeHelper","cascadeDelete","cascade_delete","dpMode","cascade","itemLinks","getTaskLinks","updateLink","substring","detachDataProcessor","userdata","bindDataStore","itemRepainter","getLayers","render_item","renderers","render_items","skipRepaint","change_id","refreshId","selectedId","deleteItem","TreeDataStore","_branches","$parentProperty","parentProperty","$getRootId","$openInitially","openInitially","eachParent","_buildTree","_add_branch","calculateItemLevel","targetIndex","_move_branch","$rendered_parent","_replace_branch_child","_traverseBranches","branch","items","getBranchIndex","source_pid","tbranch","parentId","getSiblings","siblings","level","_setParentInner","new_pid","startItem","added_already","old_parent","new_parent","old_id","new_id","newbranch","desc","criteria","original_criteria","temp","getLinkCount","getTaskCount","getVisibleTaskCount","getTaskIndex","startTask","calculateTaskLevel","moveTask","createTasksFacade","createLinksFacade","createDatastoreSelect","datastoreRender","getDatastores","createDatastoreFacade","createDatastore","$StoreType","open_tree_initially","setService","storeList","stores","refresh_links","linkId","_clear_data","unselectTask","facadeFactory","parseDate","checkLinkedTaskVisibility","sync_link","sourceTask","targetTask","sync_link_delete","sync_links","mapEvents","conf","mapFrom","mapTo","sourceEvent","targetEvent","$index","oldState","sourceVisible","targetVisible","deletedLinks","onItemLoading","onBeforeAdd","onAfterAdd","onBeforeUpdate","onAfterUpdate","onBeforeDelete","onAfterDelete","onIdChange","onBeforeItemMove","onAfterItemMove","onFilterItem","onItemOpen","onItemClose","onBeforeSelect","onAfterSelect","onAfterUnselect","getTimeline","getGrid","getVerticalScrollbar","getHorizontalScrollbar","DEFAULT_VALUE","tryCall","fallback","getTaskTop","getTaskPosition","getTaskHeight","roundTaskDates","getLinkNode","oldH","oldV","newV","newH","date_x","scroll_to","_scroll_state","x_pos","y_pos","x_inner","y_inner","scrollVer","scrollHor","horState","visible","verState","addTaskLayer","addLinkLayer","initializer","_legacyGridResizerClass","resizers","gridResizer","onCreated","mainTimeline","show_chart","showGrid","show_grid","colsWidth","grid_limits","original_grid_width","skinSettings","_getVerticalScrollbar","oldPos","newPos","$scroll_ver","$scroll_hor","_findGridResizer","gridFirst","_getSiblings","_behind","_front","onInitialized","resizeInfo","initialWidth","prevCellWidth","nextCellWidth","viewCell","limits","newBehindSize","newFrontSize","oldBackSize","oldFrontSize","newBackSize","oldSize","onDestroyed","initLinksDND","_link_landing","_link_target_task","_link_target_task_start","_link_source_task","_link_source_task_start","getDndState","DnD","sensitivity","updates_per_second","getLinePos","shift","isStart","taskPos","xEnd","yEnd","milestoneWidth","origWidth","sqrt","getVisibleMilestoneWidth","getMilestonePosition","isMilestone","updateMarkedHtml","drag_link_class","resetDndState","coordinateCircleQuarter","sX","eX","sY","eY","_dir_start","dd","getPosition","advanceMarker","landing","prevTarget","prevLanding","prevToStart","targ","_dir_end","targetChanged","s_x","s_y","e_x","e_y","_direction","getDirectionLine","link_direction_class","dist","pow","tan","angle","atan","PI","sin","cos","ieTransform","shiftLeft","shiftTop","showDirectingLine","createLinkDND","createTaskDND","round_task_dates","dragMultiple","_events","before_start","before_finish","after_finish","_handlers","_domEvents","clear_drag_state","set_actions","drag_from_start","stage","_move","_resize","_resize_progress","start_x","start_y","coords_x","_drag_task_coords","min_duration","diffValue","_find_max_shift","dragItems","correctShift","minX","maxX","maxShift","minShift","new_start","new_end","obj_s_x","obj_e_x","_mouse_position_change","_is_number","isFinite","_update_on_move","_update_item_on_move","curr_date","drag_project","initialDrag","childDrag","_get_drag_mode","_fix_dnd_scale_time","fixStart","fixEnd","_fix_working_times","_finalize_mouse_up","_fireEvent","_dhx_changed","dragProperty","params","trigger","drag_state","taskDnD","linkDnD","_linksDnD","_tasksDnD","_attachDomEvents","_attachStateProvider","extendDom","_clearDomEvents","_clearStateProvider","_delete_link_handler","link_description","coll","coll_date","scale_step","unregisterProvider","dnd_sensitivity","hideQuickInfo","_hideQuickInfo","getStore","initial_open_state","outerHTML","$transparent","lastTaskOfLevel","last_item","_getGridPos","gridHeight","_getTargetY","_getTaskByY","dropIndex","targetY","allowedLevel","over","order_branch_free","nextId","prevId","rowDnd","extendGantt","ext","inlineEditors","_inlineEditors","initEvents","clearEvents","scroll_on_click","sorting_method","callHandler","totalWidth","aria","date_grid","tree","grid_indent","grid_open","grid_folder","grid_blank","grid_file","align","grid_row_class","css_template","drawer","current_pos","dirs","down","path","point","get_lines","dots","line_to","get_path","line","_get_line","get_wrapper_sizes","wrapper_size","link_wrapper_width","get_line_sizes","line_size","marginTop","marginLeft","render_line","innerPos","get_direction","vect","path_builder","current","point_to","get_points","pt","get_endpoint","xy","shiftX","lineType","get_line_type","forward","sign","milestoneHeight","lines","cssTemplate","link_class","isCriticalLink","endpoint","line_width","_render_link_arrow","borderColor","show_task_cells","task_cell_class","odd","task_row_class","defaultRender","sub_tasks","PredecessorEditor","parseInputString","predecessors","delimiter","formatPredecessors","pred","getLinksDiff","predecessorCodes","selectedLinks","lag","getSelectedLinks","existingLinksSearch","linksToAdd","linkKey","linksToDelete","remove","linksDiff","autoSchedule","inputPredecessors","taskPredecessors","html5DateFormat","dateToStr","strToDate","DateEditor","str_to_date","parsed","SelectEditor","optionsHtml","NumberEditor","TextEditor","onBlurDelay","keyNav","keyboardNavigation","activeCell","command","hasEditor","keyboard","preventKeyNav","ENTER","ctrlKey","metaKey","ESC","LEFT","RIGHT","DELETE","TAB","destroy","keyboard_navigation","defaultPrevented","shouldPrevent","defaultMapping","keyNavMappings","setMapping","keyboard_navigation_cells","ScrollbarCell","_scrollHorizontalHandler","_scrollVerticalHandler","_outerScrollVerticalHandler","_outerScrollHorizontalHandler","_mouseWheelHandler","_isHorizontal","scrollPosition","_isVertical","_initVertical","_initHorizontal","_initMouseWheel","_initLinkedViews","_getRootParent","_eachView","eachCell","_getLinkedViews","scrollX","_updateLinkedViews","scrollHorizontally","_scrolling","scrollVertically","_wheel_time","_oldLeft","_getScrollSize","outerSize","isHorizontal","linked","scrollProperty","innerSizeProperty","outerProperty","_getScrollOffset","cellScrollSize","nonScrollableSize","outerScroll","innerScroll","scrollSizes","_setScrollSize","toggleVisibility","_getScaleOffset","parentLayout","_oldTop","_checkWheelTarget","targetNode","connectedViews","ff","wx","deltaX","wheelDeltaX","wy","deltaY","wheelDelta","oldLeft","detail","oldTop","ViewCell","childConfig","$initialized","unload","outerX","outerY","childSize","ViewLayout","$cell","byMaxSize","otherCell","task_area_pulls","task_area_renderers","getRenderer","layer_attribute","dom","remove_item","clear_container","buffer","createDocumentFragment","vis","replace_item","newNode","restore","clearRenderers","renderFactoryProvider","mergeFilters","filter_methods","filter_method","renderFactory","createGroup","get_container","rel_root","defaultFilters","renderGroup","tempCollection","filters","_add","pending","topmost","rel","eachLayer","createLayerFactory","previusSiblingContainer","defaultContainerSibling","removeTaskLayer","_getLinkLayers","removeLinkLayer","createMouseHandler","eventHandlers","doubleclick","contextMenu","addEventTarget","onClick","findEventHandlers","callEventHandlers","onContextMenu","returnValue","hash","delegateHandlers","handlerResult","details_on_dblclick","onMouseMove","_last_move_event","domEvents","eventName","elementHandlers","ViewSettings","extendSettings","parentSettings","own","parentView","parentConfig","parentTemplates","configurable","createFactory","createdViews","creator","configure","registerView","viewConstructor","uiFactory","createLayers","Resizer","Scrollbar","ResourceGrid","ResourceTimeline","gridEditorsFactory","renderTaskBar","renderSplitTaskBar","renderTaskBg","renderLink","gridRenderer","mainGridInitializer","mainTimelineInitializer","mainLayoutInitializer","attachInitializer","layersEngine","layersApi","layersService","boxAttribute","_dhx_msg_cfg","usercall","modalBox","modal_key","messageBox","modality","cover","buttonAriaAttrs","getFirstDefined","_createBox","cancel","contentId","btn","_boxStructure","alertPopup","confirmPopup","boxPopup","box_params","focusable","timers","info","hideAll","popups","modalbox","stateProviders","internal","provider","regTemplates","initial","template_name","xml_date","server_utc","api_date","task_unscheduled_time","grid_date_format","tooltip_date_format","copyDomEvent","altKey","_obj","_settings","inputMethods","getInputMethods","_drag_start_timer","clearDragTimer","original_target","dragStart","traceDragEvents","domElement","inputMethod","mousemove","dragMove","limited_mousemove","dragScroll","mouseup","dragEnd","checkPositionChange","diff_x","diff_y","initDnDMarker","backupEventTarget","domEvent","getEvent","backup_element","elementFromPoint","month_short_hash","month_full_hash","old","hour_start","time_part","week_start","start_on_monday","month_start","setDate","quarter_start","res_month","setMonth","year_start","setMinutes","minute_start","getSeconds","setSeconds","getMilliseconds","setMilliseconds","_add_days","ndate","setYear","add_quarter","to_fixed","num","format","utc","Function","getISOWeek","getWeek","splt","mask","_getWeekNumber","isoWeek","nday","first_thursday","year_number","ordinal_date","getUTCISOWeek","convert_to_utc","getUTCFullYear","getUTCMonth","getUTCHours","getUTCMinutes","getUTCSeconds","DOMParser","parseFromString","ActiveXObject","async","loadXML","tagname","xhr","responseXML","xpathExp","docObj","selectNodes","ownerDocument","evaluate","XPathResult","ANY_TYPE","iterateNext","_call","onLoad","getSync","postData","del","post","postSync","getLong","postLong","longParams","isQt","onreadystatechange","readyState","setRequestHeader","toUpperCase","send","branch_loading","branch_loading_property","show_loading","dhx_save_btn","dhx_cancel_btn","dhx_delete_btn","project_sections","milestone_sections","grid_resizer_column_attribute","grid_resizer_attribute","keep_grid_width","grid_resize","prevent_default_scroll","service","$inject","templatesLoader","stateService","uiApi","createLayoutFacade","deprecated","badCode","goodCode","formatting","warn","wrapDeprecated","dhtmlxMethods","dynMethods","warnings","base"],"mappings":"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","file":"dhtmlxgantt.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/codebase/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 128);\n","var dateHelper = require(\"./date_helpers\");\n\nfunction copy(object) {\n\tvar i, t, result; // iterator, types array, result\n\n\tif (object && typeof object == \"object\") {\n\t\tresult = {};\n\t\tt = [Array,Number,String,Boolean];\n\t\tfor (i=0; i= 0);\n}\n\nfunction hasHref(node){\n\tvar canHaveHref = {\"a\": true, \"area\": true};\n\tif(canHaveHref[node.nodeName.loLowerCase()]){\n\t\treturn !!node.getAttribute(\"href\");\n\t}\n\treturn true;\n}\n\nfunction isEnabled(node){\n\tvar canDisable = {\"input\":true, \"select\":true, \"textarea\":true, \"button\":true, \"object\":true};\n\tif(canDisable[node.nodeName.toLowerCase()]){\n\t\treturn !node.hasAttribute(\"disabled\");\n\t}\n\n\treturn true;\n}\n\nfunction getFocusableNodes(root){\n\tvar nodes = root.querySelectorAll([\n\t\t\"a[href]\",\n\t\t\"area[href]\",\n\t\t\"input\",\n\t\t\"select\",\n\t\t\"textarea\",\n\t\t\"button\",\n\t\t\"iframe\",\n\t\t\"object\",\n\t\t\"embed\",\n\t\t\"[tabindex]\",\n\t\t\"[contenteditable]\"\n\t].join(\", \"));\n\n\tvar nodesArray = Array.prototype.slice.call(nodes, 0);\n\tfor(var i = 0; i < nodesArray.length; i++){\n\t\tvar node = nodesArray[i];\n\t\tvar isValid = (hasNonNegativeTabIndex(node) || isEnabled(node) || hasHref(node)) && isVisible(node);\n\t\tif(!isValid){\n\t\t\tnodesArray.splice(i, 1);\n\t\t\ti--;\n\t\t}\n\t}\n\treturn nodesArray;\n}\n\nfunction getScrollSize(){\n\tvar div = document.createElement(\"div\");\n\tdiv.style.cssText=\"visibility:hidden;position:absolute;left:-1000px;width:100px;padding:0px;margin:0px;height:110px;min-height:100px;overflow-y:scroll;\";\n\n\tdocument.body.appendChild(div);\n\tvar width = div.offsetWidth-div.clientWidth;\n\tdocument.body.removeChild(div);\n\n\treturn width;\n}\n\nfunction getClassName(node){\n\tif(!node) return \"\";\n\n\tvar className = node.className || \"\";\n\tif(className.baseVal)//'className' exist but not a string - IE svg element in DOM\n\t\tclassName = className.baseVal;\n\n\tif(!className.indexOf)\n\t\tclassName = '';\n\n\treturn _trimString(className);\n}\n\nfunction addClassName(node, className){\n\tif (className && node.className.indexOf(className) === -1) {\n\t\tnode.className += \" \" + className;\n\t}\n}\n\nfunction removeClassName(node, name) {\n\tname = name.split(\" \");\n\tfor (var i = 0; i < name.length; i++) {\n\t\tvar regEx = new RegExp('\\\\s?\\\\b' + name[i] + '\\\\b(?![-_\\.])', \"\");\n\t\tnode.className = node.className.replace(regEx, \"\");\n\t}\n}\n\nfunction toNode(node) {\n\tif (typeof node === \"string\") {\n\t\treturn (document.getElementById(node) || document.querySelector(node) || document.body);\n\t}\n\treturn node || document.body;\n}\n\nvar _slave = document.createElement(\"div\");\nfunction insert(node, newone) {\n\t_slave.innerHTML = newone;\n\tvar child = _slave.firstChild;\n\tnode.appendChild(child);\n\treturn child;\n}\n\nfunction remove(node) {\n\tif (node && node.parentNode) {\n\t\tnode.parentNode.removeChild(node);\n\t}\n}\n\nfunction getChildren(node, css) {\n\tvar ch = node.childNodes;\n\tvar len = ch.length;\n\tvar out = [];\n\tfor (var i = 0; i < len; i++) {\n\t\tvar obj = ch[i];\n\t\tif (obj.className && obj.className.indexOf(css) !== -1) {\n\t\t\tout.push(obj);\n\t\t}\n\t}\n\treturn out;\n}\n\nfunction getTargetNode(e){\n\tvar trg;\n\tif (e.tagName)\n\t\ttrg = e;\n\telse {\n\t\te=e||window.event;\n\t\ttrg=e.target||e.srcElement;\n\t}\n\treturn trg;\n}\n\nfunction locateAttribute(e, attribute) {\n\tif(!attribute) return;\n\n\tvar trg = getTargetNode(e);\n\n\twhile (trg){\n\t\tif (trg.getAttribute){\t//text nodes has not getAttribute\n\t\t\tvar test = trg.getAttribute(attribute);\n\t\t\tif (test) return trg;\n\t\t}\n\t\ttrg=trg.parentNode;\n\t}\n\treturn null;\n}\n\nfunction _trimString(str){\n\tvar func = String.prototype.trim || function(){ return this.replace(/^\\s+|\\s+$/g, \"\"); };\n\treturn func.apply(str);\n}\n\nfunction locateClassName(e, classname, strict){\n\tif(strict === undefined)\n\t\tstrict = true;\n\n\tvar trg = getTargetNode(e);\n\tvar css = '';\n\tvar test = false;\n\twhile (trg){\n\t\tcss = getClassName(trg);\n\n\t\tif(css){\n\t\t\tvar ind = css.indexOf(classname);\n\t\t\tif (ind >= 0){\n\t\t\t\tif (!strict)\n\t\t\t\t\treturn trg;\n\n\t\t\t\t//check that we have exact match\n\t\t\t\tvar left = (ind === 0) || (!_trimString(css.charAt(ind - 1)));\n\t\t\t\tvar right = ((ind + classname.length >= css.length)) || (!_trimString(css.charAt(ind + classname.length)));\n\n\t\t\t\tif (left && right)\n\t\t\t\t\treturn trg;\n\t\t\t}\n\t\t}\n\n\t\ttrg=trg.parentNode;\n\t}\n\treturn null;\n}\n\n/*\nevent position relatively to DOM element\n */\nfunction getRelativeEventPosition(ev, node){\n\tif (ev.pageX || ev.pageY)\n\t\tvar pos = {x: ev.pageX, y: ev.pageY};\n\n\tvar d = document.documentElement;\n\tvar pos = {\n\t\tx: ev.clientX + d.scrollLeft - d.clientLeft,\n\t\ty: ev.clientY + d.scrollTop - d.clientTop\n\t};\n\n\tvar box = elementPosition(node);\n\tpos.x = pos.x - box.x + node.scrollLeft;\n\tpos.y = pos.y - box.y + node.scrollTop;\n\treturn pos;\n}\n\n\nfunction isChildOf(child, parent){\n\tif(!child || !parent){\n\t\treturn false;\n\t}\n\n\twhile(child && child != parent) {\n\t\tchild = child.parentNode;\n\t}\n\n\treturn child === parent;\n}\n\nmodule.exports = {\n\tgetNodePosition: elementPosition,\n\tgetFocusableNodes: getFocusableNodes,\n\tgetScrollSize: getScrollSize,\n\tgetClassName: getClassName,\n\taddClassName: addClassName,\n\tremoveClassName: removeClassName,\n\tinsertNode: insert,\n\tremoveNode: remove,\n\tgetChildNodes: getChildren,\n\ttoNode: toNode,\n\tlocateClassName:locateClassName,\n\tlocateAttribute: locateAttribute,\n\tgetTargetNode: getTargetNode,\n\tgetRelativeEventPosition: getRelativeEventPosition,\n\tisChildOf: isChildOf,\n};","module.exports = function (d, b) {\n\tfor (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\tfunction __() { this.constructor = d; }\n\td.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};","var EventHost = function(){\n\tthis._connected = [];\n\tthis._silent_mode = false;\n};\n\nEventHost.prototype = {\n\t_silentStart: function() {\n\t\tthis._silent_mode = true;\n\t},\n\t_silentEnd: function() {\n\t\tthis._silent_mode = false;\n\t}\n};\n\nvar\tcreateEventStorage = function(obj) {\n\tvar dhx_catch = [];\n\tvar z = function(){\n\t\tvar res = true;\n\t\tfor (var i = 0; i < dhx_catch.length; i++){\n\t\t\tif (dhx_catch[i]){\n\t\t\t\tvar zr = dhx_catch[i].apply(obj, arguments);\n\t\t\t\tres=res&&zr;\n\t\t\t}\n\t\t}\n\t\treturn res;\n\t};\n\tz.addEvent=function(ev){\n\t\tif (typeof (ev) == \"function\")\n\t\t\treturn dhx_catch.push(ev)-1;\n\t\treturn false;\n\t};\n\tz.removeEvent=function(id){\n\t\tdhx_catch[id]=null;\n\t};\n\treturn z;\n};\n\nfunction makeEventable(obj){\n\n\tvar eventHost = new EventHost();\n\tobj.attachEvent=function(name, catcher, callObj){\n\t\tname='ev_'+name.toLowerCase();\n\t\tif (!eventHost[name])\n\t\t\teventHost[name] = createEventStorage(callObj||this);\n\n\t\treturn(name+':'+eventHost[name].addEvent(catcher)); //return ID (event name & event ID)\n\t};\n\tobj.attachAll = function(callback, callObj){\n\t\tthis.attachEvent('listen_all', callback, callObj);\n\t};\n\n\tobj.callEvent=function(name, arg0, callObj){\n\t\tif (eventHost._silent_mode) return true;\n\n\t\tvar handlerName = 'ev_'+name.toLowerCase();\n\n\t\tif (eventHost['ev_listen_all']){\n\t\t\teventHost['ev_listen_all'].apply(callObj || this, [name].concat(arg0));\n\t\t}\n\n\t\tif (eventHost[handlerName])\n\t\t\treturn eventHost[handlerName].apply(callObj || this, arg0);\n\t\treturn true;\n\t};\n\tobj.checkEvent=function(name){\n\t\treturn (!!eventHost['ev_'+name.toLowerCase()]);\n\t};\n\tobj.detachEvent=function(id){\n\t\tif (id){\n\t\t\tvar list = id.split(':'); //get EventName and ID\n\t\t\teventHost[list[0]].removeEvent(list[1]); //remove event\n\t\t}\n\t};\n\tobj.detachAllEvents = function(){\n\t\tfor (var name in eventHost){\n\t\t\tif (name.indexOf(\"ev_\") === 0)\n\t\t\t\tdelete eventHost[name];\n\t\t}\n\t};\n\n}\n\nmodule.exports = makeEventable;","function dummy() {\n\tconsole.log(\"Method is not implemented.\"); // jshint ignore:line\n}\nfunction BaseControl() {\n}\n\n// base methods will be runned in gantt context\nBaseControl.prototype.render = dummy; // arguments: sns\nBaseControl.prototype.set_value = dummy; // arguments: node, value, ev, sns(config)\nBaseControl.prototype.get_value = dummy; // arguments node, ev, sns(config)\nBaseControl.prototype.focus = dummy; // arguments: node\n\nmodule.exports = function(gantt) { // we could send current instance of gantt to module\n\treturn BaseControl;\n};","function isDate(obj) {\n\tif (obj && typeof obj == \"object\") {\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\n\t} else {\n\t\treturn false;\n\t}\n}\n\nmodule.exports = {\n\tisDate: isDate\n};","var units = {\n\t\"second\": 1,\n\t\"minute\": 60,\n\t\"hour\": 60 * 60,\n\t\"day\": 60 * 60 * 24,\n\t\"week\": 60 * 60 * 24 * 7,\n\t\"month\": 60 * 60 * 24 * 30,\n\t\"quarter\": 60 * 60 * 24 * 30 * 3,\n\t\"year\": 60 * 60 * 24 * 365\n};\nfunction getSecondsInUnit(unit){\n\treturn units[unit] || units.hour;\n}\n\nfunction forEach(arr, callback){\n\tif(arr.forEach){\n\t\tarr.forEach(callback);\n\t}else{\n\t\tvar workArray = arr.slice();\n\t\tfor(var i = 0; i < workArray.length; i++){\n\t\t\tcallback(workArray[i], i);\n\t\t}\n\t}\n}\n\nfunction arrayMap(arr, callback){\n\tif(arr.map){\n\t\treturn arr.map(callback);\n\t}else{\n\t\tvar workArray = arr.slice();\n\t\tvar resArray = [];\n\n\t\tfor(var i = 0; i < workArray.length; i++){\n\t\t\tresArray.push(callback(workArray[i], i));\n\t\t}\n\n\t\treturn resArray;\n\t}\n\n}\n\nmodule.exports = {\n\tgetSecondsInUnit: getSecondsInUnit,\n\tforEach: forEach,\n\tarrayMap: arrayMap\n};","module.exports = function (gantt) {\n\n\tvar BaseEditor = function () {\n\t};\n\n\tBaseEditor.prototype = {\n\t\tshow: function (id, column, config, placeholder) {\n\t\t},\n\t\thide: function () {\n\t\t},\n\t\tset_value: function (value, id, column, node) {\n\t\t\tthis.get_input(node).value = value;\n\t\t},\n\t\tget_value: function (id, column, node) {\n\t\t\treturn this.get_input(node).value || \"\";\n\t\t},\n\t\tis_changed: function (value, id, column, node) {\n\t\t\tvar currentValue = this.get_value(id, column, node);\n\t\t\tif (currentValue && value && currentValue.valueOf && value.valueOf) {\n\t\t\t\treturn currentValue.valueOf() != value.valueOf();\n\t\t\t} else {\n\t\t\t\treturn currentValue != value;\n\t\t\t}\n\t\t},\n\t\tis_valid: function (value, id, column, node) {\n\t\t\treturn true;\n\t\t},\n\n\t\tsave: function (id, column, node) {\n\n\t\t},\n\t\tget_input: function (node) {\n\t\t\treturn node.querySelector(\"input\");\n\t\t},\n\t\tfocus: function (node) {\n\t\t\tvar input = this.get_input(node);\n\t\t\tif (!input) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (input.focus) {\n\t\t\t\tinput.focus();\n\t\t\t}\n\n\t\t\tif (input.select) {\n\t\t\t\tinput.select();\n\t\t\t}\n\t\t}\n\t};\n\treturn BaseEditor;\n};","var utils = require(\"../../../utils/utils\"),\n\tdomEventsScope = require(\"../../../utils/dom_event_scope\"),\n\teventable = require(\"../../../utils/eventable\"),\n\tdomHelpers = require(\"../../../utils/dom_helpers\");\n\nvar Cell = (function () {\n\t\"use strict\";\n\n\tfunction Cell(parent, config, factory, gantt) {\n\t\tif (parent) {\n\t\t\tthis.$container = domHelpers.toNode(parent);\n\t\t\tthis.$parent = parent;\n\t\t}\n\t\t// save config\n\t\tthis.$config = utils.mixin(config, {\n\t\t\theaderHeight: 33\n\t\t});\n\t\tthis.$gantt = gantt;\n\t\tthis.$domEvents = gantt._createDomEventScope();\n\t\t// set id\n\t\tthis.$id = config.id || \"c\" + utils.uid();\n\n\t\tthis.$name = \"cell\";\n\t\tthis.$factory = factory;\n\n\t\teventable(this);\n\n\t}\n\n\tCell.prototype.destructor = function () {\n\t\tthis.$parent = this.$container = this.$view = null;\n\t\tvar mouse = this.$gantt.$services.getService(\"mouseEvents\");\n\t\tmouse.detach(\"click\", \"gantt_header_arrow\", this._headerClickHandler);\n\t\tthis.$domEvents.detachAll();\n\t\tthis.callEvent(\"onDestroy\", []);\n\t\tthis.detachAllEvents();\n\t};\n\tCell.prototype.cell = function (id) {\n\t\treturn null;\n\t};\n\n\tCell.prototype.scrollTo = function(left, top){\n\n\t\tif (left*1 == left){\n\t\t\tthis.$view.scrollLeft = left;\n\t\t}\n\t\tif(top*1 == top){\n\t\t\tthis.$view.scrollTop = top;\n\t\t}\n\t};\n\n\tCell.prototype.clear = function(){\n\t\tthis.getNode().innerHTML = \"\";\n\t\tthis.getNode().className = \"gantt_layout_content\";\n\t\tthis.getNode().style.padding = \"0\";\n\t};\n\n\tCell.prototype.resize = function (final) {\n\t\tif (this.$parent) {\n\t\t\treturn this.$parent.resize(final);\n\t\t}\n\n\t\tif(final === false){\n\t\t\tthis.$preResize = true;\n\t\t}\n\n\t\tvar topCont = this.$container;\n\t\tvar x = topCont.offsetWidth;\n\t\tvar y = topCont.offsetHeight;\n\t\tvar topSize = this.getSize();\n\t\tif (topCont === document.body) {\n\t\t\tx = document.body.offsetWidth;\n\t\t\ty = document.body.offsetHeight;\n\t\t}\n\t\tif (x < topSize.minWidth) {\n\t\t\tx = topSize.minWidth;\n\t\t}\n\t\tif (x > topSize.maxWidth) {\n\t\t\tx = topSize.maxWidth;\n\t\t}\n\t\tif (y < topSize.minHeight) {\n\t\t\ty = topSize.minHeight;\n\t\t}\n\t\tif (y > topSize.maxHeight) {\n\t\t\ty = topSize.maxHeight;\n\t\t}\n\t\tthis.setSize(x, y);\n\n\t\tvar self = this;\n\n\t\tif(!this.$preResize){\n\t\t//\tself.callEvent(\"onResize\", [x, y]);\n\t\t}\n\t\tthis.$preResize = false;\n\t};\n\n\tCell.prototype.hide = function () {\n\t\tthis._hide(true);\n\t\tthis.resize();\n\t};\n\tCell.prototype.show = function (force) {\n\t\tthis._hide(false);\n\t\tif (force && this.$parent) {\n\t\t\tthis.$parent.show();\n\t\t}\n\t\tthis.resize();\n\t};\n\tCell.prototype._hide = function (mode) {\n\t\tif (mode === true && this.$view.parentNode) {\n\t\t\tthis.$view.parentNode.removeChild(this.$view);\n\t\t}\n\t\telse if (mode === false && !this.$view.parentNode) {\n\t\t\tvar index = this.$parent.cellIndex(this.$id);\n\t\t\tthis.$parent.moveView(this, index);\n\t\t}\n\t\tthis.$config.hidden = mode;\n\t};\n\tCell.prototype.$toHTML = function (content, css) {\n\t\tif (content === void 0) { content = \"\"; }\n\t\tcss = [(css || \"\"), (this.$config.css || \"\")].join(\" \");\n\t\tvar obj = this.$config;\n\t\tvar header = \"\";\n\t\tif (obj.raw) {\n\t\t\tcontent = typeof obj.raw === \"string\" ? obj.raw : \"\";\n\t\t}\n\t\telse {\n\t\t\tif (!content) {\n\t\t\t\tcontent = \"
\" + (obj.html || \"\") + \"
\";\n\t\t\t}\n\t\t\tif (obj.header) {\n\t\t\t\tvar collapseIcon = obj.canCollapse ? \"
\" : \"\";\n\t\t\t\theader = \"
\" + collapseIcon + \"
\" + obj.header + \"
\";\n\t\t\t}\n\t\t}\n\t\treturn \"
\" + header + content + \"
\";\n\t};\n\tCell.prototype.$fill = function (node, parent) {\n\t\tthis.$view = node;\n\t\tthis.$parent = parent;\n\t\tthis.init();\n\t};\n\tCell.prototype.getNode = function () {\n\t\treturn (this.$view.querySelector(\"gantt_layout_cell\") || this.$view);\n\t};\n\tCell.prototype.init = function () {\n\t\t// [NOT-GOOD] code is executed for each component, while it still has only one handler, it is no good\n\n\t\tvar self = this;\n\n\t\tthis._headerClickHandler = function(e){\n\t\t\tvar cellId = domHelpers.locateAttribute(e, \"data-cell-id\");\n\t\t\tif(cellId == self.$id){\n\t\t\t\tself.toggle();\n\t\t\t}\n\t\t};\n\n\t\tvar mouse = this.$gantt.$services.getService(\"mouseEvents\");\n\t\tmouse.delegate(\"click\", \"gantt_header_arrow\", this._headerClickHandler);\n\n\t\tthis.callEvent(\"onReady\", []);\n\t};\n\tCell.prototype.toggle = function () {\n\t\tthis.$config.collapsed = !this.$config.collapsed;\n\t\tthis.resize();\n\t};\n\tCell.prototype.getSize = function () {\n\t\tvar size = {\n\t\t\theight: this.$config.height || 0,\n\t\t\twidth: this.$config.width || 0,\n\t\t\tgravity: this.$config.gravity || 1,\n\t\t\tminHeight: this.$config.minHeight || 0,\n\t\t\tminWidth: this.$config.minWidth || 0,\n\t\t\tmaxHeight: this.$config.maxHeight || 100000,\n\t\t\tmaxWidth: this.$config.maxWidth || 100000\n\t\t};\n\t\tif (this.$config.collapsed) {\n\t\t\tvar mode = this.$config.mode === \"x\";\n\t\t\tsize[mode ? \"width\" : \"height\"] = size[mode ? \"maxWidth\" : \"maxHeight\"] = this.$config.headerHeight;\n\t\t}\n\t\treturn size;\n\t};\n\n\tCell.prototype.getContentSize = function(){\n\n\t\tvar width = this.$lastSize.contentX;\n\t\tif(width !== width*1){\n\t\t\twidth = this.$lastSize.width;\n\t\t}\n\n\t\tvar height = this.$lastSize.contentY;\n\t\tif(height !== height*1){\n\t\t\theight = this.$lastSize.height;\n\t\t}\n\n\t\treturn {\n\t\t\twidth: width,\n\t\t\theight: height\n\t\t};\n\t};\n\n\tCell.prototype._getBorderSizes = function(){\n\t\tvar borders = {\n\t\t\ttop: 0,\n\t\t\tright: 0,\n\t\t\tbottom: 0,\n\t\t\tleft: 0,\n\t\t\thorizontal: 0,\n\t\t\tvertical: 0\n\t\t};\n\t\tif(this._currentBorders){\n\t\t\tif(this._currentBorders[this._borders.left]){\n\t\t\t\tborders.left = 1;\n\t\t\t\tborders.horizontal++;\n\t\t\t}\n\n\t\t\tif(this._currentBorders[this._borders.right]){\n\t\t\t\tborders.right = 1;\n\t\t\t\tborders.horizontal++;\n\t\t\t}\n\n\t\t\tif(this._currentBorders[this._borders.top]){\n\t\t\t\tborders.top = 1;\n\t\t\t\tborders.vertical++;\n\t\t\t}\n\n\t\t\tif(this._currentBorders[this._borders.bottom]){\n\t\t\t\tborders.bottom = 1;\n\t\t\t\tborders.vertical++;\n\t\t\t}\n\t\t}\n\n\t\treturn borders;\n\n\t};\n\n\tCell.prototype.setSize = function (x, y) {\n\t\tthis.$view.style.width = x + \"px\";\n\t\tthis.$view.style.height = y + \"px\";\n\n\t\tvar borders = this._getBorderSizes();\n\t\tvar contentY = y - borders.vertical;\n\t\tvar contentX = x - borders.horizontal;\n\n\t\tthis.$lastSize = { x: x, y: y, contentX: contentX, contentY: contentY };\n\t\tif (this.$config.header) {\n\t\t\tthis._sizeHeader();\n\t\t}else{\n\t\t\tthis._sizeContent();\n\t\t}\n\t};\n\n\tCell.prototype._borders = {\n\t\t\"left\":\"gantt_layout_cell_border_left\",\n\t\t\"right\":\"gantt_layout_cell_border_right\",\n\t\t\"top\":\"gantt_layout_cell_border_top\",\n\t\t\"bottom\":\"gantt_layout_cell_border_bottom\"\n\t};\n\n\tCell.prototype._setBorders = function(css, view){\n\t\tif(!view) {\n\t\t\tview = this;\n\t\t}\n\t\tvar node = view.$view;\n\n\t\tfor( var i in this._borders){\n\t\t\tdomHelpers.removeClassName(node, this._borders[i]);\n\t\t}\n\n\t\tif(typeof css == \"string\"){\n\t\t\tcss = [css];\n\t\t}\n\n\t\tvar cssHash = {};\n\n\t\tfor(var i = 0; i < css.length; i++){\n\t\t\tdomHelpers.addClassName(node, css[i]);\n\t\t\tcssHash[css[i]] = true;\n\t\t}\n\n\t\tview._currentBorders = cssHash;\n\t};\n\n\n\tCell.prototype._sizeContent = function(){\n\t\tvar content = this.$view.childNodes[0];\n\t\tif(content && content.className == \"gantt_layout_content\"){\n\t\t\tcontent.style.height = this.$lastSize.contentY + \"px\";\n\t\t}\n\t};\n\n\tCell.prototype._sizeHeader = function () {\n\t\tvar size = this.$lastSize;\n\t\tsize.contentY -= this.$config.headerHeight;\n\t\tvar header = this.$view.childNodes[0];\n\t\tvar content = this.$view.childNodes[1];\n\t\tvar xLayout = this.$config.mode === \"x\";\n\t\tif (this.$config.collapsed) {\n\t\t\tcontent.style.display = \"none\";\n\t\t\tif (xLayout) {\n\t\t\t\theader.className = \"gantt_layout_header collapsed_x\";\n\t\t\t\theader.style.width = size.y + \"px\";\n\t\t\t\tvar d = Math.floor(size.y / 2 - size.x / 2);\n\t\t\t\theader.style.transform = \"rotate(90deg) translate(\" + d + \"px, \" + d + \"px)\";\n\t\t\t\tcontent.style.display = \"none\";\n\t\t\t}\n\t\t\telse {\n\t\t\t\theader.className = \"gantt_layout_header collapsed_y\";\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (xLayout) {\n\t\t\t\theader.className = \"gantt_layout_header\";\n\t\t\t}\n\t\t\telse {\n\t\t\t\theader.className = \"gantt_layout_header vertical\";\n\t\t\t}\n\t\t\theader.style.width = 'auto';\n\t\t\theader.style.transform = '';\n\t\t\tcontent.style.display = \"\";\n\t\t\tcontent.style.height = size.contentY + \"px\";\n\t\t}\n\t\theader.style.height = this.$config.headerHeight + \"px\";\n\t};\n\treturn Cell;\n}());\n\nmodule.exports = Cell;\n","function create(gantt){\n\tvar events = [];\n\n\treturn {\n\t\tdelegate:function(event, className, handler, root) {\n\t\t\tevents.push([event, className, handler, root]);\n\n\t\t\tvar helper = gantt.$services.getService(\"mouseEvents\");\n\t\t\thelper.delegate(event, className, handler, root);\n\t\t},\n\t\tdestructor: function(){\n\t\t\tvar mouseEvents = gantt.$services.getService(\"mouseEvents\");\n\t\t\tfor(var i = 0; i < events.length; i++){\n\t\t\t\tvar h = events[i];\n\t\t\t\tmouseEvents.detach(h[0], h[1], h[2], h[3]);\n\t\t\t}\n\t\t\tevents = [];\n\t\t}\n\t};\n}\n\nmodule.exports = create;","var getKeyboardMapping = require(\"./keyboard_mappings\");\nvar textEditorFactory = require(\"./editors/text\"),\n\tnumberEditorFactory = require(\"./editors/number\"),\n\tselectEditorFactory = require(\"./editors/select\"),\n\tdateEditorFactory = require(\"./editors/date\"),\n\tpredecessorEditorFactory = require(\"./editors/predecessor\");\nvar utils = require(\"../../../../utils/utils\");\nvar domHelpers = require(\"../../../../utils/dom_helpers\");\nvar eventable = require(\"../../../../utils/eventable\");\n\nfunction initConfigs(gantt){\n\tgantt.config.editor_types = {\n\t\ttext: new (textEditorFactory(gantt))(),\n\t\tnumber: new (numberEditorFactory(gantt))(),\n\t\tselect: new (selectEditorFactory(gantt))(),\n\t\tdate: new (dateEditorFactory(gantt))(),\n\t\tpredecessor: new (predecessorEditorFactory(gantt))()\n\t};\n}\n\nfunction create(gantt){\n\tvar keyboardMapping = getKeyboardMapping();\n\n\tvar eventBus = {};\n\teventable(eventBus);\n\n\tfunction createGridEditors(grid) {\n\n\t\tfunction _getGridCellFromNode(node){\n\t\t\tvar row = domHelpers.locateAttribute(node, grid.$config.item_attribute);\n\t\t\tvar cell = domHelpers.locateAttribute(node, \"data-column-name\");\n\t\t\tif(cell){\n\t\t\t\tvar columnName = cell.getAttribute(\"data-column-name\");\n\t\t\t\tvar id = row.getAttribute(grid.$config.item_attribute);\n\t\t\t\treturn {\n\t\t\t\t\tid: id,\n\t\t\t\t\tcolumnName: columnName\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn null;\n\n\t\t}\n\n\t\tfunction _getEditorPosition(itemId, columnName) {\n\t\t\tvar top = grid.getItemTop(itemId);\n\t\t\tvar height = grid.getItemHeight(itemId);\n\t\t\tvar cols = grid.getGridColumns();\n\t\t\tvar left = 0,\n\t\t\t\twidth = 0;\n\n\t\t\tfor (var i = 0; i < cols.length; i++) {\n\t\t\t\tif (cols[i].name == columnName) {\n\t\t\t\t\twidth = cols[i].width;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tleft += cols[i].width;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttop: top,\n\t\t\t\tleft: left,\n\t\t\t\theight: height,\n\t\t\t\twidth: width\n\t\t\t};\n\t\t}\n\t\tfunction _createPlaceholder(itemId, columnName) {\n\t\t\tvar pos = _getEditorPosition(itemId, columnName);\n\t\t\tvar el = document.createElement(\"div\");\n\t\t\tel.className = \"gantt_grid_editor_placeholder\";\n\t\t\tel.setAttribute(grid.$config.item_attribute, itemId);\n\t\t\tel.setAttribute(\"data-column-name\", columnName);\n\t\t\tel.setAttribute(\"data-column-index\", grid.getColumnIndex(columnName));\n\n\t\t\tel.style.cssText = [\n\t\t\t\t\"top:\" + pos.top + \"px\",\n\t\t\t\t\"left:\" + pos.left + \"px\",\n\t\t\t\t\"width:\" + pos.width + \"px\",\n\t\t\t\t\"height:\" + pos.height + \"px\"\n\t\t\t].join(\";\");\n\n\t\t\treturn el;\n\t\t}\n\n\n\t\tvar handlers = [];\n\t\tvar store = null;\n\t\tvar controller = {\n\t\t\t_itemId: null,\n\t\t\t_columnName: null,\n\t\t\t_editor: null,\n\t\t\t_editorType: null,\n\t\t\t_placeholder: null,\n\n\t\t\tlocateCell: _getGridCellFromNode,\n\t\t\tgetEditorConfig: function (columnName) {\n\t\t\t\tvar column = grid.getColumn(columnName);\n\t\t\t\treturn column.editor;\n\t\t\t},\n\n\t\t\tinit: function () {\n\t\t\t\tvar mapping = keyboardMapping.getMapping();\n\t\t\t\tif(mapping.init){\n\t\t\t\t\tmapping.init(this, grid);\n\t\t\t\t}\n\n\t\t\t\tstore = grid.$gantt.getDatastore(grid.$config.bind);\n\n\t\t\t\tvar self = this;\n\n\t\t\t\thandlers.push(store.attachEvent(\"onIdChange\", function(oldId, newId){\n\t\t\t\t\tif(self._itemId == oldId){\n\t\t\t\t\t\tself._itemId = newId;\n\t\t\t\t\t}\n\t\t\t\t}));\n\t\t\t\thandlers.push(store.attachEvent(\"onStoreUpdated\", function(){\n\t\t\t\t\tif(grid.$gantt.getState(\"batchUpdate\").batch_update){\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(self.isVisible() && !store.isVisible(self._itemId)){\n\t\t\t\t\t\tself.hide();\n\t\t\t\t\t}\n\t\t\t\t}));\n\n\t\t\t\tthis.init = function(){};\n\t\t\t},\n\n\t\t\tgetState: function(){\n\t\t\t\treturn {\n\t\t\t\t\teditor: this._editor,\n\t\t\t\t\teditorType: this._editorType,\n\t\t\t\t\tplaceholder: this._placeholder,\n\t\t\t\t\tid: this._itemId,\n\t\t\t\t\tcolumnName: this._columnName\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tstartEdit: function(itemId, columnName) {\n\t\t\t\tif (this.isVisible()) {\n\t\t\t\t\tthis.save();\n\t\t\t\t}\n\n\t\t\t\tif(!store.exists(itemId)){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar editorState = {id: itemId, columnName: columnName};\n\t\t\t\tif(this.callEvent(\"onBeforeEditStart\", [editorState]) === false){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.show(editorState.id, editorState.columnName);\n\t\t\t\tthis.setValue();\n\n\t\t\t\tthis.callEvent(\"onEditStart\", [editorState]);\n\t\t\t},\n\t\t\tisVisible: function(){\n\t\t\t\treturn !!(this._editor && domHelpers.isChildOf(this._placeholder, document.body));\n\t\t\t},\n\t\t\tshow: function (itemId, columnName) {\n\t\t\t\tif (this.isVisible()) {\n\t\t\t\t\tthis.save();\n\t\t\t\t}\n\t\t\t\tvar editorState = {id: itemId, columnName: columnName};\n\n\t\t\t\tvar column = grid.getColumn(editorState.columnName);\n\t\t\t\tvar editorConfig = this.getEditorConfig(column.name);\n\t\t\t\tif(!editorConfig)\n\t\t\t\t\treturn;\n\n\t\t\t\tvar editor = grid.$getConfig().editor_types[editorConfig.type];\n\n\t\t\t\tvar placeholder = _createPlaceholder(editorState.id, editorState.columnName);\n\t\t\t\tgrid.$grid_data.appendChild(placeholder);\n\t\t\t\teditor.show(editorState.id, column, editorConfig, placeholder);\n\t\t\t\tthis._editor = editor;\n\t\t\t\tthis._placeholder = placeholder;\n\t\t\t\tthis._itemId = editorState.id;\n\t\t\t\tthis._columnName = editorState.columnName;\n\t\t\t\tthis._editorType = editorConfig.type;\n\n\t\t\t\tvar mapping = keyboardMapping.getMapping();\n\t\t\t\tif(mapping.onShow){\n\t\t\t\t\tmapping.onShow(this, placeholder, grid);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tsetValue: function () {\n\t\t\t\tvar state = this.getState();\n\t\t\t\tvar itemId = state.id,\n\t\t\t\t\tcolumnName = state.columnName;\n\n\t\t\t\tvar column = grid.getColumn(columnName);\n\t\t\t\tvar item = store.getItem(itemId);\n\t\t\t\tvar editorConfig = this.getEditorConfig(columnName);\n\n\t\t\t\tif(!editorConfig)\n\t\t\t\t\treturn;\n\n\t\t\t\tvar value = item[editorConfig.map_to];\n\t\t\t\tif(editorConfig.map_to == \"auto\"){\n\t\t\t\t\tvalue = store.getItem(itemId);\n\t\t\t\t}\n\n\t\t\t\tthis._editor.set_value(value, itemId, column, this._placeholder);\n\t\t\t\tthis.focus();\n\t\t\t},\n\n\t\t\tfocus: function(){\n\t\t\t\tthis._editor.focus(this._placeholder);\n\t\t\t},\n\n\t\t\tgetValue: function () {\n\t\t\t\tvar column = grid.getColumn(this._columnName);\n\t\t\t\treturn this._editor.get_value(this._itemId, column, this._placeholder);\n\t\t\t},\n\n\t\t\t_getItemValue: function() {\n\t\t\t\tvar editorConfig = this.getEditorConfig(this._columnName);\n\n\t\t\t\tif(!editorConfig)\n\t\t\t\t\treturn;\n\n\t\t\t\tvar item = gantt.getTask(this._itemId);\n\t\t\t\tvar value = item[editorConfig.map_to];\n\t\t\t\tif(editorConfig.map_to == \"auto\"){\n\t\t\t\t\tvalue = store.getItem(this._itemId);\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t},\n\n\t\t\tisChanged: function(){\n\n\t\t\t\tvar column = grid.getColumn(this._columnName);\n\n\t\t\t\tvar value = this._getItemValue();\n\n\t\t\t\treturn this._editor.is_changed(value, this._itemId, column, this._placeholder);\n\t\t\t},\n\n\t\t\thide: function () {\n\t\t\t\tif(!this._itemId)\n\t\t\t\t\treturn;\n\n\t\t\t\tvar itemId = this._itemId,\n\t\t\t\t\tcolumnName = this._columnName;\n\n\t\t\t\tvar mapping = keyboardMapping.getMapping();\n\t\t\t\tif(mapping.onHide){\n\t\t\t\t\tmapping.onHide(this, this._placeholder, grid);\n\t\t\t\t}\n\n\t\t\t\tthis._itemId = null;\n\t\t\t\tthis._columnName = null;\n\t\t\t\tthis._editorType = null;\n\t\t\t\tif (!this._placeholder) return;\n\n\t\t\t\tif (this._editor) {\n\t\t\t\t\tthis._editor.hide(this._placeholder);\n\t\t\t\t}\n\t\t\t\tthis._editor = null;\n\t\t\t\tif (this._placeholder.parentNode) {\n\t\t\t\t\tthis._placeholder.parentNode.removeChild(this._placeholder);\n\t\t\t\t}\n\t\t\t\tthis._placeholder = null;\n\n\t\t\t\tthis.callEvent(\"onEditEnd\", [{id: itemId, columnName: columnName}]);\n\t\t\t},\n\t\t\tsave: function () {\n\t\t\t\tif(!(this.isVisible() && store.exists(this._itemId) && this.isChanged())) {\n\t\t\t\t\tthis.hide();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar itemId = this._itemId,\n\t\t\t\t\tcolumnName = this._columnName;\n\n\t\t\t\tif(!store.exists(itemId)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar item = store.getItem(itemId);\n\t\t\t\tvar editorConfig = this.getEditorConfig(columnName);\n\t\t\t\tvar editorState = {\n\t\t\t\t\tid: itemId,\n\t\t\t\t\tcolumnName: columnName,\n\t\t\t\t\tnewValue: this.getValue(),\n\t\t\t\t\toldValue: this._getItemValue()\n\t\t\t\t};\n\t\t\t\tif(this.callEvent(\"onBeforeSave\", [editorState]) !== false) {\n\t\t\t\t\tif(this._editor.is_valid(editorState.newValue, editorState.id, editorState.columnName, this._placeholder)){\n\n\t\t\t\t\t\tvar value = editorState.newValue;\n\t\t\t\t\t\tif (editorConfig.map_to != \"auto\") {\n\t\t\t\t\t\t\titem[columnName] = value;\n\t\t\t\t\t\t\tif (columnName == \"duration\") {\n\t\t\t\t\t\t\t\titem.end_date = gantt.calculateEndDate(item);\n\t\t\t\t\t\t\t} else if (columnName == \"end_date\") {\n\t\t\t\t\t\t\t\titem.start_date = gantt.calculateEndDate({\n\t\t\t\t\t\t\t\t\tstart_date: item.end_date,\n\t\t\t\t\t\t\t\t\tduration: -item.duration,\n\t\t\t\t\t\t\t\t\ttask: item}\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else if (columnName == \"start_date\") {\n\t\t\t\t\t\t\t\titem.end_date = gantt.calculateEndDate(item);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tstore.updateItem(itemId);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis._editor.save(itemId, grid.getColumn(columnName), this._placeholder);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.callEvent(\"onSave\", [editorState]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.hide();\n\t\t\t},\n\n\t\t\t_findEditableCell: function findEditableCell(start, direction){\n\t\t\t\tvar nextIndex = start;\n\t\t\t\tvar columns = grid.getGridColumns();\n\t\t\t\tvar nextColumn = columns[nextIndex];\n\n\t\t\t\tvar columnName = nextColumn ? nextColumn.name : null;\n\t\t\t\tif(columnName){\n\t\t\t\t\twhile(columnName && !this.getEditorConfig(columnName)){\n\t\t\t\t\t\tcolumnName = this._findEditableCell(start + direction, direction);\n\t\t\t\t\t}\n\t\t\t\t\treturn columnName;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t},\n\n\t\t\tgetNextCell: function moveCell(dir){\n\t\t\t\treturn this._findEditableCell(grid.getColumnIndex(this._columnName) + dir, dir);\n\t\t\t},\n\n\t\t\tgetFirstCell: function getFirstCell(){\n\t\t\t\treturn this._findEditableCell(0, 1);\n\t\t\t},\n\n\t\t\tgetLastCell: function getLastCell(){\n\t\t\t\treturn this._findEditableCell(grid.getGridColumns().length - 1, -1);\n\t\t\t},\n\n\t\t\teditNextCell: function nextCell(canChangeRow){\n\t\t\t\tvar cell = this.getNextCell(1);\n\t\t\t\tif(cell){\n\t\t\t\t\tvar nextColumn = this.getNextCell(1);\n\t\t\t\t\tif(nextColumn && this.getEditorConfig(nextColumn)){\n\t\t\t\t\t\tthis.startEdit(this._itemId, nextColumn);\n\t\t\t\t\t}\n\t\t\t\t}else if(canChangeRow && this.moveRow(1)){\n\t\t\t\t\tvar task = this.moveRow(1);\n\t\t\t\t\tcell = this.getFirstCell();\n\t\t\t\t\tif(cell && this.getEditorConfig(cell)){\n\t\t\t\t\t\tthis.startEdit(task, cell);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\teditPrevCell: function prevCell(canChangeRow){\n\t\t\t\tvar cell = this.getNextCell(-1);\n\t\t\t\tif(cell){\n\t\t\t\t\tvar nextColumn = this.getNextCell(-1);\n\t\t\t\t\tif(nextColumn && this.getEditorConfig(nextColumn)){\n\t\t\t\t\t\tthis.startEdit(this._itemId, nextColumn);\n\t\t\t\t\t}\n\t\t\t\t}else if(canChangeRow && this.moveRow(-1)){\n\t\t\t\t\tvar task = this.moveRow(-1);\n\t\t\t\t\tcell = this.getLastCell();\n\t\t\t\t\tif(cell && this.getEditorConfig(cell)){\n\t\t\t\t\t\tthis.startEdit(task, cell);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tmoveRow: function moveRow(dir){\n\t\t\t\tif(dir > 0){\n\t\t\t\t\treturn gantt.getNext(this._itemId);\n\t\t\t\t}else {\n\t\t\t\t\treturn gantt.getPrev(this._itemId);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\teditNextRow: function nextRow(){\n\t\t\t\tvar row = this.getNextCell(1);\n\t\t\t\tif(row){\n\t\t\t\t\tthis.startEdit(row, this._columnName);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\teditPrevRow: function prevRow(){\n\t\t\t\tvar row = this.getNextCell(-1);\n\t\t\t\tif(row){\n\t\t\t\t\tthis.startEdit(row, this._columnName);\n\t\t\t\t}\n\t\t\t},\n\t\t\tdestructor: function(){\n\t\t\t\thandlers.forEach(function(handlerId){\n\t\t\t\t\tstore.detachEvent(handlerId);\n\t\t\t\t});\n\t\t\t\tstore = null;\n\t\t\t\tthis.hide();\n\t\t\t\tthis.detachAllEvents();\n\t\t\t}\n\t\t};\n\n\t\tutils.mixin(controller, keyboardMapping);\n\t\tutils.mixin(controller, eventBus);\n\n\t\treturn controller;\n\t}\n\n\n\tvar inlineEditController = {\n\t\tinit: initConfigs,\n\t\tcreateEditors: createGridEditors\n\t};\n\n\tutils.mixin(inlineEditController, keyboardMapping);\n\tutils.mixin(inlineEditController, eventBus);\n\n\treturn inlineEditController;\n}\n\nmodule.exports = create;","var env = {\n\tisIE: (navigator.userAgent.indexOf(\"MSIE\") >= 0 || navigator.userAgent.indexOf(\"Trident\") >= 0),\n\tisIE6: (!window.XMLHttpRequest && navigator.userAgent.indexOf(\"MSIE\") >= 0),\n\tisIE7: (navigator.userAgent.indexOf(\"MSIE 7.0\") >= 0 && navigator.userAgent.indexOf(\"Trident\") < 0),\n\tisIE8: (navigator.userAgent.indexOf(\"MSIE 8.0\") >= 0 && navigator.userAgent.indexOf(\"Trident\") >= 0),\n\tisOpera: (navigator.userAgent.indexOf(\"Opera\") >= 0),\n\tisChrome: (navigator.userAgent.indexOf(\"Chrome\") >= 0),\n\tisKHTML: (navigator.userAgent.indexOf(\"Safari\") >= 0 || navigator.userAgent.indexOf(\"Konqueror\") >= 0),\n\tisFF: (navigator.userAgent.indexOf(\"Firefox\") >= 0),\n\tisIPad: (navigator.userAgent.search(/iPad/gi) >= 0),\n\tisEdge: (navigator.userAgent.indexOf(\"Edge\")!=-1)\n};\n\nmodule.exports = env;","module.exports = function(gantt) {\n\tgantt.locale = {\n\t\tdate: {\n\t\t\tmonth_full: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\t\tday_full: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t\t\tday_short: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"]\n\t\t},\n\t\tlabels: {\n\t\t\tnew_task: \"New task\",\n\t\t\ticon_save: \"Save\",\n\t\t\ticon_cancel: \"Cancel\",\n\t\t\ticon_details: \"Details\",\n\t\t\ticon_edit: \"Edit\",\n\t\t\ticon_delete: \"Delete\",\n\t\t\tconfirm_closing: \"\",//Your changes will be lost, are you sure?\n\t\t\tconfirm_deleting: \"Task will be deleted permanently, are you sure?\",\n\t\t\tsection_description: \"Description\",\n\t\t\tsection_time: \"Time period\",\n\t\t\tsection_type: \"Type\",\n\n\t\t\t/* grid columns */\n\t\t\tcolumn_wbs: \"WBS\",\n\t\t\tcolumn_text: \"Task name\",\n\t\t\tcolumn_start_date: \"Start time\",\n\t\t\tcolumn_duration: \"Duration\",\n\t\t\tcolumn_add: \"\",\n\n\t\t\t/* link confirmation */\n\t\t\tlink: \"Link\",\n\t\t\tconfirm_link_deleting: \"will be deleted\",\n\t\t\tlink_start: \" (start)\",\n\t\t\tlink_end: \" (end)\",\n\n\t\t\ttype_task: \"Task\",\n\t\t\ttype_project: \"Project\",\n\t\t\ttype_milestone: \"Milestone\",\n\n\t\t\tminutes: \"Minutes\",\n\t\t\thours: \"Hours\",\n\t\t\tdays: \"Days\",\n\t\t\tweeks: \"Week\",\n\t\t\tmonths: \"Months\",\n\t\t\tyears: \"Years\",\n\n\t\t\t/* message popup */\n\t\t\tmessage_ok: \"OK\",\n\t\t\tmessage_cancel: \"Cancel\"\n\n\t\t}\n\t};\n};\n\n","var __extends = require(\"../../../utils/extends\");\n\nmodule.exports = function(gantt) {\n\tvar _super = require(\"./base_control\")(gantt);\n\n\tfunction SelectControl() {\n\t\tvar self = _super.apply(this, arguments) || this;\n\t\n\t\treturn self; \n\t}\n\t\n\t__extends(SelectControl, _super);\n\t\n\tSelectControl.prototype.render = function(sns) {\n\t\tvar height = (sns.height || \"23\") + \"px\";\n\t\tvar html = \"
\";\n\t\treturn html;\n\t};\n\t\n\tSelectControl.prototype.set_value = function(node, value, ev, sns) {\n\t\tvar select = node.firstChild;\n\t\tif (!select._dhx_onchange && sns.onchange) {\n\t\t\tselect.onchange = sns.onchange;\n\t\t\tselect._dhx_onchange = true;\n\t\t}\n\t\tif (typeof value === \"undefined\")\n\t\t\tvalue = (select.options[0] || {}).value;\n\t\tselect.value = value || \"\";\n\t};\n\t\n\tSelectControl.prototype.get_value = function(node) {\n\t\treturn node.firstChild.value;\n\t};\n\t\n\tSelectControl.prototype.focus = function(node) {\n\t\tvar a = node.firstChild;\n\t\tgantt._focus(a, true);\n\t};\n\t\n\treturn SelectControl;\n};","var utils = require(\"../../utils/utils\");\nvar dateHelper = require(\"../../utils/date_helpers\");\n\n\nfunction IsWorkTimeArgument(date, unit, task, id, calendar){\n\tthis.date = date;\n\tthis.unit = unit;\n\tthis.task = task;\n\tthis.id = id;\n\tthis.calendar = calendar;\n\treturn this;\n}\n\nfunction ClosestWorkTimeArgument(date, dir, unit, task, id, calendar){\n\tthis.date = date;\n\tthis.dir = dir;\n\tthis.unit = unit;\n\tthis.task = task;\n\tthis.id = id;\n\tthis.calendar = calendar;\n\treturn this;\n}\n\nfunction CalculateEndDateArgument(start_date, duration, unit, step, task, id, calendar){\n\tthis.start_date = start_date;\n\tthis.duration = duration;\n\tthis.unit = unit;\n\tthis.step = step;\n\tthis.task = task;\n\tthis.id = id;\n\tthis.calendar = calendar;\n\treturn this;\n}\n\nfunction GetDurationArgument(start, end, task, calendar) {\n\tthis.start_date = start;\n\tthis.end_date = end;\n\tthis.task = task;\n\tthis.calendar = calendar;\n\tthis.unit = null;\n\tthis.step = null;\n\treturn this;\n}\n\nvar calendarArgumentsHelper = function(gantt){\n\treturn {\n\t\tgetWorkHoursArguments: function () {\n\t\t\tvar config = arguments[0];\n\t\t\tif (dateHelper.isDate(config)) {\n\t\t\t\tconfig = {\n\t\t\t\t\tdate: config\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tconfig = utils.mixin({}, config);\n\t\t\t}\n\t\t\treturn config;\n\t\t},\n\t\tsetWorkTimeArguments: function () {\n\t\t\treturn arguments[0];\n\t\t},\n\t\tunsetWorkTimeArguments: function () {\n\t\t\treturn arguments[0];\n\t\t},\n\t\tisWorkTimeArguments: function () {\n\t\t\tvar config = arguments[0];\n\t\t\tif(config instanceof IsWorkTimeArgument){\n\t\t\t\treturn config;\n\t\t\t}\n\n\t\t\tvar processedConfig;\n\t\t\tif (!config.date) {\n\t\t\t\t//IsWorkTimeArgument(date, unit, task, id, calendar)\n\t\t\t\tprocessedConfig = new IsWorkTimeArgument(arguments[0], arguments[1], arguments[2], null, arguments[3]);\n\t\t\t} else {\n\t\t\t\tprocessedConfig = new IsWorkTimeArgument(config.date, config.unit, config.task, null, config.calendar);\n\t\t\t}\n\n\t\t\tprocessedConfig.unit = processedConfig.unit || gantt.config.duration_unit;\n\n\t\t\treturn processedConfig;\n\t\t},\n\t\tgetClosestWorkTimeArguments: function (arg) {\n\t\t\tvar config = arguments[0];\n\t\t\tif (config instanceof ClosestWorkTimeArgument)\n\t\t\t\treturn config;\n\n\t\t\tvar processedConfig;\n\t\t\tif (dateHelper.isDate(config)) {\n\t\t\t\tprocessedConfig = new ClosestWorkTimeArgument(config);\n\n\t\t\t} else {\n\t\t\t\tprocessedConfig = new ClosestWorkTimeArgument(\n\t\t\t\t\tconfig.date,\n\t\t\t\t\tconfig.dir,\n\t\t\t\t\tconfig.unit,\n\t\t\t\t\tconfig.task,\n\t\t\t\t\tnull,//config.id,\n\t\t\t\t\tconfig.calendar\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif(config.id){\n\t\t\t\tprocessedConfig.task = config;\n\t\t\t}\n\t\t\tprocessedConfig.dir = config.dir || 'any';\n\t\t\tprocessedConfig.unit = config.unit || gantt.config.duration_unit;\n\n\t\t\treturn processedConfig;\n\t\t},\n\n\t\t_getStartEndConfig: function (param) {\n\t\t\tvar argumentType = GetDurationArgument;\n\t\t\tvar config;\n\t\t\tif (param instanceof argumentType)\n\t\t\t\treturn param;\n\n\t\t\tif (dateHelper.isDate(param)) {\n\t\t\t\tconfig = new argumentType(arguments[0], arguments[1], arguments[2], arguments[3]);\n\t\t\t} else {\n\t\t\t\tconfig = new argumentType(param.start_date, param.end_date, param.task);\n\t\t\t\tif (param.id) {\n\t\t\t\t\tconfig.task = param;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconfig.unit = config.unit || gantt.config.duration_unit;\n\t\t\tconfig.step = config.step || gantt.config.duration_step;\n\t\t\tconfig.start_date = config.start_date || config.start || config.date;\n\n\t\t\treturn config;\n\t\t},\n\n\t\tgetDurationArguments: function (start, end, unit, step) {\n\t\t\treturn this._getStartEndConfig.apply(this, arguments);\n\t\t},\n\n\t\thasDurationArguments: function (start, end, unit, step) {\n\t\t\treturn this._getStartEndConfig.apply(this, arguments);\n\t\t},\n\n\t\tcalculateEndDateArguments: function (start, duration, unit, step) {\n\t\t\tvar config = arguments[0];\n\t\t\tif (config instanceof CalculateEndDateArgument)\n\t\t\t\treturn config;\n\n\t\t\tvar processedConfig;\n\t\t\t//CalculateEndDateArgument(start_date, duration, unit, step, task, id, calendar)\n\t\t\tif (dateHelper.isDate(config)) {\n\t\t\t\tprocessedConfig = new CalculateEndDateArgument(\n\t\t\t\t\targuments[0],\n\t\t\t\t\targuments[1],\n\t\t\t\t\targuments[2],\n\t\t\t\t\tundefined,\n\t\t\t\t\targuments[3],\n\t\t\t\t\tundefined,\n\t\t\t\t\targuments[4]\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\tprocessedConfig = new CalculateEndDateArgument(\n\t\t\t\t\tconfig.start_date,\n\t\t\t\t\tconfig.duration,\n\t\t\t\t\tconfig.unit,\n\t\t\t\t\tconfig.step,\n\t\t\t\t\tconfig.task,\n\t\t\t\t\tnull,//config.id,\n\t\t\t\t\tconfig.calendar\n\t\t\t\t);\n\t\t\t}\n\t\t\tif(config.id){\n\t\t\t\tprocessedConfig.task = config;\n\t\t\t}\n\n\t\t\tprocessedConfig.unit = processedConfig.unit || gantt.config.duration_unit;\n\t\t\tprocessedConfig.step = processedConfig.step || gantt.config.duration_step;\n\n\t\t\treturn processedConfig;\n\t\t}\n\t};\n};\n\n\nmodule.exports = calendarArgumentsHelper;","function copyLinkIdsArray(gantt, linkIds, targetHash){\n\tfor(var i = 0; i < linkIds.length; i++) {\n\t\tif(gantt.isLinkExists(linkIds[i])){\n\t\t\ttargetHash[linkIds[i]] = gantt.getLink(linkIds[i]);\n\t\t}\n\t}\n}\n\nfunction copyLinkIds(gantt, task, targetHash){\n\tcopyLinkIdsArray(gantt, task.$source, targetHash);\n\tcopyLinkIdsArray(gantt, task.$target, targetHash);\n}\n\nfunction getSubtreeLinks(gantt, rootId){\n\tvar res = {};\n\n\tif(gantt.isTaskExists(rootId)){\n\t\tcopyLinkIds(gantt, gantt.getTask(rootId), res);\n\t}\n\n\tgantt.eachTask(function(child){\n\t\tcopyLinkIds(gantt, child, res);\n\t}, rootId);\n\n\treturn res;\n}\n\nfunction getSubtreeTasks(gantt, rootId){\n\tvar res = {};\n\n\tgantt.eachTask(function(child){\n\t\tres[child.id] = child;\n\t}, rootId);\n\n\treturn res;\n}\n\nmodule.exports = {\n\tgetSubtreeLinks: getSubtreeLinks,\n\tgetSubtreeTasks: getSubtreeTasks\n};","var ScaleHelper = require(\"./ui/timeline/scales_ignore\");\n\n\nfunction dateRangeResolver(gantt){\n\t//reset project timing\n\t//_get_tasks_data(gantt);\n\treturn gantt.getSubtaskDates();\n}\n\nfunction defaultRangeResolver(){\n\treturn {\n\t\tstart_date: new Date(),\n\t\tend_date: new Date()\n\t};\n}\n\nfunction resolveConfigRange(unit, gantt){\n\tvar range = {\n\t\tstart_date:null,\n\t\tend_date:null\n\t};\n\n\tif (gantt.config.start_date && gantt.config.end_date) {\n\t\trange.start_date = gantt.date[unit + \"_start\"](new Date(gantt.config.start_date));\n\n\t\tvar end = new Date(gantt.config.end_date);\n\t\tvar start_interval = gantt.date[unit + \"_start\"](new Date(end));\n\t\tif (+end != +start_interval) {\n\t\t\tend = gantt.date.add(start_interval, 1, unit);\n\t\t} else {\n\t\t\tend = start_interval;\n\t\t}\n\n\t\trange.end_date = end;\n\t}\n\treturn range;\n}\n\nfunction _scale_range_unit(gantt) {\n\tvar unit = gantt.config.scale_unit;\n\tvar step = gantt.config.step;\n\tif (gantt.config.scale_offset_minimal) {\n\n\t\tvar helper = new ScaleHelper(gantt);\n\t\tvar scales = [helper.primaryScale()].concat(gantt.config.subscales);\n\n\t\thelper.sortScales(scales);\n\t\tunit = scales[scales.length - 1].unit;\n\t\tstep = scales[scales.length - 1].step || 1;\n\t}\n\treturn { unit:unit, step:step };\n}\n\nfunction _init_tasks_range(gantt) {\n\tvar cfg = _scale_range_unit(gantt);\n\tvar unit = cfg.unit,\n\t\tstep = cfg.step;\n\tvar range = resolveConfigRange(unit, gantt);\n\n\tif(!(range.start_date && range.end_date)){\n\t\trange = dateRangeResolver(gantt);\n\t\tif(!range.start_date || !range.end_date){\n\t\t\trange = defaultRangeResolver(gantt);\n\t\t}\n\n\t\trange.start_date = gantt.date[unit + \"_start\"](range.start_date);\n\t\trange.start_date = gantt.calculateEndDate({\n\t\t\tstart_date: gantt.date[unit + \"_start\"](range.start_date),\n\t\t\tduration: -1,\n\t\t\tunit: unit,\n\t\t\tstep:step\n\t\t});//one free column before first task\n\n\t\trange.end_date = gantt.date[unit + \"_start\"](range.end_date);\n\t\trange.end_date = gantt.calculateEndDate({start_date: range.end_date, duration: 2, unit: unit, step:step});//one free column after last task\n\t}\n\n\tgantt._min_date = range.start_date;\n\tgantt._max_date = range.end_date;\n}\n\nfunction _adjust_scales(gantt) {\n\tif (gantt.config.fit_tasks) {\n\t\tvar old_min = +gantt._min_date,\n\t\t\told_max = +gantt._max_date;\n\t\t//this._init_tasks_range();\n\t\tif (+gantt._min_date != old_min || +gantt._max_date != old_max) {\n\t\t\tgantt.render();\n\n\t\t\tgantt.callEvent(\"onScaleAdjusted\", []);\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nmodule.exports = function updateTasksRange(gantt){\n\t_init_tasks_range(gantt);\n\t_adjust_scales(gantt);\n};\n","var utils = require(\"../../utils/utils\");\n\nvar $powerArray = {\n\t$create: function(array){\n\t\treturn utils.mixin(array || [], this);\n\t},\n\t//remove element at specified position\n\t$removeAt:function(pos,len){\n\t\tif (pos>=0) this.splice(pos,(len||1));\n\t},\n\t//find element in collection and remove it\n\t$remove:function(value){\n\t\tthis.$removeAt(this.$find(value));\n\t},\n\t//add element to collection at specific position\n\t$insertAt:function(data,pos){\n\t\tif (!pos && pos!==0) \t//add to the end by default\n\t\t\tthis.push(data);\n\t\telse {\n\t\t\tvar b = this.splice(pos,(this.length-pos));\n\t\t\tthis[pos] = data;\n\t\t\tthis.push.apply(this,b); //reconstruct array without loosing this pointer\n\t\t}\n\t},\n\t//return index of element, -1 if it doesn't exists\n\t$find:function(data){\n\t\tfor (var i=0; i data_size){\n\t\t\t\t//dhx.log(\"Warning\",\"DataStore:add\",\"Index of out of bounds\");\n\t\t\t\tindex = Math.min(order.length,index);\n\t\t\t}\n\t\t}\n\n\n\t\t//gantt.assert(!this.exists(id), \"Not unique ID\");\n\n\t\tthis.pull[item.id]=item;\n\t\tif (!this._skip_refresh){\n\t\t\tthis._updateOrder(function(){\n\t\t\t\tif(this.$find(item.id) === -1)\n\t\t\t\t\tthis.$insertAt(item.id,index);\n\t\t\t});\n\t\t}\n\t\tthis.filter();\n\t\t//order.$insertAt(item.id,index);\n\t},\n\n\n\tisVisible: function(id){\n\t\treturn this.visibleOrder.$find(id) > -1;\n\t},\n\tgetVisibleItems: function(){\n\t\treturn this.getIndexRange();\n\t},\n\n\taddItem: function(item, index){\n\t\tif (!utils.defined(item.id))\n\t\t\titem.id = utils.uid();\n\n\t\tif(this.$initItem){\n\t\t\titem = this.$initItem(item);\n\t\t}\n\n\t\tif (!this._skip_refresh){\n\t\t\tif (this.callEvent(\"onBeforeAdd\", [item.id, item]) === false) return false;\n\t\t}\n\n\n\t\tthis._addItemInner(item, index);\n\n\t\tif (!this._skip_refresh){\n\t\t\tthis.callEvent(\"onAfterAdd\",[item.id, item]);\n\t\t\t//repaint signal\n\t\t\tthis.callEvent(\"onStoreUpdated\",[item.id,item,\"add\"]);\n\t\t}\n\t\treturn item.id;\n\t},\n\n\t_changeIdInner: function(oldId, newId){\n\t\tif(this.pull[oldId])\n\t\t\tthis.pull[newId] = this.pull[oldId];\n\n\t\tvar visibleOrder = this._searchVisibleOrder[oldId];\n\t\tthis.pull[newId].id = newId;\n\t\tthis._updateOrder(function(){\n\t\t\tthis[this.$find(oldId)] = newId;\n\t\t});\n\t\tthis._searchVisibleOrder[newId] = visibleOrder;\n\t\tdelete this._searchVisibleOrder[oldId];\n\n\t\t//this.visibleOrder[this.visibleOrder.$find(oldId)]=newId;\n\t\tdelete this.pull[oldId];\n\t},\n\tchangeId: function(oldId, newId){\n\t\tthis._changeIdInner(oldId, newId);\n\n\t\tthis.callEvent(\"onIdChange\", [oldId, newId]);\n\n\t},\n\texists: function(id){\n\t\treturn !!(this.pull[id]);\n\t},\n\n\t_moveInner: function(sindex, tindex){\n\t\tvar id = this.getIdByIndex(sindex);\n\n\t\tthis._updateOrder(function(){\n\t\t\tthis.$removeAt(sindex);\n\t\t\tthis.$insertAt(id,Math.min(this.length, tindex));\n\t\t});\n\t\t//this.visibleOrder.$removeAt(sindex);\t//remove at old position\n\t\t//if (sindex=0 && tindex>=0, \"DataStore::move\",\"Incorrect indexes\");\n\n\t\tvar id = this.getIdByIndex(sindex);\n\t\tvar obj = this.getItem(id);\n\t\tthis._moveInner(sindex, tindex);\n\n\n\t\tif (!this._skip_refresh) {\n\t\t\t//repaint signal\n\t\t\tthis.callEvent(\"onStoreUpdated\", [obj.id, obj, \"move\"]);\n\t\t}\n\t},\n\tclearAll: function(){\n\t\tthis.pull = {};\n\t\tthis.visibleOrder = powerArray.$create();\n\t\tthis.fullOrder = powerArray.$create();\n\t\tif (this._skip_refresh) return;\n\t\tthis.callEvent(\"onClearAll\",[]);\n\t\tthis.refresh();\n\t},\n\n\tsilent:function(code, master){\n\t\tthis._skip_refresh = true;\n\t\tcode.call(master||this);\n\t\tthis._skip_refresh = false;\n\t},\n\n\tarraysEqual: function (arr1, arr2) {\n\t\tif(arr1.length !== arr2.length)\n\t\t\treturn false;\n\t\tfor(var i = 0; i < arr1.length; i++) {\n\t\t\tif(arr1[i] !== arr2[i])\n\t\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t},\n\n\trefresh: function(id, quick){\n\t\tif (this._skip_refresh) return;\n\n\t\tif(id){\n\t\t\t// if item changes visible order (e.g. expand-collapse branch) - do a complete repaint\n\t\t\tif(!quick){\n\t\t\t\tvar oldOrder = this.visibleOrder;\n\t\t\t\tthis.filter();\n\t\t\t\tif(!this.arraysEqual(oldOrder, this.visibleOrder)){\n\t\t\t\t\tid = undefined;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}else{\n\t\t\tthis.filter();\n\t\t}\n\n\t\tif (id)\n\t\t\tthis.callEvent(\"onStoreUpdated\",[id, this.pull[id], \"paint\"]);\n\t\telse\n\t\t\tthis.callEvent(\"onStoreUpdated\",[null,null,null]);\n\t},\n\n\tcount: function(){\n\t\treturn this.fullOrder.length;\n\t},\n\tcountVisible: function(){\n\t\treturn this.visibleOrder.length;\n\t},\n\n\tsort: function(sort){},\n\n\tserialize: function(){},\n\n\teachItem: function(code){\n\t\tfor (var i=0; i 1) {\n\t\t\t//little adjust milestone position, so horisontal corners would match link arrow when thickness of link line is more than 1px\n\t\t\tpadd += 1;\n\t\t}\n\n\t\tif (taskType == cfg.types.milestone){\n\t\t\tpos.left -= Math.round(height / 2);\n\t\t\tpos.width = height;\n\t\t}\n\n\t\tvar div = document.createElement(\"div\");\n\n\t\tvar width = Math.round(pos.width);\n\n\t\tif(view.$config.item_attribute){\n\t\t\tdiv.setAttribute(view.$config.item_attribute, task.id);\n\t\t}\n\n\t\tif (cfg.show_progress && taskType != cfg.types.milestone) {\n\t\t\t_render_task_progress(task, div, width, cfg, templates);\n\t\t}\n\n\t\t//use separate div to display content above progress bar\n\t\tvar content = _render_task_content(task, width, templates);\n\t\tif (task.textColor) {\n\t\t\tcontent.style.color = task.textColor;\n\t\t}\n\t\tdiv.appendChild(content);\n\n\t\tvar css = _combine_item_class(\"gantt_task_line\",\n\t\t\ttemplates.task_class(task.start_date, task.end_date, task),\n\t\t\ttask.id,\n\t\t\tview);\n\t\tif (task.color || task.progressColor || task.textColor) {\n\t\t\tcss += \" gantt_task_inline_color\";\n\t\t}\n\t\tdiv.className = css;\n\n\t\tvar styles = [\n\t\t\t\"left:\" + pos.left + \"px\",\n\t\t\t\"top:\" + (padd + pos.top) + 'px',\n\t\t\t\"height:\" + height + 'px',\n\t\t\t\"line-height:\" + (Math.max(height < 30 ? height - 2 : height, 0)) + 'px',\n\t\t\t\"width:\" + width + 'px'\n\t\t];\n\t\tif (task.color) {\n\t\t\tstyles.push(\"background-color:\" + task.color);\n\t\t}\n\t\tif (task.textColor) {\n\t\t\tstyles.push(\"color:\" + task.textColor);\n\t\t}\n\n\t\tdiv.style.cssText = styles.join(\";\");\n\t\tvar side = _render_leftside_content(task, cfg, templates);\n\t\tif (side) div.appendChild(side);\n\n\t\tside = _render_rightside_content(task, cfg, templates);\n\t\tif (side) div.appendChild(side);\n\n\t\tgantt._waiAria.setTaskBarAttr(task, div);\n\n\t\tvar state = gantt.getState();\n\n\t\tif (!gantt.isReadonly(task)) {\n\t\t\tif (cfg.drag_resize && !gantt.isSummaryTask(task) && taskType != cfg.types.milestone) {\n\t\t\t\t_render_pair(div, \"gantt_task_drag\", task, function (css) {\n\t\t\t\t\tvar el = document.createElement(\"div\");\n\t\t\t\t\tel.className = css;\n\t\t\t\t\treturn el;\n\t\t\t\t}, cfg);\n\t\t\t}\n\t\t\tif (cfg.drag_links && cfg.show_links) {\n\t\t\t\t_render_pair(div, \"gantt_link_control\", task, function (css) {\n\t\t\t\t\tvar outer = document.createElement(\"div\");\n\t\t\t\t\touter.className = css;\n\t\t\t\t\touter.style.cssText = [\n\t\t\t\t\t\t\"height:\" + height + 'px',\n\t\t\t\t\t\t\"line-height:\" + height + 'px'\n\t\t\t\t\t].join(\";\");\n\t\t\t\t\tvar inner = document.createElement(\"div\");\n\t\t\t\t\tinner.className = \"gantt_link_point\";\n\n\t\t\t\t\tvar showLinkPoints = false;\n\t\t\t\t\tif(state.link_source_id && cfg.touch){\n\t\t\t\t\t\tshowLinkPoints = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tinner.style.display = showLinkPoints ? \"block\" : \"\";\n\t\t\t\t\touter.appendChild(inner);\n\t\t\t\t\treturn outer;\n\t\t\t\t}, cfg);\n\t\t\t}\n\t\t}\n\t\treturn div;\n\t}\n\n\tfunction _render_side_content(task, template, cssClass) {\n\t\tif (!template) return null;\n\n\t\tvar text = template(task.start_date, task.end_date, task);\n\t\tif (!text) return null;\n\t\tvar content = document.createElement(\"div\");\n\t\tcontent.className = \"gantt_side_content \" + cssClass;\n\t\tcontent.innerHTML = text;\n\t\treturn content;\n\t}\n\n\tfunction _render_leftside_content(task, cfg, templates) {\n\t\tvar css = \"gantt_left \" + _get_link_crossing_css(!cfg.rtl ? true : false, task, cfg);\n\t\treturn _render_side_content(task, templates.leftside_text, css);\n\t}\n\n\tfunction _render_rightside_content(task, cfg, templates) {\n\t\tvar css = \"gantt_right \" + _get_link_crossing_css(!cfg.rtl ? false : true, task, cfg);\n\t\treturn _render_side_content(task, templates.rightside_text, css);\n\t}\n\n\tfunction _get_link_crossing_css(left, task) {\n\t\tvar cond = _get_conditions(left);\n\n\t\tfor (var i in cond) {\n\t\t\tvar links = task[i];\n\t\t\tfor (var ln = 0; ln < links.length; ln++) {\n\t\t\t\tvar link = gantt.getLink(links[ln]);\n\n\t\t\t\tfor (var tp = 0; tp < cond[i].length; tp++) {\n\t\t\t\t\tif (link.type == cond[i][tp]) {\n\t\t\t\t\t\treturn \"gantt_link_crossing\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn \"\";\n\t}\n\n\n\tfunction _render_task_content(task, width, templates) {\n\t\tvar content = document.createElement(\"div\");\n\t\tif (gantt.getTaskType(task.type) != gantt.config.types.milestone)\n\t\t\tcontent.innerHTML = templates.task_text(task.start_date, task.end_date, task);\n\t\tcontent.className = \"gantt_task_content\";\n\t\t//content.style.width = width + 'px';\n\t\treturn content;\n\t}\n\n\tfunction _render_task_progress(task, element, maxWidth, cfg, templates) {\n\t\tvar done = task.progress * 1 || 0;\n\n\t\tmaxWidth = Math.max(maxWidth - 2, 0);//2px for borders\n\t\tvar pr = document.createElement(\"div\");\n\t\tvar width = Math.round(maxWidth * done);\n\n\t\twidth = Math.min(maxWidth, width);\n\t\tif (task.progressColor) {\n\t\t\tpr.style.backgroundColor = task.progressColor;\n\t\t\tpr.style.opacity = 1;\n\t\t}\n\t\tpr.style.width = width + 'px';\n\t\tpr.className = \"gantt_task_progress\";\n\t\tpr.innerHTML = templates.progress_text(task.start_date, task.end_date, task);\n\n\t\tif(cfg.rtl){\n\t\t\tpr.style.position = \"absolute\";\n\t\t\tpr.style.right = \"0px\";\n\t\t}\n\n\t\tvar wrapper = document.createElement(\"div\");\n\t\twrapper.className = \"gantt_task_progress_wrapper\";\n\t\twrapper.appendChild(pr);\n\t\telement.appendChild(wrapper);\n\n\t\tif (gantt.config.drag_progress && !gantt.isReadonly(task)) {\n\t\t\tvar drag = document.createElement(\"div\");\n\n\t\t\tvar markerPos = width;\n\t\t\tif(cfg.rtl){\n\t\t\t\tmarkerPos = maxWidth - width;\n\t\t\t}\n\n\t\t\tdrag.style.left = markerPos + 'px';\n\t\t\tdrag.className = \"gantt_task_progress_drag\";\n\t\t\tpr.appendChild(drag);\n\t\t\telement.appendChild(drag);\n\t\t}\n\t}\n\n\tfunction _get_conditions(leftside) {\n\t\tif (leftside) {\n\t\t\treturn {\n\t\t\t\t$source: [\n\t\t\t\t\tgantt.config.links.start_to_start\n\t\t\t\t],\n\t\t\t\t$target: [\n\t\t\t\t\tgantt.config.links.start_to_start,\n\t\t\t\t\tgantt.config.links.finish_to_start\n\t\t\t\t]\n\t\t\t};\n\t\t} else {\n\t\t\treturn {\n\t\t\t\t$source: [\n\t\t\t\t\tgantt.config.links.finish_to_start,\n\t\t\t\t\tgantt.config.links.finish_to_finish\n\t\t\t\t],\n\t\t\t\t$target: [\n\t\t\t\t\tgantt.config.links.finish_to_finish\n\t\t\t\t]\n\t\t\t};\n\t\t}\n\t}\n\n\tfunction _combine_item_class(basic, template, itemId, view) {\n\t\tvar cfg = view.$getConfig();\n\t\tvar css = [basic];\n\t\tif (template)\n\t\t\tcss.push(template);\n\n\t\tvar state = gantt.getState();\n\n\t\tvar task = gantt.getTask(itemId);\n\n\t\tif (gantt.getTaskType(task.type) == cfg.types.milestone) {\n\t\t\tcss.push(\"gantt_milestone\");\n\t\t}else if (gantt.getTaskType(task.type) == cfg.types.project) {\n\t\t\tcss.push(\"gantt_project\");\n\t\t}\n\n\t\tcss.push(\"gantt_bar_\" + gantt.getTaskType(task.type));\n\n\n\t\tif (gantt.isSummaryTask(task))\n\t\t\tcss.push(\"gantt_dependent_task\");\n\n\t\tif (gantt.isSplitTask(task)) {\n\t\t\tcss.push(\"gantt_split_parent\");\n\t\t}\n\n\t\tif (cfg.select_task && itemId == state.selected_task)\n\t\t\tcss.push(\"gantt_selected\");\n\n\t\tif (itemId == state.drag_id) {\n\t\t\tcss.push(\"gantt_drag_\" + state.drag_mode);\n\t\t\tif (state.touch_drag) {\n\t\t\t\tcss.push(\"gantt_touch_\" + state.drag_mode);\n\t\t\t}\n\t\t}\n\n\t\tif (state.link_source_id == itemId)\n\t\t\tcss.push(\"gantt_link_source\");\n\n\t\tif (state.link_target_id == itemId)\n\t\t\tcss.push(\"gantt_link_target\");\n\n\n\t\tif (cfg.highlight_critical_path && gantt.isCriticalTask) {\n\t\t\tif (gantt.isCriticalTask(task))\n\t\t\t\tcss.push(\"gantt_critical_task\");\n\t\t}\n\n\t\tif (state.link_landing_area &&\n\t\t\t(state.link_target_id && state.link_source_id) &&\n\t\t\t(state.link_target_id != state.link_source_id)) {\n\n\t\t\tvar from_id = state.link_source_id;\n\t\t\tvar from_start = state.link_from_start;\n\t\t\tvar to_start = state.link_to_start;\n\n\t\t\tvar allowDrag = gantt.isLinkAllowed(from_id, itemId, from_start, to_start);\n\n\t\t\tvar dragClass = \"\";\n\t\t\tif (allowDrag) {\n\t\t\t\tif (to_start)\n\t\t\t\t\tdragClass = \"link_start_allow\";\n\t\t\t\telse\n\t\t\t\t\tdragClass = \"link_finish_allow\";\n\t\t\t} else {\n\t\t\t\tif (to_start)\n\t\t\t\t\tdragClass = \"link_start_deny\";\n\t\t\t\telse\n\t\t\t\t\tdragClass = \"link_finish_deny\";\n\t\t\t}\n\t\t\tcss.push(dragClass);\n\t\t}\n\t\treturn css.join(\" \");\n\t}\n\n\tfunction _render_pair(parent, css, task, content, config) {\n\t\tvar state = gantt.getState();\n\t\tvar className, element;\n\t\tif (+task.start_date >= +state.min_date) {\n\t\t\tclassName = [css, config.rtl ? \"task_right\" : \"task_left\", \"task_start_date\"];\n\t\t\telement = content(className.join(\" \"));\n\t\t\telement.setAttribute(\"data-bind-property\", \"start_date\");\n\t\t\tparent.appendChild(element);\n\t\t}\n\n\t\tif (+task.end_date <= +state.max_date){\n\t\t\tclassName = [css, config.rtl ? \"task_left\" : \"task_right\", \"task_end_date\"];\n\t\t\telement = content(className.join(\" \"));\n\t\t\telement.setAttribute(\"data-bind-property\", \"end_date\");\n\t\t\tparent.appendChild(element);\n\t\t}\n\n\t}\n\n\treturn _render_task_element;\n}\n\nmodule.exports = createTaskRenderer;","var domHelpers = require(\"../../../utils/dom_helpers\"),\n\tutils = require(\"../../../utils/utils\"),\n\teventable = require(\"../../../utils/eventable\"),\n\tgridResize = require(\"./grid_resize\"),\n\teditors = require(\"./editors/controller\");\n\nvar Grid = function(parent, config, factory, gantt){\n\tthis.$config = utils.mixin({}, config || {});\n\tthis.$gantt = gantt;\n\tthis.$parent = parent;\n\teventable(this);\n\tthis.$state = {};\n};\n\n\nGrid.prototype = {\n\tinit: function(container){\n\t\tvar gantt = this.$gantt;\n\t\tvar gridAriaAttr = gantt._waiAria.gridAttrString();\n\t\tvar gridDataAriaAttr = gantt._waiAria.gridDataAttrString();\n\n\n\t\tcontainer.innerHTML = \"
\";\n\t\tthis.$grid = container.childNodes[0];\n\n\t\tthis.$grid.innerHTML = \"
\";\n\n\t\tthis.$grid_scale = this.$grid.childNodes[0];\n\t\tthis.$grid_data = this.$grid.childNodes[1];\n\n\t\tvar attr = this.$getConfig()[this.$config.bind + \"_attribute\"];\n\t\tif(!attr && this.$config.bind){\n\t\t\tattr = this.$config.bind + \"_id\";\n\t\t}\n\t\tthis.$config.item_attribute = attr || null;\n\t\t\n\t\tif(!this.$config.layers){\n\t\t\tvar layers = this._createLayerConfig();\n\t\t\tthis.$config.layers = layers;\n\t\t}\n\n\t\tvar resizer = gridResize(gantt, this);\n\t\tresizer.init();\n\t\tthis._renderHeaderResizers = resizer.doOnRender;\n\t\tthis._mouseDelegates = require(\"../mouse_event_container\")(gantt);\n\n\t\tthis._addLayers(this.$gantt);\n\t\tthis._initEvents();\n\t\tthis.callEvent(\"onReady\", []);\n\t\t//this.refresh();\n\t},\n\tsetSize: function(width, height){\n\t\tthis.$config.width = this.$state.width = width;\n\t\tthis.$state.height = height;\n\n\t\t// TODO: maybe inherit and override in a subclass instead of extending here\n\n\t\tvar columns = this.getGridColumns(),\n\t\t\tinnerWidth = 0;\n\n\t\tfor (var i = 0, l = columns.length; i < l; i++) {\n\t\t\tinnerWidth += columns[i].width*1;\n\t\t}\n\n\t\tvar outerWidth;\n\t\tif(isNaN(innerWidth) || !this.$config.scrollable){\n\t\t\touterWidth = this._setColumnsWidth(width + 1);\n\t\t\tinnerWidth = outerWidth;\n\t\t}\n\n\t\tif(this.$config.scrollable){\n\t\t\tthis.$grid_scale.style.width = innerWidth + \"px\";\n\t\t\tthis.$grid_data.style.width = innerWidth + \"px\";\n\t\t}else{\n\t\t\tthis.$grid_scale.style.width = \"inherit\";\n\t\t\tthis.$grid_data.style.width = \"inherit\";\n\t\t}\n\t\tthis.$config.width -= 1;\n\n\t\tvar config = this.$getConfig();\n\t\tif(outerWidth !== width){\n\t\t\tconfig.grid_width = outerWidth;\n\t\t\tthis.$config.width = outerWidth - 1;\n\t\t}\n\n\t\tvar dataHeight = Math.max(this.$state.height - config.scale_height, 0);\n\t\tthis.$grid_data.style.height = dataHeight + \"px\";\n\t\tthis.refresh();\n\t},\n\tgetSize: function(){\n\n\t\tvar config = this.$getConfig();\n\n\t\tvar store = this.$config.rowStore;\n\n\t\tvar contentHeight = store ? config.row_height * store.countVisible() : 0,\n\t\t\tcontentWidth = this._getGridWidth();\n\n\t\tvar size = {\n\t\t\tx: this.$state.width,\n\t\t\ty: this.$state.height,\n\t\t\tcontentX: this.isVisible() ? contentWidth: 0,\n\t\t\tcontentY: this.isVisible() ? (config.scale_height + contentHeight) : 0,\n\t\t\tscrollHeight: this.isVisible() ? contentHeight: 0,\n\t\t\tscrollWidth: this.isVisible() ? contentWidth : 0\n\t\t};\n\n\t\treturn size;\n\t},\n\trefresh: function(){\n\n\t\tif(this.$config.bind)\n\t\t\tthis.$config.rowStore = this.$gantt.getDatastore(this.$config.bind);\n\n\t\tthis._initSmartRenderingPlaceholder();\n\n\t\tthis._calculateGridWidth();\n\t\tthis._renderGridHeader();\n\t},\n\tscrollTo: function(left, top){\n\t\tif(!this.isVisible())\n\t\t\treturn;\n\n\t\tif (left*1 == left){\n\t\t\tthis.$state.scrollLeft = this.$grid.scrollLeft = left;\n\t\t}\n\n\t\t// var config = this.$getConfig();\n\t\tif(top*1 == top){\n\t\t\tthis.$state.scrollTop = this.$grid_data.scrollTop = top;\n\t\t}\n\t},\n\n\tgetColumnIndex: function(name){\n\t\tvar columns = this.$getConfig().columns;\n\n\t\tfor (var i = 0; i < columns.length; i++) {\n\t\t\tif (columns[i].name == name) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t},\n\n\tgetColumn: function(name){\n\t\tvar index = this.getColumnIndex(name);\n\t\tif(index === null){\n\t\t\treturn null;\n\t\t}\n\t\treturn this.$getConfig().columns[index];\n\t},\n\n\tgetGridColumns: function(){\n\t\tvar config = this.$getConfig();\n\t\treturn config.columns.slice();\n\t},\n\tisVisible: function(){\n\t\tif(this.$parent && this.$parent.$config){\n\t\t\treturn !this.$parent.$config.hidden;\n\t\t}else{\n\t\t\treturn this.$grid.offsetWidth;\n\t\t}\n\t},\n\n\tgetItemTop: function(id){\n\t\tif(this.$config.rowStore){\n\t\t\tvar store = this.$config.rowStore;\n\t\t\tif(!store) return 0;\n\n\t\t\treturn store.getIndexById(id) * this.$getConfig().row_height;\n\n\t\t}else{\n\t\t\treturn 0;\n\t\t}\n\t},\n\n\tgetItemHeight: function(){\n\t\tvar config = this.$getConfig();\n\t\treturn config.row_height;\n\t},\n\n\t_createLayerConfig: function(){\n\t\tvar gantt = this.$gantt;\n\t\tvar self = this;\n\t\tvar layers = [\n\t\t\t{\n\t\t\t\trenderer: gantt.$ui.layers.gridLine,\n\t\t\t\tcontainer: this.$grid_data,\n\t\t\t\tfilter: [function(){\n\t\t\t\t\treturn self.isVisible();\n\t\t\t\t}]\n\t\t\t}\n\t\t];\n\t\treturn layers;\n\t},\n\n\t_addLayers: function(gantt){\n\t\tif(!this.$config.bind)\n\t\t\treturn;\n\n\t\tthis._taskLayers = [];\n\n\t\tvar self = this;\n\n\t\tvar layers = this.$gantt.$services.getService(\"layers\");\n\t\tvar taskRenderer = layers.getDataRender(this.$config.bind);\n\n\t\tif(!taskRenderer){\n\t\t\ttaskRenderer = layers.createDataRender({\n\t\t\t\tname: this.$config.bind,\n\t\t\t\tdefaultContainer: function(){ return self.$grid_data;}\n\t\t\t});\n\t\t}\n\n\t\tvar taskLayers = this.$config.layers;\n\t\tfor(var i = 0; taskLayers && i < taskLayers.length; i++){\n\t\t\tvar layer = taskLayers[i];\n\t\t\tlayer.host = this;\n\t\t\tvar bar_layer = taskRenderer.addLayer(layer);\n\t\t\tthis._taskLayers.push(bar_layer);\n\t\t}\n\n\t\tif(this.$config.bind)\n\t\t\tthis.$config.rowStore = this.$gantt.getDatastore(this.$config.bind);\n\n\t\tthis._initSmartRenderingPlaceholder();\n\t},\n\n\t_refreshPlaceholderOnStoreUpdate: function(id){\n\t\tvar config = this.$getConfig(),\n\t\t\tstore = this.$config.rowStore;\n\n\t\tif(!store || id !== null || !this.isVisible() || !config.smart_rendering) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar contentHeight;\n\t\tif(this.$config.scrollY) {\n\t\t\tvar scroll = this.$gantt.$ui.getView(this.$config.scrollY);\n\t\t\tif(scroll)\n\t\t\t\tcontentHeight = scroll.getScrollState().scrollSize;\n\t\t}\n\n\t\tif(!contentHeight){\n\t\t\tcontentHeight = store ? config.row_height * store.countVisible() : 0;\n\t\t}\n\n\t\tif(contentHeight){\n\t\t\tif(this.$rowsPlaceholder && this.$rowsPlaceholder.parentNode){\n\t\t\t\tthis.$rowsPlaceholder.parentNode.removeChild(this.$rowsPlaceholder);\n\t\t\t}\n\n\t\t\tvar placeholder = this.$rowsPlaceholder = document.createElement(\"div\");\n\t\t\tplaceholder.style.visibility = \"hidden\";\n\t\t\tplaceholder.style.height = contentHeight + \"px\";\n\t\t\tplaceholder.style.width = \"1px\";\n\t\t\tthis.$grid_data.appendChild(placeholder);\n\t\t}\n\t},\n\n\t_initSmartRenderingPlaceholder: function(){\n\t\tvar store = this.$config.rowStore;\n\t\tif(!store){\n\t\t\treturn;\n\t\t}else{\n\t\t\tthis._initSmartRenderingPlaceholder = function(){};\n\t\t}\n\t\tthis._staticBgHandler = store.attachEvent(\"onStoreUpdated\", utils.bind(this._refreshPlaceholderOnStoreUpdate, this));\n\t},\n\n\t_initEvents: function(){\n\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_close\", gantt.bind(function (e, id, trg) {\n\t\t\tvar store = this.$config.rowStore;\n\t\t\tif(!store) return true;\n\n\t\t\tvar target = domHelpers.locateAttribute(e, this.$config.item_attribute);\n\t\t\tif(target){\n\t\t\t\tstore.close(target.getAttribute(this.$config.item_attribute));\n\n\t\t\t}\n\t\t\treturn false;\n\t\t}, this), this.$grid);\n\n\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_open\", gantt.bind(function (e, id, trg) {\n\t\t\tvar store = this.$config.rowStore;\n\t\t\tif(!store) return true;\n\n\t\t\tvar target = domHelpers.locateAttribute(e, this.$config.item_attribute);\n\t\t\tif(target){\n\t\t\t\tstore.open(target.getAttribute(this.$config.item_attribute));\n\n\t\t\t}\n\t\t\treturn false;\n\t\t}, this), this.$grid);\n\t},\n\n\t_clearLayers: function(gantt){\n\t\tvar layers = this.$gantt.$services.getService(\"layers\");\n\t\tvar taskRenderer = layers.getDataRender(this.$config.bind);\n\n\t\tfor(var i = 0; i < this._taskLayers.length; i++){\n\t\t\ttaskRenderer.removeLayer(this._taskLayers[i]);\n\t\t}\n\n\t\tthis._taskLayers = [];\n\t},\n\n\t_getColumnWidth: function(column, config, width) {\n\t\tvar min_width = column.min_width || config.min_grid_column_width;\n\t\tvar new_width = Math.max(width, min_width || 10);\n\t\tif (column.max_width)\n\t\t\tnew_width = Math.min(new_width, column.max_width);\n\t\treturn new_width;\n\t},\n\t// return min and max possible grid width according to restricts\n\t_getGridWidthLimits: function() {\n\t\tvar config = this.$getConfig(),\n\t\t\tcolumns = this.getGridColumns(),\n\t\t\tmin_limit = 0,\n\t\t\tmax_limit = 0;\n\n\t\t\tfor (var i=0; i col.max_width)\n\t\t\t\tshare = col.max_width - col.width;\n\n\t\t\tcolumns_width -= col.width;\n\t\t\tcol.width += share;\n\t\t\textra_width -= share;\n\n\t\t}\n\n\t\tvar iterator = extra_width > 0 ? 1 : -1;\n\t\twhile ((extra_width > 0 && iterator === 1) || (extra_width < 0 && iterator === -1)) {\n\t\t\tvar curExtra = extra_width;\n\t\t\tfor (i = start_index+1; i -1) {\n\t\t\tvar new_width = columns[start_index].width + extra_width;\n\t\t\tif (new_width == this._getColumnWidth(columns[start_index], config, new_width))\n\t\t\t\tcolumns[start_index].width = new_width;\n\t\t}\n\n\t\t//if (this.callEvent(\"onGridResizeEnd\", [config.grid_width, final_width]) === false)\n\t\t//\treturn;\n\n\t\treturn this._getColsTotalWidth();\n\t},\n\n\t_getColsTotalWidth: function(){\n\t\tvar columns = this.getGridColumns();\n\t\tvar cols_width = 0;\n\n\t\tfor (var i = 0; i < columns.length; i++) {\n\t\t\tvar v = parseFloat(columns[i].width);\n\t\t\tif (window.isNaN(v)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tcols_width += v;\n\t\t}\n\t\treturn cols_width;\n\t},\n\t_calculateGridWidth: function() {\n\t\tvar config = this.$getConfig();\n\t\tvar columns = this.getGridColumns();\n\t\tvar cols_width = 0;\n\t\tvar unknown = [];\n\t\tvar width = [];\n\n\t\tfor (var i = 0; i < columns.length; i++) {\n\t\t\tvar v = parseFloat(columns[i].width);\n\t\t\tif (window.isNaN(v)) {\n\t\t\t\tv = config.min_grid_column_width || 10;\n\t\t\t\tunknown.push(i);\n\t\t\t}\n\t\t\twidth[i] = v;\n\t\t\tcols_width += v;\n\t\t}\n\t\tvar gridWidth = this._getGridWidth() + 1;\n\t\tif (config.autofit || unknown.length) {\n\t\t\tvar diff = gridWidth - cols_width;\n\t\t\t// TODO: logic may be improved for proportional changing of width\n\t\t\tif (config.autofit) {\n\t\t\t\t// delta must be added for all columns\n\t\t\t\tfor (var i = 0; i < width.length; i++) {\n\t\t\t\t\tvar delta = Math.round(diff / (width.length-i));\n\t\t\t\t\twidth[i] += delta;\n\t\t\t\t\tvar new_width = this._getColumnWidth(columns[i], config, width[i]);\n\t\t\t\t\t\n\t\t\t\t\tif (new_width != width[i]) {\n\t\t\t\t\t\tdelta = new_width - width[i];\n\t\t\t\t\t\twidth[i] = new_width;\n\t\t\t\t\t}\n\t\t\t\t\tdiff -= delta;\n\t\t\t\t}\n\t\t\t} else if (unknown.length) {\n\t\t\t\t// there are several columns with undefined width\n\t\t\t\tfor (var i = 0; i < unknown.length; i++) {\n\t\t\t\t\tvar delta = Math.round(diff / (unknown.length-i)); // no float values, just integer\n\t\t\t\t\tvar index = unknown[i];\n\t\t\t\t\twidth[index] += delta;\n\t\t\t\t\tvar new_width = this._getColumnWidth(columns[index], config, width[index]);\n\t\t\t\t\tif (new_width != width[index]) {\n\t\t\t\t\t\tdelta = new_width - width[index];\n\t\t\t\t\t\twidth[index] = new_width;\n\t\t\t\t\t}\n\t\t\t\t\tdiff -= delta;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < width.length; i++) {\n\t\t\t\tcolumns[i].width = width[i];\n\t\t\t}\n\t\t} else {\n\t\t\tvar changed = (gridWidth != cols_width);\n\t\t\tthis.$config.width = cols_width - 1;\n\t\t\tconfig.grid_width = cols_width;\n\t\t\tif(changed){\n\t\t\t\tthis.$parent._setContentSize(this.$config.width, this.$config.height);\n//\t\t\t\tthis.$parent.$config.width = cols_width;\n\t\t\t}\n\t\t}\n\n\t},\n\n\t_renderGridHeader: function(){\n\t\tvar gantt = this.$gantt;\n\t\tvar config = this.$getConfig();\n\t\tvar locale = this.$gantt.locale;\n\t\tvar templates = this.$gantt.templates;\n\n\t\tvar columns = this.getGridColumns();\n\t\tif(config.rtl){\n\t\t\tcolumns = columns.reverse();\n\t\t}\n\t\tvar cells = [];\n\t\tvar width = 0,\n\t\t\tlabels = locale.labels;\n\n\t\tvar lineHeigth = config.scale_height - 1;\n\n\t\tfor (var i = 0; i < columns.length; i++) {\n\t\t\tvar last = i == columns.length - 1;\n\t\t\tvar col = columns[i];\n\n\t\t\t// ensure columns have non-empty names\n\t\t\tif (!col.name) {\n\t\t\t\tcol.name = gantt.uid() + \"\";\n\t\t\t}\n\n\t\t\tvar colWidth = col.width * 1;\n\n\t\t\tvar gridWidth = this._getGridWidth();\n\t\t\tif (last && gridWidth > width + colWidth)\n\t\t\t\tcol.width = colWidth = gridWidth - width;\n\t\t\twidth += colWidth;\n\t\t\tvar sort = (gantt._sort && col.name == gantt._sort.name) ? (\"
\") : \"\";\n\t\t\tvar cssClass = [\"gantt_grid_head_cell\",\n\t\t\t\t(\"gantt_grid_head_\" + col.name),\n\t\t\t\t(last ? \"gantt_last_cell\" : \"\"),\n\t\t\t\ttemplates.grid_header_class(col.name, col)].join(\" \");\n\n\t\t\tvar style = \"width:\" + (colWidth - (last ? 1 : 0)) + \"px;\";\n\t\t\tvar label = (col.label || labels[\"column_\" + col.name]);\n\t\t\tlabel = label || \"\";\n\n\t\t\tvar ariaAttrs = gantt._waiAria.gridScaleCellAttrString(col, label);\n\n\t\t\tvar cell = \"
\" + label + sort + \"
\";\n\t\t\tcells.push(cell);\n\t\t}\n\t\tthis.$grid_scale.style.height = (config.scale_height) + \"px\";\n\t\tthis.$grid_scale.style.lineHeight = lineHeigth + \"px\";\n\t\t//this.$grid_scale.style.width = \"inherit\";\n\t\tthis.$grid_scale.innerHTML = cells.join(\"\");\n\n\t\tif(this._renderHeaderResizers){\n\t\t\tthis._renderHeaderResizers();\n\t\t}\n\t},\n\n\t_getGridWidth: function(){\n\t\t// TODO: refactor/remove/comment some of _getGridWidth/this.$config.width/this.$state.width, it's not clear what they do\n\t\treturn this.$config.width;\n\t},\n\n\tdestructor: function(){\n\t\tthis._clearLayers(this.$gantt);\n\t\tthis._mouseDelegates.destructor();\n\t\tthis._mouseDelegates = null;\n\t\tthis.$grid = null;\n\t\tthis.$grid_scale = null;\n\t\tthis.$grid_data = null;\n\t\tthis.$gantt = null;\n\n\t\tif(this.$config.rowStore){\n\t\t\tthis.$config.rowStore.detachEvent(this._staticBgHandler);\n\t\t\tthis.$config.rowStore = null;\n\t\t}\n\n\t\tthis.callEvent(\"onDestroy\", []);\n\t\tthis.detachAllEvents();\n\t}\n};\n\nmodule.exports = Grid;\n","var utils = require(\"../../../utils/utils\");\n\nfunction ScaleHelper(gantt){\n\tvar dateHelper = gantt.date;\n\tvar services = gantt.$services;\n\n\treturn {\n\t\tgetSum: function (sizes, from, to) {\n\t\t\tif (to === undefined)\n\t\t\t\tto = sizes.length - 1;\n\t\t\tif (from === undefined)\n\t\t\t\tfrom = 0;\n\n\t\t\tvar summ = 0;\n\t\t\tfor (var i = from; i <= to; i++)\n\t\t\t\tsumm += sizes[i];\n\n\t\t\treturn summ;\n\t\t},\n\t\tsetSumWidth: function (sum_width, scale, from, to) {\n\t\t\tvar parts = scale.width;\n\n\t\t\tif (to === undefined)\n\t\t\t\tto = parts.length - 1;\n\t\t\tif (from === undefined)\n\t\t\t\tfrom = 0;\n\t\t\tvar length = to - from + 1;\n\n\t\t\tif (from > parts.length - 1 || length <= 0 || to > parts.length - 1)\n\t\t\t\treturn;\n\n\t\t\tvar oldWidth = this.getSum(parts, from, to);\n\n\t\t\tvar diff = sum_width - oldWidth;\n\n\t\t\tthis.adjustSize(diff, parts, from, to);\n\t\t\tthis.adjustSize(-diff, parts, to + 1);\n\n\t\t\tscale.full_width = this.getSum(parts);\n\t\t},\n\t\tsplitSize: function (width, count) {\n\t\t\tvar arr = [];\n\t\t\tfor (var i = 0; i < count; i++) arr[i] = 0;\n\n\t\t\tthis.adjustSize(width, arr);\n\t\t\treturn arr;\n\n\t\t},\n\t\tadjustSize: function (width, parts, from, to) {\n\t\t\tif (!from)\n\t\t\t\tfrom = 0;\n\t\t\tif (to === undefined)\n\t\t\t\tto = parts.length - 1;\n\n\t\t\tvar length = to - from + 1;\n\n\t\t\tvar full = this.getSum(parts, from, to);\n\n\t\t\tvar shared = 0;\n\n\t\t\tfor (var i = from; i <= to; i++) {\n\t\t\t\tvar share = Math.floor(width * (full ? (parts[i] / full) : (1 / length)));\n\n\t\t\t\tfull -= parts[i];\n\t\t\t\twidth -= share;\n\t\t\t\tlength--;\n\n\t\t\t\tparts[i] += share;\n\t\t\t\tshared += share;\n\t\t\t}\n\t\t\tparts[parts.length - 1] += width;\n\t\t\t//parts[parts.length - 1] += width - shared;\n\t\t},\n\t\tsortScales: function (scales) {\n\t\t\tfunction cellSize(unit, step) {\n\t\t\t\tvar d = new Date(1970, 0, 1);\n\t\t\t\treturn dateHelper.add(d, step, unit) - d;\n\t\t\t}\n\n\t\t\tscales.sort(function (a, b) {\n\t\t\t\tif (cellSize(a.unit, a.step) < cellSize(b.unit, b.step)) {\n\t\t\t\t\treturn 1;\n\t\t\t\t} else if (cellSize(a.unit, a.step) > cellSize(b.unit, b.step)) {\n\t\t\t\t\treturn -1;\n\t\t\t\t} else {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tfor (var i = 0; i < scales.length; i++) {\n\t\t\t\tscales[i].index = i;\n\t\t\t}\n\t\t},\n\t\tprimaryScale: function () {\n\n\t\t\tvar config = services.getService(\"templateLoader\");\n\t\t\tconfig.initTemplate(\"date_scale\", undefined, undefined, services.config(), services.templates());\n\n\t\t\treturn {\n\t\t\t\tunit: services.config().scale_unit,\n\t\t\t\tstep: services.config().step,\n\t\t\t\ttemplate: services.templates().date_scale,\n\t\t\t\tdate: services.config().date_scale,\n\t\t\t\tcss: services.templates().scale_cell_class\n\t\t\t};\n\t\t},\n\n\t\tprepareConfigs: function (scales, min_coll_width, container_width, scale_height, minDate, maxDate, rtl) {\n\t\t\tvar heights = this.splitSize(scale_height, scales.length);\n\t\t\tvar full_width = container_width;\n\n\t\t\tvar configs = [];\n\t\t\tfor (var i = scales.length - 1; i >= 0; i--) {\n\t\t\t\tvar main_scale = (i == scales.length - 1);\n\t\t\t\tvar cfg = this.initScaleConfig(scales[i], minDate, maxDate);\n\t\t\t\tif (main_scale) {\n\t\t\t\t\tthis.processIgnores(cfg);\n\t\t\t\t}\n\n\t\t\t\tthis.initColSizes(cfg, min_coll_width, full_width, heights[i]);\n\t\t\t\tthis.limitVisibleRange(cfg);\n\n\t\t\t\tif (main_scale) {\n\t\t\t\t\tfull_width = cfg.full_width;\n\t\t\t\t}\n\n\t\t\t\tconfigs.unshift(cfg);\n\t\t\t}\n\n\n\t\t\tfor (var i = 0; i < configs.length - 1; i++) {\n\t\t\t\tthis.alineScaleColumns(configs[configs.length - 1], configs[i]);\n\t\t\t}\n\t\t\tfor (var i = 0; i < configs.length; i++) {\n\n\t\t\t\tif(rtl){\n\t\t\t\t\tthis.reverseScale(configs[i]);\n\t\t\t\t}\n\t\t\t\tthis.setPosSettings(configs[i]);\n\t\t\t}\n\t\t\treturn configs;\n\n\t\t},\n\n\t\treverseScale: function(scale){\n\t\t\tscale.width = scale.width.reverse();\n\t\t\tscale.trace_x = scale.trace_x.reverse();\n\n\t\t\tvar indexes = scale.trace_indexes;\n\t\t\tscale.trace_indexes = {};\n\t\t\tscale.trace_index_transition = {};\n\t\t\tscale.rtl = true;\n\t\t\tfor(var i = 0; i < scale.trace_x.length; i++){\n\t\t\t\tscale.trace_indexes[scale.trace_x[i].valueOf()] = i;\n\t\t\t\tscale.trace_index_transition[indexes[scale.trace_x[i].valueOf()]] = i;\n\t\t\t}\n\t\t\treturn scale;\n\t\t},\n\n\t\tsetPosSettings: function (config) {\n\t\t\tfor (var i = 0, len = config.trace_x.length; i < len; i++) {\n\t\t\t\tconfig.left.push((config.width[i - 1] || 0) + (config.left[i - 1] || 0));\n\t\t\t}\n\t\t},\n\n\t\t_ignore_time_config: function (date, scale) {\n\n\t\t\tif (services.config().skip_off_time) {\n\t\t\t\tvar skip = true;\n\t\t\t\tvar probe = date;\n\n\t\t\t\t// check dates in case custom scale unit, e.g. {unit: \"month\", step: 3}\n\t\t\t\tfor (var i = 0; i < scale.step; i++) {\n\t\t\t\t\tif (i) {\n\t\t\t\t\t\tprobe = dateHelper.add(date, i, scale.unit);\n\t\t\t\t\t}\n\n\t\t\t\t\tskip = skip && !this.isWorkTime(probe, scale.unit);\n\t\t\t\t}\n\n\t\t\t\treturn skip;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\t//defined in an extension\n\t\tprocessIgnores: function (config) {\n\t\t\tconfig.ignore_x = {};\n\t\t\tconfig.display_count = config.count;\n\t\t},\n\t\tinitColSizes: function (config, min_col_width, full_width, line_height) {\n\t\t\tvar cont_width = full_width;\n\n\t\t\tconfig.height = line_height;\n\n\t\t\tvar column_count = config.display_count === undefined ? config.count : config.display_count;\n\n\t\t\tif (!column_count)\n\t\t\t\tcolumn_count = 1;\n\n\t\t\tconfig.col_width = Math.floor(cont_width / column_count);\n\n\t\t\tif (min_col_width) {\n\t\t\t\tif (config.col_width < min_col_width) {\n\t\t\t\t\tconfig.col_width = min_col_width;\n\t\t\t\t\tcont_width = config.col_width * column_count;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconfig.width = [];\n\t\t\tvar ignores = config.ignore_x || {};\n\t\t\tfor (var i = 0; i < config.trace_x.length; i++) {\n\t\t\t\tif (ignores[config.trace_x[i].valueOf()] || (config.display_count == config.count)) {\n\t\t\t\t\tconfig.width[i] = 0;\n\t\t\t\t} else {\n\t\t\t\t\t// width of month columns should be proportional month duration\n\t\t\t\t\tvar width = 1;\n\t\t\t\t\tif (config.unit == \"month\") {\n\t\t\t\t\t\tvar days = Math.round((dateHelper.add(config.trace_x[i], config.step, config.unit) - config.trace_x[i]) / (1000 * 60 * 60 * 24));\n\t\t\t\t\t\twidth = days;\n\t\t\t\t\t}\n\t\t\t\t\tconfig.width[i] = width;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.adjustSize(cont_width - this.getSum(config.width)/* 1 width per column from the code above */, config.width);\n\t\t\tconfig.full_width = this.getSum(config.width);\n\t\t},\n\t\tinitScaleConfig: function (config, min_date, max_date) {\n\t\t\tvar cfg = utils.mixin({\n\t\t\t\tcount: 0,\n\t\t\t\tcol_width: 0,\n\t\t\t\tfull_width: 0,\n\t\t\t\theight: 0,\n\t\t\t\twidth: [],\n\t\t\t\tleft: [],\n\t\t\t\ttrace_x: [],\n\t\t\t\ttrace_indexes: {},\n\t\t\t\tmin_date: new Date(min_date),\n\t\t\t\tmax_date: new Date(max_date)\n\t\t\t}, config);\n\n\t\t\tthis.eachColumn(config.unit, config.step, min_date, max_date, function (date) {\n\t\t\t\tcfg.count++;\n\t\t\t\tcfg.trace_x.push(new Date(date));\n\t\t\t\tcfg.trace_indexes[date.valueOf()] = cfg.trace_x.length - 1;\n\t\t\t});\n\n\t\t\tcfg.trace_x_ascending = cfg.trace_x.slice();\n\t\t\treturn cfg;\n\t\t},\n\t\titerateScales: function (lower_scale, upper_scale, from, to, callback) {\n\t\t\tvar upper_dates = upper_scale.trace_x;\n\t\t\tvar lower_dates = lower_scale.trace_x;\n\n\t\t\tvar prev = from || 0;\n\t\t\tvar end = to || (lower_dates.length - 1);\n\t\t\tvar prevUpper = 0;\n\n\n\t\t\tfor (var up = 1; up < upper_dates.length; up++) {\n\t\t\t\tvar target_index = (lower_scale.trace_indexes[+upper_dates[up]]);\n\t\t\t\tif (target_index !== undefined && target_index <= end) {\n\t\t\t\t\tif (callback) {\n\t\t\t\t\t\tcallback.apply(this, [prevUpper, up, prev, target_index]);\n\t\t\t\t\t}\n\t\t\t\t\tprev = target_index;\n\t\t\t\t\tprevUpper = up;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\talineScaleColumns: function (lower_scale, upper_scale, from, to) {\n\t\t\tthis.iterateScales(lower_scale, upper_scale, from, to, function (upper_start, upper_end, lower_start, lower_end) {\n\t\t\t\tvar targetWidth = this.getSum(lower_scale.width, lower_start, lower_end - 1);\n\t\t\t\tvar actualWidth = this.getSum(upper_scale.width, upper_start, upper_end - 1);\n\t\t\t\tif (actualWidth != targetWidth) {\n\t\t\t\t\tthis.setSumWidth(targetWidth, upper_scale, upper_start, upper_end - 1);\n\t\t\t\t}\n\n\t\t\t});\n\t\t},\n\n\t\teachColumn: function (unit, step, min_date, max_date, callback) {\n\t\t\tvar start = new Date(min_date),\n\t\t\t\tend = new Date(max_date);\n\t\t\tif (dateHelper[unit + \"_start\"]) {\n\t\t\t\tstart = dateHelper[unit + \"_start\"](start);\n\t\t\t}\n\n\t\t\tvar curr = new Date(start);\n\t\t\tif (+curr >= +end) {\n\t\t\t\tend = dateHelper.add(curr, step, unit);\n\t\t\t}\n\t\t\twhile (+curr < +end) {\n\t\t\t\tcallback.call(this, new Date(curr));\n\t\t\t\tvar tzOffset = curr.getTimezoneOffset();\n\t\t\t\tcurr = dateHelper.add(curr, step, unit);\n\t\t\t\tcurr = gantt._correct_dst_change(curr, tzOffset, step, unit);\n\t\t\t\tif (dateHelper[unit + '_start'])\n\t\t\t\t\tcurr = dateHelper[unit + \"_start\"](curr);\n\t\t\t}\n\t\t},\n\t\tlimitVisibleRange: function (cfg) {\n\t\t\tvar dates = cfg.trace_x;\n\n\t\t\tvar left = 0, right = cfg.width.length - 1;\n\t\t\tvar diff = 0;\n\t\t\tif (+dates[0] < +cfg.min_date && left != right) {\n\t\t\t\tvar width = Math.floor(cfg.width[0] * ((dates[1] - cfg.min_date) / (dates[1] - dates[0])));\n\t\t\t\tdiff += cfg.width[0] - width;\n\t\t\t\tcfg.width[0] = width;\n\n\t\t\t\tdates[0] = new Date(cfg.min_date);\n\t\t\t}\n\n\t\t\tvar last = dates.length - 1;\n\t\t\tvar lastDate = dates[last];\n\t\t\tvar outDate = dateHelper.add(lastDate, cfg.step, cfg.unit);\n\t\t\tif (+outDate > +cfg.max_date && last > 0) {\n\t\t\t\tvar width = cfg.width[last] - Math.floor(cfg.width[last] * ((outDate - cfg.max_date) / (outDate - lastDate)));\n\t\t\t\tdiff += cfg.width[last] - width;\n\t\t\t\tcfg.width[last] = width;\n\t\t\t}\n\n\t\t\tif (diff) {\n\t\t\t\tvar full = this.getSum(cfg.width);\n\t\t\t\tvar shared = 0;\n\t\t\t\tfor (var i = 0; i < cfg.width.length; i++) {\n\t\t\t\t\tvar share = Math.floor(diff * (cfg.width[i] / full));\n\t\t\t\t\tcfg.width[i] += share;\n\t\t\t\t\tshared += share;\n\t\t\t\t}\n\t\t\t\tthis.adjustSize(diff - shared, cfg.width);\n\t\t\t}\n\n\t\t}\n\t};\n}\n\nmodule.exports = ScaleHelper;\n","var ScaleHelper = require(\"./scales_ignore\");\nvar eventable = require(\"../../../utils/eventable\");\nvar utils = require(\"../../../utils/utils\");\n\nvar canvasRender = require(\"./tasks_canvas_render\");\n\nvar Timeline = function(parent, config, factory, gantt){\n\tthis.$config = utils.mixin({}, config || {});\n\tthis.$scaleHelper = new ScaleHelper(gantt);\n\tthis.$gantt = gantt;\n\teventable(this);\n};\n\nTimeline.prototype = {\n\tinit: function(container){\n\t\tcontainer.innerHTML += \"
\";\n\t\tthis.$task = container.childNodes[0];\n\n\t\tthis.$task.innerHTML = \"
\";\n\t\tthis.$task_scale = this.$task.childNodes[0];\n\n\t\tthis.$task_data = this.$task.childNodes[1];\n\t\tthis.$task_data.innerHTML = \"
\";\n\t\tthis.$task_bg = this.$task_data.childNodes[0];\n\t\tthis.$task_links = this.$task_data.childNodes[1];\n\t\tthis.$task_bars = this.$task_data.childNodes[2];\n\n\t\tthis._tasks = {\n\t\t\tcol_width: 0,\n\t\t\twidth: [], // width of each column\n\t\t\tfull_width: 0, // width of all columns\n\t\t\ttrace_x: [],\n\t\t\trendered: {}\n\t\t};\n\n\t\tvar config = this.$getConfig();\n\t\tvar attr = config[this.$config.bind + \"_attribute\"];\n\t\tvar linksAttr = config[this.$config.bindLinks + \"_attribute\"];\n\t\tif(!attr && this.$config.bind){\n\t\t\tattr = this.$config.bind + \"_id\";\n\t\t}\n\t\tif(!linksAttr && this.$config.bindLinks){\n\t\t\tlinksAttr = this.$config.bindLinks + \"_id\";\n\t\t}\n\t\tthis.$config.item_attribute = attr || null;\n\t\tthis.$config.link_attribute = linksAttr || null;\n\n\t\tvar layers = this._createLayerConfig();\n\t\tif(!this.$config.layers){\n\t\t\tthis.$config.layers = layers.tasks;\n\t\t}\n\t\tif(!this.$config.linkLayers){\n\t\t\tthis.$config.linkLayers = layers.links;\n\t\t}\n\n\t\tthis._attachLayers(this.$gantt);\n\t\tthis.callEvent(\"onReady\", []);\n\t\t//this.refresh();\n\t},\n\n\tsetSize: function(width, height){\n\t\tvar config = this.$getConfig();\n\n\t\tif(width*1 === width){\n\t\t\tthis.$config.width = width;\n\t\t}\n\t\tif(height*1 === height){\n\n\t\t\tthis.$config.height = height;\n\t\t\tvar dataHeight = Math.max(this.$config.height - config.scale_height);\n\t\t\tthis.$task_data.style.height = dataHeight + 'px';\n\t\t}\n\n\t\tthis.refresh();\n\t\tthis.$task_bg.style.backgroundImage = \"\";\n\n\t\tif(config.smart_rendering && this.$config.rowStore){\n\t\t\tvar store = this.$config.rowStore;\n\t\t\tthis.$task_bg.style.height = config.row_height * store.countVisible() +\"px\";\n\t\t}else{\n\t\t\tthis.$task_bg.style.height = \"\";\n\t\t}\n\n\t\tvar scale = this._tasks;\n\t\t//timeline area layers\n\t\tvar data_els = this.$task_data.childNodes;\n\t\tfor(var i= 0, len = data_els.length; i < len; i++){\n\t\t\tvar el = data_els[i];\n\t\t\tif(el.hasAttribute(\"data-layer\") && el.style)\n\t\t\t\tel.style.width = scale.full_width + \"px\";\n\t\t}\n\t},\n\n\tisVisible: function(){\n\t\tif(this.$parent && this.$parent.$config){\n\t\t\treturn !this.$parent.$config.hidden;\n\t\t}else{\n\t\t\treturn this.$task.offsetWidth;\n\t\t}\n\t},\n\n\tgetSize: function(){\n\t\tvar config = this.$getConfig();\n\t\tvar store = this.$config.rowStore;\n\n\t\tvar contentHeight = store ? config.row_height * store.countVisible() : 0,\n\t\t\tcontentWidth = this._tasks.full_width;\n\n\t\treturn {\n\t\t\tx: this.$config.width,\n\t\t\ty: this.$config.height,\n\t\t\tcontentX: this.isVisible() ? contentWidth : 0,\n\t\t\tcontentY: this.isVisible() ? (config.scale_height + contentHeight) : 0,\n\t\t\tscrollHeight: this.isVisible() ? contentHeight : 0,\n\t\t\tscrollWidth: this.isVisible() ? contentWidth : 0\n\t\t};\n\t},\n\n\tscrollTo: function(left, top){\n\t\tif(!this.isVisible())\n\t\t\treturn;\n\n\t\tif(top*1 === top){\n\t\t\tthis.$config.scrollTop = top;\n\t\t\tthis.$task_data.scrollTop = this.$config.scrollTop;\n\t\t}\n\t\tif (left*1 === left){\n\t\t\tthis.$task.scrollLeft = left;\n\t\t\tthis.$config.scrollLeft = this.$task.scrollLeft;\n\t\t\tthis._refreshScales();\n\t\t}\n\t},\n\n\t_refreshScales: function _refreshScales() {\n\t\tif(!this.isVisible())\n\t\t\treturn;\n\n\t\tvar config = this.$getConfig();\n\t\tif (!config.smart_scales) return;\n\n\t\tvar x = this.$config.scrollLeft;\n\t\tvar width = this.$config.width;\n\n\t\tvar scales = this._scales;\n\t\tthis.$task_scale.innerHTML = this._getScaleChunkHtml(scales, x, x + width);\n\t},\n\t_createLayerConfig: function(){\n\t\tvar self = this;\n\t\tvar taskFilter = function(){\n\t\t\treturn self.isVisible();\n\t\t};\n\n\t\tvar taskLayers = [\n\t\t\t{\n\t\t\t\texpose: true,\n\t\t\t\trenderer: this.$gantt.$ui.layers.taskBar,\n\t\t\t\tcontainer: this.$task_bars,\n\t\t\t\tfilter: [taskFilter]\n\t\t\t},\n\t\t\t{\n\t\t\t\trenderer: this.$gantt.$ui.layers.taskSplitBar,\n\t\t\t\tfilter: [taskFilter],\n\t\t\t\tcontainer: this.$task_bars,\n\t\t\t\tappend: true\n\t\t\t},\n\t\t\t{\n\t\t\t\trenderer: this.$gantt.$ui.layers.taskBg,\n\t\t\t\tcontainer: this.$task_bg,\n\t\t\t\tfilter: [\n\t\t\t\t\tfunction(){\n\t\t\t\t\t\treturn !self.$getConfig().static_background;\n\t\t\t\t\t},\n\t\t\t\t\ttaskFilter\n\t\t\t\t]\n\t\t\t}\n\t\t];\n\n\t\tvar linkLayers = [\n\t\t\t{\n\t\t\t\texpose: true,\n\t\t\t\trenderer: this.$gantt.$ui.layers.link,\n\t\t\t\tcontainer: this.$task_links,\n\t\t\t\tfilter: [taskFilter]\n\t\t\t}\n\t\t];\n\n\t\treturn {\n\t\t\ttasks: taskLayers,\n\t\t\tlinks: linkLayers\n\t\t};\n\n\t},\n\n\t_attachLayers: function(gantt){\n\t\tthis._taskLayers = [];\n\t\tthis._linkLayers = [];\n\n\t\tvar self = this;\n\n\t\tvar layers = this.$gantt.$services.getService(\"layers\");\n\n\t\tif(this.$config.bind){\n\n\t\t\tself.$config.rowStore = self.$gantt.getDatastore(self.$config.bind);\n\n\t\t\tvar taskRenderer = layers.getDataRender(this.$config.bind);\n\n\t\t\tif(!taskRenderer){\n\t\t\t\ttaskRenderer = layers.createDataRender({\n\t\t\t\t\tname: this.$config.bind,\n\t\t\t\t\tdefaultContainer: function(){ return self.$task_data;}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\ttaskRenderer.container = function(){ return self.$task_data;};\n\n\t\t\tvar taskLayers = this.$config.layers;\n\t\t\tfor(var i = 0; taskLayers && i < taskLayers.length; i++){\n\t\t\t\tvar layer = taskLayers[i];\n\n\t\t\t\tif(typeof layer == \"string\"){\n\t\t\t\t\tlayer = this.$gantt.$ui.layers[layer];\n\t\t\t\t}\n\n\t\t\t\tif(typeof layer == \"function\"){\n\t\t\t\t\tlayer = {renderer: layer};\n\t\t\t\t}\n\n\t\t\t\tlayer.host = this;\n\t\t\t\tvar bar_layer = taskRenderer.addLayer(layer);\n\t\t\t\tthis._taskLayers.push(bar_layer);\n\t\t\t\tif(layer.expose){\n\t\t\t\t\tthis._taskRenderer = taskRenderer.getLayer(bar_layer);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._initStaticBackgroundRender();\n\t\t}\n\n\t\tif(this.$config.bindLinks){\n\t\t\tself.$config.linkStore = self.$gantt.getDatastore(self.$config.bindLinks);\n\n\t\t\tvar linkRenderer = layers.getDataRender(this.$config.bindLinks);\n\n\t\t\tif(!linkRenderer){\n\t\t\t\tlinkRenderer = layers.createDataRender({\n\t\t\t\t\tname: this.$config.bindLinks,\n\t\t\t\t\tdefaultContainer: function(){ return self.$task_data;}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar linkLayers = this.$config.linkLayers;\n\t\t\tfor(var i = 0; linkLayers && i < linkLayers.length; i++){\n\n\t\t\t\tif(typeof layer == \"string\"){\n\t\t\t\t\tlayer = this.$gantt.$ui.layers[layer];\n\t\t\t\t}\n\n\t\t\t\tvar layer = linkLayers[i];\n\t\t\t\tlayer.host = this;\n\t\t\t\tvar linkLayer = linkRenderer.addLayer(layer);\n\t\t\t\tthis._taskLayers.push(linkLayer);\n\t\t\t\tif(linkLayers[i].expose){\n\t\t\t\t\tthis._linkRenderer = linkRenderer.getLayer(linkLayer);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_initStaticBackgroundRender: function(){\n\t\tvar self = this;\n\t\tvar staticRender = canvasRender.create();\n\t\tvar store = self.$config.rowStore;\n\t\tif(!store) return;\n\n\t\tthis._staticBgHandler = store.attachEvent(\"onStoreUpdated\", function(id, item, mode){\n\t\t\tif(id !== null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(!self.isVisible())\n\t\t\t\treturn;\n\t\t\tvar config = self.$getConfig();\n\t\t\tif(config.static_background) {\n\t\t\t\tvar store = self.$gantt.getDatastore(self.$config.bind);\n\t\t\t\tif (store) {\n\t\t\t\t\tstaticRender.render(self.$task_bg, config, self.getScale(), config.row_height * store.countVisible());\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis._initStaticBackgroundRender = function(){};//init once\n\t},\n\n\t_clearLayers: function(gantt){\n\t\tvar layers = this.$gantt.$services.getService(\"layers\");\n\t\tvar taskRenderer = layers.getDataRender(this.$config.bind);\n\t\tvar linkRenderer = layers.getDataRender(this.$config.bindLinks);\n\n\t\tfor(var i = 0; i < this._taskLayers.length; i++){\n\t\t\ttaskRenderer.removeLayer(this._taskLayers[i]);\n\t\t}\n\t\tfor(var i = 0; i < this._linkLayers.length; i++){\n\t\t\tlinkRenderer.removeLayer(this._linkLayers[i]);\n\t\t}\n\n\t\tthis._linkLayers = [];\n\t\tthis._taskLayers = [];\n\t},\n\n\t_render_tasks_scales: function _render_tasks_scales() {\n\t\tvar config = this.$getConfig();\n\n\t\tvar scales_html = \"\",\n\t\t\touter_width = 0,\n\t\t\tscale_height = 0;\n\n\t\tvar state = this.$gantt.getState();\n\n\t\tif (this.isVisible()) {\n\t\t\tvar helpers = this.$scaleHelper;\n\t\t\tvar scales = this._getScales();\n\t\t\tscale_height = config.scale_height;\n\n\t\t\tvar availWidth = this.$config.width;\n\t\t\tif(config.autosize == \"x\" || config.autosize == \"xy\"){\n\t\t\t\tavailWidth = Math.max(config.autosize_min_width, 0);\n\t\t\t}\n\n\t\t\tvar cfgs = helpers.prepareConfigs(scales, config.min_column_width, availWidth, scale_height - 1, state.min_date, state.max_date, config.rtl);\n\t\t\tvar cfg = this._tasks = cfgs[cfgs.length - 1];\n\t\t\tthis._scales = cfgs;\n\n\t\t\tscales_html = this._getScaleChunkHtml(cfgs, 0, this.$config.width);\n\n\t\t\touter_width = cfg.full_width + \"px\";//cfg.full_width + (this._scroll_sizes().y ? scrollSizes.scroll_size : 0) + \"px\";\n\t\t\tscale_height += \"px\";\n\t\t}\n\n\t\tthis.$task_scale.style.height = scale_height;\n\n\t\tthis.$task_data.style.width =\n\t\t\tthis.$task_scale.style.width = outer_width;\n\n\t\tthis.$task_scale.innerHTML = scales_html;\n\n\t},\n\n\t_getScaleChunkHtml: function _get_scale_chunk_html (scales, fromPos, toPos) {\n\t\tvar templates = this.$gantt.$services.templates();\n\t\tvar html = [];\n\n\t\tvar css = templates.scale_row_class;\n\t\tfor (var i = 0; i < scales.length; i++) {\n\t\t\tvar cssClass = \"gantt_scale_line\";\n\t\t\tvar tplClass = css(scales[i]);\n\t\t\tif (tplClass) {\n\t\t\t\tcssClass += \" \" + tplClass;\n\t\t\t}\n\n\t\t\thtml.push(\"
\" + this._prepareScaleHtml(scales[i], fromPos, toPos) + \"
\");\n\t\t}\n\n\t\treturn html.join(\"\");\n\t},\n\t_prepareScaleHtml: function _prepare_scale_html(config, fromPos, toPos) {\n\t\tvar globalConfig = this.$getConfig();\n\t\tvar globalTemplates = this.$gantt.$services.templates();\n\n\t\tvar cells = [];\n\t\tvar date = null, content = null, css = null;\n\n\t\tif (config.template || config.date) {\n\t\t\tcontent = config.template || this.$gantt.date.date_to_str(config.date);\n\t\t}\n\n\t\tvar startIndex = 0,\n\t\t\tendIndex = config.count;\n\n\t\tif (globalConfig.smart_scales && (!isNaN(fromPos) && !isNaN(toPos))) {\n\t\t\tstartIndex = _findBinary(config.left, fromPos);\n\t\t\tendIndex = _findBinary(config.left, toPos) + 1;\n\t\t}\n\n\t\tcss = config.css || function () {\n\t\t\t};\n\t\tif (!config.css && globalConfig.inherit_scale_class) {\n\t\t\tcss = globalTemplates.scale_cell_class;\n\t\t}\n\n\t\tfor (var i = startIndex; i < endIndex; i++) {\n\t\t\tif (!config.trace_x[i]) break;\n\n\t\t\tdate = new Date(config.trace_x[i]);\n\t\t\tvar value = content.call(this, date),\n\t\t\t\twidth = config.width[i],\n\t\t\t\theight = config.height,\n\t\t\t\tleft = config.left[i],\n\t\t\t\tstyle = \"\",\n\t\t\t\ttemplate = \"\",\n\t\t\t\tcssclass = \"\";\n\n\t\t\tif (width) {\n\t\t\t\tvar position = globalConfig.smart_scales ? (\"position:absolute;left:\" + left + \"px\") : \"\";\n\n\t\t\t\tstyle = \"width:\" + (width) + \"px;height:\" + height + \"px;\" + position;\n\t\t\t\tcssclass = \"gantt_scale_cell\" + (i == config.count - 1 ? \" gantt_last_cell\" : \"\");\n\n\t\t\t\ttemplate = css.call(this, date);\n\t\t\t\tif (template) cssclass += \" \" + template;\n\n\t\t\t\tvar ariaAttr = this.$gantt._waiAria.getTimelineCellAttr(value);\n\t\t\t\tvar cell = \"
\" + value + \"
\";\n\t\t\t\tcells.push(cell);\n\t\t\t} else {\n\t\t\t\t//do not render ignored cells\n\t\t\t}\n\n\t\t}\n\t\treturn cells.join(\"\");\n\t},\n\tdateFromPos: function dateFromPos(x) {\n\t\tvar scale = this._tasks;\n\t\tif (x < 0 || x > scale.full_width || !scale.full_width) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar ind = _findBinary(this._tasks.left, x);\n\t\tvar summ = this._tasks.left[ind];\n\n\t\tvar col_width = scale.width[ind] || scale.col_width;\n\t\tvar part = 0;\n\t\tif (col_width) {\n\t\t\tpart = (x - summ) / col_width;\n\t\t\tif(scale.rtl){\n\t\t\t\tpart = 1 - part;\n\t\t\t}\n\n\t\t}\n\n\t\tvar unit = 0;\n\t\tif (part) {\n\t\t\tunit = this._getColumnDuration(scale, scale.trace_x[ind]);\n\t\t}\n\n\t\tvar date = new Date(scale.trace_x[ind].valueOf() + Math.round(part * unit));\n\t\treturn date;\n\t},\n\tposFromDate: function posFromDate(date) {\n\t\tif (!this.isVisible())\n\t\t\treturn 0;\n\n\t\tvar ind = this.columnIndexByDate(date);\n\t\tthis.$gantt.assert(ind >= 0, \"Invalid day index\");\n\n\t\tvar wholeCells = Math.floor(ind);\n\t\tvar partCell = ind % 1;\n\n\t\tvar pos = this._tasks.left[Math.min(wholeCells, this._tasks.width.length - 1)];\n\t\tif (wholeCells == this._tasks.width.length)\n\t\t\tpos += this._tasks.width[this._tasks.width.length - 1];\n\t\t//for(var i=1; i <= wholeCells; i++)\n\t\t//\tpos += gantt._tasks.width[i-1];\n\n\t\tif (partCell) {\n\t\t\tif (wholeCells < this._tasks.width.length) {\n\t\t\t\tpos += this._tasks.width[wholeCells] * (partCell % 1);\n\t\t\t} else {\n\t\t\t\tpos += 1;\n\t\t\t}\n\n\t\t}\n\t\treturn Math.round(pos);\n\t},\n\tcolumnIndexByDate: function columnIndexByDate(date) {\n\t\tvar pos = new Date(date).valueOf();\n\t\tvar days = this._tasks.trace_x_ascending,\n\t\t\tignores = this._tasks.ignore_x;\n\n\t\tvar state = this.$gantt.getState();\n\n\t\tif (pos <= state.min_date) {\n\t\t\tif(this._tasks.rtl){\n\t\t\t\treturn days.length;\n\t\t\t}else{\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t}\n\n\t\tif (pos >= state.max_date) {\n\t\t\tif(this._tasks.rtl){\n\t\t\t\treturn 0;\n\t\t\t}else{\n\t\t\t\treturn days.length;\n\t\t\t}\n\t\t}\n\n\t\t/*var day = null;\n\t\t for (var xind = 0, length = days.length-1; xind < length; xind++) {\n\t\t // | 8:00, 8:30 | 8:15 should be checked against 8:30\n\t\t // clicking at the most left part of the cell, say 8:30 should create event in that cell, not previous one\n\t\t day = +days[xind+1];\n\t\t if (pos < day && !ignores[day])\n\t\t break;\n\t\t }*/\n\n\t\tvar day_ind = _findBinary(days, pos);\n\t\tvar day = +days[day_ind];\n\t\twhile (ignores[day]) {\n\t\t\tday = +days[++day_ind];\n\t\t}\n\n\t\tvar transition = this._tasks.trace_index_transition;\n\t\tvar index = day_ind;\n\t\tif(!day){\n\t\t\tif(transition){\n\t\t\t\treturn transition[0];\n\t\t\t}else{\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\n\t\tvar part = ((date - days[day_ind]) / this._getColumnDuration(this._tasks, days[day_ind]));\n\t\tif(transition){\n\t\t\treturn transition[index] + (1 - part);\n\t\t}else{\n\t\t\treturn index + part;\n\t\t}\n\n\t\t//return day_ind + ((date - days[day_ind]) / this._getColumnDuration(this._tasks, days[day_ind]));\n\t},\n\tgetItemPosition:function (task, start_date, end_date) {\n\t\tvar xLeft, xRight, width;\n\t\tif(this._tasks.rtl){\n\t\t\txRight = this.posFromDate(start_date || task.start_date);\n\t\t\txLeft = this.posFromDate(end_date || task.end_date);\n\t\t}else{\n\t\t\txLeft = this.posFromDate(start_date || task.start_date);\n\t\t\txRight = this.posFromDate(end_date || task.end_date);\n\t\t}\n\t\twidth = Math.max((xRight - xLeft), 0);\n\n\t\tvar y = this.getItemTop(task.id);\n\t\tvar height = this.getItemHeight();\n\t\treturn {\n\t\t\tleft: xLeft,\n\t\t\ttop: y,\n\t\t\theight: height,\n\t\t\twidth: width\n\t\t};\n\t},\n\n\tgetItemHeight: function(){\n\t\tvar config = this.$getConfig();\n\n\t\t// height of the bar item\n\t\tvar height = config.task_height;\n\n\t\tif (height == \"full\") {\n\t\t\tvar offset = config.task_height_offset || 5;\n\t\t\theight = config.row_height - offset;\n\t\t}\n\t\t//item height cannot be bigger than row height\n\t\theight = Math.min(height, config.row_height);\n\t\treturn Math.max(height, 0);\n\t},\n\n\tgetRowTop: function(index){\n\t\treturn index * this.$getConfig().row_height;\n\t},\n\n\tgetItemTop: function (task_id) {\n\t\tif(this.$config.rowStore){\n\t\t\tvar store = this.$config.rowStore;\n\t\t\tif(!store) return 0;\n\n\t\t\tif(store.getParent && store.exists(task_id) && store.exists(store.getParent(task_id))){\n\t\t\t\tvar parent = store.getItem(store.getParent(task_id));\n\t\t\t\tif(this.$gantt.isSplitTask(parent)){\n\t\t\t\t\treturn store.getIndexById(parent.id) * this.$getConfig().row_height;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn store.getIndexById(task_id) * this.$getConfig().row_height;\n\n\t\t}else{\n\t\t\treturn 0;\n\t\t}\n\n\t},\n\n\tgetScale: function(){\n\t\treturn this._tasks;\n\t},\n\n\t_getScales: function _get_scales() {\n\t\tvar config = this.$getConfig();\n\t\tvar helpers = this.$scaleHelper;\n\t\tvar scales = [helpers.primaryScale()].concat(config.subscales);\n\n\t\thelpers.sortScales(scales);\n\t\treturn scales;\n\t},\n\n\t_getColumnDuration: function _get_coll_duration(scale, date) {\n\t\treturn this.$gantt.date.add(date, scale.step, scale.unit) - date;\n\t},\n\n\trefresh: function(){\n\t\tif(this.$config.bind) {\n\t\t\tthis.$config.rowStore = this.$gantt.getDatastore(this.$config.bind);\n\t\t}\n\n\t\tif(this.$config.bindLinks) {\n\t\t\tthis.$config.linkStore = this.$gantt.getDatastore(this.$config.bindLinks);\n\t\t}\n\n\t\tthis._initStaticBackgroundRender();\n\t\tthis._render_tasks_scales();\n\t},\n\n\tdestructor: function(){\n\t\tvar gantt = this.$gantt;\n\t\tthis._clearLayers(gantt);\n\n\t\tthis.$task = null;\n\t\tthis.$task_scale = null;\n\t\tthis.$task_data = null;\n\t\tthis.$task_bg = null;\n\t\tthis.$task_links = null;\n\t\tthis.$task_bars = null;\n\n\t\tthis.$gantt = null;\n\n\t\tif(this.$config.rowStore){\n\t\t\tthis.$config.rowStore.detachEvent(this._staticBgHandler);\n\t\t\tthis.$config.rowStore = null;\n\t\t}\n\t\tif(this.$config.linkStore){\n\t\t\tthis.$config.linkStore = null;\n\t\t}\n\n\t\tthis.callEvent(\"onDestroy\", []);\n\t\tthis.detachAllEvents();\n\n\t}\n};\n\nmodule.exports = Timeline;\n\nfunction _findBinary(array, target) {\n\t// modified binary search, target value not exactly match array elements, looking for closest one\n\n\tvar low = 0, high = array.length - 1, i, item, prev;\n\twhile (low <= high) {\n\n\t\ti = Math.floor((low + high) / 2);\n\t\titem = +array[i];\n\t\tprev = +array[i - 1];\n\t\tif (item < target) {\n\t\t\tlow = i + 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (item > target) {\n\t\t\tif (!(!isNaN(prev) && prev < target)) {\n\t\t\t\thigh = i - 1;\n\t\t\t\tcontinue;\n\t\t\t} else {\n\t\t\t\t// if target is between 'i' and 'i-1' return 'i - 1'\n\t\t\t\treturn i - 1;\n\t\t\t}\n\n\t\t}\n\t\twhile (+array[i] == +array[i + 1]) i++;\n\n\t\treturn i;\n\t}\n\treturn array.length - 1;\n}\n\n","var __extends = require(\"../../../utils/extends\"),\n\tdomHelpers = require(\"../../../utils/dom_helpers\"),\n\tutils = require(\"../../../utils/utils\"),\n\tCell = require(\"./cell\");\n\nvar Layout = (function (_super) {\n\t\"use strict\";\n\n\t__extends(Layout, _super);\n\tfunction Layout(parent, config, factory) {\n\t\tvar _this = _super.apply(this, arguments) || this;\n\n\t\tif(parent)\n\t\t\t_this.$root = true;\n\n\t\t_this._parseConfig(config);\n\t\t_this.$name = \"layout\";\n\t\treturn _this;\n\t}\n\n\tLayout.prototype.destructor = function () {\n\t\tif (this.$container && this.$view) {\n\t\t\tdomHelpers.removeNode(this.$view);\n\t\t}\n\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\n\t\t\tvar child = this.$cells[i];\n\t\t\tchild.destructor();\n\t\t}\n\t\tthis.$cells = [];\n\n\t\t_super.prototype.destructor.call(this);\n\t};\n\n\tLayout.prototype._resizeScrollbars = function(autosize, scrollbars){\n\t\tvar scrollChanged = false;\n\t\tvar visibleScrollbars = [],\n\t\t\thiddenSrollbars = [];\n\n\t\tfunction showScrollbar(scrollbar){\n\t\t\tscrollbar.$parent.show();\n\t\t\tscrollChanged = true;\n\t\t\tvisibleScrollbars.push(scrollbar);\n\t\t}\n\t\tfunction hideScrollbar(scrollbar){\n\t\t\tscrollbar.$parent.hide();\n\t\t\tscrollChanged = true;\n\t\t\thiddenSrollbars.push(scrollbar);\n\t\t}\n\n\t\tvar scrollbar;\n\t\tfor(var i = 0; i < scrollbars.length; i++){\n\t\t\tscrollbar = scrollbars[i];\n\n\t\t\tif(autosize[scrollbar.$config.scroll]) {\n\t\t\t\thideScrollbar(scrollbar);\n\t\t\t}else if(scrollbar.shouldHide()){\n\t\t\t\thideScrollbar(scrollbar);\n\t\t\t}else if(scrollbar.shouldShow()){\n\t\t\t\tshowScrollbar(scrollbar);\n\t\t\t}else{\n\t\t\t\tif(scrollbar.isVisible()){\n\t\t\t\t\tvisibleScrollbars.push(scrollbar);\n\t\t\t\t}else{\n\t\t\t\t\thiddenSrollbars.push(scrollbar);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar visibleGroups = {};\n\t\tfor(var i = 0; i < visibleScrollbars.length; i++){\n\t\t\tif(visibleScrollbars[i].$config.group){\n\t\t\t\tvisibleGroups[visibleScrollbars[i].$config.group] = true;\n\t\t\t}\n\t\t}\n\n\t\tfor(var i = 0; i < hiddenSrollbars.length; i++){\n\t\t\tscrollbar = hiddenSrollbars[i];\n\n\t\t\tif(scrollbar.$config.group && visibleGroups[scrollbar.$config.group]){\n\t\t\t\tshowScrollbar(scrollbar);\n\t\t\t}\n\t\t}\n\n\t\treturn scrollChanged;\n\t};\n\n\tLayout.prototype._syncCellSizes = function(groupName, newSize){\n\t\tif(!groupName)\n\t\t\treturn;\n\n\t\tvar groups = {};\n\n\t\tthis._eachChild(function(cell){\n\t\t\tif(cell.$config.group && cell.$name != \"scrollbar\" && cell.$name != \"resizer\"){\n\t\t\t\tif(!groups[cell.$config.group]){\n\t\t\t\t\tgroups[cell.$config.group] = [];\n\t\t\t\t}\n\t\t\t\tgroups[cell.$config.group].push(cell);\n\t\t\t}\n\t\t});\n\n\t\tif(groups[groupName]){\n\t\t\tthis._syncGroupSize(groups[groupName], newSize);\n\t\t}\n\t\treturn groups[groupName];\n\t};\n\n\tLayout.prototype._syncGroupSize = function(cells, newSize){\n\t\tif(!cells.length) return;\n\n\t\tvar property = cells[0].$parent._xLayout ? \"width\" : \"height\";\n\t\tvar direction = cells[0].$parent.getNextSibling(cells[0].$id) ? 1 : -1;\n\n\t\tfor(var i = 0; i < cells.length; i++){\n\t\t\tvar ownSize = cells[i].getSize();\n\n\t\t\tvar resizeSibling = direction > 0 ? cells[i].$parent.getNextSibling(cells[i].$id) : cells[i].$parent.getPrevSibling(cells[i].$id);\n\t\t\tif(resizeSibling.$name == \"resizer\"){\n\t\t\t\tresizeSibling = direction > 0 ? resizeSibling.$parent.getNextSibling(resizeSibling.$id) : resizeSibling.$parent.getPrevSibling(resizeSibling.$id);\n\t\t\t}\n\t\t\tvar siblingSize = resizeSibling.getSize();\n\n\t\t\tif(resizeSibling[property]){\n\t\t\t\tvar totalGravity = ownSize.gravity + siblingSize.gravity;\n\t\t\t\tvar totalSize = ownSize[property] + siblingSize[property];\n\t\t\t\tvar k = totalGravity / totalSize;\n\t\t\t\tcells[i].$config.gravity = k * newSize;\n\n\t\t\t\tresizeSibling.$config[property] = totalSize - newSize;\n\t\t\t\tresizeSibling.$config.gravity = totalGravity - k * newSize;\n\t\t\t}else{\n\n\n\t\t\t\tcells[i].$config[property] = newSize;\n\t\t\t}\n\n\t\t\tvar mainGrid = this.$gantt.$ui.getView(\"grid\");\n\t\t\tif(mainGrid && cells[i].$content === mainGrid && !mainGrid.$config.scrollable){\n\t\t\t\tthis.$gantt.config.grid_width = newSize;\n\t\t\t}\n\t\t}\n\t};\n\n\tLayout.prototype.resize = function(startStage){\n\t\tvar mainCall = false;\n\t\tif(this.$root && !this._resizeInProgress){\n\t\t\tthis.callEvent(\"onBeforeResize\", []);\n\t\t\tmainCall = true;\n\t\t\tthis._resizeInProgress = true;\n\t\t}\n\n\t\t_super.prototype.resize.call(this, true);\n\t\t_super.prototype.resize.call(this, false);\n\n\t\tif(mainCall){\n\n\t\t\tvar contentViews = [];\n\t\t\tcontentViews = contentViews.concat(this.getCellsByType(\"viewCell\"));\n\t\t\tcontentViews = contentViews.concat(this.getCellsByType(\"viewLayout\"));\n\t\t\tcontentViews = contentViews.concat(this.getCellsByType(\"hostCell\"));\n\n\t\t\tvar scrollbars = this.getCellsByType(\"scroller\");\n\n\t\t\tfor(var i = 0; i < contentViews.length; i++){\n\t\t\t\tif(!contentViews[i].$config.hidden)\n\t\t\t\t\tcontentViews[i].setContentSize();\n\t\t\t}\n\n\t\t\tvar autosize = this._getAutosizeMode(this.$config.autosize);\n\n\t\t\tvar scrollChanged = this._resizeScrollbars(autosize, scrollbars);\n\n\t\t\tif(this.$config.autosize){\n\t\t\t\tthis.autosize(this.$config.autosize);\n\t\t\t\tscrollChanged = true;\n\t\t\t}\n\n\t\t\tif(scrollChanged){\n\t\t\t\tthis.resize();\n\t\t\t\tfor(var i = 0; i < contentViews.length; i++){\n\t\t\t\t\tif(!contentViews[i].$config.hidden)\n\t\t\t\t\t\tcontentViews[i].setContentSize();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.callEvent(\"onResize\", []);\n\t\t}\n\t\tif(mainCall){\n\t\t\tthis._resizeInProgress = false;\n\t\t}\n\t};\n\n\tLayout.prototype._eachChild = function(code, cell){\n\t\tcell = cell || this;\n\t\tcode(cell);\n\t\tif(cell.$cells){\n\t\t\tfor(var i = 0; i < cell.$cells.length; i++){\n\t\t\t\tthis._eachChild(code, cell.$cells[i]);\n\t\t\t}\n\t\t}\n\t};\n\n\tLayout.prototype.isChild = function(view){\n\t\tvar res = false;\n\t\tthis._eachChild(function(child){\n\t\t\tif(child === view || child.$content === view){\n\t\t\t\tres = true;\n\t\t\t}\n\t\t});\n\t\treturn res;\n\t};\n\n\tLayout.prototype.getCellsByType = function(type){\n\t\tvar res = [];\n\t\tif(type === this.$name){\n\t\t\tres.push(this);\n\t\t}\n\n\t\tif(this.$content && this.$content.$name == type){\n\t\t\tres.push(this.$content);\n\t\t}\n\n\t\tif(this.$cells){\n\t\t\tfor(var i = 0; i < this.$cells.length; i++){\n\t\t\t\tvar children = Layout.prototype.getCellsByType.call(this.$cells[i], type);\n\t\t\t\tif(children.length){\n\t\t\t\t\tres.push.apply(res, children);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn res;\n\t};\n\n\tLayout.prototype.getNextSibling = function(cellId){\n\t\tvar index = this.cellIndex(cellId);\n\t\tif(index >= 0 && this.$cells[index + 1]){\n\t\t\treturn this.$cells[index + 1];\n\t\t}else{\n\t\t\treturn null;\n\t\t}\n\t};\n\n\tLayout.prototype.getPrevSibling = function(cellId){\n\t\tvar index = this.cellIndex(cellId);\n\t\tif(index >= 0 && this.$cells[index - 1]){\n\t\t\treturn this.$cells[index - 1];\n\t\t}else{\n\t\t\treturn null;\n\t\t}\n\t};\n\n\n\tLayout.prototype.cell = function (id) {\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\n\t\t\tvar child = this.$cells[i];\n\t\t\tif (child.$id === id) {\n\t\t\t\treturn child;\n\t\t\t}\n\t\t\tvar sub = child.cell(id);\n\t\t\tif (sub) {\n\t\t\t\treturn sub;\n\t\t\t}\n\t\t}\n\t};\n\tLayout.prototype.cellIndex = function (id) {\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\n\t\t\tif (this.$cells[i].$id === id) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t};\n\tLayout.prototype.moveView = function (view, ind) {\n\t\tif (this.$cells[ind] !== view) {\n\t\t\treturn window.alert(\"Not implemented\");\n\t\t}\n\t\telse {\n\t\t\tind += this.$config.header ? 1 : 0;\n\t\t\tvar node = this.$view;\n\t\t\tif (ind >= node.childNodes.length) {\n\t\t\t\tnode.appendChild(view.$view);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tnode.insertBefore(view.$view, node.childNodes[ind]);\n\t\t\t}\n\t\t}\n\t};\n\tLayout.prototype._parseConfig = function (config) {\n\t\tthis.$cells = [];\n\t\tthis._xLayout = !config.rows;\n\t\tvar cells = config.rows || config.cols || config.views;\n\t\tfor (var i = 0; i < cells.length; i++) {\n\t\t\tvar cell = cells[i];\n\t\t\tcell.mode = this._xLayout ? \"x\" : \"y\";\n\t\t\tvar $content = this.$factory.initUI(cell, this);\n\t\t\tif(!$content){\n\t\t\t\tcells.splice(i, 1);\n\t\t\t\ti--;\n\t\t\t}else{\n\t\t\t\t$content.$parent = this;\n\t\t\t\tthis.$cells.push($content);\n\t\t\t}\n\t\t}\n\t};\n\tLayout.prototype.getCells = function () {\n\t\treturn this.$cells;\n\t};\n\tLayout.prototype.render = function () {\n\t\tvar view = domHelpers.insertNode(this.$container, this.$toHTML());\n\t\tthis.$fill(view, null);\n\t\tthis.callEvent(\"onReady\", []);\n\t\tthis.resize();\n\n\t\t// do simple repaint after the first call\n\t\tthis.render = this.resize;\n\t};\n\tLayout.prototype.$fill = function (node, parent) {\n\t\tthis.$view = node;\n\t\tthis.$parent = parent;\n\t\tvar cells = domHelpers.getChildNodes(node, \"gantt_layout_cell\");\n\t\tfor (var i = cells.length - 1; i >= 0; i--) {\n\t\t\tvar sub = this.$cells[i];\n\t\t\tsub.$fill(cells[i], this);\n\t\t\t// initially hidden cell\n\t\t\tif (sub.$config.hidden) {\n\t\t\t\tsub.$view.parentNode.removeChild(sub.$view);\n\t\t\t}\n\t\t}\n\t};\n\tLayout.prototype.$toHTML = function () {\n\t\tvar mode = this._xLayout ? \"x\" : \"y\";\n\t\tvar html = [];\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\n\t\t\thtml.push(this.$cells[i].$toHTML());\n\t\t}\n\t\treturn _super.prototype.$toHTML.call(this, html.join(\"\"), (this.$root ? \"gantt_layout_root \" : \"\") + \"gantt_layout gantt_layout_\" + mode);\n\t};\n\n\tLayout.prototype.getContentSize = function(mode){\n\t\tvar contentWidth = 0,\n\t\t\tcontentHeight = 0;\n\n\t\tvar cellSize, cell, borders;\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\n\t\t\tcell = this.$cells[i];\n\t\t\tif(cell.$config.hidden)\n\t\t\t\tcontinue;\n\n\t\t\tcellSize = cell.getContentSize(mode);\n\n\t\t\tif(cell.$config.view === \"scrollbar\" && mode[cell.$config.scroll]){\n\t\t\t\tcellSize.height = 0;\n\t\t\t\tcellSize.width = 0;\n\t\t\t}\n\n\t\t\tif(cell.$config.resizer){\n\t\t\t\tif(this._xLayout){\n\t\t\t\t\tcellSize.height = 0;\n\t\t\t\t}else{\n\t\t\t\t\tcellSize.width = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tborders = cell._getBorderSizes();\n\n\t\t\tif(this._xLayout){\n\t\t\t\tcontentWidth += (cellSize.width + borders.horizontal);\n\t\t\t\tcontentHeight = Math.max(contentHeight, (cellSize.height + borders.vertical));\n\t\t\t}else{\n\t\t\t\tcontentWidth = Math.max(contentWidth, cellSize.width + borders.horizontal);\n\t\t\t\tcontentHeight += cellSize.height + borders.vertical;\n\t\t\t}\n\t\t}\n\n\t\tborders = this._getBorderSizes();\n\t\tcontentWidth += borders.horizontal;\n\t\tcontentHeight += borders.vertical;\n\n\t\tif(this.$root){\n\t\t\tcontentWidth += 1;\n\t\t\tcontentHeight += 1;\n\t\t}\n\n\t\treturn {\n\t\t\twidth: contentWidth,\n\t\t\theight: contentHeight\n\t\t};\n\t};\n\n\tLayout.prototype._cleanElSize = function(value){\n\t\treturn ((value || \"\").toString().replace(\"px\", \"\") * 1 || 0);\n\t};\n\tLayout.prototype._getBoxStyles = function(div){\n\t\tvar computed = null;\n\t\tif(window.getComputedStyle){\n\t\t\tcomputed = window.getComputedStyle(div, null);\n\t\t}else{\n\t\t\t//IE with elem.currentStyle does not calculate sizes from %, so will use the default approach\n\t\t\tcomputed = {\n\t\t\t\t\"width\":div.clientWidth,\n\t\t\t\t\"height\":div.clientHeight\n\t\t\t};\n\t\t}\n\t\tvar properties = [\n\t\t\t\"width\",\n\t\t\t\"height\",\n\n\t\t\t\"paddingTop\",\n\t\t\t\"paddingBottom\",\n\t\t\t\"paddingLeft\",\n\t\t\t\"paddingRight\",\n\n\t\t\t\"borderLeftWidth\",\n\t\t\t\"borderRightWidth\",\n\t\t\t\"borderTopWidth\",\n\t\t\t\"borderBottomWidth\"\n\t\t];\n\t\tvar styles = {\n\t\t\tboxSizing:(computed.boxSizing == \"border-box\")\n\t\t};\n\n\t\tif(computed.MozBoxSizing){\n\t\t\tstyles.boxSizing = (computed.MozBoxSizing == \"border-box\");\n\t\t}\n\t\tfor(var i =0; i < properties.length; i++){\n\t\t\tstyles[properties[i]] = computed[properties[i]] ? this._cleanElSize(computed[properties[i]]) : 0;\n\t\t}\n\n\n\t\tvar box = {\n\t\t\thorPaddings : (styles.paddingLeft + styles.paddingRight + styles.borderLeftWidth + styles.borderRightWidth),\n\t\t\tvertPaddings : (styles.paddingTop + styles.paddingBottom + styles.borderTopWidth + styles.borderBottomWidth),\n\t\t\tborderBox: styles.boxSizing,\n\t\t\tinnerWidth : styles.width,\n\t\t\tinnerHeight : styles.height,\n\t\t\touterWidth : styles.width,\n\t\t\touterHeight : styles.height\n\t\t};\n\n\n\t\tif(box.borderBox){\n\t\t\tbox.innerWidth -= box.horPaddings;\n\t\t\tbox.innerHeight -= box.vertPaddings;\n\t\t}else{\n\t\t\tbox.outerWidth += box.horPaddings;\n\t\t\tbox.outerHeight += box.vertPaddings;\n\t\t}\n\n\t\treturn box;\n\t};\n\n\tLayout.prototype._getAutosizeMode = function(config){\n\t\tvar res = {x:false, y:false};\n\t\tif(config === \"xy\"){\n\t\t\tres.x = res.y = true;\n\t\t}else if(config === \"y\" || config === true){\n\t\t\tres.y = true;\n\t\t}else if(config === \"x\"){\n\t\t\tres.x = true;\n\t\t}\n\t\treturn res;\n\t};\n\n\tLayout.prototype.autosize = function(mode) {\n\t\tvar res = this._getAutosizeMode(mode);\n\t\tvar boxSizes = this._getBoxStyles(this.$container);\n\t\tvar contentSizes = this.getContentSize(mode);\n\n\t\tvar node = this.$container;\n\t\tif(res.x){\n\t\t\tif(boxSizes.borderBox){\n\t\t\t\tcontentSizes.width += boxSizes.horPaddings;\n\t\t\t}\n\t\t\tnode.style.width = contentSizes.width + \"px\";\n\t\t}\n\t\tif(res.y){\n\t\t\tif(boxSizes.borderBox){\n\t\t\t\tcontentSizes.height += boxSizes.vertPaddings;\n\t\t\t}\n\t\t\tnode.style.height = contentSizes.height + \"px\";\n\t\t}\n\t};\n\n\tLayout.prototype.getSize = function () {\n\t\tthis._sizes = [];\n\t\tvar width = 0;\n\t\tvar minWidth = 0;\n\t\tvar maxWidth = 100000;\n\t\tvar height = 0;\n\t\tvar maxHeight = 100000;\n\t\tvar minHeight = 0;\n\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\n\n\t\t\tvar size = this._sizes[i] = this.$cells[i].getSize();\n\t\t\tif (this.$cells[i].$config.hidden) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (this._xLayout) {\n\t\t\t\tif (!size.width && size.minWidth) {\n\t\t\t\t\twidth += size.minWidth;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\twidth += size.width;\n\t\t\t\t}\n\t\t\t\tmaxWidth += size.maxWidth;\n\t\t\t\tminWidth += size.minWidth;\n\t\t\t\theight = Math.max(height, size.height);\n\t\t\t\tmaxHeight = Math.min(maxHeight, size.maxHeight); // min of maxHeight\n\t\t\t\tminHeight = Math.max(minHeight, size.minHeight); // max of minHeight\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (!size.height && size.minHeight) {\n\t\t\t\t\theight += size.minHeight;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\theight += size.height;\n\t\t\t\t}\n\t\t\t\tmaxHeight += size.maxHeight;\n\t\t\t\tminHeight += size.minHeight;\n\t\t\t\twidth = Math.max(width, size.width);\n\t\t\t\tmaxWidth = Math.min(maxWidth, size.maxWidth); // min of maxWidth\n\t\t\t\tminWidth = Math.max(minWidth, size.minWidth); // max of minWidth\n\t\t\t}\n\t\t}\n\t\tvar self = _super.prototype.getSize.call(this);\n\t\t// maxWidth\n\t\tif (self.maxWidth >= 100000) {\n\t\t\tself.maxWidth = maxWidth;\n\t\t}\n\t\t// maxHeight\n\t\tif (self.maxHeight >= 100000) {\n\t\t\tself.maxHeight = maxHeight;\n\t\t}\n\t\t// minWidth\n\t\tself.minWidth = self.minWidth !== self.minWidth ? 0 : self.minWidth;// || self.width || Math.max(minWidth, width);\n\t\t// minHeight\n\t\tself.minHeight = self.minHeight !== self.minHeight ? 0 : self.minHeight;//self.minHeight || self.height || Math.max(minHeight, height);\n\t\t// sizes with paddings and margins\n\t\tif (this._xLayout) {\n\t\t\tself.minWidth += this.$config.margin * (this.$cells.length) || 0;\n\t\t\tself.minWidth += this.$config.padding * 2 || 0;\n\t\t\tself.minHeight += (this.$config.padding * 2) || 0;\n\t\t}\n\t\telse {\n\t\t\tself.minHeight += this.$config.margin * (this.$cells.length) || 0;\n\t\t\tself.minHeight += (this.$config.padding * 2) || 0;\n\t\t}\n\t\t\n\t\treturn self;\n\t};\n\t// calc total gravity and free space\n\tLayout.prototype._calcFreeSpace = function (s, cell, xLayout) {\n\t\tvar min = xLayout ? cell.minWidth : cell.minHeight;\n\t\tvar max = xLayout ? cell.maxWidth : cell.maxWidth;\n\t\tvar side = s;\n\t\tif (!side) {\n\t\t\tside = Math.floor(this._free / this._gravity * cell.gravity);\n\t\t\tif (side > max) {\n\t\t\t\tside = max;\n\t\t\t\tthis._free -= side;\n\t\t\t\tthis._gravity -= cell.gravity;\n\t\t\t}\n\t\t\tif (side < min) {\n\t\t\t\tside = min;\n\t\t\t\tthis._free -= side;\n\t\t\t\tthis._gravity -= cell.gravity;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (side > max) {\n\t\t\t\tside = max;\n\t\t\t}\n\t\t\tif (side < min) {\n\t\t\t\tside = min;\n\t\t\t}\n\t\t\tthis._free -= side;\n\t\t}\n\t\treturn side;\n\t};\n\tLayout.prototype._calcSize = function (s, size, xLayout) {\n\t\tvar side = s;\n\t\tvar min = xLayout ? size.minWidth : size.minHeight;\n\t\tvar max = xLayout ? size.maxWidth : size.maxHeight;\n\t\tif (!side) {\n\t\t\tside = Math.floor(this._free / this._gravity * size.gravity);\n\t\t}\n\t\tif (side > max) {\n\t\t\tside = max;\n\t\t}\n\t\tif (side < min) {\n\t\t\tside = min;\n\t\t}\n\t\treturn side;\n\t};\n\n\tLayout.prototype._configureBorders = function(){\n\t\tif(this.$root){\n\t\t\tthis._setBorders([\n\t\t\t\tthis._borders.left,\n\t\t\t\tthis._borders.top,\n\t\t\t\tthis._borders.right,\n\t\t\t\tthis._borders.bottom\n\t\t\t],\n\t\t\tthis);\n\t\t}\n\n\t\tvar borderClass = this._xLayout ? this._borders.right : this._borders.bottom;\n\n\t\tvar cells = this.$cells;\n\n\t\tvar lastVisibleIndex = cells.length - 1;\n\t\tfor(var i = lastVisibleIndex; i >= 0; i--){\n\t\t\tif (!cells[i].$config.hidden) {\n\t\t\t\tlastVisibleIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = 0; i < cells.length; i++) {\n\t\t\tif (cells[i].$config.hidden) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar lastCell = i >= lastVisibleIndex;\n\t\t\tvar borderColorClass = \"\";\n\t\t\tif(!lastCell && cells[i + 1]){\n\t\t\t\tif(cells[i + 1].$config.view == \"scrollbar\"){\n\t\t\t\t\tif(this._xLayout){\n\t\t\t\t\t\tlastCell = true;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tborderColorClass = \"gantt_layout_cell_border_transparent\";\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\tthis._setBorders(lastCell ? [] : [borderClass, borderColorClass], cells[i]);\n\t\t}\n\t};\n\n\tLayout.prototype._updateCellVisibility = function(){\n\t\tvar oldVisibleCells = this._visibleCells || {};\n\t\tvar firstCall = !this._visibleCells;\n\t\tvar visibleCells = {};\n\t\tvar cell;\n\t\tfor (var i = 0; i < this._sizes.length; i++) {\n\t\t\tcell = this.$cells[i];\n\n\t\t\tif (!firstCall && cell.$config.hidden && oldVisibleCells[cell.$id]) {\n\t\t\t\tcell._hide(true);\n\t\t\t}else if(!cell.$config.hidden && !oldVisibleCells[cell.$id]){\n\t\t\t\tcell._hide(false);\n\t\t\t}\n\n\t\t\tif(!cell.$config.hidden){\n\t\t\t\tvisibleCells[cell.$id] = true;\n\t\t\t}\n\t\t}\n\t\tthis._visibleCells = visibleCells;\n\t};\n\n\tLayout.prototype.setSize = function (x, y) {\n\t\tthis._configureBorders();\n\t\t_super.prototype.setSize.call(this, x, y);\n\t\ty = this.$lastSize.contentY;\n\t\tx = this.$lastSize.contentX;\n\n\t\tvar padding = (this.$config.padding || 0);\n\t\tthis.$view.style.padding = padding + \"px\";\n\t\tthis._gravity = 0;\n\t\tthis._free = this._xLayout ? x : y;\n\t\tthis._free -= padding * 2;\n\t\t// calc all gravity\n\n\t\tvar cell,\n\t\t\tsize;\n\n\t\tthis._updateCellVisibility();\n\n\t\tfor (var i = 0; i < this._sizes.length; i++) {\n\t\t\tcell = this.$cells[i];\n\n\t\t\tif (cell.$config.hidden) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvar margin = (this.$config.margin || 0);\n\t\t\tif(cell.$name == \"resizer\" && !margin){\n\t\t\t\tmargin = -1;\n\t\t\t}\n\n\t\t\t// set margins to child cell\n\t\t\tvar cellView = cell.$view;\n\n\t\t\tvar marginSide = this._xLayout ? \"marginRight\" : \"marginBottom\";\n\t\t\tif (i !== this.$cells.length - 1) {\n\t\t\t\tcellView.style[marginSide] = margin + \"px\";\n\t\t\t\tthis._free -= margin; // calc free space without margin\n\t\t\t}\n\t\t\tsize = this._sizes[i];\n\t\t\tif (this._xLayout) {\n\t\t\t\tif (!size.width) {\n\t\t\t\t\tthis._gravity += size.gravity;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (!size.height) {\n\t\t\t\t\tthis._gravity += size.gravity;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0; i < this._sizes.length; i++) {\n\t\t\tcell = this.$cells[i];\n\n\t\t\tif (cell.$config.hidden) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tsize = this._sizes[i];\n\t\t\tvar width = size.width;\n\t\t\tvar height = size.height;\n\t\t\tif (this._xLayout) {\n\t\t\t\tthis._calcFreeSpace(width, size, true);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._calcFreeSpace(height, size, false);\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0; i < this.$cells.length; i++) {\n\t\t\tcell = this.$cells[i];\n\n\t\t\tif (cell.$config.hidden) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tsize = this._sizes[i];\n\t\t\tvar dx = void 0;\n\t\t\tvar dy = void 0;\n\t\t\tif (this._xLayout) {\n\t\t\t\tdx = this._calcSize(size.width, size, true);\n\t\t\t\tdy = y - padding * 2; // layout height without paddings\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdx = x - padding * 2; // layout width without paddings\n\t\t\t\tdy = this._calcSize(size.height, size, false);\n\t\t\t}\n\n\t\t\tcell.setSize(dx, dy);\n\t\t}\n\n\t};\n\n\treturn Layout;\n}(Cell));\n\nmodule.exports = Layout;","var utils = require(\"./utils\");\n\nfunction createScope(addEvent, removeEvent){\n\taddEvent = addEvent || utils.event;\n\tremoveEvent = removeEvent || utils.eventRemove;\n\n\tvar handlers = [];\n\n\treturn {\n\t\tattach: function(el, event, handler, capture){\n\t\t\thandlers.push({element: el, event:event, callback: handler, capture: capture});\n\t\t\taddEvent(el, event, handler, capture);\n\t\t},\n\t\tdetach: function(el, event, handler, capture){\n\t\t\tremoveEvent(el, event, handler, capture);\n\t\t\tfor(var i = 0; i < handlers.length; i++){\n\t\t\t\tvar handler = handlers[i];\n\t\t\t\tif(handler.element === el && handler.event === event && handler.callback === handler && handler.capture === capture){\n\t\t\t\t\thandlers.splice(i, 1);\n\t\t\t\t\ti--;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tdetachAll: function(){\n\t\t\tfor(var i = 0; i < handlers.length; i++){\n\t\t\t\tremoveEvent(handlers[i].element, handlers[i].event, handlers[i].callback, handlers[i].capture);\n\t\t\t\tremoveEvent(handlers[i].element, handlers[i].event, handlers[i].callback, undefined);\n\t\t\t\tremoveEvent(handlers[i].element, handlers[i].event, handlers[i].callback, false);\n\t\t\t\tremoveEvent(handlers[i].element, handlers[i].event, handlers[i].callback, true);\n\t\t\t}\n\t\t\thandlers = [];\n\t\t},\n\t\textend: function(){\n\t\t\treturn createScope(this.event, this.eventRemove);\n\t\t}\n\t};\n}\n\nmodule.exports = createScope;","function checkTimeout(host, updPerSecond){\n\tif (!updPerSecond)\n\t\treturn true;\n\t\n\tif (host._on_timeout)\n\t\treturn false;\n\t\n\tvar timeout = Math.ceil(1000/updPerSecond);\n\tif (timeout < 2) return true;\n\n\tsetTimeout(function(){\n\t\tdelete host._on_timeout;\n\t}, timeout);\n\n\thost._on_timeout = true;\n\treturn true;\n}\n\nmodule.exports = checkTimeout;","function extend(gantt){\n\n\tgantt.destructor = function(){\n\t\tgantt.callEvent(\"onDestroy\", []);\n\n\t\tthis.clearAll();\n\t\tthis.detachAllEvents();\n\n\t\tif(this.$root){\n\t\t\tdelete this.$root.gantt;\n\t\t}\n\n\t\tthis._eventRemoveAll();\n\t\tif(this.$layout){\n\t\t\tthis.$layout.destructor();\n\t\t}\n\n\t\tthis.resetLightbox();\n\n\t\tif(this._dp && this._dp.destructor){\n\t\t\tthis._dp.destructor();\n\t\t}\n\n\t\tthis.$services.destructor();\n\n\t\tfor(var i in this){\n\t\t\tif(i.indexOf(\"$\") === 0){\n\t\t\t\tdelete this[i];\n\t\t\t}\n\t\t}\n\t};\n}\n\nmodule.exports = extend;\n","/*\n \tasserts will be removed in final code, so you can place them anythere\n\twithout caring about performance impacts\n*/\n\nmodule.exports = function(gantt){\n\treturn function assert(check, message){\n\t\t//jshint -W087\n\t\tif (!check){\n\t\t\tif(gantt.config.show_errors && gantt.callEvent(\"onError\",[message]) !== false) {\n\t\t\t\tgantt.message({type: \"error\", text: message, expire: -1});\n\t\t\t\tdebugger;\n\t\t\t}\n\t\t}\n\t};\n};","var domHelpers = require(\"../utils/dom_helpers\"),\n\thelpers = require(\"../utils/helpers\");\n\nmodule.exports = function(gantt){\n\tvar calculateScaleRange = require(\"./gantt_data_range\");\n\n\tgantt.assert = require(\"./common/assert\")(gantt);\n\n//initial initialization\n\tgantt.init = function(node, from, to){\n\t\tif(from && to){\n\t\t\tthis.config.start_date = this._min_date = new Date(from);\n\t\t\tthis.config.end_date = this._max_date = new Date(to);\n\t\t}\n\t\tthis.date.init();\n\n\t\tif (!this.config.scroll_size)\n\t\t\tthis.config.scroll_size = domHelpers.getScrollSize() || 1;\n\n\t\tvar resizeDelay;\n\t\tgantt.event(window, \"resize\", function(){\n\t\t\tclearTimeout(resizeDelay);\n\t\t\tresizeDelay = setTimeout(function(){\n\t\t\t\tgantt.render();\n\t\t\t}, 300);\n\t\t});\n\n\t\t//can be called only once\n\t\tthis.init = function(node){\n\t\t\tif (this.$container && this.$container.parentNode){\n\t\t\t\tthis.$container.parentNode.removeChild(this.$container);\n\t\t\t\tthis.$container = null;\n\t\t\t}\n\n\t\t\tif(this.$layout){\n\t\t\t\tthis.$layout.clear();\n\t\t\t}\n\t\t\tthis._reinit(node);\n\t\t};\n\n\t\tthis._reinit(node);\n\t};\n\n\tgantt._reinit = function(node){\n\t\tthis.callEvent(\"onBeforeGanttReady\", []);\n\t\t//this._init_tasks_range();\n\t\tthis.resetLightbox();\n\t\tthis._update_flags();\n\n\n\t\tvar config = this.$services.getService(\"templateLoader\");\n\t\tconfig.initTemplates(this);\n\n\t\tthis._clearTaskLayers();\n\t\tthis._clearLinkLayers();\n\n\t\t//this.clear\n\t\tif(this.$layout){\n\t\t\tthis.$layout.destructor();\n\t\t\tthis.$ui.reset();\n\t\t}\n\n\t\tthis.$root = domHelpers.toNode(node);\n\t\tif(this.$root){\n\t\t\tthis.$root.innerHTML = \"\";\n\t\t}\n\t\tthis.$root.gantt = this;\n\t\tcalculateScaleRange(this);\n\t\tthis.config.layout.id = \"main\";\n\t\tthis.$layout = this.$ui.createView(\"layout\", node, this.config.layout);\n\n\t\tthis.$layout.attachEvent(\"onBeforeResize\", function(){\n\t\t\tvar storeNames = gantt.$services.getService(\"datastores\");\n\t\t\tfor(var i = 0; i < storeNames.length; i++){\n\t\t\t\tgantt.getDatastore(storeNames[i]).filter();\n\t\t\t}\n\t\t});\n\n\t\tthis.$layout.attachEvent(\"onResize\", function(){\n\t\t\tgantt.refreshData();\n\t\t});\n\n\t\tthis.callEvent(\"onGanttLayoutReady\", []);\n\t\tthis.$layout.render();\n\n\t\tgantt.$container = this.$layout.$container.firstChild;\n\t\tthis.callEvent(\"onTemplatesReady\",[]);\n\t\tthis.$mouseEvents.reset(this.$root);\n\t\tthis.callEvent(\"onGanttReady\", []);\n\n\t\tthis.render();\n\t};\n\n\tgantt.$click={\n\t\tbuttons:{\n\t\t\t\"edit\":function(id){\n\t\t\t\tgantt.showLightbox(id);\n\t\t\t},\n\t\t\t\"delete\":function(id){\n\t\t\t\tvar question = gantt.locale.labels.confirm_deleting;\n\t\t\t\tvar title = gantt.locale.labels.confirm_deleting_title;\n\n\t\t\t\tgantt._dhtmlx_confirm(question, title, function(){\n\t\t\t\t\tif(!gantt.isTaskExists(id)){\n\t\t\t\t\t\tgantt.hideLightbox();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar task = gantt.getTask(id);\n\t\t\t\t\tif(task.$new){\n\t\t\t\t\t\tgantt.silent(function(){\n\t\t\t\t\t\t\tgantt.deleteTask(id, true);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tgantt.refreshData();\n\t\t\t\t\t}else{\n\t\t\t\t\t\tgantt.deleteTask(id);\n\t\t\t\t\t}\n\n\t\t\t\t\tgantt.hideLightbox();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n//renders self\n\tgantt.render = function(){\n\t\tthis.callEvent(\"onBeforeGanttRender\", []);\n\n\t\tif (!this.config.sort && this._sort) {\n\t\t\tthis._sort = undefined;\n\t\t}\n\n\t\tvar pos = this.getScrollState();\n\t\tvar posX = pos ? pos.x : 0;\n\t\tif(this._getHorizontalScrollbar()){\n\t\t\tvar scrollbar = this._getHorizontalScrollbar();\n\t\t\tposX = scrollbar.$config.codeScrollLeft || posX || 0;\n\t\t}\n\n\n\t\tvar visible_date = null;\n\t\tif(posX){\n\t\t\tvisible_date = gantt.dateFromPos(posX + this.config.task_scroll_offset);\n\t\t}\n\t\tcalculateScaleRange(this);\n\n\t\tthis.$layout.$config.autosize = this.config.autosize;\n\t\tthis.$layout.resize();\n\n\t\tif(this.config.preserve_scroll && pos){\n\n\t\t\tif(posX){\n\t\t\t\tvar new_pos = gantt.getScrollState();\n\t\t\t\tvar new_date = gantt.dateFromPos(new_pos.x);\n\t\t\t\tif(!(+visible_date == +new_date && new_pos.y == pos.y)){\n\t\t\t\t\tif(visible_date){\n\t\t\t\t\t\tthis.showDate(visible_date);\n\t\t\t\t\t}\n\t\t\t\t\tif(pos.y)\n\t\t\t\t\t\tgantt.scrollTo(undefined, pos.y);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.callEvent(\"onGanttRender\", []);\n\t};\n\n\t//TODO: add layout.resize method that wouldn't trigger data repaint\n\tgantt.setSizes = gantt.render;\n\n\tgantt.locate = function(e) {\n\t\tvar trg = domHelpers.getTargetNode(e);\n\n\t\t//ignore empty cells\n\t\tvar className = domHelpers.getClassName(trg);\n\t\tif ((className || \"\").indexOf(\"gantt_task_cell\") >= 0) return null;\n\n\t\tvar targetAttribute = arguments[1] || this.config.task_attribute;\n\n\t\tvar node = domHelpers.locateAttribute(trg, targetAttribute);\n\t\tif(node){\n\t\t\treturn node.getAttribute(targetAttribute);\n\t\t}else{\n\t\t\treturn null;\n\t\t}\n\t};\n\n\tgantt._locate_css = function(e, classname, strict){\n\t\treturn domHelpers.locateClassName(e, classname, strict);\n\t};\n\n\tgantt._locateHTML = function(e, attribute) {\n\t\treturn domHelpers.locateAttribute(e, attribute || this.config.task_attribute);\n\t};\n\n\tgantt.getTaskRowNode = function(id) {\n\t\tvar els = this.$grid_data.childNodes;\n\t\tvar attribute = this.config.task_attribute;\n\t\tfor (var i = 0; i < els.length; i++) {\n\t\t\tif (els[i].getAttribute) {\n\t\t\t\tvar value = els[i].getAttribute(attribute);\n\t\t\t\tif (value == id) return els[i];\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t};\n\n\tgantt.changeLightboxType = function(type){\n\t\tif(this.getLightboxType() == type)\n\t\t\treturn true;\n\t\tgantt._silent_redraw_lightbox(type);\n\t};\n\n\n\tgantt._get_link_type = function (from_start, to_start) {\n\t\tvar type = null;\n\t\tif (from_start && to_start) {\n\t\t\ttype = gantt.config.links.start_to_start;\n\t\t} else if (!from_start && to_start) {\n\t\t\ttype = gantt.config.links.finish_to_start;\n\t\t} else if (!from_start && !to_start) {\n\t\t\ttype = gantt.config.links.finish_to_finish;\n\t\t} else if (from_start && !to_start) {\n\t\t\ttype = gantt.config.links.start_to_finish;\n\t\t}\n\t\treturn type;\n\t};\n\n\tgantt.isLinkAllowed = function (from, to, from_start, to_start) {\n\t\tvar link = null;\n\t\tif (typeof(from) == \"object\") {\n\t\t\tlink = from;\n\t\t} else {\n\t\t\tlink = {source: from, target: to, type: this._get_link_type(from_start, to_start)};\n\t\t}\n\n\t\tif (!link) return false;\n\t\tif (!(link.source && link.target && link.type)) return false;\n\t\tif (link.source == link.target) return false;\n\n\t\tvar res = true;\n\t\t//any custom rules\n\t\tif (this.checkEvent(\"onLinkValidation\"))\n\t\t\tres = this.callEvent(\"onLinkValidation\", [link]);\n\n\t\treturn res;\n\t};\n\n\n\tgantt._correct_dst_change = function(date, prevOffset, step, unit){\n\t\tvar time_unit = helpers.getSecondsInUnit(unit) * step;\n\t\tif(time_unit > 60*60 && time_unit < 60*60*24){\n\t\t\t//correct dst change only if current unit is more than one hour and less than day (days have own checking), e.g. 12h\n\t\t\tvar offsetChanged = date.getTimezoneOffset() - prevOffset;\n\t\t\tif(offsetChanged){\n\t\t\t\tdate = gantt.date.add(date, offsetChanged, \"minute\");\n\t\t\t}\n\t\t}\n\t\treturn date;\n\t};\n\n\tgantt.getGridColumns = function(){\n\t\treturn gantt.config.columns.slice();\n\t};\n\n\tgantt.isSplitTask = function(task){\n\t\treturn (task.render == \"split\" && gantt.hasChild(task.id));\n\t};\n\n\tgantt._is_icon_open_click = function(e) {\n\t\tif (!e)\n\t\t\treturn false;\n\t\tvar target = e.target || e.srcElement;\n\t\tif (!(target && target.className))\n\t\t\treturn false;\n\t\tvar className = domHelpers.getClassName(target);\n\t\tif (className.indexOf(\"gantt_tree_icon\") !== -1 && (className.indexOf(\"gantt_close\") !== -1 || className.indexOf(\"gantt_open\") !== -1))\n\t\t\treturn true;\n\t\treturn false;\n\t};\n\n};","module.exports = function(gantt) {\n\n\tgantt.config.touch_drag = 500; //nearly immediate dnd\n\tgantt.config.touch = true;\n\tgantt.config.touch_feedback = true;\n\tgantt.config.touch_feedback_duration = 1;\n\tgantt._prevent_touch_scroll = false;\n\n\n\tgantt._touch_feedback = function () {\n\t\tif (gantt.config.touch_feedback) {\n\t\t\tif (navigator.vibrate)\n\t\t\t\tnavigator.vibrate(gantt.config.touch_feedback_duration);\n\t\t}\n\t};\n\n\tgantt.attachEvent(\"onGanttReady\", gantt.bind(function(){\n\t\tif (this.config.touch != \"force\")\n\t\t\tthis.config.touch = this.config.touch &&\n\t\t\t\t((navigator.userAgent.indexOf(\"Mobile\") != -1) ||\n\t\t\t\t\t(navigator.userAgent.indexOf(\"iPad\") != -1) ||\n\t\t\t\t\t(navigator.userAgent.indexOf(\"Android\") != -1) ||\n\t\t\t\t\t(navigator.userAgent.indexOf(\"Touch\") != -1));\n\n\t\tif (this.config.touch) {\n\n\t\t\tvar touchEventsSupported = true;\n\t\t\ttry {\n\t\t\t\tdocument.createEvent(\"TouchEvent\");\n\t\t\t} catch (e) {\n\t\t\t\ttouchEventsSupported = false;\n\t\t\t}\n\n\t\t\tif (touchEventsSupported) {\n\t\t\t\tthis._touch_events([\"touchmove\", \"touchstart\", \"touchend\"], function (ev) {\n\t\t\t\t\tif (ev.touches && ev.touches.length > 1) return null;\n\t\t\t\t\tif (ev.touches[0])\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttarget: ev.target,\n\t\t\t\t\t\t\tpageX: ev.touches[0].pageX,\n\t\t\t\t\t\t\tpageY: ev.touches[0].pageY,\n\t\t\t\t\t\t\tclientX: ev.touches[0].clientX,\n\t\t\t\t\t\t\tclientY: ev.touches[0].clientY\n\t\t\t\t\t\t};\n\t\t\t\t\telse\n\t\t\t\t\t\treturn ev;\n\t\t\t\t}, function () {\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\t\t\t} else if (window.navigator.pointerEnabled) {\n\t\t\t\tthis._touch_events([\"pointermove\", \"pointerdown\", \"pointerup\"], function (ev) {\n\t\t\t\t\tif (ev.pointerType == \"mouse\") return null;\n\t\t\t\t\treturn ev;\n\t\t\t\t}, function (ev) {\n\t\t\t\t\treturn (!ev || (ev.pointerType == \"mouse\" ));\n\t\t\t\t});\n\t\t\t} else if (window.navigator.msPointerEnabled) {\n\t\t\t\tthis._touch_events([\"MSPointerMove\", \"MSPointerDown\", \"MSPointerUp\"], function (ev) {\n\t\t\t\t\tif (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\n\t\t\t\t\treturn ev;\n\t\t\t\t}, function (ev) {\n\t\t\t\t\treturn (!ev || ev.pointerType == ev.MSPOINTER_TYPE_MOUSE);\n\t\t\t\t});\n\t\t\t}\n\n\t\t}\n\t}, gantt));\n\n\n\tfunction getTaskDND(){\n\t\tvar _tasks_dnd;\n\t\tif(gantt.$ui.getView(\"timeline\")){\n\t\t\t_tasks_dnd = gantt.$ui.getView(\"timeline\")._tasks_dnd;\n\t\t}\n\t\treturn _tasks_dnd;\n\t}\n\n\tvar touchHandlers = [];\n\n//we can't use native scrolling, as we need to sync momentum between different parts\n//so we will block native scroll and use the custom one\n//in future we can add custom momentum\n\tgantt._touch_events = function (names, accessor, ignore) {\n\t\t//webkit on android need to be handled separately\n\t\tvar dblclicktime = 0;\n\t\tvar action_mode = false;\n\t\tvar scroll_mode = false;\n\t\tvar dblclick_timer = 0;\n\t\tvar action_start = null;\n\t\tvar scroll_state;\n\t\tvar long_tap_timer = null;\n\t\tvar current_target = null;\n\n\n\n\t\tfor(var i = 0; i < touchHandlers.length; i++){\n\t\t\tgantt.eventRemove(touchHandlers[i][0], touchHandlers[i][1], touchHandlers[i][2]);\n\t\t}\n\t\ttouchHandlers = [];\n\n\t\t//touch move\n\t\ttouchHandlers.push([gantt.$container, names[0], function (e) {\n\t\t\tvar _tasks_dnd = getTaskDND();\n\n\t\t\t\tif (ignore(e)) return;\n\n\t\t\t\t//ignore common and scrolling moves\n\t\t\t\tif (!action_mode) return;\n\n\t\t\t\tif (long_tap_timer) clearTimeout(long_tap_timer);\n\n\t\t\t\tvar source = accessor(e);\n\t\t\t\tif (_tasks_dnd && (_tasks_dnd.drag.id || _tasks_dnd.drag.start_drag)) {\n\t\t\t\t\t_tasks_dnd.on_mouse_move(source);\n\t\t\t\t\tif (e.preventDefault)\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.cancelBubble = true;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (!gantt._prevent_touch_scroll) {\n\t\t\t\t\tif (source && action_start) {\n\t\t\t\t\t\tvar dx = action_start.pageX - source.pageX;\n\t\t\t\t\t\tvar dy = action_start.pageY - source.pageY;\n\t\t\t\t\t\tif (!scroll_mode && (Math.abs(dx) > 5 || Math.abs(dy) > 5)) {\n\t\t\t\t\t\t\tgantt._touch_scroll_active = scroll_mode = true;\n\t\t\t\t\t\t\tdblclicktime = 0;\n\t\t\t\t\t\t\tscroll_state = gantt.getScrollState();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (scroll_mode) {\n\t\t\t\t\t\t\tgantt.scrollTo(scroll_state.x + dx, scroll_state.y + dy);\n\t\t\t\t\t\t\tvar new_scroll_state = gantt.getScrollState();\n\n\t\t\t\t\t\t\tif ((scroll_state.x != new_scroll_state.x && dy > 2 * dx) ||\n\t\t\t\t\t\t\t\t(scroll_state.y != new_scroll_state.y && dx > 2 * dy )) {\n\t\t\t\t\t\t\t\treturn block_action(e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn block_action(e);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}]);\n\n\n\t\t//block touch context menu in IE10\n\t\ttouchHandlers.push([this.$container, \"contextmenu\", function (e) {\n\t\t\tif (action_mode)\n\t\t\t\treturn block_action(e);\n\t\t}]);\n\n\t\t//touch start\n\t\ttouchHandlers.push([this.$container, names[1], function (e) {\n\t\t\tif (ignore(e)) return;\n\t\t\tif (e.touches && e.touches.length > 1) {\n\t\t\t\taction_mode = false;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taction_start = accessor(e);\n\t\t\tif (!gantt._locate_css(action_start, \"gantt_hor_scroll\") && !gantt._locate_css(action_start, \"gantt_ver_scroll\")) {\n\t\t\t\taction_mode = true;\n\t\t\t}\n\t\t\tvar _tasks_dnd = getTaskDND();\n\n\t\t\t//long tap\n\t\t\tlong_tap_timer = setTimeout(function () {\n\t\t\t\tvar taskId = gantt.locate(action_start);\n\t\t\t\tif (_tasks_dnd && (taskId && !gantt._locate_css(action_start, \"gantt_link_control\") && !gantt._locate_css(action_start, \"gantt_grid_data\"))) {\n\t\t\t\t\t_tasks_dnd.on_mouse_down(action_start);\n\n\t\t\t\t\tif (_tasks_dnd.drag && _tasks_dnd.drag.start_drag) {\n\t\t\t\t\t\tcloneTaskRendered(taskId);\n\t\t\t\t\t\t_tasks_dnd._start_dnd(action_start);\n\t\t\t\t\t\tgantt._touch_drag = true;\n\n\t\t\t\t\t\tgantt.refreshTask(taskId);\n\n\t\t\t\t\t\tgantt._touch_feedback();\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tlong_tap_timer = null;\n\t\t\t}, gantt.config.touch_drag);\n\t\t}]);\n\n\t\t//touch end\n\t\ttouchHandlers.push([this.$container, names[2], function (e) {\n\t\t\tif (ignore(e)) return;\n\t\t\tif (long_tap_timer) clearTimeout(long_tap_timer);\n\t\t\tgantt._touch_drag = false;\n\t\t\taction_mode = false;\n\t\t\tvar source = accessor(e);\n\n\t\t\tvar _tasks_dnd = getTaskDND();\n\n\t\t\tif(_tasks_dnd)\n\t\t\t\t_tasks_dnd.on_mouse_up(source);\n\n\t\t\tif (current_target) {\n\t\t\t\tgantt.refreshTask(gantt.locate(current_target));\n\t\t\t\tif (current_target.parentNode) {\n\t\t\t\t\tcurrent_target.parentNode.removeChild(current_target);\n\t\t\t\t\tgantt._touch_feedback();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tgantt._touch_scroll_active = action_mode = scroll_mode = false;\n\t\t\tcurrent_target = null;\n\n\t\t\t//dbl-tap handling\n\t\t\tif (action_start && dblclicktime) {\n\t\t\t\tvar now = new Date();\n\t\t\t\tif ((now - dblclicktime) < 500) {\n\n\t\t\t\t\tvar mouseEvents = gantt.$services.getService(\"mouseEvents\");\n\t\t\t\t\tmouseEvents.onDoubleClick(action_start);\n\t\t\t\t\tblock_action(e);\n\t\t\t\t} else\n\t\t\t\t\tdblclicktime = now;\n\t\t\t} else {\n\t\t\t\tdblclicktime = new Date();\n\t\t\t}\n\t\t}]);\n\n\t\tfor(var i = 0; i < touchHandlers.length; i++){\n\t\t\tgantt.event(touchHandlers[i][0], touchHandlers[i][1], touchHandlers[i][2]);\n\t\t}\n\n\t\t//common helper, prevents event\n\t\tfunction block_action(e) {\n\t\t\tif (e && e.preventDefault)\n\t\t\t\te.preventDefault();\n\t\t\t(e || event).cancelBubble = true;\n\t\t\treturn false;\n\t\t}\n\n\t\tfunction cloneTaskRendered(taskId) {\n\t\t\tvar renders = gantt._getTaskLayers();\n\t\t\tvar task = gantt.getTask(taskId);\n\t\t\tif (task && gantt.isTaskVisible(taskId)) {\n\t\t\t\tfor (var i = 0; i < renders.length; i++) {\n\t\t\t\t\ttask = renders[i].rendered[taskId];\n\t\t\t\t\tif (task && task.getAttribute(gantt.config.task_attribute) && task.getAttribute(gantt.config.task_attribute) == taskId) {\n\t\t\t\t\t\tvar copy = task.cloneNode(true);\n\t\t\t\t\t\tcurrent_target = task;\n\t\t\t\t\t\trenders[i].rendered[taskId] = copy;\n\t\t\t\t\t\ttask.style.display = \"none\";\n\t\t\t\t\t\tcopy.className += \" gantt_drag_move \";\n\t\t\t\t\t\ttask.parentNode.appendChild(copy);\n\t\t\t\t\t\t//return copy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n};","module.exports = function(gantt) {\ngantt.skins[\"contrast_white\"] = {\n\tconfig:{\n\t\tgrid_width:360,\n\t\trow_height: 35,\n\t\tscale_height: 35,\n\t\tlink_line_width:2,\n\t\tlink_arrow_size:6,\n\t\tlightbox_additional_height:75\n\t},\n\t_second_column_width:100,\n\t_third_column_width:80\n};\n\n};","module.exports = function(gantt) {\ngantt.skins[\"contrast_black\"] = {\n\tconfig:{\n\t\tgrid_width:360,\n\t\trow_height: 35,\n\t\tscale_height: 35,\n\t\tlink_line_width:2,\n\t\tlink_arrow_size:6,\n\t\tlightbox_additional_height:75\n\t},\n\t_second_column_width:100,\n\t_third_column_width:80\n};\n\n};","module.exports = function(gantt) {\n\tgantt.skins.material = {\n\t\tconfig: {\n\t\t\tgrid_width: 411,\n\t\t\trow_height: 34,\n\t\t\ttask_height_offset: 6,\n\t\t\tscale_height: 36,\n\t\t\tlink_line_width: 2,\n\t\t\tlink_arrow_size: 6,\n\t\t\tlightbox_additional_height: 80\n\t\t},\n\t\t_second_column_width: 110,\n\t\t_third_column_width: 75,\n\t\t_redefine_lightbox_buttons: {\n\t\t\t\"buttons_left\": [\"dhx_delete_btn\"],\n\t\t\t\"buttons_right\": [\"dhx_save_btn\", \"dhx_cancel_btn\"]\n\t\t}\n\t};\n\n\tgantt.attachEvent(\"onAfterTaskDrag\", function (id) {\n\t\tvar t = gantt.getTaskNode(id);\n\t\tif (t) {\n\t\t\tt.className += \" gantt_drag_animation\";\n\t\t\tsetTimeout(function () {\n\t\t\t\tvar indx = t.className.indexOf(\" gantt_drag_animation\");\n\t\t\t\tif (indx > -1) {\n\t\t\t\t\tt.className = t.className.slice(0, indx);\n\t\t\t\t}\n\t\t\t}, 200);\n\t\t}\n\t});\n\n};","module.exports = function(gantt) {\n\tgantt.skins.broadway = {\n\t\tconfig: {\n\t\t\tgrid_width: 360,\n\t\t\trow_height: 35,\n\t\t\tscale_height: 35,\n\t\t\tlink_line_width: 1,\n\t\t\tlink_arrow_size: 7,\n\t\t\tlightbox_additional_height: 86\n\t\t},\n\t\t_second_column_width: 90,\n\t\t_third_column_width: 80,\n\n\t\t_lightbox_template: \"
 
\",\n\t\t_config_buttons_left: {},\n\t\t_config_buttons_right: {\n\t\t\t\"gantt_delete_btn\": \"icon_delete\",\n\t\t\t\"gantt_save_btn\": \"icon_save\"\n\t\t}\n\t};\n};","module.exports = function(gantt) {\ngantt.skins.terrace = {\n\tconfig:{\n\t\tgrid_width:360,\n\t\trow_height: 35,\n\t\tscale_height: 35,\n\t\tlink_line_width:2,\n\t\tlink_arrow_size:6,\n\t\tlightbox_additional_height:75\n\t},\n\t_second_column_width:90,\n\t_third_column_width:70\t\t\n};\n\n};","module.exports = function(gantt) {\ngantt.skins.meadow = {\n\tconfig:{\n\t\tgrid_width:350,\n\t\trow_height: 27,\n\t\tscale_height: 30,\n\t\tlink_line_width:2,\n\t\tlink_arrow_size:6,\n\t\tlightbox_additional_height:72\n\t},\n\t_second_column_width:95,\n\t_third_column_width:80\n};\n\n};","module.exports = function(gantt) {\ngantt.skins.skyblue = {\n\tconfig:{\n\t\tgrid_width:350,\n\t\trow_height: 27,\n\t\tscale_height: 27,\n\t\tlink_line_width:1,\n\t\tlink_arrow_size:8,\n\t\tlightbox_additional_height:75\n\t},\n\t_second_column_width:95,\n\t_third_column_width:80\n};\n\n};","function _configure(col, data, force) {\n\tfor (var key in data)\n\t\tif (typeof col[key] == \"undefined\" || force)\n\t\t\tcol[key] = data[key];\n}\n\nfunction _get_skin(force, gantt) {\n\tvar skin = gantt.skin;\n\tif (!skin || force) {\n\t\tvar links = document.getElementsByTagName(\"link\");\n\t\tfor (var i = 0; i < links.length; i++) {\n\t\t\tvar res = links[i].href.match(\"dhtmlxgantt_([a-z\\_]+).css\");\n\t\t\tif (res) {\n\t\t\t\tif (gantt.skins[res[1]] || !skin) {\n\t\t\t\t\tskin = res[1];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tgantt.skin = skin || \"terrace\";\n\tvar skinset = gantt.skins[gantt.skin] || gantt.skins[\"terrace\"];\n\n\t//apply skin related settings\n\t_configure(gantt.config, skinset.config, force);\n\n\tvar config = gantt.getGridColumns();\n\tif (config[1] && !gantt.defined(config[1].width))\n\t\tconfig[1].width = skinset._second_column_width;\n\tif (config[2] && !gantt.defined(config[2].width))\n\t\tconfig[2].width = skinset._third_column_width;\n\t\n\tfor (var i=0; i column.width) ? column.min_width : column.width;\n\t\t\t\tcolumn.width = (column.max_width && column.max_width < column.width) ? column.max_width : column.width;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (skinset.config.task_height)\n\t\tgantt.config.task_height = skinset.config.task_height || \"full\"; \n\n\tif (skinset._lightbox_template)\n\t\tgantt._lightbox_template = skinset._lightbox_template;\n\n\tif (skinset._redefine_lightbox_buttons) {\n\t\tgantt.config.buttons_right = skinset._redefine_lightbox_buttons[\"buttons_right\"];\n\t\tgantt.config.buttons_left = skinset._redefine_lightbox_buttons[\"buttons_left\"];\n\t}\n\n\n\tgantt.resetLightbox();\n}\n\nmodule.exports = function(gantt) {\n\tif(!gantt.resetSkin){\n\t\tgantt.resetSkin = function () {\n\t\t\tthis.skin = \"\";\n\t\t\t_get_skin(true, this);\n\t\t};\n\t\tgantt.skins = {};\n\n\t\tgantt.attachEvent(\"onGanttLayoutReady\", function(){\n\t\t\t_get_skin(false, this);\n\t\t});\n\t}\n};","/*\n reuse results of functions that can be recalculated during rendering\n greatly increases the rendering speed when critical path enabled\n Sample - 94_dev/critical_path.html\n\n */\nmodule.exports = function(gantt){\n\ngantt._cached_functions = {\n\tcache: {},\n\tmode: false,\n\tcritical_path_mode: false,\n\twrap_methods : function(methods, object){\n\t\tif(object._prefetch_originals){\n\t\t\tfor(var i in object._prefetch_originals){\n\t\t\t\tobject[i] = object._prefetch_originals[i];\n\t\t\t}\n\t\t}\n\t\tobject._prefetch_originals = {};\n\t\tfor(var i = 0; i < methods.length; i++)\n\t\t\tthis.prefetch(methods[i], object);\n\n\t},\n\tprefetch : function(methodname, host){\n\t\tvar original = host[methodname];\n\t\tif(original){\n\t\t\tvar optimizer = this;\n\n\t\t\thost._prefetch_originals[methodname] = original;\n\t\t\thost[methodname] = function get_prefetched_value(){\n\n\t\t\t\tvar argumentsArray = new Array(arguments.length);\n\t\t\t\tfor (var i = 0, l = arguments.length; i < l; i++) {\n\t\t\t\t\targumentsArray[i] = arguments[i];\n\t\t\t\t}\n\n\t\t\t\tif(optimizer.active){\n\t\t\t\t\tvar args = optimizer.get_arguments_hash(Array.prototype.slice.call(argumentsArray));\n\t\t\t\t\tif(!optimizer.cache[methodname]){\n\t\t\t\t\t\toptimizer.cache[methodname] = {};\n\t\t\t\t\t}\n\n\t\t\t\t\tvar cached_values = optimizer.cache[methodname];\n\n\t\t\t\t\tif(optimizer.has_cached_value(cached_values, args)){\n\t\t\t\t\t\treturn optimizer.get_cached_value(cached_values, args);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tvar value = original.apply(this, argumentsArray);\n\t\t\t\t\t\toptimizer.cache_value(cached_values, args, value);\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn original.apply(this, argumentsArray);\n\t\t\t};\n\t\t}\n\t\treturn original;\n\t},\n\tcache_value: function(cache, arguments_hash, value){\n\t\tif(this.is_date(value))\n\t\t\tvalue = new Date(value);\n\t\tcache[arguments_hash] = value;\n\t},\n\thas_cached_value: function(cache, arguments_hash){\n\t\treturn cache.hasOwnProperty(arguments_hash);\n\t},\n\tget_cached_value: function(cache, arguments_hash){\n\t\tvar data = cache[arguments_hash];\n\n\t\t//for cached dates - return copy\n\t\tif(this.is_date(data)){\n\t\t\tdata = new Date(data);\n\t\t}\n\t\treturn data;\n\t},\n\tis_date: function(value){\n\t\treturn (value && value.getUTCDate);\n\t},\n\tget_arguments_hash:function(args){\n\t\tvar values = [];\n\t\tfor(var i = 0; i < args.length; i++){\n\t\t\tvalues.push(this.stringify_argument(args[i]));\n\t\t}\n\t\treturn \"(\" + values.join(\";\") + \")\";\n\t},\n\tstringify_argument: function(value){\n\t\t//expecting task or link, or any other data entries, dates and primitive values\n\t\tvar ret = \"\";\n\t\tif(value.id){\n\t\t\tret = value.id;\n\t\t}else if(this.is_date(value)){\n\t\t\tret = value.valueOf();\n\t\t}else{\n\t\t\tret = value;\n\t\t}\n\t\treturn ret + \"\";\n\t},\n\tactivate: function(){\n\t\tthis.clear();\n\t\tthis.active = true;\n\t},\n\tdeactivate: function(){\n\t\tthis.clear();\n\t\tthis.active = false;\n\t},\n\tclear: function(){\n\t\tthis.cache = {};\n\t},\n\n\tsetup: function(gantt){\n\t\tvar override_gantt = [];\n\n\t\tvar gantt_methods = [\n\t\t\t'_isCriticalTask',\n\t\t\t'isCriticalLink',\n\t\t\t'_isProjectEnd',\n\t\t\t'_getProjectEnd',\n\t\t\t'_getSlack'\n\t\t];\n\n\n\n\t\tif(this.mode == 'auto'){\n\t\t\tif(gantt.config.highlight_critical_path){\n\t\t\t\toverride_gantt = gantt_methods;\n\t\t\t}\n\t\t}else if(this.mode === true){\n\t\t\toverride_gantt = gantt_methods;\n\t\t}\n\n\t\tthis.wrap_methods(override_gantt, gantt);\n\n\t},\n\tupdate_if_changed: function(gantt){\n\t\tvar changed = (this.critical_path_mode != gantt.config.highlight_critical_path ||\n\t\t\t\t\t\tthis.mode !== gantt.config.optimize_render);\n\t\tif(changed){\n\t\t\tthis.critical_path_mode = gantt.config.highlight_critical_path;\n\t\t\tthis.mode = gantt.config.optimize_render;\n\t\t\tthis.setup(gantt);\n\t\t}\n\t}\n};\n\nfunction activate(){\n\tgantt._cached_functions.update_if_changed(gantt);\n\tif(!gantt._cached_functions.active){\n\t\tgantt._cached_functions.activate();\n\t}\n\treturn true;\n}\ngantt.attachEvent(\"onBeforeGanttRender\", activate);\ngantt.attachEvent(\"onBeforeDataRender\", activate);\ngantt.attachEvent(\"onBeforeSmartRender\", function(){\n\tactivate();\n});\ngantt.attachEvent(\"onBeforeParse\", activate);\ngantt.attachEvent(\"onDataRender\", function(){\n\tgantt._cached_functions.deactivate();\n});\nvar deactivTimeout = null;\ngantt.attachEvent(\"onSmartRender\", function(){\n\tif(deactivTimeout)\n\t\tclearTimeout(deactivTimeout);\n\tdeactivTimeout = setTimeout(function(){\n\t\tgantt._cached_functions.deactivate();\n\t}, 1000);\n});\n\ngantt.attachEvent(\"onBeforeGanttReady\", function(){\n\tgantt._cached_functions.update_if_changed(gantt);\n\treturn true;\n});\n\n};","module.exports = function(gantt) {\n\n\tgantt.getTaskType = function (type) {\n\t\treturn \"task\";\n\t};\n};","module.exports = function(gantt) {\n\n\tgantt._extend_to_optional = function (lightbox_block) {\n\n\t\tvar duration = lightbox_block;\n\t\tvar optional_time = {\n\t\t\trender: duration.render,\n\t\t\tfocus: duration.focus,\n\t\t\tset_value: function (node, value, task, section) {\n\t\t\t\tvar mapping = gantt._resolve_default_mapping(section);\n\t\t\t\tif (!task[mapping.start_date] || (mapping.start_date == \"start_date\" && this._isAllowedUnscheduledTask(task))) {\n\t\t\t\t\toptional_time.disable(node, section);\n\t\t\t\t\tvar val = {};\n\n\t\t\t\t\tfor (var i in mapping) {\n\t\t\t\t\t\t//take default values from the time control from task start/end dates\n\t\t\t\t\t\tval[mapping[i]] = task[i];\n\t\t\t\t\t}\n\n\t\t\t\t\treturn duration.set_value.call(gantt, node, value, val, section);//set default value\n\t\t\t\t} else {\n\t\t\t\t\toptional_time.enable(node, section);\n\t\t\t\t\treturn duration.set_value.call(gantt, node, value, task, section);\n\t\t\t\t}\n\t\t\t},\n\t\t\tget_value: function (node, task, section) {\n\t\t\t\tif (section.disabled) {\n\t\t\t\t\treturn {start_date: null};\n\t\t\t\t} else {\n\t\t\t\t\treturn duration.get_value.call(gantt, node, task, section);\n\t\t\t\t}\n\t\t\t},\n\t\t\tupdate_block: function (node, section) {\n\t\t\t\tgantt.callEvent(\"onSectionToggle\", [gantt._lightbox_id, section]);\n\t\t\t\tnode.style.display = section.disabled ? \"none\" : \"block\";\n\n\t\t\t\tif (section.button) {\n\t\t\t\t\tvar button = node.previousSibling.querySelector(\".gantt_custom_button_label\"),\n\t\t\t\t\t\tlabels = gantt.locale.labels;\n\n\t\t\t\t\tvar button_text = section.disabled ? labels[section.name + \"_enable_button\"] : labels[section.name + \"_disable_button\"];\n\n\t\t\t\t\tbutton.innerHTML = button_text;\n\t\t\t\t}\n\t\t\t\tgantt.resizeLightbox();\n\t\t\t},\n\t\t\tdisable: function (node, section) {\n\t\t\t\tsection.disabled = true;\n\t\t\t\toptional_time.update_block(node, section);\n\n\t\t\t},\n\t\t\tenable: function (node, section) {\n\t\t\t\tsection.disabled = false;\n\t\t\t\toptional_time.update_block(node, section);\n\t\t\t},\n\t\t\tbutton_click: function (index, el, section, container) {\n\t\t\t\tif (gantt.callEvent(\"onSectionButton\", [gantt._lightbox_id, section]) === false) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar config = gantt._get_typed_lightbox_config()[index];\n\t\t\t\tif (config.disabled) {\n\t\t\t\t\toptional_time.enable(container, config);\n\t\t\t\t} else {\n\t\t\t\t\toptional_time.disable(container, config);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn optional_time;\n\t};\n\n\tgantt.form_blocks.duration_optional = gantt._extend_to_optional(gantt.form_blocks.duration);\n\tgantt.form_blocks.time_optional = gantt._extend_to_optional(gantt.form_blocks.time);\n\n};","var __extends = require(\"../../../utils/extends\");\n\nmodule.exports = function(gantt) {\n\tvar _super = require(\"./select_control\")(gantt);\n\n\tfunction ParentControl() {\n\t\tvar self = _super.apply(this, arguments) || this; \n\n\t\treturn self; \n\t}\n\n\t__extends(ParentControl, _super);\n\n\n\tParentControl.prototype.render = function(sns) {\n\t\treturn _display(sns, false);\n\t};\n\n\tParentControl.prototype.set_value = function(node, value, ev, config) {\n\t\tvar tmpDom = document.createElement(\"div\");\n\t\ttmpDom.innerHTML = _display(config, ev.id);\n\t\tvar newOptions = tmpDom.removeChild(tmpDom.firstChild);\n\t\tnode.onselect = null;\n\t\tnode.parentNode.replaceChild(newOptions, node);\n\n\t\treturn gantt.form_blocks.select.set_value.apply(gantt, [newOptions, value, ev, config]);\n\t};\n\n\tfunction _display(config, item_id) {\n\t\tvar tasks = [],\n\t\t\toptions = [];\n\t\tif (item_id) {\n\t\t\ttasks = gantt.getTaskByTime();\n\t\t\tif (config.allow_root) {\n\t\t\t\ttasks.unshift({id: gantt.config.root_id, text: config.root_label || \"\"});\n\t\t\t}\n\t\t\ttasks = _filter(tasks, config, item_id);\n\t\t\tif (config.sort) {\n\t\t\t\ttasks.sort(config.sort);\n\t\t\t}\n\t\t}\n\t\tvar text = config.template || gantt.templates.task_text;\n\t\tfor (var i = 0; i < tasks.length; i++) {\n\t\t\tvar label = text.apply(gantt, [tasks[i].start_date, tasks[i].end_date, tasks[i]]);\n\t\t\tif (label === undefined) {\n\t\t\t\tlabel = \"\";\n\t\t\t}\n\t\t\toptions.push({\n\t\t\t\tkey: tasks[i].id,\n\t\t\t\tlabel: label\n\t\t\t});\n\t\t}\n\t\tconfig.options = options;\n\t\tconfig.map_to = config.map_to || \"parent\";\n\t\treturn gantt.form_blocks.select.render.apply(this, arguments);\n\t}\n\n\tfunction _filter(options, config, item_id) {\n\t\tvar filter = config.filter || function() {\n\t\t\treturn true;\n\t\t};\n\n\t\toptions = options.slice(0);\n\n\t\tfor (var i = 0; i < options.length; i++) {\n\t\t\tvar task = options[i];\n\t\t\tif (task.id == item_id || gantt.isChildOf(task.id, item_id) || filter(task.id, task) === false) {\n\t\t\t\toptions.splice(i, 1);\n\t\t\t\ti--;\n\t\t\t}\n\t\t}\n\t\treturn options;\n\t}\n\treturn ParentControl;\n};","var __extends = require(\"../../../utils/extends\");\n\nmodule.exports = function(gantt) {\n\tvar _super = require(\"./base_control\")(gantt);\n\n\tfunction DurationControl() {\n\t\tvar self = _super.apply(this, arguments) || this; \n\n\t\treturn self; \n\t}\n\n\t__extends(DurationControl, _super);\n\n\tDurationControl.prototype.render = function(sns) {\n\t\tvar time = \"
\" + gantt.form_blocks.getTimePicker.call(this, sns) + \"
\";\n\t\tvar label = gantt.locale.labels[gantt.config.duration_unit + \"s\"];\n\t\tvar singleDate = sns.single_date ? \" style='display:none'\" : \"\";\n\t\tvar readonly = sns.readonly ? \" disabled='disabled'\" : \"\";\n\t\tvar ariaAttr = gantt._waiAria.lightboxDurationInputAttrString(sns);\n\t\tvar duration = \"
\" +\n\t\t\t\"\" +\n\t\t\t\"\" +\n\t\t\t\" \" + label + \" \" +\n\t\t\t\"
\";\n\t\tvar html = \"
\" + time + \" \" + duration + \"
\";\n\t\treturn html;\n\t};\n\n\tDurationControl.prototype.set_value = function(node, value, ev, config) {\n\t\tvar cfg = config;\n\t\tvar s = node.getElementsByTagName(\"select\");\n\t\tvar inps = node.getElementsByTagName(\"input\");\n\t\tvar duration = inps[1];\n\t\tvar btns = [inps[0], inps[2]];\n\t\tvar endspan = node.getElementsByTagName(\"span\")[0];\n\t\tvar map = config._time_format_order;\n\t\tvar mapping;\n\t\tvar start_date;\n\t\tvar end_date;\n\t\tvar duration_val;\n\n\t\tfunction _calc_date() {\n\t\t\tvar start_date = _getStartDate.call(gantt, node, config);\n\t\t\tvar duration = _getDuration.call(gantt, node, config);\n\t\t\tvar end_date = gantt.calculateEndDate({start_date: start_date, duration: duration, task: ev});\n\n\t\t\tendspan.innerHTML = gantt.templates.task_date(end_date);\n\t\t}\n\n\t\tfunction _change_duration(step) {\n\t\t\tvar value = duration.value;\n\n\t\t\tvalue = parseInt(value, 10);\n\t\t\tif (window.isNaN(value))\n\t\t\t\tvalue = 0;\n\t\t\tvalue += step;\n\t\t\tif (value < 1) value = 1;\n\t\t\tduration.value = value;\n\t\t\t_calc_date();\n\t\t}\n\n\t\tbtns[0].onclick = gantt.bind(function() {\n\t\t\t_change_duration(-1 * gantt.config.duration_step);\n\t\t}, this);\n\t\tbtns[1].onclick = gantt.bind(function() {\n\t\t\t_change_duration(1 * gantt.config.duration_step);\n\t\t}, this);\n\t\ts[0].onchange = _calc_date;\n\t\ts[1].onchange = _calc_date;\n\t\ts[2].onchange = _calc_date;\n\t\tif (s[3]) s[3].onchange = _calc_date;\n\n\t\tduration.onkeydown = gantt.bind(function(e) {\n\t\t\tvar code; \n\n\t\t\te = e || window.event;\n\t\t\tcode = (e.charCode || e.keyCode || e.which);\n\t\t\t\n\t\t\tif (code == gantt.constants.KEY_CODES.DOWN) {\n\t\t\t\t_change_duration(-1 * gantt.config.duration_step);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (code == gantt.constants.KEY_CODES.UP) {\n\t\t\t\t_change_duration(1 * gantt.config.duration_step);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\twindow.setTimeout(_calc_date, 1);\n\t\t}, this);\n\n\t\tduration.onchange = gantt.bind(_calc_date, this);\n\n\t\tmapping = gantt._resolve_default_mapping(config);\n\t\tif (typeof(mapping) === \"string\") mapping = {start_date: mapping};\n\n\t\tstart_date = ev[mapping.start_date] || new Date();\n\t\tend_date = ev[mapping.end_date] || gantt.calculateEndDate({\n\t\t\tstart_date: start_date,\n\t\t\tduration: 1,\n\t\t\ttask: ev\n\t\t});\n\t\tduration_val = Math.round(ev[mapping.duration]) || gantt.calculateDuration({\n\t\t\tstart_date: start_date,\n\t\t\tend_date: end_date,\n\t\t\ttask: ev\n\t\t});\n\n\t\tgantt.form_blocks._fill_lightbox_select(s, 0, start_date, map, cfg);\n\t\tduration.value = duration_val;\n\t\t_calc_date();\n\t};\n\n\tDurationControl.prototype.get_value = function(node, ev, config) {\n\t\tvar startDate = _getStartDate(node, config);\n\t\tvar duration = _getDuration(node, config);\n\t\tvar endDate = gantt.calculateEndDate({start_date: startDate, duration: duration, task: ev});\n\n\t\tif (typeof gantt._resolve_default_mapping(config) == \"string\") {\n\t\t\treturn startDate;\n\t\t}\n\n\t\treturn {\n\t\t\tstart_date: startDate,\n\t\t\tend_date: endDate,\n\t\t\tduration: duration\n\t\t};\n\t};\n\n\tDurationControl.prototype.focus = function(node) {\n\t\tgantt._focus(node.getElementsByTagName(\"select\")[0]);\n\t};\n\n\n\tfunction _getStartDate(node, config) {\n\t\tvar s = node.getElementsByTagName(\"select\");\n\t\tvar map = config._time_format_order;\n\t\tvar hours = 0;\n\t\tvar minutes = 0;\n\n\t\tif (gantt.defined(map[3])) {\n\t\t\tvar input = s[map[3]];\n\t\t\tvar time = parseInt(input.value, 10);\n\t\t\tif (isNaN(time) && input.hasAttribute(\"data-value\")) {\n\t\t\t\ttime = parseInt(input.getAttribute(\"data-value\"), 10);\n\t\t\t}\n\n\t\t\thours = Math.floor(time / 60);\n\t\t\tminutes = time % 60;\n\t\t}\n\t\treturn new Date(s[map[2]].value, s[map[1]].value, s[map[0]].value, hours, minutes);\n\t}\n\n\tfunction _getDuration(node) {\n\t\tvar duration = node.getElementsByTagName(\"input\")[1];\n\n\t\tduration = parseInt(duration.value, 10);\n\t\tif (!duration || window.isNaN(duration)) duration = 1;\n\t\tif (duration < 0) duration *= -1;\n\t\treturn duration;\n\t}\n\n\n\treturn DurationControl; \n};","var __extends = require(\"../../../utils/extends\");\n\nmodule.exports = function(gantt) {\n\tvar _super = require(\"./base_control\")(gantt);\n\n\tfunction RadioControl() {\n\t\tvar self = _super.apply(this, arguments) || this;\n\n\t\treturn self; \n\t}\n\n\t__extends(RadioControl, _super);\n\n\tRadioControl.prototype.render = function(sns) {\n\t\tvar height = (sns.height || \"23\") + \"px\";\n\t\tvar html = \"
\";\n\n\t\tif (sns.options && sns.options.length) {\n\t\t\tfor (var i = 0; i < sns.options.length; i++) {\n\t\t\t\thtml += \"\";\n\t\t\t}\n\t\t}\n\n\t\thtml += \"
\";\n\t\treturn html;\n\t};\n\n\tRadioControl.prototype.set_value = function(node, value, ev, sns) {\n\t\tvar radio;\n\n\t\tif (!sns.options || !sns.options.length) return;\n\n\t\tradio = node.querySelector(\"input[type=radio][value='\" + value + \"']\") ||\n\t\t\t\tnode.querySelector(\"input[type=radio][value='\" + sns.default_value + \"']\");\n\n\t\tif (!radio) return;\n\n\t\tif (!node._dhx_onchange && sns.onchange) {\n\t\t\tnode.onchange = sns.onchange;\n\t\t\tnode._dhx_onchange = true;\n\t\t}\n\n\t\tradio.checked = true;\n\t};\n\n\tRadioControl.prototype.get_value = function(node, ev) {\n\t\tvar result = node.querySelector(\"input[type=radio]:checked\");\n\n\t\treturn result ? result.value : \"\";\n\t};\n\n\tRadioControl.prototype.focus = function(node) {\n\t\tgantt._focus(node.querySelector(\"input[type=radio]\"));\n\t};\n\n\treturn RadioControl;\n};","var helpers = require(\"../../../utils/helpers\");\nvar __extends = require(\"../../../utils/extends\");\n\nmodule.exports = function(gantt) {\n\tvar _super = require(\"./base_control\")(gantt);\n\n\tfunction CheckboxControl() {\n\t\tvar self = _super.apply(this, arguments) || this;\n\n\t\treturn self; \n\t}\n\n\t__extends(CheckboxControl, _super);\n\n\tCheckboxControl.prototype.render = function(sns) {\n\t\tvar height = (sns.height || \"23\") + \"px\";\n\t\tvar html = \"
\";\n\n\t\tif (sns.options && sns.options.length) {\n\t\t\tfor (var i = 0; i < sns.options.length; i++) {\n\t\t\t\thtml += \"\";\n\t\t\t}\n\t\t}\n\t\thtml += \"
\";\n\t\treturn html;\n\t};\n\n\tCheckboxControl.prototype.set_value = function(node, value, ev, sns) {\n\t\tvar checkboxes = Array.prototype.slice.call(node.querySelectorAll(\"input[type=checkbox]\"));\n\n\t\tif (!node._dhx_onchange && sns.onchange) {\n\t\t\tnode.onchange = sns.onchange;\n\t\t\tnode._dhx_onchange = true;\n\t\t}\n\n\t\thelpers.forEach(checkboxes, function(entry) {\n\t\t\tentry.checked = value ? value.indexOf(entry.value) >= 0 : false;\n\t\t});\n\t};\n\n\tCheckboxControl.prototype.get_value = function(node) {\n\t\treturn helpers.arrayMap(Array.prototype.slice.call(node.querySelectorAll(\"input[type=checkbox]:checked\")), function(entry) {\n\t\t\treturn entry.value;\n\t\t});\n\t};\n\n\tCheckboxControl.prototype.focus = function(node) {\n\t\tgantt._focus(node.querySelector(\"input[type=checkbox]\"));\n\t};\n\n\treturn CheckboxControl;\n};","var __extends = require(\"../../../utils/extends\");\n\nmodule.exports = function(gantt) {\n\tvar _super = require(\"./base_control\")(gantt);\n\n\tfunction TimeControl() {\n\t\tvar self = _super.apply(this, arguments) || this;\n\n\t\treturn self; \n\t}\n\n\t__extends(TimeControl, _super);\n\n\n\tTimeControl.prototype.render = function(sns) {\n\t\tvar time = gantt.form_blocks.getTimePicker.call(this, sns);\n\t\tvar html = \"
\";\n\t\thtml += time;\n\n\t\tif (sns.single_date) {\n\t\t\ttime = gantt.form_blocks.getTimePicker.call(this, sns, true);\n\t\t\thtml += \"\";\n\t\t} else {\n\t\t\thtml += \"  –  \";\n\t\t}\n\n\t\thtml += time;\n\t\thtml += \"
\";\n\t\treturn html;\n\t};\n\n\tTimeControl.prototype.set_value = function(node, value, ev, config) {\n\t\tvar cfg = config;\n\t\tvar s = node.getElementsByTagName(\"select\");\n\t\tvar map = config._time_format_order;\n\n\t\tif (cfg.auto_end_date) {\n\t\t\tvar _update_lightbox_select = function() {\n\t\t\t\tstart_date = new Date(s[map[2]].value, s[map[1]].value, s[map[0]].value, 0, 0);\n\t\t\t\tend_date = gantt.calculateEndDate({start_date: start_date, duration: 1, task: ev});\n\t\t\t\tgantt.form_blocks._fill_lightbox_select(s, map.size, end_date, map, cfg);\n\t\t\t};\n\t\t\tfor (var i = 0; i < 4; i++) {\n\t\t\t\ts[i].onchange = _update_lightbox_select;\n\t\t\t}\n\t\t}\n\n\t\tvar mapping = gantt._resolve_default_mapping(config);\n\n\t\tif (typeof(mapping) === \"string\") mapping = {start_date: mapping};\n\n\t\tvar start_date = ev[mapping.start_date] || new Date();\n\t\tvar end_date = ev[mapping.end_date] || gantt.calculateEndDate({\n\t\t\tstart_date: start_date,\n\t\t\tduration: 1,\n\t\t\ttask: ev\n\t\t});\n\n\t\tgantt.form_blocks._fill_lightbox_select(s, 0, start_date, map, cfg);\n\t\tgantt.form_blocks._fill_lightbox_select(s, map.size, end_date, map, cfg);\n\t};\n\n\tTimeControl.prototype.get_value = function(node, ev, config) {\n\t\tvar selects = node.getElementsByTagName(\"select\");\n\t\tvar map = config._time_format_order;\n\t\tvar needSetTime = gantt.defined(map[3]);\n\t\tvar startDate;\n\n\t\tfunction _getEndDate(selects, map, needSetTime, startDate) {\n\t\t\tvar endDate = _getDate(selects, map, needSetTime, map.size);\n\n\t\t\tif (endDate <= startDate) {\n\t\t\t\treturn gantt.date.add(startDate, gantt._get_timepicker_step(), \"minute\");\n\t\t\t}\n\t\t\treturn endDate;\n\t\t}\n\n\t\tfunction _getDate(selects, map, needSetTime, mapOffset) {\n\t\t\tvar time;\n\t\t\tvar hours = 0;\n\t\t\tvar minutes = 0;\n\n\t\t\tmapOffset = mapOffset || 0;\n\n\t\t\tif (needSetTime) {\n\t\t\t\ttime = parseInt(selects[map[3] + mapOffset].value, 10);\n\t\t\t\thours = Math.floor(time / 60);\n\t\t\t\tminutes = time % 60;\n\t\t\t}\n\t\t\treturn new Date(selects[map[2] + mapOffset].value, selects[map[1] + mapOffset].value, selects[map[0] + mapOffset].value, hours, minutes);\n\t\t}\n\n\t\tstartDate = _getDate(selects, map, needSetTime);\n\n\t\tif (typeof gantt._resolve_default_mapping(config) === \"string\") {\n\t\t\treturn startDate;\n\t\t}\n\n\t\treturn {\n\t\t\tstart_date: startDate,\n\t\t\tend_date: _getEndDate(selects, map, needSetTime, startDate)\n\t\t};\n\t};\n\n\tTimeControl.prototype.focus = function(node) {\n\t\tgantt._focus(node.getElementsByTagName(\"select\")[0]);\n\t};\n\n\treturn TimeControl;\n};","var __extends = require(\"../../../utils/extends\");\n\nmodule.exports = function(gantt) {\n\tvar _super = require(\"./base_control\")(gantt);\n\n\tfunction TextareaControl() {\n\t\tvar self = _super.apply(this, arguments) || this;\n\n\t\treturn self; \n\t}\n\n\t__extends(TextareaControl, _super);\n\n\tTextareaControl.prototype.render = function(sns) {\n\t\tvar height = (sns.height || \"130\") + \"px\";\n\t\treturn \"
\";\n\t};\n\n\tTextareaControl.prototype.set_value = function(node, value) {\n\t\tgantt.form_blocks.textarea._get_input(node).value = value || \"\";\n\t};\n\n\tTextareaControl.prototype.get_value = function(node) {\n\t\treturn gantt.form_blocks.textarea._get_input(node).value;\n\t};\n\n\tTextareaControl.prototype.focus = function(node) {\n\t\tvar a = gantt.form_blocks.textarea._get_input(node);\n\t\tgantt._focus(a, true);\n\t};\n\n\tTextareaControl.prototype._get_input = function(node) {\n\t\treturn node.querySelector(\"textarea\");\n\t};\n\n\treturn TextareaControl;\n};","var __extends = require(\"../../../utils/extends\");\n\nmodule.exports = function(gantt) {\n\tvar _super = require(\"./base_control\")(gantt);\n\n\tfunction TemplateControl() {\n\t\tvar self = _super.apply(this, arguments) || this; \n\t\treturn self; \n\t}\n\n\t__extends(TemplateControl, _super);\n\n\n\tTemplateControl.prototype.render = function(sns) {\n\t\tvar height = (sns.height || \"30\") + \"px\";\n\t\treturn \"
\";\n\t};\n\n\tTemplateControl.prototype.set_value = function(node, value) {\n\t\tnode.innerHTML = value || \"\";\n\t};\n\n\tTemplateControl.prototype.get_value = function(node) {\n\t\treturn node.innerHTML || \"\";\n\t};\n\n\tTemplateControl.prototype.focus = function() {};\n\n\treturn TemplateControl;\n};","module.exports = function(gantt) {\n\tvar domHelpers = require(\"../../utils/dom_helpers\");\n\tvar helpers = require(\"../../utils/helpers\");\n\tvar TemplateControl = require(\"./controls/template_control\")(gantt);\n\tvar TextareaControl = require(\"./controls/textarea_control\")(gantt);\n\tvar TimeControl = require(\"./controls/time_control\")(gantt);\n\tvar SelectControl = require(\"./controls/select_control\")(gantt);\n\tvar CheckboxControl = require(\"./controls/checkbox_control\")(gantt);\n\tvar RadioControl = require(\"./controls/radio_control\")(gantt);\n\tvar DurationControl = require(\"./controls/duration_control\")(gantt);\n\tvar ParentControl = require(\"./controls/parent_control\")(gantt);\n\n\tgantt._lightbox_methods = {};\n\tgantt._lightbox_template = \"
 
\";\n\n\n\t//TODO: gantt._lightbox_id is changed from data.js and accessed from autoscheduling, check if it can be removed from gantt object\n\tvar state = gantt.$services.getService(\"state\");\n\tstate.registerProvider(\"lightbox\", function(){\n\t\treturn {\n\t\t\tlightbox: gantt._lightbox_id\n\t\t};\n\t});\n\n\tgantt.showLightbox = function(id) {\n\t\tif (!id || gantt.isReadonly(this.getTask(id))) return;\n\t\tif (!this.callEvent(\"onBeforeLightbox\", [id])) return;\n\n\t\tvar task = this.getTask(id);\n\n\t\tvar box = this.getLightbox(this.getTaskType(task.type));\n\t\tthis._center_lightbox(box);\n\t\tthis.showCover();\n\t\tthis._fill_lightbox(id, box);\n\n\t\tthis._waiAria.lightboxVisibleAttr(box);\n\n\t\tthis.callEvent(\"onLightbox\", [id]);\n\t};\n\n\tfunction _is_chart_visible(gantt) {\n\t\tvar timeline = gantt.$ui.getView(\"timeline\");\n\t\tif(timeline && timeline.isVisible()){\n\t\t\treturn true;\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tgantt._get_timepicker_step = function() {\n\t\tif (this.config.round_dnd_dates) {\n\t\t\tvar step;\n\t\t\tif (_is_chart_visible(this)) {\n\t\t\t\tvar scale = gantt.getScale();\n\t\t\t\tstep = (helpers.getSecondsInUnit(scale.unit) * scale.step) / 60;//timepicker step is measured in minutes\n\t\t\t}\n\n\t\t\tif(!step || step >= 60 * 24){\n\t\t\t\tstep = this.config.time_step;\n\t\t\t}\n\t\t\treturn step;\n\t\t}\n\t\treturn this.config.time_step;\n\t};\n\tgantt.getLabel = function(property, key) {\n\t\tvar sections = this._get_typed_lightbox_config();\n\t\tfor (var i = 0; i < sections.length; i++) {\n\t\t\tif (sections[i].map_to == property) {\n\t\t\t\tvar options = sections[i].options;\n\t\t\t\tfor (var j = 0; j < options.length; j++) {\n\t\t\t\t\tif (options[j].key == key) {\n\t\t\t\t\t\treturn options[j].label;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn \"\";\n\t};\n\n\tgantt.updateCollection = function(list_name, collection) {\n\t\tcollection = collection.slice(0);\n\t\tvar list = gantt.serverList(list_name);\n\t\tif (!list) return false;\n\t\tlist.splice(0, list.length);\n\t\tlist.push.apply(list, collection || []);\n\t\tgantt.resetLightbox();\n\t};\n\tgantt.getLightboxType = function() {\n\t\treturn this.getTaskType(this._lightbox_type);\n\t};\n\tgantt.getLightbox = function(type) {\n\t\tvar lightboxDiv;\n\t\tvar fullWidth;\n\t\tvar html;\n\t\tvar sns;\n\t\tvar ds;\n\t\tvar classNames = \"\";\n\n\t\tif (type === undefined)\n\t\t\ttype = this.getLightboxType();\n\n\t\tif (!this._lightbox || this.getLightboxType() != this.getTaskType(type)) {\n\t\t\tthis._lightbox_type = this.getTaskType(type);\n\t\t\tlightboxDiv = document.createElement(\"div\");\n\t\t\tclassNames = \"gantt_cal_light\";\n\t\t\tfullWidth = this._is_lightbox_timepicker();\n\n\t\t\tif (gantt.config.wide_form || fullWidth)\n\t\t\t\tclassNames += \" gantt_cal_light_wide\";\n\n\t\t\tif (fullWidth) {\n\t\t\t\tgantt.config.wide_form = true;\n\t\t\t\tclassNames += \" gantt_cal_light_full\";\n\t\t\t}\n\n\t\t\tlightboxDiv.className = classNames;\n\n\t\t\tlightboxDiv.style.visibility = \"hidden\";\n\t\t\thtml = this._lightbox_template;\n\n\t\t\thtml += getHtmlButtons(this.config.buttons_left);\n\t\t\thtml += getHtmlButtons(this.config.buttons_right, true);\n\n\t\t\tlightboxDiv.innerHTML = html;\n\n\t\t\tgantt._waiAria.lightboxAttr(lightboxDiv);\n\n\t\t\tif (gantt.config.drag_lightbox) {\n\t\t\t\tlightboxDiv.firstChild.onmousedown = gantt._ready_to_dnd;\n\t\t\t\tlightboxDiv.firstChild.onselectstart = function() {\n\t\t\t\t\treturn false;\n\t\t\t\t};\n\t\t\t\tlightboxDiv.firstChild.style.cursor = \"pointer\";\n\t\t\t\tgantt._init_dnd_events();\n\t\t\t}\n\n\t\t\tdocument.body.insertBefore(lightboxDiv, document.body.firstChild);\n\t\t\tthis._lightbox = lightboxDiv;\n\n\t\t\tsns = this._get_typed_lightbox_config(type);\n\t\t\thtml = this._render_sections(sns);\n\n\t\t\tds = lightboxDiv.querySelector(\"div.gantt_cal_larea\");\n\t\t\tds.innerHTML = html;\n\n\t\t\tbindLabelsToInputs(sns);\n\n\t\t\t//sizes\n\t\t\tthis.resizeLightbox();\n\n\t\t\tthis._init_lightbox_events(this);\n\t\t\tlightboxDiv.style.display = \"none\";\n\t\t\tlightboxDiv.style.visibility = \"visible\";\n\t\t}\n\t\treturn this._lightbox;\n\t};\n\n\tgantt._render_sections = function(sns) {\n\t\tvar html = \"\";\n\t\tfor (var i = 0; i < sns.length; i++) {\n\t\t\tvar block = this.form_blocks[sns[i].type];\n\t\t\tif (!block) continue; //ignore incorrect blocks\n\t\t\tsns[i].id = \"area_\" + this.uid();\n\n\t\t\tvar display = sns[i].hidden ? \" style='display:none'\" : \"\";\n\t\t\tvar button = \"\";\n\t\t\tif (sns[i].button) {\n\t\t\t\tbutton = \"
\" + this.locale.labels[\"button_\" + sns[i].button] + \"
\";\n\t\t\t}\n\t\t\tif (this.config.wide_form) {\n\t\t\t\thtml += \"
\";\n\t\t\t}\n\t\t\thtml += \"
\" + block.render.call(this, sns[i]);\n\t\t\thtml += \"
\";\n\t\t}\n\t\treturn html;\n\t};\n\n\n\tgantt.resizeLightbox = function() {\n\t\tif (!this._lightbox) return;\n\n\t\tvar con = this._lightbox.childNodes[1];\n\t\tcon.style.height = \"0px\";\n\t\tcon.style.height = con.scrollHeight + \"px\";\n\t\tthis._lightbox.style.height = con.scrollHeight + this.config.lightbox_additional_height + \"px\";\n\t\tcon.style.height = con.scrollHeight + \"px\"; //it is incredible , how ugly IE can be\n\t};\n\n\tgantt._center_lightbox = function(box) {\n\t\tif (box) {\n\t\t\tbox.style.display = \"block\";\n\n\t\t\tvar scroll_top = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;\n\t\t\tvar scroll_left = window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft;\n\n\t\t\tvar view_height = window.innerHeight || document.documentElement.clientHeight;\n\n\t\t\tif (scroll_top) // if vertical scroll on window\n\t\t\t\tbox.style.top = Math.round(scroll_top + Math.max((view_height - box.offsetHeight) / 2, 0)) + \"px\";\n\t\t\telse // vertical scroll on body\n\t\t\t\tbox.style.top = Math.round(Math.max(((view_height - box.offsetHeight) / 2), 0) + 9) + \"px\"; // +9 for compatibility with auto tests\n\n\t\t\t// not quite accurate but used for compatibility reasons\n\t\t\tif (document.documentElement.scrollWidth > document.body.offsetWidth) // if horizontal scroll on the window\n\t\t\t\tbox.style.left = Math.round(scroll_left + (document.body.offsetWidth - box.offsetWidth) / 2) + \"px\";\n\t\t\telse // horizontal scroll on the body\n\t\t\t\tbox.style.left = Math.round((document.body.offsetWidth - box.offsetWidth) / 2) + \"px\";\n\t\t}\n\t};\n\tgantt.showCover = function() {\n\t\tif (this._cover) return;\n\n\t\tthis._cover = document.createElement(\"DIV\");\n\t\tthis._cover.className = \"gantt_cal_cover\";\n\t\tvar _document_height = ((document.height !== undefined) ? document.height : document.body.offsetHeight);\n\t\tvar _scroll_height = ((document.documentElement) ? document.documentElement.scrollHeight : 0);\n\t\tthis._cover.style.height = Math.max(_document_height, _scroll_height) + \"px\";\n\t\tdocument.body.appendChild(this._cover);\n\t};\n\n\n\tgantt._init_lightbox_events = function() {\n\t\tgantt.lightbox_events = {};\n\n\n\t\tgantt.lightbox_events.gantt_save_btn = function() {\n\t\t\tgantt._save_lightbox();\n\t\t};\n\n\n\t\tgantt.lightbox_events.gantt_delete_btn = function() {\n\t\t\tif (!gantt.callEvent(\"onLightboxDelete\", [gantt._lightbox_id]))\n\t\t\t\treturn;\n\n\t\t\tif (gantt.isTaskExists(gantt._lightbox_id)) {\n\t\t\t\tgantt.$click.buttons[\"delete\"](gantt._lightbox_id);\n\t\t\t} else {\n\t\t\t\tgantt.hideLightbox();\n\t\t\t}\n\n\t\t};\n\n\n\t\tgantt.lightbox_events.gantt_cancel_btn = function() {\n\t\t\tgantt._cancel_lightbox();\n\t\t};\n\n\n\t\tgantt.lightbox_events[\"default\"] = function(e, src) {\n\t\t\tif (src.getAttribute(\"data-dhx-button\")) {\n\t\t\t\tgantt.callEvent(\"onLightboxButton\", [src.className, src, e]);\n\t\t\t} else {\n\t\t\t\tvar index, block, sec;\n\n\t\t\t\tvar className = domHelpers.getClassName(src);\n\t\t\t\tif (className.indexOf(\"gantt_custom_button\") != -1) {\n\t\t\t\t\tif (className.indexOf(\"gantt_custom_button_\") != -1) {\n\t\t\t\t\t\tindex = src.parentNode.getAttribute(\"data-index\");\n\t\t\t\t\t\tsec = src;\n\t\t\t\t\t\twhile (sec && domHelpers.getClassName(sec).indexOf(\"gantt_cal_lsection\") == -1) {\n\t\t\t\t\t\t\tsec = sec.parentNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tindex = src.getAttribute(\"data-index\");\n\t\t\t\t\t\tsec = src.parentNode;\n\t\t\t\t\t\tsrc = src.firstChild;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar sections = gantt._get_typed_lightbox_config();\n\n\t\t\t\tif (index) {\n\t\t\t\t\tindex = index * 1;\n\t\t\t\t\tblock = gantt.form_blocks[sections[index * 1].type];\n\t\t\t\t\tblock.button_click(index, src, sec, sec.nextSibling);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tthis.event(gantt.getLightbox(), \"click\", function(e) {\n\t\t\te = e || window.event;\n\t\t\tvar src = e.target ? e.target : e.srcElement;\n\n\t\t\tvar className = domHelpers.getClassName(src);\n\t\t\tif (!className) {\n\t\t\t\tsrc = src.previousSibling;\n\t\t\t\tclassName = domHelpers.getClassName(src);\n\t\t\t}\n\t\t\tif (src && className && className.indexOf(\"gantt_btn_set\") === 0) {\n\t\t\t\tsrc = src.firstChild;\n\t\t\t\tclassName = domHelpers.getClassName(src);\n\t\t\t}\n\t\t\tif (src && className) {\n\t\t\t\tvar func = gantt.defined(gantt.lightbox_events[src.className]) ? gantt.lightbox_events[src.className] : gantt.lightbox_events[\"default\"];\n\t\t\t\treturn func(e, src);\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\n\t\tgantt.getLightbox().onkeydown = function(e) {\n\t\t\tvar event = e || window.event;\n\t\t\tvar target = e.target || e.srcElement;\n\t\t\tvar buttonTarget = domHelpers.getClassName(target).indexOf(\"gantt_btn_set\") > -1;\n\n\t\t\tswitch ((e || event).keyCode) {\n\t\t\tcase gantt.constants.KEY_CODES.SPACE: {\n\t\t\t\tif ((e || event).shiftKey) return;\n\t\t\t\tif (buttonTarget && target.click) {\n\t\t\t\t\ttarget.click();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase gantt.keys.edit_save:\n\t\t\t\tif ((e || event).shiftKey) return;\n\t\t\t\tif (buttonTarget && target.click) {\n\t\t\t\t\ttarget.click();\n\t\t\t\t} else {\n\t\t\t\t\tgantt._save_lightbox();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase gantt.keys.edit_cancel:\n\t\t\t\tgantt._cancel_lightbox();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t\t}\n\t\t};\n\t};\n\n\tgantt._cancel_lightbox = function() {\n\t\tvar task = this.getLightboxValues();\n\t\tthis.callEvent(\"onLightboxCancel\", [this._lightbox_id, task.$new]);\n\t\tif (gantt.isTaskExists(task.id) && task.$new) {\n\t\t\tthis.silent(function(){\n\t\t\t\tgantt.$data.tasksStore.removeItem(task.id);\n\t\t\t\tgantt._update_flags(task.id, null);\n\t\t\t});\n\t\t}\n\n\t\tthis.refreshData();\n\t\tthis.hideLightbox();\n\t};\n\n\tgantt._save_lightbox = function() {\n\t\tvar task = this.getLightboxValues();\n\t\tif (!this.callEvent(\"onLightboxSave\", [this._lightbox_id, task, !!task.$new]))\n\t\t\treturn;\n\n\t\tif (task.$new) {\n\t\t\tdelete task.$new;\n\t\t\tthis.addTask(task);\n\t\t}else if(this.isTaskExists(task.id)){\n\t\t\tthis.mixin(this.getTask(task.id), task, true);\n\t\t\tthis.refreshTask(task.id);\n\t\t\tthis.updateTask(task.id);\n\t\t}\n\t\tthis.refreshData();\n\n\t\t// TODO: do we need any blockable events here to prevent closing lightbox?\n\t\tthis.hideLightbox();\n\t};\n\n\tgantt._resolve_default_mapping = function(section) {\n\t\tvar mapping = section.map_to;\n\t\tvar time_controls = {\"time\": true, \"time_optional\": true, \"duration\": true, \"duration_optional\": true};\n\t\tif (time_controls[section.type]) {\n\t\t\tif (section.map_to == \"auto\") {\n\t\t\t\tmapping = {start_date: \"start_date\", end_date: \"end_date\", duration: \"duration\"};\n\t\t\t} else if (typeof(section.map_to) === \"string\") {\n\t\t\t\tmapping = {start_date: section.map_to};\n\t\t\t}\n\t\t}\n\n\t\treturn mapping;\n\t};\n\n\tgantt.getLightboxValues = function() {\n\t\tvar task = {};\n\n\t\tif (gantt.isTaskExists(this._lightbox_id)) {\n\t\t\ttask = this.mixin({}, this.getTask(this._lightbox_id));\n\t\t}\n\n\t\tvar sns = this._get_typed_lightbox_config();\n\t\tfor (var i = 0; i < sns.length; i++) {\n\t\t\tvar node = document.getElementById(sns[i].id);\n\t\t\tnode = (node ? node.nextSibling : node);\n\t\t\tvar block = this.form_blocks[sns[i].type];\n\t\t\tif (!block) continue;\n\t\t\tvar res = block.get_value.call(this, node, task, sns[i]);\n\t\t\tvar map_to = gantt._resolve_default_mapping(sns[i]);\n\t\t\tif (typeof map_to == \"string\" && map_to != \"auto\") {\n\t\t\t\ttask[map_to] = res;\n\t\t\t} else if (typeof map_to == \"object\") {\n\t\t\t\tfor (var property in map_to) {\n\t\t\t\t\tif (map_to[property])\n\t\t\t\t\t\ttask[map_to[property]] = res[property];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn task;\n\t};\n\n\n\tgantt.hideLightbox = function() {\n\t\tvar box = this.getLightbox();\n\t\tif (box) box.style.display = \"none\";\n\n\t\tthis._waiAria.lightboxHiddenAttr(box);\n\t\tthis._lightbox_id = null;\n\n\t\tthis.hideCover();\n\t\tthis.callEvent(\"onAfterLightbox\", []);\n\t};\n\tgantt.hideCover = function() {\n\t\tif (this._cover)\n\t\t\tthis._cover.parentNode.removeChild(this._cover);\n\t\tthis._cover = null;\n\t};\n\n\tgantt.resetLightbox = function() {\n\t\tif (gantt._lightbox && !gantt._custom_lightbox)\n\t\t\tgantt._lightbox.parentNode.removeChild(gantt._lightbox);\n\t\tgantt._lightbox = null;\n\t};\n\tgantt._set_lightbox_values = function(data, box) {\n\t\tvar task = data;\n\t\tvar s = box.getElementsByTagName(\"span\");\n\t\tvar lightboxHeader = [];\n\t\tif (gantt.templates.lightbox_header) {\n\t\t\tlightboxHeader.push(\"\");\n\t\t\tlightboxHeader.push(gantt.templates.lightbox_header(task.start_date, task.end_date, task));\n\t\t\ts[1].innerHTML = \"\";\n\t\t\ts[2].innerHTML = gantt.templates.lightbox_header(task.start_date, task.end_date, task);\n\t\t} else {\n\t\t\tlightboxHeader.push(this.templates.task_time(task.start_date, task.end_date, task));\n\t\t\tlightboxHeader.push((this.templates.task_text(task.start_date, task.end_date, task) || \"\").substr(0, 70)); //IE6 fix\n\t\t\ts[1].innerHTML = this.templates.task_time(task.start_date, task.end_date, task);\n\t\t\ts[2].innerHTML = (this.templates.task_text(task.start_date, task.end_date, task) || \"\").substr(0, 70); //IE6 fix\n\t\t}\n\t\ts[1].innerHTML = lightboxHeader[0];\n\t\ts[2].innerHTML = lightboxHeader[1];\n\n\t\tgantt._waiAria.lightboxHeader(box, lightboxHeader.join(\" \"));\n\n\t\tvar sns = this._get_typed_lightbox_config(this.getLightboxType());\n\t\tfor (var i = 0; i < sns.length; i++) {\n\t\t\tvar section = sns[i];\n\n\t\t\tif (!this.form_blocks[section.type]) {\n\t\t\t\tcontinue;//skip incorrect sections, same check is done during rendering\n\t\t\t}\n\n\n\t\t\tvar node = document.getElementById(section.id).nextSibling;\n\t\t\tvar block = this.form_blocks[section.type];\n\t\t\tvar map_to = gantt._resolve_default_mapping(sns[i]);\n\t\t\tvar value = this.defined(task[map_to]) ? task[map_to] : section.default_value;\n\t\t\tblock.set_value.call(gantt, node, value, task, section);\n\n\t\t\tif (section.focus)\n\t\t\t\tblock.focus.call(gantt, node);\n\t\t}\n\t\tif (data.id)\n\t\t\tgantt._lightbox_id = data.id;\n\t};\n\tgantt._fill_lightbox = function(id, box) {\n\t\tvar task = this.getTask(id);\n\t\tthis._set_lightbox_values(task, box);\n\t};\n\n\n\tgantt.getLightboxSection = function(name) {\n\t\tvar config = this._get_typed_lightbox_config();\n\t\tvar i = 0;\n\t\tfor (i; i < config.length; i++)\n\t\t\tif (config[i].name == name)\n\t\t\t\tbreak;\n\t\tvar section = config[i];\n\t\tif (!section)\n\t\t\treturn null;\n\n\t\tif (!this._lightbox)\n\t\t\tthis.getLightbox();\n\t\tvar header = document.getElementById(section.id);\n\t\tvar node = header.nextSibling;\n\n\t\tvar result = {\n\t\t\tsection: section,\n\t\t\theader: header,\n\t\t\tnode: node,\n\t\t\tgetValue: function(ev) {\n\t\t\t\treturn gantt.form_blocks[section.type].get_value.call(gantt, node, (ev || {}), section);\n\t\t\t},\n\t\t\tsetValue: function(value, ev) {\n\t\t\t\treturn gantt.form_blocks[section.type].set_value.call(gantt, node, value, (ev || {}), section);\n\t\t\t}\n\t\t};\n\n\t\tvar handler = this._lightbox_methods[\"get_\" + section.type + \"_control\"];\n\t\treturn handler ? handler(result) : result;\n\t};\n\n\tgantt._lightbox_methods.get_template_control = function(result) {\n\t\tresult.control = result.node;\n\t\treturn result;\n\t};\n\tgantt._lightbox_methods.get_select_control = function(result) {\n\t\tresult.control = result.node.getElementsByTagName(\"select\")[0];\n\t\treturn result;\n\t};\n\tgantt._lightbox_methods.get_textarea_control = function(result) {\n\t\tresult.control = result.node.getElementsByTagName(\"textarea\")[0];\n\t\treturn result;\n\t};\n\tgantt._lightbox_methods.get_time_control = function(result) {\n\t\tresult.control = result.node.getElementsByTagName(\"select\"); // array\n\t\treturn result;\n\t};\n\n\n\tgantt._init_dnd_events = function() {\n\t\tthis.event(document.body, \"mousemove\", gantt._move_while_dnd);\n\t\tthis.event(document.body, \"mouseup\", gantt._finish_dnd);\n\t\tgantt._init_dnd_events = function() {\n\t\t};\n\t};\n\tgantt._move_while_dnd = function(e) {\n\t\tif (gantt._dnd_start_lb) {\n\t\t\tif (!document.gantt_unselectable) {\n\t\t\t\tdocument.body.className += \" gantt_unselectable\";\n\t\t\t\tdocument.gantt_unselectable = true;\n\t\t\t}\n\t\t\tvar lb = gantt.getLightbox();\n\t\t\tvar now = (e && e.target) ? [e.pageX, e.pageY] : [event.clientX, event.clientY];\n\t\t\tlb.style.top = gantt._lb_start[1] + now[1] - gantt._dnd_start_lb[1] + \"px\";\n\t\t\tlb.style.left = gantt._lb_start[0] + now[0] - gantt._dnd_start_lb[0] + \"px\";\n\t\t}\n\t};\n\tgantt._ready_to_dnd = function(e) {\n\t\tvar lb = gantt.getLightbox();\n\t\tgantt._lb_start = [parseInt(lb.style.left, 10), parseInt(lb.style.top, 10)];\n\t\tgantt._dnd_start_lb = (e && e.target) ? [e.pageX, e.pageY] : [event.clientX, event.clientY];\n\t};\n\tgantt._finish_dnd = function() {\n\t\tif (gantt._lb_start) {\n\t\t\tgantt._lb_start = gantt._dnd_start_lb = false;\n\t\t\tdocument.body.className = document.body.className.replace(\" gantt_unselectable\", \"\");\n\t\t\tdocument.gantt_unselectable = false;\n\t\t}\n\t};\n\n\n\tgantt._focus = function(node, select) {\n\t\tif (node && node.focus) {\n\t\t\tif (gantt.config.touch) {\n\t\t\t\t//do not focus editor, to prevent auto-zoom\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\tif (select && node.select) node.select();\n\t\t\t\t\tnode.focus();\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// silent errors\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\n\tgantt.form_blocks = {\n\t\tgetTimePicker: function(sns, hidden) {\n\t\t\tvar html = \"\";\n\t\t\tvar cfg = this.config;\n\t\t\tvar i;\n\t\t\tvar options;\n\t\t\tvar ariaAttrs;\n\t\t\tvar readonly;\n\t\t\tvar display;\n\t\t\tvar settings = {\n\t\t\t\tfirst: 0,\n\t\t\t\tlast: 24 * 60,\n\t\t\t\tdate: this.date.date_part(new Date(gantt._min_date.valueOf())),\n\t\t\t\ttimeFormat: getTimeFormat(sns)\n\t\t\t};\n\n\t\t\t// map: default order => real one\n\t\t\tsns._time_format_order = {size: 0};\n\n\t\t\tif (gantt.config.limit_time_select) {\n\t\t\t\tsettings.first = 60 * cfg.first_hour;\n\t\t\t\tsettings.last = 60 * cfg.last_hour + 1;\n\t\t\t\tsettings.date.setHours(cfg.first_hour);\n\t\t\t}\n\n\t\t\tfor (i = 0; i < settings.timeFormat.length; i++) {\n\t\t\t\t// adding spaces between selects\n\t\t\t\tif (i > 0) {\n\t\t\t\t\thtml += \" \";\n\t\t\t\t}\n\n\t\t\t\toptions = getHtmlTimePickerOptions(sns, i, settings);\n\n\t\t\t\tif (options) {\n\t\t\t\t\tariaAttrs = gantt._waiAria.lightboxSelectAttrString(settings.timeFormat[i]);\n\t\t\t\t\treadonly = sns.readonly ? \"disabled='disabled'\" : \"\";\n\t\t\t\t\tdisplay = hidden ? \" style='display:none' \" : \"\";\n\t\t\t\t\thtml += \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn html;\n\t\t},\n\t\t_fill_lightbox_select: function(s, i, d, map) {\n\t\t\ts[i + map[0]].value = d.getDate();\n\t\t\ts[i + map[1]].value = d.getMonth();\n\t\t\ts[i + map[2]].value = d.getFullYear();\n\t\t\tif (gantt.defined(map[3])) {\n\t\t\t\tvar v = d.getHours() * 60 + d.getMinutes();\n\t\t\t\tv = Math.round(v / gantt._get_timepicker_step()) * gantt._get_timepicker_step();\n\t\t\t\tvar input = s[i + map[3]];\n\t\t\t\tinput.value = v;\n\t\t\t\t//in case option not shown\n\t\t\t\tinput.setAttribute(\"data-value\", v);\n\t\t\t}\n\t\t},\n\t\ttemplate: new TemplateControl(),\n\t\ttextarea: new TextareaControl(),\n\t\tselect: new SelectControl(),\n\t\ttime: new TimeControl(),\n\t\tduration: new DurationControl(),\n\t\tparent: new ParentControl(),\n\t\tradio: new RadioControl(),\n\t\tcheckbox: new CheckboxControl()\n\t};\n\n\tgantt._is_lightbox_timepicker = function() {\n\t\tvar s = this._get_typed_lightbox_config();\n\t\tfor (var i = 0; i < s.length; i++)\n\t\t\tif (s[i].name == \"time\" && s[i].type == \"time\")\n\t\t\t\treturn true;\n\t\treturn false;\n\t};\n\n\tgantt._dhtmlx_confirm = function(message, title, callback, ok) {\n\t\tif (!message)\n\t\t\treturn callback();\n\t\tvar opts = {text: message};\n\t\tif (title)\n\t\t\topts.title = title;\n\t\tif (ok) {\n\t\t\topts.ok = ok;\n\t\t}\n\t\tif (callback) {\n\t\t\topts.callback = function(result) {\n\t\t\t\tif (result)\n\t\t\t\t\tcallback();\n\t\t\t};\n\t\t}\n\t\tgantt.confirm(opts);\n\t};\n\n\tfunction _get_type_name(type_value) {\n\t\tfor (var i in this.config.types) {\n\t\t\tif (this.config.types[i] == type_value) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn \"task\";\n\t}\n\n\tgantt._get_typed_lightbox_config = function(type) {\n\t\tif (type === undefined) {\n\t\t\ttype = this.getLightboxType();\n\t\t}\n\n\t\tvar field = _get_type_name.call(this, type);\n\n\t\tif (gantt.config.lightbox[field + \"_sections\"]) {\n\t\t\treturn gantt.config.lightbox[field + \"_sections\"];\n\t\t} else {\n\t\t\treturn gantt.config.lightbox.sections;\n\t\t}\n\t};\n\n\tgantt._silent_redraw_lightbox = function(type) {\n\t\tvar oldType = this.getLightboxType();\n\n\t\tif (this.getState().lightbox) {\n\t\t\tvar taskId = this.getState().lightbox;\n\t\t\tvar formData = this.getLightboxValues(),\n\t\t\t\ttask = this.copy(this.getTask(taskId));\n\n\t\t\tthis.resetLightbox();\n\n\t\t\tvar updTask = this.mixin(task, formData, true);\n\t\t\tvar box = this.getLightbox(type ? type : undefined);\n\t\t\tthis._center_lightbox(this.getLightbox());\n\t\t\tthis._set_lightbox_values(updTask, box);\n\t\t} else {\n\t\t\tthis.resetLightbox();\n\t\t\tthis.getLightbox(type ? type : undefined);\n\t\t}\n\t\tthis.callEvent(\"onLightboxChange\", [oldType, this.getLightboxType()]);\n\t};\n\n\tfunction bindLabelsToInputs(sns) {\n\t\tvar section;\n\t\tvar label;\n\t\tvar labelBlock;\n\t\tvar inputBlock;\n\t\tvar input;\n\t\tvar i;\n\n\t\tfor (i = 0; i < sns.length; i++) {\n\t\t\tsection = sns[i];\n\t\t\tlabelBlock = document.getElementById(section.id);\n\t\t\t\n\t\t\tif (!section.id || !labelBlock) continue;\n\n\t\t\tlabel = labelBlock.querySelector(\"label\");\n\t\t\tinputBlock = labelBlock.nextSibling;\n\t\t\t\n\t\t\tif (!inputBlock) continue;\n\n\t\t\tinput = inputBlock.querySelector(\"input, select, textarea\");\n\t\t\tif (input) {\n\t\t\t\tinput.id = input.id || \"input_\" + gantt.uid();\n\t\t\t\tsection.inputId = input.id;\n\t\t\t\tlabel.setAttribute(\"for\", section.inputId);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction getHtmlButtons(buttons, floatRight) {\n\t\tvar button;\n\t\tvar ariaAttr;\n\t\tvar html = \"\";\n\t\tvar i;\n\n\t\tfor (i = 0; i < buttons.length; i++) {\n\t\t\t// needed to migrate from 'dhx_something' to 'gantt_something' naming in a lightbox\n\t\t\tbutton = gantt.config._migrate_buttons[buttons[i]] ? gantt.config._migrate_buttons[buttons[i]] : buttons[i];\n\n\t\t\tariaAttr = gantt._waiAria.lightboxButtonAttrString(button);\n\t\t\thtml += \"
\" + gantt.locale.labels[button] + \"
\";\n\t\t}\n\t\treturn html;\n\t}\n\n\tfunction getTimeFormat(sns) {\n\t\tvar scale;\n\t\tvar unit;\n\t\tvar result;\n\n\t\tif (sns.time_format) return sns.time_format;\n\n\t\t// default order\n\t\tresult = [\"%d\", \"%m\", \"%Y\"];\n\t\tscale = gantt.getScale();\n\t\tunit = scale ? scale.unit : gantt.config.duration_unit;\n\t\tif (helpers.getSecondsInUnit(unit) < helpers.getSecondsInUnit(\"day\")) {\n\t\t\tresult.push(\"%H:%i\");\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction getHtmlTimePickerOptions(sns, index, settings) {\n\t\tvar range;\n\t\tvar offset;\n\t\tvar start_year;\n\t\tvar end_year;\n\t\tvar i;\n\t\tvar time;\n\t\tvar diff;\n\t\tvar tdate;\n\t\tvar html = \"\";\n\n\t\tswitch (settings.timeFormat[index]) {\n\t\tcase \"%Y\":\n\t\t\tsns._time_format_order[2] = index;\n\t\t\tsns._time_format_order.size++;\n\t\t\t//year\n\n\t\t\tif (sns.year_range) {\n\t\t\t\tif (!isNaN(sns.year_range)) {\n\t\t\t\t\trange = sns.year_range;\n\t\t\t\t} else if (sns.year_range.push) {\n\t\t\t\t\t// if\n\t\t\t\t\tstart_year = sns.year_range[0];\n\t\t\t\t\tend_year = sns.year_range[1];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\trange = range || 10;\n\t\t\toffset = offset || Math.floor(range / 2);\n\t\t\tstart_year = start_year || settings.date.getFullYear() - offset;\n\t\t\tend_year = end_year || start_year + range;\n\n\t\t\tfor (i = start_year; i < end_year; i++)\n\t\t\t\thtml += \"\";\n\t\t\tbreak;\n\t\tcase \"%m\":\n\t\t\tsns._time_format_order[1] = index;\n\t\t\tsns._time_format_order.size++;\n\t\t\t//month\n\t\t\tfor (i = 0; i < 12; i++)\n\t\t\t\thtml += \"\";\n\t\t\tbreak;\n\t\tcase \"%d\":\n\t\t\tsns._time_format_order[0] = index;\n\t\t\tsns._time_format_order.size++;\n\t\t\t//days\n\t\t\tfor (i = 1; i < 32; i++)\n\t\t\t\thtml += \"\";\n\t\t\tbreak;\n\t\tcase \"%H:%i\":\n\t\t\t// var last = 24*60, first = 0;\n\t\t\tsns._time_format_order[3] = index;\n\t\t\tsns._time_format_order.size++;\n\t\t\t//hours\n\t\t\ti = settings.first;\n\t\t\ttdate = settings.date.getDate();\n\t\t\tsns._time_values = [];\n\n\t\t\twhile (i < settings.last) {\n\t\t\t\ttime = gantt.templates.time_picker(settings.date);\n\t\t\t\thtml += \"\";\n\t\t\t\tsns._time_values.push(i);\n\t\t\t\tsettings.date.setTime(settings.date.valueOf() + gantt._get_timepicker_step() * 60 * 1000);\n\t\t\t\tdiff = (settings.date.getDate() != tdate) ? 1 : 0; // moved or not to the next day\n\t\t\t\ti = diff * 24 * 60 + settings.date.getHours() * 60 + settings.date.getMinutes();\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\t\treturn html;\n\t}\n};","var dateHelper = require(\"../utils/date_helpers\"),\n\thelpers = require(\"../utils/helpers\");\n\nmodule.exports = function(gantt) {\n\n\tgantt.isUnscheduledTask = function (task) {\n\t\treturn (!!task.unscheduled || !task.start_date);\n\t};\n\n\tgantt._isAllowedUnscheduledTask = function (task) {\n\t\treturn !!(task.unscheduled && gantt.config.show_unscheduled);\n\t};\n\n\tgantt.isTaskVisible = function (id) {\n\t\tif (!this.isTaskExists(id))\n\t\t\treturn false;\n\n\t\tvar task = this.getTask(id),\n\t\t\ttype = this.getTaskType(task.type);\n\n\t\tvar taskStart = task.start_date ? task.start_date.valueOf() : null;\n\t\tvar taskEnd = task.end_date ? task.end_date.valueOf() : null;\n\n\t\tif (!(gantt._isAllowedUnscheduledTask(task) || (taskStart && taskEnd && taskStart <= this._max_date.valueOf() && taskEnd >= this._min_date.valueOf()))){\n\t\t\treturn false;\n\t\t}\n\n\t\treturn !!(gantt.getGlobalTaskIndex(id) >= 0);\n\t};\n\n\tgantt._defaultTaskDate = function (item, parent_id) {\n\t\tvar parent = (parent_id && parent_id != this.config.root_id) ? this.getTask(parent_id) : false,\n\t\t\tstartDate = '';\n\t\tif (parent) {\n\t\t\tstartDate = parent.start_date;\n\t\t} else {\n\t\t\tvar first = this.getTaskByIndex(0);\n\t\t\tstartDate = first ? (first.start_date ? first.start_date : (first.end_date ? this.calculateEndDate({\n\t\t\t\tstart_date: first.end_date,\n\t\t\t\tduration: -this.config.duration_step\n\t\t\t}) : '')) : this.config.start_date || this.getState().min_date;\n\t\t}\n\t\tgantt.assert(startDate, \"Invalid dates\");\n\t\treturn new Date(startDate);\n\t};\n\n\tgantt._set_default_task_timing = function (task) {\n\t\ttask.start_date = task.start_date || gantt._defaultTaskDate(task, this.getParent(task));\n\t\ttask.duration = task.duration || this.config.duration_step;\n\t\ttask.end_date = task.end_date || this.calculateEndDate(task);\n\t};\n\n\tgantt.createTask = function (item, parent, index) {\n\t\titem = item || {};\n\t\tif (!gantt.defined(item.id))\n\t\t\titem.id = gantt.uid();\n\n\t\tif (!item.start_date) {\n\t\t\titem.start_date = gantt._defaultTaskDate(item, parent);\n\t\t}\n\t\tif (item.text === undefined) {\n\t\t\titem.text = gantt.locale.labels.new_task;\n\t\t}\n\t\tif (item.duration === undefined) {\n\t\t\titem.duration = 1;\n\t\t}\n\n\t\tif (parent) {\n\t\t\tthis.setParent(item, parent, true);\n\t\t\tvar parentObj = this.getTask(parent);\n\t\t\tparentObj.$open = true;\n\t\t}\n\n\t\tif (!this.callEvent(\"onTaskCreated\", [item])) {\n\t\t\treturn null;\n\t\t}\n\t\tif (this.config.details_on_create) {\n\t\t\titem.$new = true;\n\t\t\tthis.silent(function(){\n\t\t\t\tgantt.$data.tasksStore.addItem(item, index);\n\t\t\t});\n\t\t\tthis.selectTask(item.id);\n\t\t\tthis.refreshData();\n\t\t\tthis.showLightbox(item.id);\n\t\t} else {\n\t\t\tif (this.addTask(item, parent, index)) {\n\t\t\t\tthis.showTask(item.id);\n\t\t\t\tthis.selectTask(item.id);\n\t\t\t}\n\t\t}\n\t\treturn item.id;\n\t};\n\n\tgantt._update_flags = function (oldid, newid) {\n\t\t// TODO: need a proper way to update all possible flags\n\t\tvar store = gantt.$data.tasksStore;\n\t\tif (oldid === undefined) {\n\t\t\tthis._lightbox_id = null;\n\n\t\t\tstore.silent(function(){\n\t\t\t\tstore.unselect();\n\t\t\t});\n\n\t\t\tif (this._tasks_dnd && this._tasks_dnd.drag) {\n\t\t\t\tthis._tasks_dnd.drag.id = null;\n\t\t\t}\n\t\t} else {\n\t\t\tif (this._lightbox_id == oldid)\n\t\t\t\tthis._lightbox_id = newid;\n\n\t\t\t// TODO: probably can be removed\n\t\t\tif (store.getSelectedId() == oldid) {\n\t\t\t\tstore.silent(function(){\n\t\t\t\t\tstore.unselect(oldid);\n\t\t\t\t\tstore.select(newid);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (this._tasks_dnd && this._tasks_dnd.drag && this._tasks_dnd.drag.id == oldid) {\n\t\t\t\tthis._tasks_dnd.drag.id = newid;\n\t\t\t}\n\t\t}\n\t};\n\n\tgantt._get_task_timing_mode = function (task, force) {\n\t\tvar task_type = this.getTaskType(task.type);\n\n\t\tvar state = {\n\t\t\ttype: task_type,\n\t\t\t$no_start: false,\n\t\t\t$no_end: false\n\t\t};\n\n\t\tif (!force && task_type == task.$rendered_type) {\n\t\t\tstate.$no_start = task.$no_start;\n\t\t\tstate.$no_end = task.$no_end;\n\t\t\treturn state;\n\t\t}\n\n\t\tif (task_type == this.config.types.project) {\n\t\t\t//project duration is always defined by children duration\n\t\t\tstate.$no_end = state.$no_start = true;\n\t\t} else if (task_type != this.config.types.milestone) {\n\t\t\t//tasks can have fixed duration, children duration(as projects), or one date fixed, and other defined by nested items\n\t\t\tstate.$no_end = !(task.end_date || task.duration);\n\t\t\tstate.$no_start = !task.start_date;\n\n\t\t\tif (this._isAllowedUnscheduledTask(task)) {\n\t\t\t\tstate.$no_end = state.$no_start = false;\n\t\t\t}\n\t\t}\n\n\t\treturn state;\n\t};\n\n\tgantt._init_task_timing = function (task) {\n\t\tvar task_mode = gantt._get_task_timing_mode(task, true);\n\n\t\tvar dirty = task.$rendered_type != task_mode.type;\n\n\t\tvar task_type = task_mode.type;\n\n\t\tif (dirty) {\n\t\t\ttask.$no_start = task_mode.$no_start;\n\t\t\ttask.$no_end = task_mode.$no_end;\n\t\t\ttask.$rendered_type = task_mode.type;\n\t\t}\n\n\t\tif (dirty && task_type != this.config.types.milestone) {\n\t\t\tif (task_type == this.config.types.project) {\n\t\t\t\t//project duration is always defined by children duration\n\t\t\t\tthis._set_default_task_timing(task);\n\t\t\t}\n\t\t}\n\n\t\tif (task_type == this.config.types.milestone) {\n\t\t\ttask.end_date = task.start_date;\n\t\t}\n\t\tif (task.start_date && task.end_date) {\n\t\t\ttask.duration = this.calculateDuration(task);\n\t\t}\n\n\t\tif (!task.end_date) {\n\t\t\ttask.end_date = task.start_date;\n\t\t}\n\n\t\ttask.duration = task.duration || 0;\n\t};\n\n\tgantt.isSummaryTask = function (task) {\n\t\tvar mode = gantt._get_task_timing_mode(task);\n\n\t\treturn !!(mode.$no_end || mode.$no_start);\n\t};\n\n// downward calculation of project duration\n\tgantt.resetProjectDates = function (task) {\n\t\tvar taskMode = this._get_task_timing_mode(task);\n\t\tif (taskMode.$no_end || taskMode.$no_start) {\n\t\t\tvar dates = this.getSubtaskDates(task.id);\n\t\t\tthis._assign_project_dates(task, dates.start_date, dates.end_date);\n\t\t}\n\t};\n\n\tgantt.getSubtaskDuration = function (task_id) {\n\t\tvar res = 0,\n\t\t\troot = task_id !== undefined ? task_id : gantt.config.root_id;\n\n\t\tthis.eachTask(function (child) {\n\t\t\tif (this.getTaskType(child.type) == gantt.config.types.project || this.isUnscheduledTask(child))\n\t\t\t\treturn;\n\n\t\t\tres += child.duration;\n\t\t}, root);\n\n\t\treturn res;\n\t};\n\n\tgantt.getSubtaskDates = function (task_id) {\n\t\tvar min = null,\n\t\t\tmax = null,\n\t\t\troot = task_id !== undefined ? task_id : gantt.config.root_id;\n\n\t\tthis.eachTask(function (child) {\n\t\t\tif (this.getTaskType(child.type) == gantt.config.types.project || this.isUnscheduledTask(child))\n\t\t\t\treturn;\n\n\t\t\tif ((child.start_date && !child.$no_start) && (!min || min > child.start_date.valueOf()))\n\t\t\t\tmin = child.start_date.valueOf();\n\t\t\tif ((child.end_date && !child.$no_end) && (!max || max < child.end_date.valueOf()))\n\t\t\t\tmax = child.end_date.valueOf();\n\t\t}, root);\n\n\t\treturn {\n\t\t\tstart_date: min ? new Date(min) : null,\n\t\t\tend_date: max ? new Date(max) : null\n\t\t};\n\t};\n\n\tgantt._assign_project_dates = function (task, from, to) {\n\t\tvar taskTiming = this._get_task_timing_mode(task);\n\t\tif (taskTiming.$no_start) {\n\t\t\tif (from && from != Infinity) {\n\t\t\t\ttask.start_date = new Date(from);\n\t\t\t} else {\n\t\t\t\ttask.start_date = this._defaultTaskDate(task, this.getParent(task));\n\t\t\t}\n\t\t}\n\n\t\tif (taskTiming.$no_end) {\n\t\t\tif (to && to != -Infinity) {\n\t\t\t\ttask.end_date = new Date(to);\n\t\t\t} else {\n\t\t\t\ttask.end_date = this.calculateEndDate({\n\t\t\t\t\tstart_date: task.start_date,\n\t\t\t\t\tduration: this.config.duration_step,\n\t\t\t\t\ttask: task\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tif (taskTiming.$no_start || taskTiming.$no_end) {\n\t\t\tthis._init_task_timing(task);\n\t\t}\n\t};\n\n// upward calculation of project duration\n\tgantt._update_parents = function (taskId, silent) {\n\t\tif (!taskId) return;\n\n\t\tvar task = this.getTask(taskId);\n\t\tvar pid = this.getParent(task);\n\n\t\tvar taskTiming = this._get_task_timing_mode(task);\n\n\t\tvar has_changed = true;\n\n\t\tif (taskTiming.$no_start || taskTiming.$no_end) {\n\t\t\tvar oldStart = task.start_date.valueOf(),\n\t\t\t\toldEnd = task.end_date.valueOf();\n\n\t\t\tgantt.resetProjectDates(task);\n\n\t\t\t// not refresh parent projects if dates hasn't changed\n\t\t\tif (oldStart == task.start_date.valueOf() && oldEnd == task.end_date.valueOf()) {\n\t\t\t\thas_changed = false;\n\t\t\t}\n\n\t\t\tif (has_changed && !silent) {\n\t\t\t\tthis.refreshTask(task.id, true);\n\t\t\t}\n\t\t}\n\n\n\t\tif (has_changed && pid && this.isTaskExists(pid)) {\n\t\t\tthis._update_parents(pid, silent);\n\t\t}\n\t};\n\n\tgantt.roundDate = function (config) {\n\t\tvar scale = gantt.getScale();\n\n\t\tif (dateHelper.isDate(config)) {\n\t\t\tconfig = {\n\t\t\t\tdate: config,\n\t\t\t\tunit: scale ? scale.unit : gantt.config.duration_unit,\n\t\t\t\tstep: scale ? scale.step : gantt.config.duration_step\n\t\t\t};\n\t\t}\n\t\tvar date = config.date,\n\t\t\tsteps = config.step,\n\t\t\tunit = config.unit;\n\n\t\tif(!scale){\n\t\t\treturn date;\n\t\t}\n\n\t\tvar upper, lower, colIndex;\n\t\tif (unit == scale.unit && steps == scale.step &&\n\t\t\t+date >= +scale.min_date && +date <= +scale.max_date) {\n\t\t\t//find date in time scale config\n\t\t\tcolIndex = Math.floor(gantt.columnIndexByDate(date));\n\n\t\t\tif (!scale.trace_x[colIndex]) {\n\t\t\t\tcolIndex -= 1;// end of time scale\n\t\t\t\tif(scale.rtl){\n\t\t\t\t\tcolIndex = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\tlower = new Date(scale.trace_x[colIndex]);\n\t\t\tupper = gantt.date.add(lower, steps, unit);\n\t\t} else {\n\t\t\tcolIndex = Math.floor(gantt.columnIndexByDate(date));\n\n\t\t\tupper = gantt.date[unit + \"_start\"](new Date(scale.min_date));\n\t\t\tif (scale.trace_x[colIndex]) {\n\t\t\t\tupper = gantt.date[unit + \"_start\"](scale.trace_x[colIndex]);// end of time scale\n\t\t\t}\n\n\t\t\twhile (+upper < +date) {\n\t\t\t\tupper = gantt.date[unit + \"_start\"](gantt.date.add(upper, steps, unit));\n\n\t\t\t\tvar tzOffset = upper.getTimezoneOffset();\n\n\t\t\t\tupper = gantt._correct_dst_change(upper, tzOffset, upper, unit);\n\t\t\t\tif (gantt.date[unit + '_start'])\n\t\t\t\t\tupper = gantt.date[unit + '_start'](upper);\n\t\t\t}\n\n\t\t\tlower = gantt.date.add(upper, -1 * steps, unit);\n\n\t\t}\n\t\tif (config.dir && config.dir == 'future')\n\t\t\treturn upper;\n\t\tif (config.dir && config.dir == 'past')\n\t\t\treturn lower;\n\n\t\tif (Math.abs(date - lower) < Math.abs(upper - date)) {\n\t\t\treturn lower;\n\t\t} else {\n\t\t\treturn upper;\n\t\t}\n\n\t};\n\n\tgantt.correctTaskWorkTime = function (task) {\n\t\tif (gantt.config.work_time && gantt.config.correct_work_time) {\n\t\t\tif (!this.isWorkTime(task.start_date, undefined, task)) {\n\t\t\t\ttask.start_date = this.getClosestWorkTime({date: task.start_date, dir: 'future', task: task});\n\t\t\t\ttask.end_date = this.calculateEndDate(task);\n\t\t\t} else if (!this.isWorkTime(new Date(+task.end_date - 1), undefined, task)) {\n\t\t\t\ttask.end_date = this.calculateEndDate(task);\n\t\t\t}\n\t\t}\n\t};\n\n\tgantt.attachEvent(\"onBeforeTaskUpdate\", function (id, task) {\n\t\tgantt._init_task_timing(task);\n\t\treturn true;\n\t});\n\tgantt.attachEvent(\"onBeforeTaskAdd\", function (id, task) {\n\t\tgantt._init_task_timing(task);\n\t\treturn true;\n\t});\n\n};","// TODO: rework public api for date methods\nvar utils = require(\"../../utils/utils\");\n\nvar createWorktimeFacade = function(calendarManager, timeCalculator){\n\treturn {\n\t\tgetWorkHours: function (date) {\n\t\t\treturn timeCalculator.getWorkHours(date);\n\t\t},\n\n\t\tsetWorkTime: function (config) {\n\t\t\treturn timeCalculator.setWorkTime(config);\n\t\t},\n\n\t\tunsetWorkTime: function (config) {\n\t\t\ttimeCalculator.unsetWorkTime(config);\n\t\t},\n\n\t\tisWorkTime: function (date, unit, task) {\n\t\t\treturn timeCalculator.isWorkTime(date, unit, task);\n\t\t},\n\n\t\tgetClosestWorkTime: function (config) {\n\t\t\treturn timeCalculator.getClosestWorkTime(config);\n\t\t},\n\n\t\tcalculateDuration: function (start_date, end_date, task) {\n\t\t\treturn timeCalculator.calculateDuration(start_date, end_date, task);\n\t\t},\n\t\t_hasDuration: function (start_date, end_date, task) {\n\t\t\treturn timeCalculator.hasDuration(start_date, end_date, task);\n\t\t},\n\n\t\tcalculateEndDate: function (start, duration, unit, task) {\n\t\t\treturn timeCalculator.calculateEndDate(start, duration, unit, task);\n\t\t},\n\n\t\tcreateCalendar: utils.bind(calendarManager.createCalendar, calendarManager),\n\t\taddCalendar: utils.bind(calendarManager.addCalendar, calendarManager),\n\t\tgetCalendar: utils.bind(calendarManager.getCalendar, calendarManager),\n\t\tgetCalendars: utils.bind(calendarManager.getCalendars, calendarManager),\n\t\tgetTaskCalendar: utils.bind(calendarManager.getTaskCalendar, calendarManager),\n\t\tdeleteCalendar: utils.bind(calendarManager.deleteCalendar, calendarManager)\n\t};\n};\n\n\nmodule.exports = { create: createWorktimeFacade };\n","function CalendarDisabledTimeStrategy(gantt, argumentsHelper){\n\tthis.argumentsHelper = argumentsHelper;\n\tthis.$gantt = gantt;\n}\n\nCalendarDisabledTimeStrategy.prototype = {\n\tgetWorkHours: function () {\n\t\treturn [0, 24];\n\t},\n\tsetWorkTime: function () {\n\t\treturn true;\n\t},\n\tunsetWorkTime: function () {\n\t\treturn true;\n\t},\n\tisWorkTime: function () {\n\t\treturn true;\n\t},\n\tgetClosestWorkTime: function (config) {\n\t\tvar config = this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper, arguments);\n\t\treturn config.date;\n\t},\n\n\tcalculateDuration: function () {\n\t\tvar config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n\t\tvar from = config.start_date,\n\t\t\tto = config.end_date,\n\t\t\tunit = config.unit,\n\t\t\tstep = config.step;\n\n\t\treturn this._calculateDuration(from, to, unit, step);\n\t},\n\t_calculateDuration: function (start, end, unit, step) {\n\t\tvar dateHelper = this.$gantt.date;\n\t\tvar fixedUnits = {\n\t\t\t\"week\": 1000 * 60 * 60 * 24 * 7,\n\t\t\t\"day\": 1000 * 60 * 60 * 24,\n\t\t\t\"hour\": 1000 * 60 * 60,\n\t\t\t\"minute\": 1000 * 60\n\t\t};\n\n\t\tvar res = 0;\n\t\tif (fixedUnits[unit]) {\n\t\t\tres = Math.round((end - start) / (step * fixedUnits[unit]));\n\t\t} else {\n\t\t\tvar from = new Date(start),\n\t\t\t\tto = new Date(end);\n\t\t\twhile (from.valueOf() < to.valueOf()) {\n\t\t\t\tres += 1;\n\t\t\t\tfrom = dateHelper.add(from, step, unit);\n\t\t\t}\n\n\t\t\tif (from.valueOf() != end.valueOf()) {\n\t\t\t\tres += (to - from) / (dateHelper.add(from, step, unit) - from);\n\t\t\t}\n\t\t}\n\n\t\treturn Math.round(res);\n\t},\n\n\thasDuration: function () {\n\t\tvar config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n\t\tvar from = config.start_date,\n\t\t\tto = config.end_date,\n\t\t\tunit = config.unit,\n\t\t\tstep = config.step;\n\n\t\tif (!unit) {\n\t\t\treturn false;\n\t\t}\n\t\tfrom = new Date(from);\n\t\tto = new Date(to);\n\n\t\treturn (from.valueOf() < to.valueOf());\n\t},\n\n\tcalculateEndDate: function () {\n\t\tvar config = this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper, arguments);\n\n\t\tvar start = config.start_date,\n\t\t\tduration = config.duration,\n\t\t\tunit = config.unit,\n\t\t\tstep = config.step;\n\n\t\treturn this.$gantt.date.add(start, step * duration, unit);\n\t}\n};\n\nmodule.exports = CalendarDisabledTimeStrategy;","var createArgumentsHelper = require(\"./calendar_arguments_helper\"),\n\tNoWorkTimeCalendar = require(\"./strategy/no_work_time\");\n\nfunction TimeCalculator(calendarManager){\n\n\tthis.$gantt = calendarManager.$gantt;\n\tthis.argumentsHelper = createArgumentsHelper(this.$gantt);\n\tthis.calendarManager = calendarManager;\n\tthis.$disabledCalendar = new NoWorkTimeCalendar(this.$gantt, this.argumentsHelper);\n}\n\nTimeCalculator.prototype = {\n\t_getCalendar: function (config) {\n\t\tvar calendar;\n\t\tif (!this.$gantt.$services.config().work_time) {\n\t\t\tcalendar = this.$disabledCalendar;\n\t\t} else {\n\t\t\tvar manager = this.calendarManager;\n\t\t\tif (config.task) {\n\t\t\t\tcalendar = manager.getTaskCalendar(config.task);\n\t\t\t} else if (config.id) {\n\t\t\t\tcalendar = manager.getTaskCalendar(config);\n\t\t\t} else if (config.calendar) {\n\t\t\t\tcalendar = config.calendar;\n\t\t\t}\n\t\t\tif (!calendar) {\n\t\t\t\tcalendar = manager.getTaskCalendar();\n\t\t\t}\n\t\t}\n\t\treturn calendar;\n\t},\n\n\tgetWorkHours: function (config) {\n\t\tconfig = this.argumentsHelper.getWorkHoursArguments.apply(this.argumentsHelper, arguments);\n\n\t\tvar calendar = this._getCalendar(config);\n\n\t\treturn calendar.getWorkHours(config.date);\n\t},\n\n\tsetWorkTime: function (config, calendar) {\n\t\tconfig = this.argumentsHelper.setWorkTimeArguments.apply(this.argumentsHelper, arguments);\n\n\t\tif (!calendar)\n\t\t\tcalendar = this.calendarManager.getCalendar(); // Global\n\t\treturn calendar.setWorkTime(config);\n\t},\n\n\tunsetWorkTime: function (config, calendar) {\n\t\tconfig = this.argumentsHelper.unsetWorkTimeArguments.apply(this.argumentsHelper, arguments);\n\n\t\tif (!calendar)\n\t\t\tcalendar = this.calendarManager.getCalendar(); // Global\n\t\treturn calendar.unsetWorkTime(config);\n\t},\n\tisWorkTime: function (date, unit, task, calendar) {\n\t\tvar config = this.argumentsHelper.isWorkTimeArguments.apply(this.argumentsHelper, arguments);\n\n\t\tcalendar = this._getCalendar(config);\n\t\treturn calendar.isWorkTime(config);\n\t},\n\tgetClosestWorkTime: function (config) {\n\t\tconfig = this.argumentsHelper.getClosestWorkTimeArguments.apply(this.argumentsHelper, arguments);\n\n\t\tvar calendar = this._getCalendar(config);\n\n\t\treturn calendar.getClosestWorkTime(config);\n\t},\n\n\tcalculateDuration: function () { // start_date_date, end_date, task\n\t\tvar config = this.argumentsHelper.getDurationArguments.apply(this.argumentsHelper, arguments);\n\n\n\t\tvar calendar = this._getCalendar(config);\n\t\treturn calendar.calculateDuration(config);\n\t},\n\thasDuration: function () {\n\t\tvar config = this.argumentsHelper.hasDurationArguments.apply(this.argumentsHelper, arguments);\n\n\t\tvar calendar = this._getCalendar(config);\n\n\t\treturn calendar.hasDuration(config);\n\t},\n\tcalculateEndDate: function (config) { // start_date, duration, unit, task\n\t\tvar config = this.argumentsHelper.calculateEndDateArguments.apply(this.argumentsHelper, arguments);\n\n\t\tvar calendar = this._getCalendar(config);\n\t\treturn calendar.calculateEndDate(config);\n\t}\n};\n\nmodule.exports = TimeCalculator;\n\n","function WorkUnitsCache() {\n\tthis._cache = {};\n}\n\nWorkUnitsCache.prototype = {\n\t// cache previously calculated worktime\n\tget: function (unit, date) {\n\t\tvar result = -1;// default value (if not existed in the cache)\n\n\t\tvar cache = this._cache;\n\t\tif (cache && cache[unit]) {\n\t\t\tvar units = cache[unit];\n\t\t\tvar time = date.getTime();\n\t\t\tif (units[time] !== undefined)\n\t\t\t\tresult = units[time];\n\t\t}\n\t\treturn result;\n\t},\n\n\tput: function (unit, date, value) {\n\t\tif (!unit || !date) return false;\n\n\t\tvar cache = this._cache;\n\n\t\tvar time = date.getTime();\n\n\t\tvalue = !!value;\n\n\t\tif (!cache) return false;\n\t\tif (!cache[unit]) cache[unit] = {};\n\t\tcache[unit][time] = value;\n\t\treturn true;\n\t},\n\n\tclear: function () {\n\t\tthis._cache = {};\n\t}\n};\n\nmodule.exports = WorkUnitsCache;","var Cache = require(\"./calendar_workunit_cache\"),\n\tutils = require(\"../../../utils/utils\");\n\nfunction CalendarWorkTimeStrategy(gantt, argumentsHelper){\n\tthis.argumentsHelper = argumentsHelper;\n\tthis.$gantt = gantt;\n\tthis._workingUnitsCache = new Cache();\n}\n\nCalendarWorkTimeStrategy.prototype = {\n\tunits: [\n\t\t\"year\",\n\t\t\"month\",\n\t\t\"week\",\n\t\t\"day\",\n\t\t\"hour\",\n\t\t\"minute\"\n\t],\n\t// cache previously calculated worktime\n\t_getUnitOrder: function (unit) {\n\t\tfor (var i = 0, len = this.units.length; i < len; i++) {\n\t\t\tif (this.units[i] == unit)\n\t\t\t\treturn i;\n\t\t}\n\t},\n\t_timestamp: function (settings) {\n\n\t\tvar timestamp = null;\n\t\tif ((settings.day || settings.day === 0)) {\n\t\t\ttimestamp = settings.day;\n\t\t} else if (settings.date) {\n\t\t\t// store worktime datestamp in utc so it could be recognized in different timezones (e.g. opened locally and sent to the export service in different timezone)\n\t\t\ttimestamp = Date.UTC(settings.date.getFullYear(), settings.date.getMonth(), settings.date.getDate());\n\t\t}\n\t\treturn timestamp;\n\t},\n\t_checkIfWorkingUnit: function (date, unit, order) {\n\t\tif (order === undefined) {\n\t\t\torder = this._getUnitOrder(unit);\n\t\t}\n\n\t\t// disable worktime check for custom time units\n\t\tif (order === undefined) {\n\t\t\treturn true;\n\t\t}\n\t\tif (order) {\n\t\t\t//check if bigger time unit is a work time (hour < day < month...)\n\t\t\t//i.e. don't check particular hour if the whole day is marked as not working\n\t\t\tif (!this._isWorkTime(date, this.units[order - 1], order - 1))\n\t\t\t\treturn false;\n\t\t}\n\t\tif (!this[\"_is_work_\" + unit])\n\t\t\treturn true;\n\t\treturn this[\"_is_work_\" + unit](date);\n\t},\n\t//checkings for particular time units\n\t//methods for month-year-week can be defined, otherwise always return 'true'\n\t_is_work_day: function (date) {\n\t\tvar val = this._getWorkHours(date);\n\n\t\tif (val instanceof Array) {\n\t\t\treturn val.length > 0;\n\t\t}\n\t\treturn false;\n\t},\n\t_is_work_hour: function (date) {\n\t\tvar hours = this._getWorkHours(date); // [7,12] or []\n\t\tvar hour = date.getHours();\n\t\tfor (var i = 0; i < hours.length; i += 2) {\n\t\t\tif (hours[i + 1] === undefined) {\n\t\t\t\treturn hours[i] == hour;\n\t\t\t} else {\n\t\t\t\tif (hour >= hours[i] && hour < hours[i + 1])\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\t_internDatesPull: {},\n\t_nextDate: function (start, unit, step) {\n\t\tvar dateHelper = this.$gantt.date;\n\t\treturn dateHelper.add(start, step, unit);\n\n\t\t/*var start_value = +start,\n\t\t\tkey = unit + \"_\" + step;\n\t\tvar interned = this._internDatesPull[key];\n\t\tif(!interned){\n\t\t\tinterned = this._internDatesPull[key] = {};\n\t\t}\n\t\tvar calculated;\n\t\tif(!interned[start_value]){\n\t\t\tinterned[start_value] = calculated = dateHelper.add(start, step, unit);\n\t\t\t//interned[start_value] = dateHelper.add(start, step, unit);\n\t\t}\n\t\treturn calculated || interned[start_value];*/\n\t},\n\t_getWorkUnitsBetweenGeneric: function (from, to, unit, step) {\n\t\tvar dateHelper = this.$gantt.date;\n\t\tvar start = new Date(from),\n\t\t\tend = new Date(to);\n\t\tstep = step || 1;\n\t\tvar units = 0;\n\n\n\t\tvar next = null;\n\t\tvar stepStart,\n\t\t\tstepEnd;\n\n\t\t// calculating decimal durations, i.e. 2016-09-20 00:05:00 - 2016-09-20 01:00:00 ~ 0.95 instead of 1\n\t\t// and also 2016-09-20 00:00:00 - 2016-09-20 00:05:00 ~ 0.05 instead of 1\n\t\t// durations must be rounded later\n\t\tvar checkFirst = false;\n\t\tstepStart = dateHelper[unit + \"_start\"](new Date(start));\n\t\tif (stepStart.valueOf() != start.valueOf()) {\n\t\t\tcheckFirst = true;\n\t\t}\n\t\tvar checkLast = false;\n\t\tstepEnd = dateHelper[unit + \"_start\"](new Date(to));\n\t\tif (stepEnd.valueOf() != to.valueOf()) {\n\t\t\tcheckLast = true;\n\t\t}\n\n\t\tvar isLastStep = false;\n\t\twhile (start.valueOf() < end.valueOf()) {\n\t\t\tnext = this._nextDate(start, unit, step);\n\t\t\tisLastStep = (next.valueOf() > end.valueOf());\n\n\t\t\tif (this._isWorkTime(start, unit)) {\n\t\t\t\tif (checkFirst || (checkLast && isLastStep)) {\n\t\t\t\t\tstepStart = dateHelper[unit + \"_start\"](new Date(start));\n\t\t\t\t\tstepEnd = dateHelper.add(stepStart, step, unit);\n\t\t\t\t}\n\n\t\t\t\tif (checkFirst) {\n\t\t\t\t\tcheckFirst = false;\n\t\t\t\t\tnext = this._nextDate(stepStart, unit, step);\n\t\t\t\t\tunits += ((stepEnd.valueOf() - start.valueOf()) / (stepEnd.valueOf() - stepStart.valueOf()));\n\t\t\t\t} else if (checkLast && isLastStep) {\n\t\t\t\t\tcheckLast = false;\n\t\t\t\t\tunits += ((end.valueOf() - start.valueOf()) / (stepEnd.valueOf() - stepStart.valueOf()));\n\n\t\t\t\t} else {\n\t\t\t\t\tunits++;\n\t\t\t\t}\n\t\t\t}\n\t\t\tstart = next;\n\t\t}\n\t\treturn units;\n\t},\n\t_getHoursPerDay: function (date) {\n\t\tvar hours = this._getWorkHours(date);\n\t\tvar res = 0;\n\t\tfor (var i = 0; i < hours.length; i += 2) {\n\t\t\tres += ((hours[i + 1] - hours[i]) || 0);\n\t\t}\n\t\treturn res;\n\t},\n\t_getWorkHoursForRange: function (from, to) {\n\t\tvar hours = 0;\n\t\tvar start = new Date(from),\n\t\t\tend = new Date(to);\n\n\t\twhile (start.valueOf() < end.valueOf()) {\n\t\t\tif (this._isWorkTime(start, \"day\"))\n\t\t\t\thours += this._getHoursPerDay(start);\n\t\t\tstart = this._nextDate(start, \"day\", 1);\n\t\t}\n\t\treturn hours;\n\t},\n\t_getWorkUnitsBetweenHours: function (from, to, unit, step) {\n\t\tvar start = new Date(from),\n\t\t\tend = new Date(to);\n\t\tstep = step || 1;\n\n\t\tvar firstDayStart = new Date(start);\n\t\tvar firstDayEnd = this.$gantt.date.add(this.$gantt.date.day_start(new Date(start)), 1, \"day\");\n\n\t\tif (end.valueOf() <= firstDayEnd.valueOf()) {\n\t\t\treturn this._getWorkUnitsBetweenGeneric(from, to, unit, step);\n\t\t} else {\n\n\t\t\tvar lastDayStart = this.$gantt.date.day_start(new Date(end));\n\t\t\tvar lastDayEnd = end;\n\n\t\t\tvar startPart = this._getWorkUnitsBetweenGeneric(firstDayStart, firstDayEnd, unit, step);\n\t\t\tvar endPart = this._getWorkUnitsBetweenGeneric(lastDayStart, lastDayEnd, unit, step);\n\n\t\t\tvar hourRange = this._getWorkHoursForRange(firstDayEnd, lastDayStart);\n\t\t\thourRange = ((hourRange / step) + startPart + endPart);\n\n\t\t\treturn hourRange;\n\t\t}\n\t},\n\n\t_getCalendar: function () {\n\t\treturn this.worktime;\n\t},\n\t_setCalendar: function (settings) {\n\t\tthis.worktime = settings;\n\t},\n\n\t_tryChangeCalendarSettings: function (payload) {\n\t\tvar backup = JSON.stringify(this._getCalendar());\n\t\tpayload();\n\t\tif (this._isEmptyCalendar(this._getCalendar())) {\n\t\t\tthis.$gantt.assert(false, \"Invalid calendar settings, no worktime available\");\n\t\t\tthis._setCalendar(JSON.parse(backup));\n\t\t\tthis._workingUnitsCache.clear();\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\n\t},\n\n\t_isEmptyCalendar: function (settings) {\n\t\tvar result = false,\n\t\t\tdatesArray = [],\n\t\t\tisFullWeekSet = true;\n\t\tfor (var i in settings.dates) {\n\t\t\tresult |= !!settings.dates[i];\n\t\t\tdatesArray.push(i);\n\t\t}\n\n\t\tvar checkFullArray = [];\n\t\tfor (var i = 0; i < datesArray.length; i++) {\n\t\t\tif (datesArray[i] < 10) {\n\t\t\t\tcheckFullArray.push(datesArray[i]);\n\t\t\t}\n\t\t}\n\t\tcheckFullArray.sort();\n\n\t\tfor (var i = 0; i < 7; i++) {\n\t\t\tif (checkFullArray[i] != i)\n\t\t\t\tisFullWeekSet = false;\n\t\t}\n\t\tif (isFullWeekSet)\n\t\t\treturn !result;\n\t\treturn !(result || !!settings.hours); // can still return false if separated dates are set to true\n\t},\n\n\tgetWorkHours: function () {\n\t\tvar config = this.argumentsHelper.getWorkHoursArguments.apply(this.argumentsHelper, arguments);\n\t\treturn this._getWorkHours(config.date);\n\t},\n\t_getWorkHours: function (date) {\n\t\tvar t = this._timestamp({date: date});\n\t\tvar hours = true;\n\t\tvar calendar = this._getCalendar();\n\t\tif (calendar.dates[t] !== undefined) {\n\t\t\thours = calendar.dates[t];//custom day\n\t\t} else if (calendar.dates[date.getDay()] !== undefined) {\n\t\t\thours = calendar.dates[date.getDay()];//week day\n\t\t}\n\t\tif (hours === true) {\n\t\t\treturn calendar.hours;\n\t\t} else if (hours) {\n\t\t\treturn hours;\n\t\t}\n\t\treturn [];\n\t},\n\n\tsetWorkTime: function (settings) {\n\t\treturn this._tryChangeCalendarSettings(utils.bind(function () {\n\t\t\tvar hours = settings.hours !== undefined ? settings.hours : true;\n\t\t\tvar timestamp = this._timestamp(settings);\n\t\t\tif (timestamp !== null) {\n\t\t\t\tthis._getCalendar().dates[timestamp] = hours;\n\t\t\t} else {\n\t\t\t\tthis._getCalendar().hours = hours;\n\t\t\t}\n\t\t\tthis._workingUnitsCache.clear();\n\t\t}, this));\n\t},\n\n\tunsetWorkTime: function (settings) {\n\t\treturn this._tryChangeCalendarSettings(utils.bind(function () {\n\t\t\tif (!settings) {\n\t\t\t\tthis.reset_calendar();\n\t\t\t} else {\n\n\t\t\t\tvar timestamp = this._timestamp(settings);\n\n\t\t\t\tif (timestamp !== null) {\n\t\t\t\t\tdelete this._getCalendar().dates[timestamp];\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Clear work units cache\n\t\t\tthis._workingUnitsCache.clear();\n\t\t}, this));\n\t},\n\n\t_isWorkTime: function (date, unit, order) {\n\t\t//Check if this item has in the cache\n\t\tvar is_work_unit = this._workingUnitsCache.get(unit, date);\n\n\t\tif (is_work_unit == -1) {\n\t\t\t// calculate if not cached\n\t\t\tis_work_unit = this._checkIfWorkingUnit(date, unit, order);\n\t\t\tthis._workingUnitsCache.put(unit, date, is_work_unit);\n\t\t}\n\n\t\treturn is_work_unit;\n\t},\n\n\tisWorkTime: function () {\n\t\tvar config = this.argumentsHelper.isWorkTimeArguments.apply( this.argumentsHelper, arguments);\n\t\treturn this._isWorkTime(config.date, config.unit);\n\t},\n\n\tcalculateDuration: function () {\n\t\tvar config = this.argumentsHelper.getDurationArguments.apply( this.argumentsHelper, arguments);\n\n\t\tif (!config.unit) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar res = 0;\n\t\tif (config.unit == \"hour\") {\n\t\t\tres = this._getWorkUnitsBetweenHours(config.start_date, config.end_date, config.unit, config.step);\n\t\t} else {\n\t\t\tres = this._getWorkUnitsBetweenGeneric(config.start_date, config.end_date, config.unit, config.step);\n\t\t}\n\n\t\t// getDuration.. returns decimal durations\n\t\treturn Math.round(res);\n\t},\n\thasDuration: function () {\n\t\tvar config = this.argumentsHelper.getDurationArguments.apply( this.argumentsHelper, arguments);\n\n\t\tvar from = config.start_date,\n\t\t\tto = config.end_date,\n\t\t\tunit = config.unit,\n\t\t\tstep = config.step;\n\n\t\tif (!unit) {\n\t\t\treturn false;\n\t\t}\n\t\tvar start = new Date(from),\n\t\t\tend = new Date(to);\n\t\tstep = step || 1;\n\n\t\twhile (start.valueOf() < end.valueOf()) {\n\t\t\tif (this._isWorkTime(start, unit))\n\t\t\t\treturn true;\n\t\t\tstart = this._nextDate(start, unit, step);\n\t\t}\n\t\treturn false;\n\t},\n\n\tcalculateEndDate: function () {\n\t\tvar config = this.argumentsHelper.calculateEndDateArguments.apply( this.argumentsHelper, arguments);\n\n\t\tvar from = config.start_date,\n\t\t\tduration = config.duration,\n\t\t\tunit = config.unit,\n\t\t\tstep = config.step;\n\n\t\tvar mult = (config.duration >= 0) ? 1 : -1;\n\t\treturn this._calculateEndDate(from, duration, unit, step * mult);\n\t},\n\t_calculateEndDate: function (from, duration, unit, step) {\n\t\tif (!unit)\n\t\t\treturn false;\n\n\t\tvar start = new Date(from),\n\t\t\tadded = 0;\n\t\tstep = step || 1;\n\t\tduration = Math.abs(duration * 1);\n\n\t\twhile (added < duration) {\n\t\t\tvar next = this._nextDate(start, unit, step);\n\t\t\t//if(this.isWorkTime(step > 0 ? start : next, unit))\n\t\t\tif (this._isWorkTime(step > 0 ? new Date(next.valueOf() - 1) : new Date(next.valueOf() + 1), unit))\n\t\t\t\tadded++;\n\t\t\tstart = next;\n\t\t}\n\t\treturn start;\n\t},\n\n\tgetClosestWorkTime: function () {\n\t\tvar config = this.argumentsHelper.getClosestWorkTimeArguments.apply( this.argumentsHelper, arguments);\n\t\treturn this._getClosestWorkTime(config);\n\t},\n\n\t_getClosestWorkTime: function (settings) {\n\t\tif (this._isWorkTime(settings.date, settings.unit))\n\t\t\treturn settings.date;\n\n\t\tvar unit = settings.unit;\n\n\t\tvar curr = this.$gantt.date[unit + '_start'](new Date(settings.date));\n\n\t\tvar future_target = new Date(curr),\n\t\t\tprev_target = new Date(curr),\n\t\t\ttick = true,\n\t\t\tmaximum_loop = 3000,//be extra sure we won't fall into infinite loop, 3k seems big enough\n\t\t\tcount = 0,\n\t\t\tboth_directins = (settings.dir == 'any' || !settings.dir);\n\n\t\tvar inc = 1;\n\t\tif (settings.dir == 'past')\n\t\t\tinc = -1;\n\n\t\tvar unitOrder = this._getUnitOrder(unit),\n\t\t\tbiggerTimeUnit = this.units[unitOrder - 1];\n\n\t\t//will seek closest working hour in future or in past, one step in one direction per iteration\n\t\twhile (!this._isWorkTime(curr, unit)) {\n\n\t\t\tif(biggerTimeUnit && !this._isWorkTime(curr, biggerTimeUnit)){\n\t\t\t\t// no need to check every hour/minute if we know that the whole day is not working\n\t\t\t\tvar biggerTimeUnitSettings = this.$gantt.copy(settings);\n\t\t\t\tbiggerTimeUnitSettings.date = curr;\n\t\t\t\tbiggerTimeUnitSettings.unit = biggerTimeUnit;\n\n\t\t\t\tcurr = this._getClosestWorkTime(biggerTimeUnitSettings);\n\t\t\t}\n\n\t\t\tif (both_directins) {\n\t\t\t\tcurr = tick ? future_target : prev_target;\n\t\t\t\tinc = inc * (-1);\n\t\t\t}\n\t\t\tvar tzOffset = curr.getTimezoneOffset();\n\t\t\tcurr = this.$gantt.date.add(curr, inc, unit);\n\n\t\t\tcurr = this.$gantt._correct_dst_change(curr, tzOffset, inc, unit);\n\t\t\tif (this.$gantt.date[unit + '_start'])\n\t\t\t\tcurr = this.$gantt.date[unit + '_start'](curr);\n\n\t\t\tif (both_directins) {\n\t\t\t\tif (tick) {\n\t\t\t\t\tfuture_target = curr;\n\t\t\t\t} else {\n\t\t\t\t\tprev_target = curr;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttick = !tick;\n\t\t\tcount++;\n\t\t\tif (count > maximum_loop) {\n\t\t\t\tthis.$gantt.assert(false, \"Invalid working time check\");\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tif (curr == prev_target || settings.dir == 'past') {\n\t\t\tcurr = this.$gantt.date.add(curr, 1, unit);\n\t\t}\n\n\t\treturn curr;\n\t}\n};\n\nmodule.exports = CalendarWorkTimeStrategy;","var utils = require(\"../../utils/utils\");\nvar createArgumentsHelper = require(\"./calendar_arguments_helper\");\nvar CalendarWorktimeStrategy = require(\"./strategy/calendar_strategy\");\n\nfunction CalendarManager (gantt){\n\tthis.$gantt = gantt;\n\tthis._calendars = {};\n}\n\nCalendarManager.prototype = {\n\t_calendars: {},\n\t_getDayHoursForMultiple: function (calendars, date) {\n\t\tvar units = [],\n\t\t\ttick = true,\n\t\t\tcurrPos = 0,\n\t\t\tis_work_hour = false,\n\t\t\tstart = this.$gantt.date.day_start(new Date(date));\n\t\tfor (var hour = 0; hour < 24; hour++) {\n\t\t\tis_work_hour = calendars.reduce(function (acc, calendar) {\n\t\t\t\treturn acc && calendar._is_work_hour(start);\n\t\t\t}, true);\n\t\t\tif (is_work_hour) {\n\t\t\t\tif (tick) {\n\t\t\t\t\tunits[currPos] = hour;\n\t\t\t\t\tunits[currPos + 1] = (hour + 1);\n\t\t\t\t\tcurrPos += 2;\n\t\t\t\t} else {\n\t\t\t\t\tunits[currPos - 1] += 1;\n\t\t\t\t}\n\t\t\t\ttick = false;\n\t\t\t} else if (!tick) {\n\t\t\t\ttick = true;\n\t\t\t}\n\t\t\tstart = this.$gantt.date.add(start, 1, \"hour\");\n\t\t}\n\t\tif (!units.length)\n\t\t\tunits = false;\n\t\treturn units;\n\t},\n\tmergeCalendars: function () {\n\t\tvar newCalendar = this.createCalendar(),\n\t\t\tday,\n\t\t\tunits = [];\n\t\tvar calendars = Array.prototype.slice.call(arguments, 0);\n\t\tnewCalendar.worktime.hours = [0, 24];\n\t\tnewCalendar.worktime.dates = {};\n\t\tvar start = this.$gantt.date.day_start(new Date(259200000)); // 1970 day=0\n\t\tfor (day = 0; day < 7; day++) {\n\t\t\tunits = this._getDayHoursForMultiple(calendars, start);\n\t\t\tnewCalendar.worktime.dates[day] = units;\n\t\t\tstart = this.$gantt.date.add(start, 1, \"day\");\n\t\t}\n\t\tfor (var i = 0; i < calendars.length; i++) {\n\t\t\tfor (var value in calendars[i].worktime.dates) if (+value > 10000) {\n\t\t\t\tunits = this._getDayHoursForMultiple(calendars, new Date(+value));\n\t\t\t\tnewCalendar.worktime.dates[value] = units;\n\t\t\t}\n\t\t}\n\t\treturn newCalendar;\n\t},\n\n\t_convertWorktimeSettings: function (settings) {\n\t\tvar days = settings.days;\n\t\tif (days) {\n\t\t\tsettings.dates = settings.dates || {};\n\t\t\tfor (var i = 0; i < days.length; i++) {\n\t\t\t\tsettings.dates[i] = days[i];\n\t\t\t\tif (!(days[i] instanceof Array)) {\n\t\t\t\t\tsettings.dates[i] = !!days[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\tdelete settings.days;\n\t\t}\n\t\treturn settings;\n\t},\n\n\tcreateCalendar: function (parentCalendar) {\n\t\tvar settings;\n\n\t\tif (!parentCalendar) {\n\t\t\tparentCalendar = {};\n\t\t}\n\n\t\tif (parentCalendar.worktime) {\n\t\t\tsettings = utils.copy(parentCalendar.worktime);\n\t\t} else {\n\t\t\tsettings = utils.copy(parentCalendar);\n\t\t}\n\n\t\tvar defaults = utils.copy(this.defaults.fulltime.worktime);\n\t\tutils.mixin(settings, defaults);\n\n\t\tvar id = utils.uid();\n\t\tvar calendar = {\n\t\t\tid: id + \"\",\n\t\t\tworktime: this._convertWorktimeSettings(settings)\n\t\t};\n\n\t\tvar apiCore = new CalendarWorktimeStrategy(this.$gantt, createArgumentsHelper(this.$gantt));\n\t\tutils.mixin(apiCore, calendar);\n\n\t\t// validate/check if empty calendar\n\t\tif (!apiCore._tryChangeCalendarSettings(function () {\n\t\t\t})) {\n\t\t\treturn null;\n\t\t} else {\n\t\t\treturn apiCore;\n\t\t}\n\t},\n\n\tgetCalendar: function (id) {\n\t\tid = id || \"global\";\n\t\tthis.createDefaultCalendars();\n\t\treturn this._calendars[id];\n\t},\n\n\tgetCalendars: function () {\n\t\tvar res = [];\n\t\tfor (var i in this._calendars) {\n\t\t\tres.push(this.getCalendar(i));\n\t\t}\n\t\treturn res;\n\t},\n\n\tgetTaskCalendar: function (task) {\n\t\tvar config = this.$gantt.$services.config();\n\t\tif (!task) {\n\t\t\treturn this.getCalendar();\n\t\t} else if (task[config.calendar_property]) {\n\t\t\treturn this.getCalendar(task[config.calendar_property]);\n\t\t} else if (config.resource_calendars) {\n\n\t\t\tfor (var field in config.resource_calendars) {\n\t\t\t\tvar resource = config.resource_calendars[field];\n\t\t\t\tif (task[field]) {\n\t\t\t\t\tvar calendarId = resource[task[field]];\n\t\t\t\t\tif (calendarId) {\n\t\t\t\t\t\treturn this.getCalendar(calendarId);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.getCalendar();\n\t},\n\n\taddCalendar: function (calendar) { // puts new calendar to Global Storage - gantt.calendarManager._calendars {}\n\t\tif (!(calendar instanceof CalendarWorktimeStrategy)) {\n\t\t\tvar id = calendar.id;\n\t\t\tcalendar = this.createCalendar(calendar);\n\t\t\tcalendar.id = id;\n\t\t}\n\t\tvar config = this.$gantt.$services.config();\n\n\t\tcalendar.id = calendar.id || utils.uid();\n\t\tthis._calendars[calendar.id] = calendar;\n\t\tif (!config.worktimes)\n\t\t\tconfig.worktimes = {};\n\t\tconfig.worktimes[calendar.id] = calendar.worktime;\n\t\treturn calendar.id;\n\t},\n\n\tdeleteCalendar: function (calendar) {\n\t\tvar config = this.$gantt.$services.config();\n\t\tif (!calendar) return false;\n\t\tif (this._calendars[calendar]) {\n\t\t\tdelete this._calendars[calendar];\n\t\t\tif (config.worktimes && config.worktimes[calendar])\n\t\t\t\tdelete config.worktimes[calendar];\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\t},\n\n\trestoreConfigCalendars: function (configs) {\n\t\tfor (var i in configs) {\n\t\t\tif (this._calendars[i])\n\t\t\t\tcontinue;\n\n\t\t\tvar settings = configs[i];\n\t\t\tvar calendar = this.createCalendar(settings);\n\t\t\tcalendar.id = i;\n\t\t\tthis.addCalendar(calendar);\n\t\t}\n\t},\n\n\tdefaults: {\n\t\tglobal: {\n\t\t\tid: \"global\",\n\t\t\tworktime: {\n\t\t\t\thours: [8, 17],\n\t\t\t\tdays: [0, 1, 1, 1, 1, 1, 0]\n\t\t\t}\n\t\t},\n\t\tfulltime: {\n\t\t\tid: \"fulltime\",\n\t\t\tworktime: {\n\t\t\t\thours: [0, 24],\n\t\t\t\tdays: [1, 1, 1, 1, 1, 1, 1]\n\t\t\t}\n\t\t}\n\t},\n\n\tcreateDefaultCalendars: function () {\n\t\tvar config = this.$gantt.$services.config();\n\t\tthis.restoreConfigCalendars(this.defaults);\n\t\tthis.restoreConfigCalendars(config.worktimes);\n\t}\n};\n\nmodule.exports = CalendarManager;","var CalendarManager = require(\"./calendar_manager\"),\n\tTimeCalculator = require(\"./time_calculator\"),\n\tworktimeFacadeFactory = require(\"../facades/worktime_calendars\"),\n\tutils = require(\"../../utils/utils\");\n\nmodule.exports = function (gantt) {\n\tvar manager = new CalendarManager(gantt),\n\ttimeCalculator = new TimeCalculator(manager);\n\tvar facade = worktimeFacadeFactory.create(manager, timeCalculator);\n\tutils.mixin(gantt, facade);\n};\n","var utils = require(\"../utils/utils\");\nvar dateHelper = require(\"../utils/date_helpers\");\n\nmodule.exports = function(gantt) {\n\n\tgantt.load = function (url, type, callback) {\n\t\tthis._load_url = url;\n\t\tthis.assert(arguments.length, \"Invalid load arguments\");\n\n\t\tvar tp = 'json', cl = null;\n\t\tif (arguments.length >= 3) {\n\t\t\ttp = type;\n\t\t\tcl = callback;\n\t\t} else {\n\t\t\tif (typeof arguments[1] == \"string\")\n\t\t\t\ttp = arguments[1];\n\t\t\telse if (typeof arguments[1] == \"function\")\n\t\t\t\tcl = arguments[1];\n\t\t}\n\n\t\tthis._load_type = tp;\n\n\t\tthis.callEvent(\"onLoadStart\", [url, tp]);\n\n\t\tthis.ajax.get(url, gantt.bind(function (l) {\n\t\t\tthis.on_load(l, tp);\n\t\t\tthis.callEvent(\"onLoadEnd\", [url, tp]);\n\t\t\tif (typeof cl == \"function\")\n\t\t\t\tcl.call(this);\n\t\t}, this));\n\t};\n\tgantt.parse = function (data, type) {\n\t\tthis.on_load({xmlDoc: {responseText: data}}, type);\n\t};\n\n\tgantt.serialize = function (type) {\n\t\ttype = type || \"json\";\n\t\treturn this[type].serialize();\n\t};\n\n\t/*\n\ttasks and relations\n\t{\n\tdata:[\n\t\t{\n\t\t\t\"id\":\"string\",\n\t\t\t\"text\":\"...\",\n\t\t\t\"start_date\":\"Date or string\",\n\t\t\t\"end_date\":\"Date or string\",\n\t\t\t\"duration\":\"number\",\n\t\t\t\"progress\":\"0..1\",\n\t\t\t\"parent_id\":\"string\",\n\t\t\t\"order\":\"number\"\n\t\t},...],\n\tlinks:[\n\t\t{\n\t\t\tid:\"string\",\n\t\t\tsource:\"string\",\n\t\t\ttarget:\"string\",\n\t\t\ttype:\"string\"\n\t\t},...],\n\tcollections:{\n\t\t\tcollectionName:[\n\t\t\t\t{key:, label:, optional:...},...\n\t\t\t],...\n\t\t}\n\t}\n\n\t* */\n\n\tgantt.on_load = function (resp, type) {\n\t\tthis.callEvent(\"onBeforeParse\", []);\n\t\tif (!type)\n\t\t\ttype = \"json\";\n\t\tthis.assert(this[type], \"Invalid data type:'\" + type + \"'\");\n\n\t\tvar raw = resp.xmlDoc.responseText;\n\n\t\tvar data = this[type].parse(raw, resp);\n\t\tthis._process_loading(data);\n\t};\n\n\tgantt._process_loading = function (data) {\n\t\tif(data.collections)\n\t\t\tthis._load_collections(data.collections);\n\n\t\tthis.$data.tasksStore.parse(data.data);\n\t\tvar links = data.links || (data.collections ? data.collections.links : []);\n\t\tthis.$data.linksStore.parse(links);\n\n\t\t//this._sync_links();\n\t\tthis.callEvent(\"onParse\", []);\n\t\tthis.render();\n\t\tif(this.config.initial_scroll){\n\t\t\tvar firstTask = this.getTaskByIndex(0);\n\t\t\tvar id = firstTask ? firstTask.id : this.config.root_id;\n\t\t\tif(this.isTaskExists(id))\n\t\t\t\tthis.showTask(id);\n\t\t}\n\t};\n\n\n\tgantt._load_collections = function (collections) {\n\t\tvar collections_loaded = false;\n\t\tfor (var key in collections) {\n\t\t\tif (collections.hasOwnProperty(key)) {\n\t\t\t\tcollections_loaded = true;\n\t\t\t\tvar collection = collections[key];\n\t\t\t\tvar arr = this.serverList[key];\n\t\t\t\tif (!arr) continue;\n\t\t\t\tarr.splice(0, arr.length); //clear old options\n\t\t\t\tfor (var j = 0; j < collection.length; j++) {\n\t\t\t\t\tvar option = collection[j];\n\t\t\t\t\tvar obj = this.copy(option);\n\t\t\t\t\tobj.key = obj.value;// resulting option object\n\n\t\t\t\t\tfor (var option_key in option) {\n\t\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\n\t\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tarr.push(obj);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (collections_loaded)\n\t\t\tthis.callEvent(\"onOptionsLoad\", []);\n\t};\n\n\tgantt.attachEvent(\"onBeforeTaskDisplay\", function (id, task) {\n\t\treturn !task.$ignore;\n\t});\n\n\tgantt.json = {\n\t\tparse: function (data) {\n\t\t\tgantt.assert(data, \"Invalid data\");\n\n\t\t\tif (typeof data == \"string\") {\n\t\t\t\tif (window.JSON)\n\t\t\t\t\tdata = JSON.parse(data);\n\t\t\t\telse {\n\t\t\t\t\tgantt.assert(false, \"JSON is not supported\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (data.dhx_security)\n\t\t\t\tgantt.security_key = data.dhx_security;\n\t\t\treturn data;\n\t\t},\n\t\tserializeTask: function (task) {\n\t\t\treturn this._copyObject(task);\n\t\t},\n\t\tserializeLink: function (link) {\n\t\t\treturn this._copyLink(link);\n\t\t},\n\t\t_copyLink: function (obj) {\n\t\t\tvar copy = {};\n\t\t\tfor (var key in obj)\n\t\t\t\tcopy[key] = obj[key];\n\t\t\treturn copy;\n\t\t},\n\t\t_copyObject: function (obj) {\n\t\t\tvar copy = {};\n\t\t\tfor (var key in obj) {\n\t\t\t\tif (key.charAt(0) == \"$\")\n\t\t\t\t\tcontinue;\n\t\t\t\tcopy[key] = obj[key];\n\n\t\t\t\tif (dateHelper.isDate(copy[key])) {\n\t\t\t\t\tcopy[key] = gantt.templates.xml_format(copy[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn copy;\n\t\t},\n\t\tserialize: function () {\n\t\t\tvar tasks = [];\n\t\t\tvar links = [];\n\n\t\t\tgantt.eachTask(function (obj) {\n\t\t\t\tgantt.resetProjectDates(obj);\n\t\t\t\ttasks.push(this.serializeTask(obj));\n\t\t\t}, gantt.config.root_id, this);\n\n\t\t\tvar rawLinks = gantt.getLinks();\n\t\t\tfor (var i = 0; i < rawLinks.length; i++) {\n\t\t\t\tlinks.push(this.serializeLink(rawLinks[i]));\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdata: tasks,\n\t\t\t\tlinks: links\n\t\t\t};\n\t\t}\n\t};\n\n\t/*\n\t\n\t\t\n\t\t\tMy task 1\n\t\t\t16.08.2013\n\t\t\t22.08.2013\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n\t*/\n\n\tgantt.xml = {\n\t\t_xmlNodeToJSON: function (node, attrs_only) {\n\t\t\tvar t = {};\n\t\t\tfor (var i = 0; i < node.attributes.length; i++)\n\t\t\t\tt[node.attributes[i].name] = node.attributes[i].value;\n\n\t\t\tif (!attrs_only) {\n\t\t\t\tfor (var i = 0; i < node.childNodes.length; i++) {\n\t\t\t\t\tvar child = node.childNodes[i];\n\t\t\t\t\tif (child.nodeType == 1)\n\t\t\t\t\t\tt[child.tagName] = child.firstChild ? child.firstChild.nodeValue : \"\";\n\t\t\t\t}\n\n\t\t\t\tif (!t.text) t.text = node.firstChild ? node.firstChild.nodeValue : \"\";\n\t\t\t}\n\n\t\t\treturn t;\n\t\t},\n\t\t_getCollections: function (loader) {\n\t\t\tvar collection = {};\n\t\t\tvar opts = gantt.ajax.xpath(\"//coll_options\", loader);\n\t\t\tfor (var i = 0; i < opts.length; i++) {\n\t\t\t\tvar bind = opts[i].getAttribute(\"for\");\n\t\t\t\tvar arr = collection[bind] = [];\n\t\t\t\tvar itms = gantt.ajax.xpath(\".//item\", opts[i]);\n\t\t\t\tfor (var j = 0; j < itms.length; j++) {\n\t\t\t\t\tvar itm = itms[j];\n\t\t\t\t\tvar attrs = itm.attributes;\n\t\t\t\t\tvar obj = {key: itms[j].getAttribute(\"value\"), label: itms[j].getAttribute(\"label\")};\n\t\t\t\t\tfor (var k = 0; k < attrs.length; k++) {\n\t\t\t\t\t\tvar attr = attrs[k];\n\t\t\t\t\t\tif (attr.nodeName == \"value\" || attr.nodeName == \"label\")\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\tobj[attr.nodeName] = attr.nodeValue;\n\t\t\t\t\t}\n\t\t\t\t\tarr.push(obj);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn collection;\n\t\t},\n\t\t_getXML: function (text, loader, toptag) {\n\t\t\ttoptag = toptag || \"data\";\n\t\t\tif (!loader.getXMLTopNode) {\n\t\t\t\tloader = gantt.ajax.parse(loader);\n\t\t\t}\n\n\t\t\tvar xml = gantt.ajax.xmltop(toptag, loader.xmlDoc);\n\t\t\tif (!xml || xml.tagName != toptag) throw \"Invalid XML data\";\n\n\t\t\tvar skey = xml.getAttribute(\"dhx_security\");\n\t\t\tif (skey)\n\t\t\t\tgantt.security_key = skey;\n\n\t\t\treturn xml;\n\t\t},\n\t\tparse: function (text, loader) {\n\t\t\tloader = this._getXML(text, loader);\n\t\t\tvar data = {};\n\n\t\t\tvar evs = data.data = [];\n\t\t\tvar xml = gantt.ajax.xpath(\"//task\", loader);\n\n\t\t\tfor (var i = 0; i < xml.length; i++)\n\t\t\t\tevs[i] = this._xmlNodeToJSON(xml[i]);\n\n\t\t\tdata.collections = this._getCollections(loader);\n\t\t\treturn data;\n\t\t},\n\t\t_copyLink: function (obj) {\n\t\t\treturn \"\";\n\t\t},\n\t\t_copyObject: function (obj) {\n\t\t\treturn \"\";\n\t\t},\n\t\tserialize: function () {\n\t\t\tvar tasks = [];\n\t\t\tvar links = [];\n\n\t\t\tvar json = gantt.json.serialize();\n\t\t\tfor (var i = 0, len = json.data.length; i < len; i++) {\n\t\t\t\ttasks.push(this._copyObject(json.data[i]));\n\t\t\t}\n\t\t\tfor (var i = 0, len = json.links.length; i < len; i++) {\n\t\t\t\tlinks.push(this._copyLink(json.links[i]));\n\t\t\t}\n\t\t\treturn \"\" + tasks.join(\"\") + \"\" + links.join(\"\") + \"\";\n\t\t}\n\t};\n\n\n\tgantt.oldxml = {\n\t\tparse: function (text, loader) {\n\t\t\tloader = gantt.xml._getXML(text, loader, \"projects\");\n\t\t\tvar data = {collections: {links: []}};\n\n\t\t\tvar evs = data.data = [];\n\t\t\tvar xml = gantt.ajax.xpath(\"//task\", loader);\n\n\t\t\tfor (var i = 0; i < xml.length; i++) {\n\t\t\t\tevs[i] = gantt.xml._xmlNodeToJSON(xml[i]);\n\t\t\t\tvar parent = xml[i].parentNode;\n\n\t\t\t\tif (parent.tagName == \"project\")\n\t\t\t\t\tevs[i].parent = \"project-\" + parent.getAttribute(\"id\");\n\t\t\t\telse\n\t\t\t\t\tevs[i].parent = parent.parentNode.getAttribute(\"id\");\n\t\t\t}\n\n\t\t\txml = gantt.ajax.xpath(\"//project\", loader);\n\t\t\tfor (var i = 0; i < xml.length; i++) {\n\t\t\t\tvar ev = gantt.xml._xmlNodeToJSON(xml[i], true);\n\t\t\t\tev.id = \"project-\" + ev.id;\n\t\t\t\tevs.push(ev);\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < evs.length; i++) {\n\t\t\t\tvar ev = evs[i];\n\t\t\t\tev.start_date = ev.startdate || ev.est;\n\t\t\t\tev.end_date = ev.enddate;\n\t\t\t\tev.text = ev.name;\n\t\t\t\tev.duration = ev.duration / 8;\n\t\t\t\tev.open = 1;\n\t\t\t\tif (!ev.duration && !ev.end_date) ev.duration = 1;\n\t\t\t\tif (ev.predecessortasks)\n\t\t\t\t\tdata.collections.links.push({\n\t\t\t\t\t\ttarget: ev.id,\n\t\t\t\t\t\tsource: ev.predecessortasks,\n\t\t\t\t\t\ttype: gantt.config.links.finish_to_start\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn data;\n\t\t},\n\t\tserialize: function () {\n\t\t\tgantt.message(\"Serialization to 'old XML' is not implemented\");\n\t\t}\n\t};\n\n\tgantt.serverList = function (name, array) {\n\t\tif (array) {\n\t\t\tthis.serverList[name] = array.slice(0);\n\t\t} else if (!this.serverList[name]) {\n\t\t\tthis.serverList[name] = [];\n\t\t}\n\t\treturn this.serverList[name];\n\t};\n\n};","module.exports = function(gantt) {\n\tgantt.isReadonly = function (item) {\n\t\tif (item && item[this.config.editable_property]) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn (item && item[this.config.readonly_property]) || this.config.readonly;\n\t\t}\n\t};\n};","module.exports = function(gantt){\n\n\tvar htmlTags = new RegExp(\"<(?:.|\\n)*?>\", \"gm\");\n\tvar extraSpaces = new RegExp(\" +\", \"gm\");\n\n\tfunction stripHTMLLite(htmlText){\n\t\treturn (htmlText + \"\")\n\t\t\t.replace(htmlTags, \" \").\n\t\t\treplace(extraSpaces, \" \");\n\t}\n\n\tvar singleQuotes = new RegExp(\"'\", \"gm\");\n\tfunction escapeQuotes(text){\n\t\treturn (text + \"\").replace(singleQuotes, \"'\");\n\t}\n\n\tgantt._waiAria = {\n\t\tgetAttributeString: function(attr){\n\t\t\tvar attributes = [\" \"];\n\t\t\tfor(var i in attr){\n\t\t\t\tvar text = escapeQuotes(stripHTMLLite(attr[i]));\n\t\t\t\tattributes.push(i + \"='\" + text + \"'\");\n\t\t\t}\n\t\t\tattributes.push(\" \");\n\t\t\treturn attributes.join(\" \");\n\n\t\t},\n\n\t\tgetTimelineCellAttr:function(dateString){\n\n\t\t\treturn gantt._waiAria.getAttributeString({\"aria-label\": dateString});\n\t\t},\n\n\n\t\t_taskCommonAttr: function(task, div){\n\n\t\t\tif(!(task.start_date && task.end_date))\n\t\t\t\treturn;\n\n\t\t\tdiv.setAttribute(\"aria-label\", stripHTMLLite(gantt.templates.tooltip_text(task.start_date, task.end_date, task)));\n\n\t\t\tif(gantt.isReadonly(task)){\n\t\t\t\tdiv.setAttribute(\"aria-readonly\", true);\n\n\n\t\t\t}\n\n\t\t\tif(task.$dataprocessor_class){\n\t\t\t\tdiv.setAttribute(\"aria-busy\", true);\n\t\t\t}\n\n\n\t\t\tdiv.setAttribute(\"aria-selected\",\n\t\t\t\t(gantt.getState().selected_task == task.id || (gantt.isSelectedTask && gantt.isSelectedTask(task.id))) ? \"true\" : \"false\");\n\t\t},\n\n\t\tsetTaskBarAttr: function(task, div){\n\t\t\tthis._taskCommonAttr(task, div);\n\n\t\t\tif(!gantt.isReadonly(task) && gantt.config.drag_move){\n\t\t\t\tif(task.id != gantt.getState().drag_id){\n\t\t\t\t\tdiv.setAttribute(\"aria-grabbed\", false);\n\t\t\t\t}else{\n\t\t\t\t\tdiv.setAttribute(\"aria-grabbed\", true);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\ttaskRowAttr: function(task, div){\n\n\t\t\tthis._taskCommonAttr(task, div);\n\n\t\t\tif(!gantt.isReadonly(task) && gantt.config.order_branch){\n\t\t\t\tdiv.setAttribute(\"aria-grabbed\", false);\n\t\t\t}\n\n\t\t\tdiv.setAttribute(\"role\", \"row\");\n\n\t\t\tdiv.setAttribute(\"aria-level\", task.$level);\n\n\t\t\tif(gantt.hasChild(task.id)){\n\t\t\t\tdiv.setAttribute(\"aria-expanded\", task.$open ? \"true\" : \"false\");\n\t\t\t}\n\t\t},\n\n\t\tlinkAttr: function(link, div){\n\n\t\t\tvar linkTypes = gantt.config.links;\n\n\t\t\tvar toStart = link.type == linkTypes.finish_to_start || link.type == linkTypes.start_to_start;\n\t\t\tvar fromStart = link.type == linkTypes.start_to_start || link.type == linkTypes.start_to_finish;\n\n\t\t\tvar content = gantt.locale.labels.link + \" \" + gantt.templates.drag_link(link.source, fromStart, link.target, toStart);\n\n\t\t\tdiv.setAttribute(\"aria-label\", stripHTMLLite(content));\n\t\t\tif(gantt.isReadonly(link)){\n\t\t\t\tdiv.setAttribute(\"aria-readonly\", true);\n\t\t\t}\n\t\t},\n\n\t\tgridSeparatorAttr: function(div){\n\t\t\tdiv.setAttribute(\"role\", \"separator\");\n\t\t},\n\n\t\tlightboxHiddenAttr: function(div){\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\n\t\t},\n\n\t\tlightboxVisibleAttr: function(div){\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\n\t\t},\n\n\t\tlightboxAttr: function(div){\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\n\t\t\tdiv.firstChild.setAttribute(\"role\", \"heading\");\n\t\t},\n\n\t\tlightboxButtonAttrString:function(buttonName){\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":gantt.locale.labels[buttonName], \"tabindex\":\"0\"});\n\t\t},\n\n\t\tlightboxHeader: function(div, headerText){\n\t\t\tdiv.setAttribute(\"aria-label\", headerText);\n\t\t},\n\n\t\tlightboxSelectAttrString: function(time_option){\n\t\t\tvar label = \"\";\n\n\t\t\tswitch (time_option) {\n\t\t\t\tcase \"%Y\":\n\t\t\t\t\tlabel = gantt.locale.labels.years;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%m\":\n\t\t\t\t\tlabel = gantt.locale.labels.months;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%d\":\n\t\t\t\t\tlabel = gantt.locale.labels.days;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"%H:%i\":\n\t\t\t\t\tlabel = gantt.locale.labels.hours + gantt.locale.labels.minutes;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn gantt._waiAria.getAttributeString({\"aria-label\": label});\n\t\t},\n\n\t\tlightboxDurationInputAttrString: function(section){\n\t\t\treturn this.getAttributeString({\"aria-label\": gantt.locale.labels.column_duration, \"aria-valuemin\": \"0\"});\n\t\t},\n\n\t\tgridAttrString: function(){\n\t\t\treturn [\" role='treegrid'\", gantt.config.multiselect ? \"aria-multiselectable='true'\" : \"aria-multiselectable='false'\", \" \"].join(\" \");\n\t\t},\n\n\n\t\tgridScaleRowAttrString: function(){\n\t\t\treturn \"role='row'\";\n\t\t},\n\n\t\tgridScaleCellAttrString: function(column, label){\n\t\t\tvar attrs = \"\";\n\t\t\tif(column.name == \"add\"){\n\t\t\t\tattrs = this.getAttributeString({\"role\":\"button\", \"aria-label\": gantt.locale.labels.new_task});\n\t\t\t}else{\n\n\t\t\t\tvar attributes = {\n\t\t\t\t\t\"role\":\"columnheader\",\n\t\t\t\t\t\"aria-label\": label\n\t\t\t\t};\n\n\t\t\t\tif(gantt._sort && gantt._sort.name == column.name){\n\t\t\t\t\tif(gantt._sort.direction == \"asc\"){\n\t\t\t\t\t\tattributes[\"aria-sort\"] = \"ascending\";\n\t\t\t\t\t}else{\n\t\t\t\t\t\tattributes[\"aria-sort\"] = \"descending\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tattrs = this.getAttributeString(attributes);\n\t\t\t}\n\t\t\treturn attrs;\n\t\t},\n\n\t\tgridDataAttrString: function(){\n\t\t\treturn \"role='rowgroup'\";\n\t\t},\n\n\t\tgridCellAttrString: function(column, textValue){\n\t\t\treturn this.getAttributeString({\"role\":\"gridcell\", \"aria-label\": textValue});\n\t\t},\n\n\t\tgridAddButtonAttrString: function(column){\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\": gantt.locale.labels.new_task});\n\t\t},\n\n\t\tmessageButtonAttrString: function(buttonLabel){\n\t\t\treturn \"tabindex='0' role='button' aria-label='\"+buttonLabel+\"'\";\n\t\t},\n\n\t\tmessageInfoAttr: function(div){\n\t\t\tdiv.setAttribute(\"role\", \"alert\");\n\t\t\t//div.setAttribute(\"tabindex\", \"-1\");\n\t\t},\n\n\t\tmessageModalAttr: function(div, uid){\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\n\t\t\tif(uid){\n\t\t\t\tdiv.setAttribute(\"aria-labelledby\", uid);\n\t\t\t}\n\n\t\t//\tdiv.setAttribute(\"tabindex\", \"-1\");\n\t\t},\n\n\t\tquickInfoAttr: function(div){\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\n\t\t},\n\n\t\tquickInfoHeaderAttrString: function(){\n\t\t\treturn \" role='heading' \";\n\t\t},\n\n\t\tquickInfoHeader: function(div, header){\n\t\t\tdiv.setAttribute(\"aria-label\", header);\n\t\t},\n\n\t\tquickInfoButtonAttrString: function(label){\n\t\t\treturn gantt._waiAria.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\n\t\t},\n\n\t\ttooltipAttr: function(div){\n\t\t\tdiv.setAttribute(\"role\", \"tooltip\");\n\t\t},\n\n\t\ttooltipVisibleAttr: function(div){\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\n\t\t},\n\n\t\ttooltipHiddenAttr: function(div){\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\n\t\t}\n\t};\n\n\tfunction isDisabled(){\n\t\treturn !gantt.config.wai_aria_attributes;\n\t}\n\n\tfor(var i in gantt._waiAria){\n\t\tgantt._waiAria[i] = (function(payload){\n\t\t\treturn function(){\n\t\t\t\tif(isDisabled()){\n\t\t\t\t\treturn \"\";\n\t\t\t\t}\n\t\t\t\treturn payload.apply(this, arguments);\n\t\t\t};\n\t\t})(gantt._waiAria[i]);\n\t}\n\n\n};","module.exports = function(gantt) {\n\tgantt.getGridColumn = function (name) {\n\t\tvar columns = gantt.config.columns;\n\n\t\tfor (var i = 0; i < columns.length; i++) {\n\t\t\tif (columns[i].name == name)\n\t\t\t\treturn columns[i];\n\t\t}\n\n\t\treturn null;\n\t};\n};","module.exports = function(gantt) {\n};","module.exports = function(gantt){\n\tfunction isEnabled(){\n\t\treturn gantt.config.auto_types && // if enabled\n\t\t\t(gantt.getTaskType(gantt.config.types.project) == gantt.config.types.project);// and supported\n\t}\n\n\tfunction callIfEnabled(callback){\n\t\treturn function(){\n\t\t\tif(!isEnabled()){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn callback.apply(this, arguments);\n\t\t};\n\t}\n\n\tfunction updateParents(childId){\n\t\tgantt.batchUpdate(function () {\n\t\t\tcheckParent(childId);\n\t\t});\n\t}\n\n\tvar delTaskParent;\n\n\tfunction checkParent(id) {\n\t\tsetTaskType(id);\n\t\tvar parent = gantt.getParent(id);\n\t\tif (parent != gantt.config.root_id) {\n\t\t\tcheckParent(parent);\n\t\t}\n\t}\n\n\tfunction setTaskType(id) {\n\t\tid = id.id ? id.id : id;\n\t\tvar task = gantt.getTask(id);\n\t\tvar allTypes = gantt.config.types;\n\t\tvar targetType = gantt.hasChild(task.id) ? allTypes.project : allTypes.task;\n\t\tvar taskType = gantt.getTaskType(task.type);\n\t\tif ((taskType == allTypes.task && targetType == allTypes.project) ||\n\t\t\t(taskType == allTypes.project && targetType == allTypes.task)\n\t\t) {\n\t\t\ttask.type = targetType;\n\t\t\tgantt.updateTask(id);\n\t\t}\n\t}\n\n\tgantt.attachEvent(\"onParse\", callIfEnabled(function () {\n\t\tgantt.eachTask(function (task) {\n\t\t\tsetTaskType(task);\n\t\t});\n\t}));\n\n\tgantt.attachEvent(\"onAfterTaskAdd\", callIfEnabled(updateParents));\n\n\tgantt.attachEvent(\"onAfterTaskUpdate\", callIfEnabled(updateParents));\n\n\n\tfunction updateAfterRemoveChild(id){\n\t\tif (id != gantt.config.root_id && gantt.isTaskExists(id)) {\n\t\t\tupdateParents(id);\n\t\t}\n\t}\n\n\tgantt.attachEvent(\"onBeforeTaskDelete\", callIfEnabled(function(id, task) {\n\t\tdelTaskParent = gantt.getParent(id);\n\t\treturn true;\n\t}));\n\n\tgantt.attachEvent(\"onAfterTaskDelete\", callIfEnabled(function(id, task) {\n\t\tupdateAfterRemoveChild(delTaskParent);\n\t}));\n\n\n\tvar originalRowDndParent;\n\tgantt.attachEvent(\"onRowDragStart\", callIfEnabled(function(id, target, e) {\n\t\toriginalRowDndParent = gantt.getParent(id);\n\t\treturn true;\n\t}));\n\tgantt.attachEvent(\"onRowDragEnd\", callIfEnabled(function(id, target) {\n\t\tupdateAfterRemoveChild(originalRowDndParent);\n\t\tupdateParents(id);\n\t}));\n\n\tvar originalMoveTaskParent;\n\tgantt.attachEvent(\"onBeforeTaskMove\", callIfEnabled(function(sid, parent, tindex){\n\t\toriginalMoveTaskParent = gantt.getParent(sid);\n\t\treturn true;\n\t}));\n\tgantt.attachEvent(\"onAfterTaskMove\", callIfEnabled(function(id, parent, tindex){\n\t\tif(document.querySelector(\".gantt_drag_marker\")){\n\t\t\t// vertical dnd in progress\n\t\t\treturn;\n\t\t}\n\t\tupdateAfterRemoveChild(originalMoveTaskParent);\n\t\tupdateParents(id);\n\t}));\n\n};","module.exports = function addPlaceholder(gantt){\n\tfunction isEnabled(){\n\t\treturn gantt.config.placeholder_task;\n\t}\n\n\tfunction callIfEnabled(callback){\n\t\treturn function(){\n\t\t\tif(!isEnabled()){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn callback.apply(this, arguments);\n\t\t};\n\t}\n\n\tfunction silenceDataProcessor(){\n\t\tvar dataProcessor = gantt._dp;\n\n\t\tif(dataProcessor && !dataProcessor._silencedPlaceholder){\n\t\t\tdataProcessor._silencedPlaceholder = true;\n\t\t\tdataProcessor.attachEvent(\"onBeforeUpdate\", callIfEnabled(function(id, state, data){\n\t\t\t\tif(data.type == gantt.config.types.placeholder){\n\t\t\t\t\tdataProcessor.setUpdated(id, false);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}));\n\t\t}\n\t}\n\n\tfunction insertPlaceholder(){\n\t\tvar placeholders = gantt.getTaskBy(\"type\", gantt.config.types.placeholder)\n\t\tif(!placeholders.length || !gantt.isTaskExists(placeholders[0].id)){\n\t\t\tvar placeholder = {\n\t\t\t\tunscheduled: true,\n\t\t\t\ttype: gantt.config.types.placeholder,\n\t\t\t\tduration:0,\n\t\t\t\ttext: gantt.locale.labels.new_task\n\t\t\t};\n\t\t\tif(gantt.callEvent(\"onTaskCreated\", [placeholder]) === false){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tgantt.addTask(placeholder);\n\t\t}\n\t}\n\n\tfunction afterEdit(id){\n\t\tvar item = gantt.getTask(id);\n\t\tif(item.type == gantt.config.types.placeholder) {\n\t\t\tif(item.start_date && item.end_date && item.unscheduled){\n\t\t\t\titem.unscheduled = false;\n\t\t\t}\n\n\t\t\tgantt.batchUpdate(function(){\n\t\t\t\tvar newTask = gantt.copy(item);\n\t\t\t\tgantt.silent(function(){\n\t\t\t\t\tgantt.deleteTask(item.id);\n\t\t\t\t});\n\n\t\t\t\tdelete newTask[\"!nativeeditor_status\"];\n\t\t\t\tnewTask.type = gantt.config.types.task;\n\t\t\t\tnewTask.id = gantt.uid();\n\t\t\t\tgantt.addTask(newTask);\n\n\t\t\t\t//insertPlaceholder();\n\t\t\t});\n\n\t\t}\n\t}\n\n\tgantt.config.types.placeholder = \"placeholder\";\n\n\tgantt.attachEvent(\"onGanttReady\", function(){\n\t\tgantt.attachEvent(\"onBeforeDataRender\", callIfEnabled(silenceDataProcessor));\n\t\tgantt.attachEvent(\"onAfterTaskUpdate\", callIfEnabled(afterEdit));\n\t\tgantt.attachEvent(\"onAfterTaskAdd\", callIfEnabled(function(id, task){\n\t\t\tif(task.type != gantt.config.types.placeholder){\n\t\t\t\tvar placeholders = gantt.getTaskBy(\"type\", gantt.config.types.placeholder);\n\t\t\t\tplaceholders.forEach(function(p){\n\t\t\t\t\tgantt.silent(function(){\n\t\t\t\t\t\tif(gantt.isTaskExists(p.id))\n\t\t\t\t\t\t\tgantt.deleteTask(p.id);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tinsertPlaceholder()\n\t\t\t}\n\t\t}));\n\t\tgantt.attachEvent(\"onParse\", callIfEnabled(insertPlaceholder));\n\t});\n\n};","function createResourceMethods(gantt){\n\n\tvar resourceTaskCache = {},\n\t\tresourceLoadCache = {};\n\n\tgantt.$data.tasksStore.attachEvent(\"onStoreUpdated\", function(){\n\t\tresourceTaskCache = {};\n\t\tresourceLoadCache = {};\n\t});\n\n\tfunction getTaskBy(propertyName, propertyValue){\n\t\tif(typeof propertyName == \"function\"){\n\t\t\treturn filterResourceTasks(propertyName);\n\t\t}else{\n\t\t\tif(propertyValue instanceof Array){\n\t\t\t\treturn getResourceTasks(propertyName, propertyValue);\n\t\t\t}else{\n\t\t\t\treturn getResourceTasks(propertyName, [propertyValue]);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction filterResourceTasks(filter){\n\t\tvar res = [];\n\t\tgantt.eachTask(function (task) {\n\t\t\tif (filter(task)) {\n\t\t\t\tres.push(task);\n\t\t\t}\n\t\t});\n\t\treturn res;\n\t}\n\n\tfunction getResourceTasks(property, resourceIds) {\n\t\tvar res;\n\n\t\tvar cacheKey = resourceIds.join(\"_\") + \"_\" + property;\n\n\t\tvar resourceHash = {};\n\t\tfor(var i = 0; i < resourceIds.length; i++){\n\t\t\tresourceHash[resourceIds[i]] = true;\n\t\t}\n\n\t\tif(!resourceTaskCache[cacheKey]){\n\t\t\tres = resourceTaskCache[cacheKey] = [];\n\t\t\tgantt.eachTask(function (task) {\n\t\t\t\tif (resourceHash[task[property]] && task.type != gantt.config.types.project) {\n\t\t\t\t\tres.push(task);\n\t\t\t\t}\n\t\t\t});\n\t\t}else{\n\t\t\tres = resourceTaskCache[cacheKey];\n\t\t}\n\n\t\treturn res;\n\t}\n\n\tfunction getResourceLoad(resourceId, resourceProperty, scale, timeline){\n\t\tvar cacheKey = [resourceId, resourceProperty, scale.unit, scale.step].join(\"_\");\n\t\tvar res;\n\t\tif(!resourceTaskCache[cacheKey]){\n\t\t\tres = resourceTaskCache[cacheKey] = calculateResourceLoad(resourceId, resourceProperty, scale, timeline);\n\n\t\t}else{\n\t\t\tres = resourceTaskCache[cacheKey];\n\t\t}\n\t\treturn res;\n\t}\n\n\tfunction calculateResourceLoad(resourceProperty, resourceId, scale, timeline) {\n\n\t\tvar tasks = getTaskBy(resourceProperty, resourceId);\n\t\tvar step = scale.unit;\n\t\tvar timegrid = {};\n\n\t\tfor (var i = 0; i < tasks.length; i++) {\n\t\t\tvar task = tasks[i];\n\n\t\t\tvar currDate = gantt.date[step + \"_start\"](new Date(task.start_date));\n\n\t\t\twhile (currDate < task.end_date) {\n\n\t\t\t\tvar date = currDate;\n\t\t\t\tcurrDate = gantt.date.add(currDate, 1, step);\n\n\t\t\t\tif (!gantt.isWorkTime({date: date, task: task, unit: step})) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tvar timestamp = date.valueOf();\n\t\t\t\tif (!timegrid[timestamp]){\n\t\t\t\t\ttimegrid[timestamp] = [];\n\t\t\t\t}\n\n\t\t\t\ttimegrid[timestamp].push(task);\n\t\t\t}\n\t\t}\n\n\t\tvar timetable = [];\n\t\tvar start, end, tasks;\n\t\tvar config = timeline.$getConfig();\n\n\t\tfor(var i = 0; i < scale.trace_x.length; i++){\n\t\t\tstart = new Date(scale.trace_x[i]);\n\t\t\tend = gantt.date.add(start, 1, step);\n\t\t\ttasks = timegrid[start.valueOf()] || [];\n\t\t\tif(tasks.length || config.resource_render_empty_cells){\n\t\t\t\ttimetable.push({\n\t\t\t\t\tstart_date: start,\n\t\t\t\t\tend_date: end,\n\t\t\t\t\ttasks: tasks\n\t\t\t\t});\n\t\t\t}\n\n\t\t}\n\n\t\treturn timetable;\n\t}\n\n\tfunction renderResourceLine(resource, timeline) {\n\t\tvar config = timeline.$getConfig(),\n\t\t\ttemplates = timeline.$getTemplates();\n\t\tvar timetable = getResourceLoad(config.resource_property, resource.id, timeline.getScale(), timeline);\n\n\t\tvar cells = [];\n\t\tfor (var i = 0; i < timetable.length; i++) {\n\n\t\t\tvar day = timetable[i];\n\n\t\t\tvar css = templates.resource_cell_class(day.start_date, day.end_date, resource, day.tasks);\n\t\t\tvar content = templates.resource_cell_value(day.start_date, day.end_date, resource, day.tasks);\n\n\t\t\tif(css || content){\n\t\t\t\tvar sizes = timeline.getItemPosition(resource, day.start_date, day.end_date);\n\t\t\t\tvar el = document.createElement('div');\n\t\t\t\tel.className = [\"gantt_resource_marker\", css].join(\" \");\n\n\t\t\t\tel.style.cssText = [\n\t\t\t\t\t'left:' + sizes.left + 'px',\n\t\t\t\t\t'width:' + sizes.width + 'px',\n\t\t\t\t\t'height:' + (config.row_height - 1) + 'px',\n\t\t\t\t\t'line-height:' + (config.row_height - 1) + 'px',\n\t\t\t\t\t'top:' + sizes.top + 'px'\n\t\t\t\t].join(\";\");\n\n\t\t\t\tif(content)\n\t\t\t\t\tel.innerHTML = content;\n\n\t\t\t\tcells.push(el);\n\t\t\t}\n\n\t\t}\n\n\t\tvar row = null;\n\t\tif(cells.length){\n\t\t\trow = document.createElement(\"div\");\n\t\t\tfor(var i = 0; i < cells.length; i++){\n\t\t\t\trow.appendChild(cells[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn row;\n\t}\n\treturn {\n\t\trenderLine: renderResourceLine,\n\t\tfilterTasks: getTaskBy\n\t};\n}\n\nmodule.exports = function(gantt){\n\tvar methods = createResourceMethods(gantt);\n\n\tgantt.getTaskBy = methods.filterTasks;\n\tgantt.$ui.layers.resourceRow = methods.renderLine;\n\tgantt.config.resource_property = \"owner_id\";\n\tgantt.config.resource_store = \"resource\";\n\tgantt.config.resource_render_empty_cells = false;\n\n\tgantt.templates.resource_cell_class = function(start, end, resource, tasks){\n\t\tvar css = \"\";\n\t\tif (tasks.length <= 1) {\n\t\t\tcss = \"gantt_resource_marker_ok\";\n\t\t} else {\n\t\t\tcss = \"gantt_resource_marker_overtime\";\n\t\t}\n\t\treturn css;\n\t};\n\n\tgantt.templates.resource_cell_value = function(start, end, resource, tasks){\n\t\treturn tasks.length * 8;\n\t};\n};\n\n\n","if (window.dhtmlx){\n\n\tif (!dhtmlx.attaches)\n\t\tdhtmlx.attaches = {};\n\n\tdhtmlx.attaches.attachGantt=function(start, end, gantt){\n\t\tvar obj = document.createElement(\"DIV\");\n\n\t\tgantt = gantt || window.gantt;\n\n\t\tobj.id = \"gantt_\"+ gantt.uid();\n\t\tobj.style.width = \"100%\";\n\t\tobj.style.height = \"100%\";\n\t\tobj.cmp = \"grid\";\n\n\t\tdocument.body.appendChild(obj);\n\t\tthis.attachObject(obj.id);\n\t\tthis.dataType = \"gantt\";\n\t\tthis.dataObj = gantt;\n\n\t\tvar that = this.vs[this.av];\n\t\tthat.grid = gantt;\n\n\t\tgantt.init(obj.id, start, end);\n\t\tobj.firstChild.style.border = \"none\";\n\n\t\tthat.gridId = obj.id;\n\t\tthat.gridObj = obj;\n\n\t\tvar method_name=\"_viewRestore\";\n\t\treturn this.vs[this[method_name]()].grid;\n\t};\n\n}\nif (typeof(window.dhtmlXCellObject) != \"undefined\") {\n\n\tdhtmlXCellObject.prototype.attachGantt=function(start, end, gantt){\n\t\tgantt = gantt || window.gantt;\n\n\t\tvar obj = document.createElement(\"DIV\");\n\t\tobj.id = \"gantt_\"+gantt.uid();\n\t\tobj.style.width = \"100%\";\n\t\tobj.style.height = \"100%\";\n\t\tobj.cmp = \"grid\";\n\n\t\tdocument.body.appendChild(obj);\n\t\tthis.attachObject(obj.id);\n\n\t\tthis.dataType = \"gantt\";\n\t\tthis.dataObj = gantt;\n\n\t\tgantt.init(obj.id, start, end);\n\t\tobj.firstChild.style.border = \"none\";\n\t\tvar method_name=\"_viewRestore\";\n\t\tobj = null;\n\t\tthis.callEvent(\"_onContentAttach\",[]);\n\n\t\treturn this.dataObj;\n\t};\n}\n\nmodule.exports = null;","if (window.jQuery){\n\n\t(function( $ ){\n\n\t\tvar methods = [];\n\t\t$.fn.dhx_gantt = function(config){\n\t\t\tconfig = config || {};\n\t\t\tif (typeof(config) === 'string') {\n\t\t\t\tif (methods[config] ) {\n\t\t\t\t\treturn methods[config].apply(this, []);\n\t\t\t\t}else {\n\t\t\t\t\t$.error('Method ' + config + ' does not exist on jQuery.dhx_gantt');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar views = [];\n\t\t\t\tthis.each(function() {\n\t\t\t\t\tif (this && this.getAttribute){\n\t\t\t\t\t\tif (!this.gantt && !(window.gantt.$root == this)){\n\n\t\t\t\t\t\t\tvar newgantt = (window.gantt.$container && window.Gantt) ? window.Gantt.getGanttInstance():window.gantt;\n\t\t\t\t\t\t\tfor (var key in config)\n\t\t\t\t\t\t\t\tif (key!=\"data\")\n\t\t\t\t\t\t\t\t\tnewgantt.config[key] = config[key];\n\n\t\t\t\t\t\t\tnewgantt.init(this);\n\t\t\t\t\t\t\tif (config.data)\n\t\t\t\t\t\t\t\tnewgantt.parse(config.data);\n\n\t\t\t\t\t\t\tviews.push(newgantt);\n\t\t\t\t\t\t} else\n\t\t\t\t\t\t\tviews.push(typeof this.gantt == \"object\" ? this.gantt : window.gantt);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\n\t\t\t\tif (views.length === 1) return views[0];\n\t\t\t\treturn views;\n\t\t\t}\n\t\t};\n\n\t})(jQuery);\n\n}\n\n\nmodule.exports = null;","var createWbs = (function(gantt){\n\treturn {\n\t_needRecalc: true,\n\treset: function(){\n\t\tthis._needRecalc = true;\n\t},\n\t_isRecalcNeeded: function(){\n\t\treturn (!this._isGroupSort() && this._needRecalc);\n\t},\n\t_isGroupSort: function() {\n\t\treturn !!(gantt._groups && gantt._groups.is_active());\n\t},\n\t_getWBSCode: function(task) {\n\t\tif(!task) return \"\";\n\n\t\tif(this._isRecalcNeeded()){\n\t\t\tthis._calcWBS();\n\t\t}\n\n\t\tif(task.$virtual) return \"\";\n\t\tif(this._isGroupSort()) return task.$wbs || \"\";\n\n\t\tif(!task.$wbs) {\n\t\t\tthis.reset();\n\t\t\tthis._calcWBS();\n\t\t}\n\t\treturn task.$wbs;\n\t},\n\t_setWBSCode: function(task, value) {\n\t\ttask.$wbs = value;\n\t},\n\tgetWBSCode: function(task) {\n\t\treturn this._getWBSCode(task);\n\t},\n\tgetByWBSCode: function(code){\n\t\tvar parts = code.split(\".\");\n\t\tvar currentNode = gantt.config.root_id;\n\t\tfor(var i = 0; i < parts.length; i++){\n\t\t\tvar children = gantt.getChildren(currentNode);\n\t\t\tvar index = parts[i]*1 - 1;\n\t\t\tif(gantt.isTaskExists(children[index])){\n\t\t\t\tcurrentNode = children[index];\n\t\t\t}else{\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\tif(gantt.isTaskExists(currentNode)){\n\t\t\treturn gantt.getTask(currentNode);\n\t\t}else{\n\t\t\treturn null;\n\t\t}\n\t},\n\t_calcWBS: function() {\n\t\tif(!this._isRecalcNeeded()) return;\n\n\t\tvar _isFirst = true;\n\t\tgantt.eachTask(function(ch) {\n\t\t\tif(_isFirst) {\n\t\t\t\t_isFirst = false;\n\t\t\t\tthis._setWBSCode(ch, \"1\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar _prevSibling = gantt.getPrevSibling(ch.id);\n\t\t\tif (_prevSibling !== null) {\n\t\t\t\tvar _wbs = gantt.getTask(_prevSibling).$wbs;\n\t\t\t\tif(_wbs) {\n\t\t\t\t\t_wbs = _wbs.split(\".\");\n\t\t\t\t\t_wbs[_wbs.length-1]++;\n\t\t\t\t\tthis._setWBSCode(ch, _wbs.join(\".\"));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvar _parent = gantt.getParent(ch.id);\n\t\t\t\tthis._setWBSCode(ch, gantt.getTask(_parent).$wbs + \".1\");\n\t\t\t}\n\t\t}, gantt.config.root_id, this);\n\n\t\tthis._needRecalc = false;\n\t}\n};\n});\n\nmodule.exports = function(gantt){\n\tvar wbs = createWbs(gantt);\n\tgantt.getWBSCode = function getWBSCode(task) {\n\t\treturn wbs.getWBSCode(task);\n\t};\n\n\tgantt.getTaskByWBSCode = function(code) {\n\t\treturn wbs.getByWBSCode(code);\n\t};\n\n\tgantt.attachEvent(\"onAfterTaskMove\", function() {\n\t\twbs.reset();\n\t\treturn true;\n\t});\n\n\tgantt.attachEvent(\"onBeforeParse\", function() {\n\t\twbs.reset();\n\t\treturn true;\n\t});\n\n\tgantt.attachEvent(\"onAfterTaskDelete\", function() {\n\t\twbs.reset();\n\t\treturn true;\n\t});\n\n\tgantt.attachEvent(\"onAfterTaskAdd\", function() {\n\t\twbs.reset();\n\t\treturn true;\n\t});\n};\n","function createMethod(gantt){\n\tvar methods = {};\n\tvar isActive = false;\n\tfunction disableMethod(methodName, dummyMethod){\n\t\tdummyMethod = typeof dummyMethod == \"function\" ? dummyMethod : function(){};\n\n\t\tif(!methods[methodName]){\n\t\t\tmethods[methodName] = this[methodName];\n\t\t\tthis[methodName] = dummyMethod;\n\t\t}\n\t}\n\tfunction restoreMethod(methodName){\n\t\tif(methods[methodName]){\n\t\t\tthis[methodName] = methods[methodName];\n\t\t\tmethods[methodName] = null;\n\t\t}\n\t}\n\tfunction disableMethods(methodsHash){\n\t\tfor(var i in methodsHash){\n\t\t\tdisableMethod.call(this, i, methodsHash[i]);\n\t\t}\n\t}\n\t function restoreMethods(){\n\t\tfor(var i in methods){\n\t\t\trestoreMethod.call(this, i);\n\t\t}\n\t}\n\n\tfunction batchUpdatePayload(callback){\n\t\ttry{\n\t\t\tcallback();\n\t\t}catch(e){\n\t\t\twindow.console.error(e);\n\t\t}\n\t}\n\n\tvar state = gantt.$services.getService(\"state\");\n\tstate.registerProvider(\"batchUpdate\", function(){\n\t\treturn {\n\t\t\tbatch_update: isActive\n\t\t};\n\t}, true);\n\n\treturn function batchUpdate(callback, noRedraw) {\n\t\tif(isActive){\n\t\t\t// batch mode is already active\n\t\t\tbatchUpdatePayload(callback);\n\t\t\treturn;\n\t\t}\n\n\t\tvar call_dp = (this._dp && this._dp.updateMode != \"off\");\n\t\tvar dp_mode;\n\t\tif (call_dp){\n\t\t\tdp_mode = this._dp.updateMode;\n\t\t\tthis._dp.setUpdateMode(\"off\");\n\t\t}\n\n\t\t// temporary disable some methods while updating multiple tasks\n\t\tvar resetProjects = {};\n\t\tvar methods = {\n\t\t\t\"render\":true,\n\t\t\t\"refreshData\":true,\n\t\t\t\"refreshTask\":true,\n\t\t\t\"refreshLink\":true,\n\t\t\t\"resetProjectDates\":function(task){\n\t\t\t\tresetProjects[task.id] = task;\n\t\t\t}\n\t\t};\n\n\t\tdisableMethods.call(this, methods);\n\n\t\tisActive = true;\n\t\tthis.callEvent(\"onBeforeBatchUpdate\", []);\n\n\t\tbatchUpdatePayload(callback);\n\n\t\tthis.callEvent(\"onAfterBatchUpdate\", []);\n\n\t\trestoreMethods.call(this);\n\n\t\t// do required updates after changes applied\n\t\tfor(var i in resetProjects){\n\t\t\tthis.resetProjectDates(resetProjects[i]);\n\t\t}\n\n\t\tisActive = false;\n\n\t\tif(!noRedraw){\n\t\t\tthis.render();\n\t\t}\n\n\t\tif (call_dp) {\n\t\t\tthis._dp.setUpdateMode(dp_mode);\n\t\t\tthis._dp.setGanttMode(\"tasks\");\n\t\t\tthis._dp.sendData();\n\t\t\tthis._dp.setGanttMode(\"links\");\n\t\t\tthis._dp.sendData();\n\t\t}\n\t};\n\n\n\n}\n\nmodule.exports = function(gantt){\n\tgantt.batchUpdate = createMethod(gantt);\n};","var domHelpers = require(\"../../utils/dom_helpers\");\n\nmodule.exports = function(gantt){\n\n\tvar scrollRange = 50,\n\t\tscrollStep = 30,\n\t\tscrollDelay = 10,\n\t\tscrollSpeed = 50;\n\n\tvar interval = null,\n\t\tisMove = false,\n\t\tdelayTimeout = null,\n\t\tbox = {},\n\t\tstartPos = {\n\t\t\tstarted: false\n\t\t},\n\t\teventPos = {};\n\n\tfunction getAutoscrollContainer(){\n\t\treturn gantt.$task || gantt.$grid || gantt.$root;\n\t}\n\n\tfunction isScrollState() {\n\t\tvar dragMarker = !!document.querySelector(\".gantt_drag_marker\");\n\t\tvar isResize = !!document.querySelector(\".gantt_drag_marker.gantt_grid_resize_area\");\n\t\tvar isLink = !!document.querySelector(\".gantt_link_direction\");\n\t\tisMove = dragMarker && !isResize && !isLink;\n\t\treturn !((!gantt.getState().drag_mode && !dragMarker) || isResize);\n\t}\n\n\tfunction defineDelayTimeout(state) {\n\t\tif (delayTimeout) {\n\t\t\tclearTimeout(delayTimeout);\n\t\t\tdelayTimeout = null;\n\t\t}\n\t\tif (state) {\n\t\t\tvar speed = gantt.config.autoscroll_speed;\n\t\t\tif (speed && speed < 10) // limit speed value to 10 \n\t\t\t\tspeed = 10;\n\n\t\t\tdelayTimeout = setTimeout(function() {\n\t\t\t\tinterval = setInterval(tick, speed || scrollSpeed);\n\t\t\t\tbox = domHelpers.getNodePosition(getAutoscrollContainer());\n\t\t\t}, gantt.config.autoscroll_delay || scrollDelay);\n\t\t}\n\t}\n\n\tfunction defineScrollInterval(state) {\n\t\tif (state) {\n\t\t\tdefineDelayTimeout(true);\n\t\t\tif (!startPos.started) {\n\t\t\t\tstartPos.x = eventPos.x;\n\t\t\t\tstartPos.y = eventPos.y;\n\t\t\t\tstartPos.started = true;\n\t\t\t}\n\t\t} else {\n\t\t\tif (interval) {\n\t\t\t\tclearInterval(interval);\n\t\t\t\tinterval = null;\n\t\t\t}\n\t\t\tdefineDelayTimeout(false);\n\t\t\tstartPos.started = false;\n\t\t}\n\t}\n\n\tfunction autoscrollInterval(event) {\n\n\t\tvar isScroll = isScrollState();\n\n\t\tif ((interval || delayTimeout) && !isScroll) { \n\t\t\tdefineScrollInterval(false);\n\t\t}\n\n\t\tif (!gantt.config.autoscroll || !isScroll) {\n\t\t\treturn false;\n\t\t}\n\n\t\teventPos = {\n\t\t\tx: event.clientX,\n\t\t\ty: event.clientY\n\t\t};\n\n\t\tif (!interval && isScroll) {\n\t\t\tdefineScrollInterval(true);\n\t\t}\n\t}\n\n\tfunction tick() {\n\n\t\tif (!isScrollState()) {\n\t\t\tdefineScrollInterval(false);\n\t\t\treturn false;\n\t\t}\n\n\t\tvar box = domHelpers.getNodePosition(getAutoscrollContainer());\n\t\tvar posX = eventPos.x - box.x; \n\t\tvar posY = eventPos.y - box.y;\n\n\t\tvar scrollLeft = isMove ? 0 : need_scroll(posX, box.width, startPos.x - box.x);\n\t\tvar scrollTop = need_scroll(posY, box.height, startPos.y - box.y);\n\n\t\tvar scrollState = gantt.getScrollState();\n\n\t\tvar currentScrollTop = scrollState.y,\n\t\t\tscrollOuterHeight = scrollState.inner_height,\n\t\t\tscrollInnerHeight = scrollState.height,\n\t\t\tcurrentScrollLeft = scrollState.x,\n\t\t\tscrollOuterWidth = scrollState.inner_width,\n\t\t\tscrollInnerWidth = scrollState.width;\n\n\t\t// do scrolling only if we have scrollable area to do so\n\t\tif (scrollTop && !scrollOuterHeight) {\n\t\t\tscrollTop = 0;\n\t\t} else if (scrollTop < 0 && !currentScrollTop) {\n\t\t\tscrollTop = 0;\n\t\t} else if (scrollTop > 0 && currentScrollTop + scrollOuterHeight >= scrollInnerHeight + 2) {\n\t\t\tscrollTop = 0;\n\t\t}\n\n\t\tif (scrollLeft && !scrollOuterWidth) {\n\t\t\tscrollLeft = 0;\n\t\t} else if (scrollLeft < 0 && !currentScrollLeft) {\n\t\t\tscrollLeft = 0;\n\t\t} else if (scrollLeft > 0 && currentScrollLeft + scrollOuterWidth >= scrollInnerWidth) {\n\t\t\tscrollLeft = 0;\n\t\t}\n\n\t\tvar step = gantt.config.autoscroll_step;\n\n\t\tif (step && step < 2) // limit step value to 2\n\t\t\tstep = 2;\n\n\t\tscrollLeft = scrollLeft * (step || scrollStep);\n\t\tscrollTop = scrollTop * (step || scrollStep);\n\n\t\tif (scrollLeft || scrollTop) {\n\t\t\tscroll(scrollLeft, scrollTop);\n\t\t} \n\n\t}\n\n\tfunction need_scroll(pos, boxSize, startCoord) {\n\t\tif ((pos - scrollRange < 0) && (pos < startCoord))\n\t\t\treturn -1;\n\t\telse if ((pos > boxSize - scrollRange) && (pos > startCoord))\n\t\t\treturn 1;\n\t\treturn 0;\n\t}\n\n\tfunction scroll(left, top) {\n\t\tvar scrollState = gantt.getScrollState();\n\n\t\tvar scrollLeft = null,\n\t\t\tscrollTop = null;\n\n\t\tif (left) {\n\t\t\tscrollLeft = scrollState.x + left;\n\t\t\tscrollLeft = Math.min(scrollState.width, scrollLeft);\n\t\t\tscrollLeft = Math.max(0, scrollLeft);\n\t\t}\n\n\t\tif (top) {\n\t\t\tscrollTop = scrollState.y + top;\n\t\t\tscrollTop = Math.min(scrollState.height, scrollTop);\n\t\t\tscrollTop = Math.max(0, scrollTop);\n\t\t}\n\n\t\tgantt.scrollTo(scrollLeft, scrollTop);\n\t}\n\n\tgantt.attachEvent(\"onGanttReady\", function() {\n\t\tgantt.eventRemove(document.body, \"mousemove\", autoscrollInterval);\n\t\tgantt.event(document.body, \"mousemove\", autoscrollInterval);\n\t});\n\n};","module.exports = function(gantt){\n\tvar modules = [\n\t\trequire(\"./autoscroll\"),\n\t\trequire(\"./batch_update\"),\n\t\trequire(\"./wbs\"),\n\t\trequire(\"./jquery_hooks\"),\n\t\trequire(\"./dhtmlx_hooks\"),\n\t\trequire(\"./resources\"),\n\t\trequire(\"./new_task_placeholder\"),\n\t\trequire(\"./auto_task_types\")\n\t];\n\n\tfor(var i = 0; i < modules.length; i++){\n\t\tif(modules[i])\n\t\t\tmodules[i](gantt);\n\t}\n};","var utils = require(\"../../utils/utils\");\nvar eventable = require(\"../../utils/eventable\");\n\n/**\n\t* \t@desc: constructor, data processor object \n\t*\t@param: serverProcessorURL - url used for update\n\t*\t@type: public\n\t*/\nvar dataProcessor = function(serverProcessorURL){\n this.serverProcessor = serverProcessorURL;\n this.action_param=\"!nativeeditor_status\";\n \n\tthis.object = null;\n\tthis.updatedRows = []; //ids of updated rows\n\t\n\tthis.autoUpdate = true;\n\tthis.updateMode = \"cell\";\n\tthis._tMode=\"GET\"; \n\tthis._headers = null;\n\tthis._payload = null;\n\tthis.post_delim = \"_\";\n\t\n this._waitMode=0;\n this._in_progress={};//?\n this._invalid={};\n this.mandatoryFields=[];\n this.messages=[];\n \n this.styles={\n \tupdated:\"font-weight:bold;\",\n \tinserted:\"font-weight:bold;\",\n \tdeleted:\"text-decoration : line-through;\",\n \tinvalid:\"background-color:FFE0E0;\",\n \tinvalid_cell:\"border-bottom:2px solid red;\",\n \terror:\"color:red;\",\n \tclear:\"font-weight:normal;text-decoration:none;\"\n };\n \n this.enableUTFencoding(true);\n\teventable(this);\n\n return this;\n};\n\ndataProcessor.prototype={\n\tsetTransactionMode:function(mode,total){\n\t\tif (typeof mode == \"object\"){\n\t\t\tthis._tMode = mode.mode || this._tMode;\n\n\t\t\tif(utils.defined(mode.headers)){\n\t\t\t\tthis._headers = mode.headers;\n\t\t\t}\n\n\t\t\tif(utils.defined(mode.payload)){\n\t\t\t\tthis._payload = mode.payload;\n\t\t\t}\n\t\t\t\n\t\t} else {\n \t this._tMode=mode;\n\t\t\tthis._tSend=total;\n\t\t}\n\n\t\tif (this._tMode == \"REST\"){\n\t\t\tthis._tSend = false;\n\t\t\tthis._endnm = true;\n\t\t}\n\n\t\tif (this._tMode == \"JSON\"){\n\t\t\tthis._tSend = false;\n\t\t\tthis._endnm = true;\n\t\t\tthis._headers = this._headers || {};\n\t\t\tthis._headers[\"Content-type\"] = \"application/json\";\n\t\t}\n },\n escape:function(data){\n \tif (this._utf)\n \t\treturn encodeURIComponent(data);\n \telse\n \treturn escape(data);\n\t},\n /**\n\t* \t@desc: allows to set escaping mode\n\t*\t@param: true - utf based escaping, simple - use current page encoding\n\t*\t@type: public\n\t*/\t\n\tenableUTFencoding:function(mode){\n this._utf=!!mode;\n },\n /**\n\t* \t@desc: allows to define, which column may trigger update\n\t*\t@param: val - array or list of true/false values\n\t*\t@type: public\n\t*/\n\tsetDataColumns:function(val){\n\t\tthis._columns=(typeof val == \"string\")?val.split(\",\"):val;\n },\n /**\n\t* \t@desc: get state of updating\n\t*\t@returns: true - all in sync with server, false - some items not updated yet.\n\t*\t@type: public\n\t*/\n\tgetSyncState:function(){\n\t\treturn !this.updatedRows.length;\n\t},\n\t/**\n\t* \t@desc: enable/disable named field for data syncing, will use column ids for grid\n\t*\t@param: mode - true/false\n\t*\t@type: public\n\t*/\n\tenableDataNames:function(mode){\n\t\tthis._endnm= !!mode;\n\t},\n\t/**\n\t* \t@desc: enable/disable mode , when only changed fields and row id send to the server side, instead of all fields in default mode\n\t*\t@param: mode - true/false\n\t*\t@type: public\n\t*/\n\tenablePartialDataSend:function(mode){\n\t\tthis._changed= !!mode;\n\t},\n\t/**\n\t* \t@desc: set if rows should be send to server automaticaly\n\t*\t@param: mode - \"row\" - based on row selection changed, \"cell\" - based on cell editing finished, \"off\" - manual data sending\n\t*\t@type: public\n\t*/\n\tsetUpdateMode:function(mode,dnd){\n\t\tthis.autoUpdate = (mode==\"cell\");\n\t\tthis.updateMode = mode;\n\t\tthis.dnd=dnd;\n\t},\n\tignore:function(code,master){\n\t\tthis._silent_mode=true;\n\t\tcode.call(master||window);\n\t\tthis._silent_mode=false;\n\t},\n\t/**\n\t* \t@desc: mark row as updated/normal. check mandatory fields,initiate autoupdate (if turned on)\n\t*\t@param: rowId - id of row to set update-status for\n\t*\t@param: state - true for \"updated\", false for \"not updated\"\n\t*\t@param: mode - update mode name\n\t*\t@type: public\n\t*/\n\tsetUpdated:function(rowId,state,mode){\n\t\tif (this._silent_mode) return;\n\t\tvar ind=this.findRow(rowId);\n\t\t\n\t\tmode=mode||\"updated\";\n\t\tvar existing = this.obj.getUserData(rowId,this.action_param);\n\t\tif (existing && mode == \"updated\") mode=existing;\n\t\tif (state){\n\t\t\tthis.set_invalid(rowId,false); //clear previous error flag\n\t\t\tthis.updatedRows[ind]=rowId;\n\t\t\tthis.obj.setUserData(rowId,this.action_param,mode);\n\t\t\tif (this._in_progress[rowId]) \n\t\t\t\tthis._in_progress[rowId]=\"wait\";\n\t\t} else{\n\t\t\tif (!this.is_invalid(rowId)){\n\t\t\t\tthis.updatedRows.splice(ind,1);\n\t\t\t\tthis.obj.setUserData(rowId,this.action_param,\"\");\n\t\t\t}\n\t\t}\n\n\t\t//clear changed flag\n\t\tif (!state)\n\t\t\tthis._clearUpdateFlag(rowId);\n \t\t\t\n\t\tthis.markRow(rowId,state,mode);\n\t\tif (state && this.autoUpdate) this.sendData(rowId);\n\t},\n\t_clearUpdateFlag:function(id){},\n\tmarkRow:function(id,state,mode){ \n\t\tvar str=\"\";\n\t\tvar invalid=this.is_invalid(id);\n\t\tif (invalid){\n \tstr=this.styles[invalid];\n \tstate=true;\n \t}\n\t\tif (this.callEvent(\"onRowMark\",[id,state,mode,invalid])){\n\t\t\t//default logic\n\t\t\tstr=this.styles[state?mode:\"clear\"]+str;\n\t\t\t\n \tthis.obj[this._methods[0]](id,str);\n\n\t\t\tif (invalid && invalid.details){\n\t\t\t\tstr+=this.styles[invalid+\"_cell\"];\n\t\t\t\tfor (var i=0; i < invalid.details.length; i++)\n\t\t\t\t\tif (invalid.details[i])\n \t\t\t\tthis.obj[this._methods[1]](id,i,str);\n\t\t\t}\n\t\t}\n\t},\n\tgetState:function(id){\n\t\treturn this.obj.getUserData(id,this.action_param);\n\t},\n\tis_invalid:function(id){\n\t\treturn this._invalid[id];\n\t},\n\tset_invalid:function(id,mode,details){ \n\t\tif (details) mode={value:mode, details:details, toString:function(){ return this.value.toString(); }};\n\t\tthis._invalid[id]=mode;\n\t},\n\t/**\n\t* \t@desc: check mandatory fields and varify values of cells, initiate update (if specified)\n\t*\t@param: rowId - id of row to set update-status for\n\t*\t@type: public\n\t*/\n\tcheckBeforeUpdate:function(rowId){ \n\t\treturn true;\n\t},\n\t/**\n\t* \t@desc: send row(s) values to server\n\t*\t@param: rowId - id of row which data to send. If not specified, then all \"updated\" rows will be send\n\t*\t@type: public\n\t*/\n\tsendData:function(rowId){\n\t\tif (this._waitMode && (this.obj.mytype==\"tree\" || this.obj._h2)) return;\n\t\tif (this.obj.editStop) this.obj.editStop();\n\t\n\t\t\n\t\tif(typeof rowId == \"undefined\" || this._tSend) return this.sendAllData();\n\t\tif (this._in_progress[rowId]) return false;\n\t\t\n\t\tthis.messages=[];\n\t\tif (!this.checkBeforeUpdate(rowId) && this.callEvent(\"onValidationError\",[rowId,this.messages])) return false;\n\t\tthis._beforeSendData(this._getRowData(rowId),rowId);\n },\n _beforeSendData:function(data,rowId){\n \tif (!this.callEvent(\"onBeforeUpdate\",[rowId,this.getState(rowId),data])) return false;\t\n\t\tthis._sendData(data,rowId);\n },\n serialize:function(data, id){\n \tif (typeof data == \"string\")\n \t\treturn data;\n \tif (typeof id != \"undefined\")\n \t\treturn this.serialize_one(data,\"\");\n \telse{\n \t\tvar stack = [];\n \t\tvar keys = [];\n \t\tfor (var key in data)\n \t\t\tif (data.hasOwnProperty(key)){\n \t\t\t\tstack.push(this.serialize_one(data[key],key+this.post_delim));\n \t\t\t\tkeys.push(key);\n\t\t\t\t}\n \t\tstack.push(\"ids=\"+this.escape(keys.join(\",\")));\n \t\tif (this.$gantt.security_key)\n\t\t\t\tstack.push(\"dhx_security=\"+this.$gantt.security_key);\n \t\treturn stack.join(\"&\");\n \t}\n },\n serialize_one:function(data, pref){\n \tif (typeof data == \"string\")\n \t\treturn data;\n \tvar stack = [];\n \tfor (var key in data)\n \t\tif (data.hasOwnProperty(key)){\n \t\t\tif ((key == \"id\" || key == this.action_param) && this._tMode == \"REST\") continue;\n \t\t\tstack.push(this.escape((pref||\"\")+key)+\"=\"+this.escape(data[key]));\n \t\t}\n\t\treturn stack.join(\"&\");\n },\n\t_applyPayload:function(url){\n\t\tvar ajax = this.$gantt.ajax;\n\t\tif (this._payload)\n\t\t\tfor (var key in this._payload)\n\t\t\t\turl = url + ajax.urlSeparator(url) + this.escape(key) + \"=\" + this.escape(this._payload[key]);\n\t\treturn url;\n\t},\n _sendData:function(a1,rowId){\n \tif (!a1) return; //nothing to send\n\t\tif (!this.callEvent(\"onBeforeDataSending\",rowId?[rowId,this.getState(rowId),a1]:[null, null, a1])) return false;\t\t\t\t\n\t\t\n \tif (rowId)\n\t\t\tthis._in_progress[rowId]=(new Date()).valueOf();\n\n\t\tvar that = this;\n\t\tvar back = function(xml){\n\t\t\tvar ids = [];\n\t\t\tif (rowId)\n\t\t\t\tids.push(rowId);\n\t\t\telse if (a1)\n\t\t\t\tfor (var key in a1)\n\t\t\t\t\tids.push(key);\n\n\t\t\treturn that.afterUpdate(that,xml,ids);\n\t\t};\n\t\tvar ajax = this.$gantt.ajax;\n\n\t\tvar a3 = this.serverProcessor+(this._user?(ajax.urlSeparator(this.serverProcessor)+[\"dhx_user=\"+this._user,\"dhx_version=\"+this.obj.getUserData(0,\"version\")].join(\"&\")):\"\");\n\t\tvar a4 = this._applyPayload(a3);\n\n\t\tif (this._tMode==\"GET\") {\n\t\t\tajax.query({\n\t\t\t\turl: a4 + ajax.urlSeparator(a4) + this.serialize(a1, rowId),\n\t\t\t\tmethod: \"GET\",\n\t\t\t\tcallback: back,\n\t\t\t\theaders: this._headers\n\t\t\t});\n\t\t} else if (this._tMode == \"POST\") {\n\t\t\tajax.query({\n\t\t\t\turl: a4,\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: this._headers,\n\t\t\t\tdata: this.serialize(a1, rowId),\n\t\t\t\tcallback: back\n\t\t\t});\n\t\t} else if (this._tMode == \"JSON\"){\n\t\t\tvar action = a1[this.action_param];\n\t\t\tvar data = {};\n\t\t\tfor (var key in a1) data[key] = a1[key];\n\t\t\tdelete data[this.action_param];\n\t\t\tdelete data.id;\n\t\t\tdelete data.gr_id;\n\n\t\t\tajax.query({\n\t\t\t\turl:a4,\n\t\t\t\tmethod:\"POST\",\n\t\t\t\theaders:this._headers,\n\t\t\t\tcallback:back,\n\t\t\t\tdata:JSON.stringify({\n\t\t\t\t\tid: rowId,\n\t\t\t\t\taction: action,\n\t\t\t\t\tdata: data\n\t\t\t\t})\n\t\t\t});\n\t\t}\n else if (this._tMode == \"REST\"){\n \tvar state = this.getState(rowId);\n \tvar url = a3.replace(/(\\&|\\?)editing\\=true/,\"\");\n \tvar data = \"\";\n \tvar method = \"post\";\n\n \tif (state == \"inserted\"){\n \t\tdata = this.serialize(a1, rowId);\n \t} else if (state == \"deleted\"){\n \t\tmethod = \"DELETE\";\n \t\turl = url + (url.slice(-1) == \"/\" ? \"\" : \"/\") + rowId;\n \t} else {\n \t\tmethod = \"PUT\";\n \t\tdata = this.serialize(a1, rowId);\n \t\turl = url + (url.slice(-1) == \"/\" ? \"\" : \"/\") + rowId;\n \t}\n\n\n \turl = this._applyPayload(url);\n \tajax.query({\n \t\turl:url,\n \t\tmethod:method,\n \t\theaders:this._headers,\n \t\tdata:data,\n \t\tcallback:back\n \t});\n }\n\n\t\tthis._waitMode++;\n },\n\tsendAllData:function(){\n\t\tif (!this.updatedRows.length) return;\t\t\t\n\n\t\tthis.messages=[]; var valid=true;\n\t\tfor (var i=0; i reqUrl.indexOf(\"/task\")){\n\t\t\t\t\tmode = \"links\";\n\t\t\t\t}else{\n\t\t\t\t\tmode = \"tasks\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tdp.setGanttMode(mode);\n\n\t\t\tvar res = oldAfterUpdate.apply(dp, arguments);\n\t\t\tdp.setGanttMode(mode);\n\t\t\treturn res;\n\t\t};\n\n\t\tdp._getRowData=gantt.bind(function(id, pref) {\n\t\t\tvar task;\n\t\t\tif (dp._ganttMode == \"tasks\")\n\t\t\t\ttask = this.isTaskExists(id) ? this.getTask(id) : { id: id };\n\t\t\telse\n\t\t\t\ttask = this.isLinkExists(id) ? this.getLink(id) : { id: id };\n\n\t\t\ttask = gantt.copy(task);\n\n\t\t\tvar data = {};\n\t\t\tfor (var key in task) {\n\t\t\t\tif (key.substr(0, 1) == \"$\") continue;\n\t\t\t\tvar value = task[key];\n\t\t\t\tif (dateHelper.isDate(value))\n\t\t\t\t\tdata[key] = this.templates.xml_format(value);\n\t\t\t\telse if(value === null)\n\t\t\t\t\tdata[key] = \"\";\n\t\t\t\telse\n\t\t\t\t\tdata[key] = value;\n\t\t\t}\n\n\t\t\tvar taskTiming = this._get_task_timing_mode(task);\n\t\t\tif(taskTiming.$no_start){\n\t\t\t\ttask.start_date = \"\";\n\t\t\t\ttask.duration = \"\";\n\t\t\t}\n\t\t\tif(taskTiming.$no_end){\n\t\t\t\ttask.end_date = \"\";\n\t\t\t\ttask.duration = \"\";\n\t\t\t}\n\t\t\tdata[dp.action_param] = this.getUserData(id, dp.action_param);\n\t\t\treturn data;\n\t\t}, gantt);\n\t}\n\n\tfunction extendGantt(gantt, dp){\n\t\tgantt._change_id = gantt.bind(function(oldid, newid) {\n\t\t\tif (dp._ganttMode != \"tasks\")\n\t\t\t\tthis.changeLinkId(oldid, newid);\n\t\t\telse\n\t\t\t\tthis.changeTaskId(oldid, newid);\n\t\t}, this);\n\n\t\tgantt._row_style = function(row_id, classname){\n\t\t\tif (dp._ganttMode != \"tasks\") return;\n\t\t\tif(!gantt.isTaskExists(row_id))\n\t\t\t\treturn;\n\n\t\t\tvar task = gantt.getTask(row_id);\n\t\t\ttask.$dataprocessor_class = classname;\n\t\t\tgantt.refreshTask(row_id);\n\t\t};\n\n\t\t// fake method for dataprocessor\n\t\tgantt._delete_task = function(row_id, node){};\n\n\t\tgantt._sendTaskOrder = function(id, item){\n\t\t\tif(item.$drop_target){\n\t\t\t\tdp.setGanttMode(\"tasks\");\n\t\t\t\tthis.getTask(id).target = item.$drop_target;\n\t\t\t\tdp.setUpdated(id, true,\"order\");\n\t\t\t\tdelete this.getTask(id).$drop_target;\n\t\t\t}\n\t\t};\n\n\t\tthis._dp = dp;\n\t}\n\n\tfunction attachDataProcessorEvents(gantt, dp){\n\t\tfunction clientSideDelete(id){\n\t\t\tvar updated = dp.updatedRows.slice();\n\t\t\tvar clientOnly = false;\n\n\t\t\tfor(var i = 0; i < updated.length && !dp._in_progress[id]; i++){\n\t\t\t\tif(updated[i] == id ){\n\t\t\t\t\tif(gantt.getUserData(id, \"!nativeeditor_status\") == \"inserted\"){\n\t\t\t\t\t\tclientOnly = true;\n\t\t\t\t\t}\n\t\t\t\t\tdp.setUpdated(id,false);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn clientOnly;\n\t\t}\n\n\t\tfunction getTaskLinks(task){\n\t\t\tvar links = [];\n\n\t\t\tif (task.$source) {\n\t\t\t\tlinks = links.concat(task.$source);\n\t\t\t}\n\t\t\tif (task.$target) {\n\t\t\t\tlinks = links.concat(task.$target);\n\t\t\t}\n\n\t\t\treturn links;\n\t\t}\n\n\t\tdataProcessorHandlers.push(this.attachEvent(\"onAfterTaskAdd\", function(id, item) {\n\t\t\tdp.setGanttMode(\"tasks\");\n\t\t\tdp.setUpdated(id,true,\"inserted\");\n\t\t}));\n\t\tdataProcessorHandlers.push(this.attachEvent(\"onAfterTaskUpdate\", function(id, item) {\n\t\t\tdp.setGanttMode(\"tasks\");\n\t\t\tdp.setUpdated(id,true);\n\n\t\t\tgantt._sendTaskOrder(id, item);\n\t\t}));\n\n\t\tvar treeHelper = require(\"../../utils/task_tree_helpers\");\n\t\tvar cascadeDelete = {};\n\n\t\tdataProcessorHandlers.push(this.attachEvent(\"onBeforeTaskDelete\", function(id, item){\n\t\t\tif(!gantt.config.cascade_delete){\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tcascadeDelete[id] = {\n\t\t\t\ttasks: treeHelper.getSubtreeTasks(gantt, id),\n\t\t\t\tlinks: treeHelper.getSubtreeLinks(gantt, id)\n\t\t\t};\n\t\t\treturn true;\n\t\t}));\n\n\t\tdataProcessorHandlers.push(this.attachEvent(\"onAfterTaskDelete\", function(id, item) {\n\t\t\tdp.setGanttMode(\"tasks\");\n\n\t\t\t// not send delete request if item is not inserted into the db - just remove it from the client\n\t\t\tvar needDbDelete = !clientSideDelete(id);\n\t\t\tif(!needDbDelete)\n\t\t\t\treturn;\n\t\t\t\n\t\t\tif(gantt.config.cascade_delete && cascadeDelete[id]){\n\t\t\t\tvar dpMode = dp.updateMode;\n\t\t\t\tdp.setUpdateMode(\"off\");\n\n\t\t\t\tvar cascade = cascadeDelete[id];\n\t\t\t\tfor(var i in cascade.tasks){\n\t\t\t\t\tif(!clientSideDelete(i)){\n\t\t\t\t\t\tdp.setUpdated(i, true, \"deleted\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdp.setGanttMode(\"links\");\n\t\t\t\tfor(var i in cascade.links){\n\t\t\t\t\tif(!clientSideDelete(i)){\n\t\t\t\t\t\tdp.setUpdated(i, true, \"deleted\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcascadeDelete[id] = null;\n\n\t\t\t\tif(dpMode != \"off\"){\n\t\t\t\t\tdp.sendAllData();\n\t\t\t\t}\n\t\t\t\tdp.setGanttMode(\"tasks\");\n\n\t\t\t\tdp.setUpdateMode(dpMode);\n\n\t\t\t}\n\n\t\t\tdp.setUpdated(id,true,\"deleted\");\n\n\t\t\tif(dp.updateMode != 'off' && !dp._tSend){\n\t\t\t\tdp.sendAllData();\n\t\t\t}\n\n\t\t}));\n\t\tdataProcessorHandlers.push(this.attachEvent(\"onAfterLinkUpdate\", function(id, item) {\n\t\t\tdp.setGanttMode(\"links\");\n\t\t\tdp.setUpdated(id, true);\n\t\t}));\n\t\tdataProcessorHandlers.push(this.attachEvent(\"onAfterLinkAdd\", function(id, item) {\n\t\t\tdp.setGanttMode(\"links\");\n\t\t\tdp.setUpdated(id, true,\"inserted\");\n\t\t}));\n\t\tdataProcessorHandlers.push(this.attachEvent(\"onAfterLinkDelete\", function(id, item) {\n\t\t\tdp.setGanttMode(\"links\");\n\n\t\t\tvar needDbDelete = !clientSideDelete(id);\n\t\t\tif(!needDbDelete)\n\t\t\t\treturn;\n\n\t\t\tdp.setUpdated(id, true,\"deleted\");\n\t\t}));\n\t\tdataProcessorHandlers.push(this.attachEvent(\"onRowDragEnd\", function(id, target) {\n\t\t\tgantt._sendTaskOrder(id, gantt.getTask(id));\n\t\t}));\n\n\t\tvar tasks = null,\n\t\t\tlinks = null;\n\t\tdataProcessorHandlers.push(this.attachEvent(\"onTaskIdChange\",function(oldId, newId){\n\t\t\tif(!dp._waitMode) return;\n\n\t\t\tvar children = gantt.getChildren(newId);\n\t\t\tif(children.length) {\n\t\t\t\ttasks = tasks || {};\n\n\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\tvar ch = this.getTask(children[i]);\n\t\t\t\t\ttasks[ch.id] = ch;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar item = this.getTask(newId),\n\t\t\t\titemLinks = getTaskLinks(item);\n\n\t\t\tif(itemLinks.length) {\n\t\t\t\tlinks = links || {};\n\n\t\t\t\tfor (var i = 0; i < itemLinks.length; i++) {\n\t\t\t\t\tvar link = this.getLink(itemLinks[i]);\n\t\t\t\t\tlinks[link.id] = link;\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\n\t\tdp.attachEvent(\"onAfterUpdateFinish\", function(){\n\t\t\tif(tasks || links){\n\t\t\t\tgantt.batchUpdate(function(){\n\t\t\t\t\tfor(var id in tasks){\n\t\t\t\t\t\tgantt.updateTask(tasks[id].id);\n\t\t\t\t\t}\n\n\t\t\t\t\tfor(var id in links){\n\t\t\t\t\t\tgantt.updateLink(links[id].id);\n\t\t\t\t\t}\n\t\t\t\t\ttasks = null;\n\t\t\t\t\tlinks = null;\n\t\t\t\t});\n\t\t\t\tif(tasks) {\n\t\t\t\t\tgantt._dp.setGanttMode(\"tasks\");\n\t\t\t\t}else{\n\t\t\t\t\tgantt._dp.setGanttMode(\"links\");\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tdp.attachEvent(\"onBeforeDataSending\", function() {\n\t\t\tvar url = this._serverProcessor;\n\t\t\tif(this._tMode == \"REST\"){\n\t\t\t\tvar mode = this._ganttMode.substr(0, this._ganttMode.length - 1);// links, tasks -> /link/id, /task/id\n\n\t\t\t\turl = url.substring(0, url.indexOf(\"?\") > -1 ? url.indexOf(\"?\") : url.length);\n\t\t\t\t//editing=true&\n\t\t\t\tthis.serverProcessor = url + (url.slice(-1) == \"/\" ? \"\" : \"/\") + mode;\n\t\t\t}else{\n\t\t\t\tthis.serverProcessor = url + gantt.ajax.urlSeparator(url) + \"gantt_mode=\" + this._ganttMode;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t});\n\t}\n\n\tvar dataProcessorHandlers = [];\n\n\tgantt._dp_init = function(dp) {\n\t\tgantt.assert(!this._dp, \"The dataProcessor is already attached to this gantt instance\");\n\n\t\tdp.setTransactionMode(\"POST\", true);\n\t\tdp.serverProcessor += (dp.serverProcessor.indexOf(\"?\") != -1 ? \"&\" : \"?\") + \"editing=true\";\n\t\tdp._serverProcessor = dp.serverProcessor;\n\t\tdp.$gantt = this;\n\t\tdp.styles = {\n\t\t\tupdated:\"gantt_updated\",\n\t\t\torder:\"gantt_updated\",\n\t\t\tinserted:\"gantt_inserted\",\n\t\t\tdeleted:\"gantt_deleted\",\n\t\t\tinvalid:\"gantt_invalid\",\n\t\t\terror:\"gantt_error\",\n\t\t\tclear:\"\"\n\t\t};\n\n\t\tdp._methods=[\"_row_style\",\"setCellTextStyle\",\"_change_id\",\"_delete_task\"];\n\n\t\textendDataProcessor.call(this, gantt, dp);\n\t\textendGantt.call(this, gantt, dp);\n\t\tattachDataProcessorEvents.call(this, gantt, dp);\n\n\t\tdp.attachEvent(\"onDestroy\", function(){\n\t\t\tdetachDataProcessor(gantt, dp);\n\t\t});\n\t\tliveUpdateHooks(gantt, dp);\n\t};\n\n\tgantt.getUserData = function(id, name) {\n\t\tif (!this.userdata) this.userdata = {};\n\t\tif (this.userdata[id] && this.userdata[id][name]) return this.userdata[id][name];\n\t\treturn \"\";\n\t};\n\tgantt.setUserData = function(id, name, value) {\n\t\tif (!this.userdata) this.userdata = {};\n\t\tif (!this.userdata[id]) this.userdata[id] = {};\n\t\tthis.userdata[id][name] = value;\n\t};\n}\n\nmodule.exports = addDataProcessorHooks;\n","var storeRenderCreator = function(name, gantt){\n\tvar store = gantt.getDatastore(name);\n\n\tvar itemRepainter = {\n\t\trenderItem: function(id, renderer){\n\n\t\t\tvar renders = renderer.getLayers();\n\n\t\t\tvar item = store.getItem(id);\n\t\t\tif(item && store.isVisible(id)) {\n\t\t\t\tfor (var i = 0; i < renders.length; i++)\n\t\t\t\t\trenders[i].render_item(item);\n\t\t\t}\n\t\t},\n\t\trenderItems: function(renderer){\n\t\t\tvar renderers = renderer.getLayers();\n\t\t\tfor (var i = 0; i < renderers.length; i++) {\n\t\t\t\trenderers[i].clear();\n\t\t\t}\n\n\t\t\tvar data = store.getVisibleItems();\n\n\t\t\tfor (var i = 0; i < renderers.length; i++) {\n\t\t\t\trenderers[i].render_items(data);\n\t\t\t}\n\t\t}\n\t};\n\n\tfunction skipRepaint(gantt){\n\t\tvar state = gantt.$services.getService(\"state\");\n\t\tif(state.getState(\"batchUpdate\").batch_update){\n\t\t\treturn true;\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tstore.attachEvent(\"onStoreUpdated\", function(id, item, action){\n\t\tif(skipRepaint(gantt)){\n\t\t\treturn;\n\t\t}\n\n\t\tvar renderer = gantt.$services.getService(\"layers\").getDataRender(name);\n\n\t\tif(renderer){\n\t\t\tif(!id || action == \"move\" || action == \"delete\"){\n\t\t\t\tstore.callEvent(\"onBeforeRefreshAll\", []);\n\t\t\t\titemRepainter.renderItems(renderer);\n\t\t\t\tstore.callEvent(\"onAfterRefreshAll\", []);\n\t\t\t}else{\n\t\t\t\tstore.callEvent(\"onBeforeRefreshItem\", [item.id]);\n\t\t\t\titemRepainter.renderItem(item.id, renderer);\n\t\t\t\tstore.callEvent(\"onAfterRefreshItem\", [item.id]);\n\t\t\t}\n\t\t}\n\n\t});\n\n\t// TODO: probably can be done more in a more efficient way\n\tstore.attachEvent(\"onItemOpen\", function(){\n\t\tgantt.render();\n\t});\n\n\tstore.attachEvent(\"onItemClose\", function(){\n\t\tgantt.render();\n\t});\n\n\tfunction refreshId(renders, oldId, newId, item) {\n\t\tfor (var i = 0; i < renders.length; i++) {\n\t\t\trenders[i].change_id(oldId, newId);\n\t\t}\n\t}\n\n\tstore.attachEvent(\"onIdChange\", function(oldId, newId){\n\n\t\t// in case of linked datastores (tasks <-> links), id change should recalculate something in linked datastore before any repaint\n\t\t// use onBeforeIdChange for this hook.\n\t\t// TODO: use something more reasonable instead\n\t\tstore.callEvent(\"onBeforeIdChange\", [oldId, newId]);\n\n\t\tif(skipRepaint(gantt)){\n\t\t\treturn;\n\t\t}\n\t\tvar renderer = gantt.$services.getService(\"layers\").getDataRender(name);\n\t\trefreshId(renderer.getLayers(), oldId, newId, store.getItem(newId));\n\t\titemRepainter.renderItem(newId, renderer);\n\t});\n\n};\n\nmodule.exports = {\n\tbindDataStore: storeRenderCreator\n};","\nfunction createDataStoreSelectMixin(store){\n\tvar selectedId = null;\n\n\tvar deleteItem = store._removeItemInner;\n\tstore._removeItemInner = function(id){\n\t\tif(selectedId == id){\n\t\t\tselectedId = null;\n\t\t}\n\t\treturn deleteItem.apply(this, arguments);\n\t};\n\n\n\tstore.attachEvent(\"onIdChange\", function(oldId, newId) {\n\t\tif (store.getSelectedId() == oldId) {\n\t\t\tstore.silent(function () {\n\t\t\t\tstore.unselect(oldId);\n\t\t\t\tstore.select(newId);\n\t\t\t});\n\t\t}\n\t});\n\n\treturn {\n\t\tselect: function(id){\n\t\t\tif (id){\n\n\t\t\t\tif(selectedId == id)\n\t\t\t\t\treturn selectedId;\n\n\t\t\t\tif(!this._skip_refresh) {\n\t\t\t\t\tif (!this.callEvent(\"onBeforeSelect\", [id])) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.unselect();\n\n\t\t\t\tselectedId = id;\n\n\t\t\t\tif(!this._skip_refresh) {\n\t\t\t\t\tthis.refresh(id);\n\t\t\t\t\tthis.callEvent(\"onAfterSelect\", [id]);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn selectedId;\n\t\t},\n\t\tgetSelectedId: function(){\n\t\t\treturn selectedId;\n\t\t},\n\t\tunselect: function(id){\n\t\t\tvar id = id || selectedId;\n\t\t\tif(!id)\n\t\t\t\treturn;\n\t\t\tselectedId = null;\n\t\t\tif(!this._skip_refresh){\n\t\t\t\tthis.refresh(id);\n\t\t\t\tthis.callEvent(\"onAfterUnselect\", [id]);\n\t\t\t}\n\t\t}\n\t};\n}\n\nmodule.exports = createDataStoreSelectMixin;","var powerArray = require(\"./power_array\");\nvar utils = require(\"../../utils/utils\");\nvar eventable = require(\"../../utils/eventable\");\nvar DataStore = require(\"./datastore\");\n\nvar TreeDataStore = function(config){\n\tthis._branches = {};\n\n\tthis.pull = {};\n\tthis.$initItem = config.initItem;\n\tthis.$parentProperty = config.parentProperty || \"parent\";\n\n\tif(typeof config.rootId !== \"function\"){\n\t\tthis.$getRootId = (function(val){\n\t\t\treturn function(){return val;};\n\t\t})(config.rootId || 0);\n\t}else{\n\t\tthis.$getRootId = config.rootId;\n\t}\n\n\t// TODO: replace with live reference to gantt config\n\tthis.$openInitially = config.openInitially;\n\n\tthis.visibleOrder = powerArray.$create();\n\tthis.fullOrder = powerArray.$create();\n\tthis._searchVisibleOrder = {};\n\tthis._skip_refresh = false;\n\n\teventable(this);\n\n\tthis.attachEvent(\"onFilterItem\", function(id, item){\n\t\tvar open = true;\n\t\tthis.eachParent(function(parent){\n\t\t\topen = open && parent.$open && !(gantt.isSplitTask(parent));\n\t\t}, item);\n\t\treturn !!open;\n\t});\n\n\treturn this;\n};\n\nTreeDataStore.prototype = utils.mixin({\n\n\t\t_buildTree: function(data){\n\t\t\tvar item = null;\n\t\t\tvar rootId = this.$getRootId();\n\t\t\tfor (var i = 0, len = data.length; i < len; i++){\n\t\t\t\titem = data[i];\n\t\t\t\tthis.setParent(item, this.getParent(item) || rootId);\n\t\t\t}\n\n\t\t\t// calculating $level for each item\n\t\t\tfor (var i = 0, len = data.length; i < len; i++){\n\t\t\t\titem = data[i];\n\t\t\t\tthis._add_branch(item);\n\t\t\t\titem.$level = this.calculateItemLevel(item);\n\n\t\t\t\tif (!utils.defined(item.$open)) {\n\t\t\t\t\titem.$open = utils.defined(item.open) ? item.open : this.$openInitially();\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tthis._updateOrder();\n\t\t},\n\n\t\tparse: function(data){\n\t\t\tthis.callEvent(\"onBeforeParse\", [data]);\n\t\t\tvar loaded = this._parseInner(data);\n\t\t\tthis._buildTree(loaded);\n\t\t\tthis.filter();\n\t\t\tthis.callEvent(\"onParse\", [loaded]);\n\t\t},\n\n\t\t_addItemInner: function(item, index){\n\n\t\t\tvar parent = this.getParent(item);\n\n\t\t\tif(!utils.defined(parent)){\n\t\t\t\tparent = this.$getRootId();\n\t\t\t\tthis.setParent(item, parent);\n\t\t\t}\n\n\t\t\tvar parentIndex = this.getIndexById(parent);\n\t\t\tvar targetIndex = parentIndex + Math.min(Math.max(index, 0), this.visibleOrder.length);\n\n\t\t\tif(targetIndex*1 !== targetIndex){\n\t\t\t\ttargetIndex = undefined;\n\t\t\t}\n\t\t\tDataStore.prototype._addItemInner.call(this, item, targetIndex);\n\t\t\tthis.setParent(item, parent);\n\n\t\t\tif(item.hasOwnProperty(\"$rendered_parent\")){\n\t\t\t\tthis._move_branch(item, item.$rendered_parent);\n\t\t\t}\n\t\t\tthis._add_branch(item, index);\n\t\t},\n\t\t_changeIdInner: function(oldId, newId){\n\t\t\tvar children = this.getChildren(oldId);\n\t\t\tvar visibleOrder = this._searchVisibleOrder[oldId];\n\n\t\t\tDataStore.prototype._changeIdInner.call(this, oldId, newId);\n\n\t\t\tvar parent = this.getParent(newId);\n\n\t\t\tthis._replace_branch_child(parent, oldId, newId);\n\t\t\tfor(var i = 0; i < children.length; i++){\n\t\t\t\tthis.setParent(this.getItem(children[i]), newId);\n\t\t\t}\n\n\t\t\tthis._searchVisibleOrder[newId] = visibleOrder;\n\t\t\tdelete this._branches[oldId];\n\t\t},\n\n\t\t_traverseBranches: function(code, parent){\n\t\t\tparent = parent || this.$getRootId();\n\t\t\tvar branch = this._branches[parent];\n\t\t\tif (branch) {\n\t\t\t\tfor (var i = 0; i < branch.length; i++) {\n\t\t\t\t\tvar itemId = branch[i];\n\t\t\t\t\tcode.call(this, itemId);\n\t\t\t\t\tif (this._branches[itemId])\n\t\t\t\t\t\tthis._traverseBranches(code, itemId);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_updateOrder: function(code){\n\n\t\t\tthis.fullOrder = powerArray.$create();\n\t\t\tthis._traverseBranches(function(taskId){\n\t\t\t\tthis.fullOrder.push(taskId);\n\t\t\t});\n\n\t\t\tif(code)\n\t\t\t\tDataStore.prototype._updateOrder.call(this, code);\n\t\t},\n\n\t\t_removeItemInner: function(id){\n\n\t\t\tvar items = [];\n\t\t\tthis.eachItem(function(child){\n\t\t\t\titems.push(child);\n\t\t\t}, id);\n\n\t\t\titems.push(this.getItem(id));\n\n\t\t\tfor(var i = 0; i < items.length; i++){\n\n\t\t\t\tthis._move_branch(items[i], this.getParent(items[i]), null);\n\t\t\t\tDataStore.prototype._removeItemInner.call(this, items[i].id);\n\t\t\t\tthis._move_branch(items[i], this.getParent(items[i]), null);\n\t\t\t}\n\t\t},\n\n\t\tmove: function(sid, tindex, parent){\n\t\t\t//target id as 4th parameter\n\t\t\tvar id = arguments[3];\n\t\t\tif (id) {\n\t\t\t\tif (id === sid) return;\n\n\t\t\t\tparent = this.getParent(id);\n\t\t\t\ttindex = this.getBranchIndex(id);\n\t\t\t}\n\t\t\tif(sid == parent){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tparent = parent || this.$getRootId();\n\t\t\tvar source = this.getItem(sid);\n\t\t\tvar source_pid = this.getParent(source.id);\n\t\t\tvar sbranch = this.getChildren(this.getParent(source.id));\n\n\t\t\tvar tbranch = this.getChildren(parent);\n\n\t\t\tif (tindex == -1)\n\t\t\t\ttindex = tbranch.length + 1;\n\t\t\tif (source_pid == parent) {\n\t\t\t\tvar sindex = this.getBranchIndex(sid);\n\t\t\t\tif (sindex == tindex) return;\n\t\t\t}\n\n\t\t\tif(this.callEvent(\"onBeforeItemMove\", [sid, parent, tindex]) === false)\n\t\t\t\treturn;\n\n\t\t\tthis._replace_branch_child(source_pid, sid);\n\t\t\ttbranch = this.getChildren(parent);\n\n\t\t\tvar tid = tbranch[tindex];\n\t\t\tif (!tid) //adding as last element\n\t\t\t\ttbranch.push(sid);\n\t\t\telse\n\t\t\t\ttbranch = tbranch.slice(0, tindex).concat([ sid ]).concat(tbranch.slice(tindex));\n\n\t\t\tthis.setParent(source, parent);\n\t\t\tthis._branches[parent] = tbranch;\n\n\t\t\tvar diff = this.calculateItemLevel(source) - source.$level;\n\t\t\tsource.$level += diff;\n\t\t\tthis.eachItem(function(item){\n\t\t\t\titem.$level += diff;\n\t\t\t}, source.id, this);\n\n\n\t\t\tthis._moveInner(this.getIndexById(sid), this.getIndexById(parent) + tindex);\n\n\t\t\tthis.callEvent(\"onAfterItemMove\", [sid, parent, tindex]);\n\t\t\tthis.refresh();\n\t\t},\n\n\t\tgetBranchIndex: function(id){\n\t\t\tvar branch = this.getChildren(this.getParent(id));\n\t\t\tfor (var i = 0; i < branch.length; i++)\n\t\t\t\tif (branch[i] == id)\n\t\t\t\t\treturn i;\n\n\t\t\treturn -1;\n\t\t},\n\t\thasChild: function(id){\n\t\t\treturn (utils.defined(this._branches[id]) && this._branches[id].length);\n\t\t},\n\t\tgetChildren: function(id){\n\t\t\treturn utils.defined(this._branches[id]) ? this._branches[id] : powerArray.$create();\n\t\t},\n\n\t\tisChildOf: function(childId, parentId){\n\t\t\tif (!this.exists(childId))\n\t\t\t\treturn false;\n\t\t\tif (parentId === this.$getRootId())\n\t\t\t\treturn true;\n\n\t\t\tif (!this.hasChild(parentId))\n\t\t\t\treturn false;\n\n\t\t\tvar item = this.getItem(childId);\n\t\t\tvar pid = this.getParent(childId);\n\n\t\t\tvar parent = this.getItem(parentId);\n\t\t\tif(parent.$level >= item.$level){\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\twhile (item && this.exists(pid)) {\n\t\t\t\titem = this.getItem(pid);\n\n\t\t\t\tif (item && item.id == parentId)\n\t\t\t\t\treturn true;\n\t\t\t\tpid = this.getParent(item);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\tgetSiblings: function(id){\n\t\t\tif(!this.exists(id)){\n\t\t\t\treturn powerArray.$create();\n\t\t\t}\n\t\t\tvar parent = this.getParent(id);\n\t\t\treturn this.getChildren(parent);\n\n\t\t},\n\t\tgetNextSibling: function(id){\n\t\t\tvar siblings = this.getSiblings(id);\n\t\t\tfor(var i= 0, len = siblings.length; i < len; i++){\n\t\t\t\tif(siblings[i] == id)\n\t\t\t\t\treturn siblings[i+1] || null;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tgetPrevSibling: function(id){\n\t\t\tvar siblings = this.getSiblings(id);\n\t\t\tfor(var i= 0, len = siblings.length; i < len; i++){\n\t\t\t\tif(siblings[i] == id)\n\t\t\t\t\treturn siblings[i-1] || null;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tgetParent: function(id){\n\t\t\tvar item = null;\n\t\t\tif(id.id !== undefined){\n\t\t\t\titem = id;\n\t\t\t}else{\n\t\t\t\titem = this.getItem(id);\n\t\t\t}\n\n\t\t\tvar parent;\n\t\t\tif(item){\n\t\t\t\tparent = item[this.$parentProperty];\n\t\t\t}else{\n\t\t\t\tparent = this.$getRootId();\n\t\t\t}\n\t\t\treturn parent;\n\n\t\t},\n\n\t\tclearAll: function(){\n\t\t\tthis._branches = {};\n\t\t\tDataStore.prototype.clearAll.call(this);\n\t\t},\n\n\t\tcalculateItemLevel: function(item){\n\t\t\tvar level = 0;\n\t\t\tthis.eachParent(function(){\n\t\t\t\tlevel++;\n\t\t\t}, item);\n\t\t\treturn level;\n\t\t},\n\n\t\t_setParentInner: function(item, new_pid, silent){\n\t\t\tif(!silent){\n\t\t\t\tif(item.hasOwnProperty(\"$rendered_parent\")){\n\t\t\t\t\tthis._move_branch(item, item.$rendered_parent, new_pid);\n\t\t\t\t}else{\n\t\t\t\t\tthis._move_branch(item, item[this.$parentProperty], new_pid);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsetParent: function(item, new_pid, silent){\n\t\t\tthis._setParentInner(item, new_pid, silent);\n\n\t\t\titem[this.$parentProperty] = new_pid;\n\t\t},\n\t\teachItem: function(code, parent){\n\t\t\tparent = parent || this.$getRootId();\n\n\n\t\t\tvar branch = this.getChildren(parent);\n\t\t\tif (branch)\n\t\t\t\tfor (var i=0; i b[field];\n\t\t\t\treturn result ? 1 : -1;\n\t\t\t}) : field;\n\n\t\t\tif (desc) {\n\t\t\t\tvar original_criteria = criteria;\n\t\t\t\tcriteria = function (a, b) {\n\t\t\t\t\treturn original_criteria(b, a);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar els = this.getChildren(parent);\n\t\t\tif (els){\n\t\t\t\tvar temp = [];\n\t\t\t\tfor (var i = els.length - 1; i >= 0; i--)\n\t\t\t\t\ttemp[i] = this.getItem(els[i]);\n\n\t\t\t\ttemp.sort(criteria);\n\n\t\t\t\tfor (var i = 0; i < temp.length; i++) {\n\t\t\t\t\tels[i] = temp[i].id;\n\t\t\t\t\tthis.sort(field, desc, els[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfilter: function(rule){\n\t\t\tfor(var i in this.pull){\n\t\t\t\tif(this.pull[i].$rendered_parent !== this.getParent(this.pull[i])){\n\t\t\t\t\tthis._move_branch(this.pull[i], this.pull[i].$rendered_parent, this.getParent(this.pull[i]));\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn DataStore.prototype.filter.apply(this, arguments);\n\t\t},\n\n\t\topen: function(id){\n\t\t\tif(this.exists(id)){\n\t\t\t\tthis.getItem(id).$open = true;\n\t\t\t\tthis.callEvent(\"onItemOpen\", [id]);\n\t\t\t}\n\t\t},\n\n\t\tclose: function(id){\n\t\t\tif(this.exists(id)){\n\t\t\t\tthis.getItem(id).$open = false;\n\t\t\t\tthis.callEvent(\"onItemClose\", [id]);\n\t\t\t}\n\t\t},\n\n\t\tdestructor: function(){\n\t\t\tDataStore.prototype.destructor.call(this);\n\t\t\tthis._branches = null;\n\t\t}\n\t},\n\tDataStore.prototype\n);\n\nmodule.exports = TreeDataStore;","var utils = require(\"../../utils/utils\");\n\n\nvar createLinksStoreFacade = function(){\n\treturn {\n\tgetLinkCount: function () {\n\t\treturn this.$data.linksStore.count();\n\t},\n\n\tgetLink : function (id) {\n\t\treturn this.$data.linksStore.getItem(id);\n\t},\n\n\tgetLinks : function () {\n\t\treturn this.$data.linksStore.getItems();\n\t},\n\n\tisLinkExists : function (id) {\n\t\treturn this.$data.linksStore.exists(id);\n\t},\n\n\taddLink : function (link) {\n\t\treturn this.$data.linksStore.addItem(link);\n\t},\n\n\tupdateLink : function (id, data) {\n\t\tif (!utils.defined(data))\n\t\t\tdata = this.getLink(id);\n\t\tthis.$data.linksStore.updateItem(id, data);\n\t},\n\n\tdeleteLink : function (id) {\n\t\treturn this.$data.linksStore.removeItem(id);\n\t},\n\n\tchangeLinkId : function (oldid, newid) {\n\t\treturn this.$data.linksStore.changeId(oldid, newid);\n\t}\n};\n};\n\nmodule.exports = createLinksStoreFacade;","var utils = require(\"../../utils/utils\");\n\nvar createTasksDatastoreFacade = function(){\n\treturn {\n\tgetTask: function (id) {\n\t\tthis.assert(id, \"Invalid argument for gantt.getTask\");\n\t\tvar task = this.$data.tasksStore.getItem(id);\n\t\tthis.assert(task, \"Task not found id=\" + id);\n\t\treturn task;\n\t},\n\tgetTaskByTime: function (from, to) {\n\t\tvar p = this.$data.tasksStore.getItems();\n\n\t\tvar res = [];\n\n\t\tif (!(from || to)) {\n\t\t\tres = p;\n\t\t} else {\n\t\t\tfrom = +from || -Infinity;\n\t\t\tto = +to || Infinity;\n\t\t\tfor (var t = 0; t < p.length; t++){\n\t\t\t\tvar task = p[t];\n\t\t\t\tif (+task.start_date < to && +task.end_date > from)\n\t\t\t\t\tres.push(task);\n\t\t\t}\n\t\t}\n\t\treturn res;\n\t},\n\tisTaskExists: function (id) {\n\t\treturn this.$data.tasksStore.exists(id);\n\t},\n\tupdateTask: function (id, item) {\n\t\tif (!utils.defined(item)) item = this.getTask(id);\n\t\tthis.$data.tasksStore.updateItem(id, item);\n\t\tif(this.isTaskExists(id))\n\t\t\tthis.refreshTask(id);\n\t},\n\taddTask: function (item, parent, index) {\n\t\tif (!utils.defined(item.id))\n\t\t\titem.id = utils.uid();\n\n\t\tif (!utils.defined(parent)) parent = this.getParent(item) || 0;\n\t\tif (!this.isTaskExists(parent)) parent = 0;\n\t\tthis.setParent(item, parent);\n\n\t\treturn this.$data.tasksStore.addItem(item, index, parent);\n\t},\n\tdeleteTask: function (id) {\n\t\treturn this.$data.tasksStore.removeItem(id);\n\t},\n\tgetTaskCount: function () {\n\t\treturn this.$data.tasksStore.count();\n\t},\n\tgetVisibleTaskCount: function () {\n\t\treturn this.$data.tasksStore.countVisible();\n\t},\n\tgetTaskIndex: function (id) {\n\t\treturn this.$data.tasksStore.getBranchIndex(id);\n\t},\n\tgetGlobalTaskIndex: function (id) {\n\t\tthis.assert(id, \"Invalid argument\");\n\t\treturn this.$data.tasksStore.getIndexById(id);\n\t},\n\teachTask: function (code, parent, master) {\n\t\treturn this.$data.tasksStore.eachItem(utils.bind(code, master||this), parent);\n\t},\n\teachParent: function (callback, startTask, master) {\n\t\treturn this.$data.tasksStore.eachParent(utils.bind(callback, master || this), startTask);\n\t},\n\tchangeTaskId: function (oldid, newid) {\n\t\tthis.$data.tasksStore.changeId(oldid, newid);\n\t\tvar task = this.$data.tasksStore.getItem(newid);\n\n\t\tvar links = [];\n\n\t\tif (task.$source) {\n\t\t\tlinks = links.concat(task.$source);\n\t\t}\n\t\tif (task.$target) {\n\t\t\tlinks = links.concat(task.$target);\n\t\t}\n\n\t\tfor (var i = 0; i < links.length; i++) {\n\t\t\tvar link = this.getLink(links[i]);\n\t\t\tif (link.source == oldid) {\n\t\t\t\tlink.source = newid;\n\t\t\t}\n\t\t\tif (link.target == oldid) {\n\t\t\t\tlink.target = newid;\n\t\t\t}\n\t\t}\n\t},\n\tcalculateTaskLevel: function (item) {\n\t\treturn this.$data.tasksStore.calculateItemLevel(item);\n\t},\n\tgetNext: function (id) {\n\t\treturn this.$data.tasksStore.getNext(id);\n\t},\n\tgetPrev: function (id) {\n\t\treturn this.$data.tasksStore.getPrev(id);\n\t},\n\tgetParent: function (id) {\n\t\treturn this.$data.tasksStore.getParent(id);\n\t},\n\tsetParent: function (task, new_pid, silent) {\n\t\treturn this.$data.tasksStore.setParent(task, new_pid, silent);\n\t},\n\tgetSiblings: function (id) {\n\t\treturn this.$data.tasksStore.getSiblings(id).slice();\n\t},\n\tgetNextSibling: function (id) {\n\t\treturn this.$data.tasksStore.getNextSibling(id);\n\t},\n\tgetPrevSibling: function (id) {\n\t\treturn this.$data.tasksStore.getPrevSibling(id);\n\t},\n\tgetTaskByIndex: function(index){\n\t\tvar id = this.$data.tasksStore.getIdByIndex(index);\n\t\tif(this.isTaskExists(id)){\n\t\t\treturn this.getTask(id);\n\t\t}else{\n\t\t\treturn null;\n\t\t}\n\t},\n\tgetChildren: function (id) {\n\t\tif(!this.hasChild(id)){\n\t\t\treturn [];\n\t\t}else{\n\t\t\treturn this.$data.tasksStore.getChildren(id).slice();\n\t\t}\n\t},\n\thasChild: function (id) {\n\t\treturn this.$data.tasksStore.hasChild(id);\n\t},\n\topen: function (id) {\n\t\tthis.$data.tasksStore.open(id);\n\t},\n\tclose: function (id) {\n\t\tthis.$data.tasksStore.close(id);\n\t},\n\tmoveTask: function (sid, tindex, parent) {\n\t\tthis.$data.tasksStore.move.apply(this.$data.tasksStore, arguments);\n\t},\n\tsort: function(field, desc, parent, silent) {\n\t\tvar render = !silent;//4th argument to cancel redraw after sorting\n\t\tthis.$data.tasksStore.sort(field, desc, parent);\n\t\tif (render) {\n\t\t\tthis.render();\n\t\t}\n\t}\n};\n};\n\nmodule.exports = createTasksDatastoreFacade;\n\n\n","var utils = require(\"../../utils/utils\");\nvar createTasksFacade = require(\"./datastore_tasks\"),\n\tcreateLinksFacade = require(\"./datastore_links\"),\n\tDataStore = require(\"../datastore/datastore\"),\n\tTreeDataStore = require(\"../datastore/treedatastore\"),\n\tcreateDatastoreSelect = require(\"../datastore/select\");\nvar datastoreRender = require(\"../datastore/datastore_render\");\n\nfunction getDatastores(){\n\tvar storeNames = this.$services.getService(\"datastores\");\n\tvar res = [];\n\tfor(var i = 0; i < storeNames.length; i++){\n\t\tres.push(this.getDatastore(storeNames[i]));\n\t}\n\treturn res;\n}\n\nvar createDatastoreFacade = function(){\n\treturn {\n\tcreateDatastore: function(config){\n\n\t\tvar $StoreType = (config.type || \"\").toLowerCase() == \"treedatastore\" ? TreeDataStore : DataStore;\n\n\t\tif(config){\n\t\t\tvar self = this;\n\t\t\tconfig.openInitially = function(){ return self.config.open_tree_initially; };\n\t\t}\n\n\t\tvar store = new $StoreType(config);\n\t\tthis.mixin(store, createDatastoreSelect(store));\n\n\t\tif(config.name){\n\n\t\t\tthis.$services.setService(\"datastore:\" + config.name, function(){return store;});\n\t\t\tvar storeList = this.$services.getService(\"datastores\");\n\t\t\tif(!storeList){\n\t\t\t\tstoreList = [];\n\t\t\t\tthis.$services.setService(\"datastores\", function(){return storeList;});\n\t\t\t}\n\t\t\tstoreList.push(config.name);\n\n\t\t\tdatastoreRender.bindDataStore(config.name, this);\n\t\t}\n\n\t\treturn store;\n\t},\n\tgetDatastore: function(name){\n\t\treturn this.$services.getService(\"datastore:\" + name);\n\t},\n\n\trefreshData: function () {\n\t\tvar scrollState = this.getScrollState();\n\t\tthis.callEvent(\"onBeforeDataRender\", []);\n\n\t\tvar stores = getDatastores.call(this);\n\t\tfor(var i = 0; i < stores.length; i++){\n\t\t\tstores[i].refresh();\n\t\t}\n\n\t\tif(scrollState.x || scrollState.y){\n\t\t\tthis.scrollTo(scrollState.x, scrollState.y);\n\t\t}\n\t\tthis.callEvent(\"onDataRender\", []);\n\t},\n\n\tisChildOf: function(childId, parentId){\n\t\treturn this.$data.tasksStore.isChildOf(childId, parentId);\n\t},\n\n\trefreshTask: function (taskId, refresh_links) {\n\t\tvar task = this.getTask(taskId);\n\t\tif (task && this.isTaskVisible(taskId)) {\n\n\t\t\tthis.$data.tasksStore.refresh(taskId, !!this.getState().drag_id);// do quick refresh during drag and drop\n\n\t\t\tif (refresh_links !== undefined && !refresh_links)\n\t\t\t\treturn;\n\t\t\tfor (var i = 0; i < task.$source.length; i++) {\n\t\t\t\tthis.refreshLink(task.$source[i]);\n\t\t\t}\n\t\t\tfor (var i = 0; i < task.$target.length; i++) {\n\t\t\t\tthis.refreshLink(task.$target[i]);\n\t\t\t}\n\t\t}else if(gantt.isTaskExists(taskId) && gantt.isTaskExists(gantt.getParent(taskId))){\n\t\t\tgantt.refreshTask(gantt.getParent(taskId));\n\t\t}\n\n\t},\n\trefreshLink: function (linkId) {\n\t\tthis.$data.linksStore.refresh(linkId, !!this.getState().drag_id);// do quick refresh during drag and drop\n\t},\n\n\tsilent: function(code){\n\t\tvar gantt = this;\n\t\tgantt.$data.tasksStore.silent(function(){\n\t\t\tgantt.$data.linksStore.silent(function(){\n\t\t\t\tcode();\n\t\t\t});\n\t\t});\n\t},\n\n\tclearAll: function () {\n\t\tvar stores = getDatastores.call(this);\n\t\tfor(var i = 0; i < stores.length; i++){\n\t\t\tstores[i].clearAll();\n\t\t}\n\n\t\tthis._update_flags();\n\t\tthis.userdata = {};\n\t\tthis.callEvent(\"onClear\", []);\n\t\tthis.render();\n\t},\n\t_clear_data: function () {\n\t\tthis.$data.tasksStore.clearAll();\n\t\tthis.$data.linksStore.clearAll();\n\t\tthis._update_flags();\n\t\tthis.userdata = {};\n\t},\n\n\tselectTask: function(id){\n\t\tvar store = this.$data.tasksStore;\n\t\tif(!this.config.select_task)\n\t\t\treturn false;\n\t\tif (id){\n\n\t\t\tstore.select(id);\n\t\t}\n\t\treturn store.getSelectedId();\n\t},\n\tunselectTask: function(id){\n\t\tvar store = this.$data.tasksStore;\n\t\tstore.unselect(id);\n\t},\n\tgetSelectedId: function() {\n\t\treturn this.$data.tasksStore.getSelectedId();\n\t}\n};\n};\n\nfunction createFacade(){\n\tvar res = utils.mixin({}, createDatastoreFacade());\n\tutils.mixin(res, createTasksFacade());\n\tutils.mixin(res, createLinksFacade());\n\treturn res;\n}\n\n\n\n\nmodule.exports = {create: createFacade};","var utils = require(\"../../utils/utils\");\nvar facadeFactory = require(\"./../facades/datastore\");\nvar calculateScaleRange = require(\"../gantt_data_range\");\nfunction initDataStores(gantt){\n\n\tvar facade = facadeFactory.create();\n\tutils.mixin(gantt, facade);\n\tvar tasksStore = gantt.createDatastore({\n\t\tname: \"task\",\n\t\ttype: \"treeDatastore\",\n\t\trootId: function(){return gantt.config.root_id;},\n\t\tinitItem: utils.bind(_init_task, gantt)\n\t});\n\n\tvar linksStore = gantt.createDatastore({\n\t\tname: \"link\",\n\t\tinitItem: utils.bind(_init_link, gantt)\n\t});\n\n\ttasksStore.attachEvent(\"onBeforeRefreshAll\", function(){\n\n\t\tvar order = tasksStore.getVisibleItems();\n\n\t\tfor(var i=0; i < order.length; i++){\n\t\t\tvar item = order[i];\n\t\t\titem.$index = i;\n\t\t\tgantt.resetProjectDates(item);\n\t\t}\n\n\t});\n\n\ttasksStore.attachEvent(\"onFilterItem\", function(id, task){\n\t\tvar min = null, max = null;\n\t\tif (gantt.config.start_date && gantt.config.end_date) {\n\t\t\tif (gantt._isAllowedUnscheduledTask(task)) return true;\n\t\t\tmin = gantt.config.start_date.valueOf();\n\t\t\tmax = gantt.config.end_date.valueOf();\n\n\t\t\tif (+task.start_date > max || +task.end_date < +min)\n\t\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t});\n\n\ttasksStore.attachEvent(\"onIdChange\", function(oldId, newId){\n\t\tgantt._update_flags(oldId, newId);\n\t});\n\n\ttasksStore.attachEvent(\"onAfterUpdate\", function(id){\n\t\tgantt._update_parents(id);\n\t\tvar task = tasksStore.getItem(id);\n\t\tfor (var i = 0; i < task.$source.length; i++) {\n\t\t\tlinksStore.refresh(task.$source[i]);\n\t\t}\n\t\tfor (var i = 0; i < task.$target.length; i++) {\n\t\t\tlinksStore.refresh(task.$target[i]);\n\t\t}\n\t});\n\n\ttasksStore.attachEvent(\"onAfterItemMove\", function(sid, parent, tindex){\n\t\tvar source = gantt.getTask(sid);\n\n\t\tif(this.getNextSibling(sid) !== null){\n\t\t\tsource.$drop_target = this.getNextSibling(sid);\n\t\t} else if(this.getPrevSibling(sid) !== null){\n\t\t\tsource.$drop_target = \"next:\" + this.getPrevSibling(sid);\n\t\t}else{\n\t\t\tsource.$drop_target = \"next:null\";\n\t\t}\n\n\t});\n\n\ttasksStore.attachEvent(\"onStoreUpdated\", function(id, item, action){\n\t\tif(action == \"delete\"){\n\t\t\tgantt._update_flags(id, null);\n\t\t}\n\n\t\tvar state = gantt.$services.getService(\"state\");\n\t\tif(state.getState(\"batchUpdate\").batch_update){\n\t\t\treturn;\n\t\t}\n\n\t\tif(gantt.config.fit_tasks && action !== \"paint\"){\n\t\t\tvar oldState = gantt.getState();\n\t\t\tcalculateScaleRange(gantt);\n\t\t\tvar newState = gantt.getState();\n\n\t\t\t//this._init_tasks_range();\n\t\t\tif (+oldState.min_date != +newState.min_date || +oldState.max_date != +newState.max_date) {\n\t\t\t\tgantt.render();\n\n\t\t\t\tgantt.callEvent(\"onScaleAdjusted\", []);\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t}\n\n\t\tif(action == \"add\" || action == \"move\" || action == \"delete\"){\n\t\t\tgantt.$layout.resize();\n\t\t}else if(!id){\n\t\t\tlinksStore.refresh();\n\t\t}\n\n\t});\n\n\tlinksStore.attachEvent(\"onAfterAdd\", function(id, link){\n\t\tsync_link(link);\n\t});\n\tlinksStore.attachEvent(\"onAfterUpdate\", function(id, link){\n\t\tsync_links();\n\t});\n\tlinksStore.attachEvent(\"onAfterDelete\", function(id, link){\n\t\tsync_link_delete(link);\n\t});\n\tlinksStore.attachEvent(\"onBeforeIdChange\", function(oldId, newId){\n\t\tsync_link_delete(gantt.mixin({id:oldId}, gantt.$data.linksStore.getItem(newId)));\n\t\tsync_link(gantt.$data.linksStore.getItem(newId));\n\t});\n\n\tfunction checkLinkedTaskVisibility(taskId){\n\t\tvar isVisible = gantt.isTaskVisible(taskId);\n\t\tif(!isVisible && gantt.isTaskExists(taskId)){\n\t\t\tvar parent = gantt.getParent(taskId);\n\t\t\tif(gantt.isTaskExists(parent) && gantt.isTaskVisible(parent)){\n\t\t\t\tparent = gantt.getTask(parent);\n\t\t\t\tif(gantt.isSplitTask(parent)){\n\t\t\t\t\tisVisible = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn isVisible;\n\t}\n\n\tlinksStore.attachEvent(\"onFilterItem\", function(id, link){\n\t\tif (!gantt.config.show_links) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar sourceVisible = checkLinkedTaskVisibility(link.source);\n\t\tvar targetVisible = checkLinkedTaskVisibility(link.target);\n\n\t\tif (!(sourceVisible && targetVisible) ||\n\t\t\tgantt._isAllowedUnscheduledTask(gantt.getTask(link.source)) || gantt._isAllowedUnscheduledTask(gantt.getTask(link.target)))\n\t\t\treturn false;\n\n\t\treturn gantt.callEvent(\"onBeforeLinkDisplay\", [id, link]);\n\t});\n\n\n\t(function(){\n\t\t// delete all connected links after task is deleted\n\t\tvar treeHelper = require(\"../../utils/task_tree_helpers\");\n\t\tvar deletedLinks = {};\n\n\t\tgantt.attachEvent(\"onBeforeTaskDelete\", function(id, item){\n \t\t\tdeletedLinks[id] = treeHelper.getSubtreeLinks(gantt, id);\n\t\t\treturn true;\n\t\t});\n\n\t\tgantt.attachEvent(\"onAfterTaskDelete\", function(id, item) {\n\t\t\tif(deletedLinks[id]){\n\t\t\t\tgantt.$data.linksStore.silent(function(){\n\t\t\t\t\tfor(var i in deletedLinks[id]){\n\t\t\t\t\t\tgantt.$data.linksStore.removeItem(i);\n\t\t\t\t\t\tsync_link_delete(deletedLinks[id][i]);\n\t\t\t\t\t}\n\n\t\t\t\t\tdeletedLinks[id] = null;\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t})();\n\n\tgantt.attachEvent(\"onAfterLinkDelete\", function(id, link) {\n\t\tgantt.refreshTask(link.source);\n\t\tgantt.refreshTask(link.target);\n\t});\n\n\tgantt.attachEvent(\"onParse\", sync_links);\n\n\tmapEvents({\n\t\tsource: linksStore,\n\t\ttarget: gantt,\n\t\tevents:{\n\t\t\t\"onItemLoading\":\"onLinkLoading\",\n\t\t\t\"onBeforeAdd\":\"onBeforeLinkAdd\",\n\t\t\t\"onAfterAdd\":\"onAfterLinkAdd\",\n\t\t\t\"onBeforeUpdate\":\"onBeforeLinkUpdate\",\n\t\t\t\"onAfterUpdate\":\"onAfterLinkUpdate\",\n\t\t\t\"onBeforeDelete\":\"onBeforeLinkDelete\",\n\t\t\t\"onAfterDelete\":\"onAfterLinkDelete\",\n\t\t\t\"onIdChange\":\"onLinkIdChange\"\n\t\t}\n\t});\n\n\tmapEvents({\n\t\tsource: tasksStore,\n\t\ttarget: gantt,\n\t\tevents:{\n\t\t\t\"onItemLoading\":\"onTaskLoading\",\n\t\t\t\"onBeforeAdd\":\"onBeforeTaskAdd\",\n\t\t\t\"onAfterAdd\":\"onAfterTaskAdd\",\n\t\t\t\"onBeforeUpdate\":\"onBeforeTaskUpdate\",\n\t\t\t\"onAfterUpdate\":\"onAfterTaskUpdate\",\n\t\t\t\"onBeforeDelete\":\"onBeforeTaskDelete\",\n\t\t\t\"onAfterDelete\":\"onAfterTaskDelete\",\n\t\t\t\"onIdChange\":\"onTaskIdChange\",\n\t\t\t\"onBeforeItemMove\":\"onBeforeTaskMove\",\n\t\t\t\"onAfterItemMove\":\"onAfterTaskMove\",\n\t\t\t\"onFilterItem\":\"onBeforeTaskDisplay\",\n\t\t\t\"onItemOpen\":\"onTaskOpened\",\n\t\t\t\"onItemClose\":\"onTaskClosed\",\n\t\t\t\"onBeforeSelect\":\"onBeforeTaskSelected\",\n\t\t\t\"onAfterSelect\":\"onTaskSelected\",\n\t\t\t\"onAfterUnselect\":\"onTaskUnselected\"\n\t\t}\n\t});\n\n\tgantt.$data = {\n\t\ttasksStore: tasksStore,\n\t\tlinksStore: linksStore\n\t};\n\n\tfunction sync_link(link){\n\t\tif(gantt.isTaskExists(link.source)){\n\t\t\tvar sourceTask = gantt.getTask(link.source);\n\t\t\tsourceTask.$source = sourceTask.$source || [];\n\t\t\tsourceTask.$source.push(link.id);\n\t\t}\n\t\tif(gantt.isTaskExists(link.target)){\n\t\t\tvar targetTask = gantt.getTask(link.target);\n\t\t\ttargetTask.$target = targetTask.$target || [];\n\t\t\ttargetTask.$target.push(link.id);\n\t\t}\n\t}\n\n\tfunction sync_link_delete(link){\n\t\tif(gantt.isTaskExists(link.source)){\n\t\t\tvar sourceTask = gantt.getTask(link.source);\n\t\t\tfor(var i = 0; i < sourceTask.$source.length; i++){\n\t\t\t\tif(sourceTask.$source[i] == link.id){\n\t\t\t\t\tsourceTask.$source.splice(i, 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(gantt.isTaskExists(link.target)){\n\t\t\tvar targetTask = gantt.getTask(link.target);\n\t\t\tfor(var i = 0; i < targetTask.$target.length; i++){\n\t\t\t\tif(targetTask.$target[i] == link.id){\n\t\t\t\t\ttargetTask.$target.splice(i, 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction sync_links() {\n\t\tvar task = null;\n\t\tvar tasks = gantt.$data.tasksStore.getItems();\n\n\t\tfor(var i = 0, len = tasks.length; i < len; i++){\n\t\t\ttask = tasks[i];\n\t\t\ttask.$source = [];\n\t\t\ttask.$target = [];\n\t\t}\n\n\t\tvar links = gantt.$data.linksStore.getItems();\n\t\tfor (var i = 0, len = links.length; i < len; i++) {\n\n\t\t\tvar link = links[i];\n\t\t\tsync_link(link);\n\t\t}\n\t}\n\n\tfunction mapEvents(conf){\n\t\tvar mapFrom = conf.source;\n\t\tvar mapTo = conf.target;\n\t\tfor(var i in conf.events){\n\t\t\t(function(sourceEvent, targetEvent){\n\t\t\t\tmapFrom.attachEvent(sourceEvent, function(){\n\t\t\t\t\treturn mapTo.callEvent(targetEvent, Array.prototype.slice.call(arguments));\n\t\t\t\t}, targetEvent);\n\t\t\t})(i, conf.events[i]);\n\t\t}\n\t}\n\n\tfunction _init_task(task) {\n\t\tif (!this.defined(task.id))\n\t\t\ttask.id = this.uid();\n\n\t\tif (task.start_date)\n\t\t\ttask.start_date = gantt.date.parseDate(task.start_date, \"xml_date\");\n\t\tif (task.end_date)\n\t\t\ttask.end_date = gantt.date.parseDate(task.end_date, \"xml_date\");\n\n\n\t\tvar duration = null;\n\t\tif (task.duration || task.duration === 0) {\n\t\t\ttask.duration = duration = task.duration * 1;\n\t\t}\n\n\t\tif (duration) {\n\t\t\tif (task.start_date && !task.end_date) {\n\t\t\t\ttask.end_date = this.calculateEndDate(task);\n\t\t\t} else if (!task.start_date && task.end_date) {\n\t\t\t\ttask.start_date = this.calculateEndDate({\n\t\t\t\t\tstart_date: task.end_date,\n\t\t\t\t\tduration: -task.duration,\n\t\t\t\t\ttask: task\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\n\t\tif (this._isAllowedUnscheduledTask(task)) {\n\t\t\tthis._set_default_task_timing(task);\n\t\t}\n\t\tthis._init_task_timing(task);\n\t\tif (task.start_date && task.end_date)\n\t\t\tthis.correctTaskWorkTime(task);\n\n\t\ttask.$source = [];\n\t\ttask.$target = [];\n\t\tif (task.parent === undefined) {\n\t\t\tthis.setParent(task, this.config.root_id);\n\t\t}\n\n\t\treturn task;\n\t}\n\n\tfunction _init_link(link) {\n\t\tif (!this.defined(link.id))\n\t\t\tlink.id = this.uid();\n\t\treturn link;\n\t}\n}\n\n\nmodule.exports = initDataStores;\n","function createLayoutFacade(){\n\n\tfunction getTimeline(gantt){\n\t\treturn gantt.$ui.getView(\"timeline\");\n\t}\n\n\tfunction getGrid(gantt){\n\t\treturn gantt.$ui.getView(\"grid\");\n\t}\n\n\tfunction getVerticalScrollbar(gantt){\n\t\treturn gantt.$ui.getView(\"scrollVer\");\n\t}\n\n\tfunction getHorizontalScrollbar(gantt){\n\t\treturn gantt.$ui.getView(\"scrollHor\");\n\t}\n\n\tvar DEFAULT_VALUE = \"DEFAULT_VALUE\";\n\n\tfunction tryCall(getView, method, args, fallback){\n\t\tvar view = getView(this);\n\t\tif (!(view && view.isVisible())) {\n\t\t\tif(fallback){\n\t\t\t\treturn fallback();\n\t\t\t}else{\n\t\t\t\treturn DEFAULT_VALUE;\n\t\t\t}\n\t\t} else {\n\t\t\treturn view[method].apply(view, args);\n\t\t}\n\t}\n\n\treturn {\n\n\t\tgetColumnIndex: function(name) {\n\t\t\tvar res = tryCall.call(this, getGrid, \"getColumnIndex\", [name]);\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\treturn 0;\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\t\tdateFromPos: function(x) {\n\t\t\tvar res = tryCall.call(this, getTimeline, \"dateFromPos\", Array.prototype.slice.call(arguments));\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\treturn this.getState().min_date;\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\t\tposFromDate: function(date) {\n\t\t\tvar res = tryCall.call(this, getTimeline, \"posFromDate\", [date]);\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\treturn 0;\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\t\tgetRowTop: function(index) {\n\t\t\tvar self = this;\n\t\t\tvar res = tryCall.call(self, getTimeline, \"getRowTop\", [index],\n\t\t\t\tfunction(){ return tryCall.call(self, getGrid, \"getRowTop\", [index]);}\n\t\t\t\t);\n\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\treturn 0;\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\t\tgetTaskTop: function(id) {\n\t\t\tvar self = this;\n\t\t\tvar res = tryCall.call(self, getTimeline, \"getItemTop\", [id],\n\t\t\t\tfunction(){ return tryCall.call(self, getGrid, \"getItemTop\", [id]);}\n\t\t\t);\n\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\treturn 0;\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\n\t\tgetTaskPosition: function(task, start_date, end_date) {\n\t\t\tvar res = tryCall.call(this, getTimeline, \"getItemPosition\", [task, start_date, end_date]);\n\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\tvar top = this.getTaskTop(task.id);\n\t\t\t\tvar height = this.getTaskHeight();\n\n\t\t\t\treturn {\n\t\t\t\t\tleft: 0,\n\t\t\t\t\ttop: top,\n\t\t\t\t\theight: height,\n\t\t\t\t\twidth: 0\n\t\t\t\t};\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\t\tgetTaskHeight: function() {\n\t\t\tvar self = this;\n\t\t\tvar res = tryCall.call(self, getTimeline, \"getItemHeight\", [],\n\t\t\t\tfunction(){ return tryCall.call(self, getGrid, \"getItemHeight\", []);}\n\t\t\t);\n\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\treturn 0;\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\n\t\tcolumnIndexByDate: function(date) {\n\t\t\tvar res = tryCall.call(this, getTimeline, \"columnIndexByDate\", [date]);\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\treturn 0;\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\t\troundTaskDates: function() {\n\t\t\ttryCall.call(this, getTimeline, \"roundTaskDates\", []);\n\t\t},\n\n\t\tgetScale: function() {\n\t\t\tvar res = tryCall.call(this, getTimeline, \"getScale\", []);\n\t\t\tif(res === DEFAULT_VALUE){\n\t\t\t\treturn null;\n\t\t\t}else{\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\n\t\tgetTaskNode: function(id) {\n\t\t\tvar timeline = getTimeline(this);\n\t\t\tif (!timeline || !timeline.isVisible()) {\n\t\t\t\treturn null;\n\t\t\t} else {\n\t\t\t\treturn timeline._taskRenderer.rendered[id];\n\t\t\t}\n\t\t},\n\n\n\t\tgetLinkNode: function(id) {\n\t\t\tvar timeline = getTimeline(this);\n\t\t\tif (!timeline.isVisible()) {\n\t\t\t\treturn null;\n\t\t\t} else {\n\t\t\t\treturn timeline._linkRenderer.rendered[id];\n\t\t\t}\n\t\t},\n\n\t\tscrollTo: function(left, top){\n\t\t\tvar vertical = getVerticalScrollbar(this);\n\t\t\tvar horizontal = getHorizontalScrollbar(this);\n\n\t\t\tvar oldH = {position: 0},\n\t\t\t\toldV = {position: 0};\n\n\t\t\tif(vertical){\n\t\t\t\toldV = vertical.getScrollState();\n\t\t\t}\n\t\t\tif(horizontal){\n\t\t\t\toldH = horizontal.getScrollState();\n\t\t\t}\n\n\t\t\tif (horizontal && left*1 == left){\n\t\t\t\thorizontal.scroll(left);\n\t\t\t}\n\t\t\tif(vertical && top*1 == top){\n\t\t\t\tvertical.scroll(top);\n\t\t\t}\n\n\t\t\tvar newV = {position: 0},\n\t\t\t\tnewH = {position: 0};\n\t\t\tif(vertical){\n\t\t\t\tnewV = vertical.getScrollState();\n\t\t\t}\n\t\t\tif(horizontal){\n\t\t\t\tnewH = horizontal.getScrollState();\n\t\t\t}\n\n\t\t\tthis.callEvent(\"onGanttScroll\", [oldH.position, oldV.position, newH.position, newV.position]);\n\t\t},\n\n\t\tshowDate: function(date){\n\t\t\tvar date_x = this.posFromDate(date);\n\t\t\tvar scroll_to = Math.max(date_x - this.config.task_scroll_offset, 0);\n\t\t\tthis.scrollTo(scroll_to);\n\t\t},\n\t\tshowTask: function(id) {\n\t\t\tvar pos = this.getTaskPosition(this.getTask(id));\n\n\t\t\tvar left = Math.max(pos.left - this.config.task_scroll_offset, 0);\n\n\t\t\tvar dataHeight = this._scroll_state().y;\n\t\t\tvar top;\n\t\t\tif(!dataHeight){\n\t\t\t\ttop = pos.top;\n\t\t\t}else{\n\t\t\t\ttop = pos.top - (dataHeight - this.config.row_height)/2;\n\t\t\t}\n\n\t\t\tthis.scrollTo(left, top);\n\t\t},\n\t\t_scroll_state: function(){\n\t\t\tvar result = {\n\t\t\t\tx: false,\n\t\t\t\ty: false,\n\t\t\t\tx_pos: 0,\n\t\t\t\ty_pos: 0,\n\t\t\t\tscroll_size: this.config.scroll_size + 1,//1px for inner content\n\t\t\t\tx_inner: 0,\n\t\t\t\ty_inner: 0\n\t\t\t};\n\n\t\t\tvar scrollVer = getVerticalScrollbar(this),\n\t\t\t\tscrollHor = getHorizontalScrollbar(this);\n\t\t\tif(scrollHor){\n\t\t\t\tvar horState = scrollHor.getScrollState();\n\t\t\t\tif(horState.visible){\n\t\t\t\t\tresult.x = horState.size;\n\t\t\t\t\tresult.x_inner = horState.scrollSize;\n\t\t\t\t}\n\t\t\t\tresult.x_pos = horState.position || 0;\n\t\t\t}\n\n\t\t\tif(scrollVer){\n\t\t\t\tvar verState = scrollVer.getScrollState();\n\t\t\t\tif(verState.visible){\n\t\t\t\t\tresult.y = verState.size;\n\n\t\t\t\t\tresult.y_inner = verState.scrollSize;\n\t\t\t\t}\n\t\t\t\tresult.y_pos = verState.position || 0;\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\t\tgetScrollState: function(){\n\t\t\tvar state = this._scroll_state();\n\t\t\treturn { x:state.x_pos, y:state.y_pos, inner_width:state.x, inner_height:state.y, width: state.x_inner, height: state.y_inner };\n\t\t}\n\n\t};\n\n}\n\nmodule.exports = createLayoutFacade;","module.exports = function(gantt) {\n\tdelete gantt.addTaskLayer;\n\tdelete gantt.addLinkLayer;\n};","var domHelpers = require(\"../../utils/dom_helpers\");\n\nvar initializer = (function() {\n\treturn function (gantt) {\n\t\treturn {\n\n\t\t\tgetVerticalScrollbar: function(){\n\t\t\t\treturn gantt.$ui.getView(\"scrollVer\");\n\t\t\t},\n\t\t\tgetHorizontalScrollbar: function(){\n\t\t\t\treturn gantt.$ui.getView(\"scrollHor\");\n\t\t\t},\n\n\t\t\t_legacyGridResizerClass: function(layout){\n\t\t\t\tvar resizers = layout.getCellsByType(\"resizer\");\n\t\t\t\tfor(var i = 0; i < resizers.length; i++){\n\t\t\t\t\tvar r = resizers[i];\n\t\t\t\t\tvar gridResizer = false;\n\n\t\t\t\t\tvar prev = r.$parent.getPrevSibling(r.$id);\n\t\t\t\t\tif(prev && prev.$config && prev.$config.id === \"grid\"){\n\t\t\t\t\t\tgridResizer= true;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tvar next = r.$parent.getNextSibling(r.$id);\n\t\t\t\t\t\tif(next && next.$config && next.$config.id === \"grid\"){\n\t\t\t\t\t\t\tgridResizer= true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(gridResizer){\n\t\t\t\t\t\tr.$config.css = (r.$config.css ? r.$config.css + \" \" : \"\") + \"gantt_grid_resize_wrap\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tonCreated: function (layout) {\n\t\t\t\tvar first = true;\n\n\t\t\t\tthis._legacyGridResizerClass(layout);\n\n\t\t\t\tlayout.attachEvent(\"onBeforeResize\", function(){\n\t\t\t\t\tvar mainTimeline = gantt.$ui.getView(\"timeline\");\n\t\t\t\t\tif(mainTimeline)\n\t\t\t\t\t\tmainTimeline.$config.hidden = mainTimeline.$parent.$config.hidden = !gantt.config.show_chart;\n\n\t\t\t\t\tvar mainGrid = gantt.$ui.getView(\"grid\");\n\t\t\t\t\tif(!mainGrid)\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tvar showGrid = gantt.config.show_grid;\n\t\t\t\t\tif(first) {\n\t\t\t\t\t\tvar colsWidth = mainGrid._getColsTotalWidth();\n\t\t\t\t\t\tif(colsWidth !== false){\n\t\t\t\t\t\t\tgantt.config.grid_width = colsWidth;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tshowGrid = showGrid && !!gantt.config.grid_width;\n\t\t\t\t\t\tgantt.config.show_grid = showGrid;\n\t\t\t\t\t}\n\t\t\t\t\tmainGrid.$config.hidden = mainGrid.$parent.$config.hidden = !showGrid;\n\n\t\t\t\t\tif(!mainGrid.$config.hidden){\n\t\t\t\t\t\t/* restrict grid width due to min_width, max_width, min_grid_column_width */\n\t\t\t\t\t\tvar grid_limits = mainGrid._getGridWidthLimits();\n\t\t\t\t\t\tif (grid_limits[0] && gantt.config.grid_width < grid_limits[0])\n\t\t\t\t\t\t\tgantt.config.grid_width = grid_limits[0];\n\t\t\t\t\t\tif (grid_limits[1] && gantt.config.grid_width > grid_limits[1])\n\t\t\t\t\t\t\tgantt.config.grid_width = grid_limits[1];\n\t\t\t\t\t\tif(mainTimeline && gantt.config.show_chart){\n\n\t\t\t\t\t\t\tmainGrid.$config.width = gantt.config.grid_width - 1;\n\t\t\t\t\t\t\tif(!first){\n\n\t\t\t\t\t\t\t\tif(mainTimeline && !domHelpers.isChildOf(mainTimeline.$task, layout.$view)){\n\t\t\t\t\t\t\t\t\t// timeline is being displayed after being not visible, reset grid with from full screen\n\t\t\t\t\t\t\t\t\tif(!mainGrid.$config.original_grid_width){\n\t\t\t\t\t\t\t\t\t\tvar skinSettings = gantt.skins[gantt.skin];\n\t\t\t\t\t\t\t\t\t\tif(skinSettings && skinSettings.config && skinSettings.config.grid_width){\n\t\t\t\t\t\t\t\t\t\t\tmainGrid.$config.original_grid_width = skinSettings.config.grid_width;\n\t\t\t\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\t\t\t\tmainGrid.$config.original_grid_width = 0;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tgantt.config.grid_width = mainGrid.$config.original_grid_width;\n\t\t\t\t\t\t\t\t\tmainGrid.$parent.$config.width = gantt.config.grid_width;\n\t\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\t\tmainGrid.$parent._setContentSize(mainGrid.$config.width, mainGrid.$config.height);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tmainGrid.$parent.$config.width = gantt.config.grid_width;\n\t\t\t\t\t\t\t\tif(mainGrid.$parent.$config.group){\n\t\t\t\t\t\t\t\t\tgantt.$layout._syncCellSizes(mainGrid.$parent.$config.group, mainGrid.$parent.$config.width);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif( mainTimeline && domHelpers.isChildOf(mainTimeline.$task, layout.$view)){\n\t\t\t\t\t\t\t\t// hiding timeline, remember grid with to restore it when timeline is displayed again\n\t\t\t\t\t\t\t\tmainGrid.$config.original_grid_width = gantt.config.grid_width;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(!first){\n\t\t\t\t\t\t\t\tmainGrid.$parent.$config.width = 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfirst = false;\n\n\t\t\t\t});\n\n\t\t\t\tgantt._getVerticalScrollbar = this.getVerticalScrollbar;\n\t\t\t\tgantt._getHorizontalScrollbar = this.getHorizontalScrollbar;\n\n\t\t\t\tvar vertical = this.getVerticalScrollbar();\n\t\t\t\tvar horizontal = this.getHorizontalScrollbar();\n\t\t\t\tif(vertical){\n\t\t\t\t\tvertical.attachEvent(\"onScroll\", function(oldPos, newPos, dir){\n\t\t\t\t\t\tvar scrollState = gantt.getScrollState();\n\t\t\t\t\t\tgantt.callEvent(\"onGanttScroll\", [scrollState.x, oldPos, scrollState.x, newPos]);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(horizontal){\n\t\t\t\t\thorizontal.attachEvent(\"onScroll\", function(oldPos, newPos, dir){\n\t\t\t\t\t\tvar scrollState = gantt.getScrollState();\n\t\t\t\t\t\tgantt.callEvent(\"onGanttScroll\", [oldPos, scrollState.y, newPos, scrollState.y]);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tlayout.attachEvent(\"onResize\", function(){\n\t\t\t\t\tif(vertical && !gantt.$scroll_ver){\n\t\t\t\t\t\tgantt.$scroll_ver = vertical.$scroll_ver;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(horizontal && !gantt.$scroll_hor){\n\t\t\t\t\t\tgantt.$scroll_hor = horizontal.$scroll_hor;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t},\n\n\t\t\t_findGridResizer: function(layout, grid){\n\t\t\t\tvar resizers = layout.getCellsByType(\"resizer\");\n\n\t\t\t\tvar gridFirst = true;\n\t\t\t\tvar gridResizer;\n\t\t\t\tfor(var i = 0; i < resizers.length; i++){\n\t\t\t\t\tvar res = resizers[i];\n\t\t\t\t\tres._getSiblings();\n\t\t\t\t\tvar prev = res._behind;\n\t\t\t\t\tvar next = res._front;\n\t\t\t\t\tif(prev && prev.$content === grid || (prev.isChild && prev.isChild(grid))){\n\t\t\t\t\t\tgridResizer = res;\n\t\t\t\t\t\tgridFirst = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}else if(next && next.$content === grid || (next.isChild && next.isChild(grid))){\n\t\t\t\t\t\tgridResizer = res;\n\t\t\t\t\t\tgridFirst = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tresizer: gridResizer,\n\t\t\t\t\tgridFirst: gridFirst\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tonInitialized: function (layout) {\n\t\t\t\tvar grid = gantt.$ui.getView(\"grid\");\n\n\t\t\t\tvar resizeInfo = this._findGridResizer(layout, grid);\n\n\t\t\t\t// expose grid resize events\n\t\t\t\tif(resizeInfo.resizer){\n\t\t\t\t\tvar gridFirst = resizeInfo.gridFirst,\n\t\t\t\t\t\tnext = resizeInfo.resizer;\n\t\t\t\t\tvar initialWidth;\n\t\t\t\t\tnext.attachEvent(\"onResizeStart\", function(prevCellWidth, nextCellWidth){\n\n\t\t\t\t\t\tvar grid = gantt.$ui.getView(\"grid\");\n\t\t\t\t\t\tvar viewCell = grid ? grid.$parent : null;\n\t\t\t\t\t\tif(viewCell){\n\t\t\t\t\t\t\tvar limits = grid._getGridWidthLimits();\n\n\t\t\t\t\t\t\t// min grid width is defined by min widths of its columns, unless grid has horizontal scroll\n\t\t\t\t\t\t\tif(!grid.$config.scrollable)\n\t\t\t\t\t\t\t\tviewCell.$config.minWidth = limits[0];\n\n\t\t\t\t\t\t\tviewCell.$config.maxWidth = limits[1];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinitialWidth = gridFirst ? prevCellWidth : nextCellWidth;\n\t\t\t\t\t\treturn gantt.callEvent(\"onGridResizeStart\", [initialWidth]);\n\t\t\t\t\t});\n\t\t\t\t\tnext.attachEvent(\"onResize\", function(newBehindSize, newFrontSize){\n\t\t\t\t\t\tvar newSize = gridFirst ? newBehindSize : newFrontSize;\n\t\t\t\t\t\treturn gantt.callEvent(\"onGridResize\", [initialWidth, newSize]);\n\t\t\t\t\t});\n\t\t\t\t\tnext.attachEvent(\"onResizeEnd\", function(oldBackSize, oldFrontSize, newBackSize, newFrontSize){\n\n\t\t\t\t\t\tvar oldSize = gridFirst ? oldBackSize : oldFrontSize;\n\t\t\t\t\t\tvar newSize = gridFirst ? newBackSize : newFrontSize;\n\t\t\t\t\t\tvar grid = gantt.$ui.getView(\"grid\");\n\t\t\t\t\t\tvar viewCell = grid ? grid.$parent : null;\n\t\t\t\t\t\tif(viewCell){\n\t\t\t\t\t\t\tviewCell.$config.minWidth = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar res = gantt.callEvent(\"onGridResizeEnd\", [oldSize, newSize]);\n\t\t\t\t\t\tif(res){\n\t\t\t\t\t\t\tgantt.config.grid_width = newSize;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn res;\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t},\n\t\t\tonDestroyed: function (timeline) {\n\n\t\t\t}\n\t\t};\n\t};\n})();\n\nmodule.exports = initializer;","var domHelpers = require(\"../../../utils/dom_helpers\");\n\nvar initLinksDND = function(timeline, gantt) {\n\tvar _link_landing,\n\t\t_link_target_task,\n\t\t_link_target_task_start,\n\t\t_link_source_task,\n\t\t_link_source_task_start;\n\n\n\tfunction getVisibleMilestoneWidth() {\n\t\tvar origWidth = timeline.getItemHeight();//m-s have square shape\n\t\treturn Math.round(Math.sqrt(2 * origWidth * origWidth)) - 2;\n\t}\n\n\tfunction isMilestone(task) {\n\t\treturn gantt.getTaskType(task.type) == gantt.config.types.milestone;\n\t}\n\n\tfunction getDndState(){\n\t\treturn {\n\t\t\tlink_source_id : _link_source_task,\n\t\t\tlink_target_id : _link_target_task,\n\t\t\tlink_from_start : _link_source_task_start,\n\t\t\tlink_to_start : _link_target_task_start,\n\t\t\tlink_landing_area : _link_landing\n\t\t};\n\t}\n\n\tvar services = gantt.$services;\n\n\tvar state = services.getService(\"state\");\n\tvar DnD = services.getService(\"dnd\");\n\n\tstate.registerProvider(\"linksDnD\", getDndState);\n\n\tvar dnd = new DnD(timeline.$task_bars, { sensitivity : 0, updates_per_second : 60 }),\n\t\tstart_marker = \"task_start_date\",\n\t\tend_marker = \"task_end_date\",\n\t\tlink_edge_marker = \"gantt_link_point\",\n\t\tlink_landing_hover_area = \"gantt_link_control\";\n\n\tdnd.attachEvent(\"onBeforeDragStart\", gantt.bind(function(obj,e) {\n\t\tvar target = (e.target||e.srcElement);\n\t\tresetDndState();\n\t\tif(gantt.getState().drag_id)\n\t\t\treturn false;\n\n\t\tif(domHelpers.locateClassName(target, link_edge_marker)){\n\t\t\tif(domHelpers.locateClassName(target, start_marker))\n\t\t\t\t_link_source_task_start = true;\n\n\t\t\tvar sid = gantt.locate(e);\n\t\t\t_link_source_task = sid;\n\n\t\t\tvar t = gantt.getTask(sid);\n\t\t\tif(gantt.isReadonly(t)){\n\t\t\t\tresetDndState();\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar shift = 0;\n\n\t\t\tthis._dir_start = getLinePos(t, !!_link_source_task_start, shift, timeline.$getConfig(), true);\n\t\t\treturn true;\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\n\t}, this));\n\n\tdnd.attachEvent(\"onAfterDragStart\", gantt.bind(function(obj,e) {\n\t\tif(gantt.config.touch) {\n\t\t\tgantt.refreshData();\n\t\t}\n\t\tupdateMarkedHtml(dnd.config.marker);\n\t}, this));\n\n\tfunction getLinePos(task, to_start, shift, cfg, isStart){\n\t\tvar taskPos = getMilestonePosition(task, function(task){ return gantt.getTaskPosition(task);}, cfg);\n\n\t\tvar pos = {x: taskPos.x, y: taskPos.y};\n\t\tif(!to_start){\n\t\t\tpos.x = taskPos.xEnd;\n\t\t}\n\n\t\t//var pos = gantt._get_task_pos(task, !!to_start);\n\t\tpos.y += gantt.config.row_height/2;\n\n\t\tvar offset = isMilestone(task) && isStart ? 2 : 0;\n\n\t\tshift = shift || 0;\n\t\tif(cfg.rtl)\n\t\t\tshift = shift * -1;\n\n\t\tpos.x += (to_start ? -1 : 1)*shift - offset;\n\t\treturn pos;\n\t}\n\n\tfunction getMilestonePosition(task, getTaskPosition, cfg){\n\t\tvar pos = getTaskPosition(task);\n\n\t\tvar res = {\n\t\t\tx: pos.left,\n\t\t\ty: pos.top,\n\t\t\twidth: pos.width,\n\t\t\theight: pos.height\n\t\t};\n\n\t\tif(cfg.rtl){\n\t\t\tres.xEnd = res.x;\n\t\t\tres.x = res.xEnd + res.width;\n\t\t}else{\n\t\t\tres.xEnd = res.x + res.width;\n\t\t}\n\t\tres.yEnd = res.y + res.height;\n\n\t\tif(gantt.getTaskType(task.type) == gantt.config.types.milestone){\n\t\t\tvar milestoneWidth = getVisibleMilestoneWidth();\n\n\t\t\tres.x += (!cfg.rtl ? -1 : 1)*(milestoneWidth / 2);\n\t\t\tres.xEnd += (!cfg.rtl ? 1 : -1)*(milestoneWidth / 2);\n\n\t\t\t//pos.x -= milestoneWidth / 2;\n\t\t\t//pos.xEnd += milestoneWidth / 2;\n\t\t\tres.width = pos.xEnd - pos.x;\n\t\t}\n\n\n\t\treturn res;\n\t}\n\n\tdnd.attachEvent(\"onDragMove\", gantt.bind(function(obj,e) {\n\t\tvar dd = dnd.config;\n\t\tvar pos = dnd.getPosition(e);\n\t\tadvanceMarker(dd.marker, pos);\n\t\tvar landing = !!domHelpers.locateClassName(e, link_landing_hover_area);\n\n\t\tvar prevTarget = _link_target_task;\n\t\tvar prevLanding = _link_landing;\n\t\tvar prevToStart = _link_target_task_start;\n\n\t\tvar targ = gantt.locate(e),\n\t\t\tto_start = true;\n\t\tif(landing){\n\t\t\t//refreshTask\n\t\t\tto_start = !domHelpers.locateClassName(e, end_marker);\n\t\t\tlanding = !!targ;\n\t\t}\n\n\t\t_link_target_task = targ;\n\t\t_link_landing = landing;\n\t\t_link_target_task_start = to_start;\n\n\t\tif(landing){\n\t\t\tvar t = gantt.getTask(targ);\n\n\t\t\tvar config = timeline.$getConfig();\n\t\t\tvar node = domHelpers.locateClassName(e, link_landing_hover_area);\n\t\t\tvar shift = 0;\n\t\t\tif(node){\n\t\t\t\tshift = Math.floor(node.offsetWidth / 2);\n\t\t\t}\n\n\t\t\tthis._dir_end = getLinePos(t, !!_link_target_task_start,shift, config);\n\t\t}else{\n\t\t\tthis._dir_end = domHelpers.getRelativeEventPosition(e, timeline.$task_data);\n\t\t}\n\n\t\tvar targetChanged = !(prevLanding == landing && prevTarget == targ && prevToStart == to_start);\n\t\tif(targetChanged){\n\t\t\tif(prevTarget)\n\t\t\t\tgantt.refreshTask(prevTarget, false);\n\t\t\tif(targ)\n\t\t\t\tgantt.refreshTask(targ, false);\n\t\t}\n\n\t\tif(targetChanged){\n\t\t\tupdateMarkedHtml(dd.marker);\n\t\t}\n\n\t\tshowDirectingLine(this._dir_start.x, this._dir_start.y, this._dir_end.x, this._dir_end.y);\n\n\t\treturn true;\n\t}, this));\n\n\n\tdnd.attachEvent(\"onDragEnd\", gantt.bind(function() {\n\t\tvar drag = getDndState();\n\n\t\tif(drag.link_source_id && drag.link_target_id && drag.link_source_id != drag.link_target_id){\n\t\t\tvar type = gantt._get_link_type(drag.link_from_start, drag.link_to_start);\n\n\t\t\tvar link = {source : drag.link_source_id, target: drag.link_target_id, type:type};\n\t\t\tif(link.type && gantt.isLinkAllowed(link))\n\t\t\t\tgantt.addLink(link);\n\t\t}\n\n\t\tresetDndState();\n\n\t\tif(gantt.config.touch) {\n\t\t\tgantt.refreshData();\n\t\t}\n\t\telse {\n\t\t\tif (drag.link_source_id)\n\t\t\t\tgantt.refreshTask(drag.link_source_id, false);\n\t\t\tif (drag.link_target_id)\n\t\t\t\tgantt.refreshTask(drag.link_target_id, false);\n\t\t}\n\t\tremoveDirectionLine();\n\t}, this));\n\n\tfunction updateMarkedHtml(marker){\n\t\tvar link = getDndState();\n\n\t\tvar css = [\"gantt_link_tooltip\"];\n\t\tif(link.link_source_id && link.link_target_id){\n\t\t\tif(gantt.isLinkAllowed(link.link_source_id, link.link_target_id, link.link_from_start, link.link_to_start)){\n\t\t\t\tcss.push(\"gantt_allowed_link\");\n\t\t\t}else{\n\t\t\t\tcss.push(\"gantt_invalid_link\");\n\t\t\t}\n\t\t}\n\n\t\tvar className = gantt.templates.drag_link_class(link.link_source_id, link.link_from_start, link.link_target_id, link.link_to_start);\n\t\tif(className)\n\t\t\tcss.push(className);\n\n\t\tvar html = \"
\" +\n\t\t\tgantt.templates.drag_link(link.link_source_id, link.link_from_start, link.link_target_id, link.link_to_start) +\n\t\t\t\"
\";\n\t\tmarker.innerHTML = html;\n\t}\n\n\tfunction advanceMarker(marker, pos){\n\t\tmarker.style.left = pos.x + 5 + \"px\";\n\t\tmarker.style.top = pos.y + 5 + \"px\";\n\t}\n\n\tfunction resetDndState(){\n\t\t_link_source_task =\n\t\t\t_link_source_task_start =\n\t\t\t\t_link_target_task = null;\n\t\t_link_target_task_start = true;\n\t}\n\tfunction showDirectingLine(s_x, s_y, e_x, e_y){\n\t\tvar div = getDirectionLine();\n\n\t\tvar link = getDndState();\n\n\t\tvar css = [\"gantt_link_direction\"];\n\t\tif(gantt.templates.link_direction_class){\n\t\t\tcss.push(gantt.templates.link_direction_class(link.link_source_id, link.link_from_start, link.link_target_id, link.link_to_start));\n\t\t}\n\n\t\tvar dist =Math.sqrt( (Math.pow(e_x - s_x, 2)) + (Math.pow(e_y - s_y, 2)) );\n\t\tdist = Math.max(0, dist - 3);\n\t\tif(!dist)\n\t\t\treturn;\n\n\t\tdiv.className = css.join(\" \");\n\t\tvar tan = (e_y - s_y)/(e_x - s_x),\n\t\t\tangle = Math.atan(tan);\n\n\t\tif(coordinateCircleQuarter(s_x, e_x, s_y, e_y) == 2){\n\t\t\tangle += Math.PI;\n\t\t}else if(coordinateCircleQuarter(s_x, e_x, s_y, e_y) == 3){\n\t\t\tangle -= Math.PI;\n\t\t}\n\n\n\n\t\tvar sin = Math.sin(angle),\n\t\t\tcos = Math.cos(angle),\n\t\t\ttop = Math.round(s_y),\n\t\t\tleft = Math.round(s_x);\n\n\n\t\tvar style = [\n\t\t\t\"-webkit-transform: rotate(\"+angle+\"rad)\",\n\t\t\t\"-moz-transform: rotate(\"+angle+\"rad)\",\n\t\t\t\"-ms-transform: rotate(\"+angle+\"rad)\",\n\t\t\t\"-o-transform: rotate(\"+angle+\"rad)\",\n\t\t\t\"transform: rotate(\"+angle+\"rad)\",\n\t\t\t\"width:\" + Math.round(dist) + \"px\"\n\t\t];\n\n\t\tif(window.navigator.userAgent.indexOf(\"MSIE 8.0\") != -1){\n\t\t\t//ms-filter breaks styles in ie9, so add it only for 8th\n\t\t\tstyle.push(\"-ms-filter: \\\"\" + ieTransform(sin, cos) + \"\\\"\");\n\n\t\t\tvar shiftLeft = Math.abs(Math.round(s_x - e_x)),\n\t\t\t\tshiftTop = Math.abs(Math.round(e_y - s_y));\n\t\t\t//fix rotation axis\n\t\t\tswitch(coordinateCircleQuarter(s_x, e_x, s_y, e_y)){\n\t\t\t\tcase 1:\n\t\t\t\t\ttop -= shiftTop;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tleft -= shiftLeft;\n\t\t\t\t\ttop -= shiftTop;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tleft -= shiftLeft;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t}\n\n\t\tstyle.push(\"top:\" + top + \"px\");\n\t\tstyle.push(\"left:\" + left + \"px\");\n\n\t\tdiv.style.cssText = style.join(\";\");\n\t}\n\n\tfunction ieTransform(sin, cos){\n\t\treturn \"progid:DXImageTransform.Microsoft.Matrix(\"+\n\t\t\t\"M11 = \"+cos+\",\"+\n\t\t\t\"M12 = -\"+sin+\",\"+\n\t\t\t\"M21 = \"+sin+\",\"+\n\t\t\t\"M22 = \"+cos+\",\"+\n\t\t\t\"SizingMethod = 'auto expand'\"+\n\t\t\")\";\n\t}\n\tfunction coordinateCircleQuarter(sX, eX, sY, eY){\n\t\tif(eX >= sX){\n\t\t\tif(eY <= sY){\n\t\t\t\treturn 1;\n\t\t\t}else{\n\t\t\t\treturn 4;\n\t\t\t}\n\t\t}else{\n\t\t\tif(eY <= sY){\n\t\t\t\treturn 2;\n\t\t\t}else{\n\t\t\t\treturn 3;\n\t\t\t}\n\t\t}\n\n\t}\n\tfunction getDirectionLine(){\n\t\tif(!dnd._direction){\n\t\t\tdnd._direction = document.createElement(\"div\");\n\t\t\ttimeline.$task_links.appendChild(dnd._direction);\n\t\t}\n\t\treturn dnd._direction;\n\t}\n\tfunction removeDirectionLine(){\n\t\tif(dnd._direction){\n\t\t\tif (dnd._direction.parentNode)\t//the event line can be detached because of data refresh\n\t\t\t\tdnd._direction.parentNode.removeChild(dnd._direction);\n\n\t\t\tdnd._direction = null;\n\t\t}\n\t}\n};\n\nmodule.exports = {\n\tcreateLinkDND: function(){\n\t\treturn {\n\t\t\tinit: initLinksDND\n\t\t};\n\t}\n};","var domHelpers = require(\"../../../utils/dom_helpers\"),\n\tutils = require(\"../../../utils/utils\");\nvar timeout = require(\"../../../utils/timeout\");\n\nfunction createTaskDND(timeline, gantt){\n\tvar services = gantt.$services;\n\treturn {\n\t\tdrag: null,\n\t\tdragMultiple: {},\n\t\t_events: {\n\t\t\tbefore_start: {},\n\t\t\tbefore_finish: {},\n\t\t\tafter_finish: {}\n\t\t},\n\t\t_handlers: {},\n\t\tinit: function () {\n\t\t\tthis._domEvents = gantt._createDomEventScope();\n\t\t\tthis.clear_drag_state();\n\t\t\tvar drag = gantt.config.drag_mode;\n\t\t\tthis.set_actions();\n\n\t\t\tvar stateService = services.getService(\"state\");\n\t\t\tstateService.registerProvider(\"tasksDnd\", utils.bind(function(){\n\t\t\t\treturn {\n\t\t\t\t\tdrag_id : this.drag ? this.drag.id : undefined,\n\t\t\t\t\tdrag_mode : this.drag ? this.drag.mode : undefined,\n\t\t\t\t\tdrag_from_start : this.drag ? this.drag.left : undefined\n\t\t\t\t};\n\t\t\t}, this));\n\n\t\t\tvar evs = {\n\t\t\t\t\"before_start\": \"onBeforeTaskDrag\",\n\t\t\t\t\"before_finish\": \"onBeforeTaskChanged\",\n\t\t\t\t\"after_finish\": \"onAfterTaskDrag\"\n\t\t\t};\n\t\t\t//for now, all drag operations will trigger the same events\n\t\t\tfor (var stage in this._events) {\n\t\t\t\tfor (var mode in drag) {\n\t\t\t\t\tthis._events[stage][mode] = evs[stage];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._handlers[drag.move] = this._move;\n\t\t\tthis._handlers[drag.resize] = this._resize;\n\t\t\tthis._handlers[drag.progress] = this._resize_progress;\n\t\t},\n\t\tset_actions: function () {\n\t\t\tvar data = timeline.$task_data;\n\t\t\tthis._domEvents.attach(data, \"mousemove\", gantt.bind(function (e) {\n\t\t\t\tthis.on_mouse_move(e || event);\n\t\t\t}, this));\n\t\t\tthis._domEvents.attach(data, \"mousedown\", gantt.bind(function (e) {\n\t\t\t\tthis.on_mouse_down(e || event);\n\t\t\t}, this));\n\t\t\tthis._domEvents.attach(data, \"mouseup\", gantt.bind(function (e) {\n\t\t\t\tthis.on_mouse_up(e || event);\n\t\t\t}, this));\n\t\t},\n\n\t\tclear_drag_state: function () {\n\t\t\tthis.drag = {\n\t\t\t\tid: null,\n\t\t\t\tmode: null,\n\t\t\t\tpos: null,\n\t\t\t\tstart_x: null,\n\t\t\t\tstart_y: null,\n\t\t\t\tobj: null,\n\t\t\t\tleft: null\n\t\t\t};\n\t\t\tthis.dragMultiple = {};\n\t\t},\n\t\t_resize: function (ev, shift, drag) {\n\t\t\tvar cfg = timeline.$getConfig();\n\t\t\tvar coords_x = this._drag_task_coords(ev, drag);\n\t\t\tif (drag.left) {\n\t\t\t\tev.start_date = gantt.dateFromPos(coords_x.start + shift);\n\t\t\t\tif (!ev.start_date) {\n\t\t\t\t\tev.start_date = new Date(gantt.getState().min_date);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tev.end_date = gantt.dateFromPos(coords_x.end + shift);\n\t\t\t\tif (!ev.end_date) {\n\t\t\t\t\tev.end_date = new Date(gantt.getState().max_date);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (ev.end_date - ev.start_date < cfg.min_duration) {\n\t\t\t\tif (drag.left)\n\t\t\t\t\tev.start_date = gantt.calculateEndDate({start_date: ev.end_date, duration: -1, task: ev});\n\t\t\t\telse\n\t\t\t\t\tev.end_date = gantt.calculateEndDate({start_date: ev.start_date, duration: 1, task: ev});\n\t\t\t}\n\t\t\tgantt._init_task_timing(ev);\n\t\t},\n\t\t_resize_progress: function (ev, shift, drag) {\n\t\t\tvar coords_x = this._drag_task_coords(ev, drag);\n\n\t\t\tvar config = timeline.$getConfig();\n\t\t\tvar diffValue = !config.rtl ? (drag.pos.x - coords_x.start) : (coords_x.start - drag.pos.x);\n\n\t\t\tvar diff = Math.max(0, diffValue);\n\t\t\tev.progress = Math.min(1, diff / Math.abs(coords_x.end - coords_x.start));\n\t\t},\n\n\t\t_find_max_shift: function(dragItems, shift){\n\t\t\tvar correctShift;\n\t\t\tfor(var i in dragItems){\n\t\t\t\tvar drag = dragItems[i];\n\t\t\t\tvar ev = gantt.getTask(drag.id);\n\n\t\t\t\tvar coords_x = this._drag_task_coords(ev, drag);\n\t\t\t\tvar minX = gantt.posFromDate( new Date(gantt.getState().min_date)),\n\t\t\t\t\tmaxX = gantt.posFromDate( new Date(gantt.getState().max_date));\n\n\t\t\t\tif(coords_x.end + shift > maxX){\n\t\t\t\t\tvar maxShift = maxX - coords_x.end;\n\t\t\t\t\tif(maxShift < correctShift || correctShift === undefined){\n\t\t\t\t\t\tcorrectShift = maxShift;\n\t\t\t\t\t}\n\t\t\t\t}else if(coords_x.start + shift < minX){\n\t\t\t\t\tvar minShift = minX - coords_x.start;\n\t\t\t\t\tif(minShift < correctShift || correctShift === undefined){\n\t\t\t\t\t\tcorrectShift = minShift;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn correctShift;\n\t\t},\n\t\t_move: function (ev, shift, drag) {\n\t\t\tvar coords_x = this._drag_task_coords(ev, drag);\n\t\t\tvar new_start = gantt.dateFromPos(coords_x.start + shift),\n\t\t\t\tnew_end = gantt.dateFromPos(coords_x.end + shift);\n\t\t\tif (!new_start) {\n\t\t\t\tev.start_date = new Date(gantt.getState().min_date);\n\t\t\t\tev.end_date = gantt.dateFromPos(gantt.posFromDate(ev.start_date) + (coords_x.end - coords_x.start));\n\t\t\t} else if (!new_end) {\n\t\t\t\tev.end_date = new Date(gantt.getState().max_date);\n\t\t\t\tev.start_date = gantt.dateFromPos(gantt.posFromDate(ev.end_date) - (coords_x.end - coords_x.start));\n\t\t\t} else {\n\t\t\t\tev.start_date = new_start;\n\t\t\t\tev.end_date = new_end;\n\t\t\t}\n\t\t},\n\t\t_drag_task_coords: function (t, drag) {\n\t\t\tvar start = drag.obj_s_x = drag.obj_s_x || gantt.posFromDate(t.start_date);\n\t\t\tvar end = drag.obj_e_x = drag.obj_e_x || gantt.posFromDate(t.end_date);\n\t\t\treturn {\n\t\t\t\tstart: start,\n\t\t\t\tend: end\n\t\t\t};\n\t\t},\n\t\t_mouse_position_change: function (oldPos, newPos) {\n\t\t\tvar dx = oldPos.x - newPos.x,\n\t\t\t\tdy = oldPos.y - newPos.y;\n\t\t\treturn Math.sqrt(dx * dx + dy * dy);\n\t\t},\n\t\t_is_number: function (n) {\n\t\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\n\t\t},\n\n\t\ton_mouse_move: function (e) {\n\t\t\tif (this.drag.start_drag) {\n\t\t\t\tvar pos = domHelpers.getRelativeEventPosition(e, gantt.$task_data);\n\n\t\t\t\tvar sX = this.drag.start_drag.start_x,\n\t\t\t\t\tsY = this.drag.start_drag.start_y;\n\n\t\t\t\tif ((Date.now() - this.drag.timestamp > 50) ||\n\t\t\t\t\t(this._is_number(sX) && this._is_number(sY) && this._mouse_position_change({\n\t\t\t\t\t\tx: sX,\n\t\t\t\t\t\ty: sY\n\t\t\t\t\t}, pos) > 20)) {\n\t\t\t\t\tthis._start_dnd(e);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar drag = this.drag;\n\n\t\t\tif (drag.mode) {\n\t\t\t\tif (!timeout(this, 40))//limit update frequency\n\t\t\t\t\treturn;\n\n\t\t\t\tthis._update_on_move(e);\n\n\t\t\t}\n\t\t},\n\n\t\t_update_item_on_move: function(shift, id, mode, drag, e){\n\t\t\tvar ev = gantt.getTask(id);\n\t\t\tvar original = gantt.mixin({}, ev);\n\t\t\tvar copy = gantt.mixin({}, ev);\n\t\t\tthis._handlers[mode].apply(this, [copy, shift, drag]);\n\t\t\tgantt.mixin(ev, copy, true);\n\t\t\t//gantt._update_parents(drag.id, true);\n\t\t\tgantt.callEvent(\"onTaskDrag\", [ev.id, mode, copy, original, e]);\n\t\t\tgantt.mixin(ev, copy, true);\n\t\t\tgantt.refreshTask(id);\n\t\t},\n\n\t\t_update_on_move: function (e) {\n\t\t\tvar drag = this.drag;\n\t\t\tvar config = timeline.$getConfig();\n\t\t\tif (drag.mode) {\n\t\t\t\tvar pos = domHelpers.getRelativeEventPosition(e, timeline.$task_data);\n\t\t\t\tif (drag.pos && drag.pos.x == pos.x)\n\t\t\t\t\treturn;\n\n\t\t\t\tdrag.pos = pos;\n\n\t\t\t\tvar curr_date = gantt.dateFromPos(pos.x);\n\t\t\t\tif (!curr_date || isNaN(curr_date.getTime()))\n\t\t\t\t\treturn;\n\n\n\t\t\t\tvar shift = pos.x - drag.start_x;\n\t\t\t\tvar ev = gantt.getTask(drag.id);\n\n\t\t\t\tif (this._handlers[drag.mode]) {\n\n\t\t\t\t\tif(gantt.isSummaryTask(ev) && gantt.config.drag_project && drag.mode == config.drag_mode.move){\n\n\t\t\t\t\t\tvar initialDrag = {};\n\t\t\t\t\t\tinitialDrag[drag.id] = utils.copy(drag);\n\t\t\t\t\t\tvar maxShift = this._find_max_shift(utils.mixin(initialDrag, this.dragMultiple), shift);\n\t\t\t\t\t\tif(maxShift !== undefined){\n\t\t\t\t\t\t\tshift = maxShift;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._update_item_on_move(shift, drag.id, drag.mode, drag, e);\n\t\t\t\t\t\tfor(var i in this.dragMultiple){\n\t\t\t\t\t\t\tvar childDrag = this.dragMultiple[i];\n\t\t\t\t\t\t\tthis._update_item_on_move(shift, childDrag.id, childDrag.mode, childDrag, e);\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tthis._update_item_on_move(shift, drag.id, drag.mode, drag, e);\n\t\t\t\t\t}\n\t\t\t\t\tgantt._update_parents(drag.id);\n\t\t\t\t}\n\n\t\t\t}\n\t\t},\n\n\t\ton_mouse_down: function (e, src) {\n\t\t\t// on Mac we do not get onmouseup event when clicking right mouse button leaving us in dnd state\n\t\t\t// let's ignore right mouse button then\n\t\t\tif (e.button == 2 && e.button !== undefined)\n\t\t\t\treturn;\n\n\t\t\tvar config = timeline.$getConfig();\n\t\t\tvar id = gantt.locate(e);\n\t\t\tvar task = null;\n\t\t\tif (gantt.isTaskExists(id)) {\n\t\t\t\ttask = gantt.getTask(id);\n\t\t\t}\n\n\t\t\tif (gantt.isReadonly(task) || this.drag.mode) return;\n\n\t\t\tthis.clear_drag_state();\n\n\t\t\tsrc = src || (e.target || e.srcElement);\n\n\t\t\tvar className = domHelpers.getClassName(src);\n\t\t\tvar drag = this._get_drag_mode(className, src);\n\n\t\t\tif (!className || !drag) {\n\t\t\t\tif (src.parentNode)\n\t\t\t\t\treturn this.on_mouse_down(e, src.parentNode);\n\t\t\t\telse\n\t\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!drag) {\n\t\t\t\tif (gantt.checkEvent(\"onMouseDown\") && gantt.callEvent(\"onMouseDown\", [className.split(\" \")[0]])) {\n\t\t\t\t\tif (src.parentNode)\n\t\t\t\t\t\treturn this.on_mouse_down(e, src.parentNode);\n\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (drag.mode && drag.mode != config.drag_mode.ignore && config[\"drag_\" + drag.mode]) {\n\t\t\t\t\tid = gantt.locate(src);\n\t\t\t\t\ttask = gantt.copy(gantt.getTask(id) || {});\n\n\t\t\t\t\tif (gantt.isReadonly(task)) {\n\t\t\t\t\t\tthis.clear_drag_state();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ((gantt.isSummaryTask(task) && !config.drag_project) && drag.mode != config.drag_mode.progress) {//only progress drag is allowed for tasks with flexible duration\n\t\t\t\t\t\tthis.clear_drag_state();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tdrag.id = id;\n\t\t\t\t\tvar pos = domHelpers.getRelativeEventPosition(e, gantt.$task_data);\n\n\t\t\t\t\tdrag.start_x = pos.x;\n\t\t\t\t\tdrag.start_y = pos.y;\n\t\t\t\t\tdrag.obj = task;\n\t\t\t\t\tthis.drag.start_drag = drag;\n\t\t\t\t\tthis.drag.timestamp = Date.now();\n\n\t\t\t\t} else\n\t\t\t\t\tthis.clear_drag_state();\n\t\t\t}\n\t\t},\n\t\t_fix_dnd_scale_time: function (task, drag) {\n\t\t\tvar config = timeline.$getConfig();\n\t\t\tvar unit = gantt.getScale().unit,\n\t\t\t\tstep = gantt.getScale().step;\n\t\t\tif (!config.round_dnd_dates) {\n\t\t\t\tunit = 'minute';\n\t\t\t\tstep = config.time_step;\n\t\t\t}\n\n\t\t\tfunction fixStart(task) {\n\t\t\t\tif (!gantt.config.correct_work_time)\n\t\t\t\t\treturn;\n\t\t\t\tvar config = timeline.$getConfig();\n\t\t\t\tif (!gantt.isWorkTime(task.start_date, undefined, task))\n\t\t\t\t\ttask.start_date = gantt.calculateEndDate({\n\t\t\t\t\t\tstart_date: task.start_date,\n\t\t\t\t\t\tduration: -1,\n\t\t\t\t\t\tunit: config.duration_unit,\n\t\t\t\t\t\ttask: task\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction fixEnd(task) {\n\t\t\t\tif (!gantt.config.correct_work_time)\n\t\t\t\t\treturn;\n\t\t\t\tvar config = timeline.$getConfig();\n\t\t\t\tif (!gantt.isWorkTime(new Date(task.end_date - 1), undefined, task))\n\t\t\t\t\ttask.end_date = gantt.calculateEndDate({\n\t\t\t\t\t\tstart_date: task.end_date,\n\t\t\t\t\t\tduration: 1,\n\t\t\t\t\t\tunit: config.duration_unit,\n\t\t\t\t\t\ttask: task\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (drag.mode == config.drag_mode.resize) {\n\t\t\t\tif (drag.left) {\n\t\t\t\t\ttask.start_date = gantt.roundDate({date: task.start_date, unit: unit, step: step});\n\t\t\t\t\tfixStart(task);\n\t\t\t\t} else {\n\t\t\t\t\ttask.end_date = gantt.roundDate({date: task.end_date, unit: unit, step: step});\n\t\t\t\t\tfixEnd(task);\n\t\t\t\t}\n\t\t\t} else if (drag.mode == config.drag_mode.move) {\n\t\t\t\ttask.start_date = gantt.roundDate({date: task.start_date, unit: unit, step: step});\n\t\t\t\tfixStart(task);\n\t\t\t\ttask.end_date = gantt.calculateEndDate(task);\t\t\t\t\n\t\t\t}\n\t\t},\n\t\t_fix_working_times: function (task, drag) {\n\t\t\tvar config = timeline.$getConfig();\n\t\t\tvar drag = drag || {mode: config.drag_mode.move};\n\t\t\t\n\t\t\tif (drag.mode == config.drag_mode.resize) {\n\t\t\t\tif (drag.left) {\n\t\t\t\t\ttask.start_date = gantt.getClosestWorkTime({date: task.start_date, dir: 'future', task: task});\n\t\t\t\t} else {\n\t\t\t\t\ttask.end_date = gantt.getClosestWorkTime({date: task.end_date, dir: 'past', task: task});\n\t\t\t\t}\n\t\t\t} else if (drag.mode == config.drag_mode.move) {\n\t\t\t\tgantt.correctTaskWorkTime(task);\n\t\t\t}\n\t\t},\n\n\t\t_finalize_mouse_up: function(taskId, config, drag, e){\n\t\t\tvar ev = gantt.getTask(taskId);\n\n\t\t\tif (config.work_time && config.correct_work_time) {\n\t\t\t\tthis._fix_working_times(ev, drag);\n\t\t\t}\n\n\t\t\tthis._fix_dnd_scale_time(ev, drag);\n\n\t\t\tif (!this._fireEvent(\"before_finish\", drag.mode, [taskId, drag.mode, gantt.copy(drag.obj), e])) {\n\t\t\t\t//drag.obj._dhx_changed = false;\n\t\t\t\tthis.clear_drag_state();\n\t\t\t\tif(taskId == drag.id){\n\t\t\t\t\tdrag.obj._dhx_changed = false;\n\t\t\t\t\tgantt.mixin(ev, drag.obj, true);\n\t\t\t\t}\n\n\n\t\t\t\tgantt.refreshTask(ev.id);\n\t\t\t} else {\n\t\t\t\tvar drag_id = taskId;\n\n\t\t\t\tgantt._init_task_timing(ev);\n\n\t\t\t\tthis.clear_drag_state();\n\t\t\t\tgantt.updateTask(ev.id);\n\t\t\t\tthis._fireEvent(\"after_finish\", drag.mode, [drag_id, drag.mode, e]);\n\t\t\t}\n\n\t\t},\n\n\t\ton_mouse_up: function (e) {\n\n\t\t\tvar drag = this.drag;\n\t\t\tif (drag.mode && drag.id) {\n\t\t\t\tvar config = timeline.$getConfig();\n\t\t\t\t//drop\n\t\t\t\tvar ev = gantt.getTask(drag.id);\n\n\t\t\t\tvar dragMultiple = this.dragMultiple;\n\t\t\t\tthis._finalize_mouse_up(drag.id, config, drag, e);\n\t\t\t\tif(gantt.isSummaryTask(ev) && config.drag_project && drag.mode == config.drag_mode.move){\n\t\t\t\t\tfor(var i in dragMultiple){\n\t\t\t\t\t\tthis._finalize_mouse_up(dragMultiple[i].id, config, dragMultiple[i], e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.clear_drag_state();\n\t\t},\n\t\t_get_drag_mode: function (className, el) {\n\t\t\tvar config = timeline.$getConfig();\n\t\t\tvar modes = config.drag_mode;\n\t\t\tvar classes = (className || \"\").split(\" \");\n\t\t\tvar classname = classes[0];\n\t\t\tvar drag = {mode: null, left: null};\n\t\t\tswitch (classname) {\n\t\t\t\tcase \"gantt_task_line\":\n\t\t\t\tcase \"gantt_task_content\":\n\t\t\t\t\tdrag.mode = modes.move;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"gantt_task_drag\":\n\t\t\t\t\tdrag.mode = modes.resize;\n\n\t\t\t\t\tvar dragProperty = el.getAttribute(\"data-bind-property\");\n\n\t\t\t\t\tif (dragProperty == \"start_date\") {\n\t\t\t\t\t\tdrag.left = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdrag.left = false;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"gantt_task_progress_drag\":\n\t\t\t\t\tdrag.mode = modes.progress;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"gantt_link_control\":\n\t\t\t\tcase \"gantt_link_point\":\n\t\t\t\t\tdrag.mode = modes.ignore;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tdrag = null;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\treturn drag;\n\n\t\t},\n\n\t\t_start_dnd: function (e) {\n\t\t\tvar drag = this.drag = this.drag.start_drag;\n\t\t\tdelete drag.start_drag;\n\n\t\t\tvar cfg = timeline.$getConfig();\n\t\t\tvar id = drag.id;\n\t\t\tif (!cfg[\"drag_\" + drag.mode] || !gantt.callEvent(\"onBeforeDrag\", [id, drag.mode, e]) || !this._fireEvent(\"before_start\", drag.mode, [id, drag.mode, e])) {\n\t\t\t\tthis.clear_drag_state();\n\t\t\t} else {\n\t\t\t\tdelete drag.start_drag;\n\n\t\t\t\tvar task = gantt.getTask(id);\n\t\t\t\tif(gantt.isSummaryTask(task) && gantt.config.drag_project && drag.mode == cfg.drag_mode.move){\n\t\t\t\t\tgantt.eachTask(function(child){\n\t\t\t\t\t\tthis.dragMultiple[child.id] = gantt.mixin({\n\t\t\t\t\t\t\tid: child.id,\n\t\t\t\t\t\t\tobj: child\n\t\t\t\t\t\t}, this.drag);\n\t\t\t\t\t}, task.id, this);\n\t\t\t\t}\n\n\t\t\t\tgantt.callEvent(\"onTaskDragStart\", []);\n\t\t\t}\n\n\t\t},\n\t\t_fireEvent: function (stage, mode, params) {\n\t\t\tgantt.assert(this._events[stage], \"Invalid stage:{\" + stage + \"}\");\n\n\t\t\tvar trigger = this._events[stage][mode];\n\n\t\t\tgantt.assert(trigger, \"Unknown after drop mode:{\" + mode + \"}\");\n\t\t\tgantt.assert(params, \"Invalid event arguments\");\n\n\n\t\t\tif (!gantt.checkEvent(trigger))\n\t\t\t\treturn true;\n\n\t\t\treturn gantt.callEvent(trigger, params);\n\t\t},\n\n\t\tround_task_dates: function(task){\n\t\t\tvar drag_state = this.drag;\n\t\t\tvar config = timeline.$getConfig();\n\t\t\tif (!drag_state) {\n\t\t\t\tdrag_state = {mode: config.drag_mode.move};\n\t\t\t}\n\t\t\tthis._fix_dnd_scale_time(task, drag_state);\n\t\t},\n\t\tdestructor: function(){\n\t\t\tthis._domEvents.detachAll();\n\t\t}\n\t};\n}\n\nfunction initTaskDND() {\n\tvar _tasks_dnd;\n\treturn {\n\t\textend: function(timeline){\n\t\t\ttimeline.roundTaskDates = function (task) {\n\t\t\t\t_tasks_dnd.round_task_dates(task);\n\t\t\t};\n\n\t\t},\n\t\tinit: function(timeline, gantt){\n\t\t\t_tasks_dnd = createTaskDND(timeline, gantt);\n\t\t\t// TODO: entry point for touch handlers, move touch to timeline\n\t\t\ttimeline._tasks_dnd = _tasks_dnd;\n\t\t\treturn _tasks_dnd.init(gantt);\n\t\t},\n\t\tdestructor: function(){\n\t\t\t_tasks_dnd.destructor();\n\t\t\t_tasks_dnd = null;\n\t\t}\n\t};\n}\n\nmodule.exports = {\n\tcreateTaskDND: initTaskDND\n};\n","var utils = require(\"../../../utils/utils\"),\n\ttaskDnD = require(\"./tasks_dnd\"),\n\tlinkDnD = require(\"./links_dnd\"),\n\tdomHelpers = require(\"../../../utils/dom_helpers\");\n\nvar initializer = (function(){\n\treturn function(gantt){\n\t\tvar services = gantt.$services;\n\t\treturn {\n\t\t\tonCreated: function (timeline) {\n\t\t\t\tvar config = timeline.$config;\n\t\t\t\tconfig.bind = utils.defined(config.bind) ? config.bind : \"task\";\n\t\t\t\tconfig.bindLinks = utils.defined(config.bindLinks) ? config.bindLinks : \"link\";\n\n\t\t\t\ttimeline._linksDnD = linkDnD.createLinkDND();\n\t\t\t\ttimeline._tasksDnD = taskDnD.createTaskDND();\n\t\t\t\ttimeline._tasksDnD.extend(timeline);\n\n\t\t\t\tthis._mouseDelegates = require(\"../mouse_event_container\")(gantt);\n\t\t\t},\n\t\t\tonInitialized: function (timeline) {\n\t\t\t\tthis._attachDomEvents(gantt);\n\n\t\t\t\tthis._attachStateProvider(gantt, timeline);\n\n\t\t\t\ttimeline._tasksDnD.init(timeline, gantt);\n\t\t\t\ttimeline._linksDnD.init(timeline, gantt);\n\n\t\t\t\tif(timeline.$config.id == \"timeline\"){\n\t\t\t\t\tthis.extendDom(timeline);\n\t\t\t\t}\n\n\t\t\t},\n\t\t\tonDestroyed: function (timeline) {\n\t\t\t\tthis._clearDomEvents(gantt);\n\t\t\t\tthis._clearStateProvider(gantt);\n\t\t\t},\n\t\t\textendDom: function(timeline){\n\t\t\t\tgantt.$task = timeline.$task;\n\t\t\t\tgantt.$task_scale = timeline.$task_scale;\n\t\t\t\tgantt.$task_data = timeline.$task_data;\n\t\t\t\tgantt.$task_bg = timeline.$task_bg;\n\t\t\t\tgantt.$task_links = timeline.$task_links;\n\t\t\t\tgantt.$task_bars = timeline.$task_bars;\n\t\t\t},\n\n\t\t\t_clearDomEvents: function(){\n\t\t\t\tthis._mouseDelegates.destructor();\n\t\t\t\tthis._mouseDelegates = null;\n\t\t\t},\n\n\t\t\t_attachDomEvents: function(gantt){\n\t\t\t\tfunction _delete_link_handler(id, e) {\n\t\t\t\t\tif (id && this.callEvent(\"onLinkDblClick\", [id, e])) {\n\n\t\t\t\t\t\tvar link = this.getLink(id);\n\t\t\t\t\t\tif (this.isReadonly(link)) return;\n\n\t\t\t\t\t\tvar title = \"\";\n\t\t\t\t\t\tvar question = this.locale.labels.link + \" \" + this.templates.link_description(this.getLink(id)) + \" \" + this.locale.labels.confirm_link_deleting;\n\n\t\t\t\t\t\twindow.setTimeout(function () {\n\t\t\t\t\t\t\tgantt._dhtmlx_confirm(question, title, function () {\n\t\t\t\t\t\t\t\tgantt.deleteLink(id);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}, (this.config.touch ? 300 : 1));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_task_link\", gantt.bind(function (e, trg) {\n\t\t\t\t\tvar id = this.locate(e, this.config.link_attribute);\n\t\t\t\t\tif (id) {\n\t\t\t\t\t\tthis.callEvent(\"onLinkClick\", [id, e]);\n\t\t\t\t\t}\n\t\t\t\t}, gantt), this.$task);\n\n\t\t\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_scale_cell\", gantt.bind(function (e, trg) {\n\t\t\t\t\tvar pos = domHelpers.getRelativeEventPosition(e, gantt.$task_data);\n\t\t\t\t\tvar date = gantt.dateFromPos(pos.x);\n\t\t\t\t\tvar coll = Math.floor(gantt.columnIndexByDate(date));\n\n\t\t\t\t\tvar coll_date = gantt.getScale().trace_x[coll];\n\n\t\t\t\t\tgantt.callEvent(\"onScaleClick\", [e, coll_date]);\n\t\t\t\t}, gantt), this.$task);\n\n\t\t\t\tthis._mouseDelegates.delegate(\"doubleclick\", \"gantt_task_link\", gantt.bind(function (e, id, trg) {\n\t\t\t\t\tvar id = this.locate(e, gantt.config.link_attribute);\n\t\t\t\t\t_delete_link_handler.call(this, id, e);\n\t\t\t\t}, gantt), this.$task);\n\n\t\t\t\tthis._mouseDelegates.delegate(\"doubleclick\", \"gantt_link_point\", gantt.bind(function (e, id, trg) {\n\t\t\t\t\tvar id = this.locate(e),\n\t\t\t\t\t\ttask = this.getTask(id);\n\n\t\t\t\t\tvar link = null;\n\t\t\t\t\tif (trg.parentNode && domHelpers.getClassName(trg.parentNode)) {\n\t\t\t\t\t\tif (domHelpers.getClassName(trg.parentNode).indexOf(\"_left\") > -1) {\n\t\t\t\t\t\t\tlink = task.$target[0];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlink = task.$source[0];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (link)\n\t\t\t\t\t\t_delete_link_handler.call(this, link, e);\n\t\t\t\t\treturn false;\n\t\t\t\t}, gantt), this.$task);\n\t\t\t},\n\n\t\t\t_attachStateProvider: function(gantt, timeline){\n\t\t\t\tvar self = timeline;\n\t\t\t\tvar state = services.getService(\"state\");\n\t\t\t\tstate.registerProvider(\"tasksTimeline\", function(){\n\t\t\t\t\treturn {\n\t\t\t\t\t\tscale_unit: self._tasks ? self._tasks.unit : undefined,\n\t\t\t\t\t\tscale_step: self._tasks ? self._tasks.step : undefined\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t},\n\n\t\t\t_clearStateProvider: function(){\n\t\t\t\tvar state = services.getService(\"state\");\n\t\t\t\tstate.unregisterProvider(\"tasksTimeline\");\n\t\t\t}\n\t\t};\n\t};\n\n})();\n\nmodule.exports = initializer;","var domHelpers = require(\"../../../utils/dom_helpers\");\n\nfunction _init_dnd(gantt, grid) {\n\tvar DnD = gantt.$services.getService(\"dnd\");\n\n\tif(!grid.$config.bind || !gantt.getDatastore(grid.$config.bind)){\n\t\treturn;\n\t}\n\n\tfunction locate(e){\n\t\treturn domHelpers.locateAttribute(e, grid.$config.item_attribute);\n\t}\n\n\tfunction getStore(){\n\t\treturn gantt.getDatastore(grid.$config.bind);\n\t}\n\n\tvar dnd = new DnD(grid.$grid_data, {updates_per_second: 60});\n\tif (gantt.defined(grid.$getConfig().dnd_sensitivity))\n\t\tdnd.config.sensitivity = grid.$getConfig().dnd_sensitivity;\n\n\tdnd.attachEvent(\"onBeforeDragStart\", gantt.bind(function (obj, e) {\n\t\tvar el = locate(e);\n\t\tif (!el) return false;\n\t\tif (gantt.hideQuickInfo) gantt._hideQuickInfo();\n\n\t\tvar id = el.getAttribute(grid.$config.item_attribute);\n\n\t\tvar datastore = getStore();\n\n\t\tvar task = datastore.getItem(id);\n\n\t\tif (gantt.isReadonly(task))\n\t\t\treturn false;\n\n\t\tdnd.config.initial_open_state = task.$open;\n\t\tif (!gantt.callEvent(\"onRowDragStart\", [id, e.target || e.srcElement, e])) {\n\t\t\treturn false;\n\t\t}\n\n\t}, gantt));\n\n\tdnd.attachEvent(\"onAfterDragStart\", gantt.bind(function (obj, e) {\n\t\tvar el = locate(e);\n\t\tdnd.config.marker.innerHTML = el.outerHTML;\n\t\tvar element = dnd.config.marker.firstChild;\n\t\tif(element){\n\t\t\telement.style.position = \"static\";\n\t\t}\n\n\t\tdnd.config.id = el.getAttribute(grid.$config.item_attribute);\n\n\t\tvar store = getStore();\n\n\t\tvar task = store.getItem(dnd.config.id);\n\t\tdnd.config.index = store.getBranchIndex(dnd.config.id);\n\t\tdnd.config.parent = task.parent;\n\t\ttask.$open = false;\n\t\ttask.$transparent = true;\n\t\tthis.refreshData();\n\t}, gantt));\n\n\tdnd.lastTaskOfLevel = function (level) {\n\t\tvar last_item = null;\n\t\tvar store = getStore();\n\t\tvar tasks = store.getItems();\n\t\tfor (var i = 0, len = tasks.length; i < len; i++) {\n\t\t\tif (tasks[i].$level == level) {\n\t\t\t\tlast_item = tasks[i];\n\t\t\t}\n\t\t}\n\t\treturn last_item ? last_item.id : null;\n\t};\n\tdnd._getGridPos = gantt.bind(function (e) {\n\t\tvar pos = domHelpers.getNodePosition(grid.$grid_data);\n\t\tvar store = getStore();\n\t\t// row offset\n\t\tvar x = pos.x;\n\t\tvar y = e.pos.y - 10;\n\n\t\tvar config = grid.$getConfig();\n\t\t// prevent moving row out of grid_data container\n\t\tif (y < pos.y) y = pos.y;\n\t\tvar gridHeight = store.countVisible() * config.row_height;\n\t\tif (y > pos.y + gridHeight - config.row_height) y = pos.y + gridHeight - config.row_height;\n\n\t\tpos.x = x;\n\t\tpos.y = y;\n\t\treturn pos;\n\t}, gantt);\n\tdnd._getTargetY = gantt.bind(function (e) {\n\t\tvar pos = domHelpers.getNodePosition(grid.$grid_data);\n\n\t\tvar y = e.pageY - pos.y + (grid.$state.scrollTop || 0);\n\t\tif (y < 0)\n\t\t\ty = 0;\n\t\treturn y;\n\t}, gantt);\n\tdnd._getTaskByY = gantt.bind(function (y, dropIndex) {\n\n\t\tvar config = grid.$getConfig(),\n\t\t\tstore = getStore();\n\n\t\ty = y || 0;\n\n\t\tvar index = Math.floor(y / config.row_height);\n\t\tindex = dropIndex < index ? index - 1 : index;\n\n\t\tif (index > store.countVisible() - 1)\n\t\t\treturn null;\n\n\t\treturn store.getIdByIndex(index);\n\t}, gantt);\n\tdnd.attachEvent(\"onDragMove\", gantt.bind(function (obj, e) {\n\t\tvar dd = dnd.config;\n\t\tvar pos = dnd._getGridPos(e);\n\n\t\tvar config = grid.$getConfig(),\n\t\t\tstore = getStore();\n\n\t\t// setting position of row\n\t\tdd.marker.style.left = pos.x + 10 + \"px\";\n\t\tdd.marker.style.top = pos.y + \"px\";\n\n\t\t// highlight row when mouseover\n\t\tvar item = store.getItem(dnd.config.id);\n\t\tvar targetY = dnd._getTargetY(e);\n\t\tvar el = dnd._getTaskByY(targetY, store.getIndexById(item.id));\n\n\t\tif (!store.exists(el)) {\n\t\t\tel = dnd.lastTaskOfLevel(config.order_branch_free ? item.$level : 0);\n\t\t\tif (el == dnd.config.id) {\n\t\t\t\tel = null;\n\t\t\t}\n\t\t}\n\n\t\tfunction allowedLevel(next, item) {\n\t\t\treturn (!(store.isChildOf(over.id, item.id)) && (next.$level == item.$level || config.order_branch_free));\n\t\t}\n\n\t\tif (store.exists(el)) {\n\t\t\tvar over = store.getItem(el);\n\n\t\t\tif (store.getIndexById(over.id) * config.row_height + config.row_height / 2 < targetY) {\n\t\t\t\t//hovering over bottom part of item, check can be drop to bottom\n\t\t\t\tvar index = store.getIndexById(over.id);\n\t\t\t\tvar nextId = store.getNext(over.id);//adds +1 when hovering over placeholder\n\t\t\t\tvar next = store.getItem(nextId);\n\t\t\t\tif (next) {\n\t\t\t\t\tif (next.id != item.id) {\n\t\t\t\t\t\tover = next; //there is a valid target\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (config.order_branch_free) {\n\t\t\t\t\t\t\tif (!(store.isChildOf(item.id, over.id) && store.getChildren(over.id).length == 1))\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tstore.move(item.id, store.getBranchIndex(over.id) + 1, store.getParent(over.id));\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t//we at end of the list, check and drop at the end of list\n\t\t\t\t\tnextId = store.getIdByIndex(index);\n\t\t\t\t\tnext = store.getItem(nextId);\n\n\t\t\t\t\tif (allowedLevel(next, item) && next.id != item.id) {\n\t\t\t\t\t\tstore.move(item.id, -1, store.getParent(next.id));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (config.order_branch_free) {\n\t\t\t\tif (over.id != item.id && allowedLevel(over, item)) {\n\t\t\t\t\tif (!store.hasChild(over.id)) {\n\t\t\t\t\t\tover.$open = true;\n\t\t\t\t\t\tstore.move(item.id, -1, over.id);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (store.getIndexById(over.id) || config.row_height / 3 < targetY) return;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//if item is on different level, check the one before it\n\t\t\tvar index = store.getIndexById(over.id),\n\t\t\t\tprevId = store.getIdByIndex(index - 1);\n\n\t\t\tvar prev = store.getItem(prevId);\n\n\t\t\tvar shift = 1;\n\t\t\twhile ((!prev || prev.id == over.id) && index - shift >= 0) {\n\n\t\t\t\tprevId = store.getIdByIndex(index - shift);\n\t\t\t\tprev = store.getItem(prevId);\n\t\t\t\tshift++;\n\t\t\t}\n\n\t\t\tif (item.id == over.id) return;\n\t\t\t//replacing item under cursor\n\t\t\tif (allowedLevel(over, item) && item.id != over.id) {\n\t\t\t\tstore.move(item.id, 0, 0, over.id);\n\n\t\t\t} else if (over.$level == item.$level - 1 && !store.getChildren(over.id).length) {\n\t\t\t\tstore.move(item.id, 0, over.id);\n\n\t\t\t} else if (prev && (allowedLevel(prev, item)) && (item.id != prev.id)) {\n\t\t\t\tstore.move(item.id, -1, store.getParent(prev.id));\n\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}, gantt));\n\n\tdnd.attachEvent(\"onDragEnd\", gantt.bind(function () {\n\t\tvar store = getStore();\n\t\tvar task = store.getItem(dnd.config.id);\n\t\ttask.$transparent = false;\n\t\ttask.$open = dnd.config.initial_open_state;\n\n\t\tif (this.callEvent(\"onBeforeRowDragEnd\", [dnd.config.id, dnd.config.parent, dnd.config.index]) === false) {\n\t\t\tstore.move(dnd.config.id, dnd.config.index, dnd.config.parent);\n\t\t\ttask.$drop_target = null;\n\t\t} else {\n\t\t\tthis.callEvent(\"onRowDragEnd\", [dnd.config.id, task.$drop_target]);\n\t\t}\n\t\t\n\t\tstore.refresh(task.id);\n\t\t//this.refreshData();\n\t}, gantt));\n}\n\nmodule.exports = {\n\tinit: _init_dnd\n};","var utils = require(\"../../../utils/utils\");\nvar rowDnd = require(\"./tasks_grid_dnd\");\nvar editors = require(\"./editors/controller\");\nvar initializer = (function(){\n\treturn function(gantt){\n\t\treturn {\n\t\t\tonCreated: function (grid) {\n\t\t\t\tgrid.$config = utils.mixin(grid.$config, {\n\t\t\t\t\tbind: \"task\"\n\t\t\t\t});\n\t\t\t\tif(grid.$config.id == \"grid\") {\n\t\t\t\t\tthis.extendGantt(grid);\n\t\t\t\t\tgantt.ext.inlineEditors = gantt.ext._inlineEditors.createEditors(grid);\n\t\t\t\t\tgantt.ext.inlineEditors.init();\n\t\t\t\t}\n\n\n\n\t\t\t\tthis._mouseDelegates = require(\"../mouse_event_container\")(gantt);\n\t\t\t},\n\t\t\tonInitialized: function (grid) {\n\t\t\t\tvar config = grid.$getConfig();\n\t\t\t\tif (config.order_branch) {\n\t\t\t\t\trowDnd.init(grid.$gantt, grid);\n\t\t\t\t}\n\n\t\t\t\tthis.initEvents(grid, gantt);\n\t\t\t\tif(grid.$config.id == \"grid\") {\n\t\t\t\t\tthis.extendDom(grid);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonDestroyed: function (grid) {\n\t\t\t\tgantt.ext.inlineEditors.destructor();\n\t\t\t\tthis.clearEvents(grid, gantt);\n\t\t\t},\n\n\t\t\tinitEvents: function (grid, gantt) {\n\t\t\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_row\", gantt.bind(function (e, id, trg) {\n\t\t\t\t\tvar config = grid.$getConfig();\n\t\t\t\t\tif (id !== null) {\n\t\t\t\t\t\tvar task = this.getTask(id);\n\t\t\t\t\t\tif (config.scroll_on_click && !gantt._is_icon_open_click(e))\n\t\t\t\t\t\t\tthis.showDate(task.start_date);\n\t\t\t\t\t\tgantt.callEvent(\"onTaskRowClick\", [id, trg]);\n\t\t\t\t\t}\n\t\t\t\t}, gantt), grid.$grid);\n\n\t\t\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_grid_head_cell\", gantt.bind(function (e, id, trg) {\n\t\t\t\t\tvar column = trg.getAttribute(\"data-column-id\");\n\n\t\t\t\t\tif (!gantt.callEvent(\"onGridHeaderClick\", [column, e]))\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tvar config = grid.$getConfig();\n\n\t\t\t\t\tif (column == \"add\") {\n\t\t\t\t\t\tvar mouseEvents = gantt.$services.getService(\"mouseEvents\");\n\t\t\t\t\t\tmouseEvents.callHandler(\"click\", \"gantt_add\", grid.$grid, [e, config.root_id]);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (config.sort) {\n\t\t\t\t\t\tvar sorting_method = column,\n\t\t\t\t\t\t\tconf;\n\n\t\t\t\t\t\tfor (var i = 0; i < config.columns.length; i++) {\n\t\t\t\t\t\t\tif (config.columns[i].name == column) {\n\t\t\t\t\t\t\t\tconf = config.columns[i];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (conf && conf.sort !== undefined && conf.sort !== true) {\n\t\t\t\t\t\t\tsorting_method = conf.sort;\n\n\t\t\t\t\t\t\tif (!sorting_method) { // column sort property 'false', no sorting\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar sort = (this._sort && this._sort.direction && this._sort.name == column) ? this._sort.direction : \"desc\";\n\t\t\t\t\t\t// invert sort direction\n\t\t\t\t\t\tsort = (sort == \"desc\") ? \"asc\" : \"desc\";\n\t\t\t\t\t\tthis._sort = {\n\t\t\t\t\t\t\tname: column,\n\t\t\t\t\t\t\tdirection: sort\n\t\t\t\t\t\t};\n\t\t\t\t\t\tthis.sort(sorting_method, sort == \"desc\");\n\t\t\t\t\t}\n\t\t\t\t}, gantt), grid.$grid);\n\n\t\t\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_add\", gantt.bind(function (e, id, trg) {\n\t\t\t\t\tvar config = grid.$getConfig();\n\t\t\t\t\tif (config.readonly) return;\n\n\t\t\t\t\tvar item = {};\n\t\t\t\t\tthis.createTask(item, id ? id : gantt.config.root_id);\n\n\t\t\t\t\treturn false;\n\t\t\t\t}, gantt), grid.$grid);\n\n\t\t\t},\n\n\t\t\tclearEvents: function(grid, gantt){\n\t\t\t\tthis._mouseDelegates.destructor();\n\t\t\t\tthis._mouseDelegates = null;\n\t\t\t},\n\n\t\t\textendDom: function(grid){\n\t\t\t\tgantt.$grid = grid.$grid;\n\t\t\t\tgantt.$grid_scale = grid.$grid_scale;\n\t\t\t\tgantt.$grid_data = grid.$grid_data;\n\t\t\t},\n\t\t\textendGantt: function(grid){\n\t\t\t\tgantt.getGridColumns = gantt.bind(grid.getGridColumns, grid);\n\n\t\t\t\tgrid.attachEvent(\"onColumnResizeStart\", function(){\n\t\t\t\t\treturn gantt.callEvent(\"onColumnResizeStart\", arguments);\n\t\t\t\t});\n\t\t\t\tgrid.attachEvent(\"onColumnResize\", function(){\n\t\t\t\t\treturn gantt.callEvent(\"onColumnResize\", arguments);\n\t\t\t\t});\n\t\t\t\tgrid.attachEvent(\"onColumnResizeEnd\", function(){\n\t\t\t\t\treturn gantt.callEvent(\"onColumnResizeEnd\", arguments);\n\t\t\t\t});\n\n\t\t\t\tgrid.attachEvent(\"onColumnResizeComplete\", function(columns, totalWidth){\n\t\t\t\t\tgantt.config.grid_width = totalWidth;\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t};\n})();\n\nmodule.exports = initializer;","var dateHelper = require(\"../../../utils/date_helpers\");\n\nfunction createGridLineRender(gantt){\n\tfunction _render_grid_item(item, view) {\n\t\t//if (!_is_grid_visible.call(this))\n\t\t//\treturn null;\n\n\t\tvar columns = view.getGridColumns();\n\t\tvar config = view.$getConfig(),\n\t\t\ttemplates = view.$getTemplates();\n\n\t\tvar store = view.$config.rowStore;\n\n\t\tif(config.rtl){\n\t\t\tcolumns = columns.reverse();\n\t\t}\n\n\t\tvar cells = [];\n\t\tvar width = 0;\n\t\tvar has_child;\n\t\tfor (var i = 0; i < columns.length; i++) {\n\t\t\tvar last = i == columns.length - 1;\n\t\t\tvar col = columns[i];\n\t\t\tvar cell;\n\n\t\t\tvar value;\n\t\t\tvar textValue;\n\t\t\tif (col.name == \"add\") {\n\t\t\t\tvar aria = gantt._waiAria.gridAddButtonAttrString(col);\n\n\t\t\t\tvalue = \"
\";\n\t\t\t\ttextValue = \"\";\n\t\t\t} else {\n\t\t\t\tif (col.template)\n\t\t\t\t\tvalue = col.template(item);\n\t\t\t\telse\n\t\t\t\t\tvalue = item[col.name];\n\n\t\t\t\tif (dateHelper.isDate(value))\n\t\t\t\t\tvalue = templates.date_grid(value, item);\n\t\t\t\ttextValue = value;\n\t\t\t\tvalue = \"
\" + value + \"
\";\n\t\t\t}\n\t\t\tvar css = \"gantt_cell\" + (last ? \" gantt_last_cell\" : \"\");\n\n\t\t\tvar tree = [];\n\t\t\tif (col.tree) {\n\t\t\t\tfor (var j = 0; j < item.$level; j++)\n\t\t\t\t\ttree.push(templates.grid_indent(item));\n\n\t\t\t\thas_child = store.hasChild(item.id) && !(gantt.isSplitTask(item));\n\t\t\t\tif (has_child) {\n\t\t\t\t\ttree.push(templates.grid_open(item));\n\t\t\t\t\ttree.push(templates.grid_folder(item));\n\t\t\t\t} else {\n\t\t\t\t\ttree.push(templates.grid_blank(item));\n\t\t\t\t\ttree.push(templates.grid_file(item));\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar style = \"width:\" + (col.width - (last ? 1 : 0)) + \"px;\";\n\t\t\tif (this.defined(col.align))\n\t\t\t\tstyle += \"text-align:\" + col.align + \";\";\n\n\t\t\tvar aria = gantt._waiAria.gridCellAttrString(col, textValue);\n\n\t\t\ttree.push(value);\n\t\t\tif(config.rtl){\n\t\t\t\ttree = tree.reverse();\n\t\t\t}\n\t\t\tcell = \"
\" + tree.join(\"\") + \"
\";\n\t\t\tcells.push(cell);\n\t\t}\n\t\tvar css = gantt.getGlobalTaskIndex(item.id) % 2 === 0 ? \"\" : \" odd\";\n\t\tcss += (item.$transparent) ? \" gantt_transparent\" : \"\";\n\n\t\tcss += (item.$dataprocessor_class ? \" \" + item.$dataprocessor_class : \"\");\n\n\t\tif (templates.grid_row_class) {\n\t\t\tvar css_template = templates.grid_row_class.call(gantt, item.start_date, item.end_date, item);\n\t\t\tif (css_template)\n\t\t\t\tcss += \" \" + css_template;\n\t\t}\n\n\t\tif(store.getSelectedId() == item.id) {\n\t\t\tcss += \" gantt_selected\";\n\t\t}\n\n\t\tvar el = document.createElement(\"div\");\n\t\tel.className = \"gantt_row\" + css + \" gantt_row_\" + gantt.getTaskType(item.type);\n\t\tvar height = view.getItemHeight();\n\t\tel.style.height = height + \"px\";\n\t\tel.style.lineHeight = height + \"px\";\n\n\t\tif(config.smart_rendering){\n\t\t\tel.style.position = \"absolute\";\n\t\t\tel.style.left = \"0px\";\n\t\t\tel.style.top = view.getItemTop(item.id) + \"px\";\n\t\t}\n\n\t\tif(view.$config.item_attribute){\n\t\t\tel.setAttribute(view.$config.item_attribute, item.id);\n\t\t}\n\n\t\tgantt._waiAria.taskRowAttr(item, el);\n\n\t\tel.innerHTML = cells.join(\"\");\n\t\treturn el;\n\t}\n\n\treturn _render_grid_item;\n}\n\nmodule.exports = createGridLineRender;\n\n","\nfunction createLinkRender(gantt){\n\nfunction _render_link_element(link, view) {\n\tvar config = view.$getConfig();\n\n\tvar pt = path_builder.get_endpoint(link, view);\n\tvar dy = pt.e_y - pt.y;\n\tvar dx = pt.e_x - pt.x;\n\tif(!dx && !dy){\n\t\treturn null;\n\t}\n\n\n\tvar dots = path_builder.get_points(link, view);\n\tvar lines = drawer.get_lines(dots, view);\n\n\tvar div = document.createElement(\"div\");\n\n\tvar css = \"gantt_task_link\";\n\n\tif (link.color) {\n\t\tcss += \" gantt_link_inline_color\";\n\t}\n\tvar cssTemplate = gantt.templates.link_class ? gantt.templates.link_class(link) : \"\";\n\tif (cssTemplate) {\n\t\tcss += \" \" + cssTemplate;\n\t}\n\n\tif (config.highlight_critical_path && gantt.isCriticalLink) {\n\t\tif (gantt.isCriticalLink(link))\n\t\t\tcss += \" gantt_critical_link\";\n\t}\n\n\tdiv.className = css;\n\n\tif(view.$config.link_attribute){\n\t\tdiv.setAttribute(view.$config.link_attribute, link.id);\n\t}\n\n\tfor (var i = 0; i < lines.length; i++) {\n\t\tif (i == lines.length - 1) {\n\t\t\tlines[i].size -= config.link_arrow_size;\n\t\t}\n\t\tvar el = drawer.render_line(lines[i], lines[i + 1], view);\n\t\tif (link.color) {\n\t\t\tel.firstChild.style.backgroundColor = link.color;\n\t\t}\n\t\tdiv.appendChild(el);\n\t}\n\n\tvar direction = lines[lines.length - 1].direction;\n\tvar endpoint = _render_link_arrow(dots[dots.length - 1], direction, view);\n\tif (link.color) {\n\t\tendpoint.style.borderColor = link.color;\n\t}\n\tdiv.appendChild(endpoint);\n\n\tgantt._waiAria.linkAttr(link, div);\n\n\treturn div;\n}\n\nfunction _render_link_arrow(point, direction, view) {\n\tvar config = view.$getConfig();\n\tvar div = document.createElement(\"div\");\n\tvar top = point.y;\n\tvar left = point.x;\n\n\tvar size = config.link_arrow_size;\n\tvar line_width = config.row_height;\n\tvar className = \"gantt_link_arrow gantt_link_arrow_\" + direction;\n\tswitch (direction) {\n\t\tcase drawer.dirs.right:\n\t\t\ttop -= (size - line_width) / 2;\n\t\t\tleft -= size;\n\t\t\tbreak;\n\t\tcase drawer.dirs.left:\n\t\t\ttop -= (size - line_width) / 2;\n\t\t\tbreak;\n\t\tcase drawer.dirs.up:\n\t\t\tleft -= size;\n\t\t\tbreak;\n\t\tcase drawer.dirs.down:\n\t\t\ttop += size * 2;\n\t\t\tleft -= size;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n\tdiv.style.cssText = [\n\t\t\"top:\" + top + \"px\",\n\t\t\"left:\" + left + 'px'].join(';');\n\tdiv.className = className;\n\n\treturn div;\n}\n\n\nvar drawer = {\n\tcurrent_pos: null,\n\tdirs: {\"left\": 'left', \"right\": 'right', \"up\": 'up', \"down\": 'down'},\n\tpath: [],\n\tclear: function () {\n\t\tthis.current_pos = null;\n\t\tthis.path = [];\n\t},\n\tpoint: function (pos) {\n\t\tthis.current_pos = gantt.copy(pos);\n\t},\n\tget_lines: function (dots) {\n\t\tthis.clear();\n\t\tthis.point(dots[0]);\n\t\tfor (var i = 1; i < dots.length; i++) {\n\t\t\tthis.line_to(dots[i]);\n\t\t}\n\t\treturn this.get_path();\n\t},\n\tline_to: function (pos) {\n\t\tvar next = gantt.copy(pos);\n\t\tvar prev = this.current_pos;\n\n\t\tvar line = this._get_line(prev, next);\n\t\tthis.path.push(line);\n\t\tthis.current_pos = next;\n\t},\n\tget_path: function () {\n\t\treturn this.path;\n\t},\n\tget_wrapper_sizes: function (v, view) {\n\t\tvar config = view.$getConfig();\n\t\tvar res,\n\t\t\twrapper_size = config.link_wrapper_width,\n\t\t\tline_size = config.link_line_width,\n\t\t\ty = v.y + (config.row_height - wrapper_size) / 2;\n\t\tswitch (v.direction) {\n\t\t\tcase this.dirs.left:\n\t\t\t\tres = {\n\t\t\t\t\ttop: y,\n\t\t\t\t\theight: wrapper_size,\n\t\t\t\t\tlineHeight: wrapper_size,\n\t\t\t\t\tleft: v.x - v.size - wrapper_size / 2,\n\t\t\t\t\twidth: v.size + wrapper_size\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase this.dirs.right:\n\t\t\t\tres = {\n\t\t\t\t\ttop: y,\n\t\t\t\t\tlineHeight: wrapper_size,\n\t\t\t\t\theight: wrapper_size,\n\t\t\t\t\tleft: v.x - wrapper_size / 2,\n\t\t\t\t\twidth: v.size + wrapper_size\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase this.dirs.up:\n\t\t\t\tres = {\n\t\t\t\t\ttop: y - v.size,\n\t\t\t\t\tlineHeight: v.size + wrapper_size,\n\t\t\t\t\theight: v.size + wrapper_size,\n\t\t\t\t\tleft: v.x - wrapper_size / 2,\n\t\t\t\t\twidth: wrapper_size\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase this.dirs.down:\n\t\t\t\tres = {\n\t\t\t\t\ttop: y /*- wrapper_size/2*/,\n\t\t\t\t\tlineHeight: v.size + wrapper_size,\n\t\t\t\t\theight: v.size + wrapper_size,\n\t\t\t\t\tleft: v.x - wrapper_size / 2,\n\t\t\t\t\twidth: wrapper_size\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn res;\n\t},\n\tget_line_sizes: function (v, view) {\n\t\tvar config = view.$getConfig();\n\t\tvar res,\n\t\t\tline_size = config.link_line_width,\n\t\t\twrapper_size = config.link_wrapper_width,\n\t\t\tsize = v.size + line_size;\n\t\tswitch (v.direction) {\n\t\t\tcase this.dirs.left:\n\t\t\tcase this.dirs.right:\n\t\t\t\tres = {\n\t\t\t\t\theight: line_size,\n\t\t\t\t\twidth: size,\n\t\t\t\t\tmarginTop: (wrapper_size - line_size) / 2,\n\t\t\t\t\tmarginLeft: (wrapper_size - line_size) / 2\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase this.dirs.up:\n\t\t\tcase this.dirs.down:\n\t\t\t\tres = {\n\t\t\t\t\theight: size,\n\t\t\t\t\twidth: line_size,\n\t\t\t\t\tmarginTop: (wrapper_size - line_size) / 2,\n\t\t\t\t\tmarginLeft: (wrapper_size - line_size) / 2\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\n\t\treturn res;\n\t},\n\trender_line: function (v, end, view) {\n\t\tvar pos = this.get_wrapper_sizes(v, view);\n\t\tvar wrapper = document.createElement(\"div\");\n\t\twrapper.style.cssText = [\n\t\t\t\"top:\" + pos.top + \"px\",\n\t\t\t\"left:\" + pos.left + \"px\",\n\t\t\t\"height:\" + pos.height + \"px\",\n\t\t\t\"width:\" + pos.width + \"px\"\n\t\t].join(';');\n\t\twrapper.className = \"gantt_line_wrapper\";\n\n\t\tvar innerPos = this.get_line_sizes(v, view);\n\t\tvar inner = document.createElement(\"div\");\n\t\tinner.style.cssText = [\n\t\t\t\"height:\" + innerPos.height + \"px\",\n\t\t\t\"width:\" + innerPos.width + \"px\",\n\t\t\t\"margin-top:\" + innerPos.marginTop + \"px\",\n\t\t\t\"margin-left:\" + innerPos.marginLeft + \"px\"\n\t\t].join(\";\");\n\n\t\tinner.className = \"gantt_link_line_\" + v.direction;\n\t\twrapper.appendChild(inner);\n\n\t\treturn wrapper;\n\t},\n\t_get_line: function (from, to) {\n\t\tvar direction = this.get_direction(from, to);\n\t\tvar vect = {\n\t\t\tx: from.x,\n\t\t\ty: from.y,\n\t\t\tdirection: this.get_direction(from, to)\n\t\t};\n\t\tif (direction == this.dirs.left || direction == this.dirs.right) {\n\t\t\tvect.size = Math.abs(from.x - to.x);\n\t\t} else {\n\t\t\tvect.size = Math.abs(from.y - to.y);\n\t\t}\n\t\treturn vect;\n\t},\n\tget_direction: function (from, to) {\n\t\tvar direction = 0;\n\t\tif (to.x < from.x) {\n\t\t\tdirection = this.dirs.left;\n\t\t} else if (to.x > from.x) {\n\t\t\tdirection = this.dirs.right;\n\t\t} else if (to.y > from.y) {\n\t\t\tdirection = this.dirs.down;\n\t\t} else {\n\t\t\tdirection = this.dirs.up;\n\t\t}\n\t\treturn direction;\n\t}\n\n};\n\nvar path_builder = {\n\n\tpath: [],\n\tclear: function () {\n\t\tthis.path = [];\n\t},\n\tcurrent: function () {\n\t\treturn this.path[this.path.length - 1];\n\t},\n\tpoint: function (next) {\n\t\tif (!next)\n\t\t\treturn this.current();\n\n\t\tthis.path.push(gantt.copy(next));\n\t\treturn next;\n\t},\n\tpoint_to: function (direction, diff, point) {\n\t\tif (!point)\n\t\t\tpoint = gantt.copy(this.point());\n\t\telse\n\t\t\tpoint = {x: point.x, y: point.y};\n\t\tvar dir = drawer.dirs;\n\t\tswitch (direction) {\n\t\t\tcase (dir.left):\n\t\t\t\tpoint.x -= diff;\n\t\t\t\tbreak;\n\t\t\tcase (dir.right):\n\t\t\t\tpoint.x += diff;\n\t\t\t\tbreak;\n\t\t\tcase (dir.up):\n\t\t\t\tpoint.y -= diff;\n\t\t\t\tbreak;\n\t\t\tcase (dir.down):\n\t\t\t\tpoint.y += diff;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t\treturn this.point(point);\n\t},\n\tget_points: function (link, view) {\n\t\tvar pt = this.get_endpoint(link, view);\n\t\tvar xy = gantt.config;\n\n\t\tvar dy = pt.e_y - pt.y;\n\t\tvar dx = pt.e_x - pt.x;\n\n\t\tvar dir = drawer.dirs;\n\n\t\tthis.clear();\n\t\tthis.point({x: pt.x, y: pt.y});\n\n\t\tvar shiftX = 2 * xy.link_arrow_size;//just random size for first line\n\t\tvar lineType = this.get_line_type(link, view.$getConfig());\n\n\t\tvar forward = (pt.e_x > pt.x);\n\t\tif (lineType.from_start && lineType.to_start) {\n\t\t\tthis.point_to(dir.left, shiftX);\n\t\t\tif (forward) {\n\t\t\t\tthis.point_to(dir.down, dy);\n\t\t\t\tthis.point_to(dir.right, dx);\n\t\t\t} else {\n\t\t\t\tthis.point_to(dir.right, dx);\n\t\t\t\tthis.point_to(dir.down, dy);\n\t\t\t}\n\t\t\tthis.point_to(dir.right, shiftX);\n\n\t\t} else if (!lineType.from_start && lineType.to_start) {\n\t\t\tforward = (pt.e_x > (pt.x + 2 * shiftX));\n\t\t\tthis.point_to(dir.right, shiftX);\n\t\t\tif (forward) {\n\t\t\t\tdx -= shiftX;\n\t\t\t\tthis.point_to(dir.down, dy);\n\t\t\t\tthis.point_to(dir.right, dx);\n\t\t\t} else {\n\t\t\t\tdx -= 2 * shiftX;\n\t\t\t\tvar sign = dy > 0 ? 1 : -1;\n\n\t\t\t\tthis.point_to(dir.down, sign * (xy.row_height / 2));\n\t\t\t\tthis.point_to(dir.right, dx);\n\t\t\t\tthis.point_to(dir.down, sign * ( Math.abs(dy) - (xy.row_height / 2)));\n\t\t\t\tthis.point_to(dir.right, shiftX);\n\t\t\t}\n\n\t\t} else if (!lineType.from_start && !lineType.to_start) {\n\t\t\tthis.point_to(dir.right, shiftX);\n\t\t\tif (forward) {\n\t\t\t\tthis.point_to(dir.right, dx);\n\t\t\t\tthis.point_to(dir.down, dy);\n\t\t\t} else {\n\t\t\t\tthis.point_to(dir.down, dy);\n\t\t\t\tthis.point_to(dir.right, dx);\n\t\t\t}\n\t\t\tthis.point_to(dir.left, shiftX);\n\t\t} else if (lineType.from_start && !lineType.to_start) {\n\n\t\t\tforward = (pt.e_x > (pt.x - 2 * shiftX));\n\t\t\tthis.point_to(dir.left, shiftX);\n\n\t\t\tif (!forward) {\n\t\t\t\tdx += shiftX;\n\t\t\t\tthis.point_to(dir.down, dy);\n\t\t\t\tthis.point_to(dir.right, dx);\n\t\t\t} else {\n\t\t\t\tdx += 2 * shiftX;\n\t\t\t\tvar sign = dy > 0 ? 1 : -1;\n\t\t\t\tthis.point_to(dir.down, sign * (xy.row_height / 2));\n\t\t\t\tthis.point_to(dir.right, dx);\n\t\t\t\tthis.point_to(dir.down, sign * ( Math.abs(dy) - (xy.row_height / 2)));\n\t\t\t\tthis.point_to(dir.left, shiftX);\n\t\t\t}\n\n\t\t}\n\n\t\treturn this.path;\n\t},\n\tget_line_type: function(link, config){\n\t\tvar types = config.links;\n\t\tvar from_start = false, to_start = false;\n\t\tif (link.type == types.start_to_start) {\n\t\t\tfrom_start = to_start = true;\n\t\t} else if (link.type == types.finish_to_finish) {\n\t\t\tfrom_start = to_start = false;\n\t\t} else if (link.type == types.finish_to_start) {\n\t\t\tfrom_start = false;\n\t\t\tto_start = true;\n\t\t} else if (link.type == types.start_to_finish) {\n\t\t\tfrom_start = true;\n\t\t\tto_start = false;\n\t\t} else {\n\t\t\tgantt.assert(false, \"Invalid link type\");\n\t\t}\n\n\t\tif(config.rtl){\n\t\t\tfrom_start = !from_start;\n\t\t\tto_start = !to_start;\n\t\t}\n\n\t\treturn {from_start: from_start, to_start: to_start};\n\t},\n\n\tget_endpoint: function (link, view) {\n\t\tvar config = view.$getConfig();\n\t\tvar types = config.links;\n\n\t\tvar lineType = this.get_line_type(link, config);\n\t\tvar from_start = lineType.from_start,\n\t\t\tto_start = lineType.to_start;\n\n\t\tvar source = gantt.getTask(link.source);\n\t\tvar target = gantt.getTask(link.target);\n\n\t\tvar from = getMilestonePosition(source, view),\n\t\t\tto = getMilestonePosition(target, view);\n\n\t\treturn {\n\t\t\tx: from_start ? from.left : (from.left + from.width),\n\t\t\te_x: to_start ? to.left : (to.left + to.width),\n\t\t\ty: from.top,\n\t\t\te_y: to.top\n\t\t};\n\t}\n};\n\nfunction getMilestonePosition(task, view){\n\tvar config = view.$getConfig();\n\tvar pos = view.getItemPosition(task);\n\tif(gantt.getTaskType(task.type) == config.types.milestone){\n\t\tvar milestoneHeight = gantt.getTaskHeight();\n\t\tvar milestoneWidth = Math.sqrt(2*milestoneHeight*milestoneHeight);\n\t\tpos.left -= milestoneWidth / 2;\n\t\tpos.width = milestoneWidth;\n\t}\n\treturn pos;\n}\n\nreturn _render_link_element;\n\n}\n\nmodule.exports = createLinkRender;","function createTaskBgRender(gantt){\n\t//this.getTaskTop\n\tfunction _render_bg_line(item, view) {\n\t\tvar config = view.$getConfig(),\n\t\t\ttemplates = view.$getTemplates();\n\t\tvar cfg = view.getScale();\n\t\tvar count = cfg.count;\n\t\tvar row = document.createElement(\"div\");\n\t\tif (config.show_task_cells) {\n\t\t\tfor (var j = 0; j < count; j++) {\n\t\t\t\tvar width = cfg.width[j],\n\t\t\t\t\tcssclass = \"\";\n\n\t\t\t\tif (width > 0) {//do not render skipped columns\n\t\t\t\t\tvar cell = document.createElement(\"div\");\n\t\t\t\t\tcell.style.width = (width) + \"px\";\n\n\t\t\t\t\tcssclass = \"gantt_task_cell\" + (j == count - 1 ? \" gantt_last_cell\" : \"\");\n\t\t\t\t\tcssTemplate = templates.task_cell_class(item, cfg.trace_x[j]);\n\t\t\t\t\tif (cssTemplate)\n\t\t\t\t\t\tcssclass += \" \" + cssTemplate;\n\t\t\t\t\tcell.className = cssclass;\n\n\t\t\t\t\trow.appendChild(cell);\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\tvar odd = gantt.getGlobalTaskIndex(item.id) % 2 !== 0;\n\t\tvar cssTemplate = templates.task_row_class(item.start_date, item.end_date, item);\n\t\tvar css = \"gantt_task_row\" + (odd ? \" odd\" : \"\") + (cssTemplate ? ' ' + cssTemplate : '');\n\n\t\tvar store = view.$config.rowStore;\n\t\tif(store.getSelectedId() == item.id) {\n\t\t\tcss += \" gantt_selected\";\n\t\t}\n\n\t\t//var row = \"
\" + cells.join(\"\") + \"
\";\n\n\t\trow.className = css;\n\n\t\tif (config.smart_rendering) {\n\t\t\trow.style.position = \"absolute\";\n\t\t\trow.style.top = view.getItemTop(item.id) + \"px\";\n\t\t\trow.style.width = \"100%\";\n\t\t}\n\t\trow.style.height = (config.row_height) + \"px\";\n\n\t\tif(view.$config.item_attribute){\n\t\t\trow.setAttribute(view.$config.item_attribute, item.id);\n\t\t}\n\n\t\treturn row;\n\t}\n\n\treturn _render_bg_line;\n}\n\nmodule.exports = createTaskBgRender;","function createTaskRenderer(gantt){\n\tvar defaultRender = require(\"./task_bar_render\")(gantt);\n\n\treturn function show_children(task, timeline) {\n\t\tif (gantt.isSplitTask(task)) {\n\t\t\tvar sub_height = gantt.config.row_height - 5,\n\t\t\t\tel = document.createElement('div'),\n\t\t\t\tsizes = gantt.getTaskPosition(task);\n\n\t\t\tvar sub_tasks = gantt.getChildren(task.id);\n\n\n\t\t\tfor (var i = 0; i < sub_tasks.length; i++) {\n\t\t\t\tvar child = gantt.getTask(sub_tasks[i]);\n\n\t\t\t\tvar element = defaultRender(child, timeline);\n\t\t\t\tif(!element)\n\t\t\t\t\tcontinue;\n\n\t\t\t\tvar padding = Math.floor((gantt.config.row_height - sizes.height) / 2);\n\n\t\t\t\telement.style.top = (sizes.top + padding) + \"px\";\n\t\t\t\telement.className += \" gantt_split_child\";\n\n\t\t\t\tel.appendChild(element);\n\t\t\t}\n\t\t\treturn el;\n\t\t}\n\t\treturn false;\n\t};\n}\n\nmodule.exports = createTaskRenderer;","module.exports = function (gantt) {\n\n\tvar BaseEditor = require(\"./base\")(gantt),\n\t\tutils = require(\"../../../../../utils/utils\");\n\tvar __extends = require(\"../../../../../utils/extends\");\n\n\tfunction PredecessorEditor() {\n\t\tvar self = BaseEditor.apply(this, arguments) || this;\n\t\treturn self;\n\t}\n\n\t__extends(PredecessorEditor, BaseEditor);\n\n\tfunction parseInputString(value, config) {\n\t\tvar predecessors = (value || \"\").split(config.delimiter || \",\");\n\t\tfor (var i = 0; i < predecessors.length; i++) {\n\t\t\tvar val = predecessors[i].trim();\n\t\t\tif (val) {\n\t\t\t\tpredecessors[i] = val;\n\t\t\t} else {\n\t\t\t\tpredecessors.splice(i, 1);\n\t\t\t\ti--;\n\t\t\t}\n\t\t}\n\t\tpredecessors.sort();\n\t\treturn predecessors;\n\t}\n\n\tfunction formatPredecessors(task, config, gantt) {\n\t\tvar links = task.$target;\n\t\tvar labels = [];\n\t\tfor (var i = 0; i < links.length; i++) {\n\t\t\tvar link = gantt.getLink(links[i]);\n\t\t\tvar pred = gantt.getTask(link.source);\n\t\t\tlabels.push(gantt.getWBSCode(pred));\n\t\t}\n\t\treturn labels.join((config.delimiter || \",\") + \" \");\n\t}\n\n\tfunction getSelectedLinks(taskId, predecessorCodes) {\n\t\tvar links = [];\n\t\tpredecessorCodes.forEach(function (code) {\n\t\t\tvar predecessor = gantt.getTaskByWBSCode(code);\n\t\t\tif (predecessor) {\n\t\t\t\tvar link = {\n\t\t\t\t\tsource: predecessor.id,\n\t\t\t\t\ttarget: taskId,\n\t\t\t\t\ttype: gantt.config.links.finish_to_start,\n\t\t\t\t\tlag: 0\n\t\t\t\t};\n\t\t\t\tif (gantt.isLinkAllowed(link)) {\n\t\t\t\t\tlinks.push(link);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn links;\n\t}\n\n\tfunction getLinksDiff(task, predecessorCodes) {\n\t\tvar selectedLinks = getSelectedLinks(task.id, predecessorCodes);\n\t\tvar existingLinksSearch = {};\n\t\ttask.$target.forEach(function (linkId) {\n\t\t\tvar link = gantt.getLink(linkId);\n\t\t\texistingLinksSearch[link.source + \"_\" + link.target] = link.id;\n\t\t});\n\n\t\tvar linksToAdd = [];\n\t\tselectedLinks.forEach(function (link) {\n\t\t\tvar linkKey = link.source + \"_\" + link.target;\n\t\t\tif (!existingLinksSearch[linkKey]) {\n\t\t\t\tlinksToAdd.push(link);\n\t\t\t} else {\n\t\t\t\tdelete existingLinksSearch[linkKey];\n\t\t\t}\n\t\t});\n\n\t\tvar linksToDelete = [];\n\t\tfor (var i in existingLinksSearch) {\n\t\t\tlinksToDelete.push(existingLinksSearch[i]);\n\t\t}\n\n\t\treturn {\n\t\t\tadd: linksToAdd,\n\t\t\tremove: linksToDelete\n\t\t};\n\t}\n\n\tutils.mixin(PredecessorEditor.prototype, {\n\t\tshow: function (id, column, config, placeholder) {\n\t\t\tvar html = \"
\";\n\t\t\tplaceholder.innerHTML = html;\n\t\t},\n\t\thide: function () {\n\t\t},\n\t\tset_value: function (value, id, column, node) {\n\t\t\tthis.get_input(node).value = formatPredecessors(value, column.editor, gantt);\n\t\t},\n\t\tget_value: function (id, column, node) {\n\t\t\treturn parseInputString((this.get_input(node).value || \"\"), column.editor);\n\t\t},\n\t\tsave: function (id, column, node) {\n\t\t\tvar task = gantt.getTask(id);\n\n\t\t\tvar linksDiff = getLinksDiff(task, this.get_value(id, column, node));\n\n\t\t\tif (linksDiff.add.length || linksDiff.remove.length) {\n\t\t\t\tgantt.batchUpdate(function () {\n\t\t\t\t\tlinksDiff.add.forEach(function (link) {\n\t\t\t\t\t\tgantt.addLink(link);\n\t\t\t\t\t});\n\t\t\t\t\tlinksDiff.remove.forEach(function (linkId) {\n\t\t\t\t\t\tgantt.deleteLink(linkId);\n\t\t\t\t\t});\n\n\t\t\t\t\tif (gantt.autoSchedule)\n\t\t\t\t\t\tgantt.autoSchedule();\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tis_changed: function (value, id, column, node) {\n\t\t\tvar inputPredecessors = this.get_value(id, column, node);\n\t\t\tvar taskPredecessors = parseInputString(formatPredecessors(value, column.editor, gantt), column.editor);\n\n\t\t\treturn inputPredecessors.join() !== taskPredecessors.join();\n\t\t}\n\t}, true);\n\n\treturn PredecessorEditor;\n};","module.exports = function(gantt) {\n\tvar BaseEditor = require(\"./base\")(gantt),\n\t\tutils = require(\"../../../../../utils/utils\");\n\tvar __extends = require(\"../../../../../utils/extends\");\n\n\tvar html5DateFormat = \"%Y-%m-%d\";\n\n\tvar dateToStr = null;\n\tvar strToDate = null;\n\n\tfunction init(){\n\t\tif(!dateToStr){\n\t\t\tdateToStr = gantt.date.date_to_str(html5DateFormat);\n\t\t}\n\t\tif(!strToDate){\n\t\t\tstrToDate = gantt.date.str_to_date(html5DateFormat);\n\t\t}\n\t}\n\n\tfunction DateEditor() {\n\t\tvar self = BaseEditor.apply(this, arguments) || this;\n\n\t\treturn self;\n\t}\n\n\t__extends(DateEditor, BaseEditor);\n\n\tutils.mixin(DateEditor.prototype, {\n\t\tshow: function (id, column, config, placeholder) {\n\n\t\t\tinit();\n\t\t\tvar minValue = dateToStr(config.min || gantt.getState().min_date);\n\t\t\tvar maxValue = dateToStr(config.max || gantt.getState().max_date);\n\n\t\t\tvar html = \"
\";\n\t\t\tplaceholder.innerHTML = html;\n\t\t},\n\t\tset_value: function (value, id, column, node) {\n\t\t\tthis.get_input(node).value = dateToStr(value);\n\t\t},\n\t\tis_valid: function (value, id, column, node) {\n\t\t\tif (!value || isNaN(value.getTime()))\n\t\t\t\treturn false;\n\t\t\treturn true;\n\t\t},\n\t\tget_value: function (id, column, node) {\n\t\t\tvar parsed = null;\n\t\t\ttry {\n\t\t\t\tparsed = strToDate(this.get_input(node).value || \"\");\n\t\t\t} catch (e) {\n\t\t\t}\n\n\t\t\treturn parsed;\n\t\t}\n\t}, true);\n\n\treturn DateEditor;\n};\n","module.exports = function(gantt) {\n\tvar BaseEditor = require(\"./base\")(gantt),\n\t\tutils = require(\"../../../../../utils/utils\");\n\tvar __extends = require(\"../../../../../utils/extends\");\n\n\tfunction SelectEditor() {\n\t\tvar self = BaseEditor.apply(this, arguments) || this;\n\t\treturn self;\n\t}\n\n\t__extends(SelectEditor, BaseEditor);\n\n\tutils.mixin(SelectEditor.prototype, {\n\t\tshow: function (id, column, config, placeholder) {\n\t\t\tvar html = \"
\";\n\t\t\tplaceholder.innerHTML = html;\n\t\t},\n\t\tget_input: function (node) {\n\t\t\treturn node.querySelector(\"select\");\n\t\t}\n\t}, true);\n\n\treturn SelectEditor;\n};","module.exports = function (gantt) {\n\n\tvar BaseEditor = require(\"./base\")(gantt),\n\t\tutils = require(\"../../../../../utils/utils\");\n\tvar __extends = require(\"../../../../../utils/extends\");\n\n\tfunction NumberEditor() {\n\t\tvar self = BaseEditor.apply(this, arguments) || this;\n\t\treturn self;\n\t}\n\n\t__extends(NumberEditor, BaseEditor);\n\n\tutils.mixin(NumberEditor.prototype, {\n\t\tshow: function (id, column, config, placeholder) {\n\t\t\tvar min = config.min || 0,\n\t\t\t\tmax = config.max || 100;\n\n\t\t\tvar html = \"
\";\n\t\t\tplaceholder.innerHTML = html;\n\t\t},\n\t\tget_value: function (id, column, node) {\n\t\t\tvar value = BaseEditor.prototype.get_value(id, column, node);\n\t\t\treturn this.get_input(node).value || \"\";\n\t\t},\n\t\tis_valid: function (value, id, column, node) {\n\t\t\treturn !isNaN(parseInt(value, 10));\n\t\t}\n\t}, true);\n\n\treturn NumberEditor;\n};","module.exports = function(gantt) {\n\n\tvar BaseEditor = require(\"./base\")(gantt),\n\t\tutils = require(\"../../../../../utils/utils\");\n\tvar __extends = require(\"../../../../../utils/extends\");\n\n\tfunction TextEditor() {\n\t\tvar self = BaseEditor.apply(this, arguments) || this;\n\t\treturn self;\n\t}\n\n\t__extends(TextEditor, BaseEditor);\n\n\tutils.mixin(TextEditor.prototype, {\n\t\tshow: function (id, column, config, placeholder) {\n\t\t\tvar html = \"
\";\n\t\t\tplaceholder.innerHTML = html;\n\t\t}\n\t}, true);\n\n\treturn TextEditor;\n};","module.exports = {\n\tinit: function(controller, grid){\n\t\tvar self = controller;\n\t\tvar gantt = grid.$gantt;\n\n\t\tvar onBlurDelay = null;\n\t\tvar keyNav = gantt.ext.keyboardNavigation;\n\t\tkeyNav.attachEvent(\"onBeforeFocus\", function (node) {\n\t\t\tvar activeCell = controller.locateCell(node);\n\t\t\tclearTimeout(onBlurDelay);\n\t\t\tif (activeCell) {\n\t\t\t\tvar columnName = activeCell.columnName;\n\t\t\t\tvar id = activeCell.id;\n\n\t\t\t\tvar editorState = self.getState();\n\t\t\t\tif(self.isVisible()){\n\t\t\t\t\tif(editorState.id == id && editorState.columnName === columnName) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\tkeyNav.attachEvent(\"onFocus\", function (node) {\n\t\t\tvar activeCell = controller.locateCell(node);\n\t\t\tvar state = controller.getState();\n\t\t\tclearTimeout(onBlurDelay);\n\t\t\tif (activeCell && !(activeCell.id == state.id && activeCell.columnName == state.columnName)) {\n\t\t\t\tif(self.isVisible()){\n\t\t\t\t\tself.save();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\tcontroller.attachEvent(\"onHide\", function(){\n\t\t\tclearTimeout(onBlurDelay);\n\t\t});\n\n\t\tkeyNav.attachEvent(\"onBlur\", function () {\n\t\t\tonBlurDelay = setTimeout(function(){\n\t\t\t\tself.save();\n\t\t\t});\n\n\t\t\treturn true;\n\t\t});\n\n\t\tgantt.attachEvent(\"onTaskDblClick\", function(id,e){\n\t\t\t// block lightbox on double click inside editor\n\t\t\tvar state = controller.getState();\n\t\t\tvar cell = controller.locateCell(e.target);\n\t\t\tif(cell && controller.isVisible() && cell.columnName == state.columnName){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\tgantt.attachEvent(\"onTaskClick\", function (id, e) {\n\t\t\tif(gantt._is_icon_open_click(e))\n\t\t\t\treturn true;\n\n\t\t\tvar state = controller.getState();\n\t\t\tvar cell = controller.locateCell(e.target);\n\n\t\t\tif (cell && controller.getEditorConfig(cell.columnName)) {\n\t\t\t\tif(controller.isVisible() && state.id == cell.id && state.columnName == cell.columnName){\n\t\t\t\t}else{\n\t\t\t\t\tcontroller.startEdit(cell.id, cell.columnName);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\t\tgantt.attachEvent(\"onEmptyClick\", function () {\n\t\t\tself.save();\n\t\t\treturn true;\n\t\t});\n\n\t\tkeyNav.attachEvent(\"onKeyDown\", function(command, e){\n\t\t\tvar activeCell = controller.locateCell(e.target);\n\t\t\tvar hasEditor = activeCell ? controller.getEditorConfig(activeCell.columnName) : false;\n\n\t\t\tvar state = controller.getState();\n\t\t\tvar keyboard = gantt.constants.KEY_CODES;\n\t\t\tvar keyCode = e.keyCode;\n\t\t\tvar preventKeyNav = false;\n\n\t\t\tswitch (keyCode){\n\t\t\t\tcase keyboard.ENTER:\n\t\t\t\t\tif(controller.isVisible()){\n\t\t\t\t\t\tcontroller.save();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t}else if(hasEditor && !(e.ctrlKey || e.metaKey || e.shiftKey)){\n\t\t\t\t\t\tself.startEdit(activeCell.id, activeCell.columnName);\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyboard.ESC:\n\t\t\t\t\tif(controller.isVisible()){\n\t\t\t\t\t\tcontroller.hide();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyboard.UP:\n\t\t\t\tcase keyboard.DOWN:\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyboard.LEFT:\n\t\t\t\tcase keyboard.RIGHT:\n\t\t\t\t\tif(state.editorType === \"date\"){\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyboard.SPACE:\n\t\t\t\t\tif(controller.isVisible()){\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(hasEditor && !controller.isVisible()){\n\t\t\t\t\t\tself.startEdit(activeCell.id, activeCell.columnName);\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyboard.DELETE:\n\t\t\t\t\tif(hasEditor && !controller.isVisible()){\n\t\t\t\t\t\tself.startEdit(activeCell.id, activeCell.columnName);\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyboard.TAB:\n\t\t\t\t\tif(controller.isVisible()){\n\n\t\t\t\t\t\tif(e.shiftKey){\n\t\t\t\t\t\t\tcontroller.editPrevCell(true);\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tcontroller.editNextCell(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar newState = controller.getState();\n\t\t\t\t\t\tif(newState.id){\n\t\t\t\t\t\t\tkeyNav.focus({type:\"taskCell\", id: newState.id, column:newState.columnName});\n\t\t\t\t\t\t}\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tif(controller.isVisible())\n\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\telse{\n\n\t\t\t\t\t\t// start editing on character key\n\t\t\t\t\t\tif((keyCode >= 48 && keyCode <= 57) || // [0-9]\n\t\t\t\t\t\t\t(keyCode > 95 && keyCode < 112) || // numpad\n\t\t\t\t\t\t\t(keyCode >= 64 && keyCode <= 91) || // [a-z]\n\t\t\t\t\t\t\t(keyCode > 185 && keyCode < 193) || //;=-,etc\n\t\t\t\t\t\t\t(keyCode > 218 && keyCode < 223)\n\t\t\t\t\t\t){\n\t\t\t\t\t\t\tif(hasEditor && !controller.isVisible()){\n\t\t\t\t\t\t\t\tself.show(activeCell.id, activeCell.columnName);\n\t\t\t\t\t\t\t\tself.setValue();\n\t\t\t\t\t\t\t\tpreventKeyNav = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (preventKeyNav){\n\t\t\t\treturn false;\n\t\t\t} else{\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t});\n\t},\n\tonShow: function(controller, placeholder, grid){},\n\tonHide: function(controller, placeholder, grid){\n\t\tvar gantt = grid.$gantt;\n\t\tgantt.focus();\n\n\t},\n\tdestroy: function(){}\n};\n\n","module.exports = {\n\tinit: function(controller, grid){\n\t\tvar gantt = grid.$gantt;\n\n\t\tgantt.attachEvent(\"onTaskClick\", function (id, e) {\n\t\t\tif(gantt._is_icon_open_click(e))\n\t\t\t\treturn true;\n\t\t\tvar state = controller.getState();\n\t\t\tvar cell = controller.locateCell(e.target);\n\n\t\t\tif (cell && controller.getEditorConfig(cell.columnName)) {\n\t\t\t\tif(controller.isVisible() && state.id == cell.id && state.columnName == cell.columnName){\n\t\t\t\t}else{\n\t\t\t\t\tcontroller.startEdit(cell.id, cell.columnName);\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\t\tgantt.attachEvent(\"onEmptyClick\", function () {\n\t\t\tcontroller.hide();\n\t\t\treturn true;\n\t\t});\n\n\t\tgantt.attachEvent(\"onTaskDblClick\", function(id,e){\n\t\t\tvar state = controller.getState();\n\t\t\tvar cell = controller.locateCell(e.target);\n\t\t\tif(cell && controller.isVisible() && cell.columnName == state.columnName){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\t},\n\n\tonShow: function(controller, placeholder, grid){\n\t\tif(grid.$getConfig().keyboard_navigation){\n\t\t\t// keyboard navigation extension will handle arrows if enabled\n\t\t\treturn;\n\t\t}\n\t\tvar gantt = grid.$gantt;\n\t\tplaceholder.onkeydown = function (e) {\n\t\t\te = e || window.event;\n\n\t\t\tvar keyboard = gantt.constants.KEY_CODES;\n\t\t\tif(e.defaultPrevented || (e.shiftKey && e.keyCode != keyboard.TAB)){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar shouldPrevent = true;\n\t\t\tswitch (e.keyCode) {\n\t\t\t\tcase gantt.keys.edit_save:\n\t\t\t\t\tcontroller.save();\n\t\t\t\t\tbreak;\n\t\t\t\tcase gantt.keys.edit_cancel:\n\t\t\t\t\tcontroller.hide();\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyboard.TAB:\n\t\t\t\t\tif(e.shiftKey){\n\t\t\t\t\t\tcontroller.editPrevCell(true);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tcontroller.editNextCell(true);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tshouldPrevent = false;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(shouldPrevent){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t};\n\t},\n\tonHide: function(){\n\n\t},\n\n\tdestroy: function(){\n\n\t}\n};\n\n","var defaultMapping = require(\"./keyboard_mappings/default\");\nvar keyNavMappings = require(\"./keyboard_mappings/keyboard_navigation\");\n\nmodule.exports = function(){\n\tvar mapping = null;\n\n\treturn {\n\t\tsetMapping: function(map){\n\t\t\tmapping = map;\n\t\t},\n\t\tgetMapping: function(){\n\n\t\t\tif(mapping){\n\t\t\t\treturn mapping;\n\t\t\t}else if(gantt.config.keyboard_navigation_cells){\n\t\t\t\treturn keyNavMappings;\n\t\t\t}else{\n\t\t\t\treturn defaultMapping;\n\t\t\t}\n\t\t}\n\t};\n};\n","function createResizer(gantt, grid){\n\treturn {\n\t\tinit: function(){},\n\t\tdoOnRender: function(){}\n\t};\n}\n\nmodule.exports = createResizer;","var createStaticBgHelper = function(){\n\treturn {\n\t\trender: function(){}\n\t};\n};\n\nmodule.exports = {\n\tcreate: function(){\n\t\treturn createStaticBgHelper();\n\t}\n};\n\n","var __extends = require(\"../../../utils/extends\"),\n\tdomHelpers = require(\"../../../utils/dom_helpers\"),\n\tutils = require(\"../../../utils/utils\"),\n\tenv = require(\"../../../utils/env\"),\n\teventable = require(\"../../../utils/eventable\"),\n\tCell = require(\"./cell\");\n\nvar ScrollbarCell = (function (_super) {\n\t\"use strict\";\n\n\t__extends(ScrollbarCell, _super);\n\tfunction ScrollbarCell(parent, config, factory, gantt) {\n\n\t\tvar _this = _super.apply(this, arguments) || this;\n\t\tthis.$config = utils.mixin(config, {scroll: \"x\"});\n\t\t_this._scrollHorizontalHandler = utils.bind(_this._scrollHorizontalHandler, _this);\n\t\t_this._scrollVerticalHandler = utils.bind(_this._scrollVerticalHandler, _this);\n\t\t_this._outerScrollVerticalHandler = utils.bind(_this._outerScrollVerticalHandler, _this);\n\t\t_this._outerScrollHorizontalHandler = utils.bind(_this._outerScrollHorizontalHandler, _this);\n\t\t_this._mouseWheelHandler = utils.bind(_this._mouseWheelHandler, _this);\n\n\t\tthis.$config.hidden = true;\n\t\tvar size = gantt.config.scroll_size;\n\n\t\tif(gantt.env.isIE){\n\t\t\t// full element height/width must be bigger than just a browser scrollbar,\n\t\t\t// otherwise the scrollbar element won't be scrolled on click\n\t\t\tsize += 1;\n\t\t}\n\n\t\tif(this._isHorizontal()){\n\t\t\t_this.$config.height = size;\n\t\t\t_this.$parent.$config.height = size;\n\t\t}else{\n\t\t\t_this.$config.width = size;\n\t\t\t_this.$parent.$config.width = size;\n\t\t}\n\n\t\tthis.$config.scrollPosition = 0;\n\n\t\t_this.$name = \"scroller\";\n\t\treturn _this;\n\t}\n\n\tScrollbarCell.prototype.init = function(container){\n\t\tcontainer.innerHTML = this.$toHTML();\n\t\tthis.$view = container.firstChild;\n\n\t\tif(!this.$view){\n\t\t\tthis.init();\n\t\t}\n\t\tif(this._isVertical()){\n\t\t\tthis._initVertical();\n\t\t}else{\n\t\t\tthis._initHorizontal();\n\t\t}\n\t\tthis._initMouseWheel();\n\t\tthis._initLinkedViews();\n\t};\n\n\tScrollbarCell.prototype.$toHTML = function () {\n\t\tvar className = this._isHorizontal() ? \"gantt_hor_scroll\" : \"gantt_ver_scroll\";\n\t\treturn \"
\";\n\t};\n\n\tScrollbarCell.prototype._getRootParent = function(){\n\t\tvar parent = this.$parent;\n\t\twhile(parent && parent.$parent){\n\t\t\tparent = parent.$parent;\n\t\t}\n\t\tif(parent){\n\t\t\treturn parent;\n\t\t}\n\t};\n\n\n\tfunction eachCell(root, res){\n\t\tres.push(root);\n\t\tif(root.$cells){\n\t\t\tfor(var i = 0; i < root.$cells.length; i++){\n\t\t\t\teachCell(root.$cells[i], res);\n\t\t\t}\n\t\t}\n\t}\n\tScrollbarCell.prototype._eachView = function(){\n\t\tvar res = [];\n\t\teachCell(this._getRootParent(), res);\n\t\treturn res;\n\t};\n\n\tScrollbarCell.prototype._getLinkedViews = function(){\n\t\tvar views = this._eachView();\n\t\tvar res = [];\n\t\tfor(var i = 0; i < views.length; i++){\n\t\t\tif(views[i].$config && ((this._isVertical() && views[i].$config.scrollY == this.$id) || (this._isHorizontal() && views[i].$config.scrollX == this.$id)) ){\n\t\t\t\tres.push(views[i]);\n\t\t\t}\n\t\t}\n\t\treturn res;\n\t};\n\n\n\tScrollbarCell.prototype._initHorizontal = function(){\n\t\tthis.$scroll_hor = this.$view;\n\t\tthis.$domEvents.attach(this.$view, \"scroll\", this._scrollHorizontalHandler);\n\n\t};\n\n\tScrollbarCell.prototype._initLinkedViews = function(){\n\t\tvar views = this._getLinkedViews();\n\t\tvar css = this._isVertical() ?\"gantt_layout_outer_scroll gantt_layout_outer_scroll_vertical\" : \"gantt_layout_outer_scroll gantt_layout_outer_scroll_horizontal\";\n\t\tfor(var i = 0; i < views.length; i++){\n\t\t\t//views[i].$config.css = [views[i].$config.css || \"\", css].join(\" \");\n\t\t\tdomHelpers.addClassName(views[i].$view || views[i].getNode(), css);\n\t\t}\n\t};\n\n\tScrollbarCell.prototype._initVertical = function(){\n\t\tthis.$scroll_ver = this.$view;\n\t\tthis.$domEvents.attach(this.$view, \"scroll\", this._scrollVerticalHandler);\n\t};\n\n\tScrollbarCell.prototype._updateLinkedViews = function(){\n\t\tvar root = this._getRootParent();\n\t};\n\n\tScrollbarCell.prototype._initMouseWheel = function(){\n\t\tvar ff = env.isFF;\n\t\tif (ff)\n\t\t\tthis.$domEvents.attach(this._getRootParent().$view, \"wheel\", this._mouseWheelHandler);\n\t\telse\n\t\t\tthis.$domEvents.attach(this._getRootParent().$view, \"mousewheel\", this._mouseWheelHandler);\n\t};\n\n\n\n\n\tScrollbarCell.prototype.scrollHorizontally = function(left){\n\t\tif(this._scrolling) return;\n\t\tthis._scrolling = true;\n\n\t\tthis.$scroll_hor.scrollLeft = left;\n\t\tthis.$config.codeScrollLeft = left;\n\t\tleft = this.$scroll_hor.scrollLeft;\n\n\t\tvar views = this._getLinkedViews();\n\t\tfor(var i = 0; i < views.length; i++){\n\t\t\tif(views[i].scrollTo){\n\t\t\t\tviews[i].scrollTo(left, undefined);\n\t\t\t}\n\t\t}\n\t\tvar oldSize = this.$config.scrollPosition;\n\t\tthis.$config.scrollPosition = left;\n\t\tthis.callEvent(\"onScroll\", [oldSize, left, this.$config.scroll]);\n\t\tthis._scrolling = false;\n\t};\n\tScrollbarCell.prototype.scrollVertically = function(top){\n\t\tif(this._scrolling) return;\n\t\tthis._scrolling = true;\n\n\t\tthis.$scroll_ver.scrollTop = top;\n\t\ttop = this.$scroll_ver.scrollTop;\n\n\t\tvar views = this._getLinkedViews();\n\n\t\tfor(var i = 0; i < views.length; i++){\n\t\t\tif(views[i].scrollTo){\n\t\t\t\tviews[i].scrollTo(undefined, top);\n\t\t\t}\n\t\t}\n\t\tvar oldSize = this.$config.scrollPosition;\n\t\tthis.$config.scrollPosition = top;\n\t\tthis.callEvent(\"onScroll\", [oldSize, top, this.$config.scroll]);\n\t\tthis._scrolling = false;\n\t};\n\n\tScrollbarCell.prototype._isVertical = function(){\n\t\treturn this.$config.scroll == \"y\";\n\t};\n\tScrollbarCell.prototype._isHorizontal = function(){\n\t\treturn this.$config.scroll == \"x\";\n\t};\n\tScrollbarCell.prototype._scrollHorizontalHandler = function (e) {\n\t\tif(this._isVertical() || this._scrolling){\n\t\t\treturn;\n\t\t}\n\n\t\t//in safari we can catch previous onscroll after setting new value from mouse-wheel event\n\t\t//set delay to prevent value drifiting\n\t\tif ((new Date()) - ( this._wheel_time || 0 ) < 100) return true;\n\t\tif (this.$gantt._touch_scroll_active) return;\n\t\tvar left = this.$scroll_hor.scrollLeft;\n\n\t\tthis.scrollHorizontally(left);\n\n\t\tthis._oldLeft = this.$scroll_hor.scrollLeft;\n\t};\n\tScrollbarCell.prototype._outerScrollHorizontalHandler = function(e){\n\t\tif(this._isVertical()){\n\t\t\treturn;\n\t\t}\n\t};\n\n\tScrollbarCell.prototype.show = function(){\n\t\tthis.$parent.show();\n\t};\n\tScrollbarCell.prototype.hide = function(){\n\t\tthis.$parent.hide();\n\t};\n\n\tScrollbarCell.prototype._getScrollSize = function(){\n\t\tvar scrollSize = 0;\n\t\tvar outerSize = 0;\n\t\tvar isHorizontal = this._isHorizontal();\n\n\t\tvar linked = this._getLinkedViews();\n\t\tvar view;\n\t\tvar scrollProperty = isHorizontal ? \"scrollWidth\" : \"scrollHeight\",\n\t\t\tinnerSizeProperty = isHorizontal ? \"contentX\" : \"contentY\";\n\t\tvar outerProperty = isHorizontal ? \"x\" : \"y\";\n\t\tvar offset = this._getScrollOffset();\n\n\t\tfor(var i = 0; i < linked.length; i++){\n\t\t\tview = linked[i];\n\t\t\tif(!(view && view.$content && view.$content.getSize && !view.$config.hidden)) continue;\n\n\t\t\tvar sizes = view.$content.getSize();\n\t\t\tvar cellScrollSize;\n\t\t\tif(sizes.hasOwnProperty(scrollProperty)){\n\t\t\t\tcellScrollSize = sizes[scrollProperty];\n\t\t\t}else{\n\t\t\t\tcellScrollSize = sizes[innerSizeProperty];\n\t\t\t}\n\n\t\t\tif(offset){\n\t\t\t\t// precalculated vertical/horizontal offsets of scrollbar to emulate 4.x look\n\t\t\t\tif(sizes[innerSizeProperty] > sizes[outerProperty] && sizes[innerSizeProperty] > scrollSize && (cellScrollSize > (sizes[outerProperty] - offset + 2))){\n\t\t\t\t\tscrollSize = cellScrollSize + (isHorizontal ? 0 : 2);\n\t\t\t\t\touterSize = sizes[outerProperty];\n\t\t\t\t}\n\t\t\t}else{\n\t\t\t\tvar nonScrollableSize = Math.max(sizes[innerSizeProperty] - cellScrollSize, 0);\n\t\t\t\tvar scrollableViewPortSize = Math.max(sizes[outerProperty] - nonScrollableSize, 0);\n\t\t\t\tcellScrollSize = cellScrollSize + nonScrollableSize;\n\n\t\t\t\tif(cellScrollSize > scrollableViewPortSize && (cellScrollSize > scrollSize) ){\n\t\t\t\t\t//|| (cellScrollSize === scrollSize && sizes[outerProperty] < outerSize) // same scroll width but smaller scrollable view port\n\n\t\t\t\t\tscrollSize = cellScrollSize;\n\t\t\t\t\touterSize = sizes[outerProperty];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\touterScroll: outerSize,\n\t\t\tinnerScroll: scrollSize\n\t\t};\n\t};\n\n\tScrollbarCell.prototype.scroll = function(position){\n\t\tif(this._isHorizontal()){\n\t\t\tthis.scrollHorizontally(position);\n\t\t}else{\n\t\t\tthis.scrollVertically(position);\n\t\t}\n\t};\n\n\tScrollbarCell.prototype.getScrollState = function(){\n\t\treturn {\n\t\t\tvisible: this.isVisible(),\n\t\t\tdirection: this.$config.scroll,\n\t\t\tsize: this.$config.outerSize,\n\t\t\tscrollSize: this.$config.scrollSize || 0,\n\t\t\tposition: this.$config.scrollPosition || 0\n\t\t};\n\t};\n\n\tScrollbarCell.prototype.setSize = function(width, height){\n\t\t_super.prototype.setSize.apply(this, arguments);\n\n\t\tvar scrollSizes = this._getScrollSize();\n\n\t\tvar ownSize = (this._isVertical() ? height : width) - this._getScrollOffset() + (this._isHorizontal() ? 1 : 0);\n\n\t\tif(scrollSizes.innerScroll && ownSize > scrollSizes.outerScroll){\n\t\t\tscrollSizes.innerScroll += (ownSize - scrollSizes.outerScroll);\n\t\t}\n\t\tthis.$config.scrollSize = scrollSizes.innerScroll;\n\n\t\tthis.$config.width = width;\n\t\tthis.$config.height = height;\n\t\tthis._setScrollSize(scrollSizes.innerScroll);\n\t};\n\n\tScrollbarCell.prototype.isVisible = function(){\n\t\treturn !!(this.$parent && this.$parent.$view.parentNode);\n\t};\n\n\tScrollbarCell.prototype.shouldShow = function(){\n\t\tvar scrollSizes = this._getScrollSize();\n\t\tif(!scrollSizes.innerScroll && (this.$parent && this.$parent.$view.parentNode)){\n\t\t\treturn false;\n\t\t}else if(scrollSizes.innerScroll && !(this.$parent && this.$parent.$view.parentNode)){\n\t\t\treturn true;\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tScrollbarCell.prototype.shouldHide = function(){\n\t\tvar scrollSizes = this._getScrollSize();\n\t\tif(!scrollSizes.innerScroll && (this.$parent && this.$parent.$view.parentNode)){\n\t\t\treturn true;\n\t\t}else{\n\t\t\treturn false;\n\t\t}\n\t};\n\n\n\tScrollbarCell.prototype.toggleVisibility = function(){\n\t\tif(this.shouldHide()){\n\t\t\tthis.hide();\n\t\t}else if(this.shouldShow()){\n\t\t\tthis.show();\n\t\t}\n\t};\n\t\n\tScrollbarCell.prototype._getScaleOffset = function(view){\n\t\tvar offset = 0;\n\t\tif(view && (view.$config.view == \"timeline\" || view.$config.view == \"grid\")){\n\t\t\toffset = view.$content.$getConfig().scale_height;\n\t\t}\n\t\treturn offset;\n\t};\n\n\tScrollbarCell.prototype._getScrollOffset = function(){\n\t\tvar offset = 0;\n\t\tif(this._isVertical()){\n\t\t\tvar parentLayout = this.$parent.$parent;\n\t\t\toffset = Math.max(\n\t\t\t\tthis._getScaleOffset(parentLayout.getPrevSibling(this.$parent.$id)),\n\t\t\t\tthis._getScaleOffset(parentLayout.getNextSibling(this.$parent.$id))\n\t\t\t\t);\n\t\t}else{\n\t\t\tvar linked = this._getLinkedViews();\n\n\t\t\tfor (var i = 0; i < linked.length; i++) {\n\t\t\t\tvar view = linked[i],\n\t\t\t\t\tvparent = view.$parent;\n\t\t\t\tvar cells = vparent.$cells;\n\n\t\t\t\tvar last = cells[cells.length - 1];\n\n\t\t\t\tif (last && last.$config.view == \"scrollbar\" && last.$config.hidden === false) {\n\t\t\t\t\toffset = last.$config.width;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\treturn offset || 0;\n\t};\n\n\tScrollbarCell.prototype._setScrollSize = function(size){\n\t\tvar property = this._isHorizontal() ? \"width\" : \"height\";\n\t\tvar scrollbar = this._isHorizontal() ? this.$scroll_hor : this.$scroll_ver;\n\n\t\tvar offset = this._getScrollOffset();\n\n\t\tvar node = scrollbar.firstChild;\n\n\t\tif(offset){\n\t\t\tif(this._isVertical()){\n\n\t\t\t\tthis.$config.outerSize = (this.$config.height - offset + 3);\n\t\t\t\tscrollbar.style.height = this.$config.outerSize + \"px\";\n\t\t\t\tscrollbar.style.top = (offset-1) + \"px\";\n\t\t\t\tdomHelpers.addClassName(scrollbar, this.$parent._borders.top);\n\t\t\t\tdomHelpers.addClassName(scrollbar.parentNode, \"gantt_task_vscroll\");\n\t\t\t}else{\n\t\t\t\tthis.$config.outerSize = (this.$config.width - offset + 1);\n\t\t\t\tscrollbar.style.width = this.$config.outerSize + \"px\";\n\t\t\t\t//domHelpers.addClassName(scrollbar, this.$parent._borders.right);\n\t\t\t}\n\t\t}else{\n\t\t\tscrollbar.style.top = \"auto\";\n\t\t\tdomHelpers.removeClassName(scrollbar, this.$parent._borders.top);\n\t\t\tdomHelpers.removeClassName(scrollbar.parentNode, \"gantt_task_vscroll\");\n\t\t\tthis.$config.outerSize = this.$config.height;\n\t\t}\n\n\t\tnode.style[property] = size + \"px\";\n\t};\n\n\tScrollbarCell.prototype._scrollVerticalHandler = function (e) {\n\t\tif(this._scrollHorizontalHandler() || this._scrolling){\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.$gantt._touch_scroll_active) return;\n\t\tvar top = this.$scroll_ver.scrollTop;\n\t\tvar prev = this._oldTop;\n\t\tif(top == prev) return;\n\n\t\tthis.scrollVertically(top);\n\n\t\tthis._oldTop = this.$scroll_ver.scrollTop;\n\n\t};\n\tScrollbarCell.prototype._outerScrollVerticalHandler = function(e){\n\t\tif(this._scrollHorizontalHandler()){\n\t\t\treturn;\n\t\t}\n\t};\n\n\tScrollbarCell.prototype._checkWheelTarget = function(targetNode){\n\t\tvar connectedViews = this._getLinkedViews().concat(this);\n\n\t\tfor(var i = 0; i < connectedViews.length; i++){\n\t\t\tvar node = connectedViews[i].$view;\n\t\t\tif(domHelpers.isChildOf(targetNode, node)){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tScrollbarCell.prototype._mouseWheelHandler = function(e){\n\t\tvar target = e.target || e.srcElement;\n\n\t\tif(!this._checkWheelTarget(target))\n\t\t\treturn;\n\n\t\tthis._wheel_time = new Date();\n\n\t\tvar res = {};\n\t\tvar ff = env.isFF;\n\t\tvar wx = ff ? (e.deltaX*-20) : e.wheelDeltaX*2;\n\t\tvar wy = ff ? (e.deltaY*-40) : e.wheelDelta;\n\n\t\tif(e.shiftKey && !(e.deltaX || e.wheelDeltaX)){\n\t\t\t// shift+mousewheel for horizontal scroll\n\t\t\twx = wy*2;\n\t\t\twy = 0;\n\t\t}\n\n\t\tif (wx && Math.abs(wx) > Math.abs(wy)){\n\t\t\tif(this._isVertical()){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(res.x) return true;//no horisontal scroll, must not block scrolling\n\t\t\tif(!this.$scroll_hor || !this.$scroll_hor.offsetWidth) return true;\n\n\t\t\tvar dir = wx/-40;\n\t\t\tvar oldLeft = this._oldLeft;\n\t\t\tvar left = oldLeft+dir*30;\n\t\t\tthis.scrollHorizontally(left);\n\t\t\tthis.$scroll_hor.scrollLeft = left;\n\t\t\t// not block scroll if position hasn't changed\n\t\t\tif(oldLeft == this.$scroll_hor.scrollLeft){\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tthis._oldLeft = this.$scroll_hor.scrollLeft;\n\t\t} else {\n\t\t\tif(this._isHorizontal()){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif(res.y) return true;//no vertical scroll, must not block scrolling\n\t\t\tif(!this.$scroll_ver || !this.$scroll_ver.offsetHeight) return true;\n\n\t\t\tvar dir = wy/-40;\n\t\t\tif (typeof wy == \"undefined\")\n\t\t\t\tdir = e.detail;\n\n\t\t\tvar oldTop = this._oldTop;\n\t\t\tvar top = this.$scroll_ver.scrollTop+dir*30;\n\n\t\t\t//if(!this.$gantt.config.prevent_default_scroll &&\n\t\t\t//\t(this.$gantt._cached_scroll_pos && ((this.$gantt._cached_scroll_pos.y == top) || (this.$gantt._cached_scroll_pos.y <= 0 && top <= 0)))) return true;\n\n\n\t\t\tthis.scrollVertically(top);\n\t\t\tthis.$scroll_ver.scrollTop = top;\n\n\t\t\t// not block scroll if position hasn't changed\n\t\t\tif(oldTop == this.$scroll_ver.scrollTop){\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tthis._oldTop = this.$scroll_ver.scrollTop;\n\t\t}\n\n\t\tif (e.preventDefault)\n\t\t\te.preventDefault();\n\t\te.cancelBubble=true;\n\t\treturn false;\n\t};\n\n\treturn ScrollbarCell;\n})(Cell);\n\nmodule.exports = ScrollbarCell;","module.exports = null;","var __extends = require(\"../../../utils/extends\"),\n\tutils = require(\"../../../utils/utils\"),\n\tCell = require(\"./cell\");\n\nvar ViewCell = (function (_super) {\n\t\"use strict\";\n\n\t__extends(ViewCell, _super);\n\tfunction ViewCell(parent, config, factory) {\n\n\t\tvar _this = _super.apply(this, arguments) || this;\n\n\t\tif(config.view){\n\t\t\tif(config.id){\n\t\t\t\t// pass id to the nested view\n\t\t\t\tthis.$id = utils.uid();\n\t\t\t}\n\t\t\tvar childConfig = utils.copy(config);\n\t\t\tdelete childConfig.config;\n\t\t\tdelete childConfig.templates;\n\n\t\t\tthis.$content = this.$factory.createView(config.view, this, childConfig, this);\n\t\t\tif(!this.$content)\n\t\t\t\treturn false;\n\t\t}\n\n\t\t_this.$name = \"viewCell\";\n\t\treturn _this;\n\t}\n\n\tViewCell.prototype.destructor = function(){\n\t\tthis.clear();\n\t\t_super.prototype.destructor.call(this);\n\t};\n\n\tViewCell.prototype.clear = function(){\n\n\t\tthis.$initialized = false;\n\n\t\t// call destructor\n\t\tif (this.$content){\n\t\t\tvar method = this.$content.unload || this.$content.destructor;\n\t\t\tif (method){\n\t\t\t\tmethod.call(this.$content);\n\t\t\t}\n\t\t}\n\n\t\t_super.prototype.clear.call(this);\n\n\t};\n\n\tViewCell.prototype.scrollTo = function(left, top){\n\n\t\tif(this.$content && this.$content.scrollTo){\n\t\t\tthis.$content.scrollTo(left, top);\n\t\t}else{\n\t\t\t_super.prototype.scrollTo.call(this, left, top);\n\t\t}\n\t};\n\n\tViewCell.prototype._setContentSize = function(x, y){\n\t\tvar borders = this._getBorderSizes();\n\t\tvar outerX = x + borders.horizontal;\n\t\tvar outerY = y + borders.vertical;\n\t\tthis.$config.width = outerX;\n\t\tthis.$config.height = outerY;\n\t};\n\n\tViewCell.prototype.setSize = function(x, y){\n\t\t_super.prototype.setSize.call(this, x, y);\n\n\t\tif(!this.$preResize && this.$content) {\n\t\t\tif (!this.$initialized) {\n\t\t\t\tthis.$initialized = true;\n\t\t\t\tvar header = this.$view.childNodes[0];\n\t\t\t\tvar content = this.$view.childNodes[1];\n\t\t\t\tif(!content) content = header;\n\n\t\t\t\t/*if(this.$content.$config){\n\t\t\t\t\tthis.$content.$config.width = this.$lastSize.contentX;\n\t\t\t\t\tthis.$content.$config.height = this.$lastSize.contentY;\n\t\t\t\t}*/\n\t\t\t\tthis.$content.init(content);\n\t\t\t}\n\t\t}\n\t};\n\n\tViewCell.prototype.setContentSize = function(){\n\t\tif(!this.$preResize && this.$content) {\n\t\t\tif (this.$initialized) {\n\t\t\t\tthis.$content.setSize(this.$lastSize.contentX, this.$lastSize.contentY);\n\t\t\t}\n\t\t}\n\t};\n\n\n\tViewCell.prototype.getContentSize = function(){\n\t\tvar size = _super.prototype.getContentSize.call(this);\n\n\t\tif(this.$content && this.$initialized){\n\t\t\tvar childSize = this.$content.getSize();\n\t\t\tsize.width = childSize.contentX === undefined ? childSize.width : childSize.contentX;\n\t\t\tsize.height = childSize.contentY === undefined ? childSize.height : childSize.contentY;\n\t\t}\n\n\t\tvar borders = this._getBorderSizes();\n\t\tsize.width += borders.horizontal;\n\t\tsize.height += borders.vertical;\n\n\t\treturn size;\n\t};\n\n\treturn ViewCell;\n}(Cell));\n\nmodule.exports = ViewCell;","var __extends = require(\"../../../utils/extends\"),\n\tLayout = require(\"./layout\"),\n\tCell = require(\"./cell\");\n\nvar ViewLayout = (function (_super) {\n\t\"use strict\";\n\n\t__extends(ViewLayout, _super);\n\tfunction ViewLayout(parent, config, factory) {\n\t\tvar _this = _super.apply(this, arguments) || this;\n\t\tfor (var i = 0; i < _this.$cells.length; i++) {\n\t\t\t_this.$cells[i].$config.hidden = (i !== 0);\n\t\t}\n\t\t_this.$cell = _this.$cells[0];\n\t\t_this.$name = \"viewLayout\";\n\n\t\treturn _this;\n\t}\n\tViewLayout.prototype.cell = function (id) {\n\t\tvar cell = _super.prototype.cell.call(this, id);\n\t\tif (!cell.$view) {\n\t\t\tthis.$fill(null, this);\n\t\t}\n\t\treturn cell;\n\t};\n\tViewLayout.prototype.moveView = function (view) {\n\t\tvar body = this.$view;\n\t\tif (this.$cell) {\n\t\t\tthis.$cell.$config.hidden = true;\n\t\t\tbody.removeChild(this.$cell.$view);\n\t\t}\n\t\tthis.$cell = view;\n\t\tbody.appendChild(view.$view);\n\t};\n\tViewLayout.prototype.setSize = function (x, y) {\n\t\tCell.prototype.setSize.call(this, x, y);\n\t};\n\n\tViewLayout.prototype.setContentSize = function(){\n\t\tvar size = this.$lastSize;\n\t\tthis.$cell.setSize(size.contentX, size.contentY);\n\t};\n\n\tViewLayout.prototype.getSize = function () {\n\t\tvar sizes = _super.prototype.getSize.call(this);\n\t\tif (this.$cell) {\n\t\t\tvar cellSize = this.$cell.getSize();\n\t\t\tif (this.$config.byMaxSize) {\n\t\t\t\tfor (var i = 0; i < this.$cells.length; i++) {\n\t\t\t\t\tvar otherCell = this.$cells[i].getSize();\n\t\t\t\t\tfor (var cell in cellSize) {\n\t\t\t\t\t\tcellSize[cell] = Math.max(cellSize[cell], otherCell[cell]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (var size in sizes) {\n\t\t\t\tsizes[size] = sizes[size] || cellSize[size];\n\t\t\t}\n\t\t\tsizes.gravity = Math.max(sizes.gravity, cellSize.gravity);\n\t\t}\n\t\treturn sizes;\n\t};\n\treturn ViewLayout;\n}(Layout));\n\nmodule.exports = ViewLayout;","var rendererFactory = function(gantt){\n\tvar services = gantt.$services;\n\n\t//hash of dom elements is needed to redraw single bar/link\n\tvar task_area_pulls = {},\n\t\ttask_area_renderers = {};\n\n\tfunction getRenderer(id, layer, node) {\n\n\t\tif (task_area_renderers[id])\n\t\t\treturn task_area_renderers[id];\n\n\t\tif (!layer.renderer)\n\t\t\tgantt.assert(false, \"Invalid renderer call\");\n\n\t\tvar renderOne = function(item){\n\t\t\treturn layer.renderer.call(this, item, layer.host);\n\t\t} ;\n\n\t\tvar filter = layer.filter;\n\n\t\tif (node)\n\t\t\tnode.setAttribute(services.config().layer_attribute, true);\n\n\t\ttask_area_renderers[id] = {\n\t\t\trender_item: function (item, container) {\n\t\t\t\tcontainer = container || node;\n\n\t\t\t\tif (filter) {\n\t\t\t\t\tif (!filter(item)) {\n\t\t\t\t\t\tthis.remove_item(item.id);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar dom = renderOne.call(gantt, item);\n\t\t\t\tthis.append(item, dom, container);\n\n\t\t\t},\n\n\t\t\tclear: function (container) {\n\n\t\t\t\tthis.rendered = task_area_pulls[id] = {};\n\t\t\t\tif(!layer.append)\n\t\t\t\t\tthis.clear_container(container);\n\t\t\t},\n\t\t\tclear_container: function (container) {\n\t\t\t\tcontainer = container || node;\n\t\t\t\tif (container)\n\t\t\t\t\tcontainer.innerHTML = \"\";\n\t\t\t},\n\t\t\trender_items: function (items, container) {\n\t\t\t\tcontainer = container || node;\n\n\t\t\t\tvar buffer = document.createDocumentFragment();\n\t\t\t\tthis.clear(container);\n\t\t\t\tfor (var i = 0, vis = items.length; i < vis; i++) {\n\t\t\t\t\tthis.render_item(items[i], buffer);\n\t\t\t\t}\n\n\t\t\t\tcontainer.appendChild(buffer);\n\t\t\t},\n\t\t\tappend: function (item, node, container) {\n\t\t\t\tif (!node) {\n\t\t\t\t\tif (this.rendered[item.id]) {\n\t\t\t\t\t\tthis.remove_item(item.id);\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (this.rendered[item.id] && this.rendered[item.id].parentNode) {\n\t\t\t\t\tthis.replace_item(item.id, node);\n\t\t\t\t} else {\n\t\t\t\t\tcontainer.appendChild(node);\n\t\t\t\t}\n\t\t\t\tthis.rendered[item.id] = node;\n\n\t\t\t},\n\t\t\treplace_item: function (item_id, newNode) {\n\t\t\t\tvar item = this.rendered[item_id];\n\t\t\t\tif (item && item.parentNode) {\n\t\t\t\t\titem.parentNode.replaceChild(newNode, item);\n\t\t\t\t}\n\t\t\t\tthis.rendered[item_id] = newNode;\n\t\t\t},\n\t\t\tremove_item: function (item_id) {\n\t\t\t\tthis.hide(item_id);\n\t\t\t\tdelete this.rendered[item_id];\n\t\t\t},\n\t\t\thide: function (item_id) {\n\t\t\t\tvar item = this.rendered[item_id];\n\t\t\t\tif (item && item.parentNode) {\n\t\t\t\t\titem.parentNode.removeChild(item);\n\t\t\t\t}\n\t\t\t},\n\t\t\trestore: function (item) {\n\t\t\t\tvar dom = this.rendered[item.id];\n\t\t\t\tif (dom) {\n\t\t\t\t\tif (!dom.parentNode) {\n\t\t\t\t\t\tthis.append(item, dom, node);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.render_item(item, node);\n\t\t\t\t}\n\t\t\t},\n\t\t\tchange_id: function (oldid, newid) {\n\t\t\t\tthis.rendered[newid] = this.rendered[oldid];\n\t\t\t\tdelete this.rendered[oldid];\n\t\t\t},\n\t\t\trendered: task_area_pulls[id],\n\t\t\tnode: node,\n\t\t\tdestructor: function () {\n\t\t\t\tthis.clear();\n\t\t\t\tdelete task_area_renderers[id];\n\t\t\t\tdelete task_area_pulls[id];\n\t\t\t}\n\t\t};\n\n\t\treturn task_area_renderers[id];\n\t}\n\n\n\tfunction clearRenderers() {\n\t\tfor (var i in task_area_renderers) {\n\t\t\tgetRenderer(i).destructor();\n\t\t}\n\t}\n\n\treturn {\n\t\tgetRenderer: getRenderer,\n\t\tclearRenderers: clearRenderers\n\t};\n\n};\n\nmodule.exports = rendererFactory;","var renderFactoryProvider = require(\"./render_factory\");\nvar utils = require(\"../../../utils/utils\"),\n\tdomHelpers = require(\"../../../utils/dom_helpers\");\n\nvar layerFactory = function(gantt){\n\n\tvar renderFactory = renderFactoryProvider(gantt);\n\treturn {\n\tcreateGroup: function (get_container, rel_root, defaultFilters) {\n\n\t\tvar renderGroup = {\n\t\t\ttempCollection: [],\n\t\t\trenderers: {},\n\t\t\tcontainer: get_container,\n\t\t\tfilters: [],\n\t\t\tgetLayers: function () {\n\t\t\t\tthis._add();// add pending layers\n\n\t\t\t\tvar res = [];\n\t\t\t\tfor (var i in this.renderers) {\n\t\t\t\t\tres.push(this.renderers[i]);\n\t\t\t\t}\n\t\t\t\treturn res;\n\t\t\t},\n\t\t\tgetLayer: function (id) {\n\t\t\t\treturn this.renderers[id];\n\t\t\t},\n\t\t\t_add: function (layer) {\n\t\t\t\tif (layer) {\n\t\t\t\t\tlayer.id = layer.id || utils.uid();\n\t\t\t\t\tthis.tempCollection.push(layer);\n\t\t\t\t}\n\n\t\t\t\tvar container = this.container();\n\n\t\t\t\tvar pending = this.tempCollection;\n\t\t\t\tfor (var i = 0; i < pending.length; i++) {\n\t\t\t\t\tlayer = pending[i];\n\n\t\t\t\t\tif (!this.container() && !(layer && layer.container && domHelpers.isChildOf(layer.container, document.body))) continue;\n\n\t\t\t\t\tvar node = layer.container,\n\t\t\t\t\t\tid = layer.id,\n\t\t\t\t\t\ttopmost = layer.topmost;\n\t\t\t\t\tif (!node.parentNode) {\n\t\t\t\t\t\t//insert on top or below the tasks\n\t\t\t\t\t\tif (topmost) {\n\t\t\t\t\t\t\tcontainer.appendChild(node);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar rel = rel_root ? rel_root() : container.firstChild;\n\t\t\t\t\t\t\tif (rel)\n\t\t\t\t\t\t\t\tcontainer.insertBefore(node, rel);\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tcontainer.appendChild(node);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.renderers[id] = renderFactory.getRenderer(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tlayer,\n\t\t\t\t\t\tnode\n\t\t\t\t\t);\n\t\t\t\t\tthis.tempCollection.splice(i, 1);\n\t\t\t\t\ti--;\n\t\t\t\t}\n\t\t\t},\n\t\t\taddLayer: function (config) {\n\t\t\t\t//config = prepareConfig(config);\n\t\t\t\tif(config){\n\t\t\t\t\tif(typeof config == \"function\"){\n\t\t\t\t\t\tconfig = {renderer: config};\n\t\t\t\t\t}\n\n\t\t\t\t\tif(config.filter === undefined){\n\t\t\t\t\t\tconfig.filter = mergeFilters(defaultFilters || []);\n\t\t\t\t\t}else if(config.filter instanceof Array){\n\t\t\t\t\t\tconfig.filter.push(defaultFilters);\n\t\t\t\t\t\tconfig.filter = mergeFilters(config.filter);\n\t\t\t\t\t}\n\n\t\t\t\t\tif(!config.container){\n\t\t\t\t\t\tconfig.container = document.createElement(\"div\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._add(config);\n\t\t\t\treturn (config ? config.id : undefined);\n\t\t\t},\n\t\t\teachLayer: function(code){\n\t\t\t\tfor (var i in this.renderers) {\n\t\t\t\t\tcode(this.renderers[i]);\n\t\t\t\t}\n\t\t\t},\n\t\t\tremoveLayer: function (id) {\n\t\t\t\tif(!this.renderers[id])\n\t\t\t\t\treturn;\n\t\t\t\tthis.renderers[id].destructor();\n\t\t\t\tdelete this.renderers[id];\n\t\t\t},\n\t\t\tclear: function () {\n\t\t\t\tfor (var i in this.renderers) {\n\t\t\t\t\tthis.renderers[i].destructor();\n\t\t\t\t}\n\t\t\t\tthis.renderers = {};\n\t\t\t}//,\n\t\t\t//prepareConfig: prepareConfig\n\t\t};\n\n\t\tgantt.attachEvent(\"onDestroy\", function(){\n\t\t\trenderGroup.clear();\n\t\t\trenderGroup = null;\n\t\t});\n\n\t\treturn renderGroup;\n\t}\n};};\n\n\nfunction mergeFilters(filter_methods){\n\tif(!(filter_methods instanceof Array)){\n\t\tfilter_methods = Array.prototype.slice.call(arguments, 0);\n\t}\n\n\treturn function(obj){\n\t\tvar res = true;\n\t\tfor(var i = 0, len = filter_methods.length; i < len; i++){\n\t\t\tvar filter_method = filter_methods[i];\n\t\t\tif(filter_method){\n\t\t\t\tres = res && (filter_method(obj.id, obj) !== false);\n\t\t\t}\n\t\t}\n\n\t\treturn res;\n\t};\n}\n\n\nmodule.exports = layerFactory;\n","var createLayerFactory = require(\"./render/layer_engine\");\n\nvar createLayerEngine = function(gantt){\n\tvar factory = createLayerFactory(gantt);\n\treturn {\n\t\tgetDataRender: function(name){\n\t\t\treturn gantt.$services.getService(\"layer:\" + name) || null;\n\t\t},\n\t\tcreateDataRender: function(config){\n\t\t\tvar name = config.name,\n\t\t\t\tdefaultContainer = config.defaultContainer,\n\t\t\t\tpreviusSiblingContainer = config.defaultContainerSibling;\n\n\t\t\tvar layers = factory.createGroup(\n\t\t\t\tdefaultContainer,\n\t\t\t\tpreviusSiblingContainer,\n\t\t\t\tfunction(itemId, item){\n\t\t\t\t\tif(layers.filters){\n\t\t\t\t\t\tfor(var i = 0; i < layers.filters.length; i++){\n\t\t\t\t\t\t\tif(layers.filters[i](itemId, item) === false){\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}else{\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tgantt.$services.setService(\"layer:\" + name, function(){\n\t\t\t\treturn layers;\n\t\t\t});\n\n\t\t\tgantt.attachEvent(\"onGanttReady\", function () {\n\t\t\t\tlayers.addLayer();// init layers on start\n\t\t\t});\n\n\t\t\treturn layers;\n\t\t},\n\t\tinit: function(){\n\t\t\tvar taskLayers = this.createDataRender({\n\t\t\t\tname: \"task\",\n\t\t\t\tdefaultContainer: function(){\n\t\t\t\t\tif(gantt.$task_data){\n\t\t\t\t\t\treturn gantt.$task_data;\n\t\t\t\t\t}else if(gantt.$ui.getView(\"timeline\")){\n\t\t\t\t\t\treturn gantt.$ui.getView(\"timeline\").$task_data;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tdefaultContainerSibling: function(){\n\t\t\t\t\tif(gantt.$task_links){\n\t\t\t\t\t\treturn gantt.$task_links;\n\t\t\t\t\t}else if(gantt.$ui.getView(\"timeline\")){\n\t\t\t\t\t\treturn gantt.$ui.getView(\"timeline\").$task_links;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfilter: function(item){\n\n\t\t\t\t}\n\t\t\t}, gantt);\n\n\t\t\tvar linkLayers = this.createDataRender({\n\t\t\t\tname: \"link\",\n\t\t\t\tdefaultContainer: function(){\n\t\t\t\t\tif(gantt.$task_data){\n\t\t\t\t\t\treturn gantt.$task_data;\n\t\t\t\t\t}else if(gantt.$ui.getView(\"timeline\")){\n\t\t\t\t\t\treturn gantt.$ui.getView(\"timeline\").$task_data;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, gantt);\n\n\t\t\treturn {\n\t\t\t\taddTaskLayer: function(config){\n\t\t\t\t\treturn taskLayers.addLayer(config);\n\t\t\t\t},\n\n\t\t\t\t/*getTaskLayer: function(id){\n\t\t\t\t\treturn taskLayers.getLayer(id);\n\t\t\t\t},*/\n\n\t\t\t\t_getTaskLayers: function(){\n\t\t\t\t\treturn taskLayers.getLayers();\n\t\t\t\t},\n\t\t\t\tremoveTaskLayer: function(id){\n\t\t\t\t\ttaskLayers.removeLayer(id);\n\t\t\t\t},\n\t\t\t\t/*eachTaskLayer: function(code){\n\t\t\t\t\ttaskLayers.eachLayer(code);\n\t\t\t\t},*/\n\t\t\t\t_clearTaskLayers: function(){\n\t\t\t\t\ttaskLayers.clear();\n\t\t\t\t},\n\t\t\t\taddLinkLayer: function(config){\n\t\t\t\t\treturn linkLayers.addLayer(config);\n\t\t\t\t},\n\t\t\t\t/*getLinkLayer: function(id){\n\t\t\t\t\treturn linkLayers.getLayer(id);\n\t\t\t\t},*/\n\t\t\t\t_getLinkLayers: function(){\n\t\t\t\t\treturn linkLayers.getLayers();\n\t\t\t\t},\n\t\t\t\tremoveLinkLayer: function(id){\n\t\t\t\t\tlinkLayers.removeLayer(id);\n\t\t\t\t},\n\t\t\t\t/*eachLinkLayer: function(code){\n\t\t\t\t\tlinkLayers.eachLayer(code);\n\t\t\t\t},*/\n\t\t\t\t_clearLinkLayers: function(){\n\t\t\t\t\tlinkLayers.clear();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t};\n};\n\nmodule.exports = createLayerEngine;","var domHelpers = require(\"../../utils/dom_helpers\");\n\nvar createMouseHandler = (function(domHelpers) {\n\treturn function (gantt) {\n\t\tvar eventHandlers = {\n\t\t\t\"click\": {},\n\t\t\t\"doubleclick\": {},\n\t\t\t\"contextMenu\": {}\n\t\t};\n\n\t\tfunction addEventTarget(event, className, handler, root) {\n\t\t\tif(!eventHandlers[event][className]){\n\t\t\t\teventHandlers[event][className] = [];\n\t\t\t}\n\n\t\t\teventHandlers[event][className].push({\n\t\t\t\thandler: handler,\n\t\t\t\troot: root\n\t\t\t});\n\t\t}\n\n\t\tfunction callHandler(eventName, className, root, args) {\n\t\t\tvar handlers = eventHandlers[eventName][className];\n\t\t\tif(handlers){\n\t\t\t\tfor(var i = 0; i < handlers.length; i++){\n\t\t\t\t\tif(!(root || handlers[i].root) || handlers[i].root === root){\n\t\t\t\t\t\thandlers[i].handler.apply(this, args);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction onClick(e) {\n\t\t\te = e || window.event;\n\t\t\tvar trg = e.target || e.srcElement;\n\t\t\tvar id = gantt.locate(e);\n\n\t\t\tvar handlers = findEventHandlers(e, eventHandlers.click);\n\t\t\tvar res = true;\n\t\t\tif (id !== null) {\n\t\t\t\tres = !gantt.checkEvent(\"onTaskClick\") || gantt.callEvent(\"onTaskClick\", [id, e]);\n\t\t\t} else {\n\t\t\t\tgantt.callEvent(\"onEmptyClick\", [e]);\n\t\t\t}\n\n\t\t\tif (res) {\n\t\t\t\tvar default_action = callEventHandlers(handlers, e, id);\n\t\t\t\tif (!default_action)\n\t\t\t\t\treturn;\n\n\t\t\t\tif (id && gantt.getTask(id) && gantt.config.select_task && !gantt.config.multiselect) {\n\t\t\t\t\tgantt.selectTask(id);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction onContextMenu(e) {\n\t\t\te = e || window.event;\n\t\t\tvar src = e.target || e.srcElement,\n\t\t\t\ttaskId = gantt.locate(src),\n\t\t\t\tlinkId = gantt.locate(src, gantt.config.link_attribute);\n\n\t\t\tvar res = !gantt.checkEvent(\"onContextMenu\") || gantt.callEvent(\"onContextMenu\", [taskId, linkId, e]);\n\t\t\tif (!res) {\n\t\t\t\tif (e.preventDefault)\n\t\t\t\t\te.preventDefault();\n\t\t\t\telse\n\t\t\t\t\te.returnValue = false;\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\n\t\tfunction findEventHandlers(e, hash){\n\t\t\tvar trg = e.target || e.srcElement;\n\t\t\tvar handlers = [];\n\t\t\twhile (trg) {\n\t\t\t\tvar css = domHelpers.getClassName(trg);\n\t\t\t\tif (css) {\n\t\t\t\t\tcss = css.split(\" \");\n\t\t\t\t\tfor (var i = 0; i < css.length; i++) {\n\t\t\t\t\t\tif (!css[i]) continue;\n\t\t\t\t\t\tif (hash[css[i]]) {\n\t\t\t\t\t\t\tvar delegateHandlers = hash[css[i]];\n\n\t\t\t\t\t\t\tfor(var h = 0; h < delegateHandlers.length; h++){\n\t\t\t\t\t\t\t\tif(delegateHandlers[h].root){\n\t\t\t\t\t\t\t\t\tif(!domHelpers.isChildOf(trg, delegateHandlers[h].root)){\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\thandlers.push(delegateHandlers[h].handler);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttrg = trg.parentNode;\n\t\t\t}\n\t\t\treturn handlers;\n\t\t}\n\n\t\tfunction callEventHandlers(handlers, e, id){\n\t\t\tvar res = true;\n\n\t\t\tfor(var i = 0; i < handlers.length; i++){\n\t\t\t\tvar handlerResult = handlers[i].call(gantt, e, id, e.target || e.srcElement);\n\t\t\t\tres = res && !(typeof handlerResult != \"undefined\" && handlerResult !== true);\n\t\t\t}\n\n\t\t\treturn res;\n\t\t}\n\n\n\t\tfunction onDoubleClick(e) {\n\t\t\te = e || window.event;\n\t\t\tvar trg = e.target || e.srcElement;\n\t\t\tvar id = gantt.locate(e);\n\n\t\t\tvar handlers = findEventHandlers(e, eventHandlers.doubleclick);\n\t\t\tvar res = !gantt.checkEvent(\"onTaskDblClick\") || gantt.callEvent(\"onTaskDblClick\", [id, e]);\n\t\t\tif (res) {\n\t\t\t\tvar default_action = callEventHandlers(handlers, e, id);\n\t\t\t\tif (!default_action)\n\t\t\t\t\treturn;\n\n\t\t\t\tif (id !== null && gantt.getTask(id)) {\n\t\t\t\t\tif (res && gantt.config.details_on_dblclick) {\n\t\t\t\t\t\tgantt.showLightbox(id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction onMouseMove(e) {\n\t\t\tif (gantt.checkEvent(\"onMouseMove\")) {\n\t\t\t\tvar id = gantt.locate(e);\n\t\t\t\tgantt._last_move_event = e;\n\t\t\t\tgantt.callEvent(\"onMouseMove\", [id, e]);\n\t\t\t}\n\t\t}\n\n\t\tfunction detach(eventName, className, handler, root) {\n\t\t\tif (eventHandlers[eventName] && eventHandlers[eventName][className]) {\n\t\t\t\tvar handlers = eventHandlers[eventName];\n\t\t\t\tvar elementHandlers = handlers[className];\n\t\t\t\tfor(var i = 0; i < elementHandlers.length; i++){\n\t\t\t\t\tif(elementHandlers[i].root == root){\n\t\t\t\t\t\telementHandlers.splice(i, 1);\n\t\t\t\t\t\ti--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!elementHandlers.length){\n\t\t\t\t\tdelete handlers[className];\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t\tvar domEvents = gantt._createDomEventScope();\n\n\t\tfunction reset(node){\n\n\t\t\tdomEvents.detachAll();\n\n\t\t\tif(node){\n\t\t\t\tdomEvents.attach(node, \"click\", onClick);\n\t\t\t\tdomEvents.attach(node, \"dblclick\", onDoubleClick);\n\t\t\t\tdomEvents.attach(node, \"mousemove\", onMouseMove);\n\t\t\t\tdomEvents.attach(node, \"contextmenu\", onContextMenu);\n\t\t\t}\n\t\t}\n\n\n\n\t\treturn {\n\t\t\treset: reset,\n\t\t\tglobal: function(event, classname, handler){\n\t\t\t\taddEventTarget(event, classname, handler, null);\n\t\t\t},\n\t\t\tdelegate: addEventTarget,\n\t\t\tdetach: detach,\n\t\t\tcallHandler: callHandler,\n\t\t\tonDoubleClick: onDoubleClick,\n\t\t\tonMouseMove: onMouseMove,\n\t\t\tonContextMenu: onContextMenu,\n\t\t\tonClick: onClick,\n\t\t\tdestructor: function(){\n\t\t\t\treset();\n\t\t\t\teventHandlers = null;\n\t\t\t\tdomEvents = null;\n\t\t\t}\n\n\t\t};\n\t};\n\n})(domHelpers);\n\n\nmodule.exports = {\n\tinit:createMouseHandler\n};","var utils = require(\"../../utils/utils\");\n\nfunction ViewSettings(config){\n\tutils.mixin(this, config, true);\n}\n\n\nfunction extendSettings (store, parentSettings){\n\tvar own = this.$config[store];\n\n\tif(own){\n\t\tif(own instanceof ViewSettings){\n\t\t\treturn own;\n\t\t}else{\n\t\t\tViewSettings.prototype = parentSettings;\n\t\t\tthis.$config[store] = new ViewSettings(own);\n\t\t\treturn this.$config[store];\n\t\t}\n\t}else{\n\t\treturn parentSettings;\n\t}\n}\n\nvar configurable = function(parentView){\n\tvar parentConfig,\n\t\tparentTemplates;\n\n\treturn {\n\t\t$getConfig: function(){\n\t\t\tif(!parentConfig){\n\t\t\t\tparentConfig = parentView ? parentView.$getConfig() : this.$gantt.config;\n\t\t\t}\n\n\t\t\treturn extendSettings.call(this, \"config\", parentConfig);\n\t\t},\n\t\t$getTemplates: function(){\n\t\t\tif(!parentTemplates){\n\t\t\t\tparentTemplates = parentView ? parentView.$getTemplates() : this.$gantt.templates;\n\t\t\t}\n\n\t\t\treturn extendSettings.call(this, \"templates\", parentTemplates);\n\t\t}\n\t};\n};\n\nmodule.exports = function(obj, parent){\n\tutils.mixin(obj, configurable(parent));\n};","var utils = require(\"../../utils/utils\"),\n\tconfigurable = require(\"./configurable\");\n\nvar uiFactory = function createFactory(gantt){\n\tvar views = {};\n\n\tfunction ui(cell, parentView) {\n\t\tvar content;\n\t\tvar view = \"cell\";\n\t\tif (cell.view){\n\t\t\tview = \"viewcell\";\n\t\t}else if (cell.resizer) {\n\t\t\tview = \"resizer\";\n\t\t}\n\t\telse if (cell.rows || cell.cols) {\n\t\t\tview = \"layout\";\n\t\t}\n\t\telse if (cell.views) {\n\t\t\tview = \"multiview\";\n\t\t}\n\n\t\tcontent = createView.call(this, view, null, cell, parentView);\n\t\treturn content;\n\t}\n\t\n\tvar createdViews = {};\n\n\tfunction createView(name, parent, config, parentView) {\n\t\tvar creator = views[name];\n\n\t\tif(!creator || !creator.create)\n\t\t\treturn false;\n\n\t\tif(name == \"resizer\" && !config.mode){\n\t\t\tif(parentView.$config.cols){\n\t\t\t\tconfig.mode = \"x\";\n\t\t\t}else{\n\t\t\t\tconfig.mode = \"y\";\n\t\t\t}\n\t\t}\n\n\t\tif(name == \"viewcell\" && config.view == \"scrollbar\" && !config.scroll){\n\t\t\tif(parentView.$config.cols){\n\t\t\t\tconfig.scroll = \"y\";\n\t\t\t}else{\n\t\t\t\tconfig.scroll = \"x\";\n\t\t\t}\n\t\t}\n\n\t\tvar config = utils.copy(config);\n\n\t\tif(!config.id && !createdViews[config.view]){\n\t\t\tconfig.id = config.view;\n\t\t}\n\n\t\tif(config.id && !config.css){\n\t\t\tconfig.css = config.id+\"_cell\";\n\t\t}\n\n\t\tvar view = new creator.create(parent, config, this, gantt);\n\n\t\tif(creator.configure){\n\t\t\tcreator.configure(view);\n\t\t}\n\n\t\tconfigurable(view, parentView);\n\t\tif(!view.$id){\n\t\t\tview.$id = config.id || gantt.uid();\n\t\t}\n\n\t\tif(!view.$parent && typeof parent == \"object\"){\n\t\t\tview.$parent = parent;\n\t\t}\n\t\tif(!view.$config){\n\t\t\tview.$config = config;\n\t\t}\n\n\t\tif(createdViews[view.$id]){\n\t\t\tview.$id = gantt.uid();\n\t\t}\n\n\t\tcreatedViews[view.$id] = view;\n\n\t\treturn view;\n\t}\n\n\tfunction reset(){\n\t\tcreatedViews = {};\n\t}\n\n\tfunction register(name, viewConstructor, configure){\n\t\tviews[name] = {create: viewConstructor, configure: configure};\n\t}\n\n\tfunction getView(id){\n\t\treturn createdViews[id];\n\t}\n\n\tvar factory = {\n\t\tinitUI:ui,\n\t\treset: reset,\n\t\tregisterView: register,\n\t\tcreateView: createView,\n\t\tgetView: getView\n\t};\n\n\treturn factory;\n};\n\nmodule.exports = {\n\tcreateFactory: uiFactory\n};\n\n","var uiFactory = require(\"./ui_factory\"),\n\tmouseEvents = require(\"./mouse\"),\n\tcreateLayers = require(\"./gantt_layers\"),\n\tCell = require(\"./layout/cell\"),\n\tLayout = require(\"./layout/layout\"),\n\tViewLayout = require(\"./layout/view_layout\"),\n\tViewCell = require(\"./layout/view_cell\"),\n\tResizer = require(\"./layout/resizer_cell\"),\n\tScrollbar = require(\"./layout/scrollbar_cell\"),\n\tTimeline = require(\"./timeline/timeline\"),\n\tGrid = require(\"./grid/grid\"),\n\tResourceGrid = require(\"./grid/resource_grid\"),\n\tResourceTimeline = require(\"./timeline/resource_timeline\");\n\n\nvar gridEditorsFactory = require(\"./grid/editors/controller\");\n\n\nvar renderTaskBar = require(\"./render/task_bar_render\"),\n\trenderSplitTaskBar = require(\"./render/task_split_render\"),\n\trenderTaskBg = require(\"./render/task_bg_render\"),\n\trenderLink = require(\"./render/link_render\"),\n\tgridRenderer = require(\"./render/task_grid_line_render\");\n\nvar mainGridInitializer = require(\"./grid/main_grid_initializer\");\nvar mainTimelineInitializer = require(\"./timeline/main_timeline_initializer\");\nvar mainLayoutInitializer = require(\"./main_layout_initializer\");\n\nfunction initUI(gantt){\n\tfunction inheritGridConfig(id){\n\t\treturn {\n\t\t\t//width: gantt.config.grid_width\n\t\t};\n\t}\n\n\tfunction attachInitializer(view, initializer){\n\t\tvar ext = initializer(gantt);\n\t\tif(ext.onCreated)\n\t\t\text.onCreated(view);\n\t\tview.attachEvent(\"onReady\", function(){\n\t\t\tif(ext.onInitialized)\n\t\t\t\text.onInitialized(view);\n\t\t});\n\t\tview.attachEvent(\"onDestroy\", function(){\n\t\t\tif(ext.onDestroyed)\n\t\t\t\text.onDestroyed(view);\n\t\t});\n\t}\n\n\tvar factory = uiFactory.createFactory(gantt);\n\tfactory.registerView(\"cell\", Cell);\n\tfactory.registerView(\"resizer\", Resizer);\n\tfactory.registerView(\"scrollbar\", Scrollbar);\n\tfactory.registerView(\"layout\", Layout, function(view){\n\t\tvar id = view.$config ? view.$config.id : null;\n\t\tif(id === \"main\"){\n\t\t\tattachInitializer(view, mainLayoutInitializer);\n\t\t}\n\t});\n\tfactory.registerView(\"viewcell\", ViewCell);\n\tfactory.registerView(\"multiview\", ViewLayout);\n\tfactory.registerView(\"timeline\", Timeline, function(view){\n\t\tvar id = view.$config ? view.$config.id : null;\n\t\tif(id === \"timeline\" || view.$config.bind == \"task\"){\n\t\t\tattachInitializer(view, mainTimelineInitializer);\n\t\t}\n\t});\n\tfactory.registerView(\"grid\", Grid, function(view){\n\t\tvar id = view.$config ? view.$config.id : null;\n\t\tif(id === \"grid\" || view.$config.bind == \"task\"){\n\t\t\tattachInitializer(view, mainGridInitializer);\n\t\t}\n\t});\n\n\tfactory.registerView(\"resourceGrid\", ResourceGrid);\n\tfactory.registerView(\"resourceTimeline\", ResourceTimeline);\n\n\tvar layersEngine = createLayers(gantt);\n\n\tvar inlineEditors = gridEditorsFactory(gantt);\n\n\tgantt.ext.inlineEditors = inlineEditors;\n\tgantt.ext._inlineEditors = inlineEditors;\n\tinlineEditors.init(gantt);\n\n\treturn {\n\t\tfactory:factory,\n\t\tmouseEvents: mouseEvents.init(gantt),\n\t\tlayersApi: layersEngine.init(),\n\t\trender:{\n\t\t\tgridLine: gridRenderer(gantt),\n\t\t\ttaskBg: renderTaskBg(gantt),\n\t\t\ttaskBar: renderTaskBar(gantt),\n\t\t\ttaskSplitBar: renderSplitTaskBar(gantt),\n\t\t\tlink: renderLink(gantt)\n\t\t},\n\t\tlayersService: {\n\t\t\tgetDataRender: function(name){\n\t\t\t\treturn layersEngine.getDataRender(name, gantt);\n\t\t\t},\n\t\t\tcreateDataRender: function(config){\n\t\t\t\treturn layersEngine.createDataRender(config, gantt);\n\t\t\t}\n\t\t}\n\t};\n}\n\nmodule.exports = {\n\tinit: initUI\n};","var utils = require(\"../utils/utils\");\nvar domHelpers = require(\"../utils/dom_helpers\");\n\nmodule.exports = function(gantt) {\n\n\tvar boxAttribute = \"data-dhxbox\";\n\n\tvar _dhx_msg_cfg = null;\n\n\tfunction callback(config, result) {\n\t\tvar usercall = config.callback;\n\t\tmodalBox.hide(config.box);\n\n\t\t_dhx_msg_cfg = config.box = null;\n\t\tif (usercall)\n\t\t\tusercall(result);\n\t}\n\n\tfunction modal_key(e) {\n\t\tif (_dhx_msg_cfg) {\n\t\t\te = e || event;\n\t\t\tvar code = e.which || event.keyCode;\n\t\t\tvar preventDefault = false;\n\n\t\t\tif (messageBox.keyboard) {\n\t\t\t\tif (code == 13 || code == 32) {\n\t\t\t\t\t// default behavior is to confirm/submit popup on space/enter\n\t\t\t\t\t// if browser focus is set on button element - do button click instead of default behavior\n\t\t\t\t\tvar target = e.target || e.srcElement;\n\t\t\t\t\tif (domHelpers.getClassName(target).indexOf(\"gantt_popup_button\") > -1 && target.click) {\n\t\t\t\t\t\ttarget.click();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcallback(_dhx_msg_cfg, true);\n\t\t\t\t\t\tpreventDefault = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (code == 27) {\n\t\t\t\t\tcallback(_dhx_msg_cfg, false);\n\t\t\t\t\tpreventDefault = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (preventDefault) {\n\t\t\t\tif (e.preventDefault)\n\t\t\t\t\te.preventDefault();\n\t\t\t\treturn !(e.cancelBubble = true);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t}\n\n\tgantt.event(document, \"keydown\", modal_key, true);\n\n\tfunction modality(mode) {\n\t\tif (!modality.cover) {\n\t\t\tmodality.cover = document.createElement(\"div\");\n\t\t\t//necessary for IE only\n\t\t\tmodality.cover.onkeydown = modal_key;\n\t\t\tmodality.cover.className = \"dhx_modal_cover\";\n\t\t\tdocument.body.appendChild(modality.cover);\n\t\t}\n\t\tvar height = document.body.scrollHeight;\n\t\tmodality.cover.style.display = mode ? \"inline-block\" : \"none\";\n\t}\n\n\tfunction button(text, className, result) {\n\t\tvar buttonAriaAttrs = gantt._waiAria.messageButtonAttrString(text);\n\t\tvar name = className.toLowerCase().replace(/ /g, \"_\");\n\t\tvar button_css = \"gantt_\" + name + \"_button\" + \" dhtmlx_\" + name + \"_button\"; // dhtmlx_ok_button, dhtmlx_click_me_button\n\t\treturn \"
\" + text + \"
\";\n\t}\n\n\tfunction info(text) {\n\t\tif (!messageBox.area) {\n\t\t\tmessageBox.area = document.createElement(\"div\");\n\t\t\tmessageBox.area.className = \"gantt_message_area dhtmlx_message_area\";\n\t\t\tmessageBox.area.style[messageBox.position] = \"5px\";\n\t\t\tdocument.body.appendChild(messageBox.area);\n\t\t}\n\n\t\tmessageBox.hide(text.id);\n\t\tvar message = document.createElement(\"div\");\n\t\tmessage.innerHTML = \"
\" + text.text + \"
\";\n\t\tmessage.className = \"gantt-info dhtmlx-info gantt-\" + text.type + \" dhtmlx-\" + text.type;\n\t\tmessage.onclick = function () {\n\t\t\tmessageBox.hide(text.id);\n\t\t\ttext = null;\n\t\t};\n\n\t\tgantt._waiAria.messageInfoAttr(message);\n\n\t\tif (messageBox.position == \"bottom\" && messageBox.area.firstChild)\n\t\t\tmessageBox.area.insertBefore(message, messageBox.area.firstChild);\n\t\telse\n\t\t\tmessageBox.area.appendChild(message);\n\n\t\tif (text.expire > 0)\n\t\t\tmessageBox.timers[text.id] = window.setTimeout(function () {\n\t\t\t\tmessageBox.hide(text.id);\n\t\t\t}, text.expire);\n\n\t\tmessageBox.pull[text.id] = message;\n\t\tmessage = null;\n\n\t\treturn text.id;\n\t}\n\n\tfunction getFirstDefined() {\n\t\tvar values = [].slice.apply(arguments, [0]);\n\n\t\tfor (var i = 0; i < values.length; i++) {\n\t\t\tif (values[i]) {\n\t\t\t\treturn values[i];\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfunction _boxStructure(config, ok, cancel) {\n\t\tvar box = document.createElement(\"div\");\n\n\t\tvar locale = gantt.locale;\n\n\t\tvar contentId = utils.uid();\n\t\tgantt._waiAria.messageModalAttr(box, contentId);\n\n\n\t\tbox.className = \" gantt_modal_box dhtmlx_modal_box gantt-\" + config.type + \" dhtmlx-\" + config.type;\n\t\tbox.setAttribute(boxAttribute, 1);\n\n\t\tvar inner = '';\n\n\t\tif (config.width)\n\t\t\tbox.style.width = config.width;\n\t\tif (config.height)\n\t\t\tbox.style.height = config.height;\n\t\tif (config.title)\n\t\t\tinner += '
' + config.title + '
';\n\t\tinner += '
' + (config.content ? '' : config.text) + '
';\n\t\tif (ok)\n\t\t\tinner += button(getFirstDefined(config.ok, gantt.locale.labels.message_ok, \"OK\"), \"ok\", true);\n\t\tif (cancel)\n\t\t\tinner += button(getFirstDefined(config.cancel, gantt.locale.labels.message_cancel, \"Cancel\"), \"cancel\", false);\n\n\t\tif (config.buttons) {\n\t\t\tfor (var i = 0; i < config.buttons.length; i++) {\n\t\t\t\tvar btn = config.buttons[i];\n\t\t\t\tif (typeof btn == \"object\") {\n\t\t\t\t\t// Support { label:\"Save\", css:\"main_button\", value:\"save\" }\n\t\t\t\t\tvar label = btn.label;\n\t\t\t\t\tvar css = btn.css || (\"gantt_\" + btn.label.toLowerCase() + \"_button dhtmlx_\" + btn.label.toLowerCase() + \"_button\");\n\t\t\t\t\tvar value = btn.value || i;\n\t\t\t\t\tinner += button(label, css, value);\n\t\t\t\t} else {\n\t\t\t\t\tinner += button(btn, btn, i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinner += '
';\n\t\tbox.innerHTML = inner;\n\n\t\tif (config.content) {\n\t\t\tvar node = config.content;\n\t\t\tif (typeof node == \"string\")\n\t\t\t\tnode = document.getElementById(node);\n\t\t\tif (node.style.display == 'none')\n\t\t\t\tnode.style.display = \"\";\n\t\t\tbox.childNodes[config.title ? 1 : 0].appendChild(node);\n\t\t}\n\n\t\tbox.onclick = function (e) {\n\t\t\te = e || event;\n\t\t\tvar source = e.target || e.srcElement;\n\t\t\tif (!source.className) source = source.parentNode;\n\t\t\tif (source.className.split(\" \")[0] == \"gantt_popup_button\") {\n\t\t\t\tvar result = source.getAttribute(\"data-result\");\n\t\t\t\tresult = (result == \"true\") || (result == \"false\" ? false : result);\n\t\t\t\tcallback(config, result);\n\t\t\t}\n\t\t};\n\t\tconfig.box = box;\n\t\tif (ok || cancel)\n\t\t\t_dhx_msg_cfg = config;\n\n\t\treturn box;\n\t}\n\n\tfunction _createBox(config, ok, cancel) {\n\t\tvar box = config.tagName ? config : _boxStructure(config, ok, cancel);\n\n\t\tif (!config.hidden)\n\t\t\tmodality(true);\n\t\tdocument.body.appendChild(box);\n\t\tvar x = Math.abs(Math.floor(((window.innerWidth || document.documentElement.offsetWidth) - box.offsetWidth) / 2));\n\t\tvar y = Math.abs(Math.floor(((window.innerHeight || document.documentElement.offsetHeight) - box.offsetHeight) / 2));\n\t\tif (config.position == \"top\")\n\t\t\tbox.style.top = \"-3px\";\n\t\telse\n\t\t\tbox.style.top = y + 'px';\n\t\tbox.style.left = x + 'px';\n\t\t//necessary for IE only\n\t\tbox.onkeydown = modal_key;\n\n\t\tmodalBox.focus(box);\n\n\t\tif (config.hidden)\n\t\t\tmodalBox.hide(box);\n\n\t\tgantt.callEvent(\"onMessagePopup\", [box]);\n\t\treturn box;\n\t}\n\n\tfunction alertPopup(config) {\n\t\treturn _createBox(config, true, false);\n\t}\n\n\tfunction confirmPopup(config) {\n\t\treturn _createBox(config, true, true);\n\t}\n\n\tfunction boxPopup(config) {\n\t\treturn _createBox(config);\n\t}\n\n\tfunction box_params(text, type, callback) {\n\t\tif (typeof text != \"object\") {\n\t\t\tif (typeof type == \"function\") {\n\t\t\t\tcallback = type;\n\t\t\t\ttype = \"\";\n\t\t\t}\n\t\t\ttext = {text: text, type: type, callback: callback};\n\t\t}\n\t\treturn text;\n\t}\n\n\tfunction params(text, type, expire, id) {\n\t\tif (typeof text != \"object\")\n\t\t\ttext = {text: text, type: type, expire: expire, id: id};\n\t\ttext.id = text.id || utils.uid();\n\t\ttext.expire = text.expire || messageBox.expire;\n\t\treturn text;\n\t}\n\n\tvar alertBox = function () {\n\t\tvar text = box_params.apply(this, arguments);\n\t\ttext.type = text.type || \"confirm\";\n\t\treturn alertPopup(text);\n\t};\n\tvar confirmBox = function () {\n\t\tvar text = box_params.apply(this, arguments);\n\t\ttext.type = text.type || \"alert\";\n\t\treturn confirmPopup(text);\n\t};\n\tvar modalBox = function () {\n\t\tvar text = box_params.apply(this, arguments);\n\t\ttext.type = text.type || \"alert\";\n\t\treturn boxPopup(text);\n\t};\n\tmodalBox.hide = function (node) {\n\t\twhile (node && node.getAttribute && !node.getAttribute(boxAttribute))\n\t\t\tnode = node.parentNode;\n\t\tif (node) {\n\t\t\tnode.parentNode.removeChild(node);\n\t\t\tmodality(false);\n\n\t\t\tgantt.callEvent(\"onAfterMessagePopup\", [node]);\n\t\t}\n\t};\n\n\tvar domHelpers = require(\"../utils/dom_helpers\");\n\n\tmodalBox.focus = function (node) {\n\t\tsetTimeout(function () {\n\t\t\tvar focusable = domHelpers.getFocusableNodes(node);\n\t\t\tif (focusable.length) {\n\t\t\t\tif (focusable[0].focus) focusable[0].focus();\n\t\t\t}\n\t\t}, 1);\n\t};\n\n\tvar messageBox = function (text, type, expire, id) {\n\t\ttext = params.apply(this, arguments);\n\t\ttext.type = text.type || \"info\";\n\n\t\tvar subtype = text.type.split(\"-\")[0];\n\t\tswitch (subtype) {\n\t\t\tcase \"alert\":\n\t\t\t\treturn alertPopup(text);\n\t\t\tcase \"confirm\":\n\t\t\t\treturn confirmPopup(text);\n\t\t\tcase \"modalbox\":\n\t\t\t\treturn boxPopup(text);\n\t\t\tdefault:\n\t\t\t\treturn info(text);\n\t\t}\n\t};\n\n\tmessageBox.seed = (new Date()).valueOf();\n\tmessageBox.uid = utils.uid;\n\tmessageBox.expire = 4000;\n\tmessageBox.keyboard = true;\n\tmessageBox.position = \"top\";\n\tmessageBox.pull = {};\n\tmessageBox.timers = {};\n\n\tmessageBox.hideAll = function () {\n\t\tfor (var key in messageBox.pull)\n\t\t\tmessageBox.hide(key);\n\t};\n\tmessageBox.hide = function (id) {\n\t\tvar obj = messageBox.pull[id];\n\t\tif (obj && obj.parentNode) {\n\t\t\twindow.setTimeout(function () {\n\t\t\t\tobj.parentNode.removeChild(obj);\n\t\t\t\tobj = null;\n\t\t\t}, 2000);\n\t\t\tobj.className += \" hidden\";\n\n\t\t\tif (messageBox.timers[id])\n\t\t\t\twindow.clearTimeout(messageBox.timers[id]);\n\t\t\tdelete messageBox.pull[id];\n\t\t}\n\t};\n\n\tvar popups = [];\n\tgantt.attachEvent(\"onMessagePopup\", function(box){\n\t\tpopups.push(box);\n\t});\n\tgantt.attachEvent(\"onAfterMessagePopup\", function(box){\n\t\tfor(var i = 0; i < popups.length; i++){\n\t\t\tif(popups[i] === box){\n\t\t\t\tpopups.splice(i, 1);\n\t\t\t\ti--;\n\t\t\t}\n\t\t}\n\t});\n\n\tgantt.attachEvent(\"onDestroy\", function(){\n\t\tif(modality.cover && modality.cover.parentNode){\n\t\t\tmodality.cover.parentNode.removeChild(modality.cover);\n\t\t}\n\n\t\tfor(var i = 0; i < popups.length; i++){\n\t\t\tif(popups[i].parentNode){\n\t\t\t\tpopups[i].parentNode.removeChild(popups[i]);\n\t\t\t}\n\t\t}\n\t\tpopups = null;\n\n\t\tif(messageBox.area && messageBox.area.parentNode){\n\t\t\tmessageBox.area.parentNode.removeChild(messageBox.area);\n\t\t}\n\t\tmessageBox = null;\n\t});\n\n\treturn {\n\t\talert: alertBox,\n\t\tconfirm: confirmBox,\n\t\tmessage: messageBox,\n\t\tmodalbox: modalBox\n\t};\n};","var utils = require(\"../../utils/utils\");\n\nvar StateService = (function(){\n\tvar stateProviders = {};\n\n\tfunction getState(name){\n\t\tif(name){\n\t\t\treturn stateProviders[name].method();\n\t\t}else{\n\t\t\tvar res = {};\n\t\t\tfor(var i in stateProviders){\n\t\t\t\tif(!stateProviders[i].internal)\n\t\t\t\t\tutils.mixin(res, stateProviders[i].method(), true);\n\t\t\t}\n\t\t\treturn res;\n\t\t}\n\t}\n\n\tfunction registerProvider(name, provider, internal){\n\t\tstateProviders[name] = { method: provider, internal: internal};\n\t}\n\n\tfunction unregisterProvider(name){\n\t\tdelete stateProviders[name];\n\t}\n\n\treturn {\n\t\tgetState: getState,\n\t\tregisterProvider: registerProvider,\n\t\tunregisterProvider: unregisterProvider\n\t};\n});\n\nmodule.exports = StateService;\n\n","module.exports = function(gantt) {\n\n\tvar regTemplates = {};\n\n\tfunction initTemplate(name, initial, template_name) {\n\t\ttemplate_name = template_name || name;\n\t\tvar config = gantt.config,\n\t\t\ttemplates = gantt.templates;\n\n\t\tif (gantt.config[name] && regTemplates[template_name] != config[name]) {\n\t\t\tif (!(initial && templates[template_name])) {\n\t\t\t\ttemplates[template_name] = gantt.date.date_to_str(config[name]);\n\t\t\t\tregTemplates[template_name] = config[name];\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction initTemplates() {\n\t\tvar labels = gantt.locale.labels;\n\t\tlabels.gantt_save_btn = labels.icon_save;\n\t\tlabels.gantt_cancel_btn = labels.icon_cancel;\n\t\tlabels.gantt_delete_btn = labels.icon_delete;\n\n\n\t\tvar date = gantt.date;\n\n\t\t//build configuration based templates\n\t\tvar d = date.date_to_str;\n\t\tvar c = gantt.config;\n\t\tinitTemplate(\"date_scale\", true, undefined, gantt.config, gantt.templates);\n\t\tinitTemplate(\"date_grid\", true, \"grid_date_format\", gantt.config, gantt.templates);\n\t\tinitTemplate(\"task_date\", true, undefined, gantt.config, gantt.templates);\n\n\t\tgantt.mixin(gantt.templates, {\n\t\t\txml_date: date.str_to_date(c.xml_date, c.server_utc),\n\t\t\txml_format: d(c.xml_date, c.server_utc),\n\t\t\tapi_date: date.str_to_date(c.api_date),\n\t\t\tprogress_text: function (start, end, task) {\n\t\t\t\treturn \"\";\n\t\t\t},\n\t\t\tgrid_header_class: function (column, config) {\n\t\t\t\treturn \"\";\n\t\t\t},\n\n\t\t\ttask_text: function (start, end, task) {\n\t\t\t\treturn task.text;\n\t\t\t},\n\t\t\ttask_class: function (start, end, task) {\n\t\t\t\treturn \"\";\n\t\t\t},\n\t\t\tgrid_row_class: function (start, end, task) {\n\t\t\t\treturn \"\";\n\t\t\t},\n\t\t\ttask_row_class: function (start, end, task) {\n\t\t\t\treturn \"\";\n\t\t\t},\n\t\t\ttask_cell_class: function (item, date) {\n\t\t\t\treturn \"\";\n\t\t\t},\n\t\t\tscale_cell_class: function (date) {\n\t\t\t\treturn \"\";\n\t\t\t},\n\t\t\tscale_row_class: function (date) {\n\t\t\t\treturn \"\";\n\t\t\t},\n\n\t\t\tgrid_indent: function (item) {\n\t\t\t\treturn \"
\";\n\t\t\t},\n\t\t\tgrid_folder: function (item) {\n\t\t\t\treturn \"
\";\n\t\t\t},\n\t\t\tgrid_file: function (item) {\n\t\t\t\treturn \"
\";\n\t\t\t},\n\t\t\tgrid_open: function (item) {\n\t\t\t\treturn \"
\";\n\t\t\t},\n\t\t\tgrid_blank: function (item) {\n\t\t\t\treturn \"
\";\n\t\t\t},\n\t\t\tdate_grid: function (date, item) {\n\t\t\t\tif (item && gantt.isUnscheduledTask(item) && gantt.config.show_unscheduled) {\n\t\t\t\t\treturn gantt.templates.task_unscheduled_time(item);\n\t\t\t\t} else {\n\t\t\t\t\treturn gantt.templates.grid_date_format(date);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\ttask_time: function (start, end, ev) {\n\t\t\t\tif (gantt.isUnscheduledTask(ev) && gantt.config.show_unscheduled) {\n\t\t\t\t\treturn gantt.templates.task_unscheduled_time(ev);\n\t\t\t\t} else {\n\t\t\t\t\treturn gantt.templates.task_date(start) + \" - \" + gantt.templates.task_date(end);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\ttask_unscheduled_time: function (task) {\n\t\t\t\treturn \"\";\n\t\t\t},\n\n\t\t\ttime_picker: d(c.time_picker),\n\t\t\tlink_class: function (link) {\n\t\t\t\treturn \"\";\n\t\t\t},\n\t\t\tlink_description: function (link) {\n\t\t\t\tvar from = gantt.getTask(link.source),\n\t\t\t\t\tto = gantt.getTask(link.target);\n\n\t\t\t\treturn \"\" + from.text + \"\" + to.text + \"\";\n\t\t\t},\n\n\t\t\tdrag_link: function (from, from_start, to, to_start) {\n\t\t\t\tfrom = gantt.getTask(from);\n\t\t\t\tvar labels = gantt.locale.labels;\n\n\t\t\t\tvar text = \"\" + from.text + \" \" + (from_start ? labels.link_start : labels.link_end) + \"
\";\n\t\t\t\tif (to) {\n\t\t\t\t\tto = gantt.getTask(to);\n\t\t\t\t\ttext += \" \" + to.text + \" \" + (to_start ? labels.link_start : labels.link_end) + \"
\";\n\t\t\t\t}\n\t\t\t\treturn text;\n\t\t\t},\n\t\t\tdrag_link_class: function (from, from_start, to, to_start) {\n\t\t\t\tvar add = \"\";\n\n\t\t\t\tif (from && to) {\n\t\t\t\t\tvar allowed = gantt.isLinkAllowed(from, to, from_start, to_start);\n\t\t\t\t\tadd = \" \" + (allowed ? \"gantt_link_allow\" : \"gantt_link_deny\");\n\t\t\t\t}\n\n\t\t\t\treturn \"gantt_link_tooltip\" + add;\n\t\t\t},\n\n\t\t\t/* used for aria-labels of bar elements and for tooltip.js */\n\t\t\ttooltip_date_format: date.date_to_str(\"%Y-%m-%d\"),\n\t\t\ttooltip_text: function (start, end, event) {\n\t\t\t\treturn \"Task: \" + event.text + \"
Start date: \" + gantt.templates.tooltip_date_format(start) + \"
End date: \" + gantt.templates.tooltip_date_format(end);\n\t\t\t}\n\t\t});\n\t}\n\n\treturn {\n\t\tinitTemplates: initTemplates,\n\t\tinitTemplate: initTemplate\n\t};\n\n};","var eventable = require(\"../../utils/eventable\");\nvar utils = require(\"../../utils/utils\");\nvar timeout = require(\"../../utils/timeout\");\n\nmodule.exports = function(gantt){\n\n\tfunction copyDomEvent(e){\n\t\treturn {\n\t\t\ttarget: e.target || e.srcElement,\n\t\t\tpageX: e.pageX,\n\t\t\tpageY: e.pageY,\n\t\t\tclientX: e.clientX,\n\t\t\tclientY: e.clientY,\n\t\t\tmetaKey: e.metaKey,\n\t\t\tshiftKey: e.shiftKey,\n\t\t\tctrlKey: e.ctrlKey,\n\t\t\taltKey: e.altKey\n\t\t};\n\t}\n\n\tfunction DnD(obj, config) {\n\t\tthis._obj = obj;\n\t\tthis._settings = config || {};\n\t\teventable(this);\n\n\t\tvar inputMethods = this.getInputMethods();\n\n\t\tthis._drag_start_timer = null;\n\t\tgantt.attachEvent(\"onGanttScroll\", utils.bind(function (left, top) {\n\t\t\tthis.clearDragTimer();\n\t\t}, this));\n\n\t\tfor(var i = 0; i < inputMethods.length; i++){\n\t\t\t(utils.bind(function(input){\n\n\t\t\t\tgantt.event(obj, input.down, utils.bind(function (e) {\n\t\t\t\t\tif(!input.accessor(e)){\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._settings.original_target = copyDomEvent(e);\n\n\t\t\t\t\tif (gantt.config.touch) {\n\t\t\t\t\t\tthis.clearDragTimer();\n\n\t\t\t\t\t\tthis._drag_start_timer = setTimeout(utils.bind(function () {\n\t\t\t\t\t\t\tthis.dragStart(obj, e, input);\n\t\t\t\t\t\t}, this), gantt.config.touch_drag);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.dragStart(obj, e, input);\n\t\t\t\t\t}\n\t\t\t\t}, this));\n\n\t\t\t\tgantt.event(document.body, input.up, utils.bind(function (e) {\n\t\t\t\t\tif(!input.accessor(e)){\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis.clearDragTimer();\n\t\t\t\t}, this));\n\n\t\t\t}, this))(inputMethods[i]);\n\t\t}\n\t}\n\n\tDnD.prototype = {\n\t\ttraceDragEvents: function (domElement, inputMethod) {\n\t\t\tvar mousemove = utils.bind(function (e) {\n\t\t\t\treturn this.dragMove(domElement, e, inputMethod.accessor);\n\t\t\t}, this);\n\t\t\tvar scroll = utils.bind(function (e) {\n\t\t\t\treturn this.dragScroll(domElement, e);\n\t\t\t}, this);\n\n\t\t\tvar limited_mousemove = utils.bind(function (e) {\n\t\t\t\tif (e && e.preventDefault) //Cancel default action on DND\n\t\t\t\t\te.preventDefault();\n\t\t\t\t(e || event).cancelBubble = true;\n\t\t\t\tif (utils.defined(this.config.updates_per_second)) {\n\t\t\t\t\tif (!timeout(this, this.config.updates_per_second))\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn mousemove(e);\n\t\t\t}, this);\n\n\t\t\tvar mouseup = utils.bind(function (e) {\n\t\t\t\tgantt.eventRemove(document.body, inputMethod.move, limited_mousemove);\n\t\t\t\tgantt.eventRemove(document.body, inputMethod.up, mouseup);\n\t\t\t\treturn this.dragEnd(domElement);\n\t\t\t}, this);\n\n\n\t\t\tgantt.event(document.body, inputMethod.move, limited_mousemove);\n\t\t\tgantt.event(document.body, inputMethod.up, mouseup);\n\t\t},\n\t\tcheckPositionChange: function (pos) {\n\t\t\tvar diff_x = pos.x - this.config.pos.x;\n\t\t\tvar diff_y = pos.y - this.config.pos.y;\n\t\t\tvar distance = Math.sqrt(Math.pow(Math.abs(diff_x), 2) + Math.pow(Math.abs(diff_y), 2));\n\n\t\t\tif (distance > this.config.sensitivity) {\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tinitDnDMarker: function () {\n\t\t\t// create dnd placeholder and put it in dom\n\t\t\tvar marker = this.config.marker = document.createElement(\"div\");\n\t\t\tmarker.className = \"gantt_drag_marker\";\n\t\t\tmarker.innerHTML = \"Dragging object\";\n\t\t\tdocument.body.appendChild(marker);\n\t\t},\n\t\tbackupEventTarget: function (domEvent, getEvent) {\n\t\t\tif (!gantt.config.touch) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// keep original event target in DOM in order to keep dnd on touchmove event\n\t\t\tvar e = getEvent(domEvent);\n\n\t\t\tvar el = e.target || e.srcElement;\n\t\t\tvar copy = el.cloneNode(true);\n\t\t\t//this.config.target.target = copy;\n\t\t\tthis.config.original_target = copyDomEvent(e);\n\t\t\tthis.config.original_target.target = copy;\n\t\t\tthis.config.backup_element = el;\n\t\t\tel.parentNode.appendChild(copy);\n\n\t\t\tel.style.display = \"none\";\n\t\t\tdocument.body.appendChild(el);\n\t\t},\n\t\tgetInputMethods: function () {\n\t\t\t// bind actions to browser events\n\t\t\tvar inputMethods = [];\n\n\t\t\tinputMethods.push({\n\t\t\t\t\"move\": \"mousemove\",\n\t\t\t\t\"down\": \"mousedown\",\n\t\t\t\t\"up\": \"mouseup\",\n\t\t\t\t\"accessor\": function (e) {\n\t\t\t\t\treturn e;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (gantt.config.touch) {\n\n\t\t\t\tvar touchEventsSupported = true;\n\t\t\t\ttry{\n\t\t\t\t\tdocument.createEvent(\"TouchEvent\");\n\t\t\t\t}catch (e){\n\t\t\t\t\ttouchEventsSupported = false;\n\t\t\t\t}\n\n\t\t\t\tif(touchEventsSupported){\n\t\t\t\t\tinputMethods.push({\n\t\t\t\t\t\t\"move\": \"touchmove\",\n\t\t\t\t\t\t\"down\": \"touchstart\",\n\t\t\t\t\t\t\"up\": \"touchend\",\n\t\t\t\t\t\t\"accessor\": function (ev) {\n\t\t\t\t\t\t\tif (ev.touches && ev.touches.length > 1) return null;\n\t\t\t\t\t\t\tif (ev.touches[0])\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttarget: document.elementFromPoint(ev.touches[0].clientX, ev.touches[0].clientY),\n\t\t\t\t\t\t\t\t\tpageX: ev.touches[0].pageX,\n\t\t\t\t\t\t\t\t\tpageY: ev.touches[0].pageY,\n\t\t\t\t\t\t\t\t\tclientX: ev.touches[0].clientX,\n\t\t\t\t\t\t\t\t\tclientY: ev.touches[0].clientY\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\treturn ev;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}else if(window.navigator.pointerEnabled){\n\t\t\t\t\tinputMethods.push({\n\t\t\t\t\t\t\"move\": \"pointermove\",\n\t\t\t\t\t\t\"down\": \"pointerdown\",\n\t\t\t\t\t\t\"up\": \"pointerup\",\n\t\t\t\t\t\t\"accessor\": function (ev) {\n\t\t\t\t\t\t\tif (ev.pointerType == \"mouse\") return null;\n\t\t\t\t\t\t\treturn ev;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t}else if (window.navigator.msPointerEnabled){\n\t\t\t\t\tinputMethods.push({\n\t\t\t\t\t\t\"move\": \"MSPointerMove\",\n\t\t\t\t\t\t\"down\": \"MSPointerDown\",\n\t\t\t\t\t\t\"up\": \"MSPointerUp\",\n\t\t\t\t\t\t\"accessor\": function (ev) {\n\t\t\t\t\t\t\tif (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\n\t\t\t\t\t\t\treturn ev;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn inputMethods;\n\t\t},\n\t\tclearDragTimer: function () {\n\t\t\tif (this._drag_start_timer) {\n\t\t\t\tclearTimeout(this._drag_start_timer);\n\t\t\t\tthis._drag_start_timer = null;\n\t\t\t}\n\t\t},\n\t\tdragStart: function (obj, e, inputMethod) {\n\t\t\tthis.config = {\n\t\t\t\tobj: obj,\n\t\t\t\tmarker: null,\n\t\t\t\tstarted: false,\n\t\t\t\tpos: this.getPosition(e),\n\t\t\t\tsensitivity: 4\n\t\t\t};\n\t\t\tif (this._settings)\n\t\t\t\tutils.mixin(this.config, this._settings, true);\n\n\n\t\t\tthis.traceDragEvents(obj, inputMethod);\n\n\t\t\tgantt._prevent_touch_scroll = true;\n\t\t\tdocument.body.className += \" gantt_noselect\";\n\n\t\t\tif (gantt.config.touch) {\n\t\t\t\tthis.dragMove(obj, e, inputMethod.accessor);\n\t\t\t}\n\n\t\t},\n\t\tdragMove: function (obj, e, getEvent) {\n\t\t\tvar source = getEvent(e);\n\t\t\tif (!source) return;\n\n\t\t\tif (!this.config.marker && !this.config.started) {\n\t\t\t\tvar pos = this.getPosition(source);\n\n\t\t\t\tif (gantt.config.touch || this.checkPositionChange(pos)) {\n\t\t\t\t\t// real drag starts here,\n\t\t\t\t\t// when user moves mouse at first time after onmousedown\n\t\t\t\t\tthis.config.started = true;\n\t\t\t\t\tthis.config.ignore = false;\n\t\t\t\t\tif (this.callEvent(\"onBeforeDragStart\", [obj, this.config.original_target]) === false) {\n\t\t\t\t\t\tthis.config.ignore = true;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tthis.backupEventTarget(e, getEvent);\n\t\t\t\t\tthis.initDnDMarker();\n\t\t\t\t\tgantt._touch_feedback();\n\t\t\t\t\tthis.callEvent(\"onAfterDragStart\", [obj, this.config.original_target]);\n\t\t\t\t} else {\n\t\t\t\t\tthis.config.ignore = true;\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\tif (!this.config.ignore) {\n\t\t\t\tsource.pos = this.getPosition(source);\n\t\t\t\tthis.config.marker.style.left = source.pos.x + \"px\";\n\t\t\t\tthis.config.marker.style.top = source.pos.y + \"px\";\n\t\t\t\tthis.callEvent(\"onDragMove\", [obj, source]);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\tdragEnd: function (obj) {\n\t\t\tvar target = this.config.backup_element;\n\t\t\tif (target && target.parentNode) {\n\t\t\t\ttarget.parentNode.removeChild(target);\n\t\t\t}\n\t\t\tgantt._prevent_touch_scroll = false;\n\t\t\tif (this.config.marker) {\n\t\t\t\tthis.config.marker.parentNode.removeChild(this.config.marker);\n\t\t\t\tthis.config.marker = null;\n\n\t\t\t\tthis.callEvent(\"onDragEnd\", []);\n\t\t\t}\n\t\t\tdocument.body.className = document.body.className.replace(\" gantt_noselect\", \"\");\n\t\t},\n\n\t\tgetPosition: function (e) {\n\t\t\tvar x = 0, y = 0;\n\t\t\te = e || window.event;\n\t\t\tif (e.pageX || e.pageY) {\n\t\t\t\tx = e.pageX;\n\t\t\t\ty = e.pageY;\n\t\t\t} else if (e.clientX || e.clientY) {\n\t\t\t\tx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;\n\t\t\t\ty = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;\n\t\t\t}\n\t\t\treturn {x: x, y: y};\n\t\t}\n\t};\n\n\treturn DnD;\n};\n","/*\n %d - the day as a number with a leading zero ( 01 to 31 );\n %j - the day as a number without a leading zero ( 1 to 31 );\n %D - the day as an abbreviation ( Sun to Sat );\n %l - the day as a full name ( Sunday to Saturday );\n %W - the ISO-8601 week number of the year. Weeks start on Monday; 1)\n %m - the month as a number without a leading zero ( 1 to 12 );\n %n - the month as a number with a leading zero ( 01 to 12);\n %M - the month as an abbreviation ( Jan to Dec );\n %F - the month as a full name ( January to December );\n %y - the year as a two-digit number ( 00 to 99 );\n %Y - the year as a four-digit number ( 1900–9999 );\n %h - the hour based on the 12-hour clock ( 00 to 11 );\n %H - the hour based on the 24-hour clock ( 00 to 23 );\n %i - the minute as a number with a leading zero ( 00 to 59 );\n %s - the second as a number without a leading zero ( 00 to 59 ); 2)\n %a - displays am (for times from midnight until noon) and pm (for times from noon until midnight);\n %A - displays AM (for times from midnight until noon) and PM (for times from noon until midnight).\n*/\n\nmodule.exports = function(gantt) {\n\tvar dateHelper = {\n\t\tinit: function () {\n\t\t\tvar locale = gantt.locale;\n\n\t\t\tvar s = locale.date.month_short;\n\t\t\tvar t = locale.date.month_short_hash = {};\n\t\t\tfor (var i = 0; i < s.length; i++)\n\t\t\t\tt[s[i]] = i;\n\n\t\t\tvar s = locale.date.month_full;\n\t\t\tvar t = locale.date.month_full_hash = {};\n\t\t\tfor (var i = 0; i < s.length; i++)\n\t\t\t\tt[s[i]] = i;\n\t\t},\n\t\tdate_part: function (date) {\n\t\t\tvar old = new Date(date);\n\t\t\tdate.setHours(0);\n\t\t\tthis.hour_start(date);\n\t\t\tif (date.getHours() && //shift to yesterday on dst\n\t\t\t\t(date.getDate() < old.getDate() || date.getMonth() < old.getMonth() || date.getFullYear() < old.getFullYear()))\n\t\t\t\tdate.setTime(date.getTime() + 60 * 60 * 1000 * (24 - date.getHours()));\n\t\t\treturn date;\n\t\t},\n\t\ttime_part: function (date) {\n\t\t\treturn (date.valueOf() / 1000 - date.getTimezoneOffset() * 60) % 86400;\n\t\t},\n\t\tweek_start: function (date) {\n\t\t\tvar shift = date.getDay();\n\t\t\tif (gantt.config.start_on_monday) {\n\t\t\t\tif (shift === 0) shift = 6;\n\t\t\t\telse shift--;\n\t\t\t}\n\t\t\treturn this.date_part(this.add(date, -1 * shift, \"day\"));\n\t\t},\n\t\tmonth_start: function (date) {\n\t\t\tdate.setDate(1);\n\t\t\treturn this.date_part(date);\n\t\t},\n\t\tquarter_start: function (date) {\n\t\t\tthis.month_start(date);\n\t\t\tvar m = date.getMonth(),\n\t\t\t\tres_month;\n\n\t\t\tif (m >= 9) {\n\t\t\t\tres_month = 9;\n\t\t\t} else if (m >= 6) {\n\t\t\t\tres_month = 6;\n\t\t\t} else if (m >= 3) {\n\t\t\t\tres_month = 3;\n\t\t\t} else {\n\t\t\t\tres_month = 0;\n\t\t\t}\n\n\t\t\tdate.setMonth(res_month);\n\t\t\treturn date;\n\t\t},\n\t\tyear_start: function (date) {\n\t\t\tdate.setMonth(0);\n\t\t\treturn this.month_start(date);\n\t\t},\n\t\tday_start: function (date) {\n\t\t\treturn this.date_part(date);\n\t\t},\n\t\thour_start: function (date) {\n\t\t\tif (date.getMinutes())\n\t\t\t\tdate.setMinutes(0);\n\t\t\tthis.minute_start(date);\n\n\t\t\treturn date;\n\t\t},\n\t\tminute_start: function (date) {\n\t\t\tif (date.getSeconds())\n\t\t\t\tdate.setSeconds(0);\n\t\t\tif (date.getMilliseconds())\n\t\t\t\tdate.setMilliseconds(0);\n\t\t\treturn date;\n\t\t},\n\t\t_add_days: function (date, inc) {\n\t\t\tvar ndate = new Date(date.valueOf());\n\n\t\t\tndate.setDate(ndate.getDate() + inc);\n\t\t\tif (inc >= 0 && (!date.getHours() && ndate.getHours()) &&//shift to yesterday on dst\n\t\t\t\t(ndate.getDate() <= date.getDate() || ndate.getMonth() < date.getMonth() || ndate.getFullYear() < date.getFullYear()))\n\t\t\t\tndate.setTime(ndate.getTime() + 60 * 60 * 1000 * (24 - ndate.getHours()));\n\t\t\treturn ndate;\n\t\t},\n\n\t\tadd: function (date, inc, mode) {\n\t\t\t/*jsl:ignore*/\n\t\t\tvar ndate = new Date(date.valueOf());\n\t\t\tswitch (mode) {\n\t\t\t\tcase \"day\":\n\t\t\t\t\tndate = this._add_days(ndate, inc);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"week\":\n\t\t\t\t\tndate = this._add_days(ndate, inc * 7);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"month\":\n\t\t\t\t\tndate.setMonth(ndate.getMonth() + inc);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"year\":\n\t\t\t\t\tndate.setYear(ndate.getFullYear() + inc);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"hour\":\n\t\t\t\t\t/*\n\t\t\t\t\t\tadding hours/minutes via setHour(getHour() + inc) gives weird result when\n\t\t\t\t\t\tadding one hour to the time before switch to a Daylight Saving time\n\n\t\t\t\t\t\texample: //Sun Mar 30 2014 01:00:00 GMT+0100 (W. Europe Standard Time)\n\t\t\t\t\t\tnew Date(2014, 02, 30, 1).setHours(2)\n\t\t\t\t\t\t>>Sun Mar 30 2014 01:00:00 GMT+0100 (W. Europe Standard Time)\n\n\t\t\t\t\t\tsetTime seems working as expected\n\t\t\t\t\t */\n\t\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 60 * 1000);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"minute\":\n\n\t\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 1000);\n\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\treturn this[\"add_\" + mode](date, inc, mode);\n\t\t\t}\n\t\t\treturn ndate;\n\t\t\t/*jsl:end*/\n\t\t},\n\t\tadd_quarter: function (date, inc) {\n\t\t\treturn this.add(date, inc * 3, \"month\");\n\t\t},\n\n\t\tto_fixed: function (num) {\n\t\t\tif (num < 10) return \"0\" + num;\n\t\t\treturn num;\n\t\t},\n\t\tcopy: function (date) {\n\t\t\treturn new Date(date.valueOf());\n\t\t},\n\t\tdate_to_str: function (format, utc) {\n\t\t\tformat = format.replace(/%[a-zA-Z]/g, function (a) {\n\t\t\t\tswitch (a) {\n\t\t\t\t\tcase \"%d\":\n\t\t\t\t\t\treturn \"\\\"+to_fixed(date.getDate())+\\\"\";\n\t\t\t\t\tcase \"%m\":\n\t\t\t\t\t\treturn \"\\\"+to_fixed((date.getMonth()+1))+\\\"\";\n\t\t\t\t\tcase \"%j\":\n\t\t\t\t\t\treturn \"\\\"+date.getDate()+\\\"\";\n\t\t\t\t\tcase \"%n\":\n\t\t\t\t\t\treturn \"\\\"+(date.getMonth()+1)+\\\"\";\n\t\t\t\t\tcase \"%y\":\n\t\t\t\t\t\treturn \"\\\"+to_fixed(date.getFullYear()%100)+\\\"\";\n\t\t\t\t\tcase \"%Y\":\n\t\t\t\t\t\treturn \"\\\"+date.getFullYear()+\\\"\";\n\t\t\t\t\tcase \"%D\":\n\t\t\t\t\t\treturn \"\\\"+locale.date.day_short[date.getDay()]+\\\"\";\n\t\t\t\t\tcase \"%l\":\n\t\t\t\t\t\treturn \"\\\"+locale.date.day_full[date.getDay()]+\\\"\";\n\t\t\t\t\tcase \"%M\":\n\t\t\t\t\t\treturn \"\\\"+locale.date.month_short[date.getMonth()]+\\\"\";\n\t\t\t\t\tcase \"%F\":\n\t\t\t\t\t\treturn \"\\\"+locale.date.month_full[date.getMonth()]+\\\"\";\n\t\t\t\t\tcase \"%h\":\n\t\t\t\t\t\treturn \"\\\"+to_fixed((date.getHours()+11)%12+1)+\\\"\";\n\t\t\t\t\tcase \"%g\":\n\t\t\t\t\t\treturn \"\\\"+((date.getHours()+11)%12+1)+\\\"\";\n\t\t\t\t\tcase \"%G\":\n\t\t\t\t\t\treturn \"\\\"+date.getHours()+\\\"\";\n\t\t\t\t\tcase \"%H\":\n\t\t\t\t\t\treturn \"\\\"+to_fixed(date.getHours())+\\\"\";\n\t\t\t\t\tcase \"%i\":\n\t\t\t\t\t\treturn \"\\\"+to_fixed(date.getMinutes())+\\\"\";\n\t\t\t\t\tcase \"%a\":\n\t\t\t\t\t\treturn \"\\\"+(date.getHours()>11?\\\"pm\\\":\\\"am\\\")+\\\"\";\n\t\t\t\t\tcase \"%A\":\n\t\t\t\t\t\treturn \"\\\"+(date.getHours()>11?\\\"PM\\\":\\\"AM\\\")+\\\"\";\n\t\t\t\t\tcase \"%s\":\n\t\t\t\t\t\treturn \"\\\"+to_fixed(date.getSeconds())+\\\"\";\n\t\t\t\t\tcase \"%W\":\n\t\t\t\t\t\treturn \"\\\"+to_fixed(getISOWeek(date))+\\\"\";\n\t\t\t\t\tcase \"%w\":\n\t\t\t\t\t\treturn \"\\\"+to_fixed(getWeek(date))+\\\"\";\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn a;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (utc) format = format.replace(/date\\.get/g, \"date.getUTC\");\n\t\t\tvar dateToStr = new Function(\"date\", \"to_fixed\", \"locale\", \"getISOWeek\", \"getWeek\", \"return \\\"\" + format + \"\\\";\");\n\n\t\t\treturn function (date) {\n\t\t\t\treturn dateToStr(date, dateHelper.to_fixed, gantt.locale, dateHelper.getISOWeek, dateHelper.getWeek);\n\t\t\t};\n\t\t},\n\t\tstr_to_date: function (format, utc) {\n\t\t\tvar splt = \"var temp=date.match(/[a-zA-Z]+|[0-9]+/g);\";\n\t\t\tvar mask = format.match(/%[a-zA-Z]/g);\n\t\t\tfor (var i = 0; i < mask.length; i++) {\n\t\t\t\tswitch (mask[i]) {\n\t\t\t\t\tcase \"%j\":\n\t\t\t\t\tcase \"%d\":\n\t\t\t\t\t\tsplt += \"set[2]=temp[\" + i + \"]||1;\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"%n\":\n\t\t\t\t\tcase \"%m\":\n\t\t\t\t\t\tsplt += \"set[1]=(temp[\" + i + \"]||1)-1;\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"%y\":\n\t\t\t\t\t\tsplt += \"set[0]=temp[\" + i + \"]*1+(temp[\" + i + \"]>50?1900:2000);\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"%g\":\n\t\t\t\t\tcase \"%G\":\n\t\t\t\t\tcase \"%h\":\n\t\t\t\t\tcase \"%H\":\n\t\t\t\t\t\tsplt += \"set[3]=temp[\" + i + \"]||0;\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"%i\":\n\t\t\t\t\t\tsplt += \"set[4]=temp[\" + i + \"]||0;\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"%Y\":\n\t\t\t\t\t\tsplt += \"set[0]=temp[\" + i + \"]||0;\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"%a\":\n\t\t\t\t\tcase \"%A\":\n\t\t\t\t\t\tsplt += \"set[3]=set[3]%12+((temp[\" + i + \"]||'').toLowerCase()=='am'?0:12);\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"%s\":\n\t\t\t\t\t\tsplt += \"set[5]=temp[\" + i + \"]||0;\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"%M\":\n\t\t\t\t\t\tsplt += \"set[1]=locale.date.month_short_hash[temp[\" + i + \"]]||0;\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"%F\":\n\t\t\t\t\t\tsplt += \"set[1]=locale.date.month_full_hash[temp[\" + i + \"]]||0;\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar code = \"set[0],set[1],set[2],set[3],set[4],set[5]\";\n\t\t\tif (utc) code = \" Date.UTC(\" + code + \")\";\n\t\t\tvar strToDate = new Function(\"date\", \"locale\", \"var set=[0,0,1,0,0,0]; \" + splt + \" return new Date(\" + code + \");\");\n\n\t\t\treturn function (dateString) {\n\t\t\t\treturn strToDate(dateString, gantt.locale);\n\t\t\t};\n\t\t},\n\t\tgetISOWeek: function (ndate) {\n\t\t\treturn gantt.date._getWeekNumber(ndate, true);\n\t\t},\n\t\t_getWeekNumber: function(ndate, isoWeek){\n\t\t\tif (!ndate) return false;\n\t\t\tvar nday = ndate.getDay();\n\t\t\tif(isoWeek){\n\t\t\t\tif (nday === 0) {\n\t\t\t\t\tnday = 7;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar first_thursday = new Date(ndate.valueOf());\n\t\t\tfirst_thursday.setDate(ndate.getDate() + (4 - nday));\n\t\t\tvar year_number = first_thursday.getFullYear(); // year of the first Thursday\n\t\t\tvar ordinal_date = Math.round((first_thursday.getTime() - new Date(year_number, 0, 1).getTime()) / 86400000); //ordinal date of the first Thursday - 1 (so not really ordinal date)\n\t\t\tvar week_number = 1 + Math.floor(ordinal_date / 7);\n\t\t\treturn week_number;\n\t\t},\n\n\t\tgetWeek: function(ndate){\n\t\t\treturn gantt.date._getWeekNumber(ndate, gantt.config.start_on_monday);\n\t\t},\n\t\tgetUTCISOWeek: function (ndate) {\n\t\t\treturn gantt.date.getISOWeek(ndate);\n\t\t},\n\t\tconvert_to_utc: function (date) {\n\t\t\treturn new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());\n\t\t},\n\t\tparseDate: function (date, format) {\n\t\t\t// raw date may be of type string, number (timestamp) or something else\n\t\t\t// do not check for instanceof Date explicitly, since we may swap native date with different date implementation at some point\n\t\t\tif (date && !date.getFullYear) {\n\t\t\t\tif (gantt.defined(format)) {\n\t\t\t\t\tif (typeof(format) == \"string\")\n\t\t\t\t\t\tformat = gantt.defined(gantt.templates[format]) ? gantt.templates[format] : gantt.date.str_to_date(format);\n\t\t\t\t\telse\n\t\t\t\t\t\tformat = gantt.templates.xml_date;\n\t\t\t\t}\n\t\t\t\tif (date)\n\t\t\t\t\tdate = format(date);\n\t\t\t\telse\n\t\t\t\t\tdate = null;\n\t\t\t}\n\t\t\treturn date;\n\t\t}\n\t};\n\treturn dateHelper;\n};","var env = require(\"../../utils/env\");\n\nmodule.exports = function(gantt){\n\treturn {\n\n\t\t// if false - dhxr param will added to prevent caching on client side (default),\n\t\t// if true - do not add extra params\n\t\tcache: true,\n\n\t\t// default method for load/loadStruct, post/get allowed\n\t\t// get - since 4.1.1, this should fix 412 error for macos safari\n\t\tmethod: \"get\",\n\n\t\tparse: function(data) {\n\t\t\tif (typeof data !== \"string\") return data;\n\n\t\t\tvar obj;\n\t\t\tdata = data.replace(/^[\\s]+/,\"\");\n\t\t\tif (window.DOMParser && !env.isIE) { // ff,ie9\n\t\t\t\tobj = (new window.DOMParser()).parseFromString(data, \"text/xml\");\n\t\t\t} else if (window.ActiveXObject !== window.undefined) {\n\t\t\t\tobj = new window.ActiveXObject(\"Microsoft.XMLDOM\");\n\t\t\t\tobj.async = \"false\";\n\t\t\t\tobj.loadXML(data);\n\t\t\t}\n\t\t\treturn obj;\n\t\t},\n\t\txmltop: function(tagname, xhr, obj) {\n\t\t\tif (typeof xhr.status == \"undefined\" || xhr.status < 400) {\n\t\t\t\tvar xml = (!xhr.responseXML) ? this.parse(xhr.responseText || xhr) : (xhr.responseXML || xhr);\n\t\t\t\tif (xml && xml.documentElement !== null && !xml.getElementsByTagName(\"parsererror\").length) {\n\t\t\t\t\treturn xml.getElementsByTagName(tagname)[0];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (obj !== -1) gantt.callEvent(\"onLoadXMLError\",[\"Incorrect XML\", arguments[1], obj]);\n\t\t\treturn document.createElement(\"DIV\");\n\t\t},\n\t\txpath: function(xpathExp, docObj) {\n\t\t\tif (!docObj.nodeName) docObj = docObj.responseXML || docObj;\n\t\t\tif (env.isIE) {\n\t\t\t\treturn docObj.selectNodes(xpathExp)||[];\n\t\t\t} else {\n\t\t\t\tvar rows = [];\n\t\t\t\tvar first;\n\t\t\t\tvar col = (docObj.ownerDocument||docObj).evaluate(xpathExp, docObj, null, XPathResult.ANY_TYPE, null);\n\n\t\t\t\twhile (true){\n\t\t\t\t\tfirst = col.iterateNext();\n\t\t\t\t\tif(first){\n\t\t\t\t\t\trows.push(first);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn rows;\n\t\t\t}\n\t\t},\n\t\tquery: function(config) {\n\t\t\tthis._call(\n\t\t\t\t(config.method || \"GET\"),\n\t\t\t\tconfig.url,\n\t\t\t\tconfig.data || \"\",\n\t\t\t\t(config.async || true),\n\t\t\t\tconfig.callback,\n\t\t\t\tnull,\n\t\t\t\tconfig.headers\n\t\t\t);\n\t\t},\n\t\tget: function(url, onLoad) {\n\t\t\tthis._call(\"GET\", url, null, true, onLoad);\n\t\t},\n\t\tgetSync: function(url) {\n\t\t\treturn this._call(\"GET\", url, null, false);\n\t\t},\n\t\tput: function(url, postData, onLoad) {\n\t\t\tthis._call(\"PUT\", url, postData, true, onLoad);\n\t\t},\n\t\tdel: function(url, postData, onLoad) {\n\t\t\tthis._call(\"DELETE\", url, postData, true, onLoad);\n\t\t},\n\t\tpost: function(url, postData, onLoad) {\n\t\t\tif (arguments.length == 1) {\n\t\t\t\tpostData = \"\";\n\t\t\t} else if (arguments.length == 2 && (typeof(postData) == \"function\" || typeof(window[postData]) == \"function\")) {\n\t\t\t\tonLoad = postData;\n\t\t\t\tpostData = \"\";\n\t\t\t} else {\n\t\t\t\tpostData = String(postData);\n\t\t\t}\n\t\t\tthis._call(\"POST\", url, postData, true, onLoad);\n\t\t},\n\t\tpostSync: function(url, postData) {\n\t\t\tpostData = (postData === null ? \"\" : String(postData));\n\t\t\treturn this._call(\"POST\", url, postData, false);\n\t\t},\n\t\tgetLong: function(url, onLoad) {\n\t\t\tthis._call(\"GET\", url, null, true, onLoad, {url:url});\n\t\t},\n\t\tpostLong: function(url, postData, onLoad) {\n\t\t\tif (arguments.length == 2 && (typeof(postData) == \"function\" || typeof(window[postData]))) {\n\t\t\t\tonLoad = postData;\n\t\t\t\tpostData = \"\";\n\t\t\t}\n\t\t\tthis._call(\"POST\", url, postData, true, onLoad, {url:url, postData:postData});\n\t\t},\n\t\t_call: function(method, url, postData, async, onLoad, longParams, headers) {\n\n\t\t\tvar t = (window.XMLHttpRequest && !env.isIE ? new XMLHttpRequest() : new ActiveXObject(\"Microsoft.XMLHTTP\"));\n\t\t\tvar isQt = (navigator.userAgent.match(/AppleWebKit/) !== null && navigator.userAgent.match(/Qt/) !== null && navigator.userAgent.match(/Safari/) !== null);\n\n\t\t\tif (!!async) {\n\t\t\t\tt.onreadystatechange = function() {\n\t\t\t\t\tif ((t.readyState == 4) || (isQt && t.readyState == 3)) { // what for long response and status 404?\n\t\t\t\t\t\tif (t.status != 200 || t.responseText === \"\")\n\t\t\t\t\t\t\tif (!gantt.callEvent(\"onAjaxError\", [t])) return;\n\n\t\t\t\t\t\twindow.setTimeout(function(){\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\n\t\t\t\t\t\t\t\tonLoad.apply(window, [{xmlDoc:t, filePath:url}]); // dhtmlx-compat, response.xmlDoc.responseXML/responseText\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (longParams) {\n\t\t\t\t\t\t\t\tif (typeof(longParams.postData) != \"undefined\") {\n\t\t\t\t\t\t\t\t\tthis.postLong(longParams.url, longParams.postData, onLoad);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tthis.getLong(longParams.url, onLoad);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonLoad = null;\n\t\t\t\t\t\t\tt = null;\n\t\t\t\t\t\t},1);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (method == \"GET\" && !this.cache) {\n\t\t\t\turl += (url.indexOf(\"?\")>=0?\"&\":\"?\")+\"dhxr\"+new Date().getTime()+\"=1\";\n\t\t\t}\n\n\t\t\tt.open(method, url, async);\n\n\t\t\tif (headers){\n\t\t\t\tfor (var key in headers)\n\t\t\t\t\tt.setRequestHeader(key, headers[key]);\n\t\t\t} else if (method.toUpperCase() == \"POST\" || method == \"PUT\" || method == \"DELETE\") {\n\t\t\t\tt.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\n\t\t\t} else if (method == \"GET\") {\n\t\t\t\tpostData = null;\n\t\t\t}\n\n\t\t\tt.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n\n\t\t\tt.send(postData);\n\n\t\t\tif (!async) return {xmlDoc:t, filePath:url}; // dhtmlx-compat, response.xmlDoc.responseXML/responseText\n\n\t\t},\n\t\turlSeparator: function(str){\n\t\t\tif (str.indexOf(\"?\") != -1)\n\t\t\t\treturn \"&\";\n\t\t\telse\n\t\t\t\treturn \"?\";\n\t\t}\n\t};\n};\n","module.exports = function() {\n\treturn {\n\t\tlayout: {\n\t\t\tcss: \"gantt_container\",\n\t\t\trows: [\n\t\t\t\t{\n\t\t\t\t\tcols: [\n\t\t\t\t\t\t{view: \"grid\", scrollX: \"scrollHor\", scrollY: \"scrollVer\"},\n\t\t\t\t\t\t{resizer: true, width: 1},\n\t\t\t\t\t\t{view: \"timeline\", scrollX: \"scrollHor\", scrollY: \"scrollVer\"},\n\t\t\t\t\t\t{view: \"scrollbar\", id: \"scrollVer\"}\n\t\t\t\t\t]\n\n\t\t\t\t},\n\t\t\t\t{view: \"scrollbar\", id: \"scrollHor\", height: 20}\n\t\t\t]\n\t\t},\n\t\tlinks: {\n\t\t\t\"finish_to_start\": \"0\",\n\t\t\t\"start_to_start\": \"1\",\n\t\t\t\"finish_to_finish\": \"2\",\n\t\t\t\"start_to_finish\": \"3\"\n\t\t},\n\t\ttypes: {\n\t\t\t'task': 'task',\n\t\t\t'project': 'project',\n\t\t\t'milestone': 'milestone'\n\t\t},\n\t\tauto_types: false,\n\t\tduration_unit: \"day\",\n\t\twork_time: false,\n\t\tcorrect_work_time: false,\n\t\tskip_off_time: false,\n\n\t\tcascade_delete: true,\n\n\t\tautosize: false,\n\t\tautosize_min_width: 0,\n\t\tautoscroll: true,\n\t\tautoscroll_speed: 30,\n\n\t\tshow_links: true,\n\t\tshow_task_cells: true,\n\t\t// replace backgroung of the task area with a canvas img\n\t\tstatic_background: false,\n\t\tbranch_loading: false,\n\t\tbranch_loading_property: \"$has_child\",\n\t\tshow_loading: false,\n\t\tshow_chart: true,\n\t\tshow_grid: true,\n\t\tmin_duration: 60 * 60 * 1000,\n\t\txml_date: \"%d-%m-%Y %H:%i\",\n\t\tapi_date: \"%d-%m-%Y %H:%i\",\n\t\tstart_on_monday: true,\n\t\tserver_utc: false,\n\t\tshow_progress: true,\n\t\tfit_tasks: false,\n\t\tselect_task: true,\n\t\tscroll_on_click: true,\n\t\tpreserve_scroll: true,\n\t\treadonly: false,\n\n\t\t/*grid */\n\t\tdate_grid: \"%Y-%m-%d\",\n\n\t\tdrag_links: true,\n\t\tdrag_progress: true,\n\t\tdrag_resize: true,\n\t\tdrag_project: false,\n\t\tdrag_move: true,\n\t\tdrag_mode: {\n\t\t\t\"resize\": \"resize\",\n\t\t\t\"progress\": \"progress\",\n\t\t\t\"move\": \"move\",\n\t\t\t\"ignore\": \"ignore\"\n\t\t},\n\t\tround_dnd_dates: true,\n\t\tlink_wrapper_width: 20,\n\t\troot_id: 0,\n\n\t\tautofit: false, // grid column automatic fit grid_width config\n\t\tcolumns: [\n\t\t\t{name: \"text\", tree: true, width: '*', resize: true},\n\t\t\t{name: \"start_date\", align: \"center\", resize: true},\n\t\t\t{name: \"duration\", align: \"center\"},\n\t\t\t{name: \"add\", width: 44}\n\t\t],\n\n\t\t/*scale*/\n\t\tstep: 1,\n\t\tscale_unit: \"day\",\n\t\tscale_offset_minimal: true,\n\t\tsubscales: [],\n\n\t\tinherit_scale_class: false,\n\n\t\ttime_step: 60,\n\t\tduration_step: 1,\n\t\tdate_scale: \"%d %M\",\n\t\ttask_date: \"%d %F %Y\",\n\t\ttime_picker: \"%H:%i\",\n\t\ttask_attribute: \"task_id\",\n\t\tlink_attribute: \"link_id\",\n\t\tlayer_attribute: \"data-layer\",\n\t\tbuttons_left: [\n\t\t\t\"gantt_save_btn\",\n\t\t\t\"gantt_cancel_btn\"\n\t\t],\n\t\t_migrate_buttons: {\n\t\t\t\"dhx_save_btn\": \"gantt_save_btn\",\n\t\t\t\"dhx_cancel_btn\": \"gantt_cancel_btn\",\n\t\t\t\"dhx_delete_btn\": \"gantt_delete_btn\"\n\t\t},\n\t\tbuttons_right: [\n\t\t\t\"gantt_delete_btn\"\n\t\t],\n\t\tlightbox: {\n\t\t\tsections: [\n\t\t\t\t{name: \"description\", height: 70, map_to: \"text\", type: \"textarea\", focus: true},\n\t\t\t\t{name: \"time\", type: \"duration\", map_to: \"auto\"}\n\t\t\t],\n\t\t\tproject_sections: [\n\t\t\t\t{name: \"description\", height: 70, map_to: \"text\", type: \"textarea\", focus: true},\n\t\t\t\t{name: \"type\", type: \"typeselect\", map_to: \"type\"},\n\t\t\t\t{name: \"time\", type: \"duration\", readonly: true, map_to: \"auto\"}\n\t\t\t],\n\t\t\tmilestone_sections: [\n\t\t\t\t{name: \"description\", height: 70, map_to: \"text\", type: \"textarea\", focus: true},\n\t\t\t\t{name: \"type\", type: \"typeselect\", map_to: \"type\"},\n\t\t\t\t{name: \"time\", type: \"duration\", single_date: true, map_to: \"auto\"}\n\t\t\t]\n\t\t},\n\t\tdrag_lightbox: true,\n\t\tsort: false,\n\t\tdetails_on_create: true,\n\t\tdetails_on_dblclick: true,\n\t\tinitial_scroll: true,\n\t\ttask_scroll_offset: 100,\n\n\t\torder_branch: false,\n\t\torder_branch_free: false,\n\n\t\ttask_height: \"full\",//number px of 'full' for row height\n\t\tmin_column_width: 70,\n\n\t\t// min width for grid column (when resizing)\n\t\tmin_grid_column_width: 70,\n\t\t// name of the attribute with column index for resize element\n\t\tgrid_resizer_column_attribute: \"column_index\",\n\t\t// name of the attribute with column index for resize element\n\t\tgrid_resizer_attribute: \"grid_resizer\",\n\n\t\t// grid width can be increased after the column has been resized\n\t\tkeep_grid_width: false,\n\n\t\t// grid width can be adjusted\n\t\tgrid_resize: false,\n\n\t\tshow_unscheduled: true,\n\n\t\t//\n\t\treadonly_property: \"readonly\",\n\t\teditable_property: \"editable\",\n\t\tcalendar_property: \"calendar_id\",\n\t\tresource_calendars: {},\n\n\t\ttype_renderers: {},\n\n\t\topen_tree_initially: false,\n\t\toptimize_render: true,\n\t\tprevent_default_scroll: false,\n\t\tshow_errors: true,\n\t\twai_aria_attributes: true,\n\t\tsmart_scales: true,\n\t\trtl:false,\n\t\tplaceholder_task: false\n\t};\n};\n","module.exports = function(){\n\tvar services = {};\n\tfunction register (name, getter){\n\t\tservices[name] = getter;\n\t}\n\n\tfunction getService(name){\n\t\tif(!services[name]){\n\t\t\treturn null;\n\t\t}\n\t\treturn services[name]();\n\t}\n\n\tvar servicesEnum = {\n\t\t\"config\": \"config\",\n\t\t\"templates\": \"templates\",\n\t\t\"locale\": \"locale\"\n\t};\n\n\treturn {\n\t\tservices: servicesEnum,\n\t\tsetService: register,\n\t\tgetService: getService,\n\t\tconfig: function(){\n\t\t\treturn this.getService(\"config\");\n\t\t},\n\t\ttemplates: function(){\n\t\t\treturn this.getService(\"templates\");\n\t\t},\n\t\tlocale: function(){\n\t\t\treturn this.getService(\"locale\");\n\t\t},\n\t\tdestructor: function(){\n\t\t\tfor(var i in services){\n\t\t\t\tif(services[i]){\n\t\t\t\t\tvar service = services[i];\n\t\t\t\t\tif(service && service.destructor){\n\t\t\t\t\t\tservice.destructor();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tservices = null;\n\t\t}\n\t};\n};\n","module.exports = function(gantt){\n\tgantt.$inject = function(module){\n\t\treturn module(this.$services);\n\t};\n};","module.exports = {\n\tKEY_CODES: {\n\t\tUP: 38,\n\t\tDOWN: 40,\n\t\tLEFT: 37,\n\t\tRIGHT: 39,\n\t\tSPACE: 32,\n\t\tENTER: 13,\n\t\tDELETE: 46,\n\t\tESC: 27,\n\t\tTAB: 9\n\t}\n};","require(\"css/skins/terrace.less\");\n\nfunction DHXGantt(){\n\tthis.constants = require(\"./../constants\");\n\tthis.version = VERSION;\n\tthis.templates = {};\n\tthis.ext = {};\n\tthis.keys = {\n\t\tedit_save: this.constants.KEY_CODES.ENTER,\n\t\tedit_cancel: this.constants.KEY_CODES.ESC\n\t};\n}\n\nmodule.exports = function() {\n\t// use a named constructor to make gantt instance discoverable in heap snapshots\n\tvar gantt = new DHXGantt();\n\n\trequire(\"./common/import\")(gantt);\n\n\tgantt.$services = gantt.$inject(require(\"./common/services\"));\n\tgantt.config = gantt.$inject(require(\"./common/config\"));\n\tgantt.ajax = require(\"./common/ajax\")(gantt);\n\tgantt.date = require(\"./common/date\")(gantt);\n\tvar dnd = require(\"./common/dnd\")(gantt);\n\tgantt.$services.setService(\"dnd\", function(){return dnd;});\n\n\tgantt.$services.setService(\"config\", function () {\n\t\treturn gantt.config;\n\t});\n\tgantt.$services.setService(\"date\", function () {\n\t\treturn gantt.date;\n\t});\n\tgantt.$services.setService(\"locale\", function () {\n\t\treturn gantt.locale;\n\t});\n\tgantt.$services.setService(\"templates\", function () {\n\t\treturn gantt.templates;\n\t});\n\n\tvar templatesLoader = require(\"./common/templates\")(gantt);\n\tgantt.$services.setService(\"templateLoader\", function () {\n\t\treturn templatesLoader;\n\t});\n\n\tvar eventable = require(\"../utils/eventable\");\n\teventable(gantt);\n\n\tvar StateService = require(\"./common/state\");\n\tvar stateService = new StateService();\n\n\tstateService.registerProvider(\"global\", function () {\n\t\treturn {\n\t\t\tmin_date: gantt._min_date,\n\t\t\tmax_date: gantt._max_date,\n\t\t\tselected_task: gantt.$data.tasksStore.getSelectedId()\n\t\t};\n\t});\n\tgantt.getState = stateService.getState;\n\tgantt.$services.setService(\"state\", function () {\n\t\treturn stateService;\n\t});\n\n\tvar utils = require(\"../utils/utils\");\n\tutils.mixin(gantt, utils);\n\tgantt.env = require(\"../utils/env\");\n\n\tvar domEvents = require(\"../utils/dom_event_scope\")();\n\tgantt.event = domEvents.attach;\n\tgantt.eventRemove = domEvents.detach;\n\tgantt._eventRemoveAll = domEvents.detachAll;\n\tgantt._createDomEventScope = domEvents.extend;\n\n\tutils.mixin(gantt, require(\"./message\")(gantt));\n\tvar uiApi = require(\"./ui/index\").init(gantt);\n\tgantt.$ui = uiApi.factory;\n\tgantt.$ui.layers = uiApi.render;\n\tgantt.$mouseEvents = uiApi.mouseEvents;\n\tgantt.$services.setService(\"mouseEvents\", function () {\n\t\treturn gantt.$mouseEvents;\n\t});\n\tgantt.mixin(gantt, uiApi.layersApi);\n\n\trequire(\"./data_task_layers\")(gantt);\n\n\tgantt.$services.setService(\"layers\", function () {\n\t\treturn uiApi.layersService;\n\t});\n\n\tvar createLayoutFacade = require(\"./facades/layout\");\n\tgantt.mixin(gantt, createLayoutFacade());\n\n\trequire(\"./datastore/datastore_hooks\")(gantt);\n\n\trequire(\"./dataprocessor/hooks\")(gantt);\n\trequire(\"./plugins\")(gantt);\n\n\trequire(\"./dynamic_loading\")(gantt);\n\trequire(\"./grid_column_api\")(gantt);\n\trequire(\"./wai_aria\")(gantt);\n\trequire(\"./tasks\")(gantt);\n\trequire(\"./load\")(gantt);\n\trequire(\"./worktime/work_time\")(gantt);\n\trequire(\"./data\")(gantt);\n\trequire(\"./lightbox\")(gantt);\n\trequire(\"./lightbox_optional_time\")(gantt);\n\trequire(\"./data_task_types\")(gantt);\n\trequire(\"./cached_functions\")(gantt);\n\trequire(\"./skin\")(gantt);\n\trequire(\"../css/skins/skyblue\")(gantt);\n\trequire(\"../css/skins/meadow\")(gantt);\n\trequire(\"../css/skins/terrace\")(gantt);\n\trequire(\"../css/skins/broadway\")(gantt);\n\trequire(\"../css/skins/material\")(gantt);\n\trequire(\"../css/skins/contrast_black\")(gantt);\n\trequire(\"../css/skins/contrast_white\")(gantt);\n\trequire(\"./touch\")(gantt);\n\trequire(\"../locale/locale\")(gantt);\n\trequire(\"./gantt_core\")(gantt);\n\trequire(\"./destructor\")(gantt);\n\n\treturn gantt;\n};","module.exports = function(gantt){\n\n\tfunction deprecated(badCode, goodCode) {\n\n\t\tvar formatting = gantt.env.isIE ? \"\" : \"%c\";\n\n\n\t\tvar message = [\n\t\t\tformatting, \"\\\"\", badCode, \"\\\"\", formatting,\n\t\t\t\" has been deprecated in dhtmlxGantt v4.0 and will stop working in v6.0. Use \",\n\t\t\tformatting, \"\\\"\", goodCode, \"\\\"\", formatting,\n\t\t\t\" instead. \\nSee more details at http://docs.dhtmlx.com/gantt/migrating.html \"\n\t\t].join(\"\");\n\n\t\tvar log = window.console.warn || window.console.log;\n\n\t\tvar args = [message];\n\t\tif(!gantt.env.isIE){\n\t\t\targs = args.concat([\"font-weight:bold\", \"font-weight:normal\", \"font-weight:bold\", \"font-weight:normal\"]);\n\t\t}\n\n\t\tlog.apply(window.console, args);\n\t}\n\n\tfunction wrapDeprecated(method) {\n\t\treturn function () {\n\t\t\tdeprecated(\"dhtmlx.\" + method, \"gantt.\" + method);\n\t\t\treturn gantt[method].apply(gantt, arguments);\n\t\t};\n\t}\n\n\t/* dhtmlx */\n\n\n\tif (!window.dhtmlx)\n\t\twindow.dhtmlx = {};\n\n\tvar dhtmlxMethods = [\n\t\t\"message\",\n\t\t\"alert\",\n\t\t\"confirm\",\n\t\t\"modalbox\",\n\t\t\"uid\",\n\t\t\"copy\",\n\t\t\"mixin\",\n\t\t\"defined\",\n\t\t\"bind\",\n\t\t\"assert\"\n\t];\n\n\tvar dynMethods = [];\n\n\tfor(var i = 0; i < dhtmlxMethods.length; i++){\n\t\t// wrap dhtmlx methods with 'deprecated' warnings\n\t\t// do not wrap if methods are defined by dhtmlxSuite\n\t\tif(!window.dhtmlx[dhtmlxMethods[i]]){\n\t\t\tdynMethods.push(dhtmlxMethods[i]);\n\t\t\tdhtmlx[dhtmlxMethods[i]] = wrapDeprecated(dhtmlxMethods[i]);\n\t\t}\n\t}\n\n\tgantt.attachEvent(\"onDestroy\", function(){\n\t\tfor(var i = 0; i < dynMethods.length; i++){\n\t\t\tdelete window.dhtmlx[dynMethods[i]];\n\t\t}\n\t\tdynMethods = null;\n\n\t});\n\n\t/* global functions */\n\n\n\tif (!window.dataProcessor) {\n\t\twindow.dataProcessor = function (url) {\n\t\t\tdeprecated(\"new dataProcessor(url)\", \"new gantt.dataProcessor(url)\");\n\t\t\treturn new gantt.dataProcessor(url);\n\t\t};\n\t\tgantt.attachEvent(\"onDestroy\", function(){\n\t\t\twindow.dataProcessor = null;\n\t\t});\n\t}\n\n};","import * as warnings from \"./core/deprecated_warnings\";\nimport * as base from \"./core/gantt\";\n\n\nconst gantt = (window as any).gantt = base();\nwarnings(gantt);"],"sourceRoot":""}