{"version":3,"file":"ink-ui.min.js","sources":["../../src/js/Ink/UI/Animate/1/lib.js","../../src/js/Ink/UI/Carousel/1/lib.js","../../src/js/Ink/UI/Close/1/lib.js","../../src/js/Ink/UI/Common/1/lib.js","../../src/js/Ink/UI/DatePicker/1/lib.js","../../src/js/Ink/UI/Draggable/1/lib.js","../../src/js/Ink/UI/Drawer/1/lib.js","../../src/js/Ink/UI/Dropdown/1/lib.js","../../src/js/Ink/UI/Droppable/1/lib.js","../../src/js/Ink/UI/FormValidator/1/lib.js","../../src/js/Ink/UI/FormValidator/2/lib.js","../../src/js/Ink/UI/ImageQuery/1/lib.js","../../src/js/Ink/UI/LazyLoad/1/lib.js","../../src/js/Ink/UI/Modal/1/lib.js","../../src/js/Ink/UI/Pagination/1/lib.js","../../src/js/Ink/UI/ProgressBar/1/lib.js","../../src/js/Ink/UI/SmoothScroller/1/lib.js","../../src/js/Ink/UI/SortableList/1/lib.js","../../src/js/Ink/UI/Spy/1/lib.js","../../src/js/Ink/UI/Stacker/1/lib.js","../../src/js/Ink/UI/Sticky/1/lib.js","../../src/js/Ink/UI/Swipe/1/lib.js","../../src/js/Ink/UI/Table/1/lib.js","../../src/js/Ink/UI/Tabs/1/lib.js","../../src/js/Ink/UI/TagField/1/lib.js","../../src/js/Ink/UI/Toggle/1/lib.js","../../src/js/Ink/UI/Tooltip/1/lib.js","../../src/js/Ink/UI/TreeView/1/lib.js","../../src/js/Ink/UI/Upload/1/lib.js"],"names":["Ink","createModule","Common","InkEvent","Css","Animate","BaseUIComponent","apply","this","arguments","animationPrefix","el","style","document","createElement","animationEndEventName","animation","oAnimation","msAnimation","webkitAnimation","_name","_optionDefinition","trigger","duration","removeClass","onEnd","prototype","_init","isNaN","parseInt","_options","observe","bind","animate","_element","extendObj","_animationPrefix","animationSupported","element","options","onAnimationEnd","event","target","animationName","removeClassName","removeEventListener","elOrSelector","addClassName","addEventListener","setTimeout","createUIComponent","InkElement","Pagination","Browser","limitRange","n","min","max","Math","Carousel","setTransitionProperty","newTransition","transitionProperty","oTransitionProperty","msTransitionProperty","mozTransitionProperty","webkitTransitionProperty","requestAnimationFrame","window","mozRequestAnimationFrame","webkitRequestAnimationFrame","cb","autoAdvance","axis","initialPage","spaceAfterLastSlide","hideLast","center","keyboardSupport","pagination","onChange","onInit","swipe","_handlers","paginationChange","bindMethod","windowResize","throttle","_isY","ulEl","s","_ulEl","removeTextNodeChildren","_currentPage","refit","whiteSpace","_setUpPagination","_setUpAutoAdvance","_setUpHider","call","size","elm","perpendicular","outerDimensions","_liEls","ss","numSlides","length","contRect","getBoundingClientRect","_ctnLength","bottom","top","right","left","_elLength","_slidesPerPage","floor","isFinite","numPages","ceil","numPagesChanged","_numPages","_deltaLength","_center","_updateHider","_IE7","_pagination","setSize","setPage","getPage","isDOMElement","setCurrent","self","nextPage","hiderEl","create","className","insertBottom","position","_hiderEl","gap","pad","padding","join","IE","version","split","slides","stl","prop","val","i","len","_onTouchStart","touches","_swipeData","x","pointerX","y","pointerY","ulRect","firstUlPos","inUlX","inUlY","_touchMoveIsFirstTouchMove","_onTouchMove","deltaY","abs","deltaX","undefined","_scrolling","_onAnimationFrame","stopDefault","pointerPos","swipeData","elRect","newPos","_onTouchEnd","snapToNext","relProgress","curPage","progressInPages","_onPaginationChange","pgn","_setPage","getCurrent","page","wrap","_lengthToGo","isLastPage","_itemsInLastPage","previousPage","getSlidesPerPage","getTotalPages","getStageElm","getSlidesList","getTotalSlides","Close","body","ev","findUpwardsByClass","toRemove","stop","remove","Ajax","Selector","Url","warnStub","constructor","warn","stub","obj","k","hasOwnProperty","Error","_componentOptions","elementIsOptional","error","elsOrSelector","isValidInstance","_validateInstance","e","registerInstance","_stubInstance","nothing","keys","Object","ret","push","es6WeakMapSupport","instances","WeakMap","domRegistry","get","__InkInstances","set","thing","Layouts","TINY","SMALL","MEDIUM","LARGE","XLARGE","isInteger","fieldName","t","select","required","TypeError","fieldId","defaults","overrides","optionValue","key","type","lType","toLowerCase","defaultVal","invalidThrow","_coerce_funcs","fromDataAttrs","dataAttrs","_coerce_from_string","_options_validate","invalid","quote","out","data","invalidStr","str","replace","paramName","_options_validate_types","elements","object","number","parseFloat","boolean","string","function","integer","types","round","clone","o","JSON","parse","stringify","ex","childIndex","childEl","els","parentNode","f","ajaxJSON","endpoint","params","evalJS","method","parameters","onSuccess","r","responseJSON","status","message","onFailure","currentLayout","v","detectorEl","id","setAttribute","appendChild","children","getStyle","getAttribute","hashSet","hashParams","getAnchorString","location","hash","genQueryString","substring","cleanChildren","parentEl","prevEl","lastChild","previousSibling","removeChild","storeIdAndClasses","fromEl","inObj","_id","classes","_classes","restoreIdAndClasses","toEl","indexOf","_instanceId","_warnDoubleInstantiation","newInstance","getName","getInstance","nameWithoutVersion","inst","unregisterInstance","splice","UIComponent","getInstanceFromSelector","selector","getInstanceIds","res","getInstances","destroyComponent","instance","err","_validate","_validationError","name","getOption","setOption","value","getElement","theConstructor","assert","test","msg","assertProp","propType","propVal","_oldProto","hideF","F","Event","InkArray","InkDate","clamp","dateishFromYMDString","YMD","dateishFromYMD","year","month","day","_year","_month","_day","dateishFromDate","date","getFullYear","getMonth","getDate","DatePicker","autoOpen","cleanText","closeText","pickerField","containerElement","cssClass","dateRange","displayInSelect","dayField","monthField","yearField","format","nextLinkText","ofText","onFocus","onMonthSelected","onSetDate","onYearSelected","prevLinkText","showClean","showClose","shy","startDate","startWeekDay","validDayFn","validMonthFn","validYearFn","nextValidDateFn","prevValidDateFn","yearRange",1,2,3,4,5,6,7,8,9,10,11,12,"wDay","_dateParsers","_hoverPicker","_picker","_setMinMax","setDate","Date","_lang","_render","_listenToContainerObjectEvents","_containerObject","_renderSuperTopBar","calendarTop","_monthDescContainer","_monthPrev","href","setHTML","_monthNext","_monthContainer","_monthSelector","_renderMonthSelector","_yearSelector","_appendDatePickerToDom","_renderMonth","_monthChanger","setTextContent","_ofText","_yearChanger","inline","show","_addOpenCloseEvents","_addDateChangeHandlersToInputs","fields","observeMulti","bindEvent","_updateDate","_showDefaultView","_inline","_hide","opener","cannotBe","descendantOf","ulSelector","mon","_renderMonthButton","liMonth","data-cal-month","appendTarget","parentIsControl","matchesSelector","_wrapper","_wrapperIsControl","insertAfter","_superTopBar","_onClick","elem","hasClassName","_onRelativeChangerClick","_onAbsoluteChangerClick","_showMonthSelector","_showYearSelector","_clean","_updateDescription","changeYear","change_year_next","change_year_prev","changeMonth","change_month_next","change_month_prev","_updateCal","elemData","Number","calDay","calMonth","calYear","_changeYear","selectedIndex","blur","noLimits","_min","noMinLimit","_max","noMaxLimit","MAX_VALUE","dates","rDate","each","noLim","lim","toUpperCase","now","_daysInMonth","valid","_dateCmp","_fitDateToRange","_isValidDate","_dateWithinRange","_dateAboveMax","_dateBelowMin","oth","_dateCmpUntil","depth","props","display","childNodes","_getPrevMonth","_getNextMonth","dataParsed","_parseDate","_setDate","inc","_incrementViewingYear","firstYear","thisYear","yearUl","prevYearLi","_getYearButton","nextYearLi","_acceptableYear","li","data-cal-year","_addMonthClassNames","dateStr","yearRegExp","validOneOrTwo","_isDate","_acceptableDay","_acceptableDateComponent","_acceptableMonth","userCb","_callUserCallbackBool","_writeDateInFormat","dateString","auxDate","objClicked","dt","_updateMonth","_y","_m","exceptions","incValue","_tryLeap","d","_getPrevYear","_getNextYear","atomName","directionName","advancer","maxOrMin","boundary","leapUserCb","_callUserCallbackDate","_getNextDecade","decade","_getCurrentDecade","_getPrevDecade","_callUserCallbackBase","yyyy-mm-dd","yyyy/mm/dd","yy-mm-dd","yy/mm/dd","dd-mm-yyyy","dd/mm/yyyy","dd-mm-yy","dd/mm/yy","mm/dd/yyyy","mm-dd-yyyy","_getMonthCalendarHeader","_getDayButtons","_getFirstDayIndex","wDayFirst","getDay","result","daysInMonth","createDocumentFragment","ul","firstDayIndex","_getDayButton","attrs","dayButton","header","parent","forEach","getElementsByTagName","_addMonthButtonClassNames","btn","toDisable","addRemoveClassName","lang","showMonth","isMonthRendered","destroy","unwrap","between","Draggable","constraint","constraintElm","handle","revert","cursor","zIndex","fps","droppableProxy","mouseAnchor","dragClass","skipChildren","onStart","onDrag","elmStartPosition","active","dragged","prevCoords","placeholder","zindex","firstDrag","deltaMs","lastRunAt","handlers","start","_onStart","dragFacade","_onDragFacade","drag","_onDrag","end","_onEnd","selectStart","stopObserving","_getCoords","ps","scrollWidth","scrollHeight","clientX","clientY","_cloneStyle","src","dst","borderWidth","width","elementWidth","height","elementHeight","elementLeft","elementTop","cssFloat","isLeftClick","button","tgtEl","pos","dims","elementDimensions","originalPosition","delta","div","marginTop","marginBottom","marginLeft","marginRight","visibility","delta2","parts","ad","applyDelta","dragHandlerName","proxy","innerWidth","documentElement","clientWidth","innerHeight","clientHeight","fs","backgroundColor","setOpacity","firstEl","firstChild","nodeType","nextSibling","insertBefore","mouseCoords","mPosX","mPosY","newX","newY","draggableSize","offset","constTop","constBottom","constLeft","constRight","pageWidth","pageHeight","Droppable","getModule","updateAll","mouseCoords2","action","pt","Loaded","Element","elNotFound","Drawer","parentSelector","leftDrawer","leftTrigger","rightDrawer","rightTrigger","contentDrawer","closeOnContentClick","closeOnLinkClick","mode","sides","_contentDrawers","_leftDrawer","_leftTriggers","_rightDrawer","_rightTriggers","_triggers","_isOpen","_direction","click","afterTransition","_afterTransition","_delay","_addEvents","triggerClicked","side","close","open","preventDefault","findUpwardsBySelector","currentTarget","isLink","on","direction","one","Toggle","Dropdown","hoverOpen","dismissOnInsideClick","dismissOnOutsideClick","dismissAfter","onInsideClick","onOutsideClick","onOpen","onDismiss","_toggle","closeOnInsideClick","closeOnClick","onChangeState","newState","_openOrDismiss","_onMouseOver","getState","clearTimeout","_openTimeout","_dismissTimeout","_onMouseOut","_onInsideClick","_handlerCall","dismiss","_onOutsideClick","foundElem","findUpwardsHaving","needle","foundTarget","callHandler","doNotInformToggle","_doNotInformToggle","setState","handler","slice","hAddClassName","hRemoveClassName","debug","_droppables","_draggables","add","cleanStyle","draggable","opt","hoverClass","hoverclass","accept","onHover","onDrop","onDropOut","that","namedEventHandlers","move","droppable","copy","cloneNode","_findDraggable","originalParent","elementData","_update","_findData","elms","update","offsetLeft","offsetTop","coords","matches","InkValidator","elementsWithSameName","form","FormValidator","_flagMap","ink-fv-required","ink-fv-email","ink-fv-url","ink-fv-number","ink-fv-phone_pt","ink-fv-phone_cv","ink-fv-phone_mz","ink-fv-phone_ao","ink-fv-date","ink-fv-confirm","ink-fv-custom","confirmElms","hasConfirm","_errorClassName","_errorValidationClassName","_errorTypeWarningClassName","_errorTypeErrorClassName","validate","_free","onError","customFlag","confirmGroup","getElementById","random","custom","fail","_validateElements","_showError","_clearError","_clearCache","reset","_getElements","formElms","curElm","totalElm","flag","flag2","oGroups","_makeConfirmGroups","errors","customErrors","inArray","disabled","_isValid","_isCustomValid","_validateConfirmGroups","curGroup","total","j","totalG","curFlag","tCustom","callback","fieldType","nodeName","inputType","_trim","aFormRadios","isChecked","totalRadio","checked","mail","url","isPTPhone","isCVPhone","isAOPhone","isMZPhone","dataset","validFormat","validValues","isDate","formElm","aFail","tFail","_showAnErrorOnElement","controlGroupElm","controlElm","errorClasses","_errorTypeClassName","errorMsg","innerHTML","aErrorLabel","control","aErrorLabel2","I18n","FormElement","validationFunctions","min_length","minSize","max_length","maxSize","exact_length","exactSize","email","fullCheck","ip","ipType","isIP","phone","phoneType","countryCode","credit_card","cardType","isCreditCard","alpha","supportSpaces","ascii","singleLineWhitespace","text","whitespace","punctuation","unicode","unicodePunctuation","latin","latin1","latin1Punctuation","alpha_numeric","numbers","alpha_dash","dash","underscore","digit","positive","negative","decimalPlaces","decimal","decimalSeparator","leftDigits","decimalSep","maxDigits","numeric","range","minValue","maxValue","multipleOf","color","isColor","fieldToCompare","getFormElements","getValue","validationMessages","en_US","formvalidator.required","formvalidator.min_length","formvalidator.max_length","formvalidator.exact_length","formvalidator.email","formvalidator.url","formvalidator.ip","formvalidator.phone","formvalidator.credit_card","formvalidator.date","formvalidator.alpha","formvalidator.text","formvalidator.latin","formvalidator.alpha_numeric","formvalidator.alpha_dash","formvalidator.digit","formvalidator.integer","formvalidator.decimal","formvalidator.numeric","formvalidator.range","formvalidator.color","formvalidator.matches","formvalidator.validation_function_not_found","pt_PT","label","rules","_errors","_rules","_value","_getLabel","textContent","_parseRules","rulesLength","rule","paramStartPos","substr","p","_addError","paramObj","field","i18nKey","getErrors","_formElements","eventTrigger","neverSubmit","searchFor","beforeValidation","setRule","errorMessage","getKey","langObj","dictObj","append","getI18n","setI18n","i18n","appendI18n","setLanguage","language","getRules","_rootElement","_errorMessages","_markedErrorElements","getElements","formElements","errorElement","errorElements","counter","cancelEventOnSuccess","formElement","controlGroupElement","controlElement","paragraph","errorArr","ImageQuery","retina","queries","onLoad","lastIndexOf","search","_filename","pop","sortMulti","reverse","_onLoad","_onResize","current","_findCurrentQuery","devicePixelRatio","file","_","viewportWidth","last","query","LazyLoad","item","source","destination","delay","image","scrollElement","touchEvents","onInsideViewport","onAfterAttributeChange","autoInit","_rootElm","_aData","_hasEvents","_activate","_getData","_onScrollThrottled","aElms","attr","hasAttribute","original","_onScroll","_removeEvents","inViewport","partial","margin","_elInViewport","_userCallback","removeAttribute","reload","upName","dimension","firstCharacter","match","maxName","Modal","opacitySupported","opacity","openModals","shadeClass","modalClass","triggerEvent","autoDisplay","markup","onShow","closeOnEscape","responsive","_onShadeClick","keyDown","_onKeyDown","resize","_wasDismissed","_markupMode","_modalDiv","_modalDivStyle","_modalShadow","_modalShadowStyle","_contentContainer","setContentMarkup","triggerElements","toString","_reposition","runNow","_timeoutResizeFunction","_resizeTimeout","isPercentage","currentViewport","viewportHeight","originalStatus","_resizeContainer","_shadeElement","alertsInTheModal","alertsLength","keyCode","containerHeight","_modalHeader","_modalFooter","compatMode","_contentElement","_waitForFade","keyValue","htmlEl","transitionEndEventNames","classicName","evName","observeOnce","fadeChecker","getContentElement","contentMarkup","tempHeader","tempFooter","toAdd","concat","genAEl","inner","index","aEl","wrapText","spanEl","totalItemCount","itemsPerPage","sideButtons","firstLabel","lastLabel","previousLabel","nextLabel","previousPageLabel","nextPageLabel","hashParameter","parentTag","childTag","wrapperClass","paginationClass","activeClass","disabledClass","hideClass","previousClass","previousPageClass","nextClass","nextPageClass","numberFormatter","_size","_calculateSize","_current","_itemLiEls","_generateMarkup","_updateItems","_observe","observeDelegated","count","liEls","isSimpleToggle","liEl","setClassName","_nextEl","pi","pf","_pageStart","_pageEnd","_page","_prevPageEl","hasPreviousPage","_nextPageEl","hasNextPage","_firstEl","isFirst","_lastEl","isLast","_prevEl","hasPrevious","hasNext","hasUlAlready","isChevron","isDotted","createLiEl","isPrev","isNext","isPrevPage","isNextPage","firstClass","lastClass","aElem","nr","setOnChange","sz","setSizeInItems","totalItems","pageNumber","isRelative","getSize","ProgressBar","startValue","_elementBar","setValue","newValue","cancelAnimationFrame","SmoothScroller","speed","changeHash","scroll","a","endPos","interval","onDone","scrollTo","init","onClick","render","link","thisDocument","linkedDocument","activeLiSelector","activeLi","Events","SortableList","hasTouch","navigator","maxTouchPoints","msMaxTouchPoints","placeholderClass","draggedClass","draggingClass","dragSelector","dragObject","handleSelector","moveSelector","swap","cancelMouseOut","down","_onDown","_onMove","up","_onUp","_isMoving","_down","_move","_up","stopMoving","_placeholder","_movePlaceholder","_addMovingClasses","touch","elementFromPoint","validateMove","droppedElement","_removeMovingClasses","target_position","placeholder_position","from_top","from_left","targetIndex","spyTargets","addSpied","spied","observeOnScroll","observingOnScroll","onScroll","onScrollForTarget","activeEl","findActiveElement","toDeactivate","menuLinkSelector","toActivate","findUpwardsByTag","closest","Infinity","closestIndex","bBox","Spy","Stacker","column","customBreakPoints","largeMax","largeMin","mediumMax","mediumMin","smallMax","smallMin","largeCols","mediumCols","smallCols","isOrdered","onRunCallback","onResizeCallback","onAPIReloadCallback","_aList","_curLayout","_runFirstTime","_getPageItemsToList","_canApplyLayoutChange","_applyLayoutChange","addItem","reloadItems","_removeDomItems","_setCurLayout","customBreakpoints","_getColumnsToShow","cols","curLayout","_aColumn","totalCols","aItems","aNewList","ii","countCol","Sticky","offsetBottom","topElement","stickyClass","inlineDimensions","inlinePosition","bottomElement","activateInLayouts","_dims","scrollTarget","_isDisabledInLayout","_getDims","unstick","_unstick","bottomOfSticky","maxBottomOfSticky","_stickTo","where","_inlineDimensions","_getBottomOffset","bottomOfViewport","toBottomOfDocument","oldPosition","oldWidth","dimensionsInStatic","rect","Swipe","onMove","minDist","maxDist","minDuration","maxDuration","storeGesture","stopEvents","_supported","db","_isOn","_isMeOrParent","_pushGesture","_gesture","_time","changedTouches","_target","_t0","_p0","pageX","pageY","t1","gesture","p1","dr","dist","sqrt","time","overallMovement","overallTime","InkUrl","InkString","Json","maybeTurnIntoNumber","rNumber","cmp","b","numberishEnabledCmp","aValue","bValue","Table","sameSame","pageSize","caretUpClass","caretDownClass","createEndpointUrl","getDataFromEndPoint","processJSONRows","processJSONRow","processJSONField","processJSONHeaders","processJSONTotalRows","totalRows","getSortKey","allowResetSorting","visibleFields","tdClassNames","paginationOptions","_thead","tHead","createTHead","_headers","thClick","_originalFields","_sortableFields","_originalData","_data","_totalRows","_resetSortOrder","_addHeadersClasses","_setPagination","headerLabel","classNames","_onThClick","paginated","sortable","_invertSortOrder","_setSortOrderOfColumn","tbody","_paginate","sortAndReverse","isAscending","_sort","caretHtml","order","firstIndex","lastIndex","_registerFieldNames","names","_fieldIsVisible","userKey","keyFunction","columnIndex","columnName","sort","trA","trB","elementA","elementB","_createHeadersFromJson","headers","tr","insertRow","th","_createSingleHeaderFromJson","_createRowsFromJSON","rows","row","trIndex","_createSingleRowFromJson","rowIndex","_createFieldFromJson","fieldData","processor","_elOrFieldData","processed","isString","isNumber","setEndpoint","currentPage","paginationEl","pageNo","sortOrder","_getSortOrder","_getDataViaAjax","_getUrl","urlCreator","parseUrl","sortField","endpointUri","success","JSONData","_onAjaxSuccess","getDataFromEndpoint","contentType","sanitizeJSON","response","responseText","jsonResponse","_rowLength","Tabs","preventUrlChange","onBeforeChange","menuSelector","contentSelector","tabSelector","triggerEventsOnLoad","_menu","_initializeDom","_setFirstActive","contentTabs","activeMenuLink","_findLinkByHref","_changeTab","runCallbacks","activeTabs","_activeMenuTab","_activeSection","_activeMenuLink","_onTabClickedGeneric","_onTabClicked","tabElm","_dehashify","changeTab","_lastLayout","smallLayout","_hashify","isAncestorOf","links","disable","enable","activeTab","activeMenuTab","activeSection","activeContentTab","TagField","enterKey","backspaceKey","isTruthy","tags","tagQuery","tagQueryAsync","allowRepeated","maxTags","outSeparator","separator","autoSplit","RegExp","_readInput","_viewElm","_input","_tagsFromMarkup","_tags","_onKeyUp","_onBlur","_refocus","tagname","tagName","map","option","_tagsToMarkup","tag","selected","_addTag","_removeTag","spc","createTextNode","filter","which","_onEnterKeyDown","_onBackspaceKeyDown","_removeConfirm","_unsetRemovingVisual","_setRemovingVisual","tagIndex","_removeRemovingVisualTimeout","parentIndexOf","focus","isAccordion","initialState","classNameOn","classNameOff","_targets","_accordion","_firstTime","_bindEvents","state","_onTriggerEvent","sel","isAncestorOfClickedElement","some","thisOne","_updateAccordion","has","accordionElement","targetElm","shades","ancestorOfTargets","shadesLength","Tooltip","EachTooltip","root","transitionDurationName","transitionPropertyName","transitionTimingFunctionName","bodies","spacing","forever","timeout","template","templatefield","fade","tooltips","tooltip","_destroy","_oppositeDirections","_onMouseMove","_delayTimeout","_makeTooltip","mousePosition","_getOpt","_createTooltipElement","_removeTooltip","_fadeInTooltipElement","_placeTooltipElement","_onTooltipMouseOver","_getFloatOpt","temp","outerHTML","_getIntOpt","fadeTime","mPos","_setPos","targetElementPos","tleft","ttop","centerh","centerv","tooltipDims","elementDims","maxX","maxY","_getWhereValueInsideViewport","arrow","tooltipLeft","tooltipTop","toBottom","toRight","toLeft","toTop","bbox","viewport","dataAttrVal","_camelCase","instanceOption","_getMousePosition","pageDims","_getPageXY","elmDims","scrollDim","_getScroll","cWidth","cHeight","dd","scrollLeft","scrollTop","TreeView","node","child","parentClass","openNodeClass","openClass","closedClass","iconTag","isParent","isOpen","_getIcon","insertTop","_setNodeOpen","_getChild","beOpen","icon","toggle","DirectoryReader","entry","maxDepth","_read","_readDirectories","entries","running","_readEntries","currentEntry","dir","createReader","readEntries","isDirectory","clearArray","fullPath","shift","_stopActivityTimeout","readError","activity","checkActivity","clearInterval","readComplete","setInterval","arr","Queue","lists","items","String","getItems","parentId","purge","keepList","pid","priority","view","_searchByPid","UI","Upload","_fileButton","fileButton","_dropzone","dropzone","_setDropEvent","_setFileButton","dropzones","ondrop","_dropEventHandler","ondragleave","_onDragLeave","ondragend","_onDragEndEventHandler","ondragdrop","ondragenter","_onDragEnterHandler","ondragover","_onDragOverHandler","stopPropagation","returnValue","publish","btns","_fileChangeHandler","files","FormData","XMLHttpRequest","_addFilesToQueue","submit","_events","fileFormName","maxFilesize","INVALID_FILE_NAME","extraData","useChunks","chunkSize","minSizeToUseChunks","endpointChunk","endpointChunkCommit","foldersEnabled","directoryMaxDepth","_queueId","_queueRunning","_folders","_supportChunks","Blob","dataTransfer","_files","Array","webkitGetAsEntry","folders","_addFolderToQueue","invalidFolders","getFiles","isFile","convertToFile","hasParent","getSubDirs","created","fileID","CHROME","directory","_processQueue","internalUpload","queueLen","canceled","_doRequest","_upload","xhr","forceAbort","showError","lengthComputable","loaded","abort","lastModifiedDate","Dom","OPERA","upload","onprogress","chunk_offset","chunk_upload_id","withCredentials","setRequestHeader","fd","blob","upload_path","parentID","rootPath","send","onload","invalidOffset","upload_id","chunk_expires","expires","onerror","onabort","abortAll","abortOne","subscribe","eventName","fn","events","args"],"mappings":"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","sourcesContent":["/**\n * Animate.css Utility\n *\n * This module is a wrapper around animate.css's CSS classes to produce animation.\n * It contains options to ease common tasks, like listen to the \"animationend\" event with all necessary prefixes, remove the necessary class names when the animation finishes, or configure the duration of your animation with the necessary browser prefix.\n *\n * @module Ink.UI.Animate_1\n * @version 1\n */\n\nInk.createModule('Ink.UI.Animate', 1, ['Ink.UI.Common_1', 'Ink.Dom.Event_1', 'Ink.Dom.Css_1'], function (Common, InkEvent, Css) {\n 'use strict';\n\n var animationPrefix = (function (el) {\n return ('animationName' in el.style) ? 'animation' :\n ('oAnimationName' in el.style) ? 'oAnimation' :\n ('msAnimationName' in el.style) ? 'msAnimation' :\n ('webkitAnimationName' in el.style) ? 'webkitAnimation' : null;\n }(document.createElement('div')));\n\n var animationEndEventName = {\n animation: 'animationend',\n oAnimation: 'oanimationend',\n msAnimation: 'MSAnimationEnd',\n webkitAnimation: 'webkitAnimationEnd'\n }[animationPrefix];\n\n /**\n * @class Ink.UI.Animate_1\n * @constructor\n *\n * @param {DOMElement} element Animated element\n * @param {Object} options Options object\n * @param {String} options.animation Animation name\n * @param {String|Number} [options.duration] Duration name (fast|medium|slow) or duration in milliseconds. Defaults to 'medium'.\n * @param {Boolean} [options.removeClass] Flag to remove the CSS class when finished animating. Defaults to false.\n * @param {Function} [options.onEnd] Callback for the animation end\n *\n * @sample Ink_UI_Animate_1.html\n *\n **/\n function Animate() {\n Common.BaseUIComponent.apply(this, arguments);\n }\n\n Animate._name = 'Animate_1';\n\n Animate._optionDefinition = {\n trigger: ['Element', null],\n duration: ['String', 'slow'], // Actually a string with a duration name, or a number of ms\n animation: ['String'],\n removeClass: ['Boolean', true],\n onEnd: ['Function', function () {}]\n };\n\n Animate.prototype._init = function () {\n if (!isNaN(parseInt(this._options.duration, 10))) {\n this._options.duration = parseInt(this._options.duration, 10);\n }\n\n if (this._options.trigger) {\n InkEvent.observe(this._options.trigger, 'click', Ink.bind(function () {\n this.animate();\n }, this)); // later\n } else {\n this.animate();\n }\n };\n\n Animate.prototype.animate = function () {\n Animate.animate(this._element, this._options.animation, this._options);\n };\n\n Ink.extendObj(Animate, {\n /**\n * Browser prefix for the CSS animations.\n *\n * @property _animationPrefix\n * @private\n **/\n _animationPrefix: animationPrefix,\n\n /**\n * Boolean which says whether this browser has CSS3 animation support.\n *\n * @property animationSupported\n **/\n animationSupported: !!animationPrefix,\n\n /**\n * Prefixed 'animationend' event name.\n *\n * @property animationEndEventName\n **/\n animationEndEventName: animationEndEventName,\n\n /**\n * Animate an element using one of the animate.css classes\n *\n * **Note: This is a utility method inside the `Animate` class, which you can access through `Animate.animate()`. Do not mix these up.**\n *\n * @static\n * @method animate\n * @param element {DOMElement} animated element\n * @param animation {String} animation name\n * @param [options] {Object}\n * @param [options.onEnd=null] {Function} callback for animation end\n * @param [options.removeClass=false] {Boolean} whether to remove the Css class when finished\n * @param [options.duration=medium] {String|Number} duration name (fast|medium|slow) or duration in ms\n *\n * @sample Ink_UI_Animate_1_animate.html\n **/\n animate: function (element, animation, options) {\n element = Common.elOrSelector(element);\n\n if (typeof options === 'number' || typeof options === 'string') {\n options = { duration: options };\n } else if (!options) {\n options = {};\n }\n\n if (typeof arguments[3] === 'function') {\n options.onEnd = arguments[3];\n }\n\n if (typeof options.duration !== 'number' && typeof options.duration !== 'string') {\n options.duration = 400;\n }\n\n if (!Animate.animationSupported) {\n if (options.onEnd) {\n setTimeout(function () {\n options.onEnd(null);\n }, 0);\n }\n return;\n }\n\n if (typeof options.duration === 'number') {\n element.style[animationPrefix + 'Duration'] = options.duration + 'ms';\n } else if (typeof options.duration === 'string') {\n Css.addClassName(element, options.duration);\n }\n\n Css.addClassName(element, ['animated', animation]);\n\n function onAnimationEnd(event) {\n if (event.target !== element) { return; }\n if (event.animationName !== animation) { return; }\n if (options.onEnd) { options.onEnd(event); }\n if (options.removeClass) {\n Css.removeClassName(element, animation);\n }\n if (typeof options.duration === 'string') {\n Css.removeClassName(element, options.duration);\n }\n element.removeEventListener(animationEndEventName, onAnimationEnd, false);\n }\n\n element.addEventListener(animationEndEventName, onAnimationEnd, false);\n }\n });\n\n Common.createUIComponent(Animate);\n\n return Animate;\n});\n","/**\n * Flexible Carousel\n * @module Ink.UI.Carousel_1\n * @version 1\n */\n\nInk.createModule('Ink.UI.Carousel', '1',\n ['Ink.UI.Common_1', 'Ink.Dom.Event_1', 'Ink.Dom.Css_1', 'Ink.Dom.Element_1', 'Ink.UI.Pagination_1', 'Ink.Dom.Browser_1', 'Ink.Dom.Selector_1'],\n function(Common, InkEvent, Css, InkElement, Pagination, Browser/*, Selector*/) {\n 'use strict';\n\n /*\n * TODO:\n * keyboardSupport\n */\n\n function limitRange(n, min, max) {\n return Math.min(max, Math.max(min, n));\n }\n\n var requestAnimationFrame = window.requestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n function (cb) {return setTimeout(cb, 1000 / 30); };\n\n /**\n * @class Ink.UI.Carousel_1\n * @constructor\n *\n * @param {String|DOMElement} selector DOM element or element id\n * @param {Object} [options] Carousel Options\n * @param {Integer} [options.autoAdvance] Milliseconds to wait before auto-advancing pages. Set to 0 to disable auto-advance. Defaults to 0.\n * @param {String} [options.axis] Axis of the carousel. Set to 'y' for a vertical carousel. Defaults to 'x'.\n * @param {Number} [options.initialPage] Initial index page of the carousel. Defaults to 0.\n * @param {Boolean} [options.spaceAfterLastSlide=true] If there are not enough slides to fill the full width of the last page, leave white space. Defaults to `true`.\n * @param {Boolean} [options.swipe] Enable swipe support if available. Defaults to true.\n * @param {Mixed} [options.pagination] Either an ul element to add pagination markup to or an `Ink.UI.Pagination` instance to use.\n * @param {Function} [options.onChange] Callback to be called when the page changes.\n *\n * @sample Ink_UI_Carousel_1.html\n */\n function Carousel() {\n Common.BaseUIComponent.apply(this, arguments);\n }\n\n Carousel._name = 'Carousel_1';\n\n Carousel._optionDefinition = {\n autoAdvance: ['Integer', 0],\n axis: ['String', 'x'],\n initialPage: ['Integer', 0],\n spaceAfterLastSlide: ['Boolean', true],\n hideLast: ['Boolean', false],\n // [3.1.0] Deprecate \"center\". It is only needed when things are of unknown widths.\n center: ['Boolean', false],\n keyboardSupport:['Boolean', false],\n pagination: ['String', null],\n onChange: ['Function', null],\n onInit: ['Function', function () {}],\n swipe: ['Boolean', true]\n // TODO exponential swipe\n // TODO specify break point for next page when moving finger\n };\n\n Carousel.prototype = {\n _init: function () {\n this._handlers = {\n paginationChange: Ink.bindMethod(this, '_onPaginationChange'),\n windowResize: InkEvent.throttle(Ink.bindMethod(this, 'refit'), 200)\n };\n\n InkEvent.observe(window, 'resize', this._handlers.windowResize);\n\n this._isY = (this._options.axis === 'y');\n\n var ulEl = Ink.s('ul.stage', this._element);\n this._ulEl = ulEl;\n\n InkElement.removeTextNodeChildren(ulEl);\n\n if (this._options.pagination == null) {\n this._currentPage = this._options.initialPage;\n }\n\n this.refit(); // recalculate this._numPages\n\n if (this._isY) {\n // Override white-space: no-wrap which is only necessary to make sure horizontal stuff stays horizontal, but breaks stuff intended to be vertical.\n this._ulEl.style.whiteSpace = 'normal';\n }\n\n if (this._options.swipe) {\n InkEvent.observe(this._element, 'touchstart', Ink.bindMethod(this, '_onTouchStart'));\n InkEvent.observe(this._element, 'touchmove', Ink.bindMethod(this, '_onTouchMove'));\n InkEvent.observe(this._element, 'touchend', Ink.bindMethod(this, '_onTouchEnd'));\n }\n\n this._setUpPagination();\n this._setUpAutoAdvance();\n this._setUpHider();\n\n this._options.onInit.call(this, this);\n },\n\n /**\n * Repositions elements around.\n * Measure the carousel once again, adjusting the involved elements' sizes. This is called automatically when the window resizes, in order to cater for changes from responsive media queries, for instance.\n *\n * @method refit\n * @public\n */\n refit: function() {\n var _isY = this._isY;\n\n var size = function (elm, perpendicular) {\n if (!elm) { return 0; }\n\n if (!perpendicular) {\n return InkElement.outerDimensions(elm)[_isY ? 1 : 0];\n } else {\n return InkElement.outerDimensions(elm)[_isY ? 0 : 1];\n }\n };\n\n this._liEls = Ink.ss('li.slide', this._ulEl);\n var numSlides = this._liEls.length;\n\n var contRect = this._ulEl.getBoundingClientRect();\n this._ctnLength = _isY ? contRect.bottom - contRect.top : contRect.right - contRect.left;\n this._elLength = size(this._liEls[0]);\n this._slidesPerPage = Math.floor( this._ctnLength / this._elLength ) || 1;\n if (!isFinite(this._slidesPerPage)) { this._slidesPerPage = 1; }\n\n var numPages = Math.ceil( numSlides / this._slidesPerPage );\n var numPagesChanged = this._numPages !== numPages;\n this._numPages = numPages;\n this._deltaLength = this._slidesPerPage * this._elLength;\n \n this._center();\n this._updateHider();\n this._IE7();\n\n if (this._pagination && numPagesChanged) {\n this._pagination.setSize(this._numPages);\n }\n this.setPage(limitRange(this.getPage(), 0, this._numPages));\n },\n\n _setUpPagination: function () {\n if (this._options.pagination) {\n if (Common.isDOMElement(this._options.pagination) ||\n typeof this._options.pagination === 'string') {\n // if dom element or css selector string...\n this._pagination = new Pagination(this._options.pagination, {\n size: this._numPages,\n onChange: this._handlers.paginationChange\n });\n } else {\n // assumes instantiated pagination\n this._pagination = this._options.pagination;\n this._pagination._options.onChange = this._handlers.paginationChange;\n this._pagination.setSize(this._numPages);\n }\n this._pagination.setCurrent(this._options.initialPage || 0);\n } else {\n this._currentPage = this._options.initialPage || 0;\n }\n },\n\n _setUpAutoAdvance: function () {\n if (!this._options.autoAdvance) { return; }\n var self = this;\n\n setTimeout(function autoAdvance() {\n self.nextPage(true /* wrap */);\n setTimeout(autoAdvance, self._options.autoAdvance);\n }, this._options.autoAdvance);\n },\n\n _setUpHider: function () {\n if (this._options.hideLast) {\n var hiderEl = InkElement.create('div', {\n className: 'hider',\n insertBottom: this._element\n });\n hiderEl.style.position = 'absolute';\n hiderEl.style[ this._isY ? 'left' : 'top' ] = '0'; // fix to top..\n hiderEl.style[ this._isY ? 'right' : 'bottom' ] = '0'; // and bottom...\n hiderEl.style[ this._isY ? 'bottom' : 'right' ] = '0'; // and move to the end.\n this._hiderEl = hiderEl;\n }\n },\n\n // [3.1.0] Deprecate this already\n _center: function() {\n if (!this._options.center) { return; }\n var gap = Math.floor( (this._ctnLength - (this._elLength * this._slidesPerPage) ) / 2 );\n\n var pad;\n if (this._isY) {\n pad = [gap, 'px 0'];\n } else {\n pad = ['0 ', gap, 'px'];\n }\n\n this._ulEl.style.padding = pad.join('');\n },\n\n // [3.1.0] Deprecate this already\n _updateHider: function() {\n if (!this._hiderEl) { return; }\n if (this.getPage() === 0) {\n var gap = Math.floor( this._ctnLength - (this._elLength * this._slidesPerPage) );\n if (this._options.center) {\n gap /= 2;\n }\n this._hiderEl.style[ this._isY ? 'height' : 'width' ] = gap + 'px';\n } else {\n this._hiderEl.style[ this._isY ? 'height' : 'width' ] = '0px';\n }\n },\n \n /**\n * Refits elements for IE7 because it doesn't support inline-block.\n *\n * @method _IE7\n * @private\n */\n _IE7: function () {\n if (Browser.IE && '' + Browser.version.split('.')[0] === '7') {\n // var numPages = this._numPages;\n var slides = Ink.ss('li.slide', this._ulEl);\n var stl = function (prop, val) {slides[i].style[prop] = val; };\n for (var i = 0, len = slides.length; i < len; i++) {\n stl('position', 'absolute');\n stl(this._isY ? 'top' : 'left', (i * this._elLength) + 'px');\n }\n }\n },\n\n _onTouchStart: function (event) {\n if (event.touches.length > 1) { return; }\n\n this._swipeData = {\n x: InkEvent.pointerX(event),\n y: InkEvent.pointerY(event)\n };\n\n var ulRect = this._ulEl.getBoundingClientRect();\n\n this._swipeData.firstUlPos = ulRect[this._isY ? 'top' : 'left'];\n\n this._swipeData.inUlX = this._swipeData.x - ulRect.left;\n this._swipeData.inUlY = this._swipeData.y - ulRect.top;\n\n setTransitionProperty(this._ulEl, 'none');\n\n this._touchMoveIsFirstTouchMove = true;\n },\n\n _onTouchMove: function (event) {\n if (event.touches.length > 1) { return; /* multitouch event, not my problem. */ }\n\n var pointerX = InkEvent.pointerX(event);\n var pointerY = InkEvent.pointerY(event);\n\n var deltaY = Math.abs(pointerY - this._swipeData.y);\n var deltaX = Math.abs(pointerX - this._swipeData.x);\n\n if (this._touchMoveIsFirstTouchMove) {\n this._touchMoveIsFirstTouchMove = undefined;\n this._scrolling = this._isY ?\n deltaX > deltaY :\n deltaY > deltaX ;\n\n if (!this._scrolling) {\n this._onAnimationFrame();\n }\n }\n\n if (!this._scrolling && this._swipeData) {\n InkEvent.stopDefault(event);\n\n this._swipeData.pointerPos = this._isY ? pointerY : pointerX;\n }\n },\n\n _onAnimationFrame: function () {\n var swipeData = this._swipeData;\n\n if (!swipeData || this._scrolling || this._touchMoveIsFirstTouchMove) { return; }\n\n var elRect = this._element.getBoundingClientRect();\n\n var newPos;\n\n if (!this._isY) {\n newPos = swipeData.pointerPos - swipeData.inUlX - elRect.left;\n } else {\n newPos = swipeData.pointerPos - swipeData.inUlY - elRect.top;\n }\n\n this._ulEl.style[this._isY ? 'top' : 'left'] = newPos + 'px';\n\n requestAnimationFrame(Ink.bindMethod(this, '_onAnimationFrame'));\n },\n\n _onTouchEnd: function (event) {\n if (this._swipeData && this._swipeData.pointerPos && !this._scrolling && !this._touchMoveIsFirstTouchMove) {\n var snapToNext = 0.1; // swipe 10% of the way to change page\n\n var relProgress = this._swipeData.firstUlPos -\n this._ulEl.getBoundingClientRect()[this._isY ? 'top' : 'left'];\n\n var curPage = this.getPage();\n\n // How many pages were advanced? May be fractional.\n var progressInPages = relProgress / this._elLength / this._slidesPerPage;\n\n // Have we advanced enough to change page?\n if (Math.abs(progressInPages) > snapToNext) {\n curPage += Math[ relProgress < 0 ? 'floor' : 'ceil' ](progressInPages);\n }\n\n // If something used to calculate progressInPages was zero, we get NaN here.\n if (!isNaN(curPage)) {\n this.setPage(curPage);\n }\n\n InkEvent.stopDefault(event);\n }\n\n setTransitionProperty(this._ulEl, null /* transition: left, top */);\n this._swipeData = null;\n this._touchMoveIsFirstTouchMove = undefined;\n this._scrolling = undefined;\n },\n\n _onPaginationChange: function(pgn) {\n this._setPage(pgn.getCurrent());\n },\n\n /**\n * Gets the current page index\n * @method getPage\n * @return The current page number\n **/\n getPage: function () {\n if (this._pagination) {\n return this._pagination.getCurrent();\n } else {\n return this._currentPage || 0;\n }\n },\n\n /**\n * Sets the current page index\n * @method setPage\n * @param {Number} page Index of the destination page.\n * @param {Boolean} [wrap] Flag to activate circular counting.\n **/\n setPage: function (page, wrap) {\n if (wrap) {\n // Pages outside the range [0..this._numPages] are wrapped.\n page = page % this._numPages;\n if (page < 0) { page = this._numPages - page; }\n }\n page = limitRange(page, 0, this._numPages - 1);\n\n if (this._pagination) {\n this._pagination.setCurrent(page); // _setPage is called by pagination because it listens to its Change event.\n } else {\n this._setPage(page);\n }\n },\n\n _setPage: function (page) {\n var _lengthToGo = page * this._deltaLength;\n var isLastPage = page === (this._numPages - 1);\n\n if (!this._options.spaceAfterLastSlide && isLastPage && page > 0) { \n var _itemsInLastPage = this._liEls.length - (page * this._slidesPerPage);\n if(_itemsInLastPage < this._slidesPerPage) {\n _lengthToGo = ((page - 1) * this._deltaLength) + (_itemsInLastPage * this._elLength);\n }\n }\n\n this._ulEl.style[ this._isY ? 'top' : 'left'] =\n ['-', _lengthToGo, 'px'].join('');\n\n if (this._options.onChange) {\n this._options.onChange.call(this, page);\n }\n\n this._currentPage = page;\n\n this._updateHider();\n },\n\n /**\n * Goes to the next page\n * @method nextPage\n * @param {Boolean} [wrap] Flag to loop from last page to first page.\n **/\n nextPage: function (wrap) {\n this.setPage(this.getPage() + 1, wrap);\n },\n\n /**\n * Goes to the previous page\n * @method previousPage\n * @param {Boolean} [wrap] Flag to loop from first page to last page.\n **/\n previousPage: function (wrap) { this.setPage(this.getPage() - 1, wrap); },\n\n /**\n * Returns how many slides fit into a page\n * @method getSlidesPerPage\n * @return {Number} The number of slides per page\n * @public\n */\n getSlidesPerPage: function() {\n return this._slidesPerPage;\n },\n\n /**\n * Get the amount of pages in the carousel.\n * @method getTotalPages\n * @return {Number} The number of pages\n * @public\n */\n getTotalPages: function() {\n return this._numPages;\n },\n\n /**\n * Get the stage element (your UL with the class \".stage\").\n * @method getStageElm\n * @public\n * @return {DOMElement} Stage element\n **/\n getStageElm: function() {\n return this._ulEl;\n },\n\n /**\n * Get a list of your slides (elements with the \".slide\" class inside your stage)\n * @method getSlidesList\n * @return {DOMElement[]} Array containing the slides.\n * @public\n */\n getSlidesList: function() {\n return this._liEls;\n },\n\n /**\n * Get the total number of slides\n * @method getTotalSlides\n * @return {Number} The number of slides\n * @public\n */\n getTotalSlides: function() {\n return this.getSlidesList().length;\n }\n };\n\n function setTransitionProperty(el, newTransition) {\n el.style.transitionProperty =\n el.style.oTransitionProperty =\n el.style.msTransitionProperty =\n el.style.mozTransitionProperty =\n el.style.webkitTransitionProperty = newTransition;\n }\n\n Common.createUIComponent(Carousel);\n\n return Carousel;\n\n});\n","/**\n * Closing utilities\n * @module Ink.UI.Close_1\n * @version 1\n */\nInk.createModule('Ink.UI.Close', '1', ['Ink.Dom.Event_1','Ink.Dom.Element_1'], function(InkEvent, InkElement) {\n 'use strict';\n\n /**\n * Subscribes clicks on the document.body.\n * Whenever an element with the classes \".ink-close\" or \".ink-dismiss\" is clicked, this module finds an ancestor \".ink-alert\" or \".ink-alert-block\" element and removes it from the DOM.\n * This module should be created only once per page.\n * \n * @class Ink.UI.Close\n * @constructor\n * @example\n * \n *\n * @sample Ink_UI_Close_1.html\n */\n var Close = function() {\n InkEvent.observe(document.body, 'click', function(ev) {\n var el = InkEvent.element(ev);\n\n el = InkElement.findUpwardsByClass(el, 'ink-close') ||\n InkElement.findUpwardsByClass(el, 'ink-dismiss');\n\n if (!el) {\n return; // ink-close or ink-dismiss class not found\n }\n\n var toRemove = InkElement.findUpwardsByClass(el, 'ink-alert') ||\n InkElement.findUpwardsByClass(el, 'ink-alert-block') ||\n el;\n\n if (toRemove) {\n InkEvent.stop(ev);\n InkElement.remove(toRemove);\n }\n });\n };\n\n Close._name = 'Close_1';\n\n return Close;\n});\n","/**\n * Auxiliar utilities for UI Modules\n * @module Ink.UI.Common_1\n * @version 1\n */\n \nInk.createModule('Ink.UI.Common', '1', ['Ink.Dom.Element_1', 'Ink.Net.Ajax_1','Ink.Dom.Css_1','Ink.Dom.Selector_1','Ink.Util.Url_1'], function(InkElement, Ajax,Css,Selector,Url) {\n\n 'use strict';\n\n var nothing = {} /* a marker, for reference comparison. */;\n\n var keys = Object.keys || function (obj) {\n var ret = [];\n for (var k in obj) if (obj.hasOwnProperty(k)) {\n ret.push(k);\n }\n return ret;\n };\n\n var es6WeakMapSupport = 'WeakMap' in window;\n var instances = es6WeakMapSupport ? new WeakMap() : null;\n\n var domRegistry = {\n get: function get(el) {\n return es6WeakMapSupport ?\n instances.get(el) :\n el.__InkInstances;\n },\n set: function set(el, thing) {\n if (es6WeakMapSupport) {\n instances.set(el, thing);\n } else {\n el.__InkInstances = thing;\n }\n }\n };\n\n /**\n * @namespace Ink.UI.Common_1\n */\n\n var Common = {\n\n /**\n * Supported Ink Layouts\n *\n * @property Layouts\n * @type Object\n * @readOnly\n */\n Layouts: {\n TINY: 'tiny',\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n XLARGE: 'xlarge'\n },\n\n /**\n * Checks if an item is a valid DOM Element.\n *\n * @method isDOMElement\n * @static\n * @param {Mixed} o The object to be checked.\n * @return {Boolean} True if it's a valid DOM Element.\n * @example\n * var el = Ink.s('#element');\n * if( Ink.UI.Common.isDOMElement( el ) === true ){\n * // It is a DOM Element.\n * } else {\n * // It is NOT a DOM Element.\n * }\n */\n isDOMElement: InkElement.isDOMElement,\n\n /**\n * Checks if an item is a valid integer.\n *\n * @method isInteger\n * @static\n * @param {Mixed} n The value to be checked.\n * @return {Boolean} True if it's a valid integer.\n * @example\n * var value = 1;\n * if( Ink.UI.Common.isInteger( value ) === true ){\n * // It is an integer.\n * } else {\n * // It is NOT an integer.\n * }\n */\n isInteger: function(n) {\n return (typeof n === 'number' && n % 1 === 0);\n },\n\n /**\n * Gets a DOM Element. \n *\n * @method elOrSelector\n * @static\n * @param {DOMElement|String} elOrSelector DOM Element or CSS Selector\n * @param {String} fieldName The name of the field. Commonly used for debugging.\n * @return {DOMElement} Returns the DOMElement passed or the first result of the CSS Selector. Otherwise it throws an exception.\n * @example\n * // In case there are several .myInput, it will retrieve the first found\n * var el = Ink.UI.Common.elOrSelector('.myInput','My Input');\n */\n elOrSelector: function(elOrSelector, fieldName) {\n if (!this.isDOMElement(elOrSelector)) {\n var t = Selector.select(elOrSelector);\n if (t.length === 0) {\n Ink.warn(fieldName + ' must either be a DOM Element or a selector expression!\\nThe script element must also be after the DOM Element itself.');\n return null;\n }\n return t[0];\n }\n return elOrSelector;\n },\n\n /**\n * Alias for `elOrSelector` but returns an array of elements.\n *\n * @method elsOrSelector\n *\n * @static\n * @param {DOMElement|String} elOrSelector DOM Element or CSS Selector\n * @param {String} fieldName The name of the field. Commonly used for debugging.\n * @return {DOMElement} Returns the DOMElement passed or the first result of the CSS Selector. Otherwise it throws an exception.\n * @param {Boolean} required Flag to accept an empty array as output.\n * @return {Array} The selected DOM Elements.\n * @example\n * var elements = Ink.UI.Common.elsOrSelector('input.my-inputs', 'My Input');\n */\n elsOrSelector: function(elsOrSelector, fieldName, required) {\n var ret;\n if (typeof elsOrSelector === 'string') {\n ret = Selector.select(elsOrSelector);\n } else if (Common.isDOMElement(elsOrSelector)) {\n ret = [elsOrSelector];\n } else if (elsOrSelector && typeof elsOrSelector === 'object' && typeof elsOrSelector.length === 'number') {\n ret = elsOrSelector;\n }\n\n if (ret && ret.length) {\n return ret;\n } else {\n if (required) {\n throw new TypeError(fieldName + ' must either be a DOM Element, an Array of elements, or a selector expression!\\nThe script element must also be after the DOM Element itself.');\n } else {\n return [];\n }\n }\n },\n\n /**\n * Gets options an object and element's metadata.\n *\n * The element's data attributes take precedence. Values from the element's data-atrributes are coerced into the required type.\n *\n * @method options\n *\n * @param {Object} [fieldId] Name to be used in debugging features.\n * @param {Object} defaults Object with the options' types and defaults.\n * @param {Object} overrides Options to override the defaults. Usually passed when instantiating an UI module.\n * @param {DOMElement} [element] Element with data-attributes\n *\n * @example\n *\n * this._options = Ink.UI.Common.options('MyComponent', {\n * 'anobject': ['Object', null], // Defaults to null\n * 'target': ['Element', null],\n * 'stuff': ['Number', 0.1],\n * 'stuff2': ['Integer', 0],\n * 'doKickFlip': ['Boolean', false],\n * 'targets': ['Elements'], // Required option since no default was given\n * 'onClick': ['Function', null]\n * }, options || {}, elm)\n *\n * @example\n *\n * ### Note about booleans\n *\n * Here is how options are read from the markup\n * data-attributes, for several values`data-a-boolean`.\n *\n * Options considered true:\n *\n * - `data-a-boolean=\"true\"`\n * - (Every other value which is not on the list below.)\n * \n * Options considered false:\n *\n * - `data-a-boolean=\"false\"`\n * - `data-a-boolean=\"\"`\n * - `data-a-boolean`\n *\n * Options which go to default:\n *\n * - (no attribute). When `data-a-boolean` is ommitted, the\n * option is not considered true nor false, and as such\n * defaults to what is in the `defaults` argument.\n *\n **/\n options: function (fieldId, defaults, overrides, element) {\n if (typeof fieldId !== 'string') {\n element = overrides;\n overrides = defaults;\n defaults = fieldId;\n fieldId = '';\n }\n overrides = overrides || {};\n var out = {};\n var dataAttrs = element ? InkElement.data(element) : {};\n var fromDataAttrs;\n var type;\n var lType;\n var defaultVal;\n\n var invalidStr = function (str) {\n if (fieldId) { str = fieldId + ': \"' + ('' + str).replace(/\"/, '\\\\\"') + '\"'; }\n return str;\n };\n\n var quote = function (str) {\n return '\"' + ('' + str).replace(/\"/, '\\\\\"') + '\"';\n };\n\n var invalidThrow = function (str) {\n throw new Error(invalidStr(str));\n };\n\n var invalid = function (str) {\n Ink.error(invalidStr(str) + '. Ignoring option.');\n };\n\n function optionValue(key) {\n type = defaults[key][0];\n lType = type.toLowerCase();\n defaultVal = defaults[key].length === 2 ? defaults[key][1] : nothing;\n\n if (!type) {\n invalidThrow('Ink.UI.Common.options: Always specify a type!');\n }\n if (!(lType in Common._coerce_funcs)) {\n invalidThrow('Ink.UI.Common.options: ' + defaults[key][0] + ' is not a valid type. Use one of ' + keys(Common._coerce_funcs).join(', '));\n\n }\n if (!defaults[key].length || defaults[key].length > 2) {\n invalidThrow('the \"defaults\" argument must be an object mapping option names to [typestring, optional] arrays.');\n }\n\n if (key in dataAttrs) {\n fromDataAttrs = Common._coerce_from_string(lType, dataAttrs[key], key, fieldId);\n // (above can return `nothing`)\n } else {\n fromDataAttrs = nothing;\n }\n\n if (fromDataAttrs !== nothing) {\n if (!Common._options_validate(fromDataAttrs, lType)) {\n invalid('(' + key + ' option) Invalid ' + lType + ' ' + quote(fromDataAttrs));\n return defaultVal;\n } else {\n return fromDataAttrs;\n }\n } else if (key in overrides) {\n return overrides[key];\n } else if (defaultVal !== nothing) {\n return defaultVal;\n } else {\n invalidThrow('Option ' + key + ' is required!');\n }\n }\n\n for (var key in defaults) {\n if (defaults.hasOwnProperty(key)) {\n out[key] = optionValue(key);\n }\n }\n\n return out;\n },\n\n _coerce_from_string: function (type, val, paramName, fieldId) {\n if (type in Common._coerce_funcs) {\n return Common._coerce_funcs[type](val, paramName, fieldId);\n } else {\n return val;\n }\n },\n\n _options_validate: function (val, type) {\n if (type in Common._options_validate_types) {\n return Common._options_validate_types[type].call(Common, val);\n } else {\n // 'object' options cannot be passed through data-attributes.\n // Json you say? Not any good to embed in HTML.\n return false;\n }\n },\n\n _coerce_funcs: (function () {\n var ret = {\n element: function (val) {\n return Common.elOrSelector(val, '');\n },\n elements: function (val) {\n return Common.elsOrSelector(val, '', false /*not required, so don't throw an exception now*/);\n },\n object: function (val) { return val; },\n number: function (val) { return parseFloat(val); },\n 'boolean': function (val) {\n return !(val === 'false' || val === '' || val === null);\n },\n string: function (val) { return val; },\n 'function': function (val, paramName, fieldId) {\n Ink.error(fieldId + ': You cannot specify the option \"' + paramName + '\" through data-attributes because it\\'s a function');\n return nothing;\n }\n };\n ret['float'] = ret.integer = ret.number;\n return ret;\n }()),\n\n _options_validate_types: (function () {\n var types = {\n string: function (val) {\n return typeof val === 'string';\n },\n number: function (val) {\n return typeof val === 'number' && !isNaN(val) && isFinite(val);\n },\n integer: function (val) {\n return val === Math.round(val);\n },\n element: function (val) {\n return Common.isDOMElement(val);\n },\n elements: function (val) {\n return val && typeof val === 'object' && typeof val.length === 'number' && val.length;\n },\n 'boolean': function (val) {\n return typeof val === 'boolean';\n },\n object: function () { return true; }\n };\n types['float'] = types.number;\n return types;\n }()),\n\n /**\n * Deep copy (clone) an object.\n * Note: The object cannot have referece loops.\n *\n * @method clone\n * @static\n * @param {Object} o The object to be cloned/copied.\n * @return {Object} Returns the result of the clone/copy.\n * @example\n * var originalObj = {\n * key1: 'value1',\n * key2: 'value2',\n * key3: 'value3'\n * };\n * var cloneObj = Ink.UI.Common.clone( originalObj );\n */\n clone: function(o) {\n try {\n return JSON.parse( JSON.stringify(o) );\n } catch (ex) {\n throw new Error('Given object cannot have loops!');\n }\n },\n\n\n /**\n * Gets an element's one-base index relative to its parent.\n *\n * @method childIndex\n * @static\n * @param {DOMElement} childEl Valid DOM Element.\n * @return {Number} Numerical position of an element relatively to its parent.\n * @example\n * \n * \n *\n * \n */\n childIndex: function(childEl) {\n if( Common.isDOMElement(childEl) ){\n var els = Selector.select('> *', childEl.parentNode);\n for (var i = 0, f = els.length; i < f; ++i) {\n if (els[i] === childEl) {\n return i;\n }\n }\n }\n throw 'not found!';\n },\n\n\n /**\n * AJAX JSON request shortcut method\n * It provides a more convenient way to do an AJAX request and expect a JSON response.It also offers a callback option, as third parameter, for better async handling.\n *\n * @method ajaxJSON\n * @static\n * @async\n * @param {String} endpoint Valid URL to be used as target by the request.\n * @param {Object} params This field is used in the thrown Exception to identify the parameter.\n * @param {Function} cb Callback for the request.\n * @example\n * // In case there are several .myInput, it will retrieve the first found\n * var el = Ink.UI.Common.elOrSelector('.myInput','My Input');\n */\n ajaxJSON: function(endpoint, params, cb) {\n new Ajax(\n endpoint,\n {\n evalJS: 'force',\n method: 'POST',\n parameters: params,\n\n onSuccess: function( r) {\n try {\n r = r.responseJSON;\n if (r.status !== 'ok') {\n throw 'server error: ' + r.message;\n }\n cb(null, r);\n } catch (ex) {\n cb(ex);\n }\n },\n\n onFailure: function() {\n cb('communication failure');\n }\n }\n );\n },\n\n\n /**\n * Gets the current Ink layout.\n *\n * @method currentLayout\n * @static\n * @return {String} A string representation of the current layout name.\n * @example\n * var inkLayout = Ink.UI.Common.currentLayout();\n * if (inkLayout === 'small') {\n * // ...\n * }\n */\n currentLayout: function() {\n var i, f, k, v, el, detectorEl = Selector.select('#ink-layout-detector')[0];\n if (!detectorEl) {\n detectorEl = document.createElement('div');\n detectorEl.id = 'ink-layout-detector';\n for (k in this.Layouts) {\n if (this.Layouts.hasOwnProperty(k)) {\n v = this.Layouts[k];\n el = document.createElement('div');\n el.className = 'show-' + v + ' hide-all';\n el.setAttribute('data-ink-layout', v);\n detectorEl.appendChild(el);\n }\n }\n document.body.appendChild(detectorEl);\n }\n\n for (i = 0, f = detectorEl.children.length; i < f; ++i) {\n el = detectorEl.children[i];\n if (Css.getStyle(el, 'display') === 'block') {\n return el.getAttribute('data-ink-layout');\n }\n }\n\n return 'large';\n },\n\n\n /**\n * Sets the location's hash (window.location.hash).\n *\n * @method hashSet\n * @static\n * @param {Object} o Object with the info to be placed in the location's hash.\n * @example\n * // It will set the location's hash like: #key1=value1&key2=value2&key3=value3\n * Ink.UI.Common.hashSet({\n * key1: 'value1',\n * key2: 'value2',\n * key3: 'value3'\n * });\n */\n hashSet: function(o) {\n if (typeof o !== 'object') { throw new TypeError('o should be an object!'); }\n var hashParams = Url.getAnchorString();\n hashParams = Ink.extendObj(hashParams, o);\n window.location.hash = Url.genQueryString('', hashParams).substring(1);\n },\n\n /**\n * Removes children nodes from a given object.\n * This method was initially created to help solve a problem in Internet Explorer(s) that occurred when trying to set the innerHTML of some specific elements like 'table'.\n *\n * @method cleanChildren\n * @static\n * @param {DOMElement} parentEl Valid DOM Element\n * @example\n * \n * \n *\n * \n *\n * \n * \n */\n cleanChildren: function(parentEl) {\n if( !Common.isDOMElement(parentEl) ){\n throw 'Please provide a valid DOMElement';\n }\n var prevEl, el = parentEl.lastChild;\n while (el) {\n prevEl = el.previousSibling;\n parentEl.removeChild(el);\n el = prevEl;\n }\n },\n\n /**\n * Stores the id and/or classes of an element in an object.\n *\n * @method storeIdAndClasses\n * @static\n * @param {DOMElement} fromEl Valid DOM Element to get the id and classes from.\n * @param {Object} inObj Object where the id and classes will be saved.\n * @example\n *
\n *\n * \n */\n storeIdAndClasses: function(fromEl, inObj) {\n if( !Common.isDOMElement(fromEl) ){\n throw 'Please provide a valid DOMElement as first parameter';\n }\n\n var id = fromEl.id;\n if (id) {\n inObj._id = id;\n }\n\n var classes = fromEl.className;\n if (classes) {\n inObj._classes = classes;\n }\n },\n\n /**\n * Sets the id and className properties of an element based \n *\n * @method restoreIdAndClasses\n * @static\n * @param {DOMElement} toEl Valid DOM Element to set the id and classes on.\n * @param {Object} inObj Object where the id and classes to be set are. This method uses the same format as the one given in `storeIdAndClasses`\n * @example\n *
\n *\n * \n *\n * \n *
\n */\n restoreIdAndClasses: function(toEl, inObj) {\n\n if( !Common.isDOMElement(toEl) ){\n throw 'Please provide a valid DOMElement as first parameter';\n }\n\n if (inObj._id && toEl.id !== inObj._id) {\n toEl.id = inObj._id;\n }\n\n if (inObj._classes && toEl.className.indexOf(inObj._classes) === -1) {\n if (toEl.className) { toEl.className += ' ' + inObj._classes; }\n else { toEl.className = inObj._classes; }\n }\n\n if (inObj._instanceId && !toEl.getAttribute('data-instance')) {\n toEl.setAttribute('data-instance', inObj._instanceId);\n }\n },\n\n _warnDoubleInstantiation: function (elm, newInstance) {\n var instances = Common.getInstance(elm);\n\n if (getName(newInstance) === '') { return; }\n if (!instances) { return; }\n\n var nameWithoutVersion = getName(newInstance);\n\n if (!nameWithoutVersion) { return; }\n\n for (var i = 0, len = instances.length; i < len; i++) {\n if (nameWithoutVersion === getName(instances[i])) {\n // Yes, I am using + to concatenate and , to split\n // arguments.\n //\n // Elements can't be concatenated with strings, but if\n // they are passed in an argument, modern debuggers will\n // pretty-print them and make it easy to find them in the\n // element inspector.\n //\n // On the other hand, if strings are passed as different\n // arguments, they get pretty printed. And the pretty\n // print of a string has quotes around it.\n //\n // If some day people find out that strings are not\n // just text and they start preserving contextual\n // information, then by all means change this to a\n // regular concatenation.\n //\n // But they won't. So don't change this.\n Ink.warn('Creating more than one ' + nameWithoutVersion + '.',\n '(Was creating a ' + nameWithoutVersion + ' on:', elm, ').');\n return false;\n }\n }\n\n function getName(thing) {\n return ((thing.constructor && (thing.constructor._name)) ||\n thing._name ||\n '').replace(/_.*?$/, '');\n }\n\n return true;\n },\n\n /**\n * Saves a component's instance reference for later retrieval.\n *\n * @method registerInstance\n * @static\n * @param {Object} inst Object that holds the instance.\n * @param {DOMElement} el DOM Element to associate with the object.\n */\n registerInstance: function(inst, el) {\n if (!inst) { return; }\n\n if (!Common.isDOMElement(el)) { throw new TypeError('Ink.UI.Common.registerInstance: The element passed in is not a DOM element!'); }\n\n // [todo] this belongs in the BaseUIComponent's initialization\n if (Common._warnDoubleInstantiation(el, inst) === false) {\n return false;\n }\n\n var instances = domRegistry.get(el);\n\n if (!instances) {\n instances = [];\n domRegistry.set(el, instances);\n }\n\n instances.push(inst);\n\n return true;\n },\n\n /**\n * Deletes an instance with a given id.\n *\n * @method unregisterInstance\n * @static\n * @param {String} id Id of the instance to be destroyed.\n */\n unregisterInstance: function(inst) {\n if (!inst || !inst._element) { return; }\n var instances = domRegistry.get(inst._element);\n for (var i = 0, len = instances.length; i < len; i++) {\n if (instances[i] === inst) {\n instances.splice(i, 1);\n }\n }\n },\n\n /**\n * Gets an UI instance from an element or instance id.\n *\n * @method getInstance\n * @static\n * @param {String|DOMElement} el DOM Element from which we want the instances.\n * @return {Object|Array} Returns an instance or a collection of instances.\n */\n getInstance: function(el, UIComponent) {\n el = Common.elOrSelector(el);\n var instances = domRegistry.get(el);\n\n if (!instances) {\n instances = [];\n }\n\n if (typeof UIComponent !== 'function') {\n return instances;\n }\n\n for (var i = 0, len = instances.length; i < len; i++) {\n if (instances[i] instanceof UIComponent) {\n return instances[i];\n }\n }\n\n return null;\n },\n\n /**\n * Gets an instance based on a selector.\n *\n * @method getInstanceFromSelector\n * @static\n * @param {String} selector CSS selector to get the instances from.\n * @return {Object|Array} Returns an instance or a collection of instances.\n */\n getInstanceFromSelector: function(selector) {\n return Common.getInstance(Common.elOrSelector(selector));\n },\n\n /**\n * Gets all the instance ids\n *\n * @method getInstanceIds\n * @static\n * @return {Array} Collection of instance ids\n */\n getInstanceIds: function() {\n var res = [];\n for (var id in instances) {\n if (instances.hasOwnProperty(id)) {\n res.push( id );\n }\n }\n return res;\n },\n\n /**\n * Gets all the instances\n *\n * @method getInstances\n * @static\n * @return {Array} Collection of existing instances.\n */\n getInstances: function() {\n var res = [];\n for (var id in instances) {\n if (instances.hasOwnProperty(id)) {\n res.push( instances[id] );\n }\n }\n return res;\n },\n\n /**\n * Boilerplate method to destroy a component.\n * Components should copy this method as its destroy method and modify it.\n *\n * @method destroyComponent\n * @static\n */\n destroyComponent: function() {\n Common.unregisterInstance(this);\n this._element.parentNode.removeChild(this._element);\n }\n\n };\n\n\n\n\n /**\n * Ink UI Base Class\n **/\n\n function warnStub() {\n /* jshint validthis: true */\n if (!this || this === window || typeof this.constructor !== 'function') { return; }\n Ink.warn('You called a method on an incorrectly instantiated ' + this.constructor._name + ' component. Check the warnings above to see what went wrong.');\n }\n\n function stub(prototype, obj) {\n for (var k in prototype) if (prototype.hasOwnProperty(k)) {\n if (k === 'constructor') { continue; }\n if (typeof obj[k] === 'function') {\n obj[k] = warnStub;\n }\n }\n }\n\n /**\n * Ink UI Base Class\n *\n * You don't use this class directly, or inherit from it directly.\n *\n * See createUIComponent() (in this module) for how to create a UI component and inherit from this. It's not plain old JS inheritance, for several reasons.\n *\n * @class Ink.UI.Common.BaseUIComponent\n * @constructor\n *\n * @param element\n * @param options\n **/\n function BaseUIComponent(element, options) {\n var constructor = this.constructor;\n var _name = constructor._name;\n\n if (!this || this === window) {\n throw new Error('Use \"new InkComponent()\" instead of \"InkComponent()\"');\n }\n\n if (this && !(this instanceof BaseUIComponent)) {\n throw new Error('You forgot to call Ink.UI.Common.createUIComponent() on this module!');\n }\n\n if (!element && !constructor._componentOptions.elementIsOptional) {\n Ink.error(new Error(_name + ': You need to pass an element or a selector as the first argument to \"new ' + _name + '()\"'));\n return;\n } else {\n this._element = Common.elsOrSelector(element,\n _name + ': An element with the selector \"' + element + '\" was not found!')[0];\n }\n\n if (!this._element && !constructor._componentOptions.elementIsOptional) {\n isValidInstance = false;\n Ink.error(new Error(element + ' does not match an element on the page. You need to pass a valid selector to \"new ' + _name + '\".'));\n }\n\n // TODO Change Common.options's signature? the below looks better, more manageable\n // var options = Common.options({\n // element: this._element,\n // modName: constructor._name,\n // options: constructor._optionDefinition,\n // defaults: constructor._globalDefaults\n // });\n\n this._options = Common.options(_name, constructor._optionDefinition, options, this._element);\n\n var isValidInstance = BaseUIComponent._validateInstance(this) === true;\n\n if (isValidInstance && typeof this._init === 'function') {\n try {\n this._init.apply(this, arguments);\n } catch(e) {\n isValidInstance = false;\n Ink.error(e);\n }\n }\n\n if (!isValidInstance) {\n BaseUIComponent._stubInstance(this, constructor, _name);\n } else if (this._element) {\n Common.registerInstance(this, this._element);\n }\n }\n\n /**\n * Calls the `instance`'s _validate() method so it can validate itself.\n *\n * Returns false if the method exists, was called, but no Error was returned or thrown.\n *\n * @method _validateInstance\n * @private\n */\n BaseUIComponent._validateInstance = function (instance) {\n var err;\n\n if (typeof instance._validate !== 'function') { return true; }\n\n try {\n err = instance._validate();\n } catch (e) {\n err = e;\n }\n\n if (err instanceof Error) {\n instance._validationError = err;\n return false;\n }\n\n return true;\n };\n\n\n /**\n * Replaces every method in the instance with stub functions which just call Ink.warn().\n *\n * This avoids breaking the page when there are errors.\n *\n * @method _stubInstance\n * @param instance\n * @param constructor\n * @param name\n * @private\n */\n BaseUIComponent._stubInstance = function (instance, constructor, name) {\n stub(constructor.prototype, instance);\n stub(BaseUIComponent.prototype, instance);\n Ink.warn(name + ' was not correctly created. ' + (instance._validationError || ''));\n };\n\n // TODO BaseUIComponent.setGlobalOptions = function () {}\n // TODO BaseUIComponent.createMany = function (selector) {}\n BaseUIComponent.getInstance = function (elOrSelector) {\n elOrSelector = Common.elOrSelector(elOrSelector);\n return Common.getInstance(elOrSelector, this /* get instance by constructor */);\n };\n\n Ink.extendObj(BaseUIComponent.prototype, {\n /**\n * Get an UI component's option's value.\n *\n * @method getOption\n * @param name\n *\n * @return The option value, or undefined if nothing is found.\n *\n * @example\n *\n * var myUIComponent = new Modal('#element', { trigger: '#trigger' }); // or anything else inheriting BaseUIComponent\n * myUIComponent.getOption('trigger'); // -> The trigger element (not the selector string, mind you)\n *\n **/\n getOption: function (name) {\n if (this.constructor && !(name in this.constructor._optionDefinition)) {\n Ink.error('\"' + name + '\" is not an option for ' + this.constructor._name);\n return undefined;\n }\n\n return this._options[name];\n },\n\n /**\n * Sets an option's value\n *\n * @method getOption\n * @param name\n * @param value\n *\n * @example\n *\n * var myUIComponent = new Modal(...);\n * myUIComponent.setOption('trigger', '#some-element');\n **/\n setOption: function (name, value) {\n if (this.constructor && !(name in this.constructor._optionDefinition)) {\n Ink.error('\"' + name + ' is not an option for ' + this.constructor._name);\n return;\n }\n\n this._options[name] = value;\n },\n\n /**\n * Get the element associated with an UI component (IE the one you used in the constructor)\n *\n * @method getElement\n * @return {Element} The component's element.\n *\n * @example\n * var myUIComponent = new Modal('#element'); // or anything else inheriting BaseUIComponent\n * myUIComponent.getElement(); // -> The '#element' (not the selector string, mind you).\n *\n **/\n getElement: function () {\n return this._element;\n }\n });\n\n Common.BaseUIComponent = BaseUIComponent;\n\n /**\n * @method createUIComponent\n * @param theConstructor UI component constructor. It should have an _init function in its prototype, an _optionDefinition object, and a _name property indicating its name.\n * @param options\n * @param [options.elementIsOptional=false] Whether the element argument is optional (For example, when the component might work on existing markup or create its own).\n **/\n Common.createUIComponent = function createUIComponent(theConstructor, options) {\n theConstructor._componentOptions = options || {};\n\n function assert(test, msg) {\n if (!test) {\n throw new Error('Ink.UI_1.createUIComponent: ' + msg);\n }\n }\n\n function assertProp(prop, propType, message) {\n var propVal = theConstructor[prop];\n // Check that the property was passed\n assert(typeof propVal !== 'undefined',\n theConstructor + ' doesn\\'t have a \"' + prop + '\" property. ' + message);\n // Check that its type is correct\n assert(propType && typeof propVal === propType,\n 'typeof ' + theConstructor + '.' + prop + ' is not \"' + propType + '\". ' + message);\n }\n\n assert(typeof theConstructor === 'function',\n 'constructor argument is not a function!');\n\n assertProp('_name', 'string', 'This property is used for error ' +\n 'messages. Set it to the full module path and version (Ink.My.Module_1).');\n assertProp('_optionDefinition', 'object', 'This property contains the ' +\n 'option names, types and defaults. See Ink.UI.Common.options() for reference.');\n\n // Extend the instance methods and props\n var _oldProto = theConstructor.prototype;\n\n if (typeof Object.create === 'function') {\n theConstructor.prototype = Object.create(BaseUIComponent.prototype);\n } else {\n theConstructor.prototype = (function hideF() {\n function F() {}\n F.prototype = BaseUIComponent.prototype;\n return new F();\n }());\n }\n\n Ink.extendObj(theConstructor.prototype, _oldProto);\n theConstructor.prototype.constructor = theConstructor;\n // Extend static methods\n Ink.extendObj(theConstructor, BaseUIComponent);\n };\n\n return Common;\n\n});\n","/**\n * Date selector\n * @module Ink.UI.DatePicker_1\n * @version 1\n */\n\nInk.createModule('Ink.UI.DatePicker', '1', ['Ink.UI.Common_1','Ink.Dom.Event_1','Ink.Dom.Css_1','Ink.Dom.Element_1','Ink.Dom.Selector_1','Ink.Util.Array_1','Ink.Util.Date_1', 'Ink.Dom.Browser_1'], function(Common, Event, Css, InkElement, Selector, InkArray, InkDate ) {\n 'use strict';\n\n // Clamp a number into a min/max limit\n function clamp(n, min, max) {\n if (n > max) { n = max; }\n if (n < min) { n = min; }\n\n return n;\n }\n\n function dateishFromYMDString(YMD) {\n var split = YMD.split('-');\n return dateishFromYMD(+split[0], +split[1] - 1, +split[2]);\n }\n\n function dateishFromYMD(year, month, day) {\n return {_year: year, _month: month, _day: day};\n }\n\n function dateishFromDate(date) {\n return {_year: date.getFullYear(), _month: date.getMonth(), _day: date.getDate()};\n }\n\n /**\n * @class Ink.UI.DatePicker\n * @constructor\n * @version 1\n *\n * @param {String|DOMElement} selector\n * @param {Object} [options] Options\n * @param {Boolean} [options.autoOpen] Flag to automatically open the datepicker.\n * @param {String} [options.cleanText] Text for the clean button. Defaults to 'Clear'.\n * @param {String} [options.closeText] Text for the close button. Defaults to 'Close'.\n * @param {String} [options.cssClass] CSS class to be applied on the datepicker\n * @param {String|DOMElement} [options.pickerField] (if not using in an input[type=\"text\"]) Element which displays the DatePicker when clicked. Defaults to an \"open\" link.\n * @param {String} [options.dateRange] Enforce limits to year, month and day for the Date, ex: '1990-08-25:2020-11'\n * @param {Boolean} [options.displayInSelect] Flag to display the component in a select element.\n * @param {String|DOMElement} [options.dayField] (if using options.displayInSelect) `select` field with days.\n * @param {String|DOMElement} [options.monthField] (if using options.displayInSelect) `select` field with months.\n * @param {String|DOMElement} [options.yearField] (if using options.displayInSelect) `select` field with years.\n * @param {String} [options.format] Date format string\n * @param {Object} [options.month] Hash of month names. Defaults to portuguese month names. January is 1.\n * @param {String} [options.nextLinkText] Text for the previous button. Defaults to '«'.\n * @param {String} [options.ofText] Text to show between month and year. Defaults to ' of '.\n * @param {Boolean} [options.onFocus] If the datepicker should open when the target element is focused. Defaults to true.\n * @param {Function} [options.onMonthSelected] Callback to execute when the month is selected.\n * @param {Function} [options.onSetDate] Callback to execute when the date is set.\n * @param {Function} [options.onYearSelected] Callback to execute when the year is selected.\n * @param {String} [options.position] Position for the datepicker. Either 'right' or 'bottom'. Defaults to 'right'.\n * @param {String} [options.prevLinkText] Text for the previous button. Defaults to '«'.\n * @param {Boolean} [options.showClean] If the clean button should be visible. Defaults to true.\n * @param {Boolean} [options.showClose] If the close button should be visible. Defaults to true.\n * @param {Boolean} [options.shy] If the datepicker should start automatically. Defaults to true.\n * @param {String} [options.startDate] Date to define initial month. Must be in yyyy-mm-dd format.\n * @param {Number} [options.startWeekDay] First day of the week. Sunday is zero. Defaults to 1 (Monday).\n * @param {Function} [options.validYearFn] Callback to execute when 'rendering' the month (in the month view)\n * @param {Function} [options.validMonthFn] Callback to execute when 'rendering' the month (in the month view)\n * @param {Function} [options.validDayFn] Callback to execute when 'rendering' the day (in the month view)\n * @param {Function} [options.nextValidDateFn] Function to calculate the next valid date, given the current. Useful when there's invalid dates or time frames.\n * @param {Function} [options.prevValidDateFn] Function to calculate the previous valid date, given the current. Useful when there's invalid dates or time frames.\n * @param {Object} [options.wDay] Hash of week day names. Sunday is 0. Defaults to { 0:'Sunday', 1:'Monday', etc...\n * @param {String} [options.yearRange] Enforce limits to year for the Date, ex: '1990:2020' (deprecated)\n *\n * @sample Ink_UI_DatePicker_1.html\n */\n var DatePicker = function() {\n Common.BaseUIComponent.apply(this, arguments);\n };\n\n DatePicker._name = 'DatePicker_1';\n\n DatePicker._optionDefinition = {\n autoOpen: ['Boolean', false],\n cleanText: ['String', 'Clear'],\n closeText: ['String', 'Close'],\n pickerField: ['Element', null],\n containerElement:['Element', null],\n cssClass: ['String', 'ink-calendar bottom'],\n dateRange: ['String', null],\n \n // use this in a \n *\n * By applying this UI class to the above input, you get a tag field with the tags \"initial\" and \"value\". The class preserves the original input element. It remains hidden and is updated with new tag information dynamically, so regular HTML form logic still applies.\n *\n * Below \"input\" refers to the current value of the input tag (updated as the user enters text, of course), and \"output\" refers to the value which this class writes back to said input tag.\n *\n * @class Ink.UI.TagField\n * @version 1\n * @constructor\n * @param {String|DOMElement} element Selector or DOM Input Element.\n * @param {Object} [options] Options object\n * @param {String|Array} [options.tags] Initial tags in the input\n * @param {Boolean} [options.allowRepeated] Flag to allow user to input several tags. Defaults to true.\n * @param {RegExp} [options.separator] Split the input by this RegExp. Defaults to /[,;(space)]+/g (spaces, commas and semicolons)\n * @param {String} [options.outSeparator] Use this string to separate each tag from the next in the output. Defaults to ','.\n * @param {Boolean} [options.autoSplit] Flag to activate tag creation when the user types a separator. Defaults to true.\n * @param {Integer} [options.maxTags] Maximum number of tags allowed. Set to -1 for no limit. Defaults to -1.\n * @example\n */\n function TagField() {\n Common.BaseUIComponent.apply(this, arguments);\n }\n\n TagField._name = 'TagField_1';\n\n TagField._optionDefinition = {\n tags: ['String', []],\n tagQuery: ['Object', null],\n tagQueryAsync: ['Object', null],\n allowRepeated: ['Boolean', false],\n maxTags: ['Integer', -1],\n outSeparator: ['String', ','],\n separator: ['String', /[,; ]+/g],\n autoSplit: ['Boolean', true]\n };\n\n TagField.prototype = {\n /**\n * Init function called by the constructor\n * \n * @method _init\n * @private\n */\n _init: function() {\n var o = this._options;\n if (typeof o.separator === 'string') {\n o.separator = new RegExp(o.separator, 'g');\n }\n\n if (typeof o.tags === 'string') {\n // coerce to array using the separator\n o.tags = this._readInput(o.tags);\n }\n\n Css.addClassName(this._element, 'hide-all');\n\n this._viewElm = InkElement.create('div', {\n className: 'ink-tagfield',\n insertAfter: this._element\n });\n\n this._input = InkElement.create('input', {\n type: 'text',\n className: 'new-tag-input',\n insertBottom: this._viewElm\n });\n\n var tags = [].concat(o.tags, this._tagsFromMarkup(this._element));\n\n this._tags = [];\n\n InkArray.each(tags, Ink.bindMethod(this, '_addTag'));\n\n InkEvent.observe(this._input, 'keyup', Ink.bindEvent(this._onKeyUp, this));\n InkEvent.observe(this._input, 'change', Ink.bindEvent(this._onKeyUp, this));\n InkEvent.observe(this._input, 'keydown', Ink.bindEvent(this._onKeyDown, this));\n InkEvent.observe(this._input, 'blur', Ink.bindEvent(this._onBlur, this));\n InkEvent.observe(this._viewElm, 'click', Ink.bindEvent(this._refocus, this));\n },\n\n destroy: function () {\n InkElement.remove(this._viewElm);\n Css.removeClassName(this._element, 'hide-all');\n },\n\n _tagsFromMarkup: function (element) {\n var tagname = element.tagName.toLowerCase();\n if (tagname === 'input') {\n return this._readInput(element.value);\n } else if (tagname === 'select') {\n return InkArray.map(element.getElementsByTagName('option'), function (option) {\n return InkElement.textContent(option);\n });\n } else {\n throw new Error('Cannot read tags from a ' + tagname + ' tag. Unknown tag');\n }\n },\n\n _tagsToMarkup: function (tags, element) {\n var tagname = element.tagName.toLowerCase();\n if (tagname === 'input') {\n if (this._options.separator) {\n element.value = tags.join(this._options.outSeparator);\n }\n } else if (tagname === 'select') {\n element.innerHTML = '';\n InkArray.each(tags, function (tag) {\n var opt = InkElement.create('option', {selected: 'selected'});\n InkElement.setTextContent(opt, tag);\n element.appendChild(opt);\n });\n } else {\n throw new Error('TagField: Cannot read tags from a ' + tagname + ' tag. Unknown tag');\n }\n },\n\n _addTag: function (tag) {\n if (this._options.maxTags !== -1 &&\n this._tags.length >= this._options.maxTags) {\n return;\n }\n if ((!this._options.allowRepeated &&\n InkArray.inArray(tag, this._tags, tag)) || !tag) {\n return false;\n }\n var elm = InkElement.create('span', {\n className: 'ink-tag',\n setTextContent: tag + ' '\n });\n\n var remove = InkElement.create('span', {\n className: 'remove fa fa-times',\n insertBottom: elm\n });\n InkEvent.observe(remove, 'click', Ink.bindEvent(this._removeTag, this, null));\n\n var spc = document.createTextNode(' ');\n\n this._tags.push(tag);\n this._viewElm.insertBefore(elm, this._input);\n this._viewElm.insertBefore(spc, this._input);\n this._tagsToMarkup(this._tags, this._element);\n },\n\n _readInput: function (text) {\n if (this._options.separator) {\n return InkArray.filter(text.split(this._options.separator), isTruthy);\n } else {\n return [text];\n }\n },\n\n _onKeyUp: function () { // TODO control input box size\n if (!this._options.autoSplit) {\n return;\n }\n var split = this._input.value.split(this._options.separator);\n if (split.length <= 1) {\n return;\n }\n var last = split[split.length - 1];\n split = split.splice(0, split.length - 1);\n split = InkArray.filter(split, isTruthy);\n \n InkArray.each(split, Ink.bind(this._addTag, this));\n this._input.value = last;\n },\n\n _onKeyDown: function (event) {\n if (event.which === enterKey) {\n return this._onEnterKeyDown(event);\n } else if (event.which === backspaceKey) {\n return this._onBackspaceKeyDown();\n } else if (this._removeConfirm) {\n // user pressed another key, cancel removal from a backspace key\n this._unsetRemovingVisual(this._tags.length - 1);\n }\n },\n\n /**\n * When the user presses backspace twice on the empty input, we delete the last tag on the field.\n * @method onBackspaceKeyDown\n * @private\n */\n _onBackspaceKeyDown: function () {\n if (this._input.value) { return; }\n\n if (this._removeConfirm) {\n this._unsetRemovingVisual(this._tags.length - 1);\n this._removeTag(this._tags.length - 1);\n this._removeConfirm = null;\n } else {\n this._setRemovingVisual(this._tags.length - 1);\n }\n },\n\n _onEnterKeyDown: function (event) {\n var tag = this._input.value;\n if (tag) {\n this._addTag(tag);\n this._input.value = '';\n }\n InkEvent.stopDefault(event);\n },\n\n _onBlur: function () {\n this._addTag(this._input.value);\n this._input.value = '';\n },\n\n /* For when the user presses backspace.\n * Set the style of the tag so that it seems like it's going to be removed\n * if they press backspace again. */\n _setRemovingVisual: function (tagIndex) {\n var elm = this._viewElm.children[tagIndex];\n if (!elm) { return; }\n\n Css.addClassName(elm, 'tag-deleting');\n\n this._removeRemovingVisualTimeout = setTimeout(Ink.bindMethod(this, '_unsetRemovingVisual', tagIndex), 4000);\n InkEvent.observe(this._input, 'blur', Ink.bindMethod(this, '_unsetRemovingVisual', tagIndex));\n this._removeConfirm = true;\n },\n _unsetRemovingVisual: function (tagIndex) {\n var elm = this._viewElm.children[tagIndex];\n if (elm) {\n Css.removeClassName(elm, 'tag-deleting');\n clearTimeout(this._removeRemovingVisualTimeout);\n }\n this._removeConfirm = null;\n },\n\n _removeTag: function (event) {\n var index;\n if (typeof event === 'object') { // click event on close button\n var elm = InkEvent.element(event).parentNode;\n index = InkElement.parentIndexOf(this._viewElm, elm);\n } else if (typeof event === 'number') { // manual removal\n index = event;\n }\n this._tags = InkArray.remove(this._tags, index, 1);\n InkElement.remove(this._viewElm.children[index]);\n this._tagsToMarkup(this._tags, this._element);\n },\n\n _refocus: function (event) {\n this._input.focus();\n InkEvent.stop(event);\n return false;\n }\n };\n\n Common.createUIComponent(TagField);\n\n return TagField;\n});\n","/**\n * Toggle the visibility of elements.\n * @module Ink.UI.Toggle_1\n * @version 1\n */\n\n Ink.createModule('Ink.UI.Toggle', '1', ['Ink.UI.Common_1','Ink.Dom.Event_1','Ink.Dom.Css_1','Ink.Dom.Element_1','Ink.Dom.Selector_1','Ink.Util.Array_1'], function(Common, InkEvent, Css, InkElement, Selector, InkArray ) {\n 'use strict';\n\n /**\n *\n * You need two elements to use Toggle: the `trigger` element, and the `target` element (or elements). The default behaviour is to toggle the `target`(s) when you click the `trigger`.\n *\n * The toggle has a state. It is either \"on\" or \"off\". It works by switching between the CSS classes in `classNameOn` and `classNameOff` according to the current state.\n *\n * When you initialize the Toggle, it will check if the targets are visible to figure out what the initial state is. You can force the toggle to consider itself turned \"on\" or \"off\" by setting the `initialState` option to `true` or `false`, respectively.\n *\n * You can get the current state of the Toggle by calling `getState`, or by checking if your `trigger` element has the \"active\" class.\n * The state can be changed through JavaScript. Just call `setState(true)` \n * to turn the Toggle on (or `setState(false)` to turn it off).\n *\n * @class Ink.UI.Toggle\n * @constructor\n * @version 1\n * @param {String|DOMElement} selector Trigger element. By clicking this, the target (or targets) are triggered.\n * @param {Object} [options] Options object, containing:\n *\n * @param {String} options.target CSS Selector that specifies the elements that this component will toggle\n * @param {String} [options.classNameOn] CSS class to toggle when on. Defaults to 'show-all'.\n * @param {String} [options.classNameOff] CSS class to toggle when off. Defaults to 'hide-all'.\n * @param {String} [options.triggerEvent] Event that will trigger the toggling. Defaults to 'click'.\n * @param {Boolean} [options.closeOnClick] Flag to toggle the targe off when clicking outside the toggled content. Defaults to true.\n * @param {String} [options.closeOnInsideClick] Toggle off when a child element matching this selector is clicked. Set to null to deactivate the check. Defaults to 'a[href]'.\n * @param {Boolean} [options.initialState] Flag to define initial state. false: off, true: on, null: markup. Defaults to null.\n * @param {Function} [options.onChangeState] Callback when the toggle state changes. Return `false` to cancel the event.\n *\n * @sample Ink_UI_Toggle_1_constructor.html\n */\n function Toggle(){\n Common.BaseUIComponent.apply(this, arguments);\n }\n\n Toggle._name = 'Toggle_1';\n\n Toggle._optionDefinition = {\n target: ['Elements'],\n triggerEvent: ['String', 'click'],\n closeOnClick: ['Boolean', true],\n isAccordion: ['Boolean', false],\n initialState: ['Boolean', null], // May be true, false, or null to be what it is right now\n classNameOn: ['String', 'show-all'],\n classNameOff: ['String', 'hide-all'],\n closeOnInsideClick: ['String', 'a[href]'], // closes the toggle when a target is clicked and it is a link\n onChangeState: ['Function', null]\n };\n\n Toggle.prototype = {\n\n /**\n * Init function called by the constructor\n * \n * @method _init\n * @private\n */\n _init: function(){\n var i, len;\n\n this._targets = Common.elsOrSelector(this._options.target);\n\n // Boolean option handling\n this._options.closeOnClick = this._options.closeOnClick.toString() === 'true';\n // Actually a throolean\n if (this._options.initialState !== null){\n this._options.initialState = this._options.initialState.toString() === 'true';\n } else {\n this._options.initialState = Css.getStyle(this._targets[0], 'display') !== 'none';\n }\n\n if (this._options.classNameOn !== 'show-all' || this._options.classNameOff !== 'hide-all') {\n for (i = 0, len = this._targets.length; i < len; i++) {\n Css.removeClassName(this._targets[i], 'show-all');\n Css.removeClassName(this._targets[i], 'hide-all');\n }\n }\n\n this._accordion = ( Css.hasClassName(this._element.parentNode,'accordion') || Css.hasClassName(this._targets[0].parentNode,'accordion') );\n\n this._firstTime = true;\n\n this._bindEvents();\n\n if (this._options.initialState !== null) {\n this.setState(this._options.initialState, true);\n } else {\n // Add initial classes matching the current \"display\" of the object.\n var state = Css.getStyle(this._targets[0], 'display') !== 'none';\n this.setState(state, true);\n }\n // Aditionally, remove any inline \"display\" style.\n for (i = 0, len = this._targets.length; i < len; i++) {\n if (this._targets[i].style.display) {\n this._targets[i].style.display = ''; // becomes default\n }\n }\n\n this._element.setAttribute('data-is-toggle-trigger', 'true');\n },\n\n /**\n * @method _bindEvents\n * @private\n */\n _bindEvents: function () {\n if ( this._options.triggerEvent ) {\n InkEvent.observe(\n this._element,\n this._options.triggerEvent,\n Ink.bind(this._onTriggerEvent, this));\n }\n if( this._options.closeOnClick ){\n InkEvent.observe( document, 'click', Ink.bind(this._onOutsideClick, this));\n }\n if( this._options.closeOnInsideClick && this._options.closeOnInsideClick !== 'false') {\n var sel = this._options.closeOnInsideClick;\n if (sel.toString() === 'true') {\n sel = '*';\n }\n InkEvent.observeMulti(this._targets, 'click', Ink.bind(function (e) {\n if ( InkElement.findUpwardsBySelector(InkEvent.element(e), sel) ) {\n this.setState(false, true);\n }\n }, this));\n }\n },\n\n /**\n * Event handler. It's responsible for handling the `triggerEvent` as defined in the options.\n *\n * This will trigger the toggle.\n * \n * @method _onTriggerEvent\n * @param {Event} event\n * @private\n */\n _onTriggerEvent: function( event ){\n // When the togglee is a child of the toggler, we get the togglee's events here. We have to check that this event is for us.\n var target = InkEvent.element(event);\n\n var isAncestorOfClickedElement = InkArray.some(this._targets, function (thisOne) {\n return thisOne === target || InkElement.isAncestorOf(thisOne, target);\n });\n\n if (isAncestorOfClickedElement) {\n return;\n }\n\n if (this._accordion) {\n this._updateAccordion();\n }\n\n var has = this.getState();\n this.setState(!has, true);\n if (!has && this._firstTime) {\n this._firstTime = false;\n }\n\n InkEvent.stopDefault(event);\n },\n\n /**\n * Be compatible with accordions\n *\n * @method _updateAccordion\n **/\n _updateAccordion: function () {\n var elms, accordionElement;\n if( Css.hasClassName(this._targets[0].parentNode,'accordion') ){\n accordionElement = this._targets[0].parentNode;\n } else {\n accordionElement = this._targets[0].parentNode.parentNode;\n }\n elms = Selector.select('.toggle, .ink-toggle',accordionElement);\n for(var i=0; i 0) && (targetElm[0] !== this._targets[0]) ){\n targetElm[0].style.display = 'none';\n }\n }\n },\n\n /**\n * Click handler. Will handle clicks outside the toggle component.\n * \n * @method _onOutsideClick\n * @param {Event} event\n * @private\n */\n _onOutsideClick: function( event ){\n var tgtEl = InkEvent.element(event),\n shades;\n\n if (InkElement.findUpwardsBySelector(tgtEl, '[data-is-toggle-trigger=\"true\"]')) return;\n\n var ancestorOfTargets = InkArray.some(this._targets, function (target) {\n return InkElement.isAncestorOf(target, tgtEl) || target === tgtEl;\n });\n\n if( (this._element === tgtEl) || InkElement.isAncestorOf(this._element, tgtEl) || ancestorOfTargets) {\n return;\n } else if( (shades = Ink.ss('.ink-shade')).length ) {\n var shadesLength = shades.length;\n\n for( var i = 0; i < shadesLength; i++ ){\n if( InkElement.isAncestorOf(shades[i],tgtEl) && InkElement.isAncestorOf(shades[i],this._element) ){\n return;\n }\n }\n }\n\n this.setState(false, true); // dismiss\n },\n\n /**\n * Sets the state of the toggle. (on/off)\n *\n * @method setState\n * @param newState {Boolean} New state (on/off)\n */\n setState: function (on, callHandler) {\n if (on === this.getState()) { return; }\n if (callHandler && typeof this._options.onChangeState === 'function') {\n var ret = this._options.onChangeState(on);\n if (ret === false) { return false; } // Canceled by the event handler\n }\n for (var i = 0, len = this._targets.length; i < len; i++) {\n Css.addRemoveClassName(this._targets[i], this._options.classNameOn, on);\n Css.addRemoveClassName(this._targets[i], this._options.classNameOff, !on);\n }\n Css.addRemoveClassName(this._element, 'active', on);\n },\n\n /**\n * Gets the state of the toggle. (on/off)\n *\n * @method getState\n *\n * @return {Boolean} whether the toggle is toggled on.\n */\n getState: function () {\n return Css.hasClassName(this._element, 'active');\n }\n };\n\n Common.createUIComponent(Toggle);\n\n return Toggle;\n});\n","/**\n * Content Tooltips\n * @module Ink.UI.Tooltip_1\n * @version 1\n */\nInk.createModule('Ink.UI.Tooltip', '1', ['Ink.UI.Common_1', 'Ink.Dom.Event_1', 'Ink.Dom.Element_1', 'Ink.Dom.Selector_1', 'Ink.Util.Array_1', 'Ink.Dom.Css_1', 'Ink.Dom.Browser_1'], function (Common, InkEvent, InkElement, Selector, InkArray, Css) {\n 'use strict';\n\n /**\n * Tooltips are useful as a means to display information about functionality while avoiding clutter.\n *\n * Tooltips show up when you hover elements which \"have\" tooltips.\n *\n * This class will \"give\" a tooltip to many elements, selected by its first argument (`target`). This is contrary to the other UI modules in Ink, which are created once per element.\n *\n * You can define options either through the second argument of the Tooltip constructor, or as data-attributes in each `target` element. Options set through data-attributes all start with \"data-tip\", and override options passed into the Tooltip constructor.\n *\n * @class Ink.UI.Tooltip\n * @constructor\n *\n * @param {DOMElement|String} target Target element or selector of elements, to display the tooltips on.\n * @param {Object} [options] Options object\n * @param {String} [options.text] Text content for the tooltip.\n * @param {String} [options.html] HTML for the tooltip. Same as above, but won't escape HTML.\n * @param {String} [options.where] Positioning for the tooltip. Options are 'up', 'down', 'left', 'right', 'mousemove' (follows the cursor), and 'mousefix' (stays fixed). Defaults to 'up'.\n * \n * @param {String} [options.color] Color of the tooltip. Options are red, orange, blue, green and black. Default is white.\n * @param {Number} [options.fade] Number of seconds to fade in/out. Defaults to 0.3.\n * @param {Boolean} [options.forever] Flag to prevent the tooltip from being erased when the mouse hovers away from the target.\n * @param {Number} [options.timeout] Number of seconds the tooltip will stay open. Useful together with options.forever. Defaults to 0.\n * @param {Number} [options.delay] Time the tooltip waits until it is displayed. Useful to avoid getting the attention of the user unnecessarily\n * @param {DOMElement|Selector} [options.template] Element or selector containing HTML to be cloned into the tooltips. Can be a hidden element, because CSS `display` is set to `block`.\n * @param {String} [options.templatefield] Selector within the template element to choose where the text is inserted into the tooltip. Useful when a wrapper DIV is required.\n * @param {Number} [options.left] Spacing from the target to the tooltip, when `where` is `mousemove` or `mousefix`. Defaults to 10.\n * @param {Number} [options.top] Spacing from the target to the tooltip, when `where` is `mousemove` or `mousefix`. Defaults to 10.\n * @param {Number} [options.spacing] Spacing between the tooltip and the target element, when `where` is not `mousemove` or `mousefix`. Defaults to 8.\n * \n * @sample Ink_UI_Tooltip_1.html\n */\n function Tooltip(element, options) {\n this._init(element, options || {});\n }\n\n function EachTooltip(root, elm) {\n this._init(root, elm);\n }\n\n var transitionDurationName,\n transitionPropertyName,\n transitionTimingFunctionName;\n (function () { // Feature detection\n var test = document.createElement('DIV');\n var names = ['transition', 'oTransition', 'msTransition', 'mozTransition',\n 'webkitTransition'];\n for (var i = 0; i < names.length; i++) {\n if (typeof test.style[names[i] + 'Duration'] !== 'undefined') {\n transitionDurationName = names[i] + 'Duration';\n transitionPropertyName = names[i] + 'Property';\n transitionTimingFunctionName = names[i] + 'TimingFunction';\n break;\n }\n }\n }());\n\n // Body or documentElement\n var bodies = document.getElementsByTagName('body');\n var body = bodies.length ? bodies[0] : document.documentElement;\n\n Tooltip.prototype = {\n _init: function(element, options) {\n var elements;\n\n this.options = Ink.extendObj({\n where: 'up',\n zIndex: 10000,\n left: 10,\n top: 10,\n spacing: 8,\n forever: 0,\n color: '',\n timeout: 0,\n delay: 0,\n template: null,\n templatefield: null,\n fade: 0.3,\n text: ''\n }, options || {});\n\n if (typeof element === 'string') {\n elements = Selector.select(element);\n } else if (typeof element === 'object') {\n elements = [element];\n } else {\n throw 'Element expected';\n }\n\n this.tooltips = [];\n\n for (var i = 0, len = elements.length; i < len; i++) {\n this.tooltips[i] = new EachTooltip(this, elements[i]);\n }\n },\n /**\n * Destroys the tooltips created by this instance\n *\n * @method destroy\n */\n destroy: function () {\n InkArray.each(this.tooltips, function (tooltip) {\n tooltip._destroy();\n });\n this.tooltips = null;\n this.options = null;\n }\n };\n\n EachTooltip.prototype = {\n _oppositeDirections: {\n left: 'right',\n right: 'left',\n up: 'down',\n down: 'up'\n },\n _init: function(root, elm) {\n InkEvent.observe(elm, 'mouseover', Ink.bindEvent(this._onMouseOver, this));\n InkEvent.observe(elm, 'mouseout', Ink.bindEvent(this._onMouseOut, this));\n InkEvent.observe(elm, 'mousemove', Ink.bindEvent(this._onMouseMove, this));\n\n this.root = root;\n this.element = elm;\n this._delayTimeout = null;\n this.tooltip = null;\n\n Common.registerInstance(this, this.element);\n },\n _makeTooltip: function (mousePosition) {\n if (!this._getOpt('text') &&\n !this._getOpt('html') &&\n !InkElement.hasAttribute(this.element, 'title')) {\n return false;\n }\n\n var tooltip = this._createTooltipElement();\n\n if (this.tooltip) {\n this._removeTooltip();\n }\n\n this.tooltip = tooltip;\n\n this._fadeInTooltipElement(tooltip);\n this._placeTooltipElement(tooltip, mousePosition);\n\n InkEvent.observe(tooltip, 'mouseover', Ink.bindEvent(this._onTooltipMouseOver, this));\n\n var timeout = this._getFloatOpt('timeout');\n if (timeout) {\n setTimeout(Ink.bind(function () {\n if (this.tooltip === tooltip) {\n this._removeTooltip();\n }\n }, this), timeout * 1000);\n }\n },\n _createTooltipElement: function () {\n var template = this._getOpt('template'), // User template instead of our HTML\n templatefield = this._getOpt('templatefield'),\n \n tooltip, // The element we float\n field; // Element where we write our message. Child or same as the above\n\n if (template) { // The user told us of a template to use. We copy it.\n var temp = document.createElement('DIV');\n temp.innerHTML = Common.elOrSelector(template, 'options.template').outerHTML;\n tooltip = temp.firstChild;\n \n if (templatefield) {\n field = Selector.select(templatefield, tooltip);\n if (field) {\n field = field[0];\n } else {\n throw 'options.templatefield must be a valid selector within options.template';\n }\n } else {\n field = tooltip; // Assume same element if user did not specify a field\n }\n } else { // We create the default structure\n tooltip = document.createElement('DIV');\n Css.addClassName(tooltip, 'ink-tooltip');\n Css.addClassName(tooltip, this._getOpt('color'));\n\n field = document.createElement('DIV');\n Css.addClassName(field, 'content');\n\n tooltip.appendChild(field);\n }\n \n if (this._getOpt('html')) {\n field.innerHTML = this._getOpt('html');\n } else if (this._getOpt('text')) {\n InkElement.setTextContent(field, this._getOpt('text'));\n } else {\n InkElement.setTextContent(field, this.element.getAttribute('title'));\n }\n tooltip.style.display = 'block';\n tooltip.style.position = 'absolute';\n tooltip.style.zIndex = this._getIntOpt('zIndex');\n\n return tooltip;\n },\n _fadeInTooltipElement: function (tooltip) {\n var fadeTime = this._getFloatOpt('fade');\n if (transitionDurationName && fadeTime) {\n tooltip.style.opacity = '0';\n tooltip.style[transitionDurationName] = fadeTime + 's';\n tooltip.style[transitionPropertyName] = 'opacity';\n tooltip.style[transitionTimingFunctionName] = 'ease-in-out';\n setTimeout(function () {\n tooltip.style.opacity = '1';\n }, 0); // Wait a tick\n }\n },\n _placeTooltipElement: function (tooltip, mousePosition) {\n var where = this._getOpt('where');\n\n if (where === 'mousemove' || where === 'mousefix') {\n var mPos = mousePosition;\n this._setPos(mPos[0], mPos[1]);\n body.appendChild(tooltip);\n } else if (where.match(/(up|down|left|right)/)) {\n body.appendChild(tooltip);\n var targetElementPos = InkElement.offset(this.element);\n var tleft = targetElementPos[0],\n ttop = targetElementPos[1];\n\n var centerh = (InkElement.elementWidth(this.element) / 2) - (InkElement.elementWidth(tooltip) / 2),\n centerv = (InkElement.elementHeight(this.element) / 2) - (InkElement.elementHeight(tooltip) / 2);\n var spacing = this._getIntOpt('spacing');\n\n var tooltipDims = InkElement.elementDimensions(tooltip);\n var elementDims = InkElement.elementDimensions(this.element);\n\n var maxX = InkElement.scrollWidth() + InkElement.viewportWidth();\n var maxY = InkElement.scrollHeight() + InkElement.viewportHeight();\n \n where = this._getWhereValueInsideViewport(where, {\n left: tleft - tooltipDims[0],\n right: tleft + tooltipDims[0],\n top: ttop + tooltipDims[1],\n bottom: ttop + tooltipDims[1]\n }, {\n right: maxX,\n bottom: maxY\n });\n \n if (where === 'up') {\n ttop -= tooltipDims[1];\n ttop -= spacing;\n tleft += centerh;\n } else if (where === 'down') {\n ttop += elementDims[1];\n ttop += spacing;\n tleft += centerh;\n } else if (where === 'left') {\n tleft -= tooltipDims[0];\n tleft -= spacing;\n ttop += centerv;\n } else if (where === 'right') {\n tleft += elementDims[0];\n tleft += spacing;\n ttop += centerv;\n }\n \n var arrow = null;\n if (where.match(/(up|down|left|right)/)) {\n arrow = document.createElement('SPAN');\n Css.addClassName(arrow, 'arrow');\n Css.addClassName(arrow, this._oppositeDirections[where]);\n tooltip.appendChild(arrow);\n }\n\n var tooltipLeft = tleft;\n var tooltipTop = ttop;\n\n var toBottom = (tooltipTop + tooltipDims[1]) - maxY;\n var toRight = (tooltipLeft + tooltipDims[0]) - maxX;\n var toLeft = 0 - tooltipLeft;\n var toTop = 0 - tooltipTop;\n\n if (toBottom > 0) {\n if (arrow) { arrow.style.top = (tooltipDims[1] / 2) + toBottom + 'px'; }\n tooltipTop -= toBottom;\n } else if (toTop > 0) {\n if (arrow) { arrow.style.top = (tooltipDims[1] / 2) - toTop + 'px'; }\n tooltipTop += toTop;\n } else if (toRight > 0) {\n if (arrow) { arrow.style.left = (tooltipDims[0] / 2) + toRight + 'px'; }\n tooltipLeft -= toRight;\n } else if (toLeft > 0) {\n if (arrow) { arrow.style.left = (tooltipDims[0] / 2) - toLeft + 'px'; }\n tooltipLeft += toLeft;\n }\n\n tooltip.style.left = tooltipLeft + 'px';\n tooltip.style.top = tooltipTop + 'px';\n }\n },\n\n /**\n * Get a value for \"where\" (left/right/up/down) which doesn't put the\n * tooltip off the screen\n *\n * @method _getWhereValueInsideViewport\n * @param where {String} \"where\" value which was given by the user and we might change\n * @param bbox {BoundingBox} A bounding box like what you get from getBoundingClientRect ({top, bottom, left, right}) with pixel positions from the top left corner of the viewport.\n * @param viewport {BoundingBox} Bounding box for the viewport. \"top\" and \"left\" are omitted because these coordinates are relative to the top-left corner of the viewport so they are zero.\n *\n * @TODO: we can't use getBoundingClientRect in this case because it returns {0,0,0,0} on our uncreated tooltip.\n */\n _getWhereValueInsideViewport: function (where, bbox, viewport) {\n if (where === 'left' && bbox.left < 0) {\n return 'right';\n } else if (where === 'right' && bbox.right > viewport.right) {\n return 'left';\n } else if (where === 'up' && bbox.top < 0) {\n return 'down';\n } else if (where === 'down' && bbox.bottom > viewport.bottom) {\n return 'up';\n }\n\n return where;\n },\n _removeTooltip: function() {\n var tooltip = this.tooltip;\n if (!tooltip) {return;}\n\n var remove = Ink.bind(InkElement.remove, {}, tooltip);\n\n if (this._getOpt('where') !== 'mousemove' && transitionDurationName) {\n tooltip.style.opacity = 0;\n // remove() will operate on correct tooltip, although this.tooltip === null then\n setTimeout(remove, this._getFloatOpt('fade') * 1000);\n } else {\n remove();\n }\n this.tooltip = null;\n },\n _getOpt: function (option) {\n var dataAttrVal = InkElement.data(this.element)[InkElement._camelCase('tip-' + option)];\n if (dataAttrVal /* either null or \"\" may signify the absense of this attribute*/) {\n return dataAttrVal;\n }\n var instanceOption = this.root.options[option];\n if (typeof instanceOption !== 'undefined') {\n return instanceOption;\n }\n },\n _getIntOpt: function (option) {\n return parseInt(this._getOpt(option), 10);\n },\n _getFloatOpt: function (option) {\n return parseFloat(this._getOpt(option), 10);\n },\n _destroy: function () {\n if (this.tooltip) {\n InkElement.remove(this.tooltip);\n }\n this.root = null; // Cyclic reference = memory leaks\n this.element = null;\n this.tooltip = null;\n },\n _onMouseOver: function(e) {\n // on IE < 10 you can't access the mouse event not even a tick after it fired\n var mousePosition = this._getMousePosition(e);\n var delay = this._getFloatOpt('delay');\n if (delay) {\n this._delayTimeout = setTimeout(Ink.bind(function () {\n if (!this.tooltip) {\n this._makeTooltip(mousePosition);\n }\n this._delayTimeout = null;\n }, this), delay * 1000);\n } else {\n this._makeTooltip(mousePosition);\n }\n },\n _onMouseMove: function(e) {\n if (this._getOpt('where') === 'mousemove' && this.tooltip) {\n var mPos = this._getMousePosition(e);\n this._setPos(mPos[0], mPos[1]);\n }\n },\n _onMouseOut: function () {\n if (!this._getIntOpt('forever')) {\n this._removeTooltip();\n }\n if (this._delayTimeout) {\n clearTimeout(this._delayTimeout);\n this._delayTimeout = null;\n }\n },\n _onTooltipMouseOver: function () {\n if (this.tooltip) { // If tooltip is already being removed, this has no effect\n this._removeTooltip();\n }\n },\n _setPos: function(left, top) {\n left += this._getIntOpt('left');\n top += this._getIntOpt('top');\n var pageDims = this._getPageXY();\n if (this.tooltip) {\n var elmDims = [InkElement.elementWidth(this.tooltip), InkElement.elementHeight(this.tooltip)];\n var scrollDim = this._getScroll();\n\n if((elmDims[0] + left - scrollDim[0]) >= (pageDims[0] - 20)) {\n left = (left - elmDims[0] - this._getIntOpt('left') - 10);\n }\n if((elmDims[1] + top - scrollDim[1]) >= (pageDims[1] - 20)) {\n top = (top - elmDims[1] - this._getIntOpt('top') - 10);\n }\n\n this.tooltip.style.left = left + 'px';\n this.tooltip.style.top = top + 'px';\n }\n },\n _getPageXY: function() {\n var cWidth = 0;\n var cHeight = 0;\n if( typeof( window.innerWidth ) === 'number' ) {\n cWidth = window.innerWidth;\n cHeight = window.innerHeight;\n } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {\n cWidth = document.documentElement.clientWidth;\n cHeight = document.documentElement.clientHeight;\n } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {\n cWidth = document.body.clientWidth;\n cHeight = document.body.clientHeight;\n }\n return [parseInt(cWidth, 10), parseInt(cHeight, 10)];\n },\n _getScroll: function() {\n var dd = document.documentElement, db = document.body;\n if (dd && (dd.scrollLeft || dd.scrollTop)) {\n return [dd.scrollLeft, dd.scrollTop];\n } else if (db) {\n return [db.scrollLeft, db.scrollTop];\n } else {\n return [0, 0];\n }\n },\n _getMousePosition: function(e) {\n return [parseInt(InkEvent.pointerX(e), 10), parseInt(InkEvent.pointerY(e), 10)];\n }\n };\n\n return Tooltip;\n});\n","/**\n * Elements in a tree structure\n * @module Ink.UI.TreeView_1\n * @version 1\n */\nInk.createModule('Ink.UI.TreeView', '1', ['Ink.UI.Common_1','Ink.Dom.Event_1','Ink.Dom.Css_1','Ink.Dom.Element_1','Ink.Dom.Selector_1','Ink.Util.Array_1'], function(Common, Event, Css, Element, Selector, InkArray ) {\n 'use strict';\n\n\n /**\n * Shows elements in a tree structure which can be expanded and contracted.\n * A TreeView is built with \"node\"s and \"children\". \"node\"s are `li` tags, and \"children\" are `ul` tags.\n * You can build your TreeView out of a regular UL and LI element structure which you already use to display lists with several levels.\n * If you want a node to be open when the TreeView is built, just add the data-open=\"true\" attribute to it.\n * \n * @class Ink.UI.TreeView\n * @constructor\n * @version 1\n * @param {String|DOMElement} selector Element or selector.\n * @param {String} [options] Options object, containing:\n * @param {String} [options.node] Selector for the nodes. Defaults to 'li'.\n * @param {String} [options.children] Selector for the children. Defaults to 'ul'.\n * @param {String} [options.parentClass] CSS classes to be added to parent nodes. Defaults to 'parent'.\n * @param {String} [options.openClass] CSS classes to be added to the icon when a parent is open. Defaults to 'fa fa-minus-circle'.\n * @param {String} [options.closedClass] CSS classes to be added to the icon when a parent is closed. Defaults to 'fa fa-plus-circle'.\n * @param {String} [options.hideClass] CSS Class to toggle visibility of the children. Defaults to 'hide-all'.\n * @param {String} [options.iconTag] The name of icon tag. The component tries to find a tag with that name as a direct child of the node. If it doesn't find it, it creates it. Defaults to 'i'.\n * @param {Boolean} [options.stopDefault] Flag to stops the default behavior of the click handler. Defaults to true.\n * @example\n * \n * \n * \n * @sample Ink_UI_TreeView_1.html\n */\n function TreeView() {\n Common.BaseUIComponent.apply(this, arguments);\n }\n\n TreeView._name = 'TreeView_1';\n\n TreeView._optionDefinition = {\n 'node': ['String', 'li'],\n // [3.0.1] Deprecate this terrible, terrible name\n 'child': ['String',null],\n 'children': ['String','ul'],\n 'parentClass': ['String','parent'],\n 'openNodeClass': ['String', 'open'],\n 'openClass': ['String','fa fa-minus-circle'],\n 'closedClass': ['String','fa fa-plus-circle'],\n 'hideClass': ['String','hide-all'],\n 'iconTag': ['String', 'i'],\n 'stopDefault' : ['Boolean', true]\n };\n\n TreeView.prototype = {\n /**\n * Init function called by the constructor. Sets the necessary event handlers.\n * \n * @method _init\n * @private\n */\n _init: function(){\n if (this._options.child) {\n Ink.warn('Ink.UI.TreeView: options.child is being renamed to options.children.');\n this._options.children = this._options.child;\n }\n\n this._handlers = {\n click: Ink.bindEvent(this._onClick,this)\n };\n\n Event.on(this._element, 'click', this._options.node, this._handlers.click);\n\n InkArray.each(Ink.ss(this._options.node, this._element), Ink.bind(function(item){\n if( this.isParent(item) ) {\n Css.addClassName(item, this._options.parentClass);\n\n var isOpen = this.isOpen(item);\n if( !this._getIcon(item) ){\n Element.create(this._options.iconTag, { insertTop: item });\n }\n\n this._setNodeOpen(item, isOpen);\n }\n },this));\n },\n\n _getIcon: function (node) {\n return Ink.s('> ' + this._options.iconTag, node);\n },\n\n /**\n * Checks if a node is open.\n *\n * @method isOpen\n * @param {DOMElement} node The tree node to check\n **/\n isOpen: function (node) {\n if (!this._getChild(node)) {\n throw new Error('not a node!');\n }\n\n return Element.data(node).open === 'true' ||\n Css.hasClassName(node, this._options.openNodeClass);\n },\n\n /**\n * Checks if a node is a parent.\n *\n * @method isParent\n * @param {DOMElement} node Node to check\n **/\n isParent: function (node) {\n return Css.hasClassName(node, this._options.parentClass) ||\n this._getChild(node) != null;\n },\n\n _setNodeOpen: function (node, beOpen) {\n var child = this._getChild(node);\n if (child) {\n Css.setClassName(child, this._options.hideClass, !beOpen);\n var icon = this._getIcon(node);\n\n node.setAttribute('data-open', beOpen);\n\n /*\n * Don't refactor this to\n *\n * setClassName(el, className, status); setClassName(el, className, !status);\n *\n * because it won't work with multiple classes.\n *\n * Doing:\n * setClassName(el, 'fa fa-whatever', true);setClassName(el, 'fa fa-whatever-else', false);\n *\n * will remove 'fa' although it is a class we want.\n */\n\n var toAdd = beOpen ? this._options.openClass : this._options.closedClass;\n var toRemove = beOpen ? this._options.closedClass : this._options.openClass;\n Css.removeClassName(icon, toRemove);\n Css.addClassName(icon, toAdd);\n\n Css.setClassName(node, this._options.openNodeClass, beOpen);\n } else {\n Ink.error('Ink.UI.TreeView: node', node, 'is not a node!');\n }\n },\n\n /**\n * Opens one of the tree nodes\n *\n * Make sure you pass the node's DOMElement\n * @method open\n * @param {DOMElement} node The node you wish to open.\n **/\n open: function (node) {\n this._setNodeOpen(node, true);\n },\n\n /**\n * Closes one of the tree nodes\n *\n * Make sure you pass the node's DOMElement\n * @method close\n * @param {DOMElement} node The node you wish to close.\n **/\n close: function (node) {\n this._setNodeOpen(node, false);\n },\n\n /**\n * Toggles a node state\n *\n * @method toggle\n * @param {DOMElement} node The node to toggle.\n **/\n toggle: function (node) {\n if (this.isOpen(node)) {\n this.close(node);\n } else {\n this.open(node);\n }\n },\n\n _getChild: function (node) {\n return Selector.select(this._options.children, node)[0] || null;\n },\n\n /**\n * Handles the click event (as specified in the _init function).\n * \n * @method _onClick\n * @param {Event} event\n * @private\n */\n _onClick: function(ev){\n /**\n * Summary:\n * If the clicked element is a \"node\" as defined in the options, will check if it has any \"child\".\n * If so, will toggle its state and stop the event's default behavior if the stopDefault option is true.\n **/\n\n if (!this.isParent(ev.currentTarget) ||\n Selector.matchesSelector(ev.target, this._options.node) ||\n Selector.matchesSelector(ev.target, this._options.children)) {\n return;\n }\n\n if (this._options.stopDefault){\n ev.preventDefault();\n }\n\n this.toggle(ev.currentTarget);\n }\n };\n\n Common.createUIComponent(TreeView);\n\n return TreeView;\n});\n","Ink.createModule('Ink.UI.Upload', '1', [\n 'Ink.Dom.Event_1',\n 'Ink.Dom.Element_1',\n 'Ink.Dom.Browser_1',\n 'Ink.UI.Common_1'\n], function(Event, Element, Browser, Common) {\n 'use strict';\n\n var DirectoryReader = function(options) {\n this.init(options);\n };\n\n DirectoryReader.prototype = {\n init: function(options) {\n this._options = Ink.extendObj({\n entry: undefined,\n maxDepth: 10\n }, options || {});\n\n try {\n this._read();\n } catch(e) {\n Ink.error(e);\n }\n },\n\n\n _read: function() {\n if(!this._options.entry) {\n Ink.error('You must specify the entry!');\n return;\n }\n\n try {\n this._readDirectories();\n } catch(e) {\n Ink.error(e);\n }\n },\n\n\n _readDirectories: function() {\n var entries = [],\n running = false,\n maxDepth = 0;\n\n /* TODO return as tree because much better well */\n var _readEntries = Ink.bind(function(currentEntry) {\n var dir = currentEntry.createReader();\n running = true;\n\n dir.readEntries(Ink.bind(function(res) {\n if(res.length > 0) {\n for(var i = 0, len = res.length; i=0; i--) {\n if(typeof(arr[i]) === 'undefined' || arr[i] === null || arr[i] === '') {\n arr.splice(i, 1);\n }\n }\n return arr;\n }\n };\n\n var Queue = {\n lists: [],\n items: [],\n\n\n /**\n * Create new queue list\n * @function create\n * @public\n * @param {String} list name\n * @param {Function} function to iterate on items\n * @return {Object} list id\n */\n create: function(name) {\n var id;\n name = String(name);\n this.lists.push({name: name});\n id = this.lists.length - 1;\n return id;\n },\n\n\n getItems: function(parentId) {\n if(!parentId) {\n return this.items;\n }\n var items = [];\n for(var i = 0, len = this.items.length; i=0; i--) {\n if(this.items[i] && id === this.items[i].parentId) {\n this.remove(this.items[i].parentId, this.items[i].pid);\n }\n }\n if(!keepList) {\n this.lists.splice(id, 1);\n }\n return true;\n } catch(e) {\n Ink.error('Purge: invalid id');\n return false;\n }\n },\n\n\n /**\n * add an item to a list\n * @function add\n * @public\n * @param {String} name\n * @param {Object} item\n * @return {Number} pid\n */\n add: function(parentId, item, priority) {\n if(!this.lists[parentId]) {\n return false;\n }\n if(typeof(item) !== 'object') {\n item = String(item);\n }\n\n var pid = parseInt(Math.round(Math.random() * 100000) + \"\" + Math.round(Math.random() * 100000), 10);\n priority = priority || 0;\n\n this.items.push({parentId: parentId, item: item, priority: priority || 0, pid: pid});\n return pid;\n },\n\n\n /**\n * View list\n * @function view\n * @public\n * @param {Number} list id\n * @param {Number} process id\n * @return {Object} item\n */\n view: function(parentId, pid) {\n var id = this._searchByPid(parentId, pid);\n if(id === false) {\n return false;\n }\n return this.items[id];\n },\n\n\n /**\n * Remove an item\n * @function remove\n * @public\n * @param {Object} item\n * @return {Object|Boolean} removed item or false if not found\n */\n remove: function(parentId, pid) {\n try {\n var id = this._searchByPid(parentId, pid);\n if(id === false) {\n return false;\n }\n this.items.splice(id, 1);\n return true;\n } catch(e) {\n Ink.error('Remove: invalid id');\n return false;\n }\n },\n\n _searchByPid: function(parentId, pid) {\n if(!parentId && typeof(parentId) === 'boolean' || !pid) {\n return false;\n }\n\n parentId = parseInt(parentId, 10);\n pid = parseInt(pid, 10);\n\n if(isNaN(parentId) || isNaN(pid)) {\n return false;\n }\n\n for(var i = 0, len = this.items.length; i this._options.minSizeToUseChunks;\n },\n\n\n _dropEventHandler: function(ev) {\n Event.stop(ev);\n\n this.publish('DropComplete', ev.dataTransfer);\n\n var data = ev.dataTransfer;\n\n if(!data || !data.files || !data.files.length) {\n return false;\n }\n\n this._files = data.files;\n this._files = Array.prototype.slice.call(this._files || [], 0);\n\n // check if webkitGetAsEntry exists on first item\n if(data.items && data.items[0] && data.items[0].webkitGetAsEntry) {\n if(!this._options.foldersEnabled) {\n return setTimeout(Ink.bind(this._addFilesToQueue, this, this._files), 0);\n }\n var entry, folders = [];\n for(var i = ev.dataTransfer.items.length-1; i>=0; i--) {\n entry = ev.dataTransfer.items[i].webkitGetAsEntry();\n if(entry && entry.isDirectory) {\n folders.push(entry);\n this._files[i].isDirectory = true;\n this._files.splice(i, 1);\n }\n }\n // starting callback hell\n this._addFolderToQueue(folders, Ink.bind(function() {\n setTimeout(Ink.bind(this._addFilesToQueue, this, this._files), 0);\n }, this));\n } else {\n setTimeout(Ink.bind(this._addFilesToQueue, this, this._files), 0);\n }\n\n return true;\n },\n\n\n _addFolderToQueue: function(folders, cb) {\n var files = [], invalidFolders = {};\n\n if(!folders || !folders.length) {\n cb();\n return files;\n }\n\n var getFiles = function(entries) {\n var files = [];\n for(var i = 0, len = entries.length; i this._options.maxFilesize) {\n this.publish('MaxSizeFailure', file, this._options.maxFilesize);\n continue;\n }\n\n fileID = parseInt(Math.round(Math.random() * 100000) + \"\" + Math.round(Math.random() * 100000), 10);\n o = { id: i, data: file, fileID: fileID, directory: file.isDirectory };\n Queue.add(this._queueId, o);\n\n this.publish('FileAddedToQueue', o);\n }\n this._processQueue(true);\n this._files = [];\n },\n\n\n _processQueue: function(internalUpload) {\n if(this._queueRunning) {\n return false;\n }\n\n this.running = 0;\n var max = 1, i = 0, items,\n queueLen = Queue.items.length;\n this._queueRunning = true;\n\n this.interval = setInterval(Ink.bind(function() {\n if(Queue.items.length === i && this.running === 0) {\n Queue.purge(this._queueId, true);\n this._queueRunning = false;\n clearInterval(this.interval);\n this.publish('QueueEnd', this._queueId, queueLen);\n }\n\n items = Queue.getItems(this._queueId);\n\n if(this.running < max && items[i]) {\n if(!items[i].canceled) {\n _doRequest.call(this, items[i].pid, items[i].item.data, items[i].item.fileID, items[i].item.directory, internalUpload);\n this.running++;\n i++;\n } else {\n var j = i;\n while(items[j] && items[j].canceled) {\n i++;\n j++;\n }\n }\n return true;\n }\n return false;\n }, this), 100);\n\n\n var _doRequest = function(pid, data, fileID, directory, internalUpload) {\n var o = {\n file: data,\n fileID: fileID,\n cb: Ink.bind(function() {\n this.running--;\n }, this)\n };\n if(internalUpload) {\n if(directory) {\n // do magic\n o.cb();\n } else {\n this._upload(o);\n }\n }\n };\n\n return true;\n },\n\n\n _upload: function(o) {\n var file = o.file,\n xhr = new XMLHttpRequest(),\n fileID = o.fileID;\n\n this.publish('BeforeUpload', file, this._options.extraData, fileID, xhr, this._supportChunks(file.size));\n\n var forceAbort = function(showError) {\n if(o.cb && typeof(o.cb === 'function')) {\n o.cb();\n }\n\n this.publish('OnProgress', {\n length: file.size,\n lengthComputable: true,\n loaded: file.size,\n total: file.size\n }, file, fileID);\n this.publish('EndUpload', file, fileID, (showError ? { error: true } : true));\n this.publish('InvalidFile', file, 'name');\n xhr.abort();\n };\n\n if(this._options.INVALID_FILE_NAME && this._options.INVALID_FILE_NAME instanceof RegExp) {\n if(this._options.INVALID_FILE_NAME.test(o.file.name)) {\n forceAbort.call(this);\n return;\n }\n }\n\n // If file was renamed, abort it\n // FU OPERA: Opera always return lastModified date as null\n if(!file.lastModifiedDate && !Ink.Dom.Browser.OPERA) {\n forceAbort.call(this, true);\n return;\n }\n\n xhr.upload.onprogress = Ink.bind(this.publish, this, 'OnProgress', file, fileID);\n\n var endpoint, method;\n if(this._supportChunks(file.size)) {\n if(file.size <= file.chunk_offset) {\n endpoint = this._options.endpointChunkCommit;\n method = 'POST';\n } else {\n endpoint = this._options.endpointChunk;\n if(file.chunk_upload_id) {\n endpoint += '?upload_id=' + file.chunk_upload_id;\n }\n if(file.chunk_offset) {\n endpoint += '&offset=' + file.chunk_offset;\n }\n method = 'PUT';\n }\n } else {\n endpoint = this._options.endpoint;\n method = 'POST';\n }\n\n xhr.open(method, endpoint, true);\n xhr.withCredentials = true;\n xhr.setRequestHeader(\"x-requested-with\", \"XMLHttpRequest\");\n if(this._supportChunks(file.size)) {\n xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n }\n\n var fd = new FormData(),\n blob;\n\n if(\"Blob\" in window && typeof Blob === 'function') {\n blob = new Blob([file], { type: file.type });\n if(this._supportChunks(file.size)) {\n file.chunk_offset = file.chunk_offset || 0;\n blob = blob.slice(file.chunk_offset, file.chunk_offset + this._options.chunkSize);\n } else {\n fd.append(this._options.fileFormName, blob, file.name);\n }\n } else {\n fd.append(this._options.fileFormName, file);\n }\n\n if(!this._supportChunks(file.size)) {\n for(var k in this._options.extraData) {\n if(this._options.extraData.hasOwnProperty(k)) {\n fd.append(k, this._options.extraData[k]);\n }\n }\n } else {\n fd.append('upload_id', file.chunk_upload_id);\n fd.append('path', file.upload_path);\n }\n\n if(!file.hasParent) {\n if(!this._supportChunks(file.size)) {\n xhr.send(fd);\n } else {\n if(file.size <= file.chunk_offset) {\n xhr.send('upload_id=' + file.chunk_upload_id + '&path=' + file.upload_path + '/' + file.name);\n } else {\n xhr.send(blob);\n }\n }\n } else {\n this.publish('cbCreateFolder', file.parentID, file.fullPath, this._options.extraData, this._folders, file.rootPath, Ink.bind(function() {\n if(!this._supportChunks(file.size)) {\n xhr.send(fd);\n } else {\n if(file.size <= file.chunk_offset) {\n xhr.send('upload_id=' + file.chunk_upload_id + '&path=' + file.upload_path + '/' + file.name);\n } else {\n xhr.send(blob);\n }\n }\n }, this));\n }\n\n\n xhr.onload = Ink.bindEvent(function() {\n /* jshint boss:true */\n if(this._supportChunks(file.size) && file.size > file.chunk_offset) {\n if(xhr.response) {\n var response = JSON.parse(xhr.response);\n\n // check expected offset\n var invalidOffset = file.chunk_offset && response.offset !== (file.chunk_offset + this._options.chunkSize) && file.size !== response.offset;\n if(invalidOffset) {\n if(o.cb) {\n o.cb();\n }\n this.publish('ErrorUpload', file, fileID);\n } else {\n file.chunk_upload_id = response.upload_id;\n file.chunk_offset = response.offset;\n file.chunk_expires = response.expires;\n this._upload(o);\n }\n } else {\n if(o.cb) {\n o.cb();\n }\n this.publish('ErrorUpload', file, fileID);\n }\n return (xhr = null);\n }\n\n if(o.cb) {\n o.cb();\n }\n\n if(xhr.responseText && xhr['status'] < 400) {\n this.publish('EndUpload', file, fileID, xhr.responseText);\n } else {\n this.publish('ErrorUpload', file, fileID);\n }\n return (xhr = null);\n }, this);\n\n\n xhr.onerror = Ink.bindEvent(function() {\n if(o.cb) {\n o.cb();\n }\n this.publish('ErrorUpload', file, fileID);\n }, this);\n\n xhr.onabort = Ink.bindEvent(function() {\n if(o.cb) {\n o.cb();\n }\n this.publish('AbortUpload', file, fileID, {\n abortAll: Ink.bind(this.abortAll, this),\n abortOne: Ink.bind(this.abortOne, this)\n });\n }, this);\n },\n\n\n abortAll: function() {\n if(!this._queueRunning) {\n return false;\n }\n clearInterval(this.interval);\n this._queueRunning = false;\n Queue.purge(this._queueId, true);\n return true;\n },\n\n abortOne: function(id, cb) {\n var items = Queue.getItems(0),\n o;\n for(var i = 0, len = items.length; i