{"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/helpers.js","webpack:///./sources/utils/eventable.js","webpack:///./sources/core/lightbox/controls/base_control.js","webpack:///./sources/core/ui/layout/cell.js","webpack:///./sources/core/ui/grid/editors/editors/base.js","webpack:///./sources/utils/env.js","webpack:///./sources/core/lightbox/controls/select_control.js","webpack:///./sources/core/ui/grid/tasks_grid_dnd_marker_helpers/drop_target.js","webpack:///./sources/core/ui/resouce_store_mixin.js","webpack:///./sources/core/ui/mouse_event_container.js","webpack:///./sources/core/ui/grid/grid.js","webpack:///./sources/locale/locale.js","webpack:///./sources/utils/html_helpers.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/treedatastore.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/timeline/resource_timeline.js","webpack:///./sources/core/ui/row_position_mixin.js","webpack:///./sources/core/ui/timeline/scales_ignore.js","webpack:///./sources/core/ui/timeline/timeline.js","webpack:///./sources/core/ui/layout/layout.js","webpack:///./sources/utils/timeout.js","webpack:///./sources/core/deprecated_warnings.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/lightbox/controls/typeselect_control.js","webpack:///./sources/core/data_task_types.js","webpack:///./sources/core/lightbox_optional_time.js","webpack:///./sources/core/lightbox/controls/resources_control.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/grid_column_api.js","webpack:///./sources/core/dynamic_loading.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/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.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_marker_helpers/highlight.js","webpack:///./sources/core/ui/grid/tasks_grid_dnd_marker_helpers/multi_level.js","webpack:///./sources/core/ui/grid/tasks_grid_dnd_marker_helpers/locked_level.js","webpack:///./sources/core/ui/grid/tasks_grid_dnd_marker.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/editors/controller.js","webpack:///./sources/core/ui/timeline/resource_histogram.js","webpack:///./sources/core/ui/grid/resource_grid.js","webpack:///./sources/core/ui/grid/grid_resize.js","webpack:///./sources/core/ui/timeline/tasks_canvas_render.js","webpack:///./sources/core/ui/timeline/scales.js","webpack:///./sources/core/ui/layout/scrollbar_cell.js","webpack:///./sources/core/ui/layout/resizer_cell.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/utils/dom_event_scope.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/gantt_factory.js","webpack:///./sources/dhtmlxgantt.enterprise.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","helpers","copy","result","isDate","Date","isArray","Array","length","isStringObject","String","isNumberObject","Number","isBooleanObject","Boolean","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","clientX","clientY","isChildOf","parent","hasClass","element","classList","contains","test","b","__","constructor","units","second","minute","hour","day","week","month","quarter","year","arrayFilter","arr","callback","filter","getSecondsInUnit","unit","forEach","workArray","arrayMap","map","resArray","arrayFind","find","arrayDifference","item","arraySome","hashToArray","hash","sortArrayOfHash","field","desc","compare","sort","throttle","timeout","wait","setTimeout","pop","getFullYear","getMonth","getDate","Function","toString","delay","timer","clearTimeout","EventHost","_connected","_silent_mode","_silentStart","_silentEnd","createEventStorage","dhx_catch","z","res","zr","addEvent","removeEvent","id","eventHost","catcher","callObj","attachAll","callEvent","arg0","handlerName","concat","checkEvent","list","detachAllEvents","dummy","console","log","BaseControl","render","set_value","get_value","focus","gantt","utils","eventable","domHelpers","Cell","config","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","_hide","show","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","BaseEditor","column","placeholder","get_input","is_changed","currentValue","is_valid","save","env","isIE","navigator","userAgent","isIE6","XMLHttpRequest","isIE7","isIE8","isOpera","isChrome","isKHTML","isFF","isIPad","search","isEdge","__extends","htmlHelpers","_super","SelectControl","sns","getHtmlSelect","options","_dhx_onchange","onchange","_focus","createDropTargetObject","targetParent","targetIndex","targetId","nextSibling","prevSibling","nextSiblingTarget","taskId","store","getParent","getBranchIndex","prevSiblingTarget","firstChildTarget","lastChildTarget","children","getChildren","clearTaskStoreHandler","tasks","$data","tasksStore","handlerIdProperty","rowStore","initGrid","destroyGrid","_linkToTaskStore","ownStore","delayRender","getState","lightbox","_updateNestedTasks","refresh","resourceStore","getDatastore","resource_store","fetchTasks","resourceProperty","resource_property","silent","toAddArray","toAdd","toDelete","eachItem","resource","$role","getTaskBy","task","$task_id","$resource_id","$parentProperty","removeItem","parse","events","mouseEvents","h","gridResize","topPositionMixin","Grid","$state","container","gridAriaAttr","_waiAria","gridAttrString","gridDataAriaAttr","gridDataAttrString","$grid","gridScaleRowAttrString","$grid_scale","$grid_data","attr","$getConfig","item_attribute","layers","_createLayerConfig","resizer","_renderHeaderResizers","doOnRender","_mouseDelegates","_addLayers","_initEvents","_validateColumnWidth","numericWidth","assert","outerWidth","columns","getGridColumns","innerWidth","scrollable","_setColumnsWidth","grid_width","dataHeight","max","scale_height","contentHeight","row_height","countVisible","contentWidth","_getGridWidth","scrollHeight","scrollWidth","_initSmartRenderingPlaceholder","_calculateGridWidth","_renderGridHeader","getColumnIndex","getColumn","getItemHeight","renderer","$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","min","_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","locale","templates","rtl","reverse","cells","labels","lineHeigth","last","colWidth","_sort","direction","cssClass","grid_header_class","label","gridScaleCellAttrString","lineHeight","date","month_full","month_short","day_full","day_short","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","attributes","_this","entry","_attributes","getHtmlOption","_getHtmlContainer","getHtmlButton","getHtmlDiv","getHtmlLabel","getHtmlInput","_getHtmlAttributes","tag","IsWorkTimeArgument","calendar","ClosestWorkTimeArgument","dir","CalculateEndDateArgument","start_date","duration","step","GetDurationArgument","start","end","end_date","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","getTask","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","calculateEndDate","_min_date","_max_date","fit_tasks","old_min","old_max","_adjust_scales","powerArray","DataStore","TreeDataStore","_branches","pull","$initItem","initItem","parentProperty","$getRootId","val","$openInitially","openInitially","visibleOrder","$create","fullOrder","_searchVisibleOrder","_skip_refresh","eachParent","$open","_isSplitItem","_buildTree","data","setParent","_add_branch","$level","calculateItemLevel","_updateOrder","hasChild","loaded","_parseInner","_addItemInner","getIndexById","_move_branch","$rendered_parent","_changeIdInner","oldId","newId","_replace_branch_child","getItem","_traverseBranches","code","branch","itemId","_removeItemInner","items","move","sid","tindex","source_pid","tbranch","_moveInner","childId","parentId","exists","pid","getSiblings","getNextSibling","siblings","getPrevSibling","clearAll","level","_setParentInner","new_pid","startItem","parentsHash","Error","added_already","old_parent","new_parent","old_id","new_id","newbranch","criteria","original_criteria","els","temp","rule","$powerArray","array","$removeAt","pos","$remove","$find","$insertAt","$each","master","$map","$filter","_filterRule","updateItem","order","data_size","getVisibleItems","getIndexRange","addItem","changeId","sindex","getIdByIndex","arraysEqual","arr1","arr2","quick","oldOrder","count","serialize","filteredOrder","from","to","Infinity","ret","getItems","_getNullIfUndefined","getFirst","getLast","getNext","getPrev","_task_default_render","_isAllowedUnscheduledTask","getItemPosition","$getTemplates","taskType","getTaskType","type","padd","types","milestone","link_line_width","setAttribute","show_progress","done","progress","pr","progressColor","backgroundColor","opacity","progress_text","position","wrapper","drag_progress","isReadonly","drag","markerPos","_render_task_progress","task_text","_render_task_content","textColor","color","basic","template","state","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","setTaskBarAttr","drag_resize","_render_pair","drag_links","show_links","outer","inner","showLinkPoints","touch","text","cond","leftside","links","start_to_start","finish_to_start","finish_to_finish","_get_conditions","ln","tp","min_date","max_date","type_renderers","defaultRenderer","Timeline","resourceStoreMixin","ResourceTimeline","bindLinks","taskFilter","resourceRow","$task_bars","taskBg","$task_bg","getRowTop","getItemTop","task_id","processIgnores","display_count","ignore_x","ignore_time","skip_off_time","ignore","trace_x","_ignore_time_config","ignored_colls","canvasRender","$scaleHelper","_findBinary","prev","low","high","$task","$task_scale","$task_data","$task_links","_tasks","col_width","full_width","rendered","linksAttr","link_attribute","linkLayers","_attachLayers","backgroundImage","scale","data_els","_refreshScales","smart_scales","_scales","_getScaleChunkHtml","expose","taskBar","taskSplitBar","append","static_background","_linkLayers","_taskRenderer","getLayer","_initStaticBackgroundRender","linkStore","linkRenderer","linkLayer","_linkRenderer","staticRender","getScale","_render_tasks_scales","scales_html","outer_width","_getScales","availWidth","autosize","autosize_min_width","cfgs","prepareConfigs","min_column_width","fromPos","toPos","scale_row_class","tplClass","_prepareScaleHtml","globalConfig","globalTemplates","date_to_str","startIndex","endIndex","inherit_scale_class","scale_cell_class","cssclass","getTimelineCellAttr","dateFromPos","summ","part","_getColumnDuration","posFromDate","columnIndexByDate","wholeCells","partCell","trace_x_ascending","ignores","day_ind","transition","trace_index_transition","xLeft","xRight","task_height","offset","task_height_offset","Layout","$root","_parseConfig","$cells","_resizeScrollbars","scrollbars","scrollbar","scrollChanged","visibleScrollbars","hiddenSrollbars","showScrollbar","hideScrollbar","shouldHide","shouldShow","visibleGroups","group","_syncCellSizes","groupName","newSize","groups","_eachChild","_syncGroupSize","_xLayout","ownSize","resizeSibling","siblingSize","totalGravity","totalSize","k","mainGrid","$content","startStage","mainCall","_resizeInProgress","contentViews","getCellsByType","setContentSize","_getAutosizeMode","isChild","cellId","sub","alert","insertBefore","rows","cols","views","initUI","getCells","cellSize","_cleanElSize","_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","updPerSecond","_on_timeout","ceil","_eventRemoveAll","$layout","resetLightbox","_dp","check","message","show_errors","expire","calculateScaleRange","scroll_size","_reinit","_update_flags","initTemplates","_clearTaskLayers","_clearLinkLayers","reset","layout","createView","storeNames","refreshData","resizeDelay","getPropertyValue","resizeWatcher","tabIndex","contentWindow","addResizeListener","$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","changeLightboxType","getLightboxType","_silent_redraw_lightbox","_get_link_type","start_to_finish","_correct_dst_change","prevOffset","time_unit","offsetChanged","getTimezoneOffset","_is_icon_open_click","getTaskDND","_tasks_dnd","touch_feedback","touch_feedback_duration","_prevent_touch_scroll","_touch_feedback","vibrate","touchEventsSupported","createEvent","_touch_events","touches","pageX","pageY","pointerEnabled","pointerType","msPointerEnabled","MSPOINTER_TYPE_MOUSE","touchHandlers","names","accessor","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","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","TypeselectControl","oldOnChange","checkType","form_blocks","typeselect","_extend_to_optional","lightbox_block","optional_time","section","mapping","_resolve_default_mapping","disable","enable","disabled","update_block","_lightbox_id","previousSibling","button_text","resizeLightbox","button_click","_get_typed_lightbox_config","duration_optional","time_optional","time","localCache","resources","resourcesValues","eventsInitialized","ResourcesControl","_getInputElementSelector","isChecked","_getResourcesElement","_getFilterCache","checkbox","checked","filterApplied","resourcesElement","_setResourcesElement","htmlResourceRow","_setFilterCache","context","_applyFilter","resultSns","query","hideUnsetted","map_to","filterCache","_getValue","comparison","collection","resource_id","searchResult","itemIds","_getSnsToHideUnsetted","_resourceChangeListener","row","valueInput","resId","defaultValue","default_value","option","_saveValues","domElement","selector","inputs","unassigned_value","_getDisplayValues","_getAmountInput","zoom","_offsetSizes","_center_lightbox","getLightbox","amountElement","selectorAdd","selectorSub","settedValues","settedValuesHash","itemsAdd","itemsSub","resourceId","amount","ParentControl","_display","item_id","getTaskByTime","allow_root","unshift","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","CheckboxControl","checkboxes","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","showCover","_fill_lightbox","lightboxVisibleAttr","round_dnd_dates","timeline","_is_chart_visible","time_step","getLabel","sections","j","updateCollection","list_name","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","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","addTask","updateTask","lightboxHiddenAttr","hideCover","_custom_lightbox","_set_lightbox_values","lightboxHeader","lightbox_header","task_time","substr","getLightboxSection","getValue","setValue","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","ok","opts","confirm","type_value","oldType","formData","updTask","isUnscheduledTask","unscheduled","show_unscheduled","taskStart","taskEnd","getGlobalTaskIndex","_defaultTaskDate","parent_id","getTaskByIndex","_set_default_task_timing","createTask","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","dates","_assign_project_dates","getSubtaskDuration","taskTiming","_update_parents","has_changed","oldStart","oldEnd","roundDate","upper","lower","colIndex","steps","tzOffset","correctTaskWorkTime","work_time","correct_work_time","isWorkTime","getClosestWorkTime","calendarManager","timeCalculator","getWorkHours","setWorkTime","unsetWorkTime","_hasDuration","hasDuration","createCalendar","addCalendar","getCalendar","getCalendars","getTaskCalendar","deleteCalendar","CalendarDisabledTimeStrategy","argumentsHelper","_calculateDuration","dateHelper","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","curr","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","calendarId","worktimes","restoreConfigCalendars","configs","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_key","$ignore","json","dhx_security","security_key","serializeTask","_copyObject","serializeLink","_copyLink","xml_format","rawLinks","getLinks","xml","_xmlNodeToJSON","attrs_only","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","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","visibleColumns","old_has_children","branch_loading_property","branch_loading","getUserData","needLoading","encodeURIComponent","setUserData","callIfEnabled","auto_types","updateParents","batchUpdate","checkParent","targetType","getTaskTypeToUpdate","updateTaskType","setTaskType","delTaskParent","allTypes","hasChildren","originalRowDndParent","originalMoveTaskParent","isParsingDone","updateAfterRemoveChild","placeholder_task","insertPlaceholder","placeholders","afterEdit","newTask","dataProcessor","_silencedPlaceholder","setUpdated","ready","action","commands","command","entity","createResourceMethods","resourceTaskCache","propertyName","propertyValue","filterResourceTasks","getResourceTasks","resourceIds","cacheKey","resourceHash","resourceValue","getResourceLoad","timegrid","currDate","timetable","resource_render_empty_cells","calculateResourceLoad","renderBar","renderConnection","prevLevel","nextLevel","selectAssignments","owners","renderLine","resource_cell_class","resource_cell_value","sizes","renderHistogram","capacityMatrix","maxCapacity","capacity","histogram_cell_class","histogram_cell_label","fill","histogram_cell_allocated","histogram_cell_capacity","capacityElement","colStart","colEnd","bar","connection","renderHistogramLine","filterTasks","getResourceAssignments","assignments","resourceHistogram","dhtmlx","attaches","attachGantt","cmp","attachObject","dataType","dataObj","that","vs","av","grid","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","parts","currentNode","_isFirst","_prevSibling","_wbs","_parent","createWbs","resetCache","getTaskByWBSCode","createMethod","isActive","disableMethod","methodName","dummyMethod","restoreMethod","restoreMethods","batchUpdatePayload","batch_update","noRedraw","dp_mode","call_dp","updateMode","setUpdateMode","resetProjects","refreshLink","methodsHash","setGanttMode","sendData","scrollRange","scrollStep","scrollDelay","scrollSpeed","interval","isMove","delayTimeout","startPos","started","eventPos","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","_serialize_as_json","escape","_utf","setDataColumns","_columns","getSyncState","enableDataNames","enablePartialDataSend","_changed","dnd","rowId","findRow","existing","set_invalid","is_invalid","_clearUpdateFlag","markRow","_methods","details","checkBeforeUpdate","mytype","_h2","editStop","sendAllData","_beforeSendData","_getRowData","_sendData","_serializeAsJSON","serialize_one","stack","pref","serialized","_applyPayload","urlSeparator","a1","queryParams","ids","afterUpdate","a3","_user","a4","method","_forEachUpdatedRow","valid","_getAllData","stop","has_one","setVerificator","verifFunction","clearVerificator","pattern","defineAction","_uActions","afterUpdateCallback","tid","btag","marker","correct","soid","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","updateCallback","upd","objData","xml_date","insertCallback","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","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","initializer","_legacyGridResizerClass","resizers","gridResizer","onCreated","mainTimeline","show_chart","showGrid","show_grid","colsWidth","grid_limits","original_grid_width","skinSettings","_initScrollStateEvents","_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","services","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","extend","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","attach","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","gridToPageCoordinates","gridPos","removeLineHighlight","markerLine","highlightPosition","ePos","gridHeight","getTaskMarkerPosition","pointerEvents","markerFolder","highlightFolder","linePos","indentNode","indent","itemTop","itemHeight","childCount","getLineMarkerPosition","highlightRow","dropTarget","targetTaskId","relTargetPos","eventTop","findClosesTarget","allowedLevel","up","targetLevel","findTargetAbove","findTargetBelow","rootLevel","current","getLockedLevelTarget","getMultiLevelTarget","higlighter","dnd_sensitivity","hideQuickInfo","_hideQuickInfo","initial_open_state","outerHTML","drop_target","$transparent","getDropPosition","getTargetTaskId","lockLevel","order_branch_free","getStore","lastTaskOfLevel","last_item","_getGridPos","_getTargetY","_getTaskByY","dropIndex","targetY","over","nextId","prevId","rowDnd","rowDndMarker","extendGantt","ext","inlineEditors","_inlineEditors","createEditors","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","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","predecessor","lag","getSelectedLinks","existingLinksSearch","linksToAdd","linkKey","linksToDelete","remove","editor","linksDiff","autoSchedule","inputPredecessors","taskPredecessors","html5DateFormat","dateToStr","strToDate","DateEditor","str_to_date","parsed","SelectEditor","optionsHtml","NumberEditor","TextEditor","controller","onBlurDelay","keyNav","keyboardNavigation","activeCell","locateCell","columnName","editorState","getEditorConfig","startEdit","hasEditor","keyboard","preventKeyNav","ENTER","ctrlKey","metaKey","ESC","LEFT","RIGHT","editorType","DELETE","TAB","editPrevCell","editNextCell","onShow","onHide","destroy","keyboard_navigation","defaultPrevented","shouldPrevent","defaultMapping","keyNavMappings","setMapping","getMapping","keyboard_navigation_cells","getKeyboardMapping","textEditorFactory","numberEditorFactory","selectEditorFactory","dateEditorFactory","predecessorEditorFactory","initConfigs","editor_types","number","keyboardMapping","eventBus","inlineEditController","_createPlaceholder","_getEditorPosition","handlers","_itemId","_columnName","_editor","_editorType","_placeholder","editorConfig","_getItemValue","isChanged","newValue","oldValue","_findEditableCell","nextIndex","nextColumn","getNextCell","getFirstCell","getLastCell","canChangeRow","moveRow","editNextRow","editPrevRow","handlerId","ResourceHistogram","ResourceGrid","_grid_resize","column_before_start","grid_resizer_column_attribute","column_index","column_after_start","drag_index","column_drag_move","target_column","pointerPosition","minPointerPosition","maxPointerPosition","markerStartPosition","marker_width","keep_grid_width","limit_max","targetWidth","rightColumnsWidth","column_drag_end","resize_el","createStaticBgHelper","canvasBgCache","staticBgStyleId","parseRgb","rgbCss","exec","g","getUrlFromCache","getHashKey","cellStyles","bottomBorderColor","rightBorderColor","cacheUrl","generateBgUrl","canvas","getContext","rowHeight","image","createImageData","imageSmoothingEnabled","verticalLineWidth","rightBorderWidth","verticalLineColor","w","drawDot","horizontalLineWidth","bottomBorderWidth","horizontalLineColor","putImageData","drawGrid","toDataURL","matrix","getCssClass","targetNode","totalHeight","bgDivs","bgTiles","tile","prevCell","divs","prevWidth","widths","leftPos","maxTileSize","appVersion","currentTop","tileWidth","currentHeight","whiteSpace","createBgDivs","differentWidths","getColumnWidths","styleHTML","cachedUrl","bgImage","getStyleElement","createBackgroundTiles","rowStyles","getCellStyles","fragment","createDocumentFragment","getSum","setSumWidth","sum_width","adjustSize","splitSize","full","initTemplate","date_scale","min_coll_width","container_width","minDate","maxDate","heights","main_scale","initScaleConfig","initColSizes","limitVisibleRange","alineScaleColumns","reverseScale","setPosSettings","indexes","trace_indexes","skip","probe","min_col_width","line_height","cont_width","column_count","eachColumn","iterateScales","lower_scale","upper_scale","upper_dates","lower_dates","prevUpper","target_index","upper_start","upper_end","lower_start","lower_end","lastDate","outDate","shared","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","connectedViews","ff","wx","deltaX","wheelDeltaX","wy","deltaY","wheelDelta","oldLeft","detail","oldTop","ResizerCell","startBackSize","startFrontSize","_moveHandler","_moveResizer","_resizer","_upHandler","newSizes","_getNewSizes","back","front","_setSizes","_setBackground","_clearResizer","_clearListeneres","_startOnMove","_cancelDND","_callStartDNDEvent","_xMode","_startDND","_eachGroupItem","_isPosChanged","_downHandler","_setResizer","_positions","classes","overflow","_getDirection","_getResizePosition","behindSide","behindMin","frontSide","frontMin","newBehindSide","newFrontSide","_getGroupName","_getGroupResizePosition","minMax","positions","nextX","nextY","_setGravity","frontSize","behindSize","newFrontG","newBehindG","_assignNewSizes","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","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","addTaskLayer","removeTaskLayer","addLinkLayer","_getLinkLayers","removeLinkLayer","createMouseHandler","eventHandlers","doubleclick","contextMenu","addEventTarget","onClick","findEventHandlers","callEventHandlers","onContextMenu","returnValue","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","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","createScope","stateProviders","internal","provider","regTemplates","initial","template_name","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","inputMethod","mousemove","dragMove","dragScroll","limited_mousemove","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","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","show_loading","dhx_save_btn","dhx_cancel_btn","dhx_delete_btn","project_sections","milestone_sections","grid_resizer_attribute","grid_resize","prevent_default_scroll","service","$inject","templatesLoader","stateService","uiApi","createLayoutFacade","_seed","plugin","_ganttPlugin","_internal_id","$syncFactory"],"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 = 146);\n","var helpers = require(\"./helpers\");\n\nfunction copy(object) {\n\tvar i, result; // iterator, types array, result\n\n\tif (object && typeof object == \"object\") {\n\n\t\tswitch (true){\n\t\t\tcase (helpers.isDate(object)):\n\t\t\t\tresult = new Date(object);\n\t\t\t\tbreak;\n\t\t\tcase (helpers.isArray(object)):\n\t\t\t\tresult = new Array(object.length);\n\t\t\t\tfor(i = 0; i < object.length; i++){\n\t\t\t\t\tresult[i] = copy(object[i]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase (helpers.isStringObject(object)):\n\t\t\t\tresult = new String(object);\n\t\t\t\tbreak;\n\t\t\tcase (helpers.isNumberObject(object)):\n\t\t\t\tresult = new Number(object);\n\t\t\t\tbreak;\n\t\t\tcase (helpers.isBooleanObject(object)):\n\t\t\t\tresult = new Boolean(object);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tresult = {};\n\t\t\t\tfor (i in object) {\n\t\t\t\t\tif (Object.prototype.hasOwnProperty.apply(object, [i]))\n\t\t\t\t\t\tresult[i] = copy(object[i]);\n\t\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn result || object;\n}\n\nfunction mixin (target, source, force){\n\tfor (var f in source)\n\t\tif (((target[f] === undefined) || force)) target[f]=source[f];\n\treturn target;\n}\n\nfunction defined(obj) {\n\treturn typeof(obj) != \"undefined\";\n}\n\nvar seed;\nfunction uid() {\n\tif (!seed)\n\t\tseed = (new Date()).valueOf();\n\n\tseed++;\n\treturn seed;\n}\n\n//creates function with specified \"this\" pointer\nfunction bind(functor, object){\n\tif(functor.bind)\n\t\treturn functor.bind(object);\n\telse\n\t\treturn function(){ return functor.apply(object,arguments); };\n}\n\nfunction event(el, event, handler, capture){\n\tif (el.addEventListener)\n\t\tel.addEventListener(event, handler, capture === undefined ? false : capture);\n\n\telse if (el.attachEvent)\n\t\tel.attachEvent(\"on\"+event, handler);\n}\n\nfunction eventRemove(el, event, handler, capture){\n\tif (el.removeEventListener)\n\t\tel.removeEventListener(event, handler, capture === undefined ? false : capture);\n\n\telse if (el.detachEvent)\n\t\tel.detachEvent(\"on\"+event, handler);\n}\n\n\nmodule.exports = {\n\tcopy: copy,\n\tdefined: defined,\n\tmixin: mixin,\n\tuid: uid,\n\tbind: bind,\n\tevent: event,\n\teventRemove: eventRemove\n};","//returns position of html element on the page\nfunction elementPosition(elem) {\n\tvar top=0, left=0, right=0, bottom=0;\n\tif (elem.getBoundingClientRect) { //HTML5 method\n\t\tvar box = elem.getBoundingClientRect();\n\t\tvar body = document.body;\n\t\tvar docElem = (document.documentElement ||\n\t\t\tdocument.body.parentNode ||\n\t\t\tdocument.body);\n\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\n\t\ttop = box.top + scrollTop - clientTop;\n\t\tleft = box.left + scrollLeft - clientLeft;\n\n\t\tright = document.body.offsetWidth - box.right;\n\t\tbottom = document.body.offsetHeight - box.bottom;\n\t} else { //fallback to naive approach\n\t\twhile(elem) {\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\n\t\t\telem = elem.offsetParent;\n\t\t}\n\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\n\t}\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\n}\n\nfunction isVisible(node){\n\tvar display = false,\n\t\tvisibility = false;\n\tif(window.getComputedStyle){\n\t\tvar style = window.getComputedStyle(node, null);\n\t\tdisplay = style[\"display\"];\n\t\tvisibility = style[\"visibility\"];\n\t}else if(node.currentStyle){\n\t\tdisplay = node.currentStyle[\"display\"];\n\t\tvisibility = node.currentStyle[\"visibility\"];\n\t}\n\treturn (display != \"none\" && visibility != \"hidden\");\n}\n\nfunction hasNonNegativeTabIndex(node){\n\treturn !isNaN(node.getAttribute(\"tabindex\")) && (node.getAttribute(\"tabindex\")*1 >= 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 hasClass(element, className){\n\tif ('classList' in element) {\n\t\treturn element.classList.contains(className);\n\t} else { \n\t\treturn new RegExp(\"\\\\b\" + className + \"\\\\b\").test(element.className);\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\tvar trg = getTargetNode(e);\n\tvar css = \"\";\n\n\tif(strict === undefined)\n\t\tstrict = true;\n\n\twhile (trg){\n\t\tcss = getClassName(trg);\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\t\ttrg=trg.parentNode;\n\t}\n\treturn null;\n}\n\n/*\nevent position relatively to DOM element\n */\nfunction getRelativeEventPosition(ev, node){\n\tvar d = document.documentElement;\n\tvar box = elementPosition(node);\n\n\treturn {\n\t\tx: ev.clientX + d.scrollLeft - d.clientLeft - box.x + node.scrollLeft,\n\t\ty: ev.clientY + d.scrollTop - d.clientTop - box.y + node.scrollTop\n\t};\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\thasClass: hasClass\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 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\t\treturn resArray;\n\t}\n}\n\n\nfunction arrayFind(arr, callback) {\n\tif (arr.find) {\n\t\treturn arr.find(callback);\n\t} else {\n\t\tfor (var i = 0; i < arr.length; i++) {\n\t\t\tif (callback(arr[i], i)) {\n\t\t\t\treturn arr[i];\n\t\t\t}\n\t\t}\n\t}\n}\n\n// iframe-safe array type check instead of using instanceof\nfunction isArray(obj){\n\tif(Array.isArray){\n\t\treturn Array.isArray(obj);\n\t}else{\n\t\t// close enough\n\t\treturn (obj && obj.length !== undefined && obj.pop && obj.push);\n\t}\n}\n\n// non-primitive string object, e.g. new String(\"abc\")\nfunction isStringObject(obj){\n\treturn obj && typeof obj === \"object\"\n\t\t&& Function.prototype.toString.call(obj.constructor) === \"function String() { [native code] }\";\n}\n\n// non-primitive number object, e.g. new Number(5)\nfunction isNumberObject(obj){\n\treturn obj && typeof obj === \"object\"\n\t\t&& Function.prototype.toString.call(obj.constructor) === \"function Number() { [native code] }\";\n}\n\n// non-primitive number object, e.g. new Boolean(true)\nfunction isBooleanObject(obj){\n\treturn obj && typeof obj === \"object\"\n\t\t&& Function.prototype.toString.call(obj.constructor) === \"function Boolean() { [native code] }\";\n}\n\nfunction 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\nfunction arrayFilter(arr, callback) {\n\tvar result = [];\n\n\tif (arr.filter) {\n\t\treturn arr.filter(callback);\n\t} else {\n\t\tfor (var i = 0; i < arr.length; i++) {\n\t\t\tif (callback(arr[i], i)) {\n\t\t\t\tresult[result.length] = arr[i];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n}\n\nfunction hashToArray(hash) {\n\tvar result = [];\n\n\tfor (var key in hash) {\n\t\tif (hash.hasOwnProperty(key)) {\n\t\t\tresult.push(hash[key]);\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction arraySome(arr, callback) {\n\tif (arr.length === 0) return false;\n\n\tfor (var i = 0; i < arr.length; i++) {\n\t\tif (callback(arr[i], i, arr)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction arrayDifference(arr, callback) {\n\treturn arrayFilter(arr, function(item, i) {\n\t\treturn !callback(item, i);\n\t});\n}\n\nfunction throttle (callback, timeout) {\n\tvar wait = false;\n\n\treturn function () {\n\t\tif (!wait) {\n\t\t\tcallback.apply(null, arguments);\n\t\t\twait = true;\n\t\t\tsetTimeout(function () {\n\t\t\t\twait = false;\n\t\t\t}, timeout);\n\t\t}\n\t};\n}\n\nfunction delay (callback, timeout){\n\tvar timer;\n\treturn function() {\n\t\tclearTimeout(timer);\n\t\ttimer = setTimeout(function(){\n\t\t\tcallback();\n\t\t}, timeout);\n\t};\n}\n\nfunction sortArrayOfHash(arr, field, desc) {\n\tvar compare = function(a, b) {\n\t\treturn a < b;\n\t};\n\n\tarr.sort(function(a, b) {\n\t\tif (a[field] === b[field]) return 0;\n\t\t\n\t\treturn desc ? compare(a[field], b[field]) : compare(b[field], a[field]);\n\t});\n}\n\nmodule.exports = {\n\tgetSecondsInUnit: getSecondsInUnit,\n\tforEach: forEach,\n\tarrayMap: arrayMap,\n\tarrayFind: arrayFind,\n\tarrayFilter: arrayFilter,\n\tarrayDifference: arrayDifference,\n\tarraySome: arraySome,\n\thashToArray: hashToArray,\n\tsortArrayOfHash: sortArrayOfHash,\n\tthrottle: throttle,\n\tisArray: isArray,\n\tisDate: isDate,\n\tisStringObject: isStringObject,\n\tisNumberObject: isNumberObject,\n\tisBooleanObject: isBooleanObject,\n\tdelay: delay\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\t// eslint-disable-next-line\n\tconsole.log(\"Method is not implemented.\"); \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};","var utils = require(\"../../../utils/utils\"),\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\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","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 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;","var __extends = require(\"../../../utils/extends\");\nvar htmlHelpers = require(\"../../../utils/html_helpers\");\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\n\t\thtml += htmlHelpers.getHtmlSelect(sns.options, [{ key: \"style\", value: \"width:100%;\" }]);\n\t\thtml += \"
\";\n\t\treturn html;\n\t};\n\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};","/**\n * The state object for order branch drag and drop\n */\n\nvar utils = require(\"../../../../utils/utils\");\n\nmodule.exports = {\n\tcreateDropTargetObject: function createDropTargetObject(parent) {\n\t\tvar res = {\n\t\t\ttargetParent: null,\n\t\t\ttargetIndex: 0,\n\t\t\ttargetId: null,\n\t\t\tchild: false,\n\t\t\tnextSibling: false,\n\t\t\tprevSibling: false\n\t\t};\n\n\t\tif (parent) {\n\t\t\tutils.mixin(res, parent, true);\n\t\t}\n\t\treturn res;\n\t},\n\tnextSiblingTarget: function nextSiblingTarget(taskId, store) {\n\t\tvar result = this.createDropTargetObject();\n\t\tresult.targetId = taskId;\n\t\tresult.nextSibling = true;\n\t\tresult.targetParent = store.getParent(result.targetId);\n\t\tresult.targetIndex = store.getBranchIndex(result.targetId) + 1;\n\t\treturn result;\n\t},\n\tprevSiblingTarget: function prevSiblingTarget(taskId, store) {\n\t\tvar result = this.createDropTargetObject();\n\t\tresult.targetId = taskId;\n\t\tresult.prevSibling = true;\n\t\tresult.targetParent = store.getParent(result.targetId);\n\t\tresult.targetIndex = store.getBranchIndex(result.targetId);\n\t\treturn result;\n\t},\n\tfirstChildTarget: function firstChildTarget(taskId, store) {\n\t\tvar result = this.createDropTargetObject();\n\t\tresult.targetId = taskId;\n\t\tresult.targetParent = result.targetId;\n\t\tresult.targetIndex = 0;\n\t\tresult.child = true;\n\t\treturn result;\n\t},\n\tlastChildTarget: function lastChildTarget(taskId, store) {\n\t\tvar children = store.getChildren(taskId);\n\t\tvar result = this.createDropTargetObject();\n\t\tresult.targetId = children[children.length - 1];\n\t\tresult.targetParent = taskId;\n\t\tresult.targetIndex = children.length;\n\t\tresult.nextSibling = true;\n\t\treturn result;\n\t}\n};","var helpers = require(\"../../utils/helpers\");\n\nfunction clearTaskStoreHandler(self){\n\tvar tasks = self.$gantt.$data.tasksStore;\n\tvar ownStore = self.$config.rowStore;\n\tvar handlerIdProperty = \"_attached_\" + ownStore.name;\n\tif (self[handlerIdProperty]) {\n\t\ttasks.detachEvent(self[handlerIdProperty]);\n\t\tself[handlerIdProperty] = null;\n\t}\n}\n\nfunction createMixin(_super){\n\n\tvar initGrid = _super.prototype.init,\n\t\tdestroyGrid = _super.prototype.destructor;\n\n\treturn {\n\t\tinit: function(){\n\t\t\tinitGrid.apply(this, arguments);\n\t\t\tthis._linkToTaskStore();\n\t\t},\n\n\t\tdestructor: function(){\n\t\t\tclearTaskStoreHandler(this);\n\t\t\tdestroyGrid.apply(this, arguments);\n\t\t},\n\n\t\t_linkToTaskStore: function () {\n\t\t\tif (this.$config.rowStore && this.$gantt.$data.tasksStore) {\n\t\t\t\tvar tasks = this.$gantt.$data.tasksStore;\n\t\t\t\tvar ownStore = this.$config.rowStore;\n\t\t\t\tclearTaskStoreHandler(this);\n\n\t\t\t\tvar self = this;\n\t\t\t\tvar delayRender = helpers.delay(function () {\n\t\t\t\t\tif(self.$gantt.getState().lightbox){\n\t\t\t\t\t\tdelayRender();\n\t\t\t\t\t}else{\n\t\t\t\t\t\tself._updateNestedTasks();\n\t\t\t\t\t\townStore.refresh();\n\t\t\t\t\t}\n\t\t\t\t}, 300);\n\t\t\t\t\n\t\t\t\tvar handlerIdProperty = \"_attached_\" + ownStore.name;\n\t\t\t\tself[handlerIdProperty] = tasks.attachEvent(\"onStoreUpdated\", delayRender);\n\t\t\t}\n\t\t},\n\n\t\t_updateNestedTasks: function(){\n\t\t\tvar gantt = this.$gantt;\n\t\t\tvar resourceStore = gantt.getDatastore(gantt.config.resource_store);\n\t\t\tif(!resourceStore.$config.fetchTasks)\n\t\t\t\treturn;\n\n\t\t\tvar resourceProperty = gantt.config.resource_property;\n\t\t\t\n\t\t\tresourceStore.silent(function(){\n\t\t\t\tvar toAddArray = [];\n\t\t\t\tvar toAdd = {};\n\t\t\t\tvar toDelete = {};\n\t\t\t\t\n\t\t\t\tresourceStore.eachItem(function(resource){\n\t\t\t\t\tif(resource.$role == \"task\"){\n\t\t\t\t\t\ttoDelete[resource.id] = true;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar tasks = gantt.getTaskBy(resourceProperty, resource.id);\n\t\t\t\t\ttasks.forEach(function(task){\n\t\t\t\t\t\tvar copy = gantt.copy(task);\n\t\t\t\t\t\tcopy.id = task.id + '_' + resource.id;\n\t\t\t\t\t\t\n\t\t\t\t\t\tcopy.$task_id = task.id;\n\t\t\t\t\t\tcopy.$resource_id = resource.id;\n\t\t\t\t\t\tcopy[resourceStore.$parentProperty] = resource.id;\n\t\t\t\t\t\tcopy.$role = \"task\";\n\t\t\t\t\t\ttoAddArray.push(copy);\n\t\t\t\t\t\ttoAdd[copy.id] = true;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tfor(var id in toDelete){\n\t\t\t\t\tif(!toAdd[id])\n\t\t\t\t\t\tresourceStore.removeItem(id);\n\t\t\t\t}\n\t\t\t\tresourceStore.parse(toAddArray);\n\t\t\t});\n\t\t}\n\t};\n}\n\nmodule.exports = createMixin;","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 domHelpers = require(\"../../../utils/dom_helpers\"),\n\tutils = require(\"../../../utils/utils\"),\n\teventable = require(\"../../../utils/eventable\"),\n\tgridResize = require(\"./grid_resize\"),\n\ttopPositionMixin = require(\"../row_position_mixin\");\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\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\n\t_validateColumnWidth: function(column, property){\n\t\t// user can set {name:\"text\", width:\"200\",...} for some reason,\n\t\t// check and convert it to number when possible\n\t\tvar value = column[property];\n\t\tif (value && value != \"*\") {\n\t\t\tvar gantt = this.$gantt;\n\t\t\tvar numericWidth = value*1;\n\t\t\tif(isNaN(numericWidth)){\n\t\t\t\tgantt.assert(false, \"Wrong \" + property + \" value of column \" + column.name);\n\t\t\t}else{\n\t\t\t\tcolumn[property] = numericWidth;\n\t\t\t}\n\t\t}\n\t},\n\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\tthis._validateColumnWidth(columns[i], \"min_width\");\n\t\t\tthis._validateColumnWidth(columns[i], \"max_width\");\n\t\t\tthis._validateColumnWidth(columns[i], \"width\");\n\t\t\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\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\tvar gantt = this.$gantt;\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\tif (this._taskLayers) {\n\t\t\tfor(var i = 0; i < this._taskLayers.length; i++){\n\t\t\t\ttaskRenderer.removeLayer(this._taskLayers[i]);\n\t\t\t}\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\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\tif(this._mouseDelegates){\n\t\t\tthis._mouseDelegates.destructor();\n\t\t\tthis._mouseDelegates = null;\n\t\t}\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\nutils.mixin(Grid.prototype, topPositionMixin());\n\nmodule.exports = Grid;\n","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 helpers = require(\"./helpers\");\n\nvar htmlHelpers = {\n\tgetHtmlSelect: function(options, attributes, value) {\n\t\tvar innerHTML = \"\";\n\t\tvar _this = this;\n\n\t\toptions = options || [];\n\t\t\n\t\thelpers.forEach(options, function(entry) {\n\t\t\tvar _attributes = [{ key: \"value\", value: entry.key }];\n\n\t\t\tif (value == entry.key) {\n\t\t\t\t_attributes[_attributes.length] = { key: \"selected\", value: \"selected\" };\n\t\t\t}\n\t\t\tif (entry.attributes) {\n\t\t\t\t_attributes = _attributes.concat(entry.attributes);\n\t\t\t}\n\t\t\tinnerHTML += _this.getHtmlOption({ innerHTML: entry.label }, _attributes);\n\t\t});\n\n\t\treturn _getHtmlContainer(\"select\", { innerHTML: innerHTML }, attributes);\n\t},\n\tgetHtmlOption: function(options, attributes) { return _getHtmlContainer(\"option\", options, attributes); },\n\tgetHtmlButton: function(options, attributes) { return _getHtmlContainer(\"button\", options, attributes); },\n\tgetHtmlDiv: function(options, attributes) { return _getHtmlContainer(\"div\", options, attributes); },\n\tgetHtmlLabel: function(options, attributes) { return _getHtmlContainer(\"label\", options, attributes); },\n\tgetHtmlInput: function(attributes) {\n\t\treturn \"\";\n\t}\n};\n\nfunction _getHtmlContainer(tag, options, attributes) {\n\tvar html;\n\n\toptions = options || [];\n\t\n\thtml = \"<\" + tag + _getHtmlAttributes(attributes || []) + \">\" + (options.innerHTML || \"\") + \"\";\n\treturn html;\n\n}\n\nfunction _getHtmlAttributes(attributes) {\n\tvar html = \"\";\n\n\thelpers.forEach(attributes, function(entry) {\n\t\thtml += \" \" + entry.key + \"='\" + entry.value + \"'\";\n\t});\n\treturn html;\n}\n\nmodule.exports = htmlHelpers;","var utils = require(\"../../utils/utils\");\nvar helpers = require(\"../../utils/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 (helpers.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 (helpers.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 (helpers.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 (helpers.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 powerArray = require(\"./power_array\");\nvar utils = require(\"../../utils/utils\");\nvar DataStore = require(\"./datastore\");\n\nvar TreeDataStore = function(config){\n\tDataStore.apply(this, [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\tthis.attachEvent(\"onFilterItem\", function(id, item){\n\t\tvar open = true;\n\t\tthis.eachParent(function(parent){\n\t\t\topen = open && parent.$open && !(this._isSplitItem(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\t\t_isSplitItem: function(item){\n\t\t\treturn (item.render == \"split\" && this.hasChild(item.id));\n\t\t},\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\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\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\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 utils = require(\"../../../utils/utils\");\nvar Timeline = require(\"./timeline\");\nvar resourceStoreMixin = require(\"../resouce_store_mixin\");\nvar __extends = require(\"../../../utils/extends\");\n\nvar ResourceTimeline = (function (_super) {\n\n\tfunction ResourceTimeline(parent, config, factory, gantt) {\n\t\tvar self = _super.apply(this, arguments) || this;\n\t\tself.$config.bindLinks = null;\n\t\treturn self;\n\t}\n\n\t__extends(ResourceTimeline, _super);\n\n\tutils.mixin(ResourceTimeline.prototype, {\n\t\tinit: function(){\n\t\t\tif(this.$config.bind === undefined){\n\t\t\t\tthis.$config.bind = this.$getConfig().resource_store;\n\t\t\t}\n\t\t\t_super.prototype.init.apply(this, arguments);\n\t\t},\n\t\t_createLayerConfig: function() {\n\t\t\tvar self = this;\n\t\t\tvar taskFilter = function() {\n\t\t\t\treturn self.isVisible();\n\t\t\t};\n\n\t\t\tvar taskLayers = [\n\t\t\t\t{\n\t\t\t\t\trenderer: this.$gantt.$ui.layers.resourceRow,\n\t\t\t\t\tcontainer: this.$task_bars,\n\t\t\t\t\tfilter: [taskFilter]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\trenderer: this.$gantt.$ui.layers.taskBg,\n\t\t\t\t\tcontainer: this.$task_bg,\n\t\t\t\t\tfilter: [taskFilter]\n\t\t\t\t}\n\t\t\t];\n\n\t\t\tvar linkLayers = [];\n\n\t\t\treturn {\n\t\t\t\ttasks: taskLayers,\n\t\t\t\tlinks: linkLayers\n\t\t\t};\n\t\t}\n\n\t}, true);\n\n\tutils.mixin(ResourceTimeline.prototype, resourceStoreMixin(ResourceTimeline), true);\n\n\treturn ResourceTimeline;\n})(Timeline);\n\n\nmodule.exports = ResourceTimeline;\n\n\n","function createMixin(){\n\treturn {\n\t\t/**\n\t\t * Get top coordinate by row index (order)\n\t\t * @param {number} index \n\t\t */\n\t\tgetRowTop: function(index){\n\t\t\treturn index * this.$getConfig().row_height;\n\t\t},\n\n\t\t/**\n\t\t * Get top coordinate by item id\n\t\t * @param {*} task_id \n\t\t */\n\t\tgetItemTop: function (task_id) {\n\t\t\tif(this.$config.rowStore){\n\t\t\t\tvar store = this.$config.rowStore;\n\t\t\t\tif(!store) return 0;\n\n\t\t\t\tif(store.getParent && store.exists(task_id) && store.exists(store.getParent(task_id))){\n\t\t\t\t\tvar parent = store.getItem(store.getParent(task_id));\n\t\t\t\t\tif(this.$gantt.isSplitTask(parent)){\n\t\t\t\t\t\treturn this.getRowTop(store.getIndexById(parent.id));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this.getRowTop(store.getIndexById(task_id));\n\n\t\t\t}else{\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t}\n\t};\n}\n\nmodule.exports = createMixin;","\nvar ScaleHelper = require(\"./scales\");\n\nfunction ScaleIgnoreHelper(gantt){\n\tvar helper = new ScaleHelper(gantt);\n\n\thelper.processIgnores = function (config) {\n\t\tvar display_count = config.count;\n\t\tconfig.ignore_x = {};\n\t\tif (gantt.ignore_time || gantt.config.skip_off_time) {\n\t\t\tvar ignore = gantt.ignore_time || function () {\n\t\t\t\treturn false;\n\t\t\t};\n\t\t\tdisplay_count = 0;\n\n\t\t\tfor (var i = 0; i < config.trace_x.length; i++) {\n\n\t\t\t\tif (ignore.call(gantt, config.trace_x[i]) || this._ignore_time_config.call(gantt, config.trace_x[i], config)) {\n\t\t\t\t\tconfig.ignore_x[config.trace_x[i].valueOf()] = true;\n\t\t\t\t\tconfig.ignored_colls = true;\n\t\t\t\t} else {\n\t\t\t\t\tdisplay_count++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t\tconfig.display_count = display_count;\n\t};\n\n\treturn helper;\n}\n\nmodule.exports = ScaleIgnoreHelper;","var ScaleHelper = require(\"./scales_ignore\");\nvar eventable = require(\"../../../utils/eventable\");\nvar utils = require(\"../../../utils/utils\");\nvar topPositionMixin = require(\"../row_position_mixin\");\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\tif (this._taskLayers) {\n\t\t\tfor(var i = 0; i < this._taskLayers.length; i++){\n\t\t\t\ttaskRenderer.removeLayer(this._taskLayers[i]);\n\t\t\t}\n\t\t}\n\t\tif (this._linkLayers) {\n\t\t\tfor(var i = 0; i < this._linkLayers.length; i++){\n\t\t\t\tlinkRenderer.removeLayer(this._linkLayers[i]);\n\t\t\t}\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\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\nutils.mixin(Timeline.prototype, topPositionMixin());\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\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;","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;","module.exports = function(gantt){\n\n\t// no deprecated methods for now\n\n\t// eslint-disable-next-line no-unused-vars\n\tfunction deprecated(badCode, goodCode, versionDeprecated, versionDeleted) {\n\n\t\tvar formatting = gantt.env.isIE ? \"\" : \"%c\";\n\t\tversionDeprecated = versionDeprecated || \"v6.0\";\n\t\tversionDeleted = versionDeleted || \"v7.0\";\n\n\t\tvar message = [\n\t\t\tformatting, \"\\\"\", badCode, \"\\\"\", formatting,\n\t\t\t\" has been deprecated in dhtmlxGantt \", versionDeprecated, \" and will stop working in \", versionDeleted,\". 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\t// gantt.getSlack is defined inside an extension, leave it without message for now\n\n};","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\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\n\t\t\t\t// eslint-disable-next-line no-debugger\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\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\n\t\taddResizeListener(gantt);\n\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\tfunction addResizeListener(gantt){\n\t\tvar resizeDelay;\n\n\t\tvar containerStyles = window.getComputedStyle(gantt.$root);\n\t\tif(containerStyles.getPropertyValue(\"position\") == \"static\"){\n\t\t\tgantt.$root.style.position = \"relative\";\n\t\t}\n\n\t\tvar resizeWatcher = document.createElement('iframe');\n\t\tresizeWatcher.className = \"gantt_container_resize_watcher\";\n\t\tresizeWatcher.tabIndex = -1;\n\n\t\tgantt.$root.appendChild(resizeWatcher);\n\t\tresizeWatcher.contentWindow.addEventListener('resize', function(){ \n\t\t\tclearTimeout(resizeDelay);\n\t\t\tresizeDelay = setTimeout(function(){\n\t\t\t\tgantt.render();\n\t\t\t}, 300);\t\t\n\t\t});\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.isSplitTask = function(task){\n\t\tgantt.assert(task && task instanceof Object, \"Invalid argument task=\"+task+\" of gantt.isSplitTask. Task object was expected\");\n\t\treturn this.$data.tasksStore._isSplitItem(task);\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 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'_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};","var __extends = require(\"../../../utils/extends\");\n\nmodule.exports = function(gantt) {\n\tvar _super = require(\"./select_control\")(gantt);\n\n\tfunction TypeselectControl() {\n\t\tvar self = _super.apply(this, arguments) || this;\n\n\t\treturn self; \n\t}\n\n\t__extends(TypeselectControl, _super);\n\n\tTypeselectControl.prototype.render = function(sns) {\n\t\tvar types = gantt.config.types,\n\t\t\tlocale = gantt.locale.labels,\n\t\t\toptions = [];\n\n\t\tvar filter = sns.filter || function() {\n\t\t\treturn true;\n\t\t};\n\t\tfor (var i in types) {\n\t\t\tif (!filter(i, types[i]) === false) {\n\t\t\t\toptions.push({ key: types[i], label: locale[\"type_\" + i] });\n\t\t\t}\n\t\t}\n\t\tsns.options = options;\n\n\t\tvar oldOnChange = sns.onchange;\n\t\tsns.onchange = function () {\n\t\t\tgantt.changeLightboxType(this.value);\n\t\t\tif (typeof oldOnChange == 'function') {\n\t\t\t\toldOnChange.apply(this, arguments);\n\t\t\t}\n\t\t};\n\n\t\treturn _super.prototype.render.apply(this, arguments);\n\t};\n\n\treturn TypeselectControl;\n};\n","module.exports = function(gantt) {\n\tvar TypeselectControl = require(\"./lightbox/controls/typeselect_control\")(gantt);\n\n\tgantt.getTaskType = function (type) {\n\t\tvar checkType = type;\n\t\tif(type && typeof type == \"object\"){\n\t\t\tcheckType = type.type;\n\t\t}\n\n\t\tfor (var i in this.config.types) {\n\t\t\tif (this.config.types[i] == checkType) {\n\t\t\t\treturn checkType;\n\t\t\t}\n\t\t}\n\t\treturn gantt.config.types.task;\n\t};\n\n\tgantt.form_blocks.typeselect = new TypeselectControl();\n\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 helpers = require(\"../../../utils/helpers\");\nvar domHelpers = require(\"../../../utils/dom_helpers\");\nvar htmlHelpers = require(\"../../../utils/html_helpers\");\nvar __extends = require(\"../../../utils/extends\");\n\nmodule.exports = function(gantt) {\n\tvar _super = require(\"./base_control\")(gantt);\n\tvar localCache = {\n\t\tresources: {},\n\t\tresourcesValues: {},\n\t\tfilter: {},\n\t\teventsInitialized: {}\n\t};\n\n\tgantt.attachEvent(\"onAfterLightbox\", _clearCached);\n\n\tfunction ResourcesControl() {\n\t\tvar self = _super.apply(this, arguments) || this;\n\n\t\treturn self;\n\t}\n\n\t__extends(ResourcesControl, _super);\n\n\tResourcesControl.prototype.render = function(sns) {\n\t\tvar html;\n\n\t\t// if set fixed height for this element, then resize of lightbox will be calculated improperly\n\t\thtml = \"\";\n\t\thtml += \"
\";\n\t\thtml += \"
\";\n\t\thtml += \"\";\n\t\treturn html;\n\t};\n\n\tResourcesControl.prototype.set_value = function(node, value, ev, sns) {\n\t\tvar resourcesElement = _setResourcesElement(node, sns);\n\t\tvar htmlResourceRow = \"\";\n\t\tvar data;\n\n\t\t_setFilterCache(node, sns);\n\t\t_initEvents(node, ev, sns, this);\n\n\t\thelpers.forEach(sns.options, function(entry, index) {\n\t\t\tif (sns.unassigned_value == entry.key) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdata = _getDisplayValues(sns, value, entry);\n\n\t\t\thtmlResourceRow += [\n\t\t\t\t\"\"\n\t\t\t].join(\"\");\n\t\t});\n\t\tresourcesElement.innerHTML = htmlResourceRow;\n\t\t// weird element sizes in ie11 when display empty resource list, use zoom to force repaint\n\t\tresourcesElement.style.zoom = \"1\";\n\t\tresourcesElement._offsetSizes = resourcesElement.offsetHeight;\n\t\tresourcesElement.style.zoom = \"\";\n\n\t\tgantt.resizeLightbox();\n\t\tgantt._center_lightbox(gantt.getLightbox());\n\t};\n\n\tResourcesControl.prototype.get_value = function(node, ev, sns) {\n\t\tvar amountElement = _getResourcesElement(sns);\n\t\tvar result = [];\n\t\tvar selectorAdd = _getInputElementSelector(true);\n\t\tvar selectorSub = _getInputElementSelector(false);\n\t\tvar filterCache = _getFilterCache(sns);\n\t\tvar settedValues = ev[sns.map_to] || [];\n\t\tvar settedValuesHash = {};\n\n\t\tif (filterCache.filterApplied && settedValues && settedValues.length > 0) {\n\t\t\thelpers.forEach(settedValues, function(entry) {\n\t\t\t\tsettedValuesHash[String(entry.resource_id)] = entry;\n\t\t\t});\n\t\t}\n\n\t\tvar itemsAdd = amountElement.querySelectorAll(selectorAdd);\n\t\tvar itemsSub = amountElement.querySelectorAll(selectorSub);\n\n\t\tfor (var i = 0; i < itemsSub.length; i++) {\n\t\t\tdelete settedValuesHash[itemsSub[i].getAttribute(\"data-item-id\")];\n\t\t}\n\n\t\tfor (var i = 0; i < itemsAdd.length; i++) {\n\t\t\tvar resourceId = itemsAdd[i].getAttribute(\"data-item-id\");\n\t\t\tvar amount = itemsAdd[i].value.trim();\n\n\t\t\tif (amount !== \"\" && amount !== \"0\") {\n\t\t\t\tdelete settedValuesHash[resourceId];\n\t\t\t\tresult[result.length] = { resource_id: resourceId, value: amount };\n\t\t\t}\n\t\t}\n\n\t\tfor (var item in settedValuesHash) {\n\t\t\tresult[result.length] = localCache.resourcesValues[sns.id][item] || settedValuesHash[item];\n\t\t}\n\n\t\treturn result;\n\t};\n\n\tResourcesControl.prototype.focus = function(node) {\n\t\tgantt._focus(node.querySelector(\".gantt_resources\"));\n\t};\n\n\tfunction _getAmountInput(item, value, disabled) {\n\t\tvar _attributes;\n\t\tvar innerHTML = \"\";\n\n\t\tif (!item) return;\n\n\t\t_attributes = [{ key: \"data-item-id\", value: item.key }, { key: \"class\", value: \"gantt_resource_amount_input\"}];\n\t\tif (disabled) {\n\t\t\t_attributes.push({ key: \"disabled\", value: \"disabled\" });\n\t\t}\n\n\t\tif (item.options) {\n\t\t\tinnerHTML += htmlHelpers.getHtmlSelect(item.options, _attributes, value);\n\t\t} else {\n\t\t\t_attributes[_attributes.length] = { key: \"value\", value: value || \"\" };\n\t\t\tinnerHTML += htmlHelpers.getHtmlInput(_attributes);\n\t\t}\n\t\treturn innerHTML;\n\t}\n\n\tfunction _getValue(el) {\n\t\treturn el.value.trim();\n\t}\n\n\tfunction _initEvents(node, ev, sns, context) {\n\t\tif (localCache.eventsInitialized[sns.id]) return;\n\n\t\tvar _applyFilter = function(e) {\n\t\t\tvar resultSns;\n\t\t\tvar value = ev[sns.map_to];\n\t\t\tvar query;\n\t\t\tvar hideUnsetted;\n\t\t\tvar input;\n\t\t\tvar checkbox;\n\t\t\tvar filterCache = _getFilterCache(sns);\n\n\t\t\tcheckbox = filterCache.checkbox;\n\t\t\tinput = filterCache.input;\n\n\t\t\thideUnsetted = checkbox.checked;\n\t\t\tquery = _getValue(input);\n\t\t\tresultSns = _getSnsToHideUnsetted(sns, ev, query, hideUnsetted);\n\t\t\tfilterCache.filterApplied = true;\n\t\t\tcontext.form_blocks.resources.set_value(node, value, ev, resultSns);\n\t\t};\n\n\t\tfunction _resourceChangeListener(e) {\n\t\t\tvar target = e.target;\n\t\t\tvar parent;\n\t\t\tvar input;\n\n\t\t\tif (e.target.type === \"checkbox\") {\n\t\t\t\tparent = target.parentNode;\n\t\t\t\tinput = parent.querySelector(_getInputElementSelector());\n\t\t\t\tinput.disabled = !target.checked;\n\t\t\t\tvar itemId = input.getAttribute(\"data-item-id\");\n\t\t\t\tvar row = domHelpers.locateClassName(e, \"gantt_resource_row\");\n\t\t\t\tvar valueInput = row.querySelector(\".gantt_resource_amount_input\");\n\t\t\t\trow.setAttribute(\"data-checked\", target.checked);\n\t\t\t\tif (target.checked) {\n\t\t\t\t\tif (input.nodeName.toLowerCase() === \"select\") {\n\t\t\t\t\t\tgantt.callEvent(\"onResourcesSelectActivated\", [{ target: input }]);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar resId = itemId;\n\t\t\t\t\tvar defaultValue = sns.default_value;\n\t\t\t\t\tsns.options.forEach(function(option){\n\t\t\t\t\t\tif(option.key == resId && option.default_value){\n\t\t\t\t\t\t\tdefaultValue = option.default_value;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tif(valueInput && !valueInput.value && defaultValue !== undefined){\n\t\t\t\t\t\tvalueInput.value = defaultValue;\n\t\t\t\t\t\t_saveValues(sns, this);\n\t\t\t\t\t}\n\n\t\t\t\t\tif(valueInput.select) {\n\t\t\t\t\t\tvalueInput.select();\n\t\t\t\t\t}else if(valueInput.focus){\n\t\t\t\t\t\tvalueInput.focus();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tif (localCache.resourcesValues[sns.id]) {\n\t\t\t\t\t\tdelete localCache.resourcesValues[sns.id][itemId];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (e.target.type === \"text\" || e.target.nodeName.toLowerCase() === \"select\") {\n\t\t\t\tparent = target.parentNode.parentNode;\n\t\t\t\t\n\t\t\t\tinput = e.target;\n\t\t\t\t_saveValues(sns, this);\n\t\t\t}\n\t\t}\n\n\t\tfunction _saveValues(sns, domElement) {\n\t\t\tvar selector = _getInputElementSelector();\n\t\t\tvar inputs = domElement.querySelectorAll(selector);\n\n\t\t\tlocalCache.resourcesValues[sns.id] = localCache.resourcesValues[sns.id] || {};\n\n\t\t\tfor (var i = 0; i < inputs.length; i++) {\n\t\t\t\tvar key = inputs[i].getAttribute(\"data-item-id\");\n\n\t\t\t\tif (!inputs[i].disabled) {\n\t\t\t\t\tlocalCache.resourcesValues[sns.id][key] = inputs[i].value;\n\t\t\t\t} else {\n\t\t\t\t\tdelete localCache.resourcesValues[sns.id][key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t_applyFilter = helpers.throttle(_applyFilter, 100);\n\n\t\t_getFilterCache(sns).container.addEventListener(\"keyup\", _applyFilter);\n\t\t_getFilterCache(sns).container.addEventListener(\"input\", _applyFilter, true);\n\t\t_getFilterCache(sns).container.addEventListener(\"change\", _applyFilter, true);\n\t\t_getResourcesElement(sns).addEventListener(\"input\", _resourceChangeListener);\n\t\t_getResourcesElement(sns).addEventListener(\"change\", _resourceChangeListener);\n\t\tgantt.attachEvent(\"onResourcesSelectActivated\", gantt.bind(_resourceChangeListener, _getResourcesElement(sns)));\n\t\tlocalCache.eventsInitialized[sns.id] = true;\n\t}\n\n\tfunction _getSnsToHideUnsetted(sns, ev, query, hideUnsetted) {\n\t\tvar comparison;\n\t\tvar resultSns;\n\n\t\tif (!hideUnsetted) {\n\t\t\tif (query === \"\") {// show all\n\t\t\t\treturn sns;\n\t\t\t}\n\n\t\t\tcomparison = function(entry) {// show matching labels only\n\t\t\t\tif (entry.label.indexOf(query) >= 0) {\n\t\t\t\t\treturn entry;\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\tvar collection = ev[sns.map_to] || [];\n\n\t\t\tif (!helpers.isArray(collection)) {\n\t\t\t\tcollection = [collection];\n\t\t\t}\n\t\t\t\n\t\t\t// copy section array in order not to modify ev[sns.map_to]\n\t\t\tcollection = collection.slice();\n\n\t\t\tif (collection.length === 0) {//nothing setted\n\t\t\t\tcollection = [];\n\t\t\t\tresultSns = gantt.copy(sns);\n\t\t\t\tresultSns.options = [];\n\t\t\t\tfor (var key in localCache.resourcesValues[sns.id]) {\n\t\t\t\t\tcollection.push({resource_id: key, value: localCache.resourcesValues[sns.id][key]});\n\t\t\t\t}\n\n\t\t\t\tif (collection.length === 0) {\n\t\t\t\t\treturn resultSns;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (var key in localCache.resourcesValues[sns.id]) {\n\t\t\t\t\tvar searchResult = helpers.arrayFind(collection, function(entry) {\n\t\t\t\t\t\treturn entry.id == key;\n\t\t\t\t\t});\n\n\t\t\t\t\tif (!searchResult) {\n\t\t\t\t\t\tcollection.push({resource_id: key, value: localCache.resourcesValues[sns.id][key]});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar itemIds = {};\n\n\t\t\tfor (var i=0; i < collection.length; i++) {\n\t\t\t\titemIds[collection[i].resource_id] = true;\n\t\t\t}\n\t\t\tcomparison = function(entry) {//show setted and filtered if field is filled\n\t\t\t\tif (itemIds[String(entry.key)] && (query === \"\" || entry.label.indexOf(query) >= 0)) {\n\t\t\t\t\treturn entry;\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tresultSns = gantt.copy(sns);\n\t\tresultSns.options = helpers.arrayFilter(resultSns.options, comparison);\n\t\treturn resultSns;\n\t}\n\n\tfunction _getInputElementSelector(isChecked) {\n\t\tif(isChecked === undefined){\n\t\t\treturn \".gantt_resource_amount_input\";\n\t\t}else{\n\t\t\treturn \"[data-checked='\"+(isChecked ? \"true\" : \"false\") + \"'] .gantt_resource_amount_input\";\n\t\t}\n\t}\n\n\tfunction _setResourcesElement(node, sns) {\n\t\tif (!localCache.resources[sns.id]) {\n\t\t\tlocalCache.resources[sns.id] = node.querySelector(\".gantt_resources\");\n\t\t}\n\t\treturn localCache.resources[sns.id];\n\t}\n\n\tfunction _getResourcesElement(sns) {\n\t\treturn localCache.resources[sns.id];\n\t}\n\n\tfunction _setFilterCache(node, sns) {\n\t\tif (!localCache.filter[sns.id]) {\n\t\t\tvar container = node.querySelector(\".gantt_resources_filter\");\n\t\t\tvar input = container.querySelector(\".gantt_resources_filter_input\");\n\t\t\tvar checkbox = container.querySelector(\".switch_unsetted\");\n\n\t\t\tlocalCache.filter[sns.id] = {\n\t\t\t\tcontainer: container,\n\t\t\t\tinput: input,\n\t\t\t\tcheckbox: checkbox,\n\t\t\t\tfilterApplied: false\n\t\t\t};\n\t\t}\n\t\treturn localCache.filter[sns.id];\n\t}\n\n\tfunction _getFilterCache(sns) {\n\t\treturn localCache.filter[sns.id];\n\t}\n\n\tfunction _clearCached() {\n\t\tfor (var key in localCache.filter) {\n\t\t\tlocalCache.filter[key].checkbox.checked = false;\n\t\t\tlocalCache.filter[key].input.value = \"\";\n\t\t\tlocalCache.filter[key].filterApplied = false;\n\t\t}\n\t\tlocalCache.resourcesValues = {};\n\t}\n\n\tfunction _getDisplayValues(sns, value, option) {\n\t\tvar data = {};\n\n\t\tif (value) {\n\t\t\tvar searchResult;\n\n\t\t\tif (helpers.isArray(value)) {\n\t\t\t\tsearchResult = helpers.arrayFind(value, function(val) {\n\t\t\t\t\treturn (val.resource_id == option.key);\n\t\t\t\t});\n\t\t\t} else if (value.resource_id == option.key) {\n\t\t\t\tsearchResult = value;\n\t\t\t}\n\n\t\t\tif (searchResult) {\n\t\t\t\tdata.value = searchResult.value;\n\t\t\t}\n\t\t}\n\t\tif (localCache.resourcesValues[sns.id] && localCache.resourcesValues[sns.id][option.key]) {\n\t\t\tdata.value = localCache.resourcesValues[sns.id][option.key];\n\t\t}\n\t\treturn data;\n\t}\n\n\treturn ResourcesControl;\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\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\tvar ResourcesControl = require(\"./controls/resources_control\")(gantt);\n\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\tresources: new ResourcesControl()\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 helpers = require(\"../utils/helpers\");\n\nmodule.exports = function(gantt) {\n\n\tgantt.isUnscheduledTask = function (task) {\n\t\tgantt.assert(task && task instanceof Object, \"Invalid argument task=\"+task+\" of gantt.isUnscheduledTask. Task object was expected\");\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\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\tgantt.assert(task && task instanceof Object, \"Invalid argument task=\"+task+\" of gantt.isSummaryTask. Task object was expected\");\n\t\t\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 (helpers.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\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\treturn 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 helpers = require(\"../utils/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 (helpers.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\t// TODO: why eslint fails on regexp?\n\t// eslint-disable-next-line no-control-regex\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\n\tgantt.getGridColumns = function() {\n\t\treturn gantt.config.columns.slice();\n\t};\n};","var Grid = require(\"./ui/grid/grid\");\n\nmodule.exports = function(gantt) {\n\trequire(\"./grid_column_api.gpl\")(gantt);\n\tGrid.prototype.getGridColumns = function () {\n\t\tvar config = this.$getConfig();\n\t\tvar columns = config.columns,\n\t\t\tvisibleColumns = [];\n\n\t\tfor (var i = 0; i < columns.length; i++) {\n\t\t\tif (!columns[i].hide)\n\t\t\t\tvisibleColumns.push(columns[i]);\n\t\t}\n\n\t\treturn visibleColumns;\n\t};\n};","module.exports = function(gantt) {\n\tvar TreeDataStore = require(\"./datastore/treedatastore\");\n\n\tvar old_has_children = TreeDataStore.prototype.hasChild;\n\tgantt.$data.tasksStore.hasChild = function (id) {\n\t\tif (old_has_children.apply(this, arguments))\n\t\t\treturn true;\n\t\tif (this.exists(id)) {\n\t\t\treturn this.getItem(id)[gantt.config.branch_loading_property];\n\t\t}\n\t\treturn false;\n\t};\n\n\tfunction needLoading(id) {\n\t\tif (gantt.config.branch_loading && gantt._load_url) {\n\t\t\tvar was_rendered = gantt.getUserData(id, \"was_rendered\");\n\t\t\t// call ajax only if branch has children\n\t\t\tif (!was_rendered && (!gantt.getChildren(id).length && gantt.hasChild(id))) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tgantt.attachEvent(\"onTaskOpened\", function (id) {\n\t\tif (gantt.config.branch_loading && gantt._load_url) {\n\t\t\t// call ajax only if branch has children\n\t\t\tif (needLoading(id)) {\n\t\t\t\tvar url = gantt._load_url;\n\t\t\t\turl = url.replace(/(\\?|&)?parent_id=.+&?/, \"\");\n\t\t\t\tvar param = url.indexOf(\"?\") >= 0 ? \"&\" : \"?\";\n\t\t\t\tvar y = gantt.getScrollState().y || 0;\n\n\t\t\t\tgantt.load(url + param + \"parent_id=\" + encodeURIComponent(id), this._load_type, function () {\n\t\t\t\t\tif (y) {\n\t\t\t\t\t\tgantt.scrollTo(null, y);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tgantt.setUserData(id, \"was_rendered\", true);\n\t\t\t}\n\t\t}\n\t});\n\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\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;\n\t\tvar task = gantt.getTask(id);\n\t\tvar targetType = getTaskTypeToUpdate(task);\n\n\t\tif (targetType !== false) {\n\t\t\tupdateTaskType(task, targetType);\n\t\t}\n\t}\n\n\tfunction updateTaskType(task, targetType) {\n\t\ttask.type = targetType;\n\t\tgantt.updateTask(task.id);\n\t}\n\n\tfunction getTaskTypeToUpdate(task) {\n\t\tvar allTypes = gantt.config.types;\n\t\tvar hasChildren = gantt.hasChild(task.id);\n\t\tvar taskType = gantt.getTaskType(task.type);\n\n\t\tif (hasChildren && taskType === allTypes.task) {\n\t\t\treturn allTypes.project;\n\t\t}\n\n\t\tif (!hasChildren && taskType === allTypes.project) {\n\t\t\treturn allTypes.task;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tvar isParsingDone = true;\n\n\tgantt.attachEvent(\"onParse\", callIfEnabled(function() {\n\t\tisParsingDone = false;\n\n\t\tgantt.batchUpdate(function() {\n\t\t\tgantt.eachTask(function(task) {\n\t\t\t\tvar targetType = getTaskTypeToUpdate(task);\n\t\t\t\tif (targetType !== false) {\n\t\t\t\t\tupdateTaskType(task, targetType);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tisParsingDone = true;\n\t}));\n\n\tgantt.attachEvent(\"onAfterTaskAdd\", function() {\n\t\tif (isParsingDone)\n\t\t\tcallIfEnabled(updateParents);\n\t});\n\n\tgantt.attachEvent(\"onAfterTaskUpdate\", function() {\n\t\tif (isParsingDone)\n\t\t\tcallIfEnabled(updateParents);\n\t});\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\n\tgantt.attachEvent(\"onRowDragStart\", callIfEnabled(function(id, target, e) {\n\t\toriginalRowDndParent = gantt.getParent(id);\n\t\treturn true;\n\t}));\n\n\tgantt.attachEvent(\"onRowDragEnd\", callIfEnabled(function(id, target) {\n\t\tupdateAfterRemoveChild(originalRowDndParent);\n\t\tupdateParents(id);\n\t}));\n\n\tvar originalMoveTaskParent;\n\n\tgantt.attachEvent(\"onBeforeTaskMove\", callIfEnabled(function(sid, parent, tindex) {\n\t\toriginalMoveTaskParent = gantt.getParent(sid);\n\t\treturn true;\n\t}));\n\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};","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(dataProcessor){\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\t\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\tgantt.attachEvent(\"onDataProcessorReady\", callIfEnabled(silenceDataProcessor));\n\n\tvar ready = false;\n\tgantt.attachEvent(\"onGanttReady\", function(){\n\t\tif(ready){\n\t\t\treturn;\n\t\t}\n\t\tready = true;\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\tgantt.attachEvent(\"onBeforeUndoStack\", function(action){\n\t\tfor(var i = 0; i < action.commands.length; i++){\n\t\t\tvar command = action.commands[i];\n\t\t\tif(command.entity === \"task\" && command.value.type === gantt.config.types.placeholder){\n\t\t\t\taction.commands.splice(i,1);\n\t\t\t\ti--;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t});\n\n};","var helpers = require(\"../../utils/helpers\");\n\nfunction createResourceMethods(gantt){\n\n\tvar resourceTaskCache = {};\n\n\tgantt.$data.tasksStore.attachEvent(\"onStoreUpdated\", function(){\n\t\tresourceTaskCache = {};\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 (helpers.isArray(propertyValue)) {\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 (task.type == gantt.config.types.project)\n\t\t\t\t\treturn;\n\n\t\t\t\tvar resourceValue;\n\t\t\t\tif (!helpers.isArray(task[property])) {\n\t\t\t\t\tresourceValue = [task[property]];\n\t\t\t\t} else {\n\t\t\t\t\tresourceValue = task[property];\n\t\t\t\t}\n\n\t\t\t\thelpers.forEach(resourceValue, function(value) {\n\t\t\t\t\tif(value && (resourceHash[value] || resourceHash[value.resource_id])) {\n\t\t\t\t\t\tres.push(task);\n\t\t\t\t\t}\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(resource, resourceProperty, scale, timeline){\n\t\tvar cacheKey = resource.id + \"_\" + resourceProperty + \"_\" + scale.unit + \"_\" + scale.step;\n\t\tvar res;\n\t\tif (!resourceTaskCache[cacheKey]) {\n\t\t\tres = resourceTaskCache[cacheKey] = calculateResourceLoad(resource, 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(resource, resourceProperty, scale, timeline) {\n\n\t\tvar tasks;\n\t\tif(resource.$role == \"task\"){\n\t\t\ttasks = [];\n\t\t}else{\n\t\t\ttasks = getTaskBy(resourceProperty, resource.id);\n\t\t}\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(resource, config.resource_property, 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\n\n\tfunction renderBar(level, start, end, timeline){\n\t\tvar top = (1 - (level*1||0))*100;\n\t\tvar left = timeline.posFromDate(start);\n\t\tvar right = timeline.posFromDate(end);\n\t\tvar element = document.createElement(\"div\");\n\t\telement.className = \"gantt_histogram_hor_bar\";\n\t\telement.style.top = top + '%';\n\t\telement.style.left = left + \"px\";\n\t\telement.style.width = (right - left + 1) + \"px\";\n\t\treturn element;\n\t}\n\tfunction renderConnection(prevLevel, nextLevel, left){\n\t\tif(prevLevel === nextLevel){\n\t\t\treturn null;\n\t\t}\n\n\t\tvar top = 1 - Math.max(prevLevel, nextLevel);\n\t\tvar height = Math.abs(prevLevel - nextLevel);\n\t\tvar element = document.createElement(\"div\");\n\t\telement.className = \"gantt_histogram_vert_bar\";\n\t\telement.style.top = top*100 + \"%\";\n\t\telement.style.height = height*100 + \"%\";\n\t\telement.style.left = left + \"px\";\n\n\t\treturn element;\n\t}\n\n\tfunction renderHistogramLine(capacity, timeline, maxCapacity){\n\t\tvar scale = timeline.getScale();\n\n\t\tvar el = document.createElement(\"div\");\n\n\t\tfor(var i = 0; i < scale.trace_x.length; i++){\n\t\t\tvar colStart = scale.trace_x[i];\n\t\t\tvar colEnd = scale.trace_x[i + 1] || gantt.date.add(colStart, scale.step, scale.unit);\n\t\t\tvar col = scale.trace_x[i].valueOf();\n\t\t\tvar level = Math.min(capacity[col]/maxCapacity, 1) || 0;\n\t\t\tif(level < 0){\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tvar nextLevel = Math.min(capacity[colEnd.valueOf()]/maxCapacity, 1) || 0;\n\n\n\t\t\tvar bar = renderBar(level, colStart, colEnd, timeline);\n\t\t\tif(bar){\n\t\t\t\tel.appendChild(bar);\n\t\t\t}\n\t\t\tvar connection = renderConnection(level, nextLevel, timeline.posFromDate(colEnd));\n\t\t\tif(connection){\n\t\t\t\tel.appendChild(connection);\n\t\t\t}\n\n\t\t}\n\n\n\t\treturn el;\n\t}\n\n\tfunction renderResourceHistogram(resource, timeline) {\n\t\tvar config = timeline.$getConfig(),\n\t\t\ttemplates = timeline.$getTemplates();\n\t\tvar timetable = getResourceLoad(resource, config.resource_property, timeline.getScale(), timeline);\n\n\t\tvar cells = [];\n\t\tvar capacityMatrix = {};\n\t\tvar maxCapacity = resource.capacity || timeline.$config.capacity || 24;\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.histogram_cell_class(day.start_date, day.end_date, resource, day.tasks);\n\t\t\tvar content = templates.histogram_cell_label(day.start_date, day.end_date, resource, day.tasks);\n\t\t\tvar fill = templates.histogram_cell_allocated(day.start_date, day.end_date, resource, day.tasks);\n\t\t\tvar capacity = templates.histogram_cell_capacity(day.start_date, day.end_date, resource, day.tasks);\n\t\t\tcapacityMatrix[day.start_date.valueOf()] = capacity || 0;\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_histogram_cell\", 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 + 1) + 'px'\n\t\t\t\t].join(\";\");\n\n\n\t\t\t\tif (content) {\n\t\t\t\t\tcontent = \"
\" + content +\"
\";\n\t\t\t\t}\n\n\t\t\t\tif (fill) {\n\n\t\t\t\t\tcontent = \"
\" + content;\n\t\t\t\t}\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\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\n\t\t\tvar capacityElement = renderHistogramLine(capacityMatrix, timeline, maxCapacity);\n\n\t\t\tif (capacityElement) {\n\t\t\t\tcapacityElement.setAttribute(\"data-resource-id\", resource.id);\n\t\t\t\tcapacityElement.style.position = \"absolute\";\n\t\t\t\tcapacityElement.style.top = (sizes.top + 1) + \"px\";\n\t\t\t\tcapacityElement.style.height = (config.row_height - 1) + \"px\";\n\t\t\t\tcapacityElement.style.left = 0;\n\t\t\t\trow.appendChild(capacityElement);\n\t\t\t}\n\t\t}\n\n\t\treturn row;\n\t}\n\n\tfunction selectAssignments(resourceId, taskId, result){\n\t\tvar property = gantt.config.resource_property;\n\t\tvar owners = [];\n\t\tif (gantt.getDatastore(\"task\").exists(taskId)) {\n\t\t\tvar task = gantt.getTask(taskId);\n\t\t\towners = task[property] || [];\n\t\t}\n\n\t\tif (!Array.isArray(owners)) {\n\t\t\towners = [owners];\n\t\t}\n\t\tfor (var i = 0; i < owners.length; i++) {\n\t\t\tif (owners[i].resource_id == resourceId) {\n\t\t\t\tresult.push({task_id: task.id, resource_id:owners[i].resource_id, value:owners[i].value});\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction getResourceAssignments(resourceId, taskId){\n\t\t// resource assignment as an independent module:\n\t\t// {taskId:, resourceId, value}\n\t\t// TODO: probably should add a separate datastore for these\n\t\tvar assignments = [];\n\t\tvar property = gantt.config.resource_property;\n\t\tif(taskId !== undefined){\n\t\t\tselectAssignments(resourceId, taskId, assignments);\n\t\t}else{\n\t\t\tvar tasks = gantt.getTaskBy(property, resourceId);\n\t\t\ttasks.forEach(function(task){\n\t\t\t\tselectAssignments(resourceId, task.id, assignments);\n\t\t\t});\n\t\t}\n\t\treturn assignments;\n\t}\n\n\treturn {\n\t\trenderLine: renderResourceLine,\n\t\trenderHistogram: renderResourceHistogram,\n\t\tfilterTasks: getTaskBy,\n\t\tgetResourceAssignments: getResourceAssignments\n\t};\n}\n\nmodule.exports = function(gantt){\n\tvar methods = createResourceMethods(gantt);\n\n\tgantt.getTaskBy = methods.filterTasks;\n\tgantt.getResourceAssignments = methods.getResourceAssignments;\n\tgantt.$ui.layers.resourceRow = methods.renderLine;\n\tgantt.$ui.layers.resourceHistogram = methods.renderHistogram;\n\tgantt.config.resource_property = \"owner_id\";\n\tgantt.config.resource_store = \"resource\";\n\tgantt.config.resource_render_empty_cells = false;\n\n\t/**\n\t * these are placeholder functions that should be redefined by the user\n\t*/\n\tgantt.templates.histogram_cell_class = function(start_date, end_date, resource, tasks) {};\n\tgantt.templates.histogram_cell_label = function(start_date, end_date, resource, tasks) {\n\t\treturn tasks.length + \"/3\";\n\t};\n\tgantt.templates.histogram_cell_allocated = function(start_date, end_date, resource, tasks) {\n\t\treturn tasks.length / 3;\n\t};\n\tgantt.templates.histogram_cell_capacity = function(start_date, end_date, resource, tasks) {\n\t\treturn 0;\n\t};\n\n\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 (!window.dhtmlx.attaches)\n\twindow.dhtmlx.attaches = {};\n\n\twindow.dhtmlx.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\twindow.dhtmlXCellObject.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\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})(window.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\tfunction resetCache(){\n\t\twbs.reset();\n\t\treturn true;\n\t}\n\n\tgantt.attachEvent(\"onAfterTaskMove\", resetCache);\n\tgantt.attachEvent(\"onBeforeParse\", resetCache);\n\tgantt.attachEvent(\"onAfterTaskDelete\", resetCache);\n\tgantt.attachEvent(\"onAfterTaskAdd\", resetCache);\n\tgantt.attachEvent(\"onAfterSort\", resetCache);\n\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\tfunction 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\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}, 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\tthis.serverProcessor = serverProcessorURL;\n\tthis.action_param = \"!nativeeditor_status\";\n\n\tthis.object = null;\n\tthis.updatedRows = []; //ids of updated rows\n\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\n\tthis._waitMode = 0;\n\tthis._in_progress = {};//?\n\tthis._invalid = {};\n\tthis.mandatoryFields = [];\n\tthis.messages = [];\n\n\tthis.styles = {\n\t\tupdated: \"font-weight:bold;\",\n\t\tinserted: \"font-weight:bold;\",\n\t\tdeleted: \"text-decoration : line-through;\",\n\t\tinvalid: \"background-color:FFE0E0;\",\n\t\tinvalid_cell: \"border-bottom:2px solid red;\",\n\t\terror: \"color:red;\",\n\t\tclear: \"font-weight:normal;text-decoration:none;\"\n\t};\n\n\tthis.enableUTFencoding(true);\n\teventable(this);\n\n\treturn 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\n\t\t} else {\n\t\t\tthis._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\" || this._tMode == \"REST-JSON\") {\n\t\t\tthis._tSend = false;\n\t\t\tthis._endnm = true;\n\t\t\tthis._serialize_as_json = true;\n\t\t\tthis._headers = this._headers || {};\n\t\t\tthis._headers[\"Content-type\"] = \"application/json\";\n\t\t}\n\t},\n\tescape: function (data) {\n\t\tif (this._utf)\n\t\t\treturn encodeURIComponent(data);\n\t\telse\n\t\t\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*/\n\tenableUTFencoding: function (mode) {\n\t\tthis._utf = !!mode;\n\t},\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\t},\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\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\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\t\t\tstr = this.styles[invalid];\n\t\t\tstate = true;\n\t\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\n\t\t\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\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 = {\n\t\t\tvalue: mode,\n\t\t\tdetails: details,\n\t\t\ttoString: function () {\n\t\t\t\treturn this.value.toString();\n\t\t\t}\n\t\t};\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\n\n\t\tif (typeof rowId == \"undefined\" || this._tSend) return this.sendAllData();\n\t\tif (this._in_progress[rowId]) return false;\n\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\t},\n\t_beforeSendData: function (data, rowId) {\n\t\tif (!this.callEvent(\"onBeforeUpdate\", [rowId, this.getState(rowId), data])) return false;\n\t\tthis._sendData(data, rowId);\n\t},\n\tserialize: function (data, id) {\n\t\tif (this._serialize_as_json) {\n\t\t\treturn this._serializeAsJSON(data);\n\t\t}\n\n\t\tif (typeof data == \"string\")\n\t\t\treturn data;\n\t\tif (typeof id != \"undefined\")\n\t\t\treturn this.serialize_one(data, \"\");\n\t\telse {\n\t\t\tvar stack = [];\n\t\t\tvar keys = [];\n\t\t\tfor (var key in data)\n\t\t\t\tif (data.hasOwnProperty(key)) {\n\t\t\t\t\tstack.push(this.serialize_one(data[key], key + this.post_delim));\n\t\t\t\t\tkeys.push(key);\n\t\t\t\t}\n\t\t\tstack.push(\"ids=\" + this.escape(keys.join(\",\")));\n\t\t\tif (this.$gantt.security_key)\n\t\t\t\tstack.push(\"dhx_security=\" + this.$gantt.security_key);\n\t\t\treturn stack.join(\"&\");\n\t\t}\n\t},\n\n\t_serializeAsJSON: function (data) {\n\t\tif (typeof data == \"string\")\n\t\t\treturn data;\n\n\t\tvar copy = utils.copy(data);\n\t\tif(this._tMode == \"REST-JSON\"){\n\t\t\tdelete copy.id;\n\t\t\tdelete copy[this.action_param];\n\t\t}\n\n\t\treturn JSON.stringify(copy);\n\t},\n\n\tserialize_one: function (data, pref) {\n\t\tif (typeof data == \"string\")\n\t\t\treturn data;\n\t\tvar stack = [];\n\t\tvar serialized = \"\";\n\t\tfor (var key in data)\n\t\t\tif (data.hasOwnProperty(key)) {\n\t\t\t\tif ((key == \"id\" || key == this.action_param) && this._tMode == \"REST\") continue;\n\t\t\t\tif (typeof data[key] === \"string\" || typeof data[key] === \"number\") {\n\t\t\t\t\tserialized = data[key];\n\t\t\t\t} else {\n\t\t\t\t\tserialized = JSON.stringify(data[key]);\n\t\t\t\t}\n\t\t\t\tstack.push(this.escape((pref || \"\") + key) + \"=\" + this.escape(serialized));\n\t\t\t}\n\t\treturn stack.join(\"&\");\n\t},\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\t_sendData: function (a1, rowId) {\n\t\tif (!a1) return; //nothing to send\n\t\tif (!this.callEvent(\"onBeforeDataSending\", rowId ? [rowId, this.getState(rowId), a1] : [null, null, a1])) return false;\n\n\t\tif (rowId)\n\t\t\tthis._in_progress[rowId] = (new Date()).valueOf();\n\n\t\tvar _this = this;\n\n\t\tvar ajax = this.$gantt.ajax;\n\n\t\tvar queryParams = {\n\t\t\tcallback: function (xml) {\n\t\t\t\tvar ids = [];\n\t\t\t\tvar key;\n\n\t\t\t\tif (rowId)\n\t\t\t\t\tids.push(rowId);\n\t\t\t\telse if (a1)\n\t\t\t\t\tfor (key in a1)\n\t\t\t\t\t\tids.push(key);\n\n\t\t\t\treturn _this.afterUpdate(_this, xml, ids);\n\t\t\t},\n\t\t\theaders: this._headers\n\t\t};\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\tswitch (this._tMode) {\n\t\t\tcase \"GET\":\n\t\t\t\tqueryParams.url = a4 + ajax.urlSeparator(a4) + this.serialize(a1, rowId);\n\t\t\t\tqueryParams.method = \"GET\";\n\t\t\t\tbreak;\n\t\t\tcase \"POST\":\n\t\t\t\tqueryParams.url = a4;\n\t\t\t\tqueryParams.method = \"POST\";\n\t\t\t\tqueryParams.data = this.serialize(a1, rowId);\n\t\t\t\tbreak;\n\t\t\tcase \"JSON\":\n\t\t\t\tvar data = {};\n\t\t\t\tfor (var key in a1) {\n\t\t\t\t\tif (key === this.action_param || key === \"id\" || key === \"gr_id\") continue;\n\t\t\t\t\tdata[key] = a1[key];\n\t\t\t\t}\n\n\t\t\t\tqueryParams.url = a4;\n\t\t\t\tqueryParams.method = \"POST\";\n\t\t\t\tqueryParams.data = JSON.stringify({\n\t\t\t\t\tid: rowId,\n\t\t\t\t\taction: a1[this.action_param],\n\t\t\t\t\tdata: data\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"REST\":\n\t\t\tcase \"REST-JSON\":\n\t\t\t\tvar url = a3.replace(/(&|\\?)editing=true/, \"\");\n\t\t\t\tdata = \"\";\n\n\t\t\t\tswitch (this.getState(rowId)) {\n\t\t\t\t\tcase \"inserted\":\n\t\t\t\t\t\tqueryParams.method = \"POST\";\n\t\t\t\t\t\tqueryParams.data = this.serialize(a1, rowId);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"deleted\":\n\t\t\t\t\t\tqueryParams.method = \"DELETE\";\n\t\t\t\t\t\turl = url + (url.slice(-1) == \"/\" ? \"\" : \"/\") + rowId;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tqueryParams.method = \"PUT\";\n\t\t\t\t\t\tqueryParams.data = this.serialize(a1, rowId);\n\t\t\t\t\t\turl = url + (url.slice(-1) == \"/\" ? \"\" : \"/\") + rowId;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tqueryParams.url = this._applyPayload(url);\n\t\t\t\tbreak;\n\t\t}\n\n\t\tajax.query(queryParams);\n\t\tthis._waitMode++;\n\t},\n\n\t_forEachUpdatedRow: function (code) {\n\t\tvar updatedRows = this.updatedRows.slice();\n\t\tfor (var i = 0; i < updatedRows.length; i++) {\n\t\t\tvar rowId = updatedRows[i];\n\t\t\tif (this.obj.getUserData(rowId, this.action_param)) {\n\t\t\t\tcode.call(this, rowId);\n\t\t\t}\n\t\t}\n\t},\n\n\tsendAllData: function () {\n\t\tif (!this.updatedRows.length) return;\n\n\t\tthis.messages = [];\n\t\tvar valid = true;\n\n\t\tthis._forEachUpdatedRow(function (rowId) {\n\t\t\tvalid &= this.checkBeforeUpdate(rowId);\n\t\t});\n\n\t\tif (!valid && !this.callEvent(\"onValidationError\", [\"\", this.messages])) return false;\n\n\t\tif (this._tSend) {\n\t\t\tthis._sendData(this._getAllData());\n\t\t} else {\n\t\t\tvar stop = false;\n\n\t\t\t// this.updatedRows can be spliced from onBeforeUpdate via dp.setUpdated false\n\t\t\t// use an iterator instead of for(var i = 0; i < this.updatedRows; i++) then\n\t\t\tthis._forEachUpdatedRow(function (rowId) {\n\t\t\t\tif (stop) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!this._in_progress[rowId]) {\n\t\t\t\t\tif (this.is_invalid(rowId)) return;\n\t\t\t\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\n\t\t\t\t\tif (this._waitMode && (this.obj.mytype == \"tree\" || this.obj._h2)) {\n\t\t\t\t\t\tstop = true; //block send all for tree\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t},\n\n\t_getAllData: function (rowId) {\n\t\tvar out = {};\n\t\tvar has_one = false;\n\n\t\tthis._forEachUpdatedRow(function (id) {\n\t\t\tif (this._in_progress[id] || this.is_invalid(id)) return;\n\t\t\tvar row = this._getRowData(id);\n\t\t\tif (!this.callEvent(\"onBeforeUpdate\", [id, this.getState(id), row])) return;\n\t\t\tout[id] = row;\n\t\t\thas_one = true;\n\t\t\tthis._in_progress[id] = (new Date()).valueOf();\n\t\t});\n\n\t\treturn has_one ? out : null;\n\t},\n\n\n\t/**\n\t* \t@desc: specify column which value should be varified before sending to server\n\t*\t@param: ind - column index (0 based)\n\t*\t@param: verifFunction - function (object) which should verify cell value (if not specified, then value will be compared to empty string). Two arguments will be passed into it: value and column name\n\t*\t@type: public\n\t*/\n\tsetVerificator: function (ind, verifFunction) {\n\t\tthis.mandatoryFields[ind] = verifFunction || (function (value) { return (value !== \"\"); });\n\t},\n\t/**\n\t* \t@desc: remove column from list of those which should be verified\n\t*\t@param: ind - column Index (0 based)\n\t*\t@type: public\n\t*/\n\tclearVerificator: function (ind) {\n\t\tthis.mandatoryFields[ind] = false;\n\t},\n\n\n\n\n\n\tfindRow: function (pattern) {\n\t\tvar i = 0;\n\t\tfor (i = 0; i < this.updatedRows.length; i++)\n\t\t\tif (pattern == this.updatedRows[i]) break;\n\t\treturn i;\n\t},\n\n\t/**\n\t* \t@desc: define custom actions\n\t*\t@param: name - name of action, same as value of action attribute\n\t*\t@param: handler - custom function, which receives a XMl response content for action\n\t*\t@type: private\n\t*/\n\tdefineAction: function (name, handler) {\n\t\tif (!this._uActions) this._uActions = [];\n\t\tthis._uActions[name] = handler;\n\t},\n\n\t/**\n* @desc: used in combination with setOnBeforeUpdateHandler to create custom client-server transport system\n* @param: sid - id of item before update\n* @param: tid - id of item after up0ate\n* @param: action - action name\n* @type: public\n* @topic: 0\n*/\n\tafterUpdateCallback: function (sid, tid, action, btag) {\n\t\tvar marker = sid;\n\t\tvar correct = (action != \"error\" && action != \"invalid\");\n\t\tif (!correct) this.set_invalid(sid, action);\n\t\tif ((this._uActions) && (this._uActions[action]) && (!this._uActions[action](btag)))\n\t\t\treturn (delete this._in_progress[marker]);\n\n\t\tif (this._in_progress[marker] != \"wait\")\n\t\t\tthis.setUpdated(sid, false);\n\n\t\tvar soid = sid;\n\n\t\tswitch (action) {\n\t\t\tcase \"inserted\":\n\t\t\tcase \"insert\":\n\t\t\t\tif (tid != sid) {\n\t\t\t\t\tthis.setUpdated(sid, false);\n\t\t\t\t\tthis.obj[this._methods[2]](sid, tid);\n\t\t\t\t\tsid = tid;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"delete\":\n\t\t\tcase \"deleted\":\n\t\t\t\tthis.obj.setUserData(sid, this.action_param, \"true_deleted\");\n\t\t\t\tthis.obj[this._methods[3]](sid);\n\t\t\t\tdelete this._in_progress[marker];\n\t\t\t\treturn this.callEvent(\"onAfterUpdate\", [sid, action, tid, btag]);\n\t\t}\n\n\t\tif (this._in_progress[marker] != \"wait\") {\n\t\t\tif (correct) this.obj.setUserData(sid, this.action_param, '');\n\t\t\tdelete this._in_progress[marker];\n\t\t} else {\n\t\t\tdelete this._in_progress[marker];\n\t\t\tthis.setUpdated(tid, true, this.obj.getUserData(sid, this.action_param));\n\t\t}\n\n\t\tthis.callEvent(\"onAfterUpdate\", [soid, action, tid, btag]);\n\t},\n\n\t/**\n\t* \t@desc: response from server\n\t*\t@param: xml - XMLLoader object with response XML\n\t*\t@type: private\n\t*/\n\tafterUpdate: function (that, xml, id) {\n\t\tvar ajax = this.$gantt.ajax;\n\t\t//try to use json first\n\t\tif (window.JSON) {\n\t\t\tvar tag;\n\n\t\t\ttry {\n\t\t\t\ttag = JSON.parse(xml.xmlDoc.responseText);\n\t\t\t} catch (e) {\n\n\t\t\t\t// empty response also can be processed by json handler\n\t\t\t\tif (!xml.xmlDoc.responseText.length) {\n\t\t\t\t\ttag = {};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (tag) {\n\t\t\t\tvar action = tag.action || this.getState(id) || \"updated\";\n\t\t\t\tvar sid = tag.sid || id[0];\n\t\t\t\tvar tid = tag.tid || id[0];\n\t\t\t\tthat.afterUpdateCallback(sid, tid, action, tag);\n\t\t\t\tthat.finalizeUpdate();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t//xml response\n\t\tvar top = ajax.xmltop(\"data\", xml.xmlDoc); //fix incorrect content type in IE\n\t\tif (!top) return this.cleanUpdate(id);\n\t\tvar atag = ajax.xpath(\"//data/action\", top);\n\t\tif (!atag.length) return this.cleanUpdate(id);\n\n\t\tfor (var i = 0; i < atag.length; i++) {\n\t\t\tvar btag = atag[i];\n\t\t\tvar action = btag.getAttribute(\"type\");\n\t\t\tvar sid = btag.getAttribute(\"sid\");\n\t\t\tvar tid = btag.getAttribute(\"tid\");\n\n\t\t\tthat.afterUpdateCallback(sid, tid, action, btag);\n\t\t}\n\t\tthat.finalizeUpdate();\n\t},\n\tcleanUpdate: function (id) {\n\t\tif (id)\n\t\t\tfor (var i = 0; i < id.length; i++)\n\t\t\t\tdelete this._in_progress[id[i]];\n\t},\n\tfinalizeUpdate: function () {\n\t\tif (this._waitMode) this._waitMode--;\n\n\t\tif ((this.obj.mytype == \"tree\" || this.obj._h2) && this.updatedRows.length)\n\t\t\tthis.sendData();\n\t\tthis.callEvent(\"onAfterUpdateFinish\", []);\n\t\tif (!this.updatedRows.length)\n\t\t\tthis.callEvent(\"onFullSync\", []);\n\t},\n\n\n\n\n\n\t/**\n\t* \t@desc: initializes data-processor\n\t*\t@param: anObj - dhtmlxGrid object to attach this data-processor to\n\t*\t@type: public\n\t*/\n\tinit: function (anObj) {\n\t\tthis.obj = anObj;\n\t\tif (this.obj._dp_init)\n\t\t\tthis.obj._dp_init(this);\n\t},\n\n\n\tsetOnAfterUpdate: function (ev) {\n\t\tthis.attachEvent(\"onAfterUpdate\", ev);\n\t},\n\tenableDebug: function (mode) {\n\t},\n\tsetOnBeforeUpdateHandler: function (func) {\n\t\tthis.attachEvent(\"onBeforeDataSending\", func);\n\t},\n\n\n\n\t/* starts autoupdate mode\n\t\t@param interval\n\t\t\ttime interval for sending update requests\n\t*/\n\tsetAutoUpdate: function (interval, user) {\n\t\tinterval = interval || 2000;\n\n\t\tthis._user = user || (new Date()).valueOf();\n\t\tthis._need_update = false;\n\t\t//this._loader = null;\n\t\tthis._update_busy = false;\n\n\t\tthis.attachEvent(\"onAfterUpdate\", function (sid, action, tid, xml_node) {\n\t\t\tthis.afterAutoUpdate(sid, action, tid, xml_node);\n\t\t});\n\t\tthis.attachEvent(\"onFullSync\", function () {\n\t\t\tthis.fullSync();\n\t\t});\n\n\t\tvar self = this;\n\t\twindow.setInterval(function () {\n\t\t\tself.loadUpdate();\n\t\t}, interval);\n\t},\n\n\n\t/* process updating request answer\n\t\tif status == collision version is depricated\n\t\tset flag for autoupdating immidiatly\n\t*/\n\tafterAutoUpdate: function (sid, action, tid, xml_node) {\n\t\tif (action == 'collision') {\n\t\t\tthis._need_update = true;\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t},\n\n\n\t/* callback function for onFillSync event\n\t\tcall update function if it's need\n\t*/\n\tfullSync: function () {\n\t\tif (this._need_update) {\n\t\t\tthis._need_update = false;\n\t\t\tthis.loadUpdate();\n\t\t}\n\t\treturn true;\n\t},\n\n\n\t/* sends query to the server and call callback function\n\t*/\n\tgetUpdates: function (url, callback) {\n\t\tvar ajax = this.$gantt.ajax;\n\t\tif (this._update_busy)\n\t\t\treturn false;\n\t\telse\n\t\t\tthis._update_busy = true;\n\n\t\t//this._loader = this._loader || new dtmlXMLLoaderObject(true);\n\n\t\t//this._loader.async=true;\n\t\t//this._loader.waitCall=callback;\n\t\t//this._loader.loadXML(url);\n\t\tajax.get(url, callback);\n\n\t},\n\n\n\t/* returns xml node value\n\t\t@param node\n\t\t\txml node\n\t*/\n\t_v: function (node) {\n\t\tif (node.firstChild) return node.firstChild.nodeValue;\n\t\treturn \"\";\n\t},\n\n\n\t/* returns values array of xml nodes array\n\t\t@param arr\n\t\t\tarray of xml nodes\n\t*/\n\t_a: function (arr) {\n\t\tvar res = [];\n\t\tfor (var i = 0; i < arr.length; i++) {\n\t\t\tres[i] = this._v(arr[i]);\n\t\t}\n\t\treturn res;\n\t},\n\n\n\t/* loads updates and processes them\n\t*/\n\tloadUpdate: function () {\n\t\tvar ajax = this.$gantt.ajax;\n\t\tvar self = this;\n\t\tvar version = this.obj.getUserData(0, \"version\");\n\t\tvar url = this.serverProcessor + ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + version].join(\"&\");\n\t\turl = url.replace(\"editing=true&\", \"\");\n\t\tthis.getUpdates(url, function (xml) {\n\t\t\tvar vers = ajax.xpath(\"//userdata\", xml);\n\t\t\tself.obj.setUserData(0, \"version\", self._v(vers[0]));\n\n\t\t\tvar upds = ajax.xpath(\"//update\", xml);\n\t\t\tif (upds.length) {\n\t\t\t\tself._silent_mode = true;\n\n\t\t\t\tfor (var i = 0; i < upds.length; i++) {\n\t\t\t\t\tvar status = upds[i].getAttribute('status');\n\t\t\t\t\tvar id = upds[i].getAttribute('id');\n\t\t\t\t\tvar parent = upds[i].getAttribute('parent');\n\t\t\t\t\tswitch (status) {\n\t\t\t\t\t\tcase 'inserted':\n\t\t\t\t\t\t\tself.callEvent(\"insertCallback\", [upds[i], id, parent]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'updated':\n\t\t\t\t\t\t\tself.callEvent(\"updateCallback\", [upds[i], id, parent]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'deleted':\n\t\t\t\t\t\t\tself.callEvent(\"deleteCallback\", [upds[i], id, parent]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tself._silent_mode = false;\n\t\t\t}\n\n\t\t\tself._update_busy = false;\n\t\t\tself = null;\n\t\t});\n\t},\n\n\tdestructor: function () {\n\t\tthis.callEvent(\"onDestroy\", []);\n\t\tthis.detachAllEvents();\n\n\t\tthis.updatedRows = [];\n\t\tthis._in_progress = {};//?\n\t\tthis._invalid = {};\n\t\tthis._headers = null;\n\t\tthis._payload = null;\n\t\tthis.obj = null;\n\t}\n};\n\nmodule.exports = dataProcessor;","var utils = require (\"../../utils/utils\");\n\nfunction updateCallback(upd, id) {\n\tvar data = upd.data || this.xml._xmlNodeToJSON(upd.firstChild);\n\tif(!this.isTaskExists(id))\n\t\treturn;\n\tvar objData = this.getTask(id);\n\tfor(var key in data) {\n\t\tvar property = data[key];\n\t\tswitch(key) {\n\t\t\tcase \"id\":\n\t\t\t\tcontinue;\n\t\t\tcase \"start_date\":\n\t\t\tcase \"end_date\":\n\t\t\t\tproperty = this.templates.xml_date(property);\n\t\t\t\tbreak;\n\t\t\tcase \"duration\":\n\t\t\t\tobjData.end_date = this.calculateEndDate({start_date: objData.start_date, duration: property, task:objData});\n\t\t\t\tbreak;\n\t\t}\n\t\tobjData[key] = property;\n\t}\n\tthis.updateTask(id);\n\tthis.refreshData();\n}\n\nfunction insertCallback(upd, id, parent, mode) {\n\tvar data = upd.data || this.xml._xmlNodeToJSON(upd.firstChild),\n\t\tmethods = {\n\t\t\tadd: this.addTask,\n\t\t\tisExist: this.isTaskExists\n\t\t};\n\tif(mode == \"links\") {\n\t\tmethods.add = this.addLink;\n\t\tmethods.isExist = this.isLinkExists;\n\t}\n\tif(methods.isExist.call(this, id))\n\t\treturn;\n\tdata.id = id;\n\tmethods.add.call(this, data);\n}\n\nfunction deleteCallback(upd, id, parent, mode) {\n\tvar methods = {\n\t\t\"delete\": this.deleteTask,\n\t\t\"isExist\": this.isTaskExists\n\t};\n\tif(mode == \"links\") {\n\t\tmethods[\"delete\"] = this.deleteLink;\n\t\tmethods.isExist = this.isLinkExists;\n\t}\n\tif(methods.isExist.call(this, id))\n\t\tmethods[\"delete\"].call(this, id);\n}\n\nfunction patchDataProcessor(gantt, dataprocessor){\n\tdataprocessor.attachEvent(\"insertCallback\", utils.bind(insertCallback, gantt));\n\tdataprocessor.attachEvent(\"updateCallback\", utils.bind(updateCallback, gantt));\n\tdataprocessor.attachEvent(\"deleteCallback\", utils.bind(deleteCallback, gantt));\n}\n\nmodule.exports = patchDataProcessor;","var liveUpdateHooks = require(\"./live_update_hooks\");\nvar helpers = require(\"../../utils/helpers\");\n\nfunction addDataProcessorHooks(gantt) {\n\n\tgantt.dataProcessor = require(\"./dataprocessor\");\n\n\tfunction detachDataProcessor(gantt, dp){\n\t\tdelete dp.$gantt;\n\t\tdelete dp.setGanttMode;\n\t\tdelete dp._getRowData;\n\t\tdp.afterUpdate = oldAfterUpdate;\n\n\t\tdelete gantt._dp;\n\t\tdelete gantt._change_id;\n\t\tdelete gantt._row_style;\n\t\tdelete gantt._delete_task;\n\t\tdelete gantt._sendTaskOrder;\n\n\t\thelpers.forEach(dataProcessorHandlers, function(e){\n\t\t\tgantt.detachEvent(e);\n\t\t});\n\t\tdataProcessorHandlers = [];\n\t}\n\n\tvar oldAfterUpdate;\n\tfunction extendDataProcessor(gantt, dp){\n\t\tdp.setGanttMode = function(mode){\n\t\t\tvar modes = dp.modes || {};\n\t\t\tif(dp._ganttMode){\n\t\t\t\tmodes[dp._ganttMode] = {\n\t\t\t\t\t_in_progress : dp._in_progress,\n\t\t\t\t\t_invalid : dp._invalid,\n\t\t\t\t\tupdatedRows : dp.updatedRows\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar newState = modes[mode];\n\t\t\tif(!newState){\n\t\t\t\tnewState = modes[mode] = {\n\t\t\t\t\t_in_progress : {},\n\t\t\t\t\t_invalid : {},\n\t\t\t\t\tupdatedRows : []\n\t\t\t\t};\n\t\t\t}\n\t\t\tdp._in_progress = newState._in_progress;\n\t\t\tdp._invalid = newState._invalid;\n\t\t\tdp.updatedRows = newState.updatedRows;\n\t\t\tdp.modes = modes;\n\t\t\tdp._ganttMode = mode;\n\t\t};\n\n\t\toldAfterUpdate = dp.afterUpdate;\n\t\tdp.afterUpdate = function(){\n\t\t\tvar xml;\n\t\t\tif(arguments.length == 3){\n\t\t\t\txml = arguments[1];\n\t\t\t}else{\n\t\t\t\t// old dataprocessor\n\t\t\t\txml = arguments[4];\n\t\t\t}\n\t\t\tvar mode = dp._ganttMode;\n\t\t\tvar reqUrl = xml.filePath;\n\n\t\t\tif(this._tMode != \"REST\" && this._tMode != \"REST-JSON\"){\n\t\t\t\tif (reqUrl.indexOf(\"gantt_mode=links\") != -1) {\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}else{\n\t\t\t\tif(reqUrl.indexOf(\"/link\") > 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 (helpers.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\tif(gantt.isTaskExists(id)){\n\t\t\t\tdp.setGanttMode(\"tasks\");\n\t\t\t\tdp.setUpdated(id,true,\"inserted\");\n\t\t\t}\n\t\t}));\n\t\tdataProcessorHandlers.push(this.attachEvent(\"onAfterTaskUpdate\", function(id, item) {\n\t\t\tif(gantt.isTaskExists(id)){\n\t\t\t\tdp.setGanttMode(\"tasks\");\n\t\t\t\tdp.setUpdated(id,true);\n\n\t\t\t\tgantt._sendTaskOrder(id, item);\n\t\t\t}\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\tif(gantt.isLinkExists(id)){\n\t\t\t\tdp.setGanttMode(\"links\");\n\t\t\t\tdp.setUpdated(id, true);\n\t\t\t}\n\t\t}));\n\t\tdataProcessorHandlers.push(this.attachEvent(\"onAfterLinkAdd\", function(id, item) {\n\t\t\tif(gantt.isLinkExists(id)){\n\t\t\t\tdp.setGanttMode(\"links\");\n\t\t\t\tdp.setUpdated(id, true,\"inserted\");\n\t\t\t}\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-JSON\" || 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\n\t\tgantt.callEvent(\"onDataProcessorReady\", [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 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\n\t\tthis.$data.tasksStore.sort(field, desc, parent);\n\t\tif (render) {\n\t\t\tthis.render();\n\t\t}\n\t\tthis.callEvent(\"onAfterSort\", [field, desc, parent]);\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(this.isTaskExists(taskId) && this.isTaskExists(this.getParent(taskId))){\n\t\t\tthis.refreshTask(this.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\tif(gantt.getState(\"batchUpdate\").batch_update){\n\t\t\treturn true;\n\t\t}\n\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\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\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\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\tgantt.$layout._syncCellSizes(mainGrid.$parent.$config.group, gantt.config.grid_width);\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\t\t\t\t});\n\t\t\t\tthis._initScrollStateEvents(layout);\n\t\t\t},\n\n\t\t\t_initScrollStateEvents: function(layout) {\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\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\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\t\t\t\tvar dragMultiple = this.dragMultiple;\n\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\tthis._finalize_mouse_up(drag.id, config, drag, e);\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\n/**\n * methods for highlighting current drag and drop position\n */\n\nfunction highlightPosition(target, root, grid){\n\tvar markerPos = getTaskMarkerPosition(target, grid);\n\t// setting position of row\n\troot.marker.style.left = 10 + \"px\";\n\troot.marker.style.top = markerPos.y + \"px\";\n\tvar markerLine = root.markerLine;\n\tif(!markerLine){\n\t\tmarkerLine = document.createElement(\"div\");\n\t\tmarkerLine.className = \"gantt_drag_marker gantt_grid_dnd_marker\";\n\t\tmarkerLine.innerHTML = \"
\";\n\t\tmarkerLine.style.pointerEvents = \"none\";\n\t\tdocument.body.appendChild(markerLine);\n\t\troot.markerLine = markerLine;\n\t}\n\tif(target.child){\n\t\thighlightFolder(target, markerLine, grid);\n\t}else{\n\t\thighlightRow(target, markerLine, grid);\n\t}\n}\n\nfunction removeLineHighlight(root){\n\tif(root.markerLine && root.markerLine.parentNode){\n\t\troot.markerLine.parentNode.removeChild(root.markerLine);\n\t}\n\troot.markerLine = null;\n}\n\nfunction highlightRow(target, markerLine, grid){\n\tvar linePos = getLineMarkerPosition(target, grid);\n\n\tmarkerLine.innerHTML = \"
\";\n\tmarkerLine.style.left = linePos.x + \"px\";\n\tmarkerLine.style.height = \"4px\";\n\n\tmarkerLine.style.top = (linePos.y - 2) + \"px\";\n\tmarkerLine.style.width = linePos.width + \"px\";\n\n\treturn markerLine;\n}\nfunction highlightFolder(target, markerFolder, grid){\n\tvar id = target.targetParent;\n\tvar pos = gridToPageCoordinates({x: 0, y: grid.getItemTop(id)}, grid);\n\n\tmarkerFolder.innerHTML = \"
\";\n\tmarkerFolder.style.width = grid.$grid_data.offsetWidth + \"px\";\n\tmarkerFolder.style.top = pos.y + \"px\";\n\tmarkerFolder.style.left = pos.x + \"px\";\n\tmarkerFolder.style.height = grid.getItemHeight(id) + \"px\";\n\treturn markerFolder;\n}\n\nfunction getLineMarkerPosition(target, grid){\n\tvar store = grid.$config.rowStore;\n\tvar pos = {x:0, y:0};\n\tvar indentNode = grid.$grid_data.querySelector(\".gantt_tree_indent\");\n\tvar indent = 15;\n\tvar level = 0;\n\tif(indentNode){\n\t\tindent = indentNode.offsetWidth;\n\t}\n\tvar iconWidth = 40;\n\tif(target.targetId !== store.$getRootId()){\n\t\tvar itemTop = grid.getItemTop(target.targetId);\n\t\tvar itemHeight = grid.getItemHeight(target.targetId);\n\t\tlevel = store.exists(target.targetId) ? store.calculateItemLevel(store.getItem(target.targetId)) : 0;\n\n\t\tif(target.prevSibling){\n\t\t\tpos.y = itemTop;\n\t\t}else if(target.nextSibling){\n\t\t\tvar childCount = 0;\n\t\t\tstore.eachItem(function(child){\n\t\t\t\tif(store.getIndexById(child.id) !== -1)\n\t\t\t\t\tchildCount++;\n\t\t\t}, target.targetId);\n\n\t\t\tpos.y = itemTop + itemHeight + childCount*itemHeight;\n\t\t}else {\n\t\t\tpos.y = itemTop + itemHeight;\n\t\t\tlevel += 1;\n\t\t}\n\t}\n\tpos.x = iconWidth + level * indent;\n\tpos.width = Math.max(grid.$grid_data.offsetWidth - pos.x, 0);\n\treturn gridToPageCoordinates(pos, grid);\n}\n\nfunction gridToPageCoordinates(pos, grid){\n\tvar gridPos = domHelpers.getNodePosition(grid.$grid_data);\n\tpos.x += gridPos.x - grid.$grid.scrollLeft;\n\tpos.y += gridPos.y - grid.$grid_data.scrollTop;\n\treturn pos;\n}\n\nfunction getTaskMarkerPosition(e, grid) {\n\tvar pos = domHelpers.getNodePosition(grid.$grid_data);\n\tvar ePos = domHelpers.getRelativeEventPosition(e, grid.$grid_data);\n\tvar store = grid.$config.rowStore;\n\t// row offset\n\tvar x = pos.x;\n\tvar y = ePos.y - 10;\n\n\tvar config = grid.$getConfig();\n\t// prevent moving row out of grid_data container\n\tif (y < pos.y) y = pos.y;\n\tvar gridHeight = store.countVisible() * config.row_height;\n\tif (y > pos.y + gridHeight - config.row_height) y = pos.y + gridHeight - config.row_height;\n\n\tpos.x = x;\n\tpos.y = y;\n\treturn pos;\n}\n\nmodule.exports = {\n\tremoveLineHighlight: removeLineHighlight,\n\thighlightPosition: highlightPosition\n};\n","/**\n * resolve dnd position of the task when gantt.config.order_branch_free = true\n */\n\nvar dropTarget = require(\"./drop_target\");\n\nmodule.exports = function getMultiLevelDropPosition(targetTaskId, relTargetPos, eventTop, store){\n\tvar result;\n\n\tif(targetTaskId !== store.$getRootId()){\n\t\tif(relTargetPos < 0.25){\n\t\t\tresult = dropTarget.prevSiblingTarget(targetTaskId, store);\n\t\t}else if(relTargetPos > 0.60 && !(store.hasChild(targetTaskId) && store.getItem(targetTaskId).$open)){\n\t\t\tresult = dropTarget.nextSiblingTarget(targetTaskId, store);\n\t\t}else {\n\t\t\tresult = dropTarget.firstChildTarget(targetTaskId, store);\n\t\t}\n\t}else{\n\t\tvar rootId = store.$getRootId();\n\t\tif(store.hasChild(rootId) && eventTop >= 0){\n\t\t\tresult = dropTarget.lastChildTarget(rootId, store);\n\t\t}else{\n\t\t\tresult = dropTarget.firstChildTarget(rootId, store);\n\t\t}\n\t}\n\n\treturn result;\n};","/**\n * resolve dnd position of the task when gantt.config.order_branch_free = false\n */\n\nvar dropTarget = require(\"./drop_target\");\n\nfunction getLast(store){\n\tvar current = store.getNext();\n\twhile(store.exists(current)){\n\n\t\tvar next = store.getNext(current);\n\t\tif(!store.exists(next)){\n\t\t\treturn current;\n\t\t}else{\n\t\t\tcurrent = next;\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction findClosesTarget(taskId, allowedLevel, store, up){\n\tvar prev = taskId;\n\twhile(store.exists(prev)){\n\t\tvar targetLevel = store.calculateItemLevel(store.getItem(prev));\n\t\tif((targetLevel === allowedLevel || targetLevel === (allowedLevel - 1)) && store.getBranchIndex(prev) > -1){\n\t\t\tbreak;\n\t\t}else {\n\t\t\tprev = up ? store.getPrev(prev) : store.getNext(prev);\n\t\t}\n\t}\n\n\tif(store.exists(prev)){\n\t\tif(store.calculateItemLevel(store.getItem(prev)) === allowedLevel){\n\t\t\treturn up ? dropTarget.nextSiblingTarget(prev, store) : dropTarget.prevSiblingTarget(prev, store);\n\t\t}else{\n\t\t\treturn dropTarget.firstChildTarget(prev, store);\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction findTargetAbove(taskId, allowedLevel, store){\n\treturn findClosesTarget(taskId, allowedLevel, store, true);\n}\nfunction findTargetBelow(taskId, allowedLevel, store){\n\treturn findClosesTarget(taskId, allowedLevel, store, false);\n}\n\nmodule.exports = function getSameLevelDropPosition(targetTaskId, relTargetPos, eventTop, store, level){\n\tvar result;\n\tif(targetTaskId !== store.$getRootId()) {\n\t\tif (relTargetPos < 0.5) {\n\t\t\tif (store.calculateItemLevel(store.getItem(targetTaskId)) === level) {\n\t\t\t\tresult = dropTarget.prevSiblingTarget(targetTaskId, store);\n\t\t\t} else {\n\t\t\t\tresult = findTargetAbove(targetTaskId, level, store);\n\t\t\t\tif (result) {\n\t\t\t\t\tresult = findTargetBelow(targetTaskId, level, store);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (store.calculateItemLevel(store.getItem(targetTaskId)) === level) {\n\t\t\t\tresult = dropTarget.nextSiblingTarget(targetTaskId, store);\n\t\t\t} else {\n\t\t\t\tresult = findTargetBelow(targetTaskId, level, store);\n\t\t\t\tif (result) {\n\t\t\t\t\tresult = findTargetAbove(targetTaskId, level, store);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}else{\n\t\tvar rootId = store.$getRootId();\n\t\tvar rootLevel = store.getChildren(rootId);\n\t\tresult = dropTarget.createDropTargetObject();\n\t\tif(rootLevel.length && eventTop >= 0){\n\t\t\tresult = findTargetAbove(getLast(store), level, store);\n\t\t}else{\n\t\t\tresult = findTargetBelow(rootId, level, store);\n\t\t}\n\t}\n\n\treturn result;\n};\n","var domHelpers = require(\"../../../utils/dom_helpers\");\nvar dropTarget = require(\"./tasks_grid_dnd_marker_helpers/drop_target\");\nvar getLockedLevelTarget = require(\"./tasks_grid_dnd_marker_helpers/locked_level\");\nvar getMultiLevelTarget = require(\"./tasks_grid_dnd_marker_helpers/multi_level\");\nvar higlighter = require(\"./tasks_grid_dnd_marker_helpers/highlight\");\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\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\t\tvar datastore = grid.$config.rowStore;\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\n\t\tdnd.config.marker.innerHTML = el.outerHTML;\n\t\tvar element = dnd.config.marker.firstChild;\n\t\tif(element){\n\t\t\tdnd.config.marker.style.opacity = 0.4;\n\t\t\telement.style.position = \"static\";\n\t\t\telement.style.pointerEvents = \"none\";\n\t\t}\n\t\t\n\t\tdnd.config.id = el.getAttribute(grid.$config.item_attribute);\n\n\t\tvar store = grid.$config.rowStore;\n\n\t\tvar task = store.getItem(dnd.config.id);\n\t\tdnd.config.level = store.calculateItemLevel(task);\n\t\tdnd.config.drop_target = dropTarget.createDropTargetObject({\n\t\t\ttargetParent: store.getParent(task.id),\n\t\t\ttargetIndex: store.getBranchIndex(task.id),\n\t\t\ttargetId: task.id,\n\t\t\tnextSibling: true\n\t\t});\n\n\t\ttask.$open = false;\n\t\ttask.$transparent = true;\n\t\tthis.refreshData();\n\t}, gantt));\n\n\tfunction getTargetTaskId(e){\n\t\tvar y = domHelpers.getRelativeEventPosition(e, grid.$grid_data).y;\n\t\tvar store = grid.$config.rowStore;\n\n\t\ty = y || 0;\n\n\t\tif(y < 0){\n\t\t\treturn store.$getRootId();\n\t\t}\n\n\t\tvar index = Math.floor(y / grid.getItemHeight());\n\n\t\tif (index > store.countVisible() - 1)\n\t\t\treturn store.$getRootId();\n\n\t\treturn store.getIdByIndex(index);\n\t}\n\n\tfunction getDropPosition(e){\n\t\tvar targetTaskId = getTargetTaskId(e);\n\t\tvar relTargetPos = null;\n\t\tvar store = grid.$config.rowStore;\n\t\tvar config = grid.$getConfig();\n\t\tvar lockLevel = !config.order_branch_free;\n\n\t\tvar eventTop = domHelpers.getRelativeEventPosition(e, grid.$grid_data).y;\n\n\t\tif(targetTaskId !== store.$getRootId()) {\n\t\t\tvar rowTop = grid.getItemTop(targetTaskId);\n\t\t\tvar rowHeight = grid.getItemHeight();\n\t\t\trelTargetPos = (eventTop - rowTop) / rowHeight;\n\t\t}\n\n\t\tvar result;\n\t\tif(!lockLevel){\n\t\t\tresult = getMultiLevelTarget(targetTaskId, relTargetPos, eventTop, store);\n\t\t}else{\n\t\t\tresult = getLockedLevelTarget(targetTaskId, relTargetPos, eventTop, store, dnd.config.level);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tdnd.attachEvent(\"onDragMove\", gantt.bind(function (obj, e) {\n\t\tvar target = getDropPosition(e);\n\n\t\tif(!target || \n\t\t\tgantt.callEvent(\"onBeforeRowDragMove\", [dnd.config.id, target.targetParent, target.targetIndex]) === false){\n\t\t\t\ttarget = dropTarget.createDropTargetObject(dnd.config.drop_target);\n\t\t\t}\n\t\t\n\t\thiglighter.highlightPosition(target, dnd.config, grid);\n\t\tdnd.config.drop_target = target;\n\n\t\tthis.callEvent(\"onRowDragMove\", [dnd.config.id, target.targetParent, target.targetIndex]);\n\t\treturn true;\n\t}, gantt));\n\n\tdnd.attachEvent(\"onDragEnd\", gantt.bind(function () {\n\t\tvar store = grid.$config.rowStore;\n\t\tvar task = store.getItem(dnd.config.id);\n\n\t\thiglighter.removeLineHighlight(dnd.config);\n\n\t\ttask.$transparent = false;\n\t\ttask.$open = dnd.config.initial_open_state;\n\t\tvar target = dnd.config.drop_target;\n\n\t\tif (this.callEvent(\"onBeforeRowDragEnd\", [dnd.config.id, target.targetParent, target.targetIndex]) === false) {\n\t\t\ttask.$drop_target = null;\n\t\t} else {\n\t\t\tstore.move(dnd.config.id, target.targetIndex, target.targetParent);\n\t\t\tthis.callEvent(\"onRowDragEnd\", [dnd.config.id, target.targetParent, target.targetIndex]);\n\t\t}\n\t\tstore.refresh(task.id);\n\t}, gantt));\n}\n\nmodule.exports = {\n\tinit: _init_dnd\n};","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 rowDndMarker = require(\"./tasks_grid_dnd_marker\");\n\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\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\tif(config.order_branch == \"marker\"){\n\t\t\t\t\t\trowDndMarker.init(grid.$gantt, grid);\n\t\t\t\t\t}else{\n\t\t\t\t\t\trowDnd.init(grid.$gantt, grid);\n\t\t\t\t\t}\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\tif(grid.$config.id == \"grid\") {\n\t\t\t\t\tgantt.ext.inlineEditors.destructor();\n\t\t\t\t}\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 helpers = require(\"../../../utils/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 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 (helpers.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\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\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 el = 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;\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\tparsed = null;// return null will cancel changes\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\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\t// do nothing if editor is already active in this cell\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.startEdit(activeCell.id, activeCell.columnName);\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\t// do nothing if editor is already active in this cell\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(gantt){\n\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","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(gantt);\n\n\tvar eventBus = {};\n\teventable(eventBus);\n\n\tfunction createGridEditors(grid) {\n\n\t\tfunction _getGridCellFromNode(node){\n\t\t\tif(!domHelpers.isChildOf(node, grid.$grid)){\n\t\t\t\treturn null;\n\t\t\t}\n\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\n\t\t\t\t\t\tvar mapTo = editorConfig.map_to;\n\t\t\t\t\t\tvar value = editorState.newValue;\n\t\t\t\t\t\tif (mapTo != \"auto\") {\n\t\t\t\t\t\t\titem[mapTo] = value;\n\t\t\t\t\t\t\tif (mapTo == \"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 (mapTo == \"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 (mapTo == \"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 utils = require(\"../../../utils/utils\");\nvar ResourceTimeline = require(\"./resource_timeline\");\nvar resourceStoreMixin = require(\"../resouce_store_mixin\");\nvar __extends = require(\"../../../utils/extends\");\n\nvar ResourceHistogram = (function (_super) {\n\n\tfunction ResourceHistogram(parent, config, factory, gantt) {\n\t\tvar self = _super.apply(this, arguments) || this;\n\t\tself.$config.bindLinks = null;\n\t\treturn self;\n\t}\n\n\t__extends(ResourceHistogram, _super);\n\n\tutils.mixin(ResourceHistogram.prototype, {\n\t\t_createLayerConfig: function(){\n\t\t\tvar self = this;\n\t\t\tvar taskFilter = function(){\n\t\t\t\treturn self.isVisible();\n\t\t\t};\n\n\t\t\tvar taskLayers = [\n\t\t\t\t{\n\t\t\t\t\trenderer: this.$gantt.$ui.layers.resourceHistogram,\n\t\t\t\t\tcontainer: this.$task_bars,\n\t\t\t\t\tfilter: [taskFilter]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\trenderer: this.$gantt.$ui.layers.taskBg,\n\t\t\t\t\tcontainer: this.$task_bg,\n\t\t\t\t\tfilter: [taskFilter]\n\t\t\t\t}\n\t\t\t];\n\n\t\t\tvar linkLayers = [];\n\n\t\t\treturn {\n\t\t\t\ttasks: taskLayers,\n\t\t\t\tlinks: linkLayers\n\t\t\t};\n\t\t}\n\n\t}, true);\n\n\tutils.mixin(ResourceHistogram.prototype, resourceStoreMixin(_super), true);\n\n\treturn ResourceHistogram;\n})(ResourceTimeline);\n\n\nmodule.exports = ResourceHistogram;\n\n\n","var domHelpers = require(\"../../../utils/dom_helpers\"),\n\tutils = require(\"../../../utils/utils\"),\n\tresourceStoreMixin = require(\"../resouce_store_mixin\"),\n\tGrid = require(\"./grid\");\nvar __extends = require(\"../../../utils/extends\");\n\nvar ResourceGrid = (function (_super) {\n\n\tfunction ResourceGrid(parent, config, factory, gantt) {\n\t\treturn _super.apply(this, arguments) || this;\n\t}\n\n\t__extends(ResourceGrid, _super);\n\n\tutils.mixin(ResourceGrid.prototype, {\n\t\tinit: function(){\n\t\t\tif(this.$config.bind === undefined){\n\t\t\t\tthis.$config.bind = this.$getConfig().resource_store;\n\t\t\t}\n\t\t\t_super.prototype.init.apply(this, arguments);\n\t\t},\n\n\t\t_initEvents: function(){\n\t\t\tvar gantt = this.$gantt;\n\t\t\t_super.prototype._initEvents.apply(this, arguments);\n\t\t\tthis._mouseDelegates.delegate(\"click\", \"gantt_row\", gantt.bind(function (e, id, trg) {\n\t\t\t\tvar store = this.$config.rowStore;\n\t\t\t\tif(!store) return true;\n\n\t\t\t\tvar target = domHelpers.locateAttribute(e, this.$config.item_attribute);\n\t\t\t\tif(target){\n\t\t\t\t\tstore.select(target.getAttribute(this.$config.item_attribute));\n\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}, this), this.$grid);\n\n\t\t}\n\n\t}, true);\n\n\tutils.mixin(ResourceGrid.prototype, resourceStoreMixin(ResourceGrid), true);\n\n\treturn ResourceGrid;\n})(Grid);\n\nmodule.exports = ResourceGrid;","var domHelpers = require(\"../../../utils/dom_helpers\");\n\nfunction createResizer(gantt, grid){\n// renders resize elements in the grid header\n\tvar _render_grid_header_resize = function () {\n\t\tvar columns = grid.getGridColumns(),\n\t\t\tconfig = grid.$getConfig(),\n\t\t\twidth = 0,\n\t\t\ttotalWidth = grid.$config.width,\n\t\t\tlineHeigth = config.scale_height;\n\n\t\tfor (var i = 0; i < columns.length; i++) {\n\t\t\tvar col = columns[i];\n\n\t\t\tvar pos;\n\t\t\twidth += col.width;\n\t\t\tif(config.rtl){\n\t\t\t\tpos = totalWidth - width;\n\t\t\t}else{\n\t\t\t\tpos = width;\n\t\t\t}\n\n\t\t\tif (col.resize) {\n\t\t\t\tvar resize_el = document.createElement(\"div\");\n\t\t\t\tresize_el.className = \"gantt_grid_column_resize_wrap\";\n\t\t\t\tresize_el.style.top = \"0px\";\n\t\t\t\tresize_el.style.height = lineHeigth + \"px\";\n\t\t\t\tresize_el.innerHTML = \"
\";\n\t\t\t\tresize_el.setAttribute(config.grid_resizer_column_attribute, i);\n\n\t\t\t\tgantt._waiAria.gridSeparatorAttr(resize_el);\n\n\t\t\t\tgrid.$grid_scale.appendChild(resize_el);\n\n\t\t\t\tresize_el.style.left = Math.max(0, pos) + \"px\";\n\t\t\t}\n\t\t}\n\t};\n\n\tvar _grid_resize = {\n\t\tcolumn_before_start: gantt.bind(function (dnd, obj, e) {\n\t\t\tvar config = grid.$getConfig();\n\n\t\t\tvar el = domHelpers.locateAttribute(e, config.grid_resizer_column_attribute);\n\t\t\tif (!el) return false;\n\n\t\t\tvar column_index = this.locate(e, config.grid_resizer_column_attribute),\n\t\t\t\tcolumn = grid.getGridColumns()[column_index];\n\n\t\t\tif (grid.callEvent(\"onColumnResizeStart\", [column_index, column]) === false)\n\t\t\t\treturn false;\n\t\t}, gantt),\n\n\t\tcolumn_after_start: gantt.bind(function (dnd, obj, e) {\n\t\t\tvar config = grid.$getConfig();\n\n\t\t\tvar column_index = this.locate(e, config.grid_resizer_column_attribute);\n\t\t\tdnd.config.marker.innerHTML = \"\";\n\t\t\tdnd.config.marker.className += \" gantt_grid_resize_area\";\n\t\t\tdnd.config.marker.style.height = grid.$grid.offsetHeight + \"px\";\n\t\t\tdnd.config.marker.style.top = \"0px\";\n\t\t\tdnd.config.drag_index = column_index;\n\n\t\t}, gantt),\n\n\t\tcolumn_drag_move: gantt.bind(function (dnd, obj, e) {\n\t\t\tvar config = grid.$getConfig();\n\n\t\t\tvar dd = dnd.config,\n\t\t\t\tcolumns = grid.getGridColumns();\n\t\t\tvar index = parseInt(dd.drag_index, 10);\n\t\t\tvar target_column = columns[index];\n\t\t\tvar\tpos = domHelpers.getNodePosition(grid.$grid_scale),\n\t\t\t\tpointerPosition = parseInt(dd.marker.style.left, 10),\n\t\t\t\tminPointerPosition = target_column.min_width ? target_column.min_width : config.min_grid_column_width,\n\t\t\t\tmaxPointerPosition = grid.$grid_data.offsetWidth,// - config.min_grid_column_width * (columns.length - dd.drag_index - 2),// 1 for current column + 1 for last column\n\t\t\t\tmarkerStartPosition = 0,\n\t\t\t\tmarker_width = 0;\n\n\t\t\t\n\t\t/*\tif(config.rtl){\n\t\t\t\tindex = columns.length - 1 - index;\n\t\t\t\tcolumns = columns.reverse();\n\t\t\t}*/\n\n\t\t\tif(!config.rtl){\n\t\t\t\tpointerPosition -= pos.x - 1;\n\t\t\t}else{\n\t\t\t\tpointerPosition = (pos.x + pos.width - 1) - pointerPosition;\n\t\t\t}\n\n\t\t\t//pointerPosition -= pos.x - 1;\n\t\t\tfor (var i = 0; i < index; i++) {\n\t\t\t\tminPointerPosition += columns[i].width;\n\t\t\t\tmarkerStartPosition += columns[i].width;\n\t\t\t}\n\n\t\t\tif (pointerPosition < minPointerPosition) {\n\t\t\t\tpointerPosition = minPointerPosition;\n\t\t\t}\n\n\t\t\tif (config.keep_grid_width) {\n\t\t\t\tvar limit_max = 0;\n\t\t\t\tfor (var i=index+1; i maxPointerPosition)\n\t\t\t\t\tpointerPosition = maxPointerPosition;\n\t\t\t} else if (!grid.$config.scrollable) {\n\t\t\t\tvar targetWidth = pointerPosition;\n\t\t\t\tvar rightColumnsWidth = 0;\n\t\t\t\tfor (var i=index+1; i gantt.$container.offsetWidth){\n\t\t\t\t\tpointerPosition = gantt.$container.offsetWidth - rightColumnsWidth;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdd.left = pointerPosition - 1;// -1 for border\n\n\t\t\tmarker_width = Math.abs(pointerPosition - markerStartPosition);\n\n\t\t\t// column.max_width - maximum width of the column, user defined\n\t\t\tif (target_column.max_width && marker_width > target_column.max_width)\n\t\t\t\tmarker_width = target_column.max_width;\n\n\t\t\tif(config.rtl){\n\t\t\t\tmarkerStartPosition = (pos.width - markerStartPosition) + 2 - marker_width;\n\t\t\t}\n\t\t\tdd.marker.style.top = pos.y + \"px\";\n\t\t\tdd.marker.style.left = pos.x - 1 + markerStartPosition + \"px\";\n\t\t\tdd.marker.style.width = marker_width + \"px\";\n\n\t\t\tgrid.callEvent(\"onColumnResize\", [index, columns[index], marker_width - 1]);\n\t\t\treturn true;\n\t\t}, gantt),\n\n\t\tcolumn_drag_end: gantt.bind(function (dnd, obj, e) {\n\t\t\tvar config = grid.$getConfig();\n\t\t\tvar columns = grid.getGridColumns(),\n\t\t\t\tcolumns_width = 0,\n\t\t\t\tindex = parseInt(dnd.config.drag_index, 10),\n\t\t\t\ttarget_column = columns[index];\n\n\t\t\t// var colIndex = index;\n\t\t\t/*if(config.rtl){\n\t\t\t\tcolIndex = columns.length - 1 - target_index;\n\t\t\t\tcolumns = columns.reverse();\n\t\t\t}*/\n\n\t\t\tfor (var i = 0; i < index; i++) {\n\t\t\t\tcolumns_width += columns[i].width;\n\t\t\t}\n\n\t\t\tvar final_width = (target_column.min_width && (dnd.config.left - columns_width) < target_column.min_width) ?\n\t\t\t\ttarget_column.min_width : (dnd.config.left - columns_width);\n\n\t\t\tif (target_column.max_width && target_column.max_width < final_width) // TODO: probably can be omitted\n\t\t\t\tfinal_width = target_column.max_width;\n\n\t\t\tif (grid.callEvent(\"onColumnResizeEnd\", [index, target_column, final_width]) === false)\n\t\t\t\treturn;\n\n\t\t\tif (target_column.width == final_width)\n\t\t\t\treturn;\n\n\t\t\ttarget_column.width = final_width;\n\n\t\t\tif (config.keep_grid_width) {\n\t\t\t\tcolumns_width = config.grid_width;\n\t\t\t} else {\n\t\t\t\t// in other case we set a new grid width and call gantt render\n\t\t\t\tfor (var i = index, l = columns.length; i < l; i++) {\n\t\t\t\t\tcolumns_width += columns[i].width;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tgrid.callEvent(\"onColumnResizeComplete\", [columns, grid._setColumnsWidth(columns_width, index)]);\n\n\t\t\tif(!grid.$config.scrollable){\n\t\t\t\tgantt.$layout._syncCellSizes(grid.$config.group, config.grid_width);\n\t\t\t}\n\t\t\t//grid.callEvent(\"onColumnResizeComplete\", [columns, columns_width]);\n\n\t\t\tthis.render();\n\t\t}, gantt)\n\t};\n\n// calls the initialization of the D'n'D events for resize elements\n\tvar _init_resize = function () {\n\t\tvar DnD = gantt.$services.getService(\"dnd\");\n\n\t\tvar config = grid.$getConfig();\n\n\t\tvar dnd = new DnD(grid.$grid_scale, {updates_per_second: 60});\n\t\tif (gantt.defined(config.dnd_sensitivity))\n\t\t\tdnd.config.sensitivity = config.dnd_sensitivity;\n\n\t\tdnd.attachEvent(\"onBeforeDragStart\", function (obj, e) {\n\t\t\treturn _grid_resize.column_before_start(dnd, obj, e);\n\t\t});\n\t\tdnd.attachEvent(\"onAfterDragStart\", function (obj, e) {\n\t\t\treturn _grid_resize.column_after_start(dnd, obj, e);\n\t\t});\n\t\tdnd.attachEvent(\"onDragMove\", function (obj, e) {\n\t\t\treturn _grid_resize.column_drag_move(dnd, obj, e);\n\t\t});\n\t\tdnd.attachEvent(\"onDragEnd\", function (obj, e) {\n\t\t\treturn _grid_resize.column_drag_end(dnd, obj, e);\n\t\t});\n\n\t};\n\n\treturn {\n\t\tinit: _init_resize,\n\t\tdoOnRender: _render_grid_header_resize\n\t};\n}\n\nmodule.exports = createResizer;","var utils = require(\"../../../utils/utils\"),\n\tenv = require(\"../../../utils/env\");\n\nvar createStaticBgHelper = function(utils, env){\n\n\tvar canvasBgCache = {};\n\tvar staticBgStyleId = \"gantt-static-bg-styles-\" + utils.uid();\n\n\tfunction renderBgCanvas(targetNode, config, scale, totalHeight) {\n\t\tif (!config.static_background) return;\n\n\t\tvar canvas = document.createElement(\"canvas\");\n\t\tif (!canvas.getContext) return; // if canvas is not supported (for IE8)\n\n\t\t// clear previous bg data\n\t\ttargetNode.innerHTML = \"\";\n\n\t\tvar styleParams = getCellStyles(targetNode);\n\t\tvar png = createBackgroundTiles(styleParams, config, scale);\n\t\tvar bgDivs = createBgDivs(png, config, scale, totalHeight);\n\n\t\tvar fragment = document.createDocumentFragment();\n\n\t\tbgDivs.forEach(function (div) {\n\t\t\tfragment.appendChild(div);\n\t\t});\n\n\t\ttargetNode.appendChild(fragment);\n\t}\n\n\tfunction getColumnWidths(scale) {\n\t\tvar widths = scale.width;\n\t\tvar differentWidths = {};\n\t\tfor (var i = 0; i < widths.length; i++) {\n\t\t\tif (widths[i] * 1)\n\t\t\t\tdifferentWidths[widths[i]] = true;\n\t\t}\n\t\treturn differentWidths;\n\t}\n\n\tfunction parseRgb(rgbCss) {\n\t\tvar result = /^rgba?\\(([\\d]{1,3}), *([\\d]{1,3}), *([\\d]{1,3}) *(,( *[\\d.]+ *))?\\)$/i.exec(rgbCss);\n\t\treturn result ? {\n\t\t\tr: result[1] * 1,\n\t\t\tg: result[2] * 1,\n\t\t\tb: result[3] * 1,\n\t\t\ta: (result[5] * 255) || 255\n\t\t} : null;\n\t}\n\n\tfunction getUrlFromCache(key) {\n\t\treturn canvasBgCache[key] || null;\n\t}\n\n\tfunction getHashKey(width, height, cellStyles) {\n\t\treturn (width + '' + height + cellStyles.bottomBorderColor + cellStyles.rightBorderColor).replace(/[^\\w\\d]/g, '');\n\t}\n\n\tfunction getStyleElement() {\n\t\tvar style = document.getElementById(staticBgStyleId);\n\n\t\tif (!style) {\n\t\t\tstyle = document.createElement(\"style\");\n\t\t\tstyle.id = staticBgStyleId;\n\t\t\tdocument.body.appendChild(style);\n\t\t}\n\t\treturn style;\n\t}\n\n\tfunction cacheUrl(key, url) {\n\t\tcanvasBgCache[key] = url;\n\t}\n\n\tfunction generateBgUrl(width, height, cellStyles) {\n\t\t// use relatively big bg image about 500*500px in order to reduce misalignments due browser zoom\n\t\tvar cols = Math.floor(500 / width) || 1;\n\t\tvar rows = Math.floor(500 / height) || 1;\n\n\t\tvar canvas = document.createElement(\"canvas\");\n\t\tcanvas.height = height * rows;\n\t\tcanvas.width = width * cols;\n\n\t\tvar context = canvas.getContext(\"2d\");\n\n\t\tdrawGrid(height, width, rows, cols, context, cellStyles);\n\n\t\treturn canvas.toDataURL();\n\n\t\tfunction drawGrid(rowHeight, colWidth, rows, cols, context, styles) {\n\t\t\t// paint pixels manually instead of using lineTo in order to prevent canvas aliasing\n\t\t\tvar image = context.createImageData(colWidth * cols, rowHeight * rows);\n\t\t\timage.imageSmoothingEnabled = false;\n\n\t\t\tvar verticalLineWidth = styles.rightBorderWidth * 1;\n\t\t\tvar verticalLineColor = parseRgb(styles.rightBorderColor);\n\n\t\t\tvar x = 0,\n\t\t\t\ty = 0,\n\t\t\t\tw = 0;\n\n\t\t\tfor (var col = 1; col <= cols; col++) {\n\t\t\t\tx = col * colWidth - 1;\n\t\t\t\tfor (w = 0; w < verticalLineWidth; w++) {\n\t\t\t\t\tfor (y = 0; y < rowHeight * rows; y++) {\n\t\t\t\t\t\tdrawDot(x - w, y, verticalLineColor, image);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar horizontalLineWidth = styles.bottomBorderWidth * 1;\n\t\t\tvar horizontalLineColor = parseRgb(styles.bottomBorderColor);\n\n\t\t\ty = 0;\n\t\t\tfor (var row = 1; row <= rows; row++) {\n\t\t\t\ty = row * rowHeight - 1;\n\t\t\t\tfor (w = 0; w < horizontalLineWidth; w++) {\n\t\t\t\t\tfor (x = 0; x < colWidth * cols; x++) {\n\t\t\t\t\t\tdrawDot(x, y - w, horizontalLineColor, image);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontext.putImageData(image, 0, 0);\n\t\t}\n\n\t\tfunction drawDot(x, y, color, matrix) {\n\t\t\tvar rowLength = width * cols;\n\n\t\t\tvar index = (y * rowLength + x) * 4;\n\n\t\t\tmatrix.data[index] = color.r;\n\t\t\tmatrix.data[index + 1] = color.g;\n\t\t\tmatrix.data[index + 2] = color.b;\n\t\t\tmatrix.data[index + 3] = color.a;\n\t\t}\n\t}\n\n\tfunction getCssClass(key) {\n\t\treturn \"gantt-static-bg-\" + key;\n\t}\n\n\tfunction createBackgroundTiles(cellStyles, config, scale) {\n\t\tvar data = {};\n\t\tvar widths = getColumnWidths(scale),\n\t\t\theight = config.row_height;\n\n\t\tvar styleHTML = \"\";\n\t\tfor (var i in widths) {\n\n\t\t\tvar width = i * 1;\n\t\t\tvar key = getHashKey(width, height, cellStyles);\n\t\t\tvar cachedUrl = getUrlFromCache(key);\n\n\t\t\tif (!cachedUrl) {\n\t\t\t\tvar bgImage = generateBgUrl(width, height, cellStyles);\n\t\t\t\tcacheUrl(key, bgImage);\n\t\t\t\tstyleHTML += \".\" + getCssClass(key) + \"{ background-image: url('\" + bgImage + \"');}\";\n\t\t\t}\n\n\t\t\tdata[i] = getCssClass(key);\n\t\t}\n\n\t\tif (styleHTML) {\n\t\t\tvar style = getStyleElement();\n\t\t\tstyle.innerHTML += styleHTML;\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tfunction createBgDivs(bgTiles, config, scale, dataHeight) {\n\t\tvar divs = [];\n\t\tvar tile,\n\t\t\tprevWidth = 0,\n\t\t\tprevCell;\n\n\t\tvar widths = scale.width.filter(function (i) {\n\t\t\treturn !!i;\n\t\t});\n\n\t\tvar leftPos = 0;\n\n\t\t//TODO: fixme\n\t\t// bg image misalignments on horizontal scroll on very large time scales, especially in IE/Edge browsers\n\t\t// limiting max tile width seems to solve the issue, but can increase rendering time\n\t\tvar maxTileSize = 100000;\n\t\tif (env.isIE) {\n\t\t\t// special case for IE11 on win7x and probably 8x\n\t\t\tvar appVersion = navigator.appVersion || \"\";\n\t\t\tif (appVersion.indexOf(\"Windows NT 6.2\") != -1 ||\n\t\t\t\tappVersion.indexOf(\"Windows NT 6.1\") != -1 ||\n\t\t\t\tappVersion.indexOf(\"Windows NT 6.0\") != -1) {\n\n\t\t\t\tmaxTileSize = 20000;\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = 0; i < widths.length; i++) {\n\t\t\t//var currentWidth = cells[i].clientWidth;\n\t\t\tvar cell = widths[i];\n\n\t\t\tif ((cell != prevCell && prevCell !== undefined) || (i == widths.length - 1) || (prevWidth > maxTileSize)) {\n\n\t\t\t\tvar totalHeight = dataHeight,\n\t\t\t\t\tcurrentTop = 0,\n\t\t\t\t\trowHeight = Math.floor(maxTileSize / config.row_height) * config.row_height;\n\n\t\t\t\tvar tileWidth = prevWidth;\n\n\t\t\t\twhile (totalHeight > 0) {\n\t\t\t\t\tvar currentHeight = Math.min(totalHeight, rowHeight);\n\t\t\t\t\ttotalHeight -= rowHeight;\n\n\t\t\t\t\ttile = document.createElement(\"div\");\n\n\t\t\t\t\ttile.style.height = currentHeight + \"px\";\n\t\t\t\t\ttile.style.position = \"absolute\";\n\t\t\t\t\ttile.style.top = currentTop + \"px\";\n\t\t\t\t\ttile.style.left = leftPos + \"px\";\n\n\t\t\t\t\ttile.style.whiteSpace = \"no-wrap\";\n\t\t\t\t\ttile.className = bgTiles[prevCell || cell];\n\n\t\t\t\t\t// if last - short by 1 px (bug fix)\n\t\t\t\t\tif (i == widths.length - 1) {\n\t\t\t\t\t\ttileWidth = cell + tileWidth - 1;\n\t\t\t\t\t}\n\t\t\t\t\ttile.style.width = tileWidth + \"px\";\n\n\t\t\t\t\tdivs.push(tile);\n\t\t\t\t\tcurrentTop += currentHeight;\n\t\t\t\t}\n\t\t\t\tprevWidth = 0;\n\t\t\t\tleftPos += tileWidth;\n\n\t\t\t\t//cell = 0;\n\t\t\t}\n\t\t\tif (cell) {\n\t\t\t\tprevWidth += cell;\n\t\t\t\tprevCell = cell;\n\t\t\t}\n\n\t\t}\n\n\t\treturn divs;\n\t}\n\n\tfunction getCellStyles(targetNode) {\n\t\t// creating temp DOM structure for resolving style parameters. Will be removed after calculating.\n\t\tvar cell = document.createElement(\"div\");\n\t\tcell.className = \"gantt_task_cell\";\n\t\tvar row = document.createElement(\"div\");\n\t\trow.className = \"gantt_task_row\";\n\t\trow.appendChild(cell);\n\t\ttargetNode.appendChild(row);\n\n\t\tvar rowStyles = getComputedStyle(row),\n\t\t\tcellStyles = getComputedStyle(cell);\n\n\t\tvar params = {\n\t\t\tbottomBorderWidth: rowStyles.getPropertyValue(\"border-bottom-width\").replace(\"px\", \"\"),\n\t\t\trightBorderWidth: cellStyles.getPropertyValue(\"border-right-width\").replace(\"px\", \"\"),\n\t\t\tbottomBorderColor: rowStyles.getPropertyValue(\"border-bottom-color\"),\n\t\t\trightBorderColor: cellStyles.getPropertyValue(\"border-right-color\")\n\t\t};\n\n\t\ttargetNode.removeChild(row);\n\n\t\treturn params;\n\t}\n\n\treturn {\n\t\trender: renderBgCanvas\n\t};\n};\n\nmodule.exports = {\n\tcreate: function(){\n\t\treturn createStaticBgHelper(utils, env);\n\t}\n};\n\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\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}\n\t\t\tparts[parts.length - 1] += width;\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 __extends = require(\"../../../utils/extends\"),\n\tdomHelpers = require(\"../../../utils/dom_helpers\"),\n\tutils = require(\"../../../utils/utils\"),\n\tenv = require(\"../../../utils/env\"),\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};\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;","var __extends = require(\"../../../utils/extends\"),\n\tdomHelpers = require(\"../../../utils/dom_helpers\"),\n\tutils = require(\"../../../utils/utils\"),\n\tCell = require(\"./cell\");\n\nvar ResizerCell = (function (_super) {\n\t\"use strict\";\n\n\t__extends(ResizerCell, _super);\n\tfunction ResizerCell(parent, config, factory) {\n\t\tvar _this = _super.apply(this, arguments) || this;\n\n\t\tvar startBackSize, startFrontSize;\n\n\t\t_this._moveHandler = function (e) {\n\t\t\t_this._moveResizer(_this._resizer, e.pageX, e.pageY);\n\t\t};\n\t\t_this._upHandler = function () {\n\t\t\tvar newSizes = _this._getNewSizes();\n\t\t\tif(_this.callEvent(\"onResizeEnd\", [startBackSize, startFrontSize, newSizes ? newSizes.back : 0, newSizes ? newSizes.front : 0]) !== false){\n\t\t\t\t_this._setSizes();\n\t\t\t}\n\n\t\t\t_this._setBackground(false);\n\t\t\t_this._clearResizer();\n\t\t\t_this._clearListeneres();\n\t\t};\n\n\t\t_this._clearListeneres = function(){\n\t\t\tthis.$domEvents.detach(document, \"mouseup\", _this._upHandler);\n\t\t\tthis.$domEvents.detach(document, \"mousemove\", _this._moveHandler);\n\t\t\tthis.$domEvents.detach(document, \"mousemove\", _this._startOnMove);\n\t\t\tthis.$domEvents.detach(document, \"mouseup\", _this._cancelDND);\n\t\t};\n\n\t\t_this._callStartDNDEvent = function(){\n\t\t\tif (this._xMode) {\n\t\t\t\tstartBackSize = this._behind.$config.width || this._behind.$view.offsetWidth;\n\t\t\t\tstartFrontSize = this._front.$config.width || this._front.$view.offsetWidth;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tstartBackSize = this._behind.$config.height || this._behind.$view.offsetHeight;\n\t\t\t\tstartFrontSize = this._front.$config.height || this._front.$view.offsetHeight;\n\t\t\t}\n\n\t\t\tif(_this.callEvent(\"onResizeStart\", [startBackSize, startFrontSize]) === false){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t};\n\n\t\t_this._startDND = function(e){\n\t\t\tvar res = this._callStartDNDEvent();\n\t\t\tif(res === false){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar stop = false;\n\t\t\tthis._eachGroupItem(function(resizer){\n\t\t\t\tresizer._getSiblings();\n\t\t\t\tif(resizer._callStartDNDEvent() === false){\n\t\t\t\t\tstop = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(stop){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_this._moveHandler(e);\n\n\t\t\t_this.$domEvents.attach(document, \"mousemove\", _this._moveHandler);\n\t\t\t_this.$domEvents.attach(document, \"mouseup\", _this._upHandler);\n\t\t};\n\n\t\t_this._cancelDND = function(){\n\t\t\t_this._setBackground(false);\n\t\t\t_this._clearResizer();\n\t\t\t_this._clearListeneres();\n\t\t};\n\n\t\t_this._startOnMove = function(e){\n\t\t\tif(_this._isPosChanged(e)){\n\t\t\t\t_this._clearListeneres();\n\t\t\t\t_this._startDND(e);\n\t\t\t}\n\t\t};\n\n\t\t_this._downHandler = function (e) {\n\t\t\t_this._getSiblings();\n\n\t\t\tif (_this._behind.$config.collapsed || _this._front.$config.collapsed) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_this._setBackground(true);\n\t\t\t_this._resizer = _this._setResizer();\n\n\t\t\t_this._positions = {\n\t\t\t\tx: e.pageX,\n\t\t\t\ty: e.pageY,\n\t\t\t\ttimestamp: Date.now()\n\t\t\t};\n\n\t\t\t_this.$domEvents.attach(document, \"mousemove\", _this._startOnMove);\n\t\t\t_this.$domEvents.attach(document, \"mouseup\", _this._cancelDND);\n\t\t};\n\t\t_this.$name = \"resizer\";\n\t\treturn _this;\n\t}\n\tResizerCell.prototype.init = function () {\n\t\tvar _this = this;\n\t\t_super.prototype.init.call(this);\n\t\tthis._xMode = this.$config.mode === \"x\";\n\t\tif (this._xMode && !this.$config.width) {\n\t\t\tthis.$config.width = this.$config.minWidth = 1;\n\t\t}\n\t\telse if (!this._xMode && !this.$config.height) {\n\t\t\tthis.$config.height = this.$config.minHeight = 1;\n\t\t}\n\n\t\tthis.$config.margin = -1;\n\n\t\tthis.$domEvents.attach(this.$view, \"mousedown\", _this._downHandler);\n\n\t};\n\tResizerCell.prototype.$toHTML = function () {\n\t\tvar mode = this.$config.mode;\n\t\tvar css = this.$config.css || \"\";\n\t\treturn \"
\";\n\t};\n\n\tResizerCell.prototype._clearResizer = function(){\n\t\tif(this._resizer){\n\t\t\tif(this._resizer.parentNode){\n\t\t\t\tthis._resizer.parentNode.removeChild(this._resizer);\n\t\t\t}\n\t\t\tthis._resizer = null;\n\t\t}\n\t};\n\n\tResizerCell.prototype._isPosChanged = function(e){\n\t\tif(!this._positions){\n\t\t\treturn false;\n\t\t}\n\n\t\tif(Math.abs(this._positions.x - e.pageX) > 3 || Math.abs(this._positions.y - e.pageY) > 3){\n\t\t\treturn true;\n\t\t}\n\n\t\tif(Date.now() - this._positions.timestamp > 300){\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tResizerCell.prototype._getSiblings = function () {\n\t\tvar cells = this.$parent.getCells();\n\n\t\tif(this.$config.prev){\n\t\t\tthis._behind = this.$factory.getView(this.$config.prev);\n\t\t\tif(!(this._behind instanceof Cell)){\n\t\t\t\tthis._behind = this._behind.$parent;\n\t\t\t}\n\t\t}\n\t\tif(this.$config.next){\n\t\t\tthis._front = this.$factory.getView(this.$config.next);\n\t\t\tif(!(this._front instanceof Cell)){\n\t\t\t\tthis._front = this._behind.$parent;\n\t\t\t}\n\t\t}\n\n\t\tfor (var i = 0; i < cells.length; i++) {\n\t\t\tif (this === cells[i]) {\n\t\t\t\tif(!this._behind)\n\t\t\t\t\tthis._behind = cells[i - 1];\n\t\t\t\tif(!this._front)\n\t\t\t\t\tthis._front = cells[i + 1];\n\t\t\t}\n\t\t}\n\t};\n\tResizerCell.prototype._setBackground = function (state) {\n\t\tvar classes = \"gantt_resizing\";\n\t\tif (!state) {\n\t\t\tdomHelpers.removeClassName(this._behind.$view, classes);\n\t\t\tdomHelpers.removeClassName(this._front.$view, classes);\n\t\t\tdomHelpers.removeClassName(document.body, 'gantt_noselect');\n\t\t\treturn;\n\t\t}\n\t\tdomHelpers.addClassName(this._behind.$view, classes, true);\n\t\tdomHelpers.addClassName(this._front.$view, classes, true);\n\t\tdomHelpers.addClassName(document.body, 'gantt_noselect', true);\n\t};\n\tResizerCell.prototype._setResizer = function () {\n\t\tvar resizer = document.createElement(\"div\");\n\t\tresizer.className = \"gantt_resizer_stick\";\n\t\tthis.$view.appendChild(resizer);\n\t\tthis.$view.style.overflow = \"visible\";\n\t\tresizer.style.height = this.$view.style.height;\n\t\treturn resizer;\n\t};\n\n\tResizerCell.prototype._getDirection = function(x, y){\n\t\tvar shift;\n\t\tif (this._xMode) {\n\t\t\tshift = x - this._positions.x;\n\t\t}else{\n\t\t\tshift = y - this._positions.y;\n\t\t}\n\t\treturn shift ? shift < 0 ? -1 : 1 : 0;\n\t};\n\n\tResizerCell.prototype._getResizePosition = function(x, y){\n\t\tvar size;\n\t\tvar behindSide;\n\t\tvar behindMin;\n\t\tvar frontSide;\n\t\tvar frontMin;\n\t\tif (this._xMode) {\n\t\t\tsize = x - this._positions.x;\n\t\t\tbehindSide = this._behind.$config.width || this._behind.$view.offsetWidth;\n\t\t\tfrontSide = this._front.$config.width || this._front.$view.offsetWidth;\n\t\t\tbehindMin = this._behind.$config.minWidth;\n\t\t\tfrontMin = this._front.$config.minWidth;\n\t\t}\n\t\telse {\n\t\t\tsize = y - this._positions.y;\n\t\t\tbehindSide = this._behind.$config.height || this._behind.$view.offsetHeight;\n\t\t\tfrontSide = this._front.$config.height || this._front.$view.offsetHeight;\n\t\t\tbehindMin = this._front.$config.minHeight;\n\t\t\tfrontMin = this._front.$config.minHeight;\n\t\t}\n\t\tvar direction = this._getDirection(x, y);\n\t\tvar newBehindSide,\n\t\t\tnewFrontSide;\n\n\t\tif (direction === -1) {\n\t\t\tnewFrontSide = frontSide - size;\n\t\t\tnewBehindSide = behindSide - Math.abs(size);\n\n\t\t\tif (frontSide - size > this._front.$config.maxWidth) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (Math.abs(size) >= behindSide) {\n\t\t\t\tsize = -Math.abs(behindSide - 2);\n\t\t\t}\n\t\t\t// if min width\n\t\t\tif (behindSide - Math.abs(size) <= behindMin) {\n\t\t\t\t//this._resizer.style.background = \"red\";\n\t\t\t\tsize = -Math.abs(behindSide - behindMin);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tnewFrontSide = frontSide - Math.abs(size);\n\t\t\tnewBehindSide = behindSide + size;\n\n\t\t\tif (behindSide + size > this._behind.$config.maxWidth) {\n\t\t\t\tsize = this._behind.$config.maxWidth - behindSide;\n\t\t\t\t// return;\n\t\t\t}\n\t\t\tif (Math.abs(size) >= frontSide) {\n\t\t\t\tsize = frontSide - 2;\n\t\t\t}\n\t\t\t// if min width\n\t\t\tif (frontSide - Math.abs(size) <= frontMin) {\n\t\t\t\tsize = Math.abs(frontSide - frontMin);\n\t\t\t}\n\t\t}\n\n\t\tif (direction === -1) {\n\t\t\tnewFrontSide = frontSide - size;\n\t\t\tnewBehindSide = behindSide - Math.abs(size);\n\t\t} else {\n\t\t\tnewFrontSide = frontSide - Math.abs(size);\n\t\t\tnewBehindSide = behindSide + size;\n\t\t}\n\n\t\treturn {\n\t\t\tsize: size,\n\t\t\tnewFrontSide: newFrontSide,\n\t\t\tnewBehindSide: newBehindSide\n\t\t};\n\t};\n\n\tResizerCell.prototype._getGroupName = function(){\n\t\tthis._getSiblings();\n\t\treturn this._front.$config.group || this._behind.$config.group;\n\t};\n\n\tResizerCell.prototype._eachGroupItem = function(callback, master){\n\t\tvar layout = this.$factory.getView(\"main\");\n\n\t\tvar group = this._getGroupName();\n\n\t\tvar resizers = layout.getCellsByType(\"resizer\");\n\t\tfor(var i = 0; i < resizers.length; i++) {\n\t\t\tif (resizers[i]._getGroupName() == group && resizers[i] != this) {\n\t\t\t\tcallback.call(master || this, resizers[i]);\n\t\t\t}\n\t\t}\n\t};\n\n\tResizerCell.prototype._getGroupResizePosition = function(x, y){\n\t\tvar sizes = this._getResizePosition(x, y);\n\n\t\tif(!this._getGroupName()){\n\t\t\treturn sizes;\n\t\t}\n\n\t\tvar positions = [sizes];\n\n\t\tthis._eachGroupItem(function(resizer){\n\t\t\tresizer._getSiblings();\n\t\t\tvar pos = utils.copy(this._positions);\n\t\t\tif(this._xMode){\n\t\t\t\tpos.x += (resizer._behind.$config.width - this._behind.$config.width);\n\t\t\t}else{\n\t\t\t\tpos.y += (resizer._behind.$config.height - this._behind.$config.height);\n\t\t\t}\n\t\t\tresizer._positions = pos;\n\t\t\tpositions.push(resizer._getResizePosition(x, y));\n\t\t});\n\n\t\tvar minMax;\n\t\tfor(var i =0; i < positions.length; i++){\n\t\t\tif(!positions[i]) return;\n\t\t\tif(minMax === undefined){\n\t\t\t\tminMax = positions[i];\n\t\t\t}else if(positions[i].newBehindSide > minMax.newBehindSide){\n\t\t\t\tminMax = positions[i];\n\t\t\t}\n\t\t}\n\n\t/*\tif(minMax != sizes){\n\t\t\tminMax.size = minMax.size;\n\t\t}*/\n\n\t\treturn minMax;\n\t};\n\n\tResizerCell.prototype._moveResizer = function (av, x, y) {\n\t\tif (x === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar sizes = this._getGroupResizePosition(x, y);\n\t\tif(!sizes)\n\t\t\treturn;\n\n\t\tif (Math.abs(sizes.size) === 1) {\n\t\t\treturn;\n\t\t}\n\t\tif (this._xMode) {\n\t\t\tav.style.left = sizes.size + 'px';\n\t\t\tthis._positions.nextX = sizes.size || 0;\n\t\t}\n\t\telse {\n\t\t\tav.style.top = sizes.size + 'px';\n\t\t\tthis._positions.nextY = sizes.size || 0;\n\t\t}\n\n\t\tthis.callEvent(\"onResize\", [sizes.newBehindSide, sizes.newFrontSide]);\n\t};\n\tResizerCell.prototype._setGravity = function (cell) {\n\t\tvar size = this._xMode ? \"offsetWidth\" : \"offsetHeight\";\n\t\tvar position = this._xMode ? this._positions.nextX : this._positions.nextY;\n\t\tvar frontSize = this._front.$view[size];\n\t\tvar behindSize = this._behind.$view[size];\n\t\tvar frontG = this._front.getSize().gravity;\n\t\tvar behindG = this._behind.getSize().gravity;\n\t\tvar newFrontG = (frontSize - position) / frontSize * frontG;\n\t\tvar newBehindG = (behindSize + position) / behindSize * behindG;\n\t\tif (cell !== \"front\") {\n\t\t\tthis._front.$config.gravity = newFrontG;\n\t\t}\n\t\tif (cell !== \"behind\") {\n\t\t\tthis._behind.$config.gravity = newBehindG;\n\t\t}\n\t};\n\n/*\tResizerCell.prototype.setSize = function(){\n\t\t_super.apply(this, arguments)\n\t};*/\n\n\tResizerCell.prototype._getNewSizes = function(){\n\t\tvar behindSize = this._xMode ? this._behind.$config.width : this._behind.$config.height;\n\t\tvar frontSize = this._xMode ? this._front.$config.width : this._front.$config.height;\n\t\tvar position = this._xMode ? this._positions.nextX : this._positions.nextY;\n\n\t\tif(!frontSize && !behindSize){\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\tfront: frontSize ? ((frontSize - position) || 1) : 0,\n\t\t\tback: behindSize ? ((behindSize + position) || 1) : 0\n\t\t};\n\t};\n\n\tResizerCell.prototype._assignNewSizes = function(newSizes){\n\t\tthis._getSiblings();\n\t\tvar side = this._xMode ? 'width' : 'height';\n\n\t\t// if only gravity cells\n\t\tif (!newSizes) {\n\t\t\tthis._setGravity();\n\t\t}\n\t\telse {\n\t\t\tif (!newSizes.front) {\n\t\t\t\tthis._setGravity(\"behind\");\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._front.$config[side] = newSizes.front;\n\t\t\t}\n\t\t\tif (!newSizes.back) {\n\t\t\t\tthis._setGravity(\"front\");\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._behind.$config[side] = newSizes.back;\n\t\t\t}\n\t\t}\n\n\t};\n\n\tResizerCell.prototype._setSizes = function () {\n\t\tif (this._resizer) {\n\t\t\tthis.$view.removeChild(this._resizer);\n\t\t}\n\t\tvar newSizes = this._getNewSizes();\n\n\t\tif (this._positions.nextX || this._positions.nextY) {\n\t\t\tthis._assignNewSizes(newSizes);\n\n\t\t\tvar side = this._xMode ? 'width' : 'height';\n\t\t\tif(this._front.$config.group){\n\t\t\t\tthis.$gantt.$layout._syncCellSizes(this._front.$config.group, this._front.$config[side]);\n\t\t\t}else if(this._behind.$config.group){\n\t\t\t\tthis.$gantt.$layout._syncCellSizes(this._behind.$config.group, this._behind.$config[side]);\n\t\t\t}\n\n\t\t\tif(this._getGroupName()){\n\t\t\t\tthis.$factory.getView(\"main\").resize();\n\t\t\t}else{\n\t\t\t\tthis.$parent.resize();\n\t\t\t}\n\n\t\t}\n\t};\n\treturn ResizerCell;\n}(Cell));\n\nmodule.exports = ResizerCell;","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 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 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\tResourceHistogram = require(\"./timeline/resource_histogram\");\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 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\tfactory.registerView(\"resourceHistogram\", ResourceHistogram);\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\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 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\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\");\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;","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\tutils.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\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\tif (this.config && this.config.started) {\n\t\t\t\treturn;\n\t\t\t}\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\tthis.config.started = false;\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 window.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};","var Gantt = { _seed: 0 };\nGantt.plugin = function(code){\n\tthis._ganttPlugin.push(code);\n\tcode(window.gantt);\n};\nGantt._ganttPlugin = [];\nGantt.getGanttInstance = function() {\n\tvar gantt = require(\"./gantt\")();\n\tfor (var i=0; i