{"version":3,"sources":["jquery.js","novicell.debouncer.js","owl.carousel.js","svg4everybody.js","jquery.hoverIntent.js","jquery.flexslider.js","jquery.dataTables.js","jquery.dataTables.yadcf.js","jquery.fitvids.js","hideshare.js","jquery.cookie.js","modal.js","jquery.swipebox.js","moment.js","fullcalendar.js","jquery.validate.js","jquery.validate.unobtrusive.js","moment-with-locales.js","da.js","bootstrap-datetimepicker.min.js","pikaday.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","isArraylike","obj","length","type","jQuery","isWindow","nodeType","winnow","elements","qualifier","not","isFunction","grep","elem","i","call","risSimple","test","filter","inArray","sibling","cur","dir","createOptions","options","object","optionsCache","each","match","rnotwhite","_","flag","detach","addEventListener","removeEventListener","completed","detachEvent","event","readyState","ready","dataAttr","key","data","undefined","name","replace","rmultiDash","toLowerCase","getAttribute","rbrace","parseJSON","e","isEmptyDataObject","isEmptyObject","internalData","pvt","acceptData","ret","thisCache","internalKey","expando","isNode","cache","id","deletedIds","pop","guid","toJSON","noop","extend","camelCase","internalRemoveData","isArray","concat","map","split","cleanData","support","deleteExpando","returnTrue","returnFalse","safeActiveElement","activeElement","err","createSafeFragment","list","nodeNames","safeFrag","createDocumentFragment","createElement","getAll","context","tag","elems","found","getElementsByTagName","strundefined","querySelectorAll","childNodes","nodeName","push","merge","fixDefaultChecked","rcheckableType","defaultChecked","checked","manipulationTarget","content","firstChild","appendChild","ownerDocument","disableScript","find","attr","restoreScript","rscriptTypeMasked","exec","removeAttribute","setGlobalEval","refElements","_data","cloneCopyEvent","src","dest","hasData","l","oldData","curData","events","handle","add","fixCloneNodeIssues","noCloneEvent","removeEvent","text","parentNode","outerHTML","html5Clone","innerHTML","trim","value","defaultSelected","selected","defaultValue","actualDisplay","doc","style","appendTo","body","display","getDefaultComputedStyle","css","defaultDisplay","elemdisplay","iframe","documentElement","contentWindow","contentDocument","write","close","addGetHookIf","conditionFn","hookFn","get","condition","apply","arguments","vendorPropName","capName","charAt","toUpperCase","slice","origName","cssPrefixes","showHide","show","hidden","values","index","isHidden","setPositiveNumber","subtract","matches","rnumsplit","Math","max","augmentWidthOrHeight","extra","isBorderBox","styles","val","cssExpand","getWidthOrHeight","valueIsBorderBox","offsetWidth","offsetHeight","getStyles","boxSizing","curCSS","rnumnonpx","boxSizingReliable","parseFloat","Tween","prop","end","easing","prototype","init","createFxNow","setTimeout","fxNow","now","genFx","includeWidth","which","attrs","height","opacity","width","createTween","animation","tween","collection","tweeners","defaultPrefilter","props","opts","toggle","hooks","oldfire","checkDisplay","anim","orig","dataShow","queue","_queueHooks","unqueued","empty","fire","always","overflow","overflowX","overflowY","inlineBlockNeedsLayout","zoom","shrinkWrapBlocks","rfxtypes","done","hide","_removeData","start","propFilter","specialEasing","cssHooks","expand","Animation","properties","result","stopped","animationPrefilters","deferred","Deferred","tick","currentTime","remaining","startTime","duration","temp","percent","tweens","run","notifyWith","resolveWith","promise","originalProperties","originalOptions","stop","gotoEnd","rejectWith","fx","timer","progress","complete","fail","addToPrefiltersOrTransports","structure","dataTypeExpression","func","dataType","dataTypes","unshift","inspectPrefiltersOrTransports","jqXHR","inspect","inspected","prefilterOrFactory","dataTypeOrTransport","seekingTransport","transports","ajaxExtend","target","deep","flatOptions","ajaxSettings","ajaxHandleResponses","s","responses","firstDataType","ct","finalDataType","contents","shift","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","tmp","prev","responseFields","dataFilter","state","error","buildParams","prefix","traditional","v","rbracket","createStandardXHR","XMLHttpRequest","createActiveXHR","ActiveXObject","getWindow","defaultView","parentWindow","indexOf","class2type","toString","hasOwn","hasOwnProperty","version","selector","fn","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","jquery","constructor","toArray","num","pushStack","prevObject","callback","args","first","eq","last","len","j","sort","splice","copyIsArray","copy","clone","isPlainObject","random","isReady","msg","Array","isNumeric","ownLast","globalEval","execScript","string","makeArray","arr","results","Object","second","invert","callbackInverse","callbackExpect","arg","proxy","Date","Sizzle","seed","m","groups","old","nid","newContext","newSelector","preferredDoc","setDocument","documentIsHTML","rquickExpr","getElementById","contains","getElementsByClassName","qsa","rbuggyQSA","tokenize","rescape","setAttribute","toSelector","rsibling","testContext","join","qsaError","select","createCache","keys","Expr","cacheLength","markFunction","assert","div","removeChild","addHandle","handler","attrHandle","siblingCheck","a","b","diff","sourceIndex","MAX_NEGATIVE","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","setFilters","tokens","addCombinator","matcher","combinator","base","checkNonElements","doneName","xml","oldCache","outerCache","newCache","dirruns","elementMatcher","matchers","multipleContexts","contexts","condense","unmatched","newUnmatched","mapped","setMatcher","preFilter","postFilter","postFinder","postSelector","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","relative","implicitRelative","matchContext","matchAnyContext","outermostContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","uniqueSort","getText","isXML","compile","sortInput","hasDuplicate","docElem","rbuggyMatches","classCache","tokenCache","compilerCache","sortOrder","push_native","booleans","whitespace","characterEncoding","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","runescape","funescape","escaped","escapedWhitespace","high","String","fromCharCode","unloadHandler","els","node","hasCompare","parent","top","attachEvent","className","createComment","getById","getElementsByName","attrId","getAttributeNode","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","expr","specified","duplicates","detectDuplicates","sortStable","textContent","nodeValue","selectors","createPseudo",">"," ","+","~","excess","unquoted","nodeNameSelector","pattern","operator","check","what","simple","forward","ofType","nodeIndex","useCache","lastChild","pseudo","idx","matched","has","innerText","lang","elemLang","hash","location","root","focus","hasFocus","href","tabIndex","enabled","disabled","selectedIndex","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","soFar","preFilters","cached","token","compiled","div1","unique","isXMLDoc","rneedsContext","rsingleTag","self","is","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","children","next","until","n","r","targets","closest","pos","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","reverse","Callbacks","firing","memory","fired","firingLength","firingIndex","firingStart","stack","once","stopOnFalse","disable","remove","lock","locked","fireWith","tuples","then","fns","newDefer","tuple","returned","resolve","reject","notify","pipe","stateString","when","subordinate","progressValues","progressContexts","resolveContexts","resolveValues","updateFunc","readyList","readyWait","holdReady","hold","wait","triggerHandler","off","frameElement","doScroll","doScrollCheck","container","cssText","noData","applet ","embed ","object ","removeData","dequeue","startLength","setter","clearQueue","count","defer","pnum","source","el","access","chainable","emptyGet","raw","bulk","fragment","leadingWhitespace","tbody","htmlSerialize","cloneNode","appendChecked","noCloneChecked","checkClone","click","eventName","change","focusin","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","types","t","handleObjIn","special","eventHandle","handleObj","handlers","namespaces","origType","elemData","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","trigger","onlyHandlers","ontype","bubbleType","eventPath","Event","isTrigger","namespace_re","noBubble","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","srcElement","metaKey","original","charCode","keyCode","eventDoc","fromElement","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","relatedTarget","toElement","load","blur","beforeunload","returnValue","simulate","bubble","isSimulated","defaultPrevented","timeStamp","cancelBubble","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","related","submitBubbles","form","_submit_bubble","changeBubbles","propertyName","_just_changed","focusinBubbles","attaches","on","one","origFn","rinlinejQuery","rnoshimcache","rleadingWhitespace","rxhtmlTag","rtagName","rtbody","rhtml","rnoInnerhtml","rchecked","rscriptType","rcleanScript","wrapMap","option","legend","area","param","thead","tr","col","td","safeFragment","fragmentDiv","optgroup","tfoot","colgroup","caption","th","dataAndEvents","deepDataAndEvents","destElements","srcElements","inPage","buildFragment","scripts","selection","wrap","safe","nodes","createTextNode","append","domManip","prepend","insertBefore","before","after","keepData","html","replaceWith","replaceChild","hasScripts","set","iNoClone","_evalUrl","prependTo","insertAfter","replaceAll","insert","shrinkWrapBlocksVal","rmargin","rposition","getComputedStyle","opener","computed","minWidth","maxWidth","getPropertyValue","currentStyle","left","rs","rsLeft","runtimeStyle","pixelLeft","computeStyleTests","pixelPositionVal","boxSizingReliableVal","reliableMarginRightVal","marginRight","reliableHiddenOffsetsVal","cssFloat","backgroundClip","clearCloneStyle","MozBoxSizing","WebkitBoxSizing","reliableHiddenOffsets","pixelPosition","reliableMarginRight","swap","ralpha","ropacity","rdisplayswap","rrelNum","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssNumber","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","cssProps","float","$1","margin","padding","border","suffix","expanded","parts","unit","propHooks","eased","step","linear","p","swing","cos","PI","timerId","rfxnum","rrun","*","scale","maxIterations","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","time","timeout","clearTimeout","getSetAttribute","hrefNormalized","checkOn","optSelected","enctype","optDisabled","radioValue","rreturn","valHooks","optionSet","scrollHeight","nodeHook","boolHook","ruseDefault","getSetInput","removeAttr","nType","attrHooks","propName","attrNames","propFix","getter","setAttributeNode","createAttribute","coords","contenteditable","rfocusable","rclickable","removeProp","for","class","notxml","tabindex","parseInt","rclass","addClass","classes","clazz","finalValue","proceed","removeClass","toggleClass","stateVal","classNames","hasClass","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","nonce","rquery","rvalidtokens","JSON","parse","requireNonComma","depth","str","comma","open","Function","parseXML","DOMParser","parseFromString","async","loadXML","ajaxLocParts","ajaxLocation","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","rurl","prefilters","allTypes","active","lastModified","etag","url","isLocal","processData","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","status","nativeStatusText","headers","success","modified","statusText","timeoutTimer","transport","responseHeadersString","ifModified","cacheURL","callbackContext","statusCode","fireGlobals","globalEventContext","completeDeferred","responseHeaders","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","code","abort","finalText","method","crossDomain","hasContent","beforeSend","send","getJSON","getScript","throws","wrapAll","wrapInner","unwrap","visible","r20","rCRLF","rsubmitterTypes","rsubmittable","encodeURIComponent","serialize","serializeArray","xhr","xhrId","xhrCallbacks","xhrSupported","cors","username","xhrFields","isAbort","onreadystatechange","responseText","script","text script","head","scriptCharset","charset","onload","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","_load","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","box","getBoundingClientRect","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","size","andSelf","define","amd","_jQuery","_$","$","noConflict","deBouncer","cf","of","debounce","threshold","execAsap","delayed","Owl","element","Defaults","$element","_handlers","_plugins","_supress","_current","_speed","_coordinates","_breakpoint","_width","_items","_clones","_mergers","_widths","_invalidated","_pipe","_drag","pointer","stage","direction","_states","tags","initializing","animating","dragging","Plugins","plugin","Workers","priority","worker","initialize","items","loop","center","rewind","mouseDrag","touchDrag","pullDrag","freeDrag","stagePadding","mergeFit","autoWidth","startPosition","rtl","smartSpeed","fluidSpeed","dragEndSpeed","responsive","responsiveRefreshRate","responsiveBaseElement","fallbackEasing","info","nestedItemSelector","itemElement","stageElement","refreshClass","loadedClass","loadingClass","rtlClass","responsiveClass","dragClass","itemClass","stageClass","stageOuterClass","grabClass","Default","Inner","Outer","Type","State","$stage","grid","margin-left","margin-right","toFixed","iterator","widths","min","clones","view","ceil","repeat","normalize","previous","coordinates","abs","padding-left","padding-right","minimum","maximum","inner","outer","begin","op","enter","imgs","nestedSelector","preloadAutoWidthImages","refresh","invalidate","registerEventHandlers","leave","viewport","overwrites","breakpoint","Number","property","optionsLogic","prepare","item","update","dimension","onThrottledResize","resizeTimer","onResize","transition","onTransitionEnd","onDragStart","onDragEnd","transform","x","y","getTime","delta","difference","onDragMove","pull","coordinate","transform3d","part","suppress","release","boundary","mergers","from","factor","revert","distance","originalTarget","innerWidth","clientWidth","images","Image","destroy","o","listener","capture","onTrigger","register","owl","touches","changedTouches","owlCarousel","$this","Constructor","Zepto","AutoRefresh","carousel","_core","_interval","_visible","initialized.owl.carousel","autoRefresh","watch","autoRefreshInterval","getOwnPropertyNames","Lazy","_loaded","initialized.owl.carousel change.owl.carousel","lazyLoad","$item","$elements","devicePixelRatio","background-image","AutoHeight","initialized.owl.carousel refreshed.owl.carousel","autoHeight","changed.owl.carousel","loaded.owl.lazy","autoHeightClass","heights","maxheight","Video","_videos","_playing","resize.owl.carousel","video","isInFullScreen","refreshed.owl.carousel","prepared.owl.carousel","fetch","play","videoHeight","videoWidth","thumbnail","tnLink","icon","path","dimensions","customTn","srcType","lazyClass","create","thumbnail_large","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","Animate","scope","core","swapping","change.owl.carousel","drag.owl.carousel dragged.owl.carousel translated.owl.carousel","translate.owl.carousel","animateOut","animateIn","clear","incoming","outgoing","Autoplay","_paused","autoplay","play.owl.autoplay","stop.owl.autoplay","mouseover.owl.autoplay","autoplayHoverPause","pause","mouseleave.owl.autoplay","autoplayTimeout","autoplaySpeed","Navigation","_initialized","_pages","_controls","_templates","_overrides","dotsData","dotClass","added.owl.carousel","remove.owl.carousel","draw","nav","navText","navSpeed","navElement","navContainer","navContainerClass","navClass","slideBy","dotsClass","dots","dotsEach","dotsSpeed","dotsContainer","override","$relative","$previous","$next","$absolute","control","overides","k","lower","upper","page","getPosition","successor","standard","Hash","_hashes","substring","URLhashListener","prefixed","prefixes","WebkitTransition","MozTransition","OTransition","WebkitAnimation","MozAnimation","OAnimation","tests","csstransforms","csstransforms3d","csstransitions","cssanimations","uses","requestAnimationFrame","CACHE","IE9TO11","embed","svg","g","viewBox","array","querySelector","onframe","use","url_root","url_hash","navigator","userAgent","hoverIntent","handlerIn","handlerOut","cfg","sensitivity","over","out","cX","cY","pX","pY","track","ev","ob","hoverIntent_t","sqrt","hoverIntent_s","handleHover","mouseenter.hoverIntent","mouseleave.hoverIntent","focused","flexslider","slider","vars","defaults","watchedEventClearTimer","msGesture","msPointerEnabled","MSGesture","touch","DocumentTouch","eventType","watchedEvent","vertical","itemWidth","fade","asNav","asNavFor","methods","currentSlide","startAt","isNaN","animatingTo","atEnd","containerSelector","substr","search","slides","syncExists","sync","manualPause","started","startTimeout","transitions","useCSS","pfx","ensureAnimationEnd","controlsContainer","manualControls","customDirectionNav","randomize","round","doMath","controlNav","directionNav","keyboard","multipleKeyboard","keycode","getTarget","flexAnimate","pauseOnAction","mousewheel","deltaX","deltaY","pausePlay","slideshow","pauseInvisible","pauseOnHover","manualPlay","initDelay","smoothHeight","resize","floor","move","currentItem","_slider","that","_gesture","addPointer","pointerId","$slide","posFromLeft","setupManual","setupPaging","slide","controlNavScaffold","pagingCount","altText","thumbCaptions","captn","setToClearWatchedEvent","action","directionNavScaffold","prevText","nextText","disabledClass","animationLoop","pausePlayScaffold","playText","pauseText","onMSPointerDown","accDx","cwidth","h","startT","limit","itemW","itemMargin","cloneOffset","onMSGestureChange","transX","translationX","transY","translationY","dx","scrolling","detail","MSGESTURE_FLAG_INERTIA","setImmediate","setProps","onMSGestureEnd","updateDx","canAdvance","startX","startY","onTouchStart","onTouchMove","onTouchEnd","localX","localY","msTouchAction","fxms","computedW","newSlides","dur","$obj","innerHeight","playing","uniqueID","$clone","visProp","getHiddenProp","evtname","withSync","fromNav","master","wrapup","animationSpeed","slideString","calcNext","animateSlides","animatedSlides","slideshowSpeed","posCheck","posCalc","webkitTransition","fadeFirstSlide","sliderOffset","cloneCount","computedM","slideMargin","minItems","maxItems","boxPadding","outerWidth","itemT","itemM","minW","maxW","addSlide","added","removeSlide","removed","allowOneSlide","$slides","$slider","require","_fnHungarianMap","newKey","hungarian","_hungarianMap","_fnCamelToHungarian","user","force","hungarianKey","_fnLanguageCompat","DataTable","oLanguage","zeroRecords","sZeroRecords","sEmptyTable","_fnMap","sLoadingRecords","sInfoThousands","sThousands","decimal","sDecimal","_addNumericSort","_fnCompatOpts","_fnCompatMap","sScrollX","scrollX","searchCols","aoSearchCols","ien","models","oSearch","_fnCompatCols","dataSort","aDataSort","_fnBrowserDetect","__browser","browser","barWidth","bScrollOversize","bScrollbarLeft","bBounding","oBrowser","oScroll","iBarWidth","_fnReduce","inc","isSet","_fnAddColumn","oSettings","nTh","oDefaults","column","iCol","aoColumns","oCol","oColumn","sTitle","mData","aoPreSearchCols","_fnColumnOptions","oOptions","oClasses","sWidthOrig","mDataProp","sType","_sManualType","sClass","iDataSort","mDataSrc","_fnGetObjectDataFn","mRender","attrTest","_bAttrSrc","_setter","fnGetData","rowData","meta","innerData","fnSetData","_fnSetObjectDataFn","_rowReadObject","oFeatures","bSort","bSortable","sSortableNone","bAsc","asSorting","bDesc","sSortingClass","sSortableAsc","sSortingClassJUI","sSortJUIAscAllowed","sSortableDesc","sSortJUIDescAllowed","sSortable","sSortJUI","_fnAdjustColumnSizing","bAutoWidth","columns","_fnCalculateColumnWidths","iLen","sWidth","scroll","sY","sX","_fnScrollDraw","_fnCallbackFire","_fnVisibleToColumnIndex","iMatch","aiVis","_fnGetColumns","_fnColumnIndexToVisible","iPos","_fnVisbleColumns","vis","bVisible","sParam","_fnColumnTypes","jen","ken","detectedType","aoData","ext","detect","_fnGetCellData","_fnApplyColumnDefs","aoColDefs","aoCols","jLen","kLen","def","aTargets","_fnAddData","aDataIn","nTr","anTds","iRow","oData","oRow","_aData","aiDisplayMaster","rowIdFn","aIds","bDeferRender","_fnCreateTr","_fnAddTr","trs","row","_fnGetRowElements","cells","_fnNodeToDataIndex","_DT_RowIndex","_fnNodeToColumnIndex","anCells","rowIdx","colIdx","iDraw","defaultContent","sDefaultContent","cellData","iDrawError","_fnLog","_fnSetCellData","_fnSplitObjNotation","mSource","fetchData","arrayNotation","funcNotation","innerSrc","__reArray","__reFn","setData","aLast","_fnGetDataMaster","_pluck","_fnClearTable","aiDisplay","_fnDeleteIndex","iTarget","iTargetIndex","_fnInvalidate","cellWrite","cell","_aSortData","_aFilterData","cols","_fnRowAttributes","d","tds","objectRead","cellProcess","rowNode","rowId","nTrIn","nTd","sCellType","_DT_CellIndex","fnCreatedCell","oInstance","DT_RowClass","__rowc","_unique","DT_RowAttr","DT_RowData","_fnBuildHead","nTHead","nTFoot","createHeader","iTabIndex","sTableId","_fnSortAttachListener","_fnRenderer","_fnDetectHeader","aoHeader","sHeaderTH","sFooterTH","aoFooter","nTf","_fnDrawHead","aoSource","bIncludeHidden","nLocalTr","iRowspan","iColspan","aoLocal","aApplied","iColumns","_fnDraw","aPreDraw","_fnProcessingDisplay","anRows","iRowCount","asStripeClasses","iStripes","oLang","aoOpenRows","iInitDisplayStart","bServerSide","_fnDataSource","bDrawing","_iDisplayStart","fnRecordsDisplay","iDisplayStart","iDisplayEnd","fnDisplayEnd","bDeferLoading","bDestroying","_fnAjaxUpdate","iStart","iEnd","iDataIndex","nRow","sStripe","_sRowStripe","sZero","fnRecordsTotal","valign","colSpan","sRowEmpty","nTBody","bSorted","bFiltered","_fnReDraw","holdPosition","features","bFilter","_fnSort","_fnFilterComplete","oPreviousSearch","_drawHold","_fnAddOptionsHtml","table","nTable","holding","sWrapper","sNoFooter","nHolding","nTableWrapper","nTableReinsertBefore","featureNode","cOption","nNewNode","cNext","sAttr","aDom","sDom","sJUIHeader","sJUIFooter","aSplit","bPaginate","bLengthChange","_fnFeatureHtmlLength","_fnFeatureHtmlFilter","bProcessing","_fnFeatureHtmlProcessing","_fnFeatureHtmlTable","bInfo","_fnFeatureHtmlInfo","_fnFeatureHtmlPaginate","feature","aoFeatures","cFeature","fnInit","aanFeatures","aLayout","nThead","nCell","iColShifted","iColumn","bUnique","nTrs","fnShiftCol","_fnGetUniqueThs","nHeader","aReturn","bSortCellsTop","_fnBuildAjax","ajaxData","instance","newData","baseAjax","sError","sServerMethod","thrown","oAjaxData","fnServerData","sAjaxSource","bAjaxDataGet","_fnAjaxParameters","_fnAjaxUpdateDraw","dataProp","columnSearch","preSearch","preColSearch","_fnSortFlatten","displayStart","displayLength","_iDisplayLength","sSearch","regex","bRegex","sName","searchable","bSearchable","orderable","legacy","compat","modern","_fnAjaxDataSrc","recordsTotal","recordsFiltered","_iRecordsTotal","_iRecordsDisplay","_bInitComplete","_fnInitComplete","dataSrc","sAjaxDataProp","aaData","tableId","language","previousSearch","sFilterInput","f","sFilter","searchFn","bSmart","bCaseInsensitive","searchDelay","jqFilter","sSearchPlaceholder","_fnThrottle","oInput","iForce","oPrevSearch","aoPrevSearch","fnSaveFilter","oFilter","fnRegex","bEscapeRegex","_fnFilter","_fnFilterColumn","_fnFilterCustom","displayRows","rows","searchStr","smart","caseInsensitive","rpSearch","_fnFilterCreateSearch","invalidated","prevSearch","displayMaster","filtered","_fnFilterData","_sFilterRow","_fnEscapeRegex","word","filterData","fomatters","wasInvalidated","__filter_div","__filter_div_textContent","_fnSearchToCamel","_fnSearchToHung","tid","sInfo","aoDrawCallback","_fnUpdateInfo","total","sInfoEmpty","sInfoFiltered","sInfoPostFix","_fnInfoMacros","fnInfoCallback","formatter","fnFormatNumber","_fnInitialise","iAjaxStart","deferLoading","bInitialised","_fnStringToCss","aData","oInit","_fnLengthChange","_fnLengthOverflow","menu","aLengthMenu","d2","lengths","aria-controls","sLengthSelect","Option","sLength","sLengthMenu","sPaginationType","pager","redraw","sPaging","visRecords","pages","buttons","fnUpdate","_fnPageChange","records","changed","sProcessing","scrollY","captionSide","_captionSide","headerClone","footerClone","footer","_div","scroller","sScrollWrapper","sScrollHead","sScrollHeadInner","box-sizing","sXInner","sScrollBody","sScrollFoot","sScrollFootInner","scrollHead","scrollBody","scrollFoot","bCollapse","nScrollHead","nScrollBody","nScrollFoot","headerTrgEls","footerTrgEls","headerSrcEls","footerSrcEls","headerCopy","footerCopy","correction","sanityWidth","scrollXInner","divHeader","divHeaderStyle","divHeaderInner","divHeaderInnerStyle","divHeaderTable","divBodyEl","divBody","divBodyStyle","divFooter","divFooterInner","divFooterTable","tableEl","tableStyle","ie67","dtHeaderCells","headerWidths","footerWidths","headerContent","footerContent","zeroOut","nSizer","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth","scrollBarVis","clientHeight","_fnApplyToChildren","nToSize","iOuterWidth","bScrolling","an1","an2","nNode1","nNode2","columnIdx","visibleColumns","headerCells","tableWidthAttr","tableContainer","userInputs","styleWidth","_fnConvertToWidth","tmpTable","_fnGetWidestNode","sContentPadding","holder","right","bounding","_reszEvt","bindResize","sInstance","_fnGetMaxLenString","maxIdx","__re_html_remove","srcCol","aSort","fixed","aaSortingFixed","fixedObj","nestedSort","pre","aaSorting","post","_idx","sortCol","aiOrig","oExtSort","formatters","_fnSortData","dataA","dataB","_fnSortAria","label","nextSort","oAria","sSortAscending","sSortDescending","_fnSortListener","nextSortIdx","sorting","bSortMulti","sortIdx","attachTo","_fnBindAction","shiftKey","_fnSortingClasses","oldSort","aLastSort","sortClass","sSortColumn","bSortClasses","customData","customSort","sSortDataType","_fnSaveState","bStateSave","oSavedState","fnStateSaveCallback","_fnLoadState","loaded","abStateLoad","iStateDuration","oLoadedState","fnStateLoadCallback","_fnSettingsFromNode","level","tn","console","log","sErrMode","errMode","alert","mappedName","_fnExtend","extender","breakRefs","_fnCallbackReg","sStore","callbackArr","renderer","host","_numbers","numbers","extPagination","numbers_length","half","_range","DT_el","decimalPlace","__numericReplace","num-fmt","_re_formatted_numeric","html-num","_re_html","html-num-fmt","_ext","_fnExternApiFunc","iApiIndex","internal","_Api","_api_register","_api_registerPlural","sSelector","oOpts","api","fnAddData","flatten","fnAdjustColumnSizing","bRedraw","adjust","fnClearTable","fnClose","child","fnDeleteRow","fnDestroy","fnDraw","fnFilter","sInput","bShowGlobal","fnGetNodes","fnGetPosition","columnVisible","fnIsOpen","isShown","fnOpen","mHtml","fnPageChange","mAction","fnSetColumnVis","bShow","fnSettings","fnSort","aaSort","fnSortListener","nNode","fnCallback","mRow","bAction","fnVersionCheck","_that","emptyInit","oApi","sId","bInitHandedOff","allSettings","bRetrieve","bDestroy","sDestroyWidth","dataTable","iDisplayLength","fnDrawCallback","fnServerParams","fnStateSaveParams","fnStateLoadParams","fnStateLoaded","fnRowCallback","fnCreatedRow","fnHeaderCallback","fnFooterCallback","fnInitComplete","fnPreDrawCallback","bJQueryUI","oJUIClasses","sTable","iDeferLoading","sUrl","sStripeOdd","sStripeEven","stripeClasses","rowOne","asDestroyStripes","aoColumnsInit","anThs","aoColumnDefs","oDef","loadedInit","sortedColumns","captions","_re_dic","_re_new_lines","_re_date","_re_escape_regex","_empty","_intVal","integer","isFinite","_numToDecimal","decimalPoint","_isNumber","formatted","strType","_isHtml","_htmlNumeric","_stripHtml","prop2","_pluck_order","_removeEmpty","again","util","throttle","freq","frequency","escapeRegex","knew","__apiStruct","__arrayProto","_toSettings","mixed","jq","tables","ctxSettings","Api","any","ctx","alwaysNew","apiInst","_selector_row_indexes","apiSelector","lastIndexOf","pluck","reduce","reduceRight","to$","toJQuery","__dt_wrapper","struct","methodScoping","struc","methodExt","propExt","heir","registerPlural","pluralName","singularName","__table_selector","paging","recordsDisplay","serverSide","__reload","resetPaging","_selector_run","selectFn","res","selectorType","_selector_opts","_selector_first","inst","displayFiltered","__row_selector","selInt","rowObj","thatIdx","loopRow","loopCells","newRows","modRows","__details_add","klass","addRow","created","_details","_detailsShow","__details_remove","__details_display","__details_events","drawEvent","colvisEvent","destroyEvent","_emp","_child_obj","_child_mth","__re_column_selector","__columnData","r1","r2","__column_selector","names","visColumns","jqResult","__setColumnVis","calc","__cell_selector","allCells","fnSelector","rowSelector","columnSelector","caseInsen","versionCheck","iThis","iThat","aThis","aThat","isDataTable","fnIsDataTable","foot","fnTables","camelToHungarian","jqRows","jqTable","jqTbody","jqWrapper","bJUI","sSortIcon","wrapper","sSortJUIWrapper","removedMethod","arg1","arg2","arg3","arg4","plural","resolved","bScrollCollapse","toFormat","sessionStorage","localStorage","getItem","pathname","setItem","stringify","oPaginate","sFirst","sLast","sNext","sPrevious","sScrollXInner","sScrollY","aoRowCallback","aoHeaderCallback","aoFooterCallback","aoRowCreatedCallback","aoPreDrawCallback","aoInitComplete","aoStateSaveParams","aoStateLoadParams","aoStateLoaded","aoStateSave","aoStateLoad","aoServerParams","aoDestroyCallback","paginate","oPlugins","builder","pageButton","sVersion","afnFiltering","aTypes","ofnSearch","oSort","afnSortData","oStdClasses","oPagination","sPageButton","sPageButtonActive","sPageButtonDisabled","sSortAsc","sSortDesc","sSortJUIAsc","sSortJUIDesc","_stateDefault","_sortIcon","_headerFooter","full","simple_numbers","full_numbers","first_last_numbers","btnDisplay","btnClass","activeEl","aria","counter","attach","clickHandler","aria-label","data-dt-idx","re1","re2","Infinity","date-pre","html-pre","string-pre","string-asc","string-desc","jqueryui","__htmlEscapeEntities","render","number","thousands","precision","postfix","negative","flo","intPart","floatPart","_fnCalculateEnd","dataTableSettings","dataTableExt","yadcf","getSettingsObjFromTable","dt","oDTSettings","arraySwapValueWithIndex","pArray","initColReorder","table_selector_jq_friendly","ColReorder","plugins","initColReorderFromEvent","columnsArrayToString","column_number","column_number_obj","column_number_str","getOptions","eventTargetFixUp","pEvent","dot2obj","tmpObj","dot_refs","setOptions","selector_arg","options_arg","col_num_as_int","tmpOptions","default_options","filter_type","enable_auto_complete","sort_as","sort_order","date_format","ignore_char","filter_match_mode","select_type","select_type_options","case_insensitive","column_data_type","html_data_type","exclude_label","style_class","adaptContainerCssClassImpl","dummy","adaptContainerCssClass","externally_triggered","filter_reset_button_text","custom_func","yadcfVersionCheck","resetIApiIndex","generateTableSelectorJQFriendly","tmpStr","escapeRegExp","generateTableSelectorJQFriendlyNew","yadcfMatchFilterString","table_arg","selected_value","multiple","ret_val","yadcfMatchFilter","oTable","exclude","yadcfParseMatchFilter","retVal","doFilterCustomDateFunc","yadcfState","oTables","columnObj","exGetColumnFilterVal","select2","doFilter","oTablesIndex","column_number_filter","settingsDt","doFilterMultiSelect","stringForSearch","selected_values","selected_values_trimmed","yadcfParseMatchFilterMultiSelect","doFilterAutocomplete","autocompleteSelect","ui","table_column","dashIndex","col_num","sortNumAsc","sortNumDesc","findMinInArray","narray","findMaxInArray","addRangeNumberAndSliderFilterCapability","fromId","toId","table_selector_jq_friendly_local","current_table_selector_jq_friendly","ignore_char_local","column_number_data","html_data_selector","html5_data","addCustomFunctionFilterCapability","filterId","columnVal","filterVal","addRangeDateFilterCapability","datepicker","parseDate","err1","err2","err3","addRangeNumberFilter","filter_selector_string","filter_default_label","filter_selector_string_tmp","filter_wrapper_id","filterActionStr","dateSelectSingle","date","date_str","dateSelect","addRangeDateFilter","datepickerObj","dateFormat","onSelect","addDateFilter","dateId","rangeNumberSldierDrawTips","min_tip_val","max_tip_val","min_tip_id","max_tip_id","min_tip_inner","max_tip_inner","first_handle","last_handle","rangeNumberSliderChange","min_val","max_val","slider_inuse","keyUp","filter_delay","yadcfDelay","addRangeNumberSliderFilter","slideFunc","changeFunc","sliderId","min_state_val","max_state_val","range","removeFilters","table_selector","sortAlphaNum","aN","bN","aA","reA","bA","reN","sortColumnData","column_data","sort_as_custom_func","parseTableColumn","pTable","col_inner_elements","col_inner_data","col_filter_array","data_length","text_data_delimiter","appendFilters","$filter_selector","filter_container_id","column_position","column_data_temp","options_tmp","ii","col_num_visible","col_num_visible_iter","columnObjKey","filters_position","unique_th","custom_func_filter_value_holder","exclude_str","tableDT","tablesDT","append_data_to_table_data","placeholder","allowClear","chosen","filter_plugin_options","autocomplete","exFilterColumnQueue","rangeClear","currentFilterValues","rangeNumberSliderClear","dateKeyUP","rangeDateKeyUP","rangeNumberKeyUP","doFilterMultiTablesMultiSelect","tablesSelectors","tablesAsOne","columnsObj","tablesArray","doFilterMultiTables","serachVal","textKeyUpMultiTables","textKeyUP","autocompleteKeyUP","isDOMSource","tableVar","scrollXYHandler","$tmpSelector","initAndBindTable","pTableDT","table_selector_tmp","naruto","tmpParams","appendFiltersMultipleTables","colObjDummy","tableTmp","tableTmpArr","tableTmpArrIndex","column_number_index","columnsTmpArr","filterOptions","initMultipleTables","filtersOptions","columnsArrIndex","dummyArr","initMultipleColumns","evt","exInternalFilterColumnAJAXQueue","col_filter_arr","exFilterColumn","ajaxSource","filter_value","optionsObj","saveStateSave","clearStateSave","exResetAllFilters","noRedraw","tableOptions","exResetFilters","exFilterExternallyTriggered","filterValue","filtersValuesSingleElem","filtersValuesArr","ms","fitVids","customSelector","ignore","ignoreList","$allVideos","tagName","aspectRatio","videoName","_count","Hideshare","$elem","link","URL","title","description","media","facebook","twitter","pinterest","googleplus","linkedin","config","wrapHideshare","output","outerHeight","liWidth","placement","shareTitle","shareLink","shareMedia","shareDescription","facebookTemplate","twitterTemplate","pinterestTemplate","googleplusTemplate","linkedinTemplate","hideshareList","$wrap","getPlacement","bottom","returnPlacement","shareFacebook","shareTwitter","sharePinterest","shareGooglePlus","shareLinkedIn","hideshare","encode","decode","decodeURIComponent","stringifyCookieValue","parseCookieValue","pluses","read","converter","cookie","expires","days","setTime","toUTCString","domain","secure","cookies","removeCookie","Plugin","_relatedTarget","Modal","DEFAULTS","$body","$dialog","$backdrop","originalBodyPad","scrollbarWidth","ignoreBackdropClick","remote","VERSION","TRANSITION_DURATION","BACKDROP_TRANSITION_DURATION","backdrop","checkScrollbar","setScrollbar","escape","adjustDialog","enforceFocus","emulateTransitionEnd","hideModal","handleUpdate","resetAdjustments","resetScrollbar","removeBackdrop","doAnimate","callbackRemove","modalIsOverflowing","paddingLeft","bodyIsOverflowing","paddingRight","fullWindowWidth","documentElementRect","measureScrollbar","bodyPad","scrollDiv","modal","$target","showEvent","swipebox","useSVG","initialIndexOnArray","removeBarsOnMobile","hideCloseButtonOnMobile","hideBarsDelay","videoMaxWidth","vimeoColor","beforeOpen","afterOpen","afterClose","afterMedia","nextSlide","prevSlide","loopAtEnd","autoplayVideos","queryStringData","toggleClassOnLoad","isMobile","isTouch","createTouch","msMaxTouchPoints","supportSVG","createElementNS","createSVGRect","winWidth","winHeight","currentX","closeSlide","actions","relType","relVal","isOpen","build","openSlide","openMedia","preloadMedia","bg","setDim","gesture","animBars","sliderCss","orientation","supportTransition","doCssTrans","hDistance","vDistance","hDistanceLast","vDistanceLast","hDistancePercent","vSwipe","hSwipe","hSwipMinDistance","vSwipMinDistance","startCoords","endCoords","bars","targetTouches","-webkit-transform","-webkit-transition","vOffset","getPrev","getNext","hideBars","showBars","setSlide","isFirst","setTitle","isVideo","getVideo","loadMedia","parseUri","uri","qs","youtubeUrl","youtubeShortUrl","vimeoUrl","byline","portrait","color","img","moment","hookCallback","setHookCallback","isObject","isObjectEmpty","isNumber","isDate","hasOwnProp","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","meridiem","getParsingFlags","_pf","isValid","_isValid","flags","parsedParts","some$1","isNowValid","_d","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","isUndefined","copyConfig","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","momentProperties","Moment","updateInProgress","updateOffset","isMoment","absFloor","toInt","argumentForCoercion","coercedNumber","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","warn","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","deprecateSimple","deprecations","_config","_ordinalParseLenient","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","calendar","mom","_calendar","longDateFormat","_longDateFormat","formatUpper","invalidDate","_invalidDate","ordinal","_ordinal","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","addUnitAlias","shorthand","lowerCase","aliases","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","addUnitPriority","priorities","getPrioritizedUnits","unitsObj","u","makeGetSet","keepTime","set$1","stringGet","stringSet","prioritized","zeroFill","targetLength","forceSign","absNumber","zerosToFill","sign","pow","addFormatToken","padded","formatTokenFunctions","localeData","removeFormattingTokens","makeFormatFunction","formattingTokens","formatMoment","expandFormat","formatFunctions","replaceLongDateFormatTokens","localFormattingTokens","lastIndex","addRegexToken","strictRegex","regexes","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","p1","p2","p3","p4","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","daysInMonth","year","month","UTC","getUTCDate","localeMonths","_months","isFormat","MONTHS_IN_FORMAT","localeMonthsShort","_monthsShort","handleStrictParse","monthName","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","monthsShort","months","indexOf$1","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","monthsParse","getSetMonth","getDaysInMonth","monthsShortRegex","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","defaultMonthsShortRegex","monthsRegex","_monthsStrictRegex","_monthsRegex","defaultMonthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","isLeapYear","getIsLeapYear","createDate","M","getFullYear","setFullYear","createUTCDate","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","fwdlw","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","localWeekday","weekOffset","dayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","_week","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","localeWeekdays","_weekdays","day","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","weekdaysMin","weekdaysShort","weekdays","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","weekdaysRegex","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","defaultWeekdaysRegex","weekdaysShortRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","defaultWeekdaysShortRegex","weekdaysMinRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","defaultWeekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","hours","kFormat","lowercase","minutes","matchMeridiem","_meridiemParse","localeIsPM","localeMeridiem","isLower","normalizeLocale","chooseLocale","loadLocale","oldLocale","locales","globalLocale","_abbr","getSetGlobalLocale","getLocale","defineLocale","baseConfig","abbr","parentLocale","localeFamilies","forEach","updateLocale","listLocales","keys$1","checkOverflow","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","_overflowWeeks","WEEK","_overflowWeekday","WEEKDAY","configFromISO","allowTime","timeFormat","tzFormat","extendedIsoRegex","basicIsoRegex","isoDates","isoTimes","tzRegex","configFromStringAndFormat","configFromString","aspNetJsonRegex","createFromInputFallback","c","currentDateArray","nowValue","_useUTC","getUTCMonth","getMonth","getDate","configFromArray","currentDate","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","setUTCMinutes","getUTCMinutes","weekYear","weekdayOverflow","GG","W","E","createLocal","curWeek","gg","ISO_8601","parsedInput","skipped","stringLength","totalParsedInputLength","_meridiem","meridiemFixWrap","hour","isPm","meridiemHour","isPM","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromObject","minute","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","pickBy","moments","Duration","years","quarters","quarter","weeks","seconds","milliseconds","_milliseconds","_days","_bubble","isDuration","absRound","separator","utcOffset","offsetFromString","chunk","chunkOffset","cloneWithOffset","model","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","localAdjust","matchShortOffset","_changeInProgress","addSubtract","createDuration","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","matchOffset","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","other","isUtcOffset","isUtc","diffRes","aspNetRegex","isoRegex","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","period","isAdding","getCalendarFormat","myMoment","calendar$1","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","zoneDelta","monthDiff","anchor2","wholeMonthDiff","anchor","toISOString","toDate","zone","datetime","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","isoWeekday","unix","toObject","isValid$1","parsingFlags","invalidAt","creationData","addWeekYearFormatToken","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","isoWeek","getISOWeeksInYear","getWeeksInYear","weekInfo","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","getSetDayOfYear","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","get$1","field","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","get$2","makeGetter","substituteTimeAgo","relativeTime$1","posNegDuration","thresholds","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","withSuffix","toISOString$1","abs$1","Y","D","asSeconds","some","fun","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","defaultInvalidDate","defaultOrdinal","defaultOrdinalParse","defaultRelativeTime","future","past","mm","hh","dd","MM","yy","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchTimestamp","matchWord","defaultLocaleMonths","defaultLocaleMonthsShort","parseTwoDigitYear","getSetYear","defaultLocaleWeek","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","_isPm","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","ordinalParse","meridiemParse","prototypeMin","prototypeMax","isoWeekYear","getSetDayOfMonth","getSetMinute","getSetSecond","getSetMillisecond","proto","isoWeeks","isoWeeksInYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","firstDayOfYear","firstDayOfWeek","langData","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","proto$2","toIsoString","invalid","relativeTimeRounding","relativeTimeThreshold","mergeOptions","optionObjs","mergeProps","complexOptions","compensateScroll","rowEls","scrollbarWidths","border-left-width","border-right-width","uncompensateScroll","disableCursor","enableCursor","distributeHeight","availableHeight","shouldRedistribute","minOffset1","minOffset2","flexEls","flexOffsets","flexHeights","usedHeight","undistributeHeight","minOffset","naturalOffset","naturalHeight","newHeight","matchCellWidths","maxInnerWidth","innerEl","subtractInnerElHeight","outerEl","both","getScrollParent","scrollParent","getOuterRect","origin","getClientRect","getScrollbarWidths","getCssFloat","getContentRect","leftRightWidth","bottomWidth","sanitizeScrollbarWidth","getIsLeftRtlScrollbars","_isLeftRtlScrollbars","computeIsLeftRtlScrollbars","isPrimaryMouseButton","ctrlKey","getEvX","getEvY","getEvIsTouch","preventSelection","allowSelection","intersectRects","rect1","rect2","constrainPoint","point","rect","getRectCenter","diffPoints","point1","point2","parseFieldSpecs","specs","compareByFieldSpecs","obj1","obj2","fieldSpecs","cmp","compareByFieldSpec","fieldSpec","flexibleCompare","localeCompare","intersectRanges","subjectRange","constraintRange","segStart","segEnd","isStart","isEnd","subjectStart","subjectEnd","constraintStart","constraintEnd","diffDayTime","stripTime","diffDay","diffByUnit","computeIntervalUnit","intervalUnits","computeRangeAs","isInt","divideRangeByDuration","durationHasTime","divideDurationByDuration","dur1","dur2","months1","months2","multiplyDuration","Boolean","isNativeDate","isTimeString","propObjs","complexProps","complexObjs","createObject","copyOwnProps","hasOwnPropMethod","isAtomic","applyAll","functions","thisObj","firstDefined","htmlEscape","stripHtmlEntities","cssToStr","statements","attrsToStr","capitaliseFirstLetter","compareNumbers","methodName","immediate","timestamp","later","callNow","makeMoment","parseAsUTC","isAmbigTime","isAmbigZone","ambigMatch","isSingleString","ambigDateOfMonthRegex","ambigTimeOrZoneRegex","_ambigTime","_ambigZone","_fullCalendar","Class","extendClass","superClass","members","subClass","mixIntoClass","theClass","Promise","executor","_value","origThen","onFulfilled","onRejected","TaskQueue","debounceWait","addTask","taskFunc","runFunc","q","addQuickly","isHitsEqual","hit0","hit1","component","isHitPropsWithin","subHit","superHit","pluckEventDateProps","allDay","isBgEvent","rendering","getEventRendering","isInverseBgEvent","groupEventsById","eventsById","_id","compareRanges","range1","range2","getDraggedElMeta","eventProps","stick","FC","dataAttrPrefix","isDaySegCollision","seg","otherSegs","otherSeg","leftCol","rightCol","compareDaySegCols","buildSlotSegLevels","segs","levels","computeSlotSegCollisions","computeForwardSlotSegs","forwardSegs","computeSlotSegPressures","forwardSeg","forwardPressure","isSlotSegCollision","seg1","seg2","Iterator","Toolbar","toolbarOptions","setToolbarOptions","newToolbarOptions","sections","layout","tm","theme","extraClasses","renderSection","removeElement","sectionEl","buttonStr","groupEl","groupChildren","isOnlyButtons","buttonName","customButtonProps","viewSpec","buttonClick","overrideText","defaultText","themeIcon","normalIcon","innerHtml","customButtons","getViewSpec","changeView","viewsWithButtons","buttonTextOverride","buttonTextDefault","overrides","buttonText","themeButtonIcons","buttonIcons","mousedown","mouseup","updateTitle","activateButton","deactivateButton","disableButton","enableButton","getViewsWithButtons","Calendar_constructor","localizeMoment","elementVisible","calcSize","renderView","initialRender","anchorEl","gotoOptions","viewType","customAction","currentView","zoomTo","bindOption","bindOptions","isRTL","toolbars","buildToolbars","toolbarsManager","renderHeader","renderFooter","handleWindowResize","windowResizeProxy","windowResize","windowResizeDelay","proxyCall","GlobalEmitter","unneeded","forcedScroll","ignoreWindowResize","needsClearView","freezeContentHeight","clearView","viewsByType","instantiateView","setElement","massageCurrentDate","isDateSet","intervalStart","intervalEnd","captureInitialScroll","setDate","releaseScroll","updateToolbarsTodayButton","thawContentHeight","reinitView","scrollState","queryScroll","updateSize","shouldRecalc","_calcSize","contentHeightInput","contentHeight","heightInput","suggestedViewHeight","queryToolbarsHeight","accumulator","toolbar","toolbarHeight","publiclyTrigger","_element","rerenderEvents","reportEventChange","computeHeaderOptions","computeFooterOptions","getNow","zonedStartInput","zonedEndInput","buildSelectSpan","unselect","computePrevDate","computeNextDate","prevYear","nextYear","today","gotoDate","zonedDateInput","stripZone","incrementDate","newDate","spec","getUnitViewSpec","applyTimezone","freezeContentHeightDepth","getCalendar","getView","newOptionHash","optionName","optionCnt","dynamicOverrides","viewSpecCache","populateOptionsHash","triggerOptionHandlers","unrenderBusinessHours","renderBusinessHours","rezoneArrayEventSources","refetchEvents","triggerWith","needed","optionHandlers","monthNames","monthNamesShort","dayNames","dayNamesShort","firstDay","weekNumberCalculation","getMomentLocaleData","_fullCalendar_weekCalc","defaultAllDayEventDuration","defaultTimedEventDuration","timezone","hasTime","getIsAmbigTimezone","adjustedZonedDate","zonedDate","timeAdjust","getEventEnd","getDefaultEventEnd","zonedStart","humanizeDuration","EventManager","defaultDate","getSuggestedViewHeight","isHeightAuto","setToolbarsTitle","populateInstanceComputableOptions","instanceComputableOptions","localeCode","requestEvents","lazyFetching","isFetchNeeded","fetchEvents","prunedCache","filterEventsWithinRange","filteredEvents","rangeEnd","rangeStart","fetchEventSources","sources","refetchEventSources","matchInputs","getEventSourcesByMatchArray","specificSources","specialFetchType","excludeEventsBySources","_status","pendingSourceCnt","_fetchId","tryFetchEventSource","fetchId","_fetchEventSource","eventInputs","eventInput","abstractEvent","isArraySource","buildEventFromInput","expandEvent","decrementPendingSourceCnt","rejectEventSource","wasPending","fetchers","sourceFetchers","pushLoading","popLoading","startParam","endParam","timezoneParam","ajaxDefaults","addEventSource","sourceInput","buildEventSource","normalizers","sourceNormalizers","origArray","removeEventSource","matchInput","removeSpecificEventSources","getEventSourcesByMatch","removeEventSources","targetSources","isAll","getEventSources","getEventSourceById","matchingSources","isSourcesEquivalent","source1","source2","getSourcePrimitive","googleCalendarId","specificEvents","updateEvent","updateEvents","mutateEvent","getMiscEventProps","isMiscEventPropName","renderEvent","renderEvents","renderableEvents","renderedEvents","stickySource","removeEvents","eventID","clientEvents","rezoneEventDates","backupEventDates","eventDataTransform","eventGUID","_recurring","allDayDefault","assignDatesToEvent","normalizeEvent","normalizeEventDates","normalizeEventTimes","forceEventDuration","_rangeStart","_rangeEnd","dowHash","endTime","newProps","largeUnit","diffDates","date1","date0","oldProps","clearEnd","startDelta","endDelta","durationDelta","undoFunc","miscProps","_start","_end","_allDay","mutateEvents","dateDelta","undo","isAmbigTimezone","undoFunctions","eventSources","getEventCache","getPrunedEventCache","fullCalendar","internalApiVersion","fcViews","views","singleRes","Calendar","dayIDs","newMomentProto","oldMomentProto","weekCalc","dayHours","wasAmbigTime","hasZone","tzo","formatDate","oldMomentFormat","formatStr","renderFakeFormatString","getParsedFormatString","fakeFormatString","formatRange","date2","renderParsedFormat","parsedFormat","leftI","rightI","middleI","sameUnits","unzonedDate1","unzonedDate2","renderedParts1","renderFakeFormatStringParts","renderedParts2","leftStr","rightStr","middleStr1","middleStr2","middleStr","processMaybeMarkers","parsedFormatStrCache","parseFormatString","chunks","chunkFormatString","buildFakeFormatString","buildSameUnits","chunker","splitStringLiteral","maybe","specialTokens","SPECIAL_TOKEN_MARKER","MAYBE_MARKER","PART_SEPARATOR","tokenInfo","largeTokenMap","fakePart","fakeRender","fakeParts","MAYBE_REGEXP","m0","m1","queryMostGranularFormatUnit","candidate","best","T","mixin","inputs","hasAllValues","EmitterMixin","_prepareIntercept","intercept","ListenerMixin","listenerId","listenTo","getListenerNamespace","stopListeningTo","Popover","_this","parentEl","autoHide","documentMousedown","viewportTop","viewportLeft","viewportOffset","windowEl","viewportEl","viewportConstrain","CoordCache","forcedOffsetParentEl","boundingRect","isHorizontal","isVertical","lefts","rights","tops","bottoms","offsetParentEl","queryBoundingRect","buildElHorizontals","buildElVerticals","ensureBuilt","getHorizontalIndex","leftOffset","getVerticalIndex","topOffset","getLeftOffset","leftIndex","getLeftPosition","getRightOffset","getRightPosition","getWidth","getTopOffset","topIndex","getTopPosition","getBottomOffset","getBottomPosition","getHeight","scrollParentEl","isPointInBounds","isLeftInBounds","isTopInBounds","DragListener","subjectEl","originX","originY","scrollEl","isInteracting","isDistanceSurpassed","isDelayEnded","isDragging","delayTimeoutId","minDistance","shouldCancelTouchScroll","scrollAlwaysKills","startInteraction","extraOptions","shouldIgnoreMouse","bindHandlers","initAutoScroll","handleInteractionStart","startDelay","handleDistanceSurpassed","endInteraction","isCancelled","endDrag","destroyAutoScroll","unbindHandlers","handleInteractionEnd","globalEmitter","touchmove","handleTouchMove","touchend","handleTouchScroll","mousemove","handleMouseMove","selectstart","contextmenu","startDrag","handleDragStart","handleMove","distanceSq","dy","handleDrag","updateAutoScroll","handleDragEnd","initialEv","handleDelayEnd","isAutoScroll","scrollBounds","scrollTopVel","scrollLeftVel","scrollIntervalId","scrollSensitivity","scrollSpeed","scrollIntervalMs","handleDebouncedScroll","endAutoScroll","computeScrollBounds","topCloseness","bottomCloseness","leftCloseness","rightCloseness","bounds","topVel","leftVel","setScrollVel","constrainScrollVel","scrollWidth","scrollIntervalFunc","frac","handleScrollEnd","HitDragListener","origHit","hit","coordAdjust","subjectRect","origPoint","hitsNeeded","queryHit","subjectCenter","handleHitOver","handleHitOut","handleHitDone","isOrig","hitsNotNeeded","releaseHits","prepareHits","touchMouseIgnoreWait","isTouching","mouseIgnoreDepth","handleScrollProxy","touchstart","handleTouchStart","touchcancel","handleTouchCancel","handleTouchEnd","handleMouseDown","handleMouseUp","handleClick","handleSelectStart","handleContextMenu","handleTouchMoveProxy","passive","handleScroll","stopTouch","skipMouseIgnore","startTouchMouseIgnore","neededCount","MouseFollower","sourceEl","top0","left0","y0","x0","topDelta","leftDelta","isFollowing","isAnimating","updatePosition","shouldRevert","revertDuration","getEl","additionalClass","sourceOffset","Grid","hasDayInteractions","elsByFill","eventTimeFormat","displayEventTime","displayEventEnd","minResizeDuration","dayClickListener","daySelectListener","segDragListener","segResizeListener","externalDragListener","buildDayClickListener","buildDaySelectListener","computeEventTimeFormat","computeDisplayEventTime","computeDisplayEventEnd","setRange","rangeUpdated","processRangeOptions","spanToSegs","span","hitsNeededDepth","getHitSpan","getHitEl","bindDayHandler","dayTouchStart","dayMousedown","bindSegHandlers","bindGlobalHandlers","segSelector","unbindGlobalHandlers","clearDragListeners","renderSkeleton","renderDates","unrenderDates","dragstart","externalDragStart","sortstart","isSelected","selectedEvent","selectLongPressDelay","dayClickHit","dragListener","interactionStart","hitOver","hitOut","interactionEnd","triggerDayClick","selectionSpan","dragStart","computeSelection","renderSelection","unrenderSelection","hitDone","reportSelection","renderEventLocationHelper","eventLocation","sourceSeg","fakeEvent","fabricateHelperEvent","renderHelper","editable","unrenderHelper","renderHighlight","unrenderHighlight","span0","span1","computeSelectionSpan","isSelectionSpanAllowed","renderFill","unrenderFill","highlightSegClasses","getNowIndicatorUnit","renderNowIndicator","unrenderNowIndicator","renderFillSegEls","segElMethod","renderedSegs","fillSegHtml","fillSegTag","classesMethod","cssMethod","getDayClasses","noThemeHighlight","intervalDuration","highlightStateClass","mousedOverSeg","isDraggingSeg","isResizingSeg","isDraggingExternal","bgEvents","fgEvents","renderBgEvents","renderFgEvents","eventsToSegs","renderBgSegs","renderFgSegs","unrenderEvents","handleSegMouseout","unrenderFgSegs","unrenderBgSegs","getEventSegs","renderFgSegEls","disableResizing","fgSegHtml","resolveEventEl","bgEventSegEl","bgEventSegClasses","bgEventSegCss","background-color","getSegSkinCss","businessHoursSegClasses","buildBusinessHourSegs","wholeDay","businessHours","buildBusinessHourEvents","computeBusinessHourEvents","BUSINESS_HOUR_EVENT_DEFAULTS","bindSegHandlersToEl","bindSegHandlerToEl","handleSegTouchStart","handleSegMouseover","handleSegMousedown","handleSegClick","isEventResizable","isResizing","startSegResize","isEventDraggable","buildSegDragListener","eventLongPressDelay","isEventSelected","isDraggable","isResizable","buildSegSelectListener","dragOptions","buildSegResizeListener","mouseFollower","dropLocation","selectEvent","segDragStart","hideEvent","dragHelperEls","computeEventDrop","isEventSpanAllowed","eventToSpan","renderDrag","applyDragOpacity","unrenderDrag","segDragStop","reportSegDrop","startSpan","endSpan","dragEnd","accept","listenToExternalDrag","computeExternalDrop","isExternalSpanAllowed","reportExternalDrop","resizeLocation","eventEnd","segResizeStart","origHitSpan","hitSpan","computeEventStartResize","computeEventEndResize","renderEventResize","unrenderEventResize","segResizeStop","reportSegResize","computeEventResize","defaultDuration","getEventTimeText","displayEnd","getSegClasses","getSegCustomClasses","getSegBackgroundColor","border-color","getSegBorderColor","getSegTextColor","backgroundColor","getSegDefaultBackgroundColor","borderColor","getSegDefaultBorderColor","textColor","getSegDefaultTextColor","eventToSegs","eventToSpans","eventToRange","eventRangeToSpans","allEvents","segSliceFunc","ranges","invertRanges","eventRangeToSegs","spans","eventSpanToSegs","eventStartMS","eventDurationMS","viewStart","viewEnd","inverseRanges","sortEventSegs","compareEventSegs","eventOrderSpecs","DayTableMixin","breakOnWeeks","dayDates","dayIndices","daysPerRow","rowCnt","colCnt","colHeadFormat","updateDayTable","dayIndex","isHiddenDay","updateDayTableCols","computeColCnt","computeColHeadFormat","getCellDate","getCellDayIndex","getCellRange","getColDayIndex","getDateDayIndex","dayOffset","sliceRangeByRow","rowFirst","rowLast","segFirst","segLast","normalRange","computeDayRange","rangeFirst","rangeLast","firstRowDayIndex","lastRowDayIndex","sliceRangeByDay","renderHeadHtml","widgetHeaderClass","renderHeadTrHtml","renderHeadIntroHtml","renderIntroHtml","renderHeadDateCellsHtml","htmls","renderHeadDateCellHtml","colspan","otherAttrs","buildGotoAnchorHtml","forceOff","renderBgTrHtml","renderBgIntroHtml","renderBgCellsHtml","renderBgCellHtml","widgetContentClass","bookendCells","trEl","introHtml","DayGrid","numbersVisible","bottomCoordPadding","cellEls","helperEls","rowCoordCache","colCoordCache","isRigid","renderDayRowHtml","getCellEl","removeSegPopover","renderNumberTrHtml","renderNumberIntroHtml","renderNumberCellsHtml","renderNumberCellHtml","weekCalcFirstDoW","dayNumbersVisible","cellWeekNumbersVisible","getCellHit","rowStructs","helperNodes","renderSegRows","skeletonTop","rowEl","skeletonEl","tbodyEl","renderFillRow","startCol","endCol","popoverSegs","allDaySegs","rowStruct","segRows","groupSegRows","renderSegRow","timeText","titleHtml","isResizableFromStart","isEventResizableFromStart","isResizableFromEnd","isEventResizableFromEnd","skinCss","timeHtml","rowSegs","emptyCellsUntil","loneCellMatrix","cellMatrix","levelSegs","segLevels","buildSegLevels","levelCnt","segMatrix","segPopover","limitRows","levelLimit","rowLevelLimit","unlimitRow","computeRowLevelLimit","limitRow","iterInnerHeights","childNode","trHeight","rowHeight","trEls","segsBelow","getCellSegs","moreLink","renderMoreLink","moreWrap","moreNodes","limitedNodes","totalSegsBelow","colSegsBelow","rowspan","segMoreNodes","moreTd","moreEls","limitedEls","hiddenSegs","getMoreLinkText","clickOption","moreEl","dayEl","allSegs","reslicedAllSegs","resliceDaySegs","reslicedHiddenSegs","showSegPopover","topEl","renderSegPopoverContent","isTheme","segContainer","dayDate","dayStart","dayEnd","dayRange","startLevel","TimeGrid","slotDuration","snapDuration","snapsPerSlot","minTime","maxTime","labelFormat","labelInterval","colEls","slatContainerEl","slatEls","nowIndicatorEls","slatCoordCache","processOptions","renderHtml","renderContentSkeleton","renderSlatRowHtml","slotDate","isLabeled","axisHtml","slotTime","axisStyleAttr","computeLabelInterval","slotsPerLabel","AGENDA_STOCK_SUB_DURATIONS","colIndex","slatIndex","slatTop","slatHeight","partial","localSnapIndex","snapIndex","snapTop","snapBottom","snap","computeSnapTime","sliceRangeByTimes","isResize","updateSegVerticals","fgSegs","bgSegs","businessSegs","getTotalSlatHeight","computeDateTop","startOfDayDate","computeTimeTop","slatRemainder","slatCoverage","renderHelperSegs","unrenderHelperSegs","renderBusinessSegs","unrenderBusinessSegs","colContainerEls","renderHighlightSegs","unrenderHighlightSegs","fgContainerEls","bgContainerEls","helperContainerEls","highlightContainerEls","businessContainerEls","helperSegs","highlightSegs","cellHtml","renderFgSegsIntoContainers","unrenderNamedSegs","attachSegsByCol","groupSegsByCol","segsByCol","containerEls","updateFgSegCoords","fullTimeText","startTimeText","isMultiDayEvent","computeSegVerticals","assignSegVerticals","generateSegVerticalCss","computeFgSegHorizontals","assignFgSegHorizontals","level0","computeFgSegForwardBack","seriesBackwardPressure","seriesBackwardCoord","forwardCoord","sortForwardSegs","backwardCoord","compareForwardSegs","generateFgSegHorizontalCss","shouldOverlap","View","isDateRendered","dateRenderQueue","isEventsBound","isEventsSet","isEventsRendered","eventRenderQueue","intervalUnit","nextDayThreshold","isHiddenDayHash","isNowIndicatorRendered","initialNowDate","initialNowQueriedMs","nowIndicatorTimeoutID","nowIndicatorIntervalID","initThemingProps","initHiddenDays","rejectOn","cleanup","computeRange","skipHiddenDays","computeTitle","computeTitleFormat","getAllDayHtml","finalOptions","unsetDate","unrenderSkeleton","isReset","handleDate","handleDateUnset","unbindEvents","requestDateRender","bindEvents","requestDateUnrender","executeDateRender","executeDateUnrender","captureScroll","freezeHeight","startNowIndicator","thawHeight","onDateRender","requestEventsUnrender","stopNowIndicator","triggerUnrender","triggerRender","processUnselect","handleDocumentMousedown","updateNowIndicator","updateHeight","updateWidth","setHeight","isAuto","capturedScroll","capturedScrollDepth","isInitial","isComputed","isRoot","discardScroll","computeInitialScroll","hardSetScroll","setScroll","setEvents","unsetEvents","isEventSet","handleEvents","handleEventsUnset","whenEventsSet","getCurrentEvents","requestEventsRender","executeEventsRender","executeEventsUnrender","requestCurrentEventsRender","onEventsRender","onBeforeEventsUnrender","destroyEvents","renderedEventSegEach","custom","isEventStartEditable","startEditable","isEventGenerallyEditable","mutateResult","mutateSeg","triggerEventDrop","triggerExternalDrop","durationEditable","triggerEventResize","triggerSelect","destroySelection","unselectEvent","processRangeUnselect","processEventUnselect","hiddenDays","dayCnt","isExclusive","endTimeMS","startDay","endDay","Scroller","renderEl","applyOverflow","overflow-x","overflow-y","lockOverflow","getScrollTop","setScrollTop","getClientWidth","getClientHeight","dirDefaults","localeDefaults","loadingLevel","localeOptionHash","rtlDefaults","buildViewSpec","viewTypes","singleUnit","requestedViewType","viewOverrides","specChain","defaultsChain","overridesChain","buildViewSpecOptions","buildViewSpecButtonText","queryButtonText","buttonTextKey","isValidViewType","handlerFunc","optionNames","handlerObj","registerOptionHandlerObj","triggerOptionHandlerObj","handlerObjs","optionValues","titleRangeSeparator","monthYearFormat","weekends","weekNumbers","weekNumberTitle","scrollTime","allDayText","dragOpacity","dragRevertDuration","dragScroll","unselectAuto","dropAccept","eventOrder","eventLimit","eventLimitText","eventLimitClick","dayPopoverFormat","longPressDelay","englishDefaults","datepickerLocale","dpLocaleCode","dpOptions","fcOptions","weekHeader","dpComputableOptions","regional","en","setDefaults","newFcOptions","momOptions","momComputableOptions","currentText","showMonthAfterYear","yearSuffix","dayOfMonthFormat","mediumTimeFormat","smallTimeFormat","extraSmallTimeFormat","hourFormat","noMeridiemTimeFormat","smallDayDateFormat","weekFormat","smallWeekFormat","spanContainsSpan","outerSpan","innerSpan","eventStart","getPeerEvents","otherEvent","peerEvents","constraint","eventConstraint","overlap","eventOverlap","isSpanAllowed","eventAllow","eventSpan","selectConstraint","selectOverlap","selectAllow","constraintEvents","anyContainment","peerEvent","peerOverlap","constraintToEvents","eventIntersectsRange","constraintInput","getCurrentBusinessHourEvents","expandBusinessHourEvents","ignoreNoDow","BasicView","dayGridClass","dayGrid","colWeekNumbersVisible","weekNumberWidth","headContainerEl","headRowEl","instantiateDayGrid","subclass","basicDayGridMethods","renderSkeletonHtml","renderHead","dayGridContainerEl","dayGridEl","hasRigidRows","weekNumberStyleAttr","totalHeight","scrollerHeight","computeScrollerHeight","setGridHeight","weekStart","MonthView","isFixedWeeks","basic","basicDay","basicWeek","fixedWeekCount","AgendaView","timeGridClass","timeGrid","axisWidth","noScrollRowEls","bottomRuleEl","instantiateTimeGrid","agendaTimeGridMethods","agendaDayGridMethods","timeGridWrapEl","timeGridEl","AGENDA_ALL_DAY_EVENT_LIMIT","timedSegs","dayEvents","timedEvents","daySegs","weekText","agenda","allDaySlot","slotEventOverlap","agendaDay","agendaWeek","ListView","ListViewGrid","renderSegList","renderEmptyMessage","segsByDay","groupSegsByDay","dayHeaderHtml","mainFormat","altFormat","bgColor","listDayFormat","noEventsMessage","listDay","listWeek","listDayAltFormat","listMonth","listYear","validate","debug","validator","onsubmit","validateDelegate","submitHandler","submitButton","cancelSubmit","currentForm","pendingRequest","formSubmitted","focusInvalid","valid","removeAttrs","rules","command","staticRules","existingRules","normalizeRule","messages","normalizeRules","classRules","attributeRules","dataRules","required","blank","filled","unchecked","errorClass","validClass","errorElement","errorContainer","errorLabelContainer","ignoreTitle","onfocusin","lastActive","focusCleanup","blockFocusCleanup","unhighlight","hideThese","errorsFor","onfocusout","checkable","submitted","optional","onkeyup","elementValue","lastElement","onclick","highlight","findByName","email","dateISO","digits","creditcard","equalTo","maxlength","minlength","rangelength","autoCreateRanges","labelContainer","errorContext","containers","valueCache","pending","invalidHandler","checkForm","errorMap","showErrors","prepareForm","currentElements","cleanElement","clean","checkElement","validationTargetFor","prepareElement","numberOfInvalids","toHide","errors","errorList","message","successList","defaultShowErrors","resetForm","hideErrors","objectLength","addWrapper","findLastActive","rulesCache","toShow","validity","badInput","rule","rulesCount","dependencyMismatch","parameters","formatAndAdd","customDataMessage","customMessage","findDefined","defaultMessage","theregex","toToggle","showLabel","validElements","invalidElements","place","group","errorID","elementID","idOrName","describedBy","errorPlacement","testgroup","describer","getLength","depend","dependTypes","boolean","function","startRequest","stopRequest","previousValue","classRuleSettings","addClassRules","depends","keepRule","parameter","transformed","addMethod","cDigit","nCheck","nDigit","bEven","originalMessage","mode","port","pendingRequests","setValidationValues","ruleName","splitAndTrim","escapeAttributeValue","getModelPrefix","fieldName","appendModelPrefix","onError","inputElement","replaceAttrValue","onErrors","onSuccess","onReset","$form","validationInfo","data_validation","onResetProxy","defaultOptions","$jQval","unobtrusive","execInContext","attachValidation","adapters","parseElement","skipAttach","valInfo","paramValues","adapt","__dummy__","$selector","$forms","adapterName","addBool","addMinMax","minRuleName","maxRuleName","minMaxRuleName","minAttribute","maxAttribute","addSingleVal","attribute","nonalphamin","extension","fullOtherName","additionalfields","paramName","forms","relativeTimeWithPlural","relativeTimeWithMutation","mutation","specialMutationForYears","lastNumber","softMutation","mutationTable","translate","plural$1","translate$1","processRelativeTime","processRelativeTime$1","processRelativeTime$2","translate$2","verbalNumber","numbersFuture","numbersPast","translate$3","translate$4","weekEndings","plural$2","translate$5","processRelativeTime$3","processFutureTime","eifelerRegelAppliesToNumber","processPastTime","lastDigit","firstDigit","translateSeconds","translateSingular","translate$6","format$1","relativeTimeWithPlural$1","units$1","relativeTimeWithSingular","relativeSeconds","relativeTimeMr","plural$3","translate$7","relativeTimeWithPlural$2","plural$4","relativeTimeWithPlural$3","plural$5","translate$8","processRelativeTime$4","translateFuture","translatePast","translate$9","numberNoun","numberAsNoun","hundred","ten","numbersNouns","processRelativeTime$5","plural$6","relativeTimeWithPlural$4","weekdaysCaseReplace","nominative","accusative","genitive","nounCase","processHoursFunction","weekdaysParseExact","symbolMap","1","2","3","4","5","6","7","8","9","0","pluralForm","plurals","pluralize","months$1","symbolMap$1","numberMap","١","٢","٣","٤","٥","٦","٧","٨","٩","٠","symbolMap$2","numberMap$1","pluralForm$1","plurals$1","pluralize$1","months$2","suffixes","70","80","20","50","100","10","30","60","90","standalone","last2Digits","symbolMap$3","numberMap$2","১","২","৩","৪","৫","৬","৭","৮","৯","০","symbolMap$4","numberMap$3","༡","༢","༣","༤","༥","༦","༧","༨","༩","༠","monthsParseExact","months$3","shortMonthsParse","longMonthsParse","affix","lookup","months$4","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","monthsShortDot","monthsShort$1","monthsShortDot$1","monthsShort$2","ll","lll","llll","symbolMap$5","numberMap$4","۱","۲","۳","۴","۵","۶","۷","۸","۹","۰","monthsShortWithDots","monthsShortWithoutDots","months$5","monthsShort$3","weekdays$1","symbolMap$6","numberMap$5","१","२","३","४","५","६","७","८","९","०","suffixes$1","40","ss","isUpper","suffixes$2","translator","words","correctGrammaticalCase","wordKey","lastWeekDays","monthsStrictRegex","monthsShortStrictRegex","symbolMap$7","numberMap$6","symbolMap$8","numberMap$7","၁","၂","၃","၄","၅","၆","၇","၈","၉","၀","symbolMap$9","numberMap$8","monthsShortWithDots$1","monthsShortWithoutDots$1","monthsRegex$1","monthsShortWithDots$2","monthsShortWithoutDots$2","monthsParse$1","monthsRegex$2","symbolMap$10","numberMap$9","੧","੨","੩","੪","੫","੬","੭","੮","੯","੦","monthsNominative","monthsSubjective","monthsParse$2","months$6","monthsShort$4","translator$1","translator$2","symbolMap$11","numberMap$10","௧","௨","௩","௪","௫","௬","௭","௮","௯","௦","suffixes$3","hm","startOfWeek","da","clsName","navFnc","navStep","up","38","down","37","39","tab","27","13","pageUp","33","pageDown","34","16","17","space","32","84","delete","46","tz","timeZone","useStrict","TypeError","z","A","B","icons","calendarWeeks","C","tooltips","incrementHour","data-time-component","pickHour","decrementHour","incrementMinute","pickMinute","decrementMinute","incrementSecond","pickSecond","decrementSecond","data-action","togglePeriod","showTodayButton","sideBySide","selectTime","showClear","showClose","F","collapse","inline","toolbarPlacement","G","dateOptions","H","widgetPositioning","horizontal","widgetParent","I","oldDate","J","viewDate","K","disabledDates","N","enabledDates","O","disabledHours","P","enabledHours","Q","minDate","maxDate","daysOfWeekDisabled","disabledTimeIntervals","R","S","selectYear","prevDecade","selectDecade","nextDecade","U","prevCentury","nextCentury","V","prevMonth","selectMonth","nextMonth","dayViewHeaderFormat","X","stepping","Z","keepInvalid","aa","transitioning","ba","ca","pickerSwitch","selectDay","keepOpen","incrementHours","incrementMinutes","incrementSeconds","decrementHours","decrementMinutes","decrementSeconds","togglePicker","showPicker","showHours","showMinutes","showSeconds","selectHour","selectMinute","selectSecond","ea","ignoreReadonly","ga","useCurrent","focusOnShow","fa","parseInputDate","ha","keyBinds","ia","ja","ka","keydown","keyup","allowInputToggle","la","ma","na","oa","extraFormats","enable","viewMode","getMoment","datepickerInput","datetimepicker","control up","control down","control space","req","defined","Pikaday","hasMoment","hasEventListeners","sto","addEvent","fireEvent","createEvent","initEvent","dispatchEvent","createEventObject","cn","setToStartOfDay","setHours","compareDates","overwrite","hasProp","adjustCalendar","bound","setDefaultDate","yearRange","showWeekNumber","minYear","maxYear","minMonth","maxMonth","numberOfMonths","mainCalendar","i18n","previousMonth","onOpen","onClose","onDraw","renderDayName","renderDay","isToday","isDisabled","isEmpty","renderWeek","onejan","weekNum","renderRow","renderBody","renderTitle","refYear","monthHtml","yearHtml","_o","isMinYear","isMaxYear","renderTable","_onMouseDown","_v","_c","_onChange","gotoMonth","gotoYear","_onInputChange","firedBy","_onInputFocus","_onInputClick","_onInputBlur","_b","_onClick","pEl","onchange","defDate","nom","fallback","toDateString","setMoment","preventOnSelect","newCalendar","calendars","firstVisibleDate","lastVisibleDate","visibleDate","adjustCalendars","gotoToday","setMinDate","setMaxDate","_y","_m","adjustPosition","clientRect","viewportWidth","viewportHeight","offsetLeft","offsetTop","isVisible"],"mappings":"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","file":"vendor.min.js","sourcesContent":["/*!\n * jQuery JavaScript Library v1.11.3\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2015-04-28T16:19Z\n */\n\n(function( global, factory ) {\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// For CommonJS and CommonJS-like environments where a proper window is present,\n\t\t// execute the factory and get jQuery\n\t\t// For environments that do not inherently posses a window with a document\n\t\t// (such as Node.js), expose a jQuery-making factory as module.exports\n\t\t// This accentuates the need for the creation of a real window\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n}(typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Can't do this because several apps including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n// Support: Firefox 18+\n//\n\nvar deletedIds = [];\n\nvar slice = deletedIds.slice;\n\nvar concat = deletedIds.concat;\n\nvar push = deletedIds.push;\n\nvar indexOf = deletedIds.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar support = {};\n\n\n\nvar\n\tversion = \"1.11.3\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android<4.1, IE<9\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num != null ?\n\n\t\t\t// Return just the one element from the set\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t// Return all the elements in a clean array\n\t\t\tslice.call( this );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\t\tret.context = this.context;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: deletedIds.sort,\n\tsplice: deletedIds.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar src, copyIsArray, copy, name, options, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren't supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === \"array\";\n\t},\n\n\tisWindow: function( obj ) {\n\t\t/* jshint eqeqeq: false */\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\n\t\treturn !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar key;\n\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don't pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call(obj, \"constructor\") &&\n\t\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Handle iteration over inherited properties before own properties.\n\t\tif ( support.ownLast ) {\n\t\t\tfor ( key in obj ) {\n\t\t\t\treturn hasOwn.call( obj, key );\n\t\t\t}\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call(obj) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && jQuery.trim( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ \"eval\" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( obj, callback, args ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = obj.length,\n\t\t\tisArray = isArraylike( obj );\n\n\t\tif ( args ) {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android<4.1, IE<9\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArraylike( Object(arr) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\tvar len;\n\n\t\tif ( arr ) {\n\t\t\tif ( indexOf ) {\n\t\t\t\treturn indexOf.call( arr, elem, i );\n\t\t\t}\n\n\t\t\tlen = arr.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\twhile ( j < len ) {\n\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)\n\t\tif ( len !== len ) {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tisArray = isArraylike( elems ),\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar args, proxy, tmp;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: function() {\n\t\treturn +( new Date() );\n\t},\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n});\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nfunction isArraylike( obj ) {\n\n\t// Support: iOS 8.2 (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = \"length\" in obj && obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\tif ( obj.nodeType === 1 && length ) {\n\t\treturn true;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.2.0-pre\n * http://sizzlejs.com/\n *\n * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2014-12-16\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// General-purpose constants\n\tMAX_NEGATIVE = 1 << 31,\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// http://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\t// http://www.w3.org/TR/css3-syntax/#characters\n\tcharacterEncoding = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Loosely modeled on CSS identifier characters\n\t// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = characterEncoding.replace( \"w\", \"w#\" ),\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + characterEncoding + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + characterEncoding + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + characterEncoding + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + characterEncoding + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + characterEncoding.replace( \"w\", \"w*\" ) + \")\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\trescape = /'|\\\\/g,\n\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t};\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar match, elem, m, nodeType,\n\t\t// QSA vars\n\t\ti, groups, old, nid, newContext, newSelector;\n\n\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\n\tcontext = context || document;\n\tresults = results || [];\n\tnodeType = context.nodeType;\n\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\tif ( !seed && documentIsHTML ) {\n\n\t\t// Try to shortcut find operations when possible (e.g., not under DocumentFragment)\n\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\tif ( (m = match[1]) ) {\n\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\telem = context.getElementById( m );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document (jQuery #6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Context is not a document\n\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\treturn results;\n\n\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\n\t\t// QSA path\n\t\tif ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\t\t\tnid = old = expando;\n\t\t\tnewContext = context;\n\t\t\tnewSelector = nodeType !== 1 && selector;\n\n\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t// IE 8 doesn't work on object elements\n\t\t\tif ( nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\tif ( (old = context.getAttribute(\"id\")) ) {\n\t\t\t\t\tnid = old.replace( rescape, \"\\\\$&\" );\n\t\t\t\t} else {\n\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t}\n\t\t\t\tnid = \"[id='\" + nid + \"'] \";\n\n\t\t\t\ti = groups.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tgroups[i] = nid + toSelector( groups[i] );\n\t\t\t\t}\n\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;\n\t\t\t\tnewSelector = groups.join(\",\");\n\t\t\t}\n\n\t\t\tif ( newSelector ) {\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch(qsaError) {\n\t\t\t\t} finally {\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.removeAttribute(\"id\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {Function(string, Object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = attrs.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, parent,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// If no document and documentElement is available, return\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Set our document\n\tdocument = doc;\n\tdocElem = doc.documentElement;\n\tparent = doc.defaultView;\n\n\t// Support: IE>8\n\t// If iframe document is assigned to \"document\" variable and if iframe has been reloaded,\n\t// IE will throw \"permission denied\" error when accessing \"document\" variable, see jQuery #13936\n\t// IE6-8 do not support the defaultView property so parent will be undefined\n\tif ( parent && parent !== parent.top ) {\n\t\t// IE11 does not have attachEvent, so all must suffer\n\t\tif ( parent.addEventListener ) {\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\n\t\t} else if ( parent.attachEvent ) {\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Support tests\n\t---------------------------------------------------------------------- */\n\tdocumentIsHTML = !isXML( doc );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( div ) {\n\t\tdiv.appendChild( doc.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( doc.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !doc.getElementsByName || !doc.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [ m ] : [];\n\t\t\t}\n\t\t};\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( div ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = doc.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( div, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully does not implement inclusive descendent\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === doc ? -1 :\n\t\t\t\tb === doc ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn doc;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, diff, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || (parent[ expando ] = {});\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[0] === dirruns && cache[1];\n\t\t\t\t\t\t\tdiff = cache[0] === dirruns && cache[2];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {\n\t\t\t\t\t\t\tdiff = cache[1];\n\n\t\t\t\t\t\t// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\tif ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {\n\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\t\t\t\t\t\tif ( (oldCache = outerCache[ dir ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ dir ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context !== document && context;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Keep `i` a string if there are no elements so `matchedCount` will be \"00\" below\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\tmatchedCount += i;\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is no seed and only one group\n\tif ( match.length === 1 ) {\n\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\trsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( div ) {\n\treturn div.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.pseudos;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = (/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/);\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t});\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t});\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;\n\t});\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t}));\n};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tret = [],\n\t\t\tself = this,\n\t\t\tlen = self.length;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}) );\n\t\t}\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], false) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], true) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n});\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// Use the correct document accordingly with window argument (sandbox)\n\tdocument = window.document,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\n\t\t\t\t\t// scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[1],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn typeof rootjQuery.ready !== \"undefined\" ?\n\t\t\t\trootjQuery.ready( selector ) :\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.extend({\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\njQuery.fn.extend({\n\thas: function( target ) {\n\t\tvar i,\n\t\t\ttargets = jQuery( target, this ),\n\t\t\tlen = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && (pos ?\n\t\t\t\t\tpos.index(cur) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector(cur, selectors)) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.unique(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter(selector)\n\t\t);\n\t}\n});\n\nfunction sibling( cur, dir ) {\n\tdo {\n\t\tcur = cur[ dir ];\n\t} while ( cur && cur.nodeType !== 1 );\n\n\treturn cur;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, \"iframe\" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tret = jQuery.unique( ret );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tret = ret.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\nvar rnotwhite = (/\\S+/g);\n\n\n\n// String to Object options format cache\nvar optionsCache = {};\n\n// Convert String-formatted options into Object-formatted ones and store in cache\nfunction createOptions( options ) {\n\tvar object = optionsCache[ options ] = {};\n\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t});\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\t( optionsCache[ options ] || createOptions( options ) ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\t\t// Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = !options.once && [],\n\t\t// Fire callbacks\n\t\tfire = function( data ) {\n\t\t\tmemory = options.memory && data;\n\t\t\tfired = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfiring = true;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n\t\t\t\t\tmemory = false; // To prevent further calls using add\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( stack.length ) {\n\t\t\t\t\t\tfire( stack.shift() );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t} else {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\t// First, we save the current length\n\t\t\t\t\tvar start = list.length;\n\t\t\t\t\t(function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tvar type = jQuery.type( arg );\n\t\t\t\t\t\t\tif ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && type !== \"string\" ) {\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t})( arguments );\n\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away\n\t\t\t\t\t} else if ( memory ) {\n\t\t\t\t\t\tfiringStart = start;\n\t\t\t\t\t\tfire( memory );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\t\tvar index;\n\t\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\t\tlist.splice( index, 1 );\n\t\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\tfiringLength = 0;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( list && ( !fired || stack ) ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tstack.push( args );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfire( args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks(\"memory\") ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[1] ](function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject )\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t}).promise();\n\t\t\t\t},\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[1] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(function() {\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[0] ] = function() {\n\t\t\t\tdeferred[ tuple[0] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\tdeferred[ tuple[0] + \"With\" ] = list.fireWith;\n\t\t});\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\n\t\t\t\t\t} else if ( !(--remaining) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject )\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n});\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend({\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( !document.body ) {\n\t\t\treturn setTimeout( jQuery.ready );\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n});\n\n/**\n * Clean-up method for dom ready events\n */\nfunction detach() {\n\tif ( document.addEventListener ) {\n\t\tdocument.removeEventListener( \"DOMContentLoaded\", completed, false );\n\t\twindow.removeEventListener( \"load\", completed, false );\n\n\t} else {\n\t\tdocument.detachEvent( \"onreadystatechange\", completed );\n\t\twindow.detachEvent( \"onload\", completed );\n\t}\n}\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\t// readyState === \"complete\" is good enough for us to call the dom ready in oldIE\n\tif ( document.addEventListener || event.type === \"load\" || document.readyState === \"complete\" ) {\n\t\tdetach();\n\t\tjQuery.ready();\n\t}\n}\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n\t\t// we once tried to use readyState \"interactive\" here, but it caused issues like the one\n\t\t// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\tsetTimeout( jQuery.ready );\n\n\t\t// Standards-based browsers support DOMContentLoaded\n\t\t} else if ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed, false );\n\n\t\t// If IE event model is used\n\t\t} else {\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( \"onreadystatechange\", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( \"onload\", completed );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar top = false;\n\n\t\t\ttry {\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( top && top.doScroll ) {\n\t\t\t\t(function doScrollCheck() {\n\t\t\t\t\tif ( !jQuery.isReady ) {\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\t\t\t\ttop.doScroll(\"left\");\n\t\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t\treturn setTimeout( doScrollCheck, 50 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// detach all dom ready events\n\t\t\t\t\t\tdetach();\n\n\t\t\t\t\t\t// and execute any waiting functions\n\t\t\t\t\t\tjQuery.ready();\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t}\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n\nvar strundefined = typeof undefined;\n\n\n\n// Support: IE<9\n// Iteration over object's inherited properties before its own\nvar i;\nfor ( i in jQuery( support ) ) {\n\tbreak;\n}\nsupport.ownLast = i !== \"0\";\n\n// Note: most support tests are defined in their respective modules.\n// false until the test is run\nsupport.inlineBlockNeedsLayout = false;\n\n// Execute ASAP in case we need to set body.style.zoom\njQuery(function() {\n\t// Minified: var a,b,c,d\n\tvar val, div, body, container;\n\n\tbody = document.getElementsByTagName( \"body\" )[ 0 ];\n\tif ( !body || !body.style ) {\n\t\t// Return for frameset docs that don't have a body\n\t\treturn;\n\t}\n\n\t// Setup\n\tdiv = document.createElement( \"div\" );\n\tcontainer = document.createElement( \"div\" );\n\tcontainer.style.cssText = \"position:absolute;border:0;width:0;height:0;top:0;left:-9999px\";\n\tbody.appendChild( container ).appendChild( div );\n\n\tif ( typeof div.style.zoom !== strundefined ) {\n\t\t// Support: IE<8\n\t\t// Check if natively block-level elements act like inline-block\n\t\t// elements when setting their display to 'inline' and giving\n\t\t// them layout\n\t\tdiv.style.cssText = \"display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1\";\n\n\t\tsupport.inlineBlockNeedsLayout = val = div.offsetWidth === 3;\n\t\tif ( val ) {\n\t\t\t// Prevent IE 6 from affecting layout for positioned elements #11048\n\t\t\t// Prevent IE from shrinking the body in IE 7 mode #12869\n\t\t\t// Support: IE<8\n\t\t\tbody.style.zoom = 1;\n\t\t}\n\t}\n\n\tbody.removeChild( container );\n});\n\n\n\n\n(function() {\n\tvar div = document.createElement( \"div\" );\n\n\t// Execute the test only if not already executed in another module.\n\tif (support.deleteExpando == null) {\n\t\t// Support: IE<9\n\t\tsupport.deleteExpando = true;\n\t\ttry {\n\t\t\tdelete div.test;\n\t\t} catch( e ) {\n\t\t\tsupport.deleteExpando = false;\n\t\t}\n\t}\n\n\t// Null elements to avoid leaks in IE.\n\tdiv = null;\n})();\n\n\n/**\n * Determines whether an object can have data\n */\njQuery.acceptData = function( elem ) {\n\tvar noData = jQuery.noData[ (elem.nodeName + \" \").toLowerCase() ],\n\t\tnodeType = +elem.nodeType || 1;\n\n\t// Do not set data on non-element DOM nodes because it will not be cleared (#8335).\n\treturn nodeType !== 1 && nodeType !== 9 ?\n\t\tfalse :\n\n\t\t// Nodes accept data unless otherwise specified; rejection can be conditional\n\t\t!noData || noData !== true && elem.getAttribute(\"classid\") === noData;\n};\n\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\n\t\tvar name = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tvar name;\n\tfor ( name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === \"data\" && jQuery.isEmptyObject( obj[name] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== \"toJSON\" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nfunction internalData( elem, name, data, pvt /* Internal Use Only */ ) {\n\tif ( !jQuery.acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar ret, thisCache,\n\t\tinternalKey = jQuery.expando,\n\n\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t// can't GC object references properly across the DOM-JS boundary\n\t\tisNode = elem.nodeType,\n\n\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t// attached directly to the object so GC can occur automatically\n\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\n\n\t// Avoid doing any more work than we need to when trying to get data on an\n\t// object that has no data at all\n\tif ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === \"string\" ) {\n\t\treturn;\n\t}\n\n\tif ( !id ) {\n\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t// ends up in the global cache\n\t\tif ( isNode ) {\n\t\t\tid = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++;\n\t\t} else {\n\t\t\tid = internalKey;\n\t\t}\n\t}\n\n\tif ( !cache[ id ] ) {\n\t\t// Avoid exposing jQuery metadata on plain JS objects when the object\n\t\t// is serialized using JSON.stringify\n\t\tcache[ id ] = isNode ? {} : { toJSON: jQuery.noop };\n\t}\n\n\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t// shallow copied over onto the existing cache\n\tif ( typeof name === \"object\" || typeof name === \"function\" ) {\n\t\tif ( pvt ) {\n\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t} else {\n\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t}\n\t}\n\n\tthisCache = cache[ id ];\n\n\t// jQuery data() is stored in a separate object inside the object's internal data\n\t// cache in order to avoid key collisions between internal data and user-defined\n\t// data.\n\tif ( !pvt ) {\n\t\tif ( !thisCache.data ) {\n\t\t\tthisCache.data = {};\n\t\t}\n\n\t\tthisCache = thisCache.data;\n\t}\n\n\tif ( data !== undefined ) {\n\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t}\n\n\t// Check for both converted-to-camel and non-converted data property names\n\t// If a data property was specified\n\tif ( typeof name === \"string\" ) {\n\n\t\t// First Try to find as-is property data\n\t\tret = thisCache[ name ];\n\n\t\t// Test for null|undefined property data\n\t\tif ( ret == null ) {\n\n\t\t\t// Try to find the camelCased property\n\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t}\n\t} else {\n\t\tret = thisCache;\n\t}\n\n\treturn ret;\n}\n\nfunction internalRemoveData( elem, name, pvt ) {\n\tif ( !jQuery.acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar thisCache, i,\n\t\tisNode = elem.nodeType,\n\n\t\t// See jQuery.data for more information\n\t\tcache = isNode ? jQuery.cache : elem,\n\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t// If there is already no cache entry for this object, there is no\n\t// purpose in continuing\n\tif ( !cache[ id ] ) {\n\t\treturn;\n\t}\n\n\tif ( name ) {\n\n\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\tif ( thisCache ) {\n\n\t\t\t// Support array or space separated string names for data keys\n\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\tname = [ name ];\n\t\t\t\t} else {\n\n\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tname = name.split(\" \");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = name.concat( jQuery.map( name, jQuery.camelCase ) );\n\t\t\t}\n\n\t\t\ti = name.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t}\n\n\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t// and let the cache object itself get destroyed\n\t\t\tif ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\t// See jQuery.data for more information\n\tif ( !pvt ) {\n\t\tdelete cache[ id ].data;\n\n\t\t// Don't destroy the parent cache unless the internal data object\n\t\t// had been the only thing left in it\n\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Destroy the cache\n\tif ( isNode ) {\n\t\tjQuery.cleanData( [ elem ], true );\n\n\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\n\t/* jshint eqeqeq: false */\n\t} else if ( support.deleteExpando || cache != cache.window ) {\n\t\t/* jshint eqeqeq: true */\n\t\tdelete cache[ id ];\n\n\t// When all else fails, null\n\t} else {\n\t\tcache[ id ] = null;\n\t}\n}\n\njQuery.extend({\n\tcache: {},\n\n\t// The following elements (space-suffixed to avoid Object.prototype collisions)\n\t// throw uncatchable exceptions if you attempt to set expando properties\n\tnoData: {\n\t\t\"applet \": true,\n\t\t\"embed \": true,\n\t\t// ...but Flash objects (which have this classid) *can* handle expandos\n\t\t\"object \": \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name );\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data, true );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name, true );\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[0],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Special expections of .data basically thwart jQuery.access,\n\t\t// so implement the relevant behavior ourselves\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, \"parsedAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE11+\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice(5) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjQuery._data( elem, \"parsedAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\treturn arguments.length > 1 ?\n\n\t\t\t// Sets one value\n\t\t\tthis.each(function() {\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t}) :\n\n\t\t\t// Gets one value\n\t\t\t// Try to fetch any internally stored data first\n\t\t\telem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined;\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\n\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = jQuery._data( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray(data) ) {\n\t\t\t\t\tqueue = jQuery._data( elem, type, jQuery.makeArray(data) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// not intended for public consumption - generates a queueHooks object, or returns the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\n\t\t\tempty: jQuery.Callbacks(\"once memory\").add(function() {\n\t\t\t\tjQuery._removeData( elem, type + \"queue\" );\n\t\t\t\tjQuery._removeData( elem, key );\n\t\t\t})\n\t\t});\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = jQuery._data( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n});\nvar pnum = (/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/).source;\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHidden = function( elem, el ) {\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" || !jQuery.contains( elem.ownerDocument, elem );\n\t};\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlength = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\tjQuery.access( elems, fn, i, key[i], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tfn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n};\nvar rcheckableType = (/^(?:checkbox|radio)$/i);\n\n\n\n(function() {\n\t// Minified: var a,b,c\n\tvar input = document.createElement( \"input\" ),\n\t\tdiv = document.createElement( \"div\" ),\n\t\tfragment = document.createDocumentFragment();\n\n\t// Setup\n\tdiv.innerHTML = \"
a\";\n\n\t// IE strips leading whitespace when .innerHTML is used\n\tsupport.leadingWhitespace = div.firstChild.nodeType === 3;\n\n\t// Make sure that tbody elements aren't automatically inserted\n\t// IE will insert them into empty tables\n\tsupport.tbody = !div.getElementsByTagName( \"tbody\" ).length;\n\n\t// Make sure that link elements get serialized correctly by innerHTML\n\t// This requires a wrapper element in IE\n\tsupport.htmlSerialize = !!div.getElementsByTagName( \"link\" ).length;\n\n\t// Makes sure cloning an html5 element does not cause problems\n\t// Where outerHTML is undefined, this still works\n\tsupport.html5Clone =\n\t\tdocument.createElement( \"nav\" ).cloneNode( true ).outerHTML !== \"<:nav>\";\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tinput.type = \"checkbox\";\n\tinput.checked = true;\n\tfragment.appendChild( input );\n\tsupport.appendChecked = input.checked;\n\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\t// Support: IE6-IE11+\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tfragment.appendChild( div );\n\tdiv.innerHTML = \"\";\n\n\t// Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3\n\t// old WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<9\n\t// Opera does not clone events (and typeof div.attachEvent === undefined).\n\t// IE9-10 clones events bound via attachEvent, but they don't trigger with .click()\n\tsupport.noCloneEvent = true;\n\tif ( div.attachEvent ) {\n\t\tdiv.attachEvent( \"onclick\", function() {\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\n\t\tdiv.cloneNode( true ).click();\n\t}\n\n\t// Execute the test only if not already executed in another module.\n\tif (support.deleteExpando == null) {\n\t\t// Support: IE<9\n\t\tsupport.deleteExpando = true;\n\t\ttry {\n\t\t\tdelete div.test;\n\t\t} catch( e ) {\n\t\t\tsupport.deleteExpando = false;\n\t\t}\n\t}\n})();\n\n\n(function() {\n\tvar i, eventName,\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event)\n\tfor ( i in { submit: true, change: true, focusin: true }) {\n\t\teventName = \"on\" + i;\n\n\t\tif ( !(support[ i + \"Bubbles\" ] = eventName in window) ) {\n\t\t\t// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)\n\t\t\tdiv.setAttribute( eventName, \"t\" );\n\t\t\tsupport[ i + \"Bubbles\" ] = div.attributes[ eventName ].expando === false;\n\t\t}\n\t}\n\n\t// Null elements to avoid leaks in IE.\n\tdiv = null;\n})();\n\n\nvar rformElems = /^(?:input|select|textarea)$/i,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)$/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\t\tvar tmp, events, t, handleObjIn,\n\t\t\tspecial, eventHandle, handleObj,\n\t\t\thandlers, type, namespaces, origType,\n\t\t\telemData = jQuery._data( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !(events = elemData.events) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !(eventHandle = elemData.handle) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== strundefined && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend({\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join(\".\")\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !(handlers = events[ type ]) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( \"on\" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\t\tvar j, handleObj, tmp,\n\t\t\torigCount, t, events,\n\t\t\tspecial, handlers, type,\n\t\t\tnamespaces, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem );\n\n\t\tif ( !elemData || !(events = elemData.events) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[2] && new RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery._removeData( elem, \"events\" );\n\t\t}\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\tvar handle, ontype, cur,\n\t\t\tbubbleType, special, tmp, i,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split(\".\") : [];\n\n\t\tcur = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf(\".\") >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf(\":\") < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join(\".\");\n\t\tevent.namespace_re = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === (elem.ownerDocument || document) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {\n\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( jQuery._data( cur, \"events\" ) || {} )[ event.type ] && jQuery._data( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && jQuery.acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&\n\t\t\t\tjQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can't use an .isFunction() check here because IE6/7 fails that test.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\ttry {\n\t\t\t\t\t\telem[ type ]();\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486,#12518)\n\t\t\t\t\t\t// only reproducible on winXP IE8 native, not IE9 in IE8 mode\n\t\t\t\t\t}\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, ret, handleObj, matched, j,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( jQuery._data( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or\n\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n\t\t\t\t\t\t\t.apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( (event.result = ret) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar sel, handleObj, matches, i,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG instance trees (#13180)\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && cur.nodeType && (!event.button || event.type !== \"click\") ) {\n\n\t\t\t/* jshint eqeqeq: false */\n\t\t\tfor ( ; cur != this; cur = cur.parentNode || this ) {\n\t\t\t\t/* jshint eqeqeq: true */\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== \"click\") ) {\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) >= 0 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, handlers: matches });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Fix target property (#1925)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Support: Chrome 23+, Safari?\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// For mouse/key events, metaKey==false if it's undefined (#3368, #11328)\n\t\tevent.metaKey = !!event.metaKey;\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: \"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar body, eventDoc, doc,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tspecial: {\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.focus();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t\t// If we error on focus to hidden element (#1486, #12518),\n\t\t\t\t\t\t// let .trigger() run the handlers\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( jQuery.nodeName( this, \"input\" ) && this.type === \"checkbox\" && this.click ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true,\n\t\t\t\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tvar name = \"on\" + type;\n\n\t\tif ( elem.detachEvent ) {\n\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\n\t\t\t// detachEvent needed property on element, by name of that event, to properly expose it to GC\n\t\t\tif ( typeof elem[ name ] === strundefined ) {\n\t\t\t\telem[ name ] = null;\n\t\t\t}\n\n\t\t\telem.detachEvent( name, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !(this instanceof jQuery.Event) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\t\t\t\t// Support: IE < 9, Android < 4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If preventDefault exists, run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// Support: IE\n\t\t// Otherwise set the returnValue property of the original event to false\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// If stopPropagation exists, run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\t// Support: IE\n\t\t// Set the cancelBubble property of the original event to true\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && e.stopImmediatePropagation ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mousenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n});\n\n// IE submit delegation\nif ( !support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, \"click._submit keypress._submit\", function( e ) {\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, \"input\" ) || jQuery.nodeName( elem, \"button\" ) ? elem.form : undefined;\n\t\t\t\tif ( form && !jQuery._data( form, \"submitBubbles\" ) ) {\n\t\t\t\t\tjQuery.event.add( form, \"submit._submit\", function( event ) {\n\t\t\t\t\t\tevent._submit_bubble = true;\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( form, \"submitBubbles\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t\t// return undefined since we don't need an event listener\n\t\t},\n\n\t\tpostDispatch: function( event ) {\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submit_bubble ) {\n\t\t\t\tdelete event._submit_bubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( \"submit\", this.parentNode, event, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, \"form\" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, \"._submit\" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !support.changeBubbles ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\t\t\t\t// IE doesn't fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === \"checkbox\" || this.type === \"radio\" ) {\n\t\t\t\t\tjQuery.event.add( this, \"propertychange._change\", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === \"checked\" ) {\n\t\t\t\t\t\t\tthis._just_changed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery.event.add( this, \"click._change\", function( event ) {\n\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._just_changed = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\n\t\t\t\t\t\tjQuery.event.simulate( \"change\", this, event, true );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, \"beforeactivate._change\", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, \"changeBubbles\" ) ) {\n\t\t\t\t\tjQuery.event.add( elem, \"change._change\", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( \"change\", this.parentNode, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( elem, \"changeBubbles\", true );\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== \"radio\" && elem.type !== \"checkbox\") ) {\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, \"._change\" );\n\n\t\t\treturn !rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Create \"bubbling\" focus and blur events\nif ( !support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = jQuery._data( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tjQuery._data( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = jQuery._data( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tjQuery._removeData( doc, fix );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery._data( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar type, origFn;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) {\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t});\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[0];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n});\n\n\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( \"|\" ),\n\t\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\nvar nodeNames = \"abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|\" +\n\t\t\"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video\",\n\trinlinejQuery = / jQuery\\d+=\"(?:null|\\d+)\"/g,\n\trnoshimcache = new RegExp(\"<(?:\" + nodeNames + \")[\\\\s/>]\", \"i\"),\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /\\s*$/g,\n\n\t// We have to close these tags to support XHTML (#13200)\n\twrapMap = {\n\t\toption: [ 1, \"\" ],\n\t\tlegend: [ 1, \"
\", \"
\" ],\n\t\tarea: [ 1, \"\", \"\" ],\n\t\tparam: [ 1, \"\", \"\" ],\n\t\tthead: [ 1, \"\", \"
\" ],\n\t\ttr: [ 2, \"\", \"
\" ],\n\t\tcol: [ 2, \"\", \"
\" ],\n\t\ttd: [ 3, \"\", \"
\" ],\n\n\t\t// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,\n\t\t// unless wrapped in a div with non-breaking characters in front of it.\n\t\t_default: support.htmlSerialize ? [ 0, \"\", \"\" ] : [ 1, \"X
\", \"
\" ]\n\t},\n\tsafeFragment = createSafeFragment( document ),\n\tfragmentDiv = safeFragment.appendChild( document.createElement(\"div\") );\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\nfunction getAll( context, tag ) {\n\tvar elems, elem,\n\t\ti = 0,\n\t\tfound = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName( tag || \"*\" ) :\n\t\t\ttypeof context.querySelectorAll !== strundefined ? context.querySelectorAll( tag || \"*\" ) :\n\t\t\tundefined;\n\n\tif ( !found ) {\n\t\tfor ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( !tag || jQuery.nodeName( elem, tag ) ) {\n\t\t\t\tfound.push( elem );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( found, getAll( elem, tag ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], found ) :\n\t\tfound;\n}\n\n// Used in buildFragment, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( rcheckableType.test( elem.type ) ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n\n// Support: IE<8\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName(\"tbody\")[0] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement(\"tbody\") ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = (jQuery.find.attr( elem, \"type\" ) !== null) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\tif ( match ) {\n\t\telem.type = match[1];\n\t} else {\n\t\telem.removeAttribute(\"type\");\n\t}\n\treturn elem;\n}\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar elem,\n\t\ti = 0;\n\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\tjQuery._data( elem, \"globalEval\", !refElements || jQuery._data( refElements[i], \"globalEval\" ) );\n\t}\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction fixCloneNodeIssues( src, dest ) {\n\tvar nodeName, e, data;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\t// IE6-8 copies events bound via attachEvent when using cloneNode.\n\tif ( !support.noCloneEvent && dest[ jQuery.expando ] ) {\n\t\tdata = jQuery._data( dest );\n\n\t\tfor ( e in data.events ) {\n\t\t\tjQuery.removeEvent( dest, e, data.handle );\n\t\t}\n\n\t\t// Event data gets referenced instead of copied if the expando gets copied too\n\t\tdest.removeAttribute( jQuery.expando );\n\t}\n\n\t// IE blanks contents when cloning scripts, and tries to evaluate newly-set text\n\tif ( nodeName === \"script\" && dest.text !== src.text ) {\n\t\tdisableScript( dest ).text = src.text;\n\t\trestoreScript( dest );\n\n\t// IE6-10 improperly clones children of object elements using classid.\n\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\n\t} else if ( nodeName === \"object\" ) {\n\t\tif ( dest.parentNode ) {\n\t\t\tdest.outerHTML = src.outerHTML;\n\t\t}\n\n\t\t// This path appears unavoidable for IE9. When cloning an object\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\n\t\t// If the src has innerHTML and the destination does not,\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\n\t\tif ( support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {\n\t\t\tdest.innerHTML = src.innerHTML;\n\t\t}\n\n\t} else if ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn't also set\n\n\t\tdest.defaultChecked = dest.checked = src.checked;\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of \"on\"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === \"option\" ) {\n\t\tdest.defaultSelected = dest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar destElements, node, clone, i, srcElements,\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\tif ( support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( \"<\" + elem.nodeName + \">\" ) ) {\n\t\t\tclone = elem.cloneNode( true );\n\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t} else {\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\n\t\t}\n\n\t\tif ( (!support.noCloneEvent || !support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\t// Fix all IE cloning issues\n\t\t\tfor ( i = 0; (node = srcElements[i]) != null; ++i ) {\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[i] ) {\n\t\t\t\t\tfixCloneNodeIssues( node, destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0; (node = srcElements[i]) != null; i++ ) {\n\t\t\t\t\tcloneCopyEvent( node, destElements[i] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\tdestElements = srcElements = node = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tbuildFragment: function( elems, context, scripts, selection ) {\n\t\tvar j, elem, contains,\n\t\t\ttmp, tag, tbody, wrap,\n\t\t\tl = elems.length,\n\n\t\t\t// Ensure a safe fragment\n\t\t\tsafe = createSafeFragment( context ),\n\n\t\t\tnodes = [],\n\t\t\ti = 0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\telem = elems[ i ];\n\n\t\t\tif ( elem || elem === 0 ) {\n\n\t\t\t\t// Add nodes directly\n\t\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\t\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t\t// Convert non-html into a text node\n\t\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t\t// Convert html into DOM nodes\n\t\t\t\t} else {\n\t\t\t\t\ttmp = tmp || safe.appendChild( context.createElement(\"div\") );\n\n\t\t\t\t\t// Deserialize a standard representation\n\t\t\t\t\ttag = (rtagName.exec( elem ) || [ \"\", \"\" ])[ 1 ].toLowerCase();\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\n\t\t\t\t\ttmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, \"<$1>\" ) + wrap[2];\n\n\t\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\t\tj = wrap[0];\n\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Manually add leading whitespace removed by IE\n\t\t\t\t\tif ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tnodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE's autoinserted from table fragments\n\t\t\t\t\tif ( !support.tbody ) {\n\n\t\t\t\t\t\t// String was a , *may* have spurious \n\t\t\t\t\t\telem = tag === \"table\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\ttmp.firstChild :\n\n\t\t\t\t\t\t\t// String was a bare or \n\t\t\t\t\t\t\twrap[1] === \"
\" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\t\ttmp :\n\t\t\t\t\t\t\t\t0;\n\n\t\t\t\t\t\tj = elem && elem.childNodes.length;\n\t\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( (tbody = elem.childNodes[j]), \"tbody\" ) && !tbody.childNodes.length ) {\n\t\t\t\t\t\t\t\telem.removeChild( tbody );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t\t// Fix #12392 for WebKit and IE > 9\n\t\t\t\t\ttmp.textContent = \"\";\n\n\t\t\t\t\t// Fix #12392 for oldIE\n\t\t\t\t\twhile ( tmp.firstChild ) {\n\t\t\t\t\t\ttmp.removeChild( tmp.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remember the top-level container for proper cleanup\n\t\t\t\t\ttmp = safe.lastChild;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Fix #11356: Clear elements from fragment\n\t\tif ( tmp ) {\n\t\t\tsafe.removeChild( tmp );\n\t\t}\n\n\t\t// Reset defaultChecked for any radios and checkboxes\n\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\tif ( !support.appendChecked ) {\n\t\t\tjQuery.grep( getAll( nodes, \"input\" ), fixDefaultChecked );\n\t\t}\n\n\t\ti = 0;\n\t\twhile ( (elem = nodes[ i++ ]) ) {\n\n\t\t\t// #4087 - If origin and destination elements are the same, and this is\n\t\t\t// that element, do not do anything\n\t\t\tif ( selection && jQuery.inArray( elem, selection ) !== -1 ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t\t// Append to fragment\n\t\t\ttmp = getAll( safe.appendChild( elem ), \"script\" );\n\n\t\t\t// Preserve script evaluation history\n\t\t\tif ( contains ) {\n\t\t\t\tsetGlobalEval( tmp );\n\t\t\t}\n\n\t\t\t// Capture executables\n\t\t\tif ( scripts ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (elem = tmp[ j++ ]) ) {\n\t\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\t\tscripts.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttmp = null;\n\n\t\treturn safe;\n\t},\n\n\tcleanData: function( elems, /* internal */ acceptData ) {\n\t\tvar elem, type, id, data,\n\t\t\ti = 0,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tcache = jQuery.cache,\n\t\t\tdeleteExpando = support.deleteExpando,\n\t\t\tspecial = jQuery.event.special;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( acceptData || jQuery.acceptData( elem ) ) {\n\n\t\t\t\tid = elem[ internalKey ];\n\t\t\t\tdata = id && cache[ id ];\n\n\t\t\t\tif ( data ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove cache only if it was not already removed by jQuery.event.remove\n\t\t\t\t\tif ( cache[ id ] ) {\n\n\t\t\t\t\t\tdelete cache[ id ];\n\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t\t\t\t// we must handle all of these cases\n\t\t\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\t\t\tdelete elem[ internalKey ];\n\n\t\t\t\t\t\t} else if ( typeof elem.removeAttribute !== strundefined ) {\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ internalKey ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdeletedIds.push( id );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t});\n\t},\n\n\tafter: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t});\n\t},\n\n\tremove: function( selector, keepData /* Internal Use Only */ ) {\n\t\tvar elem,\n\t\t\telems = selector ? jQuery.filter( selector, this ) : this,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\n\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem ) );\n\t\t\t}\n\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\tif ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\t\tsetGlobalEval( getAll( elem, \"script\" ) );\n\t\t\t\t}\n\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\n\t\t\t// If this is a select, ensure that it displays empty (#12336)\n\t\t\t// Support: IE<9\n\t\t\tif ( elem.options && jQuery.nodeName( elem, \"select\" ) ) {\n\t\t\t\telem.options.length = 0;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map(function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, \"\" ) :\n\t\t\t\t\tundefined;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t( support.htmlSerialize || !rnoshimcache.test( value ) ) &&\n\t\t\t\t( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ (rtagName.exec( value ) || [ \"\", \"\" ])[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (; i < l; i++ ) {\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[i] || {};\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar arg = arguments[ 0 ];\n\n\t\t// Make the changes, replacing each context element with the new content\n\t\tthis.domManip( arguments, function( elem ) {\n\t\t\targ = this.parentNode;\n\n\t\t\tjQuery.cleanData( getAll( this ) );\n\n\t\t\tif ( arg ) {\n\t\t\t\targ.replaceChild( elem, this );\n\t\t\t}\n\t\t});\n\n\t\t// Force removal if there was no new content (e.g., from empty arguments)\n\t\treturn arg && (arg.length || arg.nodeType) ? this : this.remove();\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, callback ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = concat.apply( [], args );\n\n\t\tvar first, node, hasScripts,\n\t\t\tscripts, doc, fragment,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tset = this,\n\t\t\tiNoClone = l - 1,\n\t\t\tvalue = args[0],\n\t\t\tisFunction = jQuery.isFunction( value );\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( isFunction ||\n\t\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\t\treturn this.each(function( index ) {\n\t\t\t\tvar self = set.eq( index );\n\t\t\t\tif ( isFunction ) {\n\t\t\t\t\targs[0] = value.call( this, index, self.html() );\n\t\t\t\t}\n\t\t\t\tself.domManip( args, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( l ) {\n\t\t\tfragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );\n\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfragment = first;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\t\thasScripts = scripts.length;\n\n\t\t\t\t// Use the original fragment for the last item instead of the first because it can end up\n\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\tnode = fragment;\n\n\t\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback.call( this[i], node, i );\n\t\t\t\t}\n\n\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t\t// Reenable scripts\n\t\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t\t!jQuery._data( node, \"globalEval\" ) && jQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\t\tif ( node.src ) {\n\t\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.globalEval( ( node.text || node.textContent || node.innerHTML || \"\" ).replace( rcleanScript, \"\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Fix #11809: Avoid leaking memory\n\t\t\t\tfragment = first = null;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\ti = 0,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone(true);\n\t\t\tjQuery( insert[i] )[ original ]( elems );\n\n\t\t\t// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\n\n\nvar iframe,\n\telemdisplay = {};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar style,\n\t\telem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\t// getDefaultComputedStyle might be reliably used only on attached element\n\t\tdisplay = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?\n\n\t\t\t// Use of this method is a temporary fix (more like optmization) until something better comes along,\n\t\t\t// since it was removed from specification and supported only in FF\n\t\t\tstyle.display : jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = (iframe || jQuery( \"';\n\t\t} else if (video.type === 'vimeo') {\n\t\t\thtml = '';\n\t\t}\n\n\t\t$('
' + html + '
').insertAfter(item.find('.owl-video'));\n\n\t\tthis._playing = item.addClass('owl-video-playing');\n\t};\n\n\t/**\n\t * Checks whether an video is currently in full screen mode or not.\n\t * @todo Bad style because looks like a readonly method but changes members.\n\t * @protected\n\t * @returns {Boolean}\n\t */\n\tVideo.prototype.isInFullScreen = function() {\n\t\tvar element = document.fullscreenElement || document.mozFullScreenElement ||\n\t\t\t\tdocument.webkitFullscreenElement;\n\n\t\treturn element && $(element).parent().hasClass('owl-video-frame');\n\t};\n\n\t/**\n\t * Destroys the plugin.\n\t */\n\tVideo.prototype.destroy = function() {\n\t\tvar handler, property;\n\n\t\tthis._core.$element.off('click.owl.video');\n\n\t\tfor (handler in this._handlers) {\n\t\t\tthis._core.$element.off(handler, this._handlers[handler]);\n\t\t}\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\n\t\t}\n\t};\n\n\t$.fn.owlCarousel.Constructor.Plugins.Video = Video;\n\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * Animate Plugin\n * @version 2.0.0\n * @author Bartosz Wojciechowski\n * @license The MIT License (MIT)\n */\n;(function($, window, document, undefined) {\n\n\t/**\n\t * Creates the animate plugin.\n\t * @class The Navigation Plugin\n\t * @param {Owl} scope - The Owl Carousel\n\t */\n\tvar Animate = function(scope) {\n\t\tthis.core = scope;\n\t\tthis.core.options = $.extend({}, Animate.Defaults, this.core.options);\n\t\tthis.swapping = true;\n\t\tthis.previous = undefined;\n\t\tthis.next = undefined;\n\n\t\tthis.handlers = {\n\t\t\t'change.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && e.property.name == 'position') {\n\t\t\t\t\tthis.previous = this.core.current();\n\t\t\t\t\tthis.next = e.property.value;\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace) {\n\t\t\t\t\tthis.swapping = e.type == 'translated';\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'translate.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) {\n\t\t\t\t\tthis.swap();\n\t\t\t\t}\n\t\t\t}, this)\n\t\t};\n\n\t\tthis.core.$element.on(this.handlers);\n\t};\n\n\t/**\n\t * Default options.\n\t * @public\n\t */\n\tAnimate.Defaults = {\n\t\tanimateOut: false,\n\t\tanimateIn: false\n\t};\n\n\t/**\n\t * Toggles the animation classes whenever an translations starts.\n\t * @protected\n\t * @returns {Boolean|undefined}\n\t */\n\tAnimate.prototype.swap = function() {\n\n\t\tif (this.core.settings.items !== 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!$.support.animation || !$.support.transition) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.core.speed(0);\n\n\t\tvar left,\n\t\t\tclear = $.proxy(this.clear, this),\n\t\t\tprevious = this.core.$stage.children().eq(this.previous),\n\t\t\tnext = this.core.$stage.children().eq(this.next),\n\t\t\tincoming = this.core.settings.animateIn,\n\t\t\toutgoing = this.core.settings.animateOut;\n\n\t\tif (this.core.current() === this.previous) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (outgoing) {\n\t\t\tleft = this.core.coordinates(this.previous) - this.core.coordinates(this.next);\n\t\t\tprevious.one($.support.animation.end, clear)\n\t\t\t\t.css( { 'left': left + 'px' } )\n\t\t\t\t.addClass('animated owl-animated-out')\n\t\t\t\t.addClass(outgoing);\n\t\t}\n\n\t\tif (incoming) {\n\t\t\tnext.one($.support.animation.end, clear)\n\t\t\t\t.addClass('animated owl-animated-in')\n\t\t\t\t.addClass(incoming);\n\t\t}\n\t};\n\n\tAnimate.prototype.clear = function(e) {\n\t\t$(e.target).css( { 'left': '' } )\n\t\t\t.removeClass('animated owl-animated-out owl-animated-in')\n\t\t\t.removeClass(this.core.settings.animateIn)\n\t\t\t.removeClass(this.core.settings.animateOut);\n\t\tthis.core.onTransitionEnd();\n\t};\n\n\t/**\n\t * Destroys the plugin.\n\t * @public\n\t */\n\tAnimate.prototype.destroy = function() {\n\t\tvar handler, property;\n\n\t\tfor (handler in this.handlers) {\n\t\t\tthis.core.$element.off(handler, this.handlers[handler]);\n\t\t}\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\n\t\t}\n\t};\n\n\t$.fn.owlCarousel.Constructor.Plugins.Animate = Animate;\n\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * Autoplay Plugin\n * @version 2.0.0\n * @author Bartosz Wojciechowski\n * @author Artus Kolanowski\n * @license The MIT License (MIT)\n */\n;(function($, window, document, undefined) {\n\n\t/**\n\t * Creates the autoplay plugin.\n\t * @class The Autoplay Plugin\n\t * @param {Owl} scope - The Owl Carousel\n\t */\n\tvar Autoplay = function(carousel) {\n\t\t/**\n\t\t * Reference to the core.\n\t\t * @protected\n\t\t * @type {Owl}\n\t\t */\n\t\tthis._core = carousel;\n\n\t\t/**\n\t\t * The autoplay interval.\n\t\t * @type {Number}\n\t\t */\n\t\tthis._interval = null;\n\n\t\t/**\n\t\t * Indicates whenever the autoplay is paused.\n\t\t * @type {Boolean}\n\t\t */\n\t\tthis._paused = false;\n\n\t\t/**\n\t\t * All event handlers.\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._handlers = {\n\t\t\t'changed.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && e.property.name === 'settings') {\n\t\t\t\t\tif (this._core.settings.autoplay) {\n\t\t\t\t\t\tthis.play();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.stop();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'initialized.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && this._core.settings.autoplay) {\n\t\t\t\t\tthis.play();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'play.owl.autoplay': $.proxy(function(e, t, s) {\n\t\t\t\tif (e.namespace) {\n\t\t\t\t\tthis.play(t, s);\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'stop.owl.autoplay': $.proxy(function(e) {\n\t\t\t\tif (e.namespace) {\n\t\t\t\t\tthis.stop();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'mouseover.owl.autoplay': $.proxy(function() {\n\t\t\t\tif (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {\n\t\t\t\t\tthis.pause();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'mouseleave.owl.autoplay': $.proxy(function() {\n\t\t\t\tif (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {\n\t\t\t\t\tthis.play();\n\t\t\t\t}\n\t\t\t}, this)\n\t\t};\n\n\t\t// register event handlers\n\t\tthis._core.$element.on(this._handlers);\n\n\t\t// set default options\n\t\tthis._core.options = $.extend({}, Autoplay.Defaults, this._core.options);\n\t};\n\n\t/**\n\t * Default options.\n\t * @public\n\t */\n\tAutoplay.Defaults = {\n\t\tautoplay: false,\n\t\tautoplayTimeout: 5000,\n\t\tautoplayHoverPause: false,\n\t\tautoplaySpeed: false\n\t};\n\n\t/**\n\t * Starts the autoplay.\n\t * @public\n\t * @param {Number} [timeout] - The interval before the next animation starts.\n\t * @param {Number} [speed] - The animation speed for the animations.\n\t */\n\tAutoplay.prototype.play = function(timeout, speed) {\n\t\tthis._paused = false;\n\n\t\tif (this._core.is('rotating')) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._core.enter('rotating');\n\n\t\tthis._interval = window.setInterval($.proxy(function() {\n\t\t\tif (this._paused || this._core.is('busy') || this._core.is('interacting') || document.hidden) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._core.next(speed || this._core.settings.autoplaySpeed);\n\t\t}, this), timeout || this._core.settings.autoplayTimeout);\n\t};\n\n\t/**\n\t * Stops the autoplay.\n\t * @public\n\t */\n\tAutoplay.prototype.stop = function() {\n\t\tif (!this._core.is('rotating')) {\n\t\t\treturn;\n\t\t}\n\n\t\twindow.clearInterval(this._interval);\n\t\tthis._core.leave('rotating');\n\t};\n\n\t/**\n\t * Stops the autoplay.\n\t * @public\n\t */\n\tAutoplay.prototype.pause = function() {\n\t\tif (!this._core.is('rotating')) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._paused = true;\n\t};\n\n\t/**\n\t * Destroys the plugin.\n\t */\n\tAutoplay.prototype.destroy = function() {\n\t\tvar handler, property;\n\n\t\tthis.stop();\n\n\t\tfor (handler in this._handlers) {\n\t\t\tthis._core.$element.off(handler, this._handlers[handler]);\n\t\t}\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\n\t\t}\n\t};\n\n\t$.fn.owlCarousel.Constructor.Plugins.autoplay = Autoplay;\n\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * Navigation Plugin\n * @version 2.0.0\n * @author Artus Kolanowski\n * @license The MIT License (MIT)\n */\n;(function($, window, document, undefined) {\n\t'use strict';\n\n\t/**\n\t * Creates the navigation plugin.\n\t * @class The Navigation Plugin\n\t * @param {Owl} carousel - The Owl Carousel.\n\t */\n\tvar Navigation = function(carousel) {\n\t\t/**\n\t\t * Reference to the core.\n\t\t * @protected\n\t\t * @type {Owl}\n\t\t */\n\t\tthis._core = carousel;\n\n\t\t/**\n\t\t * Indicates whether the plugin is initialized or not.\n\t\t * @protected\n\t\t * @type {Boolean}\n\t\t */\n\t\tthis._initialized = false;\n\n\t\t/**\n\t\t * The current paging indexes.\n\t\t * @protected\n\t\t * @type {Array}\n\t\t */\n\t\tthis._pages = [];\n\n\t\t/**\n\t\t * All DOM elements of the user interface.\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._controls = {};\n\n\t\t/**\n\t\t * Markup for an indicator.\n\t\t * @protected\n\t\t * @type {Array.}\n\t\t */\n\t\tthis._templates = [];\n\n\t\t/**\n\t\t * The carousel element.\n\t\t * @type {jQuery}\n\t\t */\n\t\tthis.$element = this._core.$element;\n\n\t\t/**\n\t\t * Overridden methods of the carousel.\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._overrides = {\n\t\t\tnext: this._core.next,\n\t\t\tprev: this._core.prev,\n\t\t\tto: this._core.to\n\t\t};\n\n\t\t/**\n\t\t * All event handlers.\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._handlers = {\n\t\t\t'prepared.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && this._core.settings.dotsData) {\n\t\t\t\t\tthis._templates.push('
' +\n\t\t\t\t\t\t$(e.content).find('[data-dot]').andSelf('[data-dot]').attr('data-dot') + '
');\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'added.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && this._core.settings.dotsData) {\n\t\t\t\t\tthis._templates.splice(e.position, 0, this._templates.pop());\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'remove.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && this._core.settings.dotsData) {\n\t\t\t\t\tthis._templates.splice(e.position, 1);\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'changed.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && e.property.name == 'position') {\n\t\t\t\t\tthis.draw();\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'initialized.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && !this._initialized) {\n\t\t\t\t\tthis._core.trigger('initialize', null, 'navigation');\n\t\t\t\t\tthis.initialize();\n\t\t\t\t\tthis.update();\n\t\t\t\t\tthis.draw();\n\t\t\t\t\tthis._initialized = true;\n\t\t\t\t\tthis._core.trigger('initialized', null, 'navigation');\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'refreshed.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && this._initialized) {\n\t\t\t\t\tthis._core.trigger('refresh', null, 'navigation');\n\t\t\t\t\tthis.update();\n\t\t\t\t\tthis.draw();\n\t\t\t\t\tthis._core.trigger('refreshed', null, 'navigation');\n\t\t\t\t}\n\t\t\t}, this)\n\t\t};\n\n\t\t// set default options\n\t\tthis._core.options = $.extend({}, Navigation.Defaults, this._core.options);\n\n\t\t// register event handlers\n\t\tthis.$element.on(this._handlers);\n\t};\n\n\t/**\n\t * Default options.\n\t * @public\n\t * @todo Rename `slideBy` to `navBy`\n\t */\n\tNavigation.Defaults = {\n\t\tnav: false,\n\t\tnavText: [ 'prev', 'next' ],\n\t\tnavSpeed: false,\n\t\tnavElement: 'div',\n\t\tnavContainer: false,\n\t\tnavContainerClass: 'owl-nav',\n\t\tnavClass: [ 'owl-prev', 'owl-next' ],\n\t\tslideBy: 1,\n\t\tdotClass: 'owl-dot',\n\t\tdotsClass: 'owl-dots',\n\t\tdots: true,\n\t\tdotsEach: false,\n\t\tdotsData: false,\n\t\tdotsSpeed: false,\n\t\tdotsContainer: false\n\t};\n\n\t/**\n\t * Initializes the layout of the plugin and extends the carousel.\n\t * @protected\n\t */\n\tNavigation.prototype.initialize = function() {\n\t\tvar override,\n\t\t\tsettings = this._core.settings;\n\n\t\t// create DOM structure for relative navigation\n\t\tthis._controls.$relative = (settings.navContainer ? $(settings.navContainer)\n\t\t\t: $('
').addClass(settings.navContainerClass).appendTo(this.$element)).addClass('disabled');\n\n\t\tthis._controls.$previous = $('<' + settings.navElement + '>')\n\t\t\t.addClass(settings.navClass[0])\n\t\t\t.html(settings.navText[0])\n\t\t\t.prependTo(this._controls.$relative)\n\t\t\t.on('click', $.proxy(function(e) {\n\t\t\t\tthis.prev(settings.navSpeed);\n\t\t\t}, this));\n\t\tthis._controls.$next = $('<' + settings.navElement + '>')\n\t\t\t.addClass(settings.navClass[1])\n\t\t\t.html(settings.navText[1])\n\t\t\t.appendTo(this._controls.$relative)\n\t\t\t.on('click', $.proxy(function(e) {\n\t\t\t\tthis.next(settings.navSpeed);\n\t\t\t}, this));\n\n\t\t// create DOM structure for absolute navigation\n\t\tif (!settings.dotsData) {\n\t\t\tthis._templates = [ $('
')\n\t\t\t\t.addClass(settings.dotClass)\n\t\t\t\t.append($(''))\n\t\t\t\t.prop('outerHTML') ];\n\t\t}\n\n\t\tthis._controls.$absolute = (settings.dotsContainer ? $(settings.dotsContainer)\n\t\t\t: $('
').addClass(settings.dotsClass).appendTo(this.$element)).addClass('disabled');\n\n\t\tthis._controls.$absolute.on('click', 'div', $.proxy(function(e) {\n\t\t\tvar index = $(e.target).parent().is(this._controls.$absolute)\n\t\t\t\t? $(e.target).index() : $(e.target).parent().index();\n\n\t\t\te.preventDefault();\n\n\t\t\tthis.to(index, settings.dotsSpeed);\n\t\t}, this));\n\n\t\t// override public methods of the carousel\n\t\tfor (override in this._overrides) {\n\t\t\tthis._core[override] = $.proxy(this[override], this);\n\t\t}\n\t};\n\n\t/**\n\t * Destroys the plugin.\n\t * @protected\n\t */\n\tNavigation.prototype.destroy = function() {\n\t\tvar handler, control, property, override;\n\n\t\tfor (handler in this._handlers) {\n\t\t\tthis.$element.off(handler, this._handlers[handler]);\n\t\t}\n\t\tfor (control in this._controls) {\n\t\t\tthis._controls[control].remove();\n\t\t}\n\t\tfor (override in this.overides) {\n\t\t\tthis._core[override] = this._overrides[override];\n\t\t}\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\n\t\t}\n\t};\n\n\t/**\n\t * Updates the internal state.\n\t * @protected\n\t */\n\tNavigation.prototype.update = function() {\n\t\tvar i, j, k,\n\t\t\tlower = this._core.clones().length / 2,\n\t\t\tupper = lower + this._core.items().length,\n\t\t\tmaximum = this._core.maximum(true),\n\t\t\tsettings = this._core.settings,\n\t\t\tsize = settings.center || settings.autoWidth || settings.dotsData\n\t\t\t\t? 1 : settings.dotsEach || settings.items;\n\n\t\tif (settings.slideBy !== 'page') {\n\t\t\tsettings.slideBy = Math.min(settings.slideBy, settings.items);\n\t\t}\n\n\t\tif (settings.dots || settings.slideBy == 'page') {\n\t\t\tthis._pages = [];\n\n\t\t\tfor (i = lower, j = 0, k = 0; i < upper; i++) {\n\t\t\t\tif (j >= size || j === 0) {\n\t\t\t\t\tthis._pages.push({\n\t\t\t\t\t\tstart: Math.min(maximum, i - lower),\n\t\t\t\t\t\tend: i - lower + size - 1\n\t\t\t\t\t});\n\t\t\t\t\tif (Math.min(maximum, i - lower) === maximum) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tj = 0, ++k;\n\t\t\t\t}\n\t\t\t\tj += this._core.mergers(this._core.relative(i));\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * Draws the user interface.\n\t * @todo The option `dotsData` wont work.\n\t * @protected\n\t */\n\tNavigation.prototype.draw = function() {\n\t\tvar difference,\n\t\t\tsettings = this._core.settings,\n\t\t\tdisabled = this._core.items().length <= settings.items,\n\t\t\tindex = this._core.relative(this._core.current()),\n\t\t\tloop = settings.loop || settings.rewind;\n\n\t\tthis._controls.$relative.toggleClass('disabled', !settings.nav || disabled);\n\n\t\tif (settings.nav) {\n\t\t\tthis._controls.$previous.toggleClass('disabled', !loop && index <= this._core.minimum(true));\n\t\t\tthis._controls.$next.toggleClass('disabled', !loop && index >= this._core.maximum(true));\n\t\t}\n\n\t\tthis._controls.$absolute.toggleClass('disabled', !settings.dots || disabled);\n\n\t\tif (settings.dots) {\n\t\t\tdifference = this._pages.length - this._controls.$absolute.children().length;\n\n\t\t\tif (settings.dotsData && difference !== 0) {\n\t\t\t\tthis._controls.$absolute.html(this._templates.join(''));\n\t\t\t} else if (difference > 0) {\n\t\t\t\tthis._controls.$absolute.append(new Array(difference + 1).join(this._templates[0]));\n\t\t\t} else if (difference < 0) {\n\t\t\t\tthis._controls.$absolute.children().slice(difference).remove();\n\t\t\t}\n\n\t\t\tthis._controls.$absolute.find('.active').removeClass('active');\n\t\t\tthis._controls.$absolute.children().eq($.inArray(this.current(), this._pages)).addClass('active');\n\t\t}\n\t};\n\n\t/**\n\t * Extends event data.\n\t * @protected\n\t * @param {Event} event - The event object which gets thrown.\n\t */\n\tNavigation.prototype.onTrigger = function(event) {\n\t\tvar settings = this._core.settings;\n\n\t\tevent.page = {\n\t\t\tindex: $.inArray(this.current(), this._pages),\n\t\t\tcount: this._pages.length,\n\t\t\tsize: settings && (settings.center || settings.autoWidth || settings.dotsData\n\t\t\t\t? 1 : settings.dotsEach || settings.items)\n\t\t};\n\t};\n\n\t/**\n\t * Gets the current page position of the carousel.\n\t * @protected\n\t * @returns {Number}\n\t */\n\tNavigation.prototype.current = function() {\n\t\tvar current = this._core.relative(this._core.current());\n\t\treturn $.grep(this._pages, $.proxy(function(page, index) {\n\t\t\treturn page.start <= current && page.end >= current;\n\t\t}, this)).pop();\n\t};\n\n\t/**\n\t * Gets the current succesor/predecessor position.\n\t * @protected\n\t * @returns {Number}\n\t */\n\tNavigation.prototype.getPosition = function(successor) {\n\t\tvar position, length,\n\t\t\tsettings = this._core.settings;\n\n\t\tif (settings.slideBy == 'page') {\n\t\t\tposition = $.inArray(this.current(), this._pages);\n\t\t\tlength = this._pages.length;\n\t\t\tsuccessor ? ++position : --position;\n\t\t\tposition = this._pages[((position % length) + length) % length].start;\n\t\t} else {\n\t\t\tposition = this._core.relative(this._core.current());\n\t\t\tlength = this._core.items().length;\n\t\t\tsuccessor ? position += settings.slideBy : position -= settings.slideBy;\n\t\t}\n\n\t\treturn position;\n\t};\n\n\t/**\n\t * Slides to the next item or page.\n\t * @public\n\t * @param {Number} [speed=false] - The time in milliseconds for the transition.\n\t */\n\tNavigation.prototype.next = function(speed) {\n\t\t$.proxy(this._overrides.to, this._core)(this.getPosition(true), speed);\n\t};\n\n\t/**\n\t * Slides to the previous item or page.\n\t * @public\n\t * @param {Number} [speed=false] - The time in milliseconds for the transition.\n\t */\n\tNavigation.prototype.prev = function(speed) {\n\t\t$.proxy(this._overrides.to, this._core)(this.getPosition(false), speed);\n\t};\n\n\t/**\n\t * Slides to the specified item or page.\n\t * @public\n\t * @param {Number} position - The position of the item or page.\n\t * @param {Number} [speed] - The time in milliseconds for the transition.\n\t * @param {Boolean} [standard=false] - Whether to use the standard behaviour or not.\n\t */\n\tNavigation.prototype.to = function(position, speed, standard) {\n\t\tvar length;\n\n\t\tif (!standard) {\n\t\t\tlength = this._pages.length;\n\t\t\t$.proxy(this._overrides.to, this._core)(this._pages[((position % length) + length) % length].start, speed);\n\t\t} else {\n\t\t\t$.proxy(this._overrides.to, this._core)(position, speed);\n\t\t}\n\t};\n\n\t$.fn.owlCarousel.Constructor.Plugins.Navigation = Navigation;\n\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * Hash Plugin\n * @version 2.0.0\n * @author Artus Kolanowski\n * @license The MIT License (MIT)\n */\n;(function($, window, document, undefined) {\n\t'use strict';\n\n\t/**\n\t * Creates the hash plugin.\n\t * @class The Hash Plugin\n\t * @param {Owl} carousel - The Owl Carousel\n\t */\n\tvar Hash = function(carousel) {\n\t\t/**\n\t\t * Reference to the core.\n\t\t * @protected\n\t\t * @type {Owl}\n\t\t */\n\t\tthis._core = carousel;\n\n\t\t/**\n\t\t * Hash index for the items.\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._hashes = {};\n\n\t\t/**\n\t\t * The carousel element.\n\t\t * @type {jQuery}\n\t\t */\n\t\tthis.$element = this._core.$element;\n\n\t\t/**\n\t\t * All event handlers.\n\t\t * @protected\n\t\t * @type {Object}\n\t\t */\n\t\tthis._handlers = {\n\t\t\t'initialized.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && this._core.settings.startPosition === 'URLHash') {\n\t\t\t\t\t$(window).trigger('hashchange.owl.navigation');\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'prepared.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace) {\n\t\t\t\t\tvar hash = $(e.content).find('[data-hash]').andSelf('[data-hash]').attr('data-hash');\n\n\t\t\t\t\tif (!hash) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._hashes[hash] = e.content;\n\t\t\t\t}\n\t\t\t}, this),\n\t\t\t'changed.owl.carousel': $.proxy(function(e) {\n\t\t\t\tif (e.namespace && e.property.name === 'position') {\n\t\t\t\t\tvar current = this._core.items(this._core.relative(this._core.current())),\n\t\t\t\t\t\thash = $.map(this._hashes, function(item, hash) {\n\t\t\t\t\t\t\treturn item === current ? hash : null;\n\t\t\t\t\t\t}).join();\n\n\t\t\t\t\tif (!hash || window.location.hash.slice(1) === hash) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\twindow.location.hash = hash;\n\t\t\t\t}\n\t\t\t}, this)\n\t\t};\n\n\t\t// set default options\n\t\tthis._core.options = $.extend({}, Hash.Defaults, this._core.options);\n\n\t\t// register the event handlers\n\t\tthis.$element.on(this._handlers);\n\n\t\t// register event listener for hash navigation\n\t\t$(window).on('hashchange.owl.navigation', $.proxy(function(e) {\n\t\t\tvar hash = window.location.hash.substring(1),\n\t\t\t\titems = this._core.$stage.children(),\n\t\t\t\tposition = this._hashes[hash] && items.index(this._hashes[hash]);\n\n\t\t\tif (position === undefined || position === this._core.current()) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._core.to(this._core.relative(position), false, true);\n\t\t}, this));\n\t};\n\n\t/**\n\t * Default options.\n\t * @public\n\t */\n\tHash.Defaults = {\n\t\tURLhashListener: false\n\t};\n\n\t/**\n\t * Destroys the plugin.\n\t * @public\n\t */\n\tHash.prototype.destroy = function() {\n\t\tvar handler, property;\n\n\t\t$(window).off('hashchange.owl.navigation');\n\n\t\tfor (handler in this._handlers) {\n\t\t\tthis._core.$element.off(handler, this._handlers[handler]);\n\t\t}\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\n\t\t}\n\t};\n\n\t$.fn.owlCarousel.Constructor.Plugins.Hash = Hash;\n\n})(window.Zepto || window.jQuery, window, document);\n\n/**\n * Support Plugin\n *\n * @version 2.0.0\n * @author Vivid Planet Software GmbH\n * @author Artus Kolanowski\n * @license The MIT License (MIT)\n */\n;(function($, window, document, undefined) {\n\n\tvar style = $('').get(0).style,\n\t\tprefixes = 'Webkit Moz O ms'.split(' '),\n\t\tevents = {\n\t\t\ttransition: {\n\t\t\t\tend: {\n\t\t\t\t\tWebkitTransition: 'webkitTransitionEnd',\n\t\t\t\t\tMozTransition: 'transitionend',\n\t\t\t\t\tOTransition: 'oTransitionEnd',\n\t\t\t\t\ttransition: 'transitionend'\n\t\t\t\t}\n\t\t\t},\n\t\t\tanimation: {\n\t\t\t\tend: {\n\t\t\t\t\tWebkitAnimation: 'webkitAnimationEnd',\n\t\t\t\t\tMozAnimation: 'animationend',\n\t\t\t\t\tOAnimation: 'oAnimationEnd',\n\t\t\t\t\tanimation: 'animationend'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttests = {\n\t\t\tcsstransforms: function() {\n\t\t\t\treturn !!test('transform');\n\t\t\t},\n\t\t\tcsstransforms3d: function() {\n\t\t\t\treturn !!test('perspective');\n\t\t\t},\n\t\t\tcsstransitions: function() {\n\t\t\t\treturn !!test('transition');\n\t\t\t},\n\t\t\tcssanimations: function() {\n\t\t\t\treturn !!test('animation');\n\t\t\t}\n\t\t};\n\n\tfunction test(property, prefixed) {\n\t\tvar result = false,\n\t\t\tupper = property.charAt(0).toUpperCase() + property.slice(1);\n\n\t\t$.each((property + ' ' + prefixes.join(upper + ' ') + upper).split(' '), function(i, property) {\n\t\t\tif (style[property] !== undefined) {\n\t\t\t\tresult = prefixed ? property : true;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t}\n\n\tfunction prefixed(property) {\n\t\treturn test(property, true);\n\t}\n\n\tif (tests.csstransitions()) {\n\t\t/* jshint -W053 */\n\t\t$.support.transition = new String(prefixed('transition'))\n\t\t$.support.transition.end = events.transition.end[ $.support.transition ];\n\t}\n\n\tif (tests.cssanimations()) {\n\t\t/* jshint -W053 */\n\t\t$.support.animation = new String(prefixed('animation'))\n\t\t$.support.animation.end = events.animation.end[ $.support.animation ];\n\t}\n\n\tif (tests.csstransforms()) {\n\t\t/* jshint -W053 */\n\t\t$.support.transform = new String(prefixed('transform'));\n\t\t$.support.transform3d = tests.csstransforms3d();\n\t}\n\n})(window.Zepto || window.jQuery, window, document);\n","/*! svg4everybody v1.0.0 | github.com/jonathantneal/svg4everybody */\n(function (document, uses, requestAnimationFrame, CACHE, IE9TO11) {\n\tfunction embed(svg, g) {\n\t\tif (g) {\n\t\t\tvar\n\t\t\tviewBox = g.getAttribute('viewBox'),\n\t\t\tfragment = document.createDocumentFragment(),\n\t\t\tclone = g.cloneNode(true);\n\n\t\t\tif (viewBox) {\n\t\t\t\tsvg.setAttribute('viewBox', viewBox);\n\t\t\t}\n\n\t\t\twhile (clone.childNodes.length) {\n\t\t\t\tfragment.appendChild(clone.childNodes[0]);\n\t\t\t}\n\n\t\t\tsvg.appendChild(fragment);\n\t\t}\n\t}\n\n\tfunction onload() {\n\t\tvar xhr = this, x = document.createElement('x'), s = xhr.s;\n\n\t\tx.innerHTML = xhr.responseText;\n\n\t\txhr.onload = function () {\n\t\t\ts.splice(0).map(function (array) {\n\t\t\t\tembed(array[0], x.querySelector('#' + array[1].replace(/(\\W)/g, '\\\\$1')));\n\t\t\t});\n\t\t};\n\n\t\txhr.onload();\n\t}\n\n\tfunction onframe() {\n\t\tvar use;\n\n\t\twhile ((use = uses[0])) {\n\t\t\tvar\n\t\t\tsvg = use.parentNode,\n\t\t\turl = use.getAttribute('xlink:href').split('#'),\n\t\t\turl_root = url[0],\n\t\t\turl_hash = url[1];\n\n\t\t\tsvg.removeChild(use);\n\n\t\t\tif (url_root.length) {\n\t\t\t\tvar xhr = CACHE[url_root] = CACHE[url_root] || new XMLHttpRequest();\n\n\t\t\t\tif (!xhr.s) {\n\t\t\t\t\txhr.s = [];\n\n\t\t\t\t\txhr.open('GET', url_root);\n\n\t\t\t\t\txhr.onload = onload;\n\n\t\t\t\t\txhr.send();\n\t\t\t\t}\n\n\t\t\t\txhr.s.push([svg, url_hash]);\n\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\txhr.onload();\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\tembed(svg, document.getElementById(url_hash));\n\t\t\t}\n\t\t}\n\n\t\trequestAnimationFrame(onframe);\n\t}\n\n\tif (IE9TO11) {\n\t\tonframe();\n\t}\n})(\n\tdocument,\n\tdocument.getElementsByTagName('use'),\n\twindow.requestAnimationFrame || window.setTimeout,\n\t{},\n\t/Trident\\/[567]\\b/.test(navigator.userAgent) || (navigator.userAgent.match(/AppleWebKit\\/(\\d+)/) || [])[1] < 537\n);\n","/*!\n * hoverIntent v1.8.1 // 2014.08.11 // jQuery v1.9.1+\n * http://cherne.net/brian/resources/jquery.hoverIntent.html\n *\n * You may use hoverIntent under the terms of the MIT license. Basically that\n * means you are free to use hoverIntent as long as this header is left intact.\n * Copyright 2007, 2014 Brian Cherne\n */\n \n/* hoverIntent is similar to jQuery's built-in \"hover\" method except that\n * instead of firing the handlerIn function immediately, hoverIntent checks\n * to see if the user's mouse has slowed down (beneath the sensitivity\n * threshold) before firing the event. The handlerOut function is only\n * called after a matching handlerIn.\n *\n * // basic usage ... just like .hover()\n * .hoverIntent( handlerIn, handlerOut )\n * .hoverIntent( handlerInOut )\n *\n * // basic usage ... with event delegation!\n * .hoverIntent( handlerIn, handlerOut, selector )\n * .hoverIntent( handlerInOut, selector )\n *\n * // using a basic configuration object\n * .hoverIntent( config )\n *\n * @param handlerIn function OR configuration object\n * @param handlerOut function OR selector for delegation OR undefined\n * @param selector selector OR undefined\n * @author Brian Cherne \n */\n(function($) {\n $.fn.hoverIntent = function(handlerIn,handlerOut,selector) {\n\n // default configuration values\n var cfg = {\n interval: 100,\n sensitivity: 6,\n timeout: 0\n };\n\n if ( typeof handlerIn === \"object\" ) {\n cfg = $.extend(cfg, handlerIn );\n } else if ($.isFunction(handlerOut)) {\n cfg = $.extend(cfg, { over: handlerIn, out: handlerOut, selector: selector } );\n } else {\n cfg = $.extend(cfg, { over: handlerIn, out: handlerIn, selector: handlerOut } );\n }\n\n // instantiate variables\n // cX, cY = current X and Y position of mouse, updated by mousemove event\n // pX, pY = previous X and Y position of mouse, set by mouseover and polling interval\n var cX, cY, pX, pY;\n\n // A private function for getting mouse position\n var track = function(ev) {\n cX = ev.pageX;\n cY = ev.pageY;\n };\n\n // A private function for comparing current and previous mouse position\n var compare = function(ev,ob) {\n ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);\n // compare mouse positions to see if they've crossed the threshold\n if ( Math.sqrt( (pX-cX)*(pX-cX) + (pY-cY)*(pY-cY) ) < cfg.sensitivity ) {\n $(ob).off(\"mousemove.hoverIntent\",track);\n // set hoverIntent state to true (so mouseOut can be called)\n ob.hoverIntent_s = true;\n return cfg.over.apply(ob,[ev]);\n } else {\n // set previous coordinates for next time\n pX = cX; pY = cY;\n // use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs)\n ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval );\n }\n };\n\n // A private function for delaying the mouseOut function\n var delay = function(ev,ob) {\n ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);\n ob.hoverIntent_s = false;\n return cfg.out.apply(ob,[ev]);\n };\n\n // A private function for handling mouse 'hovering'\n var handleHover = function(e) {\n // copy objects to be passed into t (required for event object to be passed in IE)\n var ev = $.extend({},e);\n var ob = this;\n\n // cancel hoverIntent timer if it exists\n if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); }\n\n // if e.type === \"mouseenter\"\n if (e.type === \"mouseenter\") {\n // set \"previous\" X and Y position based on initial entry point\n pX = ev.pageX; pY = ev.pageY;\n // update \"current\" X and Y position based on mousemove\n $(ob).on(\"mousemove.hoverIntent\",track);\n // start polling interval (self-calling timeout) to compare mouse coordinates over time\n if (!ob.hoverIntent_s) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );}\n\n // else e.type == \"mouseleave\"\n } else {\n // unbind expensive mousemove event\n $(ob).off(\"mousemove.hoverIntent\",track);\n // if hoverIntent state is true, then call the mouseOut function after the specified delay\n if (ob.hoverIntent_s) { ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );}\n }\n };\n\n // listen for mouseenter and mouseleave\n return this.on({'mouseenter.hoverIntent':handleHover,'mouseleave.hoverIntent':handleHover}, cfg.selector);\n };\n})(jQuery);\n","/*\n * jQuery FlexSlider v2.6.3\n * Copyright 2012 WooThemes\n * Contributing Author: Tyler Smith\n */\n;\n(function ($) {\n\n var focused = true;\n\n //FlexSlider: Object Instance\n $.flexslider = function(el, options) {\n var slider = $(el);\n\n // making variables public\n slider.vars = $.extend({}, $.flexslider.defaults, options);\n\n var namespace = slider.vars.namespace,\n msGesture = window.navigator && window.navigator.msPointerEnabled && window.MSGesture,\n touch = (( \"ontouchstart\" in window ) || msGesture || window.DocumentTouch && document instanceof DocumentTouch) && slider.vars.touch,\n // depricating this idea, as devices are being released with both of these events\n eventType = \"click touchend MSPointerUp keyup\",\n watchedEvent = \"\",\n watchedEventClearTimer,\n vertical = slider.vars.direction === \"vertical\",\n reverse = slider.vars.reverse,\n carousel = (slider.vars.itemWidth > 0),\n fade = slider.vars.animation === \"fade\",\n asNav = slider.vars.asNavFor !== \"\",\n methods = {};\n\n // Store a reference to the slider object\n $.data(el, \"flexslider\", slider);\n\n // Private slider methods\n methods = {\n init: function() {\n slider.animating = false;\n // Get current slide and make sure it is a number\n slider.currentSlide = parseInt( ( slider.vars.startAt ? slider.vars.startAt : 0), 10 );\n if ( isNaN( slider.currentSlide ) ) { slider.currentSlide = 0; }\n slider.animatingTo = slider.currentSlide;\n slider.atEnd = (slider.currentSlide === 0 || slider.currentSlide === slider.last);\n slider.containerSelector = slider.vars.selector.substr(0,slider.vars.selector.search(' '));\n slider.slides = $(slider.vars.selector, slider);\n slider.container = $(slider.containerSelector, slider);\n slider.count = slider.slides.length;\n // SYNC:\n slider.syncExists = $(slider.vars.sync).length > 0;\n // SLIDE:\n if (slider.vars.animation === \"slide\") { slider.vars.animation = \"swing\"; }\n slider.prop = (vertical) ? \"top\" : \"marginLeft\";\n slider.args = {};\n // SLIDESHOW:\n slider.manualPause = false;\n slider.stopped = false;\n //PAUSE WHEN INVISIBLE\n slider.started = false;\n slider.startTimeout = null;\n // TOUCH/USECSS:\n slider.transitions = !slider.vars.video && !fade && slider.vars.useCSS && (function() {\n var obj = document.createElement('div'),\n props = ['perspectiveProperty', 'WebkitPerspective', 'MozPerspective', 'OPerspective', 'msPerspective'];\n for (var i in props) {\n if ( obj.style[ props[i] ] !== undefined ) {\n slider.pfx = props[i].replace('Perspective','').toLowerCase();\n slider.prop = \"-\" + slider.pfx + \"-transform\";\n return true;\n }\n }\n return false;\n }());\n slider.ensureAnimationEnd = '';\n // CONTROLSCONTAINER:\n if (slider.vars.controlsContainer !== \"\") slider.controlsContainer = $(slider.vars.controlsContainer).length > 0 && $(slider.vars.controlsContainer);\n // MANUAL:\n if (slider.vars.manualControls !== \"\") slider.manualControls = $(slider.vars.manualControls).length > 0 && $(slider.vars.manualControls);\n\n // CUSTOM DIRECTION NAV:\n if (slider.vars.customDirectionNav !== \"\") slider.customDirectionNav = $(slider.vars.customDirectionNav).length === 2 && $(slider.vars.customDirectionNav);\n\n // RANDOMIZE:\n if (slider.vars.randomize) {\n slider.slides.sort(function() { return (Math.round(Math.random())-0.5); });\n slider.container.empty().append(slider.slides);\n }\n\n slider.doMath();\n\n // INIT\n slider.setup(\"init\");\n\n // CONTROLNAV:\n if (slider.vars.controlNav) { methods.controlNav.setup(); }\n\n // DIRECTIONNAV:\n if (slider.vars.directionNav) { methods.directionNav.setup(); }\n\n // KEYBOARD:\n if (slider.vars.keyboard && ($(slider.containerSelector).length === 1 || slider.vars.multipleKeyboard)) {\n $(document).bind('keyup', function(event) {\n var keycode = event.keyCode;\n if (!slider.animating && (keycode === 39 || keycode === 37)) {\n var target = (keycode === 39) ? slider.getTarget('next') :\n (keycode === 37) ? slider.getTarget('prev') : false;\n slider.flexAnimate(target, slider.vars.pauseOnAction);\n }\n });\n }\n // MOUSEWHEEL:\n if (slider.vars.mousewheel) {\n slider.bind('mousewheel', function(event, delta, deltaX, deltaY) {\n event.preventDefault();\n var target = (delta < 0) ? slider.getTarget('next') : slider.getTarget('prev');\n slider.flexAnimate(target, slider.vars.pauseOnAction);\n });\n }\n\n // PAUSEPLAY\n if (slider.vars.pausePlay) { methods.pausePlay.setup(); }\n\n //PAUSE WHEN INVISIBLE\n if (slider.vars.slideshow && slider.vars.pauseInvisible) { methods.pauseInvisible.init(); }\n\n // SLIDSESHOW\n if (slider.vars.slideshow) {\n if (slider.vars.pauseOnHover) {\n slider.hover(function() {\n if (!slider.manualPlay && !slider.manualPause) { slider.pause(); }\n }, function() {\n if (!slider.manualPause && !slider.manualPlay && !slider.stopped) { slider.play(); }\n });\n }\n // initialize animation\n //If we're visible, or we don't use PageVisibility API\n if(!slider.vars.pauseInvisible || !methods.pauseInvisible.isHidden()) {\n (slider.vars.initDelay > 0) ? slider.startTimeout = setTimeout(slider.play, slider.vars.initDelay) : slider.play();\n }\n }\n\n // ASNAV:\n if (asNav) { methods.asNav.setup(); }\n\n // TOUCH\n if (touch && slider.vars.touch) { methods.touch(); }\n\n // FADE&&SMOOTHHEIGHT || SLIDE:\n if (!fade || (fade && slider.vars.smoothHeight)) { $(window).bind(\"resize orientationchange focus\", methods.resize); }\n\n slider.find(\"img\").attr(\"draggable\", \"false\");\n\n // API: start() Callback\n setTimeout(function(){\n slider.vars.start(slider);\n }, 200);\n },\n asNav: {\n setup: function() {\n slider.asNav = true;\n slider.animatingTo = Math.floor(slider.currentSlide/slider.move);\n slider.currentItem = slider.currentSlide;\n slider.slides.removeClass(namespace + \"active-slide\").eq(slider.currentItem).addClass(namespace + \"active-slide\");\n if(!msGesture){\n slider.slides.on(eventType, function(e){\n e.preventDefault();\n var $slide = $(this),\n target = $slide.index();\n var posFromLeft = $slide.offset().left - $(slider).scrollLeft(); // Find position of slide relative to left of slider container\n if( posFromLeft <= 0 && $slide.hasClass( namespace + 'active-slide' ) ) {\n slider.flexAnimate(slider.getTarget(\"prev\"), true);\n } else if (!$(slider.vars.asNavFor).data('flexslider').animating && !$slide.hasClass(namespace + \"active-slide\")) {\n slider.direction = (slider.currentItem < target) ? \"next\" : \"prev\";\n slider.flexAnimate(target, slider.vars.pauseOnAction, false, true, true);\n }\n });\n }else{\n el._slider = slider;\n slider.slides.each(function (){\n var that = this;\n that._gesture = new MSGesture();\n that._gesture.target = that;\n that.addEventListener(\"MSPointerDown\", function (e){\n e.preventDefault();\n if(e.currentTarget._gesture) {\n e.currentTarget._gesture.addPointer(e.pointerId);\n }\n }, false);\n that.addEventListener(\"MSGestureTap\", function (e){\n e.preventDefault();\n var $slide = $(this),\n target = $slide.index();\n if (!$(slider.vars.asNavFor).data('flexslider').animating && !$slide.hasClass('active')) {\n slider.direction = (slider.currentItem < target) ? \"next\" : \"prev\";\n slider.flexAnimate(target, slider.vars.pauseOnAction, false, true, true);\n }\n });\n });\n }\n }\n },\n controlNav: {\n setup: function() {\n if (!slider.manualControls) {\n methods.controlNav.setupPaging();\n } else { // MANUALCONTROLS:\n methods.controlNav.setupManual();\n }\n },\n setupPaging: function() {\n var type = (slider.vars.controlNav === \"thumbnails\") ? 'control-thumbs' : 'control-paging',\n j = 1,\n item,\n slide;\n\n slider.controlNavScaffold = $('
    ');\n\n if (slider.pagingCount > 1) {\n for (var i = 0; i < slider.pagingCount; i++) {\n slide = slider.slides.eq(i);\n if ( undefined === slide.attr( 'data-thumb-alt' ) ) { slide.attr( 'data-thumb-alt', '' ); }\n var altText = ( '' !== slide.attr( 'data-thumb-alt' ) ) ? altText = ' alt=\"' + slide.attr( 'data-thumb-alt' ) + '\"' : '';\n item = (slider.vars.controlNav === \"thumbnails\") ? '' : '' + j + '';\n if ( 'thumbnails' === slider.vars.controlNav && true === slider.vars.thumbCaptions ) {\n var captn = slide.attr( 'data-thumbcaption' );\n if ( '' !== captn && undefined !== captn ) { item += '' + captn + ''; }\n }\n slider.controlNavScaffold.append('
  1. ' + item + '
  2. ');\n j++;\n }\n }\n\n // CONTROLSCONTAINER:\n (slider.controlsContainer) ? $(slider.controlsContainer).append(slider.controlNavScaffold) : slider.append(slider.controlNavScaffold);\n methods.controlNav.set();\n\n methods.controlNav.active();\n\n slider.controlNavScaffold.delegate('a, img', eventType, function(event) {\n event.preventDefault();\n\n if (watchedEvent === \"\" || watchedEvent === event.type) {\n var $this = $(this),\n target = slider.controlNav.index($this);\n\n if (!$this.hasClass(namespace + 'active')) {\n slider.direction = (target > slider.currentSlide) ? \"next\" : \"prev\";\n slider.flexAnimate(target, slider.vars.pauseOnAction);\n }\n }\n\n // setup flags to prevent event duplication\n if (watchedEvent === \"\") {\n watchedEvent = event.type;\n }\n methods.setToClearWatchedEvent();\n\n });\n },\n setupManual: function() {\n slider.controlNav = slider.manualControls;\n methods.controlNav.active();\n\n slider.controlNav.bind(eventType, function(event) {\n event.preventDefault();\n\n if (watchedEvent === \"\" || watchedEvent === event.type) {\n var $this = $(this),\n target = slider.controlNav.index($this);\n\n if (!$this.hasClass(namespace + 'active')) {\n (target > slider.currentSlide) ? slider.direction = \"next\" : slider.direction = \"prev\";\n slider.flexAnimate(target, slider.vars.pauseOnAction);\n }\n }\n\n // setup flags to prevent event duplication\n if (watchedEvent === \"\") {\n watchedEvent = event.type;\n }\n methods.setToClearWatchedEvent();\n });\n },\n set: function() {\n var selector = (slider.vars.controlNav === \"thumbnails\") ? 'img' : 'a';\n slider.controlNav = $('.' + namespace + 'control-nav li ' + selector, (slider.controlsContainer) ? slider.controlsContainer : slider);\n },\n active: function() {\n slider.controlNav.removeClass(namespace + \"active\").eq(slider.animatingTo).addClass(namespace + \"active\");\n },\n update: function(action, pos) {\n if (slider.pagingCount > 1 && action === \"add\") {\n slider.controlNavScaffold.append($('
  3. ' + slider.count + '
  4. '));\n } else if (slider.pagingCount === 1) {\n slider.controlNavScaffold.find('li').remove();\n } else {\n slider.controlNav.eq(pos).closest('li').remove();\n }\n methods.controlNav.set();\n (slider.pagingCount > 1 && slider.pagingCount !== slider.controlNav.length) ? slider.update(pos, action) : methods.controlNav.active();\n }\n },\n directionNav: {\n setup: function() {\n var directionNavScaffold = $('');\n\n // CUSTOM DIRECTION NAV:\n if (slider.customDirectionNav) {\n slider.directionNav = slider.customDirectionNav;\n // CONTROLSCONTAINER:\n } else if (slider.controlsContainer) {\n $(slider.controlsContainer).append(directionNavScaffold);\n slider.directionNav = $('.' + namespace + 'direction-nav li a', slider.controlsContainer);\n } else {\n slider.append(directionNavScaffold);\n slider.directionNav = $('.' + namespace + 'direction-nav li a', slider);\n }\n\n methods.directionNav.update();\n\n slider.directionNav.bind(eventType, function(event) {\n event.preventDefault();\n var target;\n\n if (watchedEvent === \"\" || watchedEvent === event.type) {\n target = ($(this).hasClass(namespace + 'next')) ? slider.getTarget('next') : slider.getTarget('prev');\n slider.flexAnimate(target, slider.vars.pauseOnAction);\n }\n\n // setup flags to prevent event duplication\n if (watchedEvent === \"\") {\n watchedEvent = event.type;\n }\n methods.setToClearWatchedEvent();\n });\n },\n update: function() {\n var disabledClass = namespace + 'disabled';\n if (slider.pagingCount === 1) {\n slider.directionNav.addClass(disabledClass).attr('tabindex', '-1');\n } else if (!slider.vars.animationLoop) {\n if (slider.animatingTo === 0) {\n slider.directionNav.removeClass(disabledClass).filter('.' + namespace + \"prev\").addClass(disabledClass).attr('tabindex', '-1');\n } else if (slider.animatingTo === slider.last) {\n slider.directionNav.removeClass(disabledClass).filter('.' + namespace + \"next\").addClass(disabledClass).attr('tabindex', '-1');\n } else {\n slider.directionNav.removeClass(disabledClass).removeAttr('tabindex');\n }\n } else {\n slider.directionNav.removeClass(disabledClass).removeAttr('tabindex');\n }\n }\n },\n pausePlay: {\n setup: function() {\n var pausePlayScaffold = $('
    ');\n\n // CONTROLSCONTAINER:\n if (slider.controlsContainer) {\n slider.controlsContainer.append(pausePlayScaffold);\n slider.pausePlay = $('.' + namespace + 'pauseplay a', slider.controlsContainer);\n } else {\n slider.append(pausePlayScaffold);\n slider.pausePlay = $('.' + namespace + 'pauseplay a', slider);\n }\n\n methods.pausePlay.update((slider.vars.slideshow) ? namespace + 'pause' : namespace + 'play');\n\n slider.pausePlay.bind(eventType, function(event) {\n event.preventDefault();\n\n if (watchedEvent === \"\" || watchedEvent === event.type) {\n if ($(this).hasClass(namespace + 'pause')) {\n slider.manualPause = true;\n slider.manualPlay = false;\n slider.pause();\n } else {\n slider.manualPause = false;\n slider.manualPlay = true;\n slider.play();\n }\n }\n\n // setup flags to prevent event duplication\n if (watchedEvent === \"\") {\n watchedEvent = event.type;\n }\n methods.setToClearWatchedEvent();\n });\n },\n update: function(state) {\n (state === \"play\") ? slider.pausePlay.removeClass(namespace + 'pause').addClass(namespace + 'play').html(slider.vars.playText) : slider.pausePlay.removeClass(namespace + 'play').addClass(namespace + 'pause').html(slider.vars.pauseText);\n }\n },\n touch: function() {\n var startX,\n startY,\n offset,\n cwidth,\n dx,\n startT,\n onTouchStart,\n onTouchMove,\n onTouchEnd,\n scrolling = false,\n localX = 0,\n localY = 0,\n accDx = 0;\n\n if(!msGesture){\n onTouchStart = function(e) {\n if (slider.animating) {\n e.preventDefault();\n } else if ( ( window.navigator.msPointerEnabled ) || e.touches.length === 1 ) {\n slider.pause();\n // CAROUSEL:\n cwidth = (vertical) ? slider.h : slider. w;\n startT = Number(new Date());\n // CAROUSEL:\n\n // Local vars for X and Y points.\n localX = e.touches[0].pageX;\n localY = e.touches[0].pageY;\n\n offset = (carousel && reverse && slider.animatingTo === slider.last) ? 0 :\n (carousel && reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo) :\n (carousel && slider.currentSlide === slider.last) ? slider.limit :\n (carousel) ? ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.currentSlide :\n (reverse) ? (slider.last - slider.currentSlide + slider.cloneOffset) * cwidth : (slider.currentSlide + slider.cloneOffset) * cwidth;\n startX = (vertical) ? localY : localX;\n startY = (vertical) ? localX : localY;\n\n el.addEventListener('touchmove', onTouchMove, false);\n el.addEventListener('touchend', onTouchEnd, false);\n }\n };\n\n onTouchMove = function(e) {\n // Local vars for X and Y points.\n\n localX = e.touches[0].pageX;\n localY = e.touches[0].pageY;\n\n dx = (vertical) ? startX - localY : startX - localX;\n scrolling = (vertical) ? (Math.abs(dx) < Math.abs(localX - startY)) : (Math.abs(dx) < Math.abs(localY - startY));\n\n var fxms = 500;\n\n if ( ! scrolling || Number( new Date() ) - startT > fxms ) {\n e.preventDefault();\n if (!fade && slider.transitions) {\n if (!slider.vars.animationLoop) {\n dx = dx/((slider.currentSlide === 0 && dx < 0 || slider.currentSlide === slider.last && dx > 0) ? (Math.abs(dx)/cwidth+2) : 1);\n }\n slider.setProps(offset + dx, \"setTouch\");\n }\n }\n };\n\n onTouchEnd = function(e) {\n // finish the touch by undoing the touch session\n el.removeEventListener('touchmove', onTouchMove, false);\n\n if (slider.animatingTo === slider.currentSlide && !scrolling && !(dx === null)) {\n var updateDx = (reverse) ? -dx : dx,\n target = (updateDx > 0) ? slider.getTarget('next') : slider.getTarget('prev');\n\n if (slider.canAdvance(target) && (Number(new Date()) - startT < 550 && Math.abs(updateDx) > 50 || Math.abs(updateDx) > cwidth/2)) {\n slider.flexAnimate(target, slider.vars.pauseOnAction);\n } else {\n if (!fade) { slider.flexAnimate(slider.currentSlide, slider.vars.pauseOnAction, true); }\n }\n }\n el.removeEventListener('touchend', onTouchEnd, false);\n\n startX = null;\n startY = null;\n dx = null;\n offset = null;\n };\n\n el.addEventListener('touchstart', onTouchStart, false);\n }else{\n el.style.msTouchAction = \"none\";\n el._gesture = new MSGesture();\n el._gesture.target = el;\n el.addEventListener(\"MSPointerDown\", onMSPointerDown, false);\n el._slider = slider;\n el.addEventListener(\"MSGestureChange\", onMSGestureChange, false);\n el.addEventListener(\"MSGestureEnd\", onMSGestureEnd, false);\n\n function onMSPointerDown(e){\n e.stopPropagation();\n if (slider.animating) {\n e.preventDefault();\n }else{\n slider.pause();\n el._gesture.addPointer(e.pointerId);\n accDx = 0;\n cwidth = (vertical) ? slider.h : slider. w;\n startT = Number(new Date());\n // CAROUSEL:\n\n offset = (carousel && reverse && slider.animatingTo === slider.last) ? 0 :\n (carousel && reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo) :\n (carousel && slider.currentSlide === slider.last) ? slider.limit :\n (carousel) ? ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.currentSlide :\n (reverse) ? (slider.last - slider.currentSlide + slider.cloneOffset) * cwidth : (slider.currentSlide + slider.cloneOffset) * cwidth;\n }\n }\n\n function onMSGestureChange(e) {\n e.stopPropagation();\n var slider = e.target._slider;\n if(!slider){\n return;\n }\n var transX = -e.translationX,\n transY = -e.translationY;\n\n //Accumulate translations.\n accDx = accDx + ((vertical) ? transY : transX);\n dx = accDx;\n scrolling = (vertical) ? (Math.abs(accDx) < Math.abs(-transX)) : (Math.abs(accDx) < Math.abs(-transY));\n\n if(e.detail === e.MSGESTURE_FLAG_INERTIA){\n setImmediate(function (){\n el._gesture.stop();\n });\n\n return;\n }\n\n if (!scrolling || Number(new Date()) - startT > 500) {\n e.preventDefault();\n if (!fade && slider.transitions) {\n if (!slider.vars.animationLoop) {\n dx = accDx / ((slider.currentSlide === 0 && accDx < 0 || slider.currentSlide === slider.last && accDx > 0) ? (Math.abs(accDx) / cwidth + 2) : 1);\n }\n slider.setProps(offset + dx, \"setTouch\");\n }\n }\n }\n\n function onMSGestureEnd(e) {\n e.stopPropagation();\n var slider = e.target._slider;\n if(!slider){\n return;\n }\n if (slider.animatingTo === slider.currentSlide && !scrolling && !(dx === null)) {\n var updateDx = (reverse) ? -dx : dx,\n target = (updateDx > 0) ? slider.getTarget('next') : slider.getTarget('prev');\n\n if (slider.canAdvance(target) && (Number(new Date()) - startT < 550 && Math.abs(updateDx) > 50 || Math.abs(updateDx) > cwidth/2)) {\n slider.flexAnimate(target, slider.vars.pauseOnAction);\n } else {\n if (!fade) { slider.flexAnimate(slider.currentSlide, slider.vars.pauseOnAction, true); }\n }\n }\n\n startX = null;\n startY = null;\n dx = null;\n offset = null;\n accDx = 0;\n }\n }\n },\n resize: function() {\n if (!slider.animating && slider.is(':visible')) {\n if (!carousel) { slider.doMath(); }\n\n if (fade) {\n // SMOOTH HEIGHT:\n methods.smoothHeight();\n } else if (carousel) { //CAROUSEL:\n slider.slides.width(slider.computedW);\n slider.update(slider.pagingCount);\n slider.setProps();\n }\n else if (vertical) { //VERTICAL:\n slider.viewport.height(slider.h);\n slider.setProps(slider.h, \"setTotal\");\n } else {\n // SMOOTH HEIGHT:\n if (slider.vars.smoothHeight) { methods.smoothHeight(); }\n slider.newSlides.width(slider.computedW);\n slider.setProps(slider.computedW, \"setTotal\");\n }\n }\n },\n smoothHeight: function(dur) {\n if (!vertical || fade) {\n var $obj = (fade) ? slider : slider.viewport;\n (dur) ? $obj.animate({\"height\": slider.slides.eq(slider.animatingTo).innerHeight()}, dur) : $obj.innerHeight(slider.slides.eq(slider.animatingTo).innerHeight());\n }\n },\n sync: function(action) {\n var $obj = $(slider.vars.sync).data(\"flexslider\"),\n target = slider.animatingTo;\n\n switch (action) {\n case \"animate\": $obj.flexAnimate(target, slider.vars.pauseOnAction, false, true); break;\n case \"play\": if (!$obj.playing && !$obj.asNav) { $obj.play(); } break;\n case \"pause\": $obj.pause(); break;\n }\n },\n uniqueID: function($clone) {\n // Append _clone to current level and children elements with id attributes\n $clone.filter( '[id]' ).add($clone.find( '[id]' )).each(function() {\n var $this = $(this);\n $this.attr( 'id', $this.attr( 'id' ) + '_clone' );\n });\n return $clone;\n },\n pauseInvisible: {\n visProp: null,\n init: function() {\n var visProp = methods.pauseInvisible.getHiddenProp();\n if (visProp) {\n var evtname = visProp.replace(/[H|h]idden/,'') + 'visibilitychange';\n document.addEventListener(evtname, function() {\n if (methods.pauseInvisible.isHidden()) {\n if(slider.startTimeout) {\n clearTimeout(slider.startTimeout); //If clock is ticking, stop timer and prevent from starting while invisible\n } else {\n slider.pause(); //Or just pause\n }\n }\n else {\n if(slider.started) {\n slider.play(); //Initiated before, just play\n } else {\n if (slider.vars.initDelay > 0) {\n setTimeout(slider.play, slider.vars.initDelay);\n } else {\n slider.play(); //Didn't init before: simply init or wait for it\n }\n }\n }\n });\n }\n },\n isHidden: function() {\n var prop = methods.pauseInvisible.getHiddenProp();\n if (!prop) {\n return false;\n }\n return document[prop];\n },\n getHiddenProp: function() {\n var prefixes = ['webkit','moz','ms','o'];\n // if 'hidden' is natively supported just return it\n if ('hidden' in document) {\n return 'hidden';\n }\n // otherwise loop over all the known prefixes until we find one\n for ( var i = 0; i < prefixes.length; i++ ) {\n if ((prefixes[i] + 'Hidden') in document) {\n return prefixes[i] + 'Hidden';\n }\n }\n // otherwise it's not supported\n return null;\n }\n },\n setToClearWatchedEvent: function() {\n clearTimeout(watchedEventClearTimer);\n watchedEventClearTimer = setTimeout(function() {\n watchedEvent = \"\";\n }, 3000);\n }\n };\n\n // public methods\n slider.flexAnimate = function(target, pause, override, withSync, fromNav) {\n if (!slider.vars.animationLoop && target !== slider.currentSlide) {\n slider.direction = (target > slider.currentSlide) ? \"next\" : \"prev\";\n }\n\n if (asNav && slider.pagingCount === 1) slider.direction = (slider.currentItem < target) ? \"next\" : \"prev\";\n\n if (!slider.animating && (slider.canAdvance(target, fromNav) || override) && slider.is(\":visible\")) {\n if (asNav && withSync) {\n var master = $(slider.vars.asNavFor).data('flexslider');\n slider.atEnd = target === 0 || target === slider.count - 1;\n master.flexAnimate(target, true, false, true, fromNav);\n slider.direction = (slider.currentItem < target) ? \"next\" : \"prev\";\n master.direction = slider.direction;\n\n if (Math.ceil((target + 1)/slider.visible) - 1 !== slider.currentSlide && target !== 0) {\n slider.currentItem = target;\n slider.slides.removeClass(namespace + \"active-slide\").eq(target).addClass(namespace + \"active-slide\");\n target = Math.floor(target/slider.visible);\n } else {\n slider.currentItem = target;\n slider.slides.removeClass(namespace + \"active-slide\").eq(target).addClass(namespace + \"active-slide\");\n return false;\n }\n }\n\n slider.animating = true;\n slider.animatingTo = target;\n\n // SLIDESHOW:\n if (pause) { slider.pause(); }\n\n // API: before() animation Callback\n slider.vars.before(slider);\n\n // SYNC:\n if (slider.syncExists && !fromNav) { methods.sync(\"animate\"); }\n\n // CONTROLNAV\n if (slider.vars.controlNav) { methods.controlNav.active(); }\n\n // !CAROUSEL:\n // CANDIDATE: slide active class (for add/remove slide)\n if (!carousel) { slider.slides.removeClass(namespace + 'active-slide').eq(target).addClass(namespace + 'active-slide'); }\n\n // INFINITE LOOP:\n // CANDIDATE: atEnd\n slider.atEnd = target === 0 || target === slider.last;\n\n // DIRECTIONNAV:\n if (slider.vars.directionNav) { methods.directionNav.update(); }\n\n if (target === slider.last) {\n // API: end() of cycle Callback\n slider.vars.end(slider);\n // SLIDESHOW && !INFINITE LOOP:\n if (!slider.vars.animationLoop) { slider.pause(); }\n }\n\n // SLIDE:\n if (!fade) {\n var dimension = (vertical) ? slider.slides.filter(':first').height() : slider.computedW,\n margin, slideString, calcNext;\n\n // INFINITE LOOP / REVERSE:\n if (carousel) {\n margin = slider.vars.itemMargin;\n calcNext = ((slider.itemW + margin) * slider.move) * slider.animatingTo;\n slideString = (calcNext > slider.limit && slider.visible !== 1) ? slider.limit : calcNext;\n } else if (slider.currentSlide === 0 && target === slider.count - 1 && slider.vars.animationLoop && slider.direction !== \"next\") {\n slideString = (reverse) ? (slider.count + slider.cloneOffset) * dimension : 0;\n } else if (slider.currentSlide === slider.last && target === 0 && slider.vars.animationLoop && slider.direction !== \"prev\") {\n slideString = (reverse) ? 0 : (slider.count + 1) * dimension;\n } else {\n slideString = (reverse) ? ((slider.count - 1) - target + slider.cloneOffset) * dimension : (target + slider.cloneOffset) * dimension;\n }\n slider.setProps(slideString, \"\", slider.vars.animationSpeed);\n if (slider.transitions) {\n if (!slider.vars.animationLoop || !slider.atEnd) {\n slider.animating = false;\n slider.currentSlide = slider.animatingTo;\n }\n\n // Unbind previous transitionEnd events and re-bind new transitionEnd event\n slider.container.unbind(\"webkitTransitionEnd transitionend\");\n slider.container.bind(\"webkitTransitionEnd transitionend\", function() {\n clearTimeout(slider.ensureAnimationEnd);\n slider.wrapup(dimension);\n });\n\n // Insurance for the ever-so-fickle transitionEnd event\n clearTimeout(slider.ensureAnimationEnd);\n slider.ensureAnimationEnd = setTimeout(function() {\n slider.wrapup(dimension);\n }, slider.vars.animationSpeed + 100);\n\n } else {\n slider.container.animate(slider.args, slider.vars.animationSpeed, slider.vars.easing, function(){\n slider.wrapup(dimension);\n });\n }\n } else { // FADE:\n if (!touch) {\n slider.slides.eq(slider.currentSlide).css({\"zIndex\": 1}).animate({\"opacity\": 0}, slider.vars.animationSpeed, slider.vars.easing);\n slider.slides.eq(target).css({\"zIndex\": 2}).animate({\"opacity\": 1}, slider.vars.animationSpeed, slider.vars.easing, slider.wrapup);\n } else {\n slider.slides.eq(slider.currentSlide).css({ \"opacity\": 0, \"zIndex\": 1 });\n slider.slides.eq(target).css({ \"opacity\": 1, \"zIndex\": 2 });\n slider.wrapup(dimension);\n }\n }\n // SMOOTH HEIGHT:\n if (slider.vars.smoothHeight) { methods.smoothHeight(slider.vars.animationSpeed); }\n }\n };\n slider.wrapup = function(dimension) {\n // SLIDE:\n if (!fade && !carousel) {\n if (slider.currentSlide === 0 && slider.animatingTo === slider.last && slider.vars.animationLoop) {\n slider.setProps(dimension, \"jumpEnd\");\n } else if (slider.currentSlide === slider.last && slider.animatingTo === 0 && slider.vars.animationLoop) {\n slider.setProps(dimension, \"jumpStart\");\n }\n }\n slider.animating = false;\n slider.currentSlide = slider.animatingTo;\n // API: after() animation Callback\n slider.vars.after(slider);\n };\n\n // SLIDESHOW:\n slider.animateSlides = function() {\n if (!slider.animating && focused ) { slider.flexAnimate(slider.getTarget(\"next\")); }\n };\n // SLIDESHOW:\n slider.pause = function() {\n clearInterval(slider.animatedSlides);\n slider.animatedSlides = null;\n slider.playing = false;\n // PAUSEPLAY:\n if (slider.vars.pausePlay) { methods.pausePlay.update(\"play\"); }\n // SYNC:\n if (slider.syncExists) { methods.sync(\"pause\"); }\n };\n // SLIDESHOW:\n slider.play = function() {\n if (slider.playing) { clearInterval(slider.animatedSlides); }\n slider.animatedSlides = slider.animatedSlides || setInterval(slider.animateSlides, slider.vars.slideshowSpeed);\n slider.started = slider.playing = true;\n // PAUSEPLAY:\n if (slider.vars.pausePlay) { methods.pausePlay.update(\"pause\"); }\n // SYNC:\n if (slider.syncExists) { methods.sync(\"play\"); }\n };\n // STOP:\n slider.stop = function () {\n slider.pause();\n slider.stopped = true;\n };\n slider.canAdvance = function(target, fromNav) {\n // ASNAV:\n var last = (asNav) ? slider.pagingCount - 1 : slider.last;\n return (fromNav) ? true :\n (asNav && slider.currentItem === slider.count - 1 && target === 0 && slider.direction === \"prev\") ? true :\n (asNav && slider.currentItem === 0 && target === slider.pagingCount - 1 && slider.direction !== \"next\") ? false :\n (target === slider.currentSlide && !asNav) ? false :\n (slider.vars.animationLoop) ? true :\n (slider.atEnd && slider.currentSlide === 0 && target === last && slider.direction !== \"next\") ? false :\n (slider.atEnd && slider.currentSlide === last && target === 0 && slider.direction === \"next\") ? false :\n true;\n };\n slider.getTarget = function(dir) {\n slider.direction = dir;\n if (dir === \"next\") {\n return (slider.currentSlide === slider.last) ? 0 : slider.currentSlide + 1;\n } else {\n return (slider.currentSlide === 0) ? slider.last : slider.currentSlide - 1;\n }\n };\n\n // SLIDE:\n slider.setProps = function(pos, special, dur) {\n var target = (function() {\n var posCheck = (pos) ? pos : ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo,\n posCalc = (function() {\n if (carousel) {\n return (special === \"setTouch\") ? pos :\n (reverse && slider.animatingTo === slider.last) ? 0 :\n (reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo) :\n (slider.animatingTo === slider.last) ? slider.limit : posCheck;\n } else {\n switch (special) {\n case \"setTotal\": return (reverse) ? ((slider.count - 1) - slider.currentSlide + slider.cloneOffset) * pos : (slider.currentSlide + slider.cloneOffset) * pos;\n case \"setTouch\": return (reverse) ? pos : pos;\n case \"jumpEnd\": return (reverse) ? pos : slider.count * pos;\n case \"jumpStart\": return (reverse) ? slider.count * pos : pos;\n default: return pos;\n }\n }\n }());\n\n return (posCalc * -1) + \"px\";\n }());\n\n if (slider.transitions) {\n target = (vertical) ? \"translate3d(0,\" + target + \",0)\" : \"translate3d(\" + target + \",0,0)\";\n dur = (dur !== undefined) ? (dur/1000) + \"s\" : \"0s\";\n slider.container.css(\"-\" + slider.pfx + \"-transition-duration\", dur);\n slider.container.css(\"transition-duration\", dur);\n }\n\n slider.args[slider.prop] = target;\n if (slider.transitions || dur === undefined) { slider.container.css(slider.args); }\n\n slider.container.css('transform',target);\n };\n\n slider.setup = function(type) {\n // SLIDE:\n if (!fade) {\n var sliderOffset, arr;\n\n if (type === \"init\") {\n slider.viewport = $('
    ').css({\"overflow\": \"hidden\", \"position\": \"relative\"}).appendTo(slider).append(slider.container);\n // INFINITE LOOP:\n slider.cloneCount = 0;\n slider.cloneOffset = 0;\n // REVERSE:\n if (reverse) {\n arr = $.makeArray(slider.slides).reverse();\n slider.slides = $(arr);\n slider.container.empty().append(slider.slides);\n }\n }\n // INFINITE LOOP && !CAROUSEL:\n if (slider.vars.animationLoop && !carousel) {\n slider.cloneCount = 2;\n slider.cloneOffset = 1;\n // clear out old clones\n if (type !== \"init\") { slider.container.find('.clone').remove(); }\n slider.container.append(methods.uniqueID(slider.slides.first().clone().addClass('clone')).attr('aria-hidden', 'true'))\n .prepend(methods.uniqueID(slider.slides.last().clone().addClass('clone')).attr('aria-hidden', 'true'));\n }\n slider.newSlides = $(slider.vars.selector, slider);\n\n sliderOffset = (reverse) ? slider.count - 1 - slider.currentSlide + slider.cloneOffset : slider.currentSlide + slider.cloneOffset;\n // VERTICAL:\n if (vertical && !carousel) {\n slider.container.height((slider.count + slider.cloneCount) * 200 + \"%\").css(\"position\", \"absolute\").width(\"100%\");\n setTimeout(function(){\n slider.newSlides.css({\"display\": \"block\"});\n slider.doMath();\n slider.viewport.height(slider.h);\n slider.setProps(sliderOffset * slider.h, \"init\");\n }, (type === \"init\") ? 100 : 0);\n } else {\n slider.container.width((slider.count + slider.cloneCount) * 200 + \"%\");\n slider.setProps(sliderOffset * slider.computedW, \"init\");\n setTimeout(function(){\n slider.doMath();\n slider.newSlides.css({\"width\": slider.computedW, \"marginRight\" : slider.computedM, \"float\": \"left\", \"display\": \"block\"});\n // SMOOTH HEIGHT:\n if (slider.vars.smoothHeight) { methods.smoothHeight(); }\n }, (type === \"init\") ? 100 : 0);\n }\n } else { // FADE:\n slider.slides.css({\"width\": \"100%\", \"float\": \"left\", \"marginRight\": \"-100%\", \"position\": \"relative\"});\n if (type === \"init\") {\n if (!touch) {\n //slider.slides.eq(slider.currentSlide).fadeIn(slider.vars.animationSpeed, slider.vars.easing);\n if (slider.vars.fadeFirstSlide == false) {\n slider.slides.css({ \"opacity\": 0, \"display\": \"block\", \"zIndex\": 1 }).eq(slider.currentSlide).css({\"zIndex\": 2}).css({\"opacity\": 1});\n } else {\n slider.slides.css({ \"opacity\": 0, \"display\": \"block\", \"zIndex\": 1 }).eq(slider.currentSlide).css({\"zIndex\": 2}).animate({\"opacity\": 1},slider.vars.animationSpeed,slider.vars.easing);\n }\n } else {\n slider.slides.css({ \"opacity\": 0, \"display\": \"block\", \"webkitTransition\": \"opacity \" + slider.vars.animationSpeed / 1000 + \"s ease\", \"zIndex\": 1 }).eq(slider.currentSlide).css({ \"opacity\": 1, \"zIndex\": 2});\n }\n }\n // SMOOTH HEIGHT:\n if (slider.vars.smoothHeight) { methods.smoothHeight(); }\n }\n // !CAROUSEL:\n // CANDIDATE: active slide\n if (!carousel) { slider.slides.removeClass(namespace + \"active-slide\").eq(slider.currentSlide).addClass(namespace + \"active-slide\"); }\n\n //FlexSlider: init() Callback\n slider.vars.init(slider);\n };\n\n slider.doMath = function() {\n var slide = slider.slides.first(),\n slideMargin = slider.vars.itemMargin,\n minItems = slider.vars.minItems,\n maxItems = slider.vars.maxItems;\n\n slider.w = (slider.viewport===undefined) ? slider.width() : slider.viewport.width();\n slider.h = slide.height();\n slider.boxPadding = slide.outerWidth() - slide.width();\n\n // CAROUSEL:\n if (carousel) {\n slider.itemT = slider.vars.itemWidth + slideMargin;\n slider.itemM = slideMargin;\n slider.minW = (minItems) ? minItems * slider.itemT : slider.w;\n slider.maxW = (maxItems) ? (maxItems * slider.itemT) - slideMargin : slider.w;\n slider.itemW = (slider.minW > slider.w) ? (slider.w - (slideMargin * (minItems - 1)))/minItems :\n (slider.maxW < slider.w) ? (slider.w - (slideMargin * (maxItems - 1)))/maxItems :\n (slider.vars.itemWidth > slider.w) ? slider.w : slider.vars.itemWidth;\n\n slider.visible = Math.floor(slider.w/(slider.itemW));\n slider.move = (slider.vars.move > 0 && slider.vars.move < slider.visible ) ? slider.vars.move : slider.visible;\n slider.pagingCount = Math.ceil(((slider.count - slider.visible)/slider.move) + 1);\n slider.last = slider.pagingCount - 1;\n slider.limit = (slider.pagingCount === 1) ? 0 :\n (slider.vars.itemWidth > slider.w) ? (slider.itemW * (slider.count - 1)) + (slideMargin * (slider.count - 1)) : ((slider.itemW + slideMargin) * slider.count) - slider.w - slideMargin;\n } else {\n slider.itemW = slider.w;\n slider.itemM = slideMargin;\n slider.pagingCount = slider.count;\n slider.last = slider.count - 1;\n }\n slider.computedW = slider.itemW - slider.boxPadding;\n slider.computedM = slider.itemM;\n };\n\n slider.update = function(pos, action) {\n slider.doMath();\n\n // update currentSlide and slider.animatingTo if necessary\n if (!carousel) {\n if (pos < slider.currentSlide) {\n slider.currentSlide += 1;\n } else if (pos <= slider.currentSlide && pos !== 0) {\n slider.currentSlide -= 1;\n }\n slider.animatingTo = slider.currentSlide;\n }\n\n // update controlNav\n if (slider.vars.controlNav && !slider.manualControls) {\n if ((action === \"add\" && !carousel) || slider.pagingCount > slider.controlNav.length) {\n methods.controlNav.update(\"add\");\n } else if ((action === \"remove\" && !carousel) || slider.pagingCount < slider.controlNav.length) {\n if (carousel && slider.currentSlide > slider.last) {\n slider.currentSlide -= 1;\n slider.animatingTo -= 1;\n }\n methods.controlNav.update(\"remove\", slider.last);\n }\n }\n // update directionNav\n if (slider.vars.directionNav) { methods.directionNav.update(); }\n\n };\n\n slider.addSlide = function(obj, pos) {\n var $obj = $(obj);\n\n slider.count += 1;\n slider.last = slider.count - 1;\n\n // append new slide\n if (vertical && reverse) {\n (pos !== undefined) ? slider.slides.eq(slider.count - pos).after($obj) : slider.container.prepend($obj);\n } else {\n (pos !== undefined) ? slider.slides.eq(pos).before($obj) : slider.container.append($obj);\n }\n\n // update currentSlide, animatingTo, controlNav, and directionNav\n slider.update(pos, \"add\");\n\n // update slider.slides\n slider.slides = $(slider.vars.selector + ':not(.clone)', slider);\n // re-setup the slider to accomdate new slide\n slider.setup();\n\n //FlexSlider: added() Callback\n slider.vars.added(slider);\n };\n slider.removeSlide = function(obj) {\n var pos = (isNaN(obj)) ? slider.slides.index($(obj)) : obj;\n\n // update count\n slider.count -= 1;\n slider.last = slider.count - 1;\n\n // remove slide\n if (isNaN(obj)) {\n $(obj, slider.slides).remove();\n } else {\n (vertical && reverse) ? slider.slides.eq(slider.last).remove() : slider.slides.eq(obj).remove();\n }\n\n // update currentSlide, animatingTo, controlNav, and directionNav\n slider.doMath();\n slider.update(pos, \"remove\");\n\n // update slider.slides\n slider.slides = $(slider.vars.selector + ':not(.clone)', slider);\n // re-setup the slider to accomdate new slide\n slider.setup();\n\n // FlexSlider: removed() Callback\n slider.vars.removed(slider);\n };\n\n //FlexSlider: Initialize\n methods.init();\n };\n\n // Ensure the slider isn't focussed if the window loses focus.\n $( window ).blur( function ( e ) {\n focused = false;\n }).focus( function ( e ) {\n focused = true;\n });\n\n //FlexSlider: Default Settings\n $.flexslider.defaults = {\n namespace: \"flex-\", //{NEW} String: Prefix string attached to the class of every element generated by the plugin\n selector: \".slides > li\", //{NEW} Selector: Must match a simple pattern. '{container} > {slide}' -- Ignore pattern at your own peril\n animation: \"fade\", //String: Select your animation type, \"fade\" or \"slide\"\n easing: \"swing\", //{NEW} String: Determines the easing method used in jQuery transitions. jQuery easing plugin is supported!\n direction: \"horizontal\", //String: Select the sliding direction, \"horizontal\" or \"vertical\"\n reverse: false, //{NEW} Boolean: Reverse the animation direction\n animationLoop: true, //Boolean: Should the animation loop? If false, directionNav will received \"disable\" classes at either end\n smoothHeight: false, //{NEW} Boolean: Allow height of the slider to animate smoothly in horizontal mode\n startAt: 0, //Integer: The slide that the slider should start on. Array notation (0 = first slide)\n slideshow: true, //Boolean: Animate slider automatically\n slideshowSpeed: 7000, //Integer: Set the speed of the slideshow cycling, in milliseconds\n animationSpeed: 600, //Integer: Set the speed of animations, in milliseconds\n initDelay: 0, //{NEW} Integer: Set an initialization delay, in milliseconds\n randomize: false, //Boolean: Randomize slide order\n fadeFirstSlide: true, //Boolean: Fade in the first slide when animation type is \"fade\"\n thumbCaptions: false, //Boolean: Whether or not to put captions on thumbnails when using the \"thumbnails\" controlNav.\n\n // Usability features\n pauseOnAction: true, //Boolean: Pause the slideshow when interacting with control elements, highly recommended.\n pauseOnHover: false, //Boolean: Pause the slideshow when hovering over slider, then resume when no longer hovering\n pauseInvisible: true, \t\t//{NEW} Boolean: Pause the slideshow when tab is invisible, resume when visible. Provides better UX, lower CPU usage.\n useCSS: true, //{NEW} Boolean: Slider will use CSS3 transitions if available\n touch: true, //{NEW} Boolean: Allow touch swipe navigation of the slider on touch-enabled devices\n video: false, //{NEW} Boolean: If using video in the slider, will prevent CSS3 3D Transforms to avoid graphical glitches\n\n // Primary Controls\n controlNav: true, //Boolean: Create navigation for paging control of each slide? Note: Leave true for manualControls usage\n directionNav: true, //Boolean: Create navigation for previous/next navigation? (true/false)\n prevText: \"Previous\", //String: Set the text for the \"previous\" directionNav item\n nextText: \"Next\", //String: Set the text for the \"next\" directionNav item\n\n // Secondary Navigation\n keyboard: true, //Boolean: Allow slider navigating via keyboard left/right keys\n multipleKeyboard: false, //{NEW} Boolean: Allow keyboard navigation to affect multiple sliders. Default behavior cuts out keyboard navigation with more than one slider present.\n mousewheel: false, //{UPDATED} Boolean: Requires jquery.mousewheel.js (https://github.com/brandonaaron/jquery-mousewheel) - Allows slider navigating via mousewheel\n pausePlay: false, //Boolean: Create pause/play dynamic element\n pauseText: \"Pause\", //String: Set the text for the \"pause\" pausePlay item\n playText: \"Play\", //String: Set the text for the \"play\" pausePlay item\n\n // Special properties\n controlsContainer: \"\", //{UPDATED} jQuery Object/Selector: Declare which container the navigation elements should be appended too. Default container is the FlexSlider element. Example use would be $(\".flexslider-container\"). Property is ignored if given element is not found.\n manualControls: \"\", //{UPDATED} jQuery Object/Selector: Declare custom control navigation. Examples would be $(\".flex-control-nav li\") or \"#tabs-nav li img\", etc. The number of elements in your controlNav should match the number of slides/tabs.\n customDirectionNav: \"\", //{NEW} jQuery Object/Selector: Custom prev / next button. Must be two jQuery elements. In order to make the events work they have to have the classes \"prev\" and \"next\" (plus namespace)\n sync: \"\", //{NEW} Selector: Mirror the actions performed on this slider with another slider. Use with care.\n asNavFor: \"\", //{NEW} Selector: Internal property exposed for turning the slider into a thumbnail navigation for another slider\n\n // Carousel Options\n itemWidth: 0, //{NEW} Integer: Box-model width of individual carousel items, including horizontal borders and padding.\n itemMargin: 0, //{NEW} Integer: Margin between carousel items.\n minItems: 1, //{NEW} Integer: Minimum number of carousel items that should be visible. Items will resize fluidly when below this.\n maxItems: 0, //{NEW} Integer: Maxmimum number of carousel items that should be visible. Items will resize fluidly when above this limit.\n move: 0, //{NEW} Integer: Number of carousel items that should move on animation. If 0, slider will move all visible items.\n allowOneSlide: true, //{NEW} Boolean: Whether or not to allow a slider comprised of a single slide\n\n // Callback API\n start: function(){}, //Callback: function(slider) - Fires when the slider loads the first slide\n before: function(){}, //Callback: function(slider) - Fires asynchronously with each slider animation\n after: function(){}, //Callback: function(slider) - Fires after each slider animation completes\n end: function(){}, //Callback: function(slider) - Fires when the slider reaches the last slide (asynchronous)\n added: function(){}, //{NEW} Callback: function(slider) - Fires after a slide is added\n removed: function(){}, //{NEW} Callback: function(slider) - Fires after a slide is removed\n init: function() {} //{NEW} Callback: function(slider) - Fires after the slider is initially setup\n };\n\n //FlexSlider: Plugin Function\n $.fn.flexslider = function(options) {\n if (options === undefined) { options = {}; }\n\n if (typeof options === \"object\") {\n return this.each(function() {\n var $this = $(this),\n selector = (options.selector) ? options.selector : \".slides > li\",\n $slides = $this.find(selector);\n\n if ( ( $slides.length === 1 && options.allowOneSlide === false ) || $slides.length === 0 ) {\n $slides.fadeIn(400);\n if (options.start) { options.start($this); }\n } else if ($this.data('flexslider') === undefined) {\n new $.flexslider(this, options);\n }\n });\n } else {\n // Helper strings to quickly perform functions on the slider\n var $slider = $(this).data('flexslider');\n switch (options) {\n case \"play\": $slider.play(); break;\n case \"pause\": $slider.pause(); break;\n case \"stop\": $slider.stop(); break;\n case \"next\": $slider.flexAnimate($slider.getTarget(\"next\"), true); break;\n case \"prev\":\n case \"previous\": $slider.flexAnimate($slider.getTarget(\"prev\"), true); break;\n default: if (typeof options === \"number\") { $slider.flexAnimate(options, true); }\n }\n }\n };\n})(jQuery);\n","/*! DataTables 1.10.13\n * ©2008-2016 SpryMedia Ltd - datatables.net/license\n */\n\n/**\n * @summary DataTables\n * @description Paginate, search and order HTML tables\n * @version 1.10.13\n * @file jquery.dataTables.js\n * @author SpryMedia Ltd\n * @contact www.datatables.net\n * @copyright Copyright 2008-2016 SpryMedia Ltd.\n *\n * This source file is free software, available under the following license:\n * MIT license - http://datatables.net/license\n *\n * This source file is distributed in the hope that it will be useful, but\n * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\n * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.\n *\n * For details please refer to: http://www.datatables.net\n */\n\n/*jslint evil: true, undef: true, browser: true */\n/*globals $,require,jQuery,define,_selector_run,_selector_opts,_selector_first,_selector_row_indexes,_ext,_Api,_api_register,_api_registerPlural,_re_new_lines,_re_html,_re_formatted_numeric,_re_escape_regex,_empty,_intVal,_numToDecimal,_isNumber,_isHtml,_htmlNumeric,_pluck,_pluck_order,_range,_stripHtml,_unique,_fnBuildAjax,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnAjaxDataSrc,_fnAddColumn,_fnColumnOptions,_fnAdjustColumnSizing,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnVisbleColumns,_fnGetColumns,_fnColumnTypes,_fnApplyColumnDefs,_fnHungarianMap,_fnCamelToHungarian,_fnLanguageCompat,_fnBrowserDetect,_fnAddData,_fnAddTr,_fnNodeToDataIndex,_fnNodeToColumnIndex,_fnGetCellData,_fnSetCellData,_fnSplitObjNotation,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnGetDataMaster,_fnClearTable,_fnDeleteIndex,_fnInvalidate,_fnGetRowElements,_fnCreateTr,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAddOptionsHtml,_fnDetectHeader,_fnGetUniqueThs,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnFilterCreateSearch,_fnEscapeRegex,_fnFilterData,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnInfoMacros,_fnInitialise,_fnInitComplete,_fnLengthChange,_fnFeatureHtmlLength,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnFeatureHtmlTable,_fnScrollDraw,_fnApplyToChildren,_fnCalculateColumnWidths,_fnThrottle,_fnConvertToWidth,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnSortFlatten,_fnSort,_fnSortAria,_fnSortListener,_fnSortAttachListener,_fnSortingClasses,_fnSortData,_fnSaveState,_fnLoadState,_fnSettingsFromNode,_fnLog,_fnMap,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnLengthOverflow,_fnRenderer,_fnDataSource,_fnRowAttributes*/\n\n(function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === 'function' && define.amd ) {\n\t\t// AMD\n\t\tdefine( ['jquery'], function ( $ ) {\n\t\t\treturn factory( $, window, document );\n\t\t} );\n\t}\n\telse if ( typeof exports === 'object' ) {\n\t\t// CommonJS\n\t\tmodule.exports = function (root, $) {\n\t\t\tif ( ! root ) {\n\t\t\t\t// CommonJS environments without a window global must pass a\n\t\t\t\t// root. This will give an error otherwise\n\t\t\t\troot = window;\n\t\t\t}\n\n\t\t\tif ( ! $ ) {\n\t\t\t\t$ = typeof window !== 'undefined' ? // jQuery's factory checks for a global window\n\t\t\t\t\trequire('jquery') :\n\t\t\t\t\trequire('jquery')( root );\n\t\t\t}\n\n\t\t\treturn factory( $, root, root.document );\n\t\t};\n\t}\n\telse {\n\t\t// Browser\n\t\tfactory( jQuery, window, document );\n\t}\n}\n(function( $, window, document, undefined ) {\n\t\"use strict\";\n\n\t/**\n\t * DataTables is a plug-in for the jQuery Javascript library. It is a highly\n\t * flexible tool, based upon the foundations of progressive enhancement,\n\t * which will add advanced interaction controls to any HTML table. For a\n\t * full list of features please refer to\n\t * [DataTables.net](href=\"http://datatables.net).\n\t *\n\t * Note that the `DataTable` object is not a global variable but is aliased\n\t * to `jQuery.fn.DataTable` and `jQuery.fn.dataTable` through which it may\n\t * be accessed.\n\t *\n\t * @class\n\t * @param {object} [init={}] Configuration object for DataTables. Options\n\t * are defined by {@link DataTable.defaults}\n\t * @requires jQuery 1.7+\n\t *\n\t * @example\n\t * // Basic initialisation\n\t * $(document).ready( function {\n\t * $('#example').dataTable();\n\t * } );\n\t *\n\t * @example\n\t * // Initialisation with configuration options - in this case, disable\n\t * // pagination and sorting.\n\t * $(document).ready( function {\n\t * $('#example').dataTable( {\n\t * \"paginate\": false,\n\t * \"sort\": false\n\t * } );\n\t * } );\n\t */\n\tvar DataTable = function ( options )\n\t{\n\t\t/**\n\t\t * Perform a jQuery selector action on the table's TR elements (from the tbody) and\n\t\t * return the resulting jQuery object.\n\t\t * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n\t\t * @param {object} [oOpts] Optional parameters for modifying the rows to be included\n\t\t * @param {string} [oOpts.filter=none] Select TR elements that meet the current filter\n\t\t * criterion (\"applied\") or all TR elements (i.e. no filter).\n\t\t * @param {string} [oOpts.order=current] Order of the TR elements in the processed array.\n\t\t * Can be either 'current', whereby the current sorting of the table is used, or\n\t\t * 'original' whereby the original order the data was read into the table is used.\n\t\t * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n\t\t * (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be\n\t\t * 'current' and filter is 'applied', regardless of what they might be given as.\n\t\t * @returns {object} jQuery object, filtered by the given selector.\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Highlight every second row\n\t\t * oTable.$('tr:odd').css('backgroundColor', 'blue');\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Filter to rows with 'Webkit' in them, add a background colour and then\n\t\t * // remove the filter, thus highlighting the 'Webkit' rows only.\n\t\t * oTable.fnFilter('Webkit');\n\t\t * oTable.$('tr', {\"search\": \"applied\"}).css('backgroundColor', 'blue');\n\t\t * oTable.fnFilter('');\n\t\t * } );\n\t\t */\n\t\tthis.$ = function ( sSelector, oOpts )\n\t\t{\n\t\t\treturn this.api(true).$( sSelector, oOpts );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Almost identical to $ in operation, but in this case returns the data for the matched\n\t\t * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes\n\t\t * rather than any descendants, so the data can be obtained for the row/cell. If matching\n\t\t * rows are found, the data returned is the original data array/object that was used to\n\t\t * create the row (or a generated array if from a DOM source).\n\t\t *\n\t\t * This method is often useful in-combination with $ where both functions are given the\n\t\t * same parameters and the array indexes will match identically.\n\t\t * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n\t\t * @param {object} [oOpts] Optional parameters for modifying the rows to be included\n\t\t * @param {string} [oOpts.filter=none] Select elements that meet the current filter\n\t\t * criterion (\"applied\") or all elements (i.e. no filter).\n\t\t * @param {string} [oOpts.order=current] Order of the data in the processed array.\n\t\t * Can be either 'current', whereby the current sorting of the table is used, or\n\t\t * 'original' whereby the original order the data was read into the table is used.\n\t\t * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n\t\t * (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be\n\t\t * 'current' and filter is 'applied', regardless of what they might be given as.\n\t\t * @returns {array} Data for the matched elements. If any elements, as a result of the\n\t\t * selector, were not TR, TD or TH elements in the DataTable, they will have a null\n\t\t * entry in the array.\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Get the data from the first row in the table\n\t\t * var data = oTable._('tr:first');\n\t\t *\n\t\t * // Do something useful with the data\n\t\t * alert( \"First cell is: \"+data[0] );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Filter to 'Webkit' and get all data for\n\t\t * oTable.fnFilter('Webkit');\n\t\t * var data = oTable._('tr', {\"search\": \"applied\"});\n\t\t *\n\t\t * // Do something with the data\n\t\t * alert( data.length+\" rows matched the search\" );\n\t\t * } );\n\t\t */\n\t\tthis._ = function ( sSelector, oOpts )\n\t\t{\n\t\t\treturn this.api(true).rows( sSelector, oOpts ).data();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Create a DataTables Api instance, with the currently selected tables for\n\t\t * the Api's context.\n\t\t * @param {boolean} [traditional=false] Set the API instance's context to be\n\t\t * only the table referred to by the `DataTable.ext.iApiIndex` option, as was\n\t\t * used in the API presented by DataTables 1.9- (i.e. the traditional mode),\n\t\t * or if all tables captured in the jQuery object should be used.\n\t\t * @return {DataTables.Api}\n\t\t */\n\t\tthis.api = function ( traditional )\n\t\t{\n\t\t\treturn traditional ?\n\t\t\t\tnew _Api(\n\t\t\t\t\t_fnSettingsFromNode( this[ _ext.iApiIndex ] )\n\t\t\t\t) :\n\t\t\t\tnew _Api( this );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Add a single new row or multiple rows of data to the table. Please note\n\t\t * that this is suitable for client-side processing only - if you are using\n\t\t * server-side processing (i.e. \"bServerSide\": true), then to add data, you\n\t\t * must add it to the data source, i.e. the server-side, through an Ajax call.\n\t\t * @param {array|object} data The data to be added to the table. This can be:\n\t\t *
      \n\t\t *
    • 1D array of data - add a single row with the data provided
    • \n\t\t *
    • 2D array of arrays - add multiple rows in a single call
    • \n\t\t *
    • object - data object when using mData
    • \n\t\t *
    • array of objects - multiple data objects when using mData
    • \n\t\t *
    \n\t\t * @param {bool} [redraw=true] redraw the table or not\n\t\t * @returns {array} An array of integers, representing the list of indexes in\n\t\t * aoData ({@link DataTable.models.oSettings}) that have been added to\n\t\t * the table.\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * // Global var for counter\n\t\t * var giCount = 2;\n\t\t *\n\t\t * $(document).ready(function() {\n\t\t * $('#example').dataTable();\n\t\t * } );\n\t\t *\n\t\t * function fnClickAddRow() {\n\t\t * $('#example').dataTable().fnAddData( [\n\t\t * giCount+\".1\",\n\t\t * giCount+\".2\",\n\t\t * giCount+\".3\",\n\t\t * giCount+\".4\" ]\n\t\t * );\n\t\t *\n\t\t * giCount++;\n\t\t * }\n\t\t */\n\t\tthis.fnAddData = function( data, redraw )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\t/* Check if we want to add multiple rows or not */\n\t\t\tvar rows = $.isArray(data) && ( $.isArray(data[0]) || $.isPlainObject(data[0]) ) ?\n\t\t\t\tapi.rows.add( data ) :\n\t\t\t\tapi.row.add( data );\n\t\t\n\t\t\tif ( redraw === undefined || redraw ) {\n\t\t\t\tapi.draw();\n\t\t\t}\n\t\t\n\t\t\treturn rows.flatten().toArray();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * This function will make DataTables recalculate the column sizes, based on the data\n\t\t * contained in the table and the sizes applied to the columns (in the DOM, CSS or\n\t\t * through the sWidth parameter). This can be useful when the width of the table's\n\t\t * parent element changes (for example a window resize).\n\t\t * @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable( {\n\t\t * \"sScrollY\": \"200px\",\n\t\t * \"bPaginate\": false\n\t\t * } );\n\t\t *\n\t\t * $(window).on('resize', function () {\n\t\t * oTable.fnAdjustColumnSizing();\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\tthis.fnAdjustColumnSizing = function ( bRedraw )\n\t\t{\n\t\t\tvar api = this.api( true ).columns.adjust();\n\t\t\tvar settings = api.settings()[0];\n\t\t\tvar scroll = settings.oScroll;\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.draw( false );\n\t\t\t}\n\t\t\telse if ( scroll.sX !== \"\" || scroll.sY !== \"\" ) {\n\t\t\t\t/* If not redrawing, but scrolling, we want to apply the new column sizes anyway */\n\t\t\t\t_fnScrollDraw( settings );\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Quickly and simply clear a table\n\t\t * @param {bool} [bRedraw=true] redraw the table or not\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...)\n\t\t * oTable.fnClearTable();\n\t\t * } );\n\t\t */\n\t\tthis.fnClearTable = function( bRedraw )\n\t\t{\n\t\t\tvar api = this.api( true ).clear();\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.draw();\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * The exact opposite of 'opening' a row, this function will close any rows which\n\t\t * are currently 'open'.\n\t\t * @param {node} nTr the table row to 'close'\n\t\t * @returns {int} 0 on success, or 1 if failed (can't find the row)\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable;\n\t\t *\n\t\t * // 'open' an information row when a row is clicked on\n\t\t * $('#example tbody tr').click( function () {\n\t\t * if ( oTable.fnIsOpen(this) ) {\n\t\t * oTable.fnClose( this );\n\t\t * } else {\n\t\t * oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t * }\n\t\t * } );\n\t\t *\n\t\t * oTable = $('#example').dataTable();\n\t\t * } );\n\t\t */\n\t\tthis.fnClose = function( nTr )\n\t\t{\n\t\t\tthis.api( true ).row( nTr ).child.hide();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Remove a row for the table\n\t\t * @param {mixed} target The index of the row from aoData to be deleted, or\n\t\t * the TR element you want to delete\n\t\t * @param {function|null} [callBack] Callback function\n\t\t * @param {bool} [redraw=true] Redraw the table or not\n\t\t * @returns {array} The row that was deleted\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Immediately remove the first row\n\t\t * oTable.fnDeleteRow( 0 );\n\t\t * } );\n\t\t */\n\t\tthis.fnDeleteRow = function( target, callback, redraw )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\tvar rows = api.rows( target );\n\t\t\tvar settings = rows.settings()[0];\n\t\t\tvar data = settings.aoData[ rows[0][0] ];\n\t\t\n\t\t\trows.remove();\n\t\t\n\t\t\tif ( callback ) {\n\t\t\t\tcallback.call( this, settings, data );\n\t\t\t}\n\t\t\n\t\t\tif ( redraw === undefined || redraw ) {\n\t\t\t\tapi.draw();\n\t\t\t}\n\t\t\n\t\t\treturn data;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Restore the table to it's original state in the DOM by removing all of DataTables\n\t\t * enhancements, alterations to the DOM structure of the table and event listeners.\n\t\t * @param {boolean} [remove=false] Completely remove the table from the DOM\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * // This example is fairly pointless in reality, but shows how fnDestroy can be used\n\t\t * var oTable = $('#example').dataTable();\n\t\t * oTable.fnDestroy();\n\t\t * } );\n\t\t */\n\t\tthis.fnDestroy = function ( remove )\n\t\t{\n\t\t\tthis.api( true ).destroy( remove );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Redraw the table\n\t\t * @param {bool} [complete=true] Re-filter and resort (if enabled) the table before the draw.\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Re-draw the table - you wouldn't want to do it here, but it's an example :-)\n\t\t * oTable.fnDraw();\n\t\t * } );\n\t\t */\n\t\tthis.fnDraw = function( complete )\n\t\t{\n\t\t\t// Note that this isn't an exact match to the old call to _fnDraw - it takes\n\t\t\t// into account the new data, but can hold position.\n\t\t\tthis.api( true ).draw( complete );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Filter the input based on data\n\t\t * @param {string} sInput String to filter the table on\n\t\t * @param {int|null} [iColumn] Column to limit filtering to\n\t\t * @param {bool} [bRegex=false] Treat as regular expression or not\n\t\t * @param {bool} [bSmart=true] Perform smart filtering or not\n\t\t * @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es)\n\t\t * @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false)\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Sometime later - filter...\n\t\t * oTable.fnFilter( 'test string' );\n\t\t * } );\n\t\t */\n\t\tthis.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\tif ( iColumn === null || iColumn === undefined ) {\n\t\t\t\tapi.search( sInput, bRegex, bSmart, bCaseInsensitive );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tapi.column( iColumn ).search( sInput, bRegex, bSmart, bCaseInsensitive );\n\t\t\t}\n\t\t\n\t\t\tapi.draw();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the data for the whole table, an individual row or an individual cell based on the\n\t\t * provided parameters.\n\t\t * @param {int|node} [src] A TR row node, TD/TH cell node or an integer. If given as\n\t\t * a TR node then the data source for the whole row will be returned. If given as a\n\t\t * TD/TH cell node then iCol will be automatically calculated and the data for the\n\t\t * cell returned. If given as an integer, then this is treated as the aoData internal\n\t\t * data index for the row (see fnGetPosition) and the data for that row used.\n\t\t * @param {int} [col] Optional column index that you want the data of.\n\t\t * @returns {array|object|string} If mRow is undefined, then the data for all rows is\n\t\t * returned. If mRow is defined, just data for that row, and is iCol is\n\t\t * defined, only data for the designated cell is returned.\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * // Row data\n\t\t * $(document).ready(function() {\n\t\t * oTable = $('#example').dataTable();\n\t\t *\n\t\t * oTable.$('tr').click( function () {\n\t\t * var data = oTable.fnGetData( this );\n\t\t * // ... do something with the array / object of data for the row\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Individual cell data\n\t\t * $(document).ready(function() {\n\t\t * oTable = $('#example').dataTable();\n\t\t *\n\t\t * oTable.$('td').click( function () {\n\t\t * var sData = oTable.fnGetData( this );\n\t\t * alert( 'The cell clicked on had the value of '+sData );\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\tthis.fnGetData = function( src, col )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\tif ( src !== undefined ) {\n\t\t\t\tvar type = src.nodeName ? src.nodeName.toLowerCase() : '';\n\t\t\n\t\t\t\treturn col !== undefined || type == 'td' || type == 'th' ?\n\t\t\t\t\tapi.cell( src, col ).data() :\n\t\t\t\t\tapi.row( src ).data() || null;\n\t\t\t}\n\t\t\n\t\t\treturn api.data().toArray();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get an array of the TR nodes that are used in the table's body. Note that you will\n\t\t * typically want to use the '$' API method in preference to this as it is more\n\t\t * flexible.\n\t\t * @param {int} [iRow] Optional row index for the TR element you want\n\t\t * @returns {array|node} If iRow is undefined, returns an array of all TR elements\n\t\t * in the table's body, or iRow is defined, just the TR element requested.\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Get the nodes from the table\n\t\t * var nNodes = oTable.fnGetNodes( );\n\t\t * } );\n\t\t */\n\t\tthis.fnGetNodes = function( iRow )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\treturn iRow !== undefined ?\n\t\t\t\tapi.row( iRow ).node() :\n\t\t\t\tapi.rows().nodes().flatten().toArray();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the array indexes of a particular cell from it's DOM element\n\t\t * and column index including hidden columns\n\t\t * @param {node} node this can either be a TR, TD or TH in the table's body\n\t\t * @returns {int} If nNode is given as a TR, then a single index is returned, or\n\t\t * if given as a cell, an array of [row index, column index (visible),\n\t\t * column index (all)] is given.\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * $('#example tbody td').click( function () {\n\t\t * // Get the position of the current data from the node\n\t\t * var aPos = oTable.fnGetPosition( this );\n\t\t *\n\t\t * // Get the data array for this row\n\t\t * var aData = oTable.fnGetData( aPos[0] );\n\t\t *\n\t\t * // Update the data array and return the value\n\t\t * aData[ aPos[1] ] = 'clicked';\n\t\t * this.innerHTML = 'clicked';\n\t\t * } );\n\t\t *\n\t\t * // Init DataTables\n\t\t * oTable = $('#example').dataTable();\n\t\t * } );\n\t\t */\n\t\tthis.fnGetPosition = function( node )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\tvar nodeName = node.nodeName.toUpperCase();\n\t\t\n\t\t\tif ( nodeName == 'TR' ) {\n\t\t\t\treturn api.row( node ).index();\n\t\t\t}\n\t\t\telse if ( nodeName == 'TD' || nodeName == 'TH' ) {\n\t\t\t\tvar cell = api.cell( node ).index();\n\t\t\n\t\t\t\treturn [\n\t\t\t\t\tcell.row,\n\t\t\t\t\tcell.columnVisible,\n\t\t\t\t\tcell.column\n\t\t\t\t];\n\t\t\t}\n\t\t\treturn null;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Check to see if a row is 'open' or not.\n\t\t * @param {node} nTr the table row to check\n\t\t * @returns {boolean} true if the row is currently open, false otherwise\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable;\n\t\t *\n\t\t * // 'open' an information row when a row is clicked on\n\t\t * $('#example tbody tr').click( function () {\n\t\t * if ( oTable.fnIsOpen(this) ) {\n\t\t * oTable.fnClose( this );\n\t\t * } else {\n\t\t * oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t * }\n\t\t * } );\n\t\t *\n\t\t * oTable = $('#example').dataTable();\n\t\t * } );\n\t\t */\n\t\tthis.fnIsOpen = function( nTr )\n\t\t{\n\t\t\treturn this.api( true ).row( nTr ).child.isShown();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * This function will place a new row directly after a row which is currently\n\t\t * on display on the page, with the HTML contents that is passed into the\n\t\t * function. This can be used, for example, to ask for confirmation that a\n\t\t * particular record should be deleted.\n\t\t * @param {node} nTr The table row to 'open'\n\t\t * @param {string|node|jQuery} mHtml The HTML to put into the row\n\t\t * @param {string} sClass Class to give the new TD cell\n\t\t * @returns {node} The row opened. Note that if the table row passed in as the\n\t\t * first parameter, is not found in the table, this method will silently\n\t\t * return.\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable;\n\t\t *\n\t\t * // 'open' an information row when a row is clicked on\n\t\t * $('#example tbody tr').click( function () {\n\t\t * if ( oTable.fnIsOpen(this) ) {\n\t\t * oTable.fnClose( this );\n\t\t * } else {\n\t\t * oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t * }\n\t\t * } );\n\t\t *\n\t\t * oTable = $('#example').dataTable();\n\t\t * } );\n\t\t */\n\t\tthis.fnOpen = function( nTr, mHtml, sClass )\n\t\t{\n\t\t\treturn this.api( true )\n\t\t\t\t.row( nTr )\n\t\t\t\t.child( mHtml, sClass )\n\t\t\t\t.show()\n\t\t\t\t.child()[0];\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Change the pagination - provides the internal logic for pagination in a simple API\n\t\t * function. With this function you can have a DataTables table go to the next,\n\t\t * previous, first or last pages.\n\t\t * @param {string|int} mAction Paging action to take: \"first\", \"previous\", \"next\" or \"last\"\n\t\t * or page number to jump to (integer), note that page 0 is the first page.\n\t\t * @param {bool} [bRedraw=true] Redraw the table or not\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t * oTable.fnPageChange( 'next' );\n\t\t * } );\n\t\t */\n\t\tthis.fnPageChange = function ( mAction, bRedraw )\n\t\t{\n\t\t\tvar api = this.api( true ).page( mAction );\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.draw(false);\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Show a particular column\n\t\t * @param {int} iCol The column whose display should be changed\n\t\t * @param {bool} bShow Show (true) or hide (false) the column\n\t\t * @param {bool} [bRedraw=true] Redraw the table or not\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Hide the second column after initialisation\n\t\t * oTable.fnSetColumnVis( 1, false );\n\t\t * } );\n\t\t */\n\t\tthis.fnSetColumnVis = function ( iCol, bShow, bRedraw )\n\t\t{\n\t\t\tvar api = this.api( true ).column( iCol ).visible( bShow );\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.columns.adjust().draw();\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the settings for a particular table for external manipulation\n\t\t * @returns {object} DataTables settings object. See\n\t\t * {@link DataTable.models.oSettings}\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t * var oSettings = oTable.fnSettings();\n\t\t *\n\t\t * // Show an example parameter from the settings\n\t\t * alert( oSettings._iDisplayStart );\n\t\t * } );\n\t\t */\n\t\tthis.fnSettings = function()\n\t\t{\n\t\t\treturn _fnSettingsFromNode( this[_ext.iApiIndex] );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Sort the table by a particular column\n\t\t * @param {int} iCol the data index to sort on. Note that this will not match the\n\t\t * 'display index' if you have hidden data entries\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Sort immediately with columns 0 and 1\n\t\t * oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );\n\t\t * } );\n\t\t */\n\t\tthis.fnSort = function( aaSort )\n\t\t{\n\t\t\tthis.api( true ).order( aaSort ).draw();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Attach a sort listener to an element for a given column\n\t\t * @param {node} nNode the element to attach the sort listener to\n\t\t * @param {int} iColumn the column that a click on this node will sort on\n\t\t * @param {function} [fnCallback] callback function when sort is run\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t *\n\t\t * // Sort on column 1, when 'sorter' is clicked on\n\t\t * oTable.fnSortListener( document.getElementById('sorter'), 1 );\n\t\t * } );\n\t\t */\n\t\tthis.fnSortListener = function( nNode, iColumn, fnCallback )\n\t\t{\n\t\t\tthis.api( true ).order.listener( nNode, iColumn, fnCallback );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Update a table cell or row - this method will accept either a single value to\n\t\t * update the cell with, an array of values with one element for each column or\n\t\t * an object in the same format as the original data source. The function is\n\t\t * self-referencing in order to make the multi column updates easier.\n\t\t * @param {object|array|string} mData Data to update the cell/row with\n\t\t * @param {node|int} mRow TR element you want to update or the aoData index\n\t\t * @param {int} [iColumn] The column to update, give as null or undefined to\n\t\t * update a whole row.\n\t\t * @param {bool} [bRedraw=true] Redraw the table or not\n\t\t * @param {bool} [bAction=true] Perform pre-draw actions or not\n\t\t * @returns {int} 0 on success, 1 on error\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t * oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell\n\t\t * oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], $('tbody tr')[0] ); // Row\n\t\t * } );\n\t\t */\n\t\tthis.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\tif ( iColumn === undefined || iColumn === null ) {\n\t\t\t\tapi.row( mRow ).data( mData );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tapi.cell( mRow, iColumn ).data( mData );\n\t\t\t}\n\t\t\n\t\t\tif ( bAction === undefined || bAction ) {\n\t\t\t\tapi.columns.adjust();\n\t\t\t}\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.draw();\n\t\t\t}\n\t\t\treturn 0;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Provide a common method for plug-ins to check the version of DataTables being used, in order\n\t\t * to ensure compatibility.\n\t\t * @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note that the\n\t\t * formats \"X\" and \"X.Y\" are also acceptable.\n\t\t * @returns {boolean} true if this version of DataTables is greater or equal to the required\n\t\t * version, or false if this version of DataTales is not suitable\n\t\t * @method\n\t\t * @dtopt API\n\t\t * @deprecated Since v1.10\n\t\t *\n\t\t * @example\n\t\t * $(document).ready(function() {\n\t\t * var oTable = $('#example').dataTable();\n\t\t * alert( oTable.fnVersionCheck( '1.9.0' ) );\n\t\t * } );\n\t\t */\n\t\tthis.fnVersionCheck = _ext.fnVersionCheck;\n\t\t\n\n\t\tvar _that = this;\n\t\tvar emptyInit = options === undefined;\n\t\tvar len = this.length;\n\n\t\tif ( emptyInit ) {\n\t\t\toptions = {};\n\t\t}\n\n\t\tthis.oApi = this.internal = _ext.internal;\n\n\t\t// Extend with old style plug-in API methods\n\t\tfor ( var fn in DataTable.ext.internal ) {\n\t\t\tif ( fn ) {\n\t\t\t\tthis[fn] = _fnExternApiFunc(fn);\n\t\t\t}\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\t// For each initialisation we want to give it a clean initialisation\n\t\t\t// object that can be bashed around\n\t\t\tvar o = {};\n\t\t\tvar oInit = len > 1 ? // optimisation for single table case\n\t\t\t\t_fnExtend( o, options, true ) :\n\t\t\t\toptions;\n\n\t\t\t/*global oInit,_that,emptyInit*/\n\t\t\tvar i=0, iLen, j, jLen, k, kLen;\n\t\t\tvar sId = this.getAttribute( 'id' );\n\t\t\tvar bInitHandedOff = false;\n\t\t\tvar defaults = DataTable.defaults;\n\t\t\tvar $this = $(this);\n\t\t\t\n\t\t\t\n\t\t\t/* Sanity check */\n\t\t\tif ( this.nodeName.toLowerCase() != 'table' )\n\t\t\t{\n\t\t\t\t_fnLog( null, 0, 'Non-table node initialisation ('+this.nodeName+')', 2 );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Backwards compatibility for the defaults */\n\t\t\t_fnCompatOpts( defaults );\n\t\t\t_fnCompatCols( defaults.column );\n\t\t\t\n\t\t\t/* Convert the camel-case defaults to Hungarian */\n\t\t\t_fnCamelToHungarian( defaults, defaults, true );\n\t\t\t_fnCamelToHungarian( defaults.column, defaults.column, true );\n\t\t\t\n\t\t\t/* Setting up the initialisation object */\n\t\t\t_fnCamelToHungarian( defaults, $.extend( oInit, $this.data() ) );\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t/* Check to see if we are re-initialising a table */\n\t\t\tvar allSettings = DataTable.settings;\n\t\t\tfor ( i=0, iLen=allSettings.length ; i').appendTo($this);\n\t\t\t\t}\n\t\t\t\toSettings.nTHead = thead[0];\n\t\t\t\n\t\t\t\tvar tbody = $this.children('tbody');\n\t\t\t\tif ( tbody.length === 0 ) {\n\t\t\t\t\ttbody = $('
    ').appendTo($this);\n\t\t\t\t}\n\t\t\t\toSettings.nTBody = tbody[0];\n\t\t\t\n\t\t\t\tvar tfoot = $this.children('tfoot');\n\t\t\t\tif ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\") ) {\n\t\t\t\t\t// If we are a scrolling table, and no footer has been given, then we need to create\n\t\t\t\t\t// a tfoot element for the caption element to be appended to\n\t\t\t\t\ttfoot = $('').appendTo($this);\n\t\t\t\t}\n\t\t\t\n\t\t\t\tif ( tfoot.length === 0 || tfoot.children().length === 0 ) {\n\t\t\t\t\t$this.addClass( oClasses.sNoFooter );\n\t\t\t\t}\n\t\t\t\telse if ( tfoot.length > 0 ) {\n\t\t\t\t\toSettings.nTFoot = tfoot[0];\n\t\t\t\t\t_fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot );\n\t\t\t\t}\n\t\t\t\n\t\t\t\t/* Check if there is data passing into the constructor */\n\t\t\t\tif ( oInit.aaData ) {\n\t\t\t\t\tfor ( i=0 ; i/g;\n\t\n\t// This is not strict ISO8601 - Date.parse() is quite lax, although\n\t// implementations differ between browsers.\n\tvar _re_date = /^\\d{2,4}[\\.\\/\\-]\\d{1,2}[\\.\\/\\-]\\d{1,2}([T ]{1}\\d{1,2}[:\\.]\\d{2}([\\.:]\\d{2})?)?$/;\n\t\n\t// Escape regular expression special characters\n\tvar _re_escape_regex = new RegExp( '(\\\\' + [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\\\', '$', '^', '-' ].join('|\\\\') + ')', 'g' );\n\t\n\t// http://en.wikipedia.org/wiki/Foreign_exchange_market\n\t// - \\u20BD - Russian ruble.\n\t// - \\u20a9 - South Korean Won\n\t// - \\u20BA - Turkish Lira\n\t// - \\u20B9 - Indian Rupee\n\t// - R - Brazil (R$) and South Africa\n\t// - fr - Swiss Franc\n\t// - kr - Swedish krona, Norwegian krone and Danish krone\n\t// - \\u2009 is thin space and \\u202F is narrow no-break space, both used in many\n\t// standards as thousands separators.\n\tvar _re_formatted_numeric = /[',$£€¥%\\u2009\\u202F\\u20BD\\u20a9\\u20BArfk]/gi;\n\t\n\t\n\tvar _empty = function ( d ) {\n\t\treturn !d || d === true || d === '-' ? true : false;\n\t};\n\t\n\t\n\tvar _intVal = function ( s ) {\n\t\tvar integer = parseInt( s, 10 );\n\t\treturn !isNaN(integer) && isFinite(s) ? integer : null;\n\t};\n\t\n\t// Convert from a formatted number with characters other than `.` as the\n\t// decimal place, to a Javascript number\n\tvar _numToDecimal = function ( num, decimalPoint ) {\n\t\t// Cache created regular expressions for speed as this function is called often\n\t\tif ( ! _re_dic[ decimalPoint ] ) {\n\t\t\t_re_dic[ decimalPoint ] = new RegExp( _fnEscapeRegex( decimalPoint ), 'g' );\n\t\t}\n\t\treturn typeof num === 'string' && decimalPoint !== '.' ?\n\t\t\tnum.replace( /\\./g, '' ).replace( _re_dic[ decimalPoint ], '.' ) :\n\t\t\tnum;\n\t};\n\t\n\t\n\tvar _isNumber = function ( d, decimalPoint, formatted ) {\n\t\tvar strType = typeof d === 'string';\n\t\n\t\t// If empty return immediately so there must be a number if it is a\n\t\t// formatted string (this stops the string \"k\", or \"kr\", etc being detected\n\t\t// as a formatted number for currency\n\t\tif ( _empty( d ) ) {\n\t\t\treturn true;\n\t\t}\n\t\n\t\tif ( decimalPoint && strType ) {\n\t\t\td = _numToDecimal( d, decimalPoint );\n\t\t}\n\t\n\t\tif ( formatted && strType ) {\n\t\t\td = d.replace( _re_formatted_numeric, '' );\n\t\t}\n\t\n\t\treturn !isNaN( parseFloat(d) ) && isFinite( d );\n\t};\n\t\n\t\n\t// A string without HTML in it can be considered to be HTML still\n\tvar _isHtml = function ( d ) {\n\t\treturn _empty( d ) || typeof d === 'string';\n\t};\n\t\n\t\n\tvar _htmlNumeric = function ( d, decimalPoint, formatted ) {\n\t\tif ( _empty( d ) ) {\n\t\t\treturn true;\n\t\t}\n\t\n\t\tvar html = _isHtml( d );\n\t\treturn ! html ?\n\t\t\tnull :\n\t\t\t_isNumber( _stripHtml( d ), decimalPoint, formatted ) ?\n\t\t\t\ttrue :\n\t\t\t\tnull;\n\t};\n\t\n\t\n\tvar _pluck = function ( a, prop, prop2 ) {\n\t\tvar out = [];\n\t\tvar i=0, ien=a.length;\n\t\n\t\t// Could have the test in the loop for slightly smaller code, but speed\n\t\t// is essential here\n\t\tif ( prop2 !== undefined ) {\n\t\t\tfor ( ; i')\n\t\t\t\t.css( {\n\t\t\t\t\tposition: 'fixed',\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: $(window).scrollLeft()*-1, // allow for scrolling\n\t\t\t\t\theight: 1,\n\t\t\t\t\twidth: 1,\n\t\t\t\t\toverflow: 'hidden'\n\t\t\t\t} )\n\t\t\t\t.append(\n\t\t\t\t\t$('
    ')\n\t\t\t\t\t\t.css( {\n\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\ttop: 1,\n\t\t\t\t\t\t\tleft: 1,\n\t\t\t\t\t\t\twidth: 100,\n\t\t\t\t\t\t\toverflow: 'scroll'\n\t\t\t\t\t\t} )\n\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t$('
    ')\n\t\t\t\t\t\t\t\t.css( {\n\t\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\t\theight: 10\n\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.appendTo( 'body' );\n\t\n\t\t\tvar outer = n.children();\n\t\t\tvar inner = outer.children();\n\t\n\t\t\t// Numbers below, in order, are:\n\t\t\t// inner.offsetWidth, inner.clientWidth, outer.offsetWidth, outer.clientWidth\n\t\t\t//\n\t\t\t// IE6 XP: 100 100 100 83\n\t\t\t// IE7 Vista: 100 100 100 83\n\t\t\t// IE 8+ Windows: 83 83 100 83\n\t\t\t// Evergreen Windows: 83 83 100 83\n\t\t\t// Evergreen Mac with scrollbars: 85 85 100 85\n\t\t\t// Evergreen Mac without scrollbars: 100 100 100 100\n\t\n\t\t\t// Get scrollbar width\n\t\t\tbrowser.barWidth = outer[0].offsetWidth - outer[0].clientWidth;\n\t\n\t\t\t// IE6/7 will oversize a width 100% element inside a scrolling element, to\n\t\t\t// include the width of the scrollbar, while other browsers ensure the inner\n\t\t\t// element is contained without forcing scrolling\n\t\t\tbrowser.bScrollOversize = inner[0].offsetWidth === 100 && outer[0].clientWidth !== 100;\n\t\n\t\t\t// In rtl text layout, some browsers (most, but not all) will place the\n\t\t\t// scrollbar on the left, rather than the right.\n\t\t\tbrowser.bScrollbarLeft = Math.round( inner.offset().left ) !== 1;\n\t\n\t\t\t// IE8- don't provide height and width for getBoundingClientRect\n\t\t\tbrowser.bBounding = n[0].getBoundingClientRect().width ? true : false;\n\t\n\t\t\tn.remove();\n\t\t}\n\t\n\t\t$.extend( settings.oBrowser, DataTable.__browser );\n\t\tsettings.oScroll.iBarWidth = DataTable.__browser.barWidth;\n\t}\n\t\n\t\n\t/**\n\t * Array.prototype reduce[Right] method, used for browsers which don't support\n\t * JS 1.6. Done this way to reduce code size, since we iterate either way\n\t * @param {object} settings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnReduce ( that, fn, init, start, end, inc )\n\t{\n\t\tvar\n\t\t\ti = start,\n\t\t\tvalue,\n\t\t\tisSet = false;\n\t\n\t\tif ( init !== undefined ) {\n\t\t\tvalue = init;\n\t\t\tisSet = true;\n\t\t}\n\t\n\t\twhile ( i !== end ) {\n\t\t\tif ( ! that.hasOwnProperty(i) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\n\t\t\tvalue = isSet ?\n\t\t\t\tfn( value, that[i], i, that ) :\n\t\t\t\tthat[i];\n\t\n\t\t\tisSet = true;\n\t\t\ti += inc;\n\t\t}\n\t\n\t\treturn value;\n\t}\n\t\n\t/**\n\t * Add a column to the list used for the table with default values\n\t * @param {object} oSettings dataTables settings object\n\t * @param {node} nTh The th element for this column\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnAddColumn( oSettings, nTh )\n\t{\n\t\t// Add column to aoColumns array\n\t\tvar oDefaults = DataTable.defaults.column;\n\t\tvar iCol = oSettings.aoColumns.length;\n\t\tvar oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, {\n\t\t\t\"nTh\": nTh ? nTh : document.createElement('th'),\n\t\t\t\"sTitle\": oDefaults.sTitle ? oDefaults.sTitle : nTh ? nTh.innerHTML : '',\n\t\t\t\"aDataSort\": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol],\n\t\t\t\"mData\": oDefaults.mData ? oDefaults.mData : iCol,\n\t\t\tidx: iCol\n\t\t} );\n\t\toSettings.aoColumns.push( oCol );\n\t\n\t\t// Add search object for column specific search. Note that the `searchCols[ iCol ]`\n\t\t// passed into extend can be undefined. This allows the user to give a default\n\t\t// with only some of the parameters defined, and also not give a default\n\t\tvar searchCols = oSettings.aoPreSearchCols;\n\t\tsearchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch, searchCols[ iCol ] );\n\t\n\t\t// Use the default column options function to initialise classes etc\n\t\t_fnColumnOptions( oSettings, iCol, $(nTh).data() );\n\t}\n\t\n\t\n\t/**\n\t * Apply options for a column\n\t * @param {object} oSettings dataTables settings object\n\t * @param {int} iCol column index to consider\n\t * @param {object} oOptions object with sType, bVisible and bSearchable etc\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnColumnOptions( oSettings, iCol, oOptions )\n\t{\n\t\tvar oCol = oSettings.aoColumns[ iCol ];\n\t\tvar oClasses = oSettings.oClasses;\n\t\tvar th = $(oCol.nTh);\n\t\n\t\t// Try to get width information from the DOM. We can't get it from CSS\n\t\t// as we'd need to parse the CSS stylesheet. `width` option can override\n\t\tif ( ! oCol.sWidthOrig ) {\n\t\t\t// Width attribute\n\t\t\toCol.sWidthOrig = th.attr('width') || null;\n\t\n\t\t\t// Style attribute\n\t\t\tvar t = (th.attr('style') || '').match(/width:\\s*(\\d+[pxem%]+)/);\n\t\t\tif ( t ) {\n\t\t\t\toCol.sWidthOrig = t[1];\n\t\t\t}\n\t\t}\n\t\n\t\t/* User specified column options */\n\t\tif ( oOptions !== undefined && oOptions !== null )\n\t\t{\n\t\t\t// Backwards compatibility\n\t\t\t_fnCompatCols( oOptions );\n\t\n\t\t\t// Map camel case parameters to their Hungarian counterparts\n\t\t\t_fnCamelToHungarian( DataTable.defaults.column, oOptions );\n\t\n\t\t\t/* Backwards compatibility for mDataProp */\n\t\t\tif ( oOptions.mDataProp !== undefined && !oOptions.mData )\n\t\t\t{\n\t\t\t\toOptions.mData = oOptions.mDataProp;\n\t\t\t}\n\t\n\t\t\tif ( oOptions.sType )\n\t\t\t{\n\t\t\t\toCol._sManualType = oOptions.sType;\n\t\t\t}\n\t\n\t\t\t// `class` is a reserved word in Javascript, so we need to provide\n\t\t\t// the ability to use a valid name for the camel case input\n\t\t\tif ( oOptions.className && ! oOptions.sClass )\n\t\t\t{\n\t\t\t\toOptions.sClass = oOptions.className;\n\t\t\t}\n\t\n\t\t\t$.extend( oCol, oOptions );\n\t\t\t_fnMap( oCol, oOptions, \"sWidth\", \"sWidthOrig\" );\n\t\n\t\t\t/* iDataSort to be applied (backwards compatibility), but aDataSort will take\n\t\t\t * priority if defined\n\t\t\t */\n\t\t\tif ( oOptions.iDataSort !== undefined )\n\t\t\t{\n\t\t\t\toCol.aDataSort = [ oOptions.iDataSort ];\n\t\t\t}\n\t\t\t_fnMap( oCol, oOptions, \"aDataSort\" );\n\t\t}\n\t\n\t\t/* Cache the data get and set functions for speed */\n\t\tvar mDataSrc = oCol.mData;\n\t\tvar mData = _fnGetObjectDataFn( mDataSrc );\n\t\tvar mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null;\n\t\n\t\tvar attrTest = function( src ) {\n\t\t\treturn typeof src === 'string' && src.indexOf('@') !== -1;\n\t\t};\n\t\toCol._bAttrSrc = $.isPlainObject( mDataSrc ) && (\n\t\t\tattrTest(mDataSrc.sort) || attrTest(mDataSrc.type) || attrTest(mDataSrc.filter)\n\t\t);\n\t\toCol._setter = null;\n\t\n\t\toCol.fnGetData = function (rowData, type, meta) {\n\t\t\tvar innerData = mData( rowData, type, undefined, meta );\n\t\n\t\t\treturn mRender && type ?\n\t\t\t\tmRender( innerData, type, rowData, meta ) :\n\t\t\t\tinnerData;\n\t\t};\n\t\toCol.fnSetData = function ( rowData, val, meta ) {\n\t\t\treturn _fnSetObjectDataFn( mDataSrc )( rowData, val, meta );\n\t\t};\n\t\n\t\t// Indicate if DataTables should read DOM data as an object or array\n\t\t// Used in _fnGetRowElements\n\t\tif ( typeof mDataSrc !== 'number' ) {\n\t\t\toSettings._rowReadObject = true;\n\t\t}\n\t\n\t\t/* Feature sorting overrides column specific when off */\n\t\tif ( !oSettings.oFeatures.bSort )\n\t\t{\n\t\t\toCol.bSortable = false;\n\t\t\tth.addClass( oClasses.sSortableNone ); // Have to add class here as order event isn't called\n\t\t}\n\t\n\t\t/* Check that the class assignment is correct for sorting */\n\t\tvar bAsc = $.inArray('asc', oCol.asSorting) !== -1;\n\t\tvar bDesc = $.inArray('desc', oCol.asSorting) !== -1;\n\t\tif ( !oCol.bSortable || (!bAsc && !bDesc) )\n\t\t{\n\t\t\toCol.sSortingClass = oClasses.sSortableNone;\n\t\t\toCol.sSortingClassJUI = \"\";\n\t\t}\n\t\telse if ( bAsc && !bDesc )\n\t\t{\n\t\t\toCol.sSortingClass = oClasses.sSortableAsc;\n\t\t\toCol.sSortingClassJUI = oClasses.sSortJUIAscAllowed;\n\t\t}\n\t\telse if ( !bAsc && bDesc )\n\t\t{\n\t\t\toCol.sSortingClass = oClasses.sSortableDesc;\n\t\t\toCol.sSortingClassJUI = oClasses.sSortJUIDescAllowed;\n\t\t}\n\t\telse\n\t\t{\n\t\t\toCol.sSortingClass = oClasses.sSortable;\n\t\t\toCol.sSortingClassJUI = oClasses.sSortJUI;\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Adjust the table column widths for new data. Note: you would probably want to\n\t * do a redraw after calling this function!\n\t * @param {object} settings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnAdjustColumnSizing ( settings )\n\t{\n\t\t/* Not interested in doing column width calculation if auto-width is disabled */\n\t\tif ( settings.oFeatures.bAutoWidth !== false )\n\t\t{\n\t\t\tvar columns = settings.aoColumns;\n\t\n\t\t\t_fnCalculateColumnWidths( settings );\n\t\t\tfor ( var i=0 , iLen=columns.length ; i
    ').addClass( k );\n\t\t\t\t$('td', created)\n\t\t\t\t\t.addClass( k )\n\t\t\t\t\t.html( r )\n\t\t\t\t\t[0].colSpan = _fnVisbleColumns( ctx );\n\t\n\t\t\t\trows.push( created[0] );\n\t\t\t}\n\t\t};\n\t\n\t\taddRow( data, klass );\n\t\n\t\tif ( row._details ) {\n\t\t\trow._details.detach();\n\t\t}\n\t\n\t\trow._details = $(rows);\n\t\n\t\t// If the children were already shown, that state should be retained\n\t\tif ( row._detailsShow ) {\n\t\t\trow._details.insertAfter( row.nTr );\n\t\t}\n\t};\n\t\n\t\n\tvar __details_remove = function ( api, idx )\n\t{\n\t\tvar ctx = api.context;\n\t\n\t\tif ( ctx.length ) {\n\t\t\tvar row = ctx[0].aoData[ idx !== undefined ? idx : api[0] ];\n\t\n\t\t\tif ( row && row._details ) {\n\t\t\t\trow._details.remove();\n\t\n\t\t\t\trow._detailsShow = undefined;\n\t\t\t\trow._details = undefined;\n\t\t\t}\n\t\t}\n\t};\n\t\n\t\n\tvar __details_display = function ( api, show ) {\n\t\tvar ctx = api.context;\n\t\n\t\tif ( ctx.length && api.length ) {\n\t\t\tvar row = ctx[0].aoData[ api[0] ];\n\t\n\t\t\tif ( row._details ) {\n\t\t\t\trow._detailsShow = show;\n\t\n\t\t\t\tif ( show ) {\n\t\t\t\t\trow._details.insertAfter( row.nTr );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\trow._details.detach();\n\t\t\t\t}\n\t\n\t\t\t\t__details_events( ctx[0] );\n\t\t\t}\n\t\t}\n\t};\n\t\n\t\n\tvar __details_events = function ( settings )\n\t{\n\t\tvar api = new _Api( settings );\n\t\tvar namespace = '.dt.DT_details';\n\t\tvar drawEvent = 'draw'+namespace;\n\t\tvar colvisEvent = 'column-visibility'+namespace;\n\t\tvar destroyEvent = 'destroy'+namespace;\n\t\tvar data = settings.aoData;\n\t\n\t\tapi.off( drawEvent +' '+ colvisEvent +' '+ destroyEvent );\n\t\n\t\tif ( _pluck( data, '_details' ).length > 0 ) {\n\t\t\t// On each draw, insert the required elements into the document\n\t\t\tapi.on( drawEvent, function ( e, ctx ) {\n\t\t\t\tif ( settings !== ctx ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\tapi.rows( {page:'current'} ).eq(0).each( function (idx) {\n\t\t\t\t\t// Internal data grab\n\t\t\t\t\tvar row = data[ idx ];\n\t\n\t\t\t\t\tif ( row._detailsShow ) {\n\t\t\t\t\t\trow._details.insertAfter( row.nTr );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\n\t\t\t// Column visibility change - update the colspan\n\t\t\tapi.on( colvisEvent, function ( e, ctx, idx, vis ) {\n\t\t\t\tif ( settings !== ctx ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\t// Update the colspan for the details rows (note, only if it already has\n\t\t\t\t// a colspan)\n\t\t\t\tvar row, visible = _fnVisbleColumns( ctx );\n\t\n\t\t\t\tfor ( var i=0, ien=data.length ; i=0 count from left, <0 count from right)\n\t * \"{integer}:visIdx\" - visible column index (i.e. translate to column index) (>=0 count from left, <0 count from right)\n\t * \"{integer}:visible\" - alias for {integer}:visIdx (>=0 count from left, <0 count from right)\n\t * \"{string}:name\" - column name\n\t * \"{string}\" - jQuery selector on column header nodes\n\t *\n\t */\n\t\n\t// can be an array of these items, comma separated list, or an array of comma\n\t// separated lists\n\t\n\tvar __re_column_selector = /^([^:]+):(name|visIdx|visible)$/;\n\t\n\t\n\t// r1 and r2 are redundant - but it means that the parameters match for the\n\t// iterator callback in columns().data()\n\tvar __columnData = function ( settings, column, r1, r2, rows ) {\n\t\tvar a = [];\n\t\tfor ( var row=0, ien=rows.length ; row= 0 ?\n\t\t\t\t\tselInt : // Count from left\n\t\t\t\t\tcolumns.length + selInt // Count from right (+ because its a negative value)\n\t\t\t\t];\n\t\t\t}\n\t\n\t\t\t// Selector = function\n\t\t\tif ( typeof s === 'function' ) {\n\t\t\t\tvar rows = _selector_row_indexes( settings, opts );\n\t\n\t\t\t\treturn $.map( columns, function (col, idx) {\n\t\t\t\t\treturn s(\n\t\t\t\t\t\t\tidx,\n\t\t\t\t\t\t\t__columnData( settings, idx, 0, 0, rows ),\n\t\t\t\t\t\t\tnodes[ idx ]\n\t\t\t\t\t\t) ? idx : null;\n\t\t\t\t} );\n\t\t\t}\n\t\n\t\t\t// jQuery or string selector\n\t\t\tvar match = typeof s === 'string' ?\n\t\t\t\ts.match( __re_column_selector ) :\n\t\t\t\t'';\n\t\n\t\t\tif ( match ) {\n\t\t\t\tswitch( match[2] ) {\n\t\t\t\t\tcase 'visIdx':\n\t\t\t\t\tcase 'visible':\n\t\t\t\t\t\tvar idx = parseInt( match[1], 10 );\n\t\t\t\t\t\t// Visible index given, convert to column index\n\t\t\t\t\t\tif ( idx < 0 ) {\n\t\t\t\t\t\t\t// Counting from the right\n\t\t\t\t\t\t\tvar visColumns = $.map( columns, function (col,i) {\n\t\t\t\t\t\t\t\treturn col.bVisible ? i : null;\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\treturn [ visColumns[ visColumns.length + idx ] ];\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Counting from the left\n\t\t\t\t\t\treturn [ _fnVisibleToColumnIndex( settings, idx ) ];\n\t\n\t\t\t\t\tcase 'name':\n\t\t\t\t\t\t// match by name. `names` is column index complete and in order\n\t\t\t\t\t\treturn $.map( names, function (name, i) {\n\t\t\t\t\t\t\treturn name === match[1] ? i : null;\n\t\t\t\t\t\t} );\n\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Cell in the table body\n\t\t\tif ( s.nodeName && s._DT_CellIndex ) {\n\t\t\t\treturn [ s._DT_CellIndex.column ];\n\t\t\t}\n\t\n\t\t\t// jQuery selector on the TH elements for the columns\n\t\t\tvar jqResult = $( nodes )\n\t\t\t\t.filter( s )\n\t\t\t\t.map( function () {\n\t\t\t\t\treturn $.inArray( this, nodes ); // `nodes` is column index complete and in order\n\t\t\t\t} )\n\t\t\t\t.toArray();\n\t\n\t\t\tif ( jqResult.length || ! s.nodeName ) {\n\t\t\t\treturn jqResult;\n\t\t\t}\n\t\n\t\t\t// Otherwise a node which might have a `dt-column` data attribute, or be\n\t\t\t// a child or such an element\n\t\t\tvar host = $(s).closest('*[data-dt-column]');\n\t\t\treturn host.length ?\n\t\t\t\t[ host.data('dt-column') ] :\n\t\t\t\t[];\n\t\t};\n\t\n\t\treturn _selector_run( 'column', selector, run, settings, opts );\n\t};\n\t\n\t\n\tvar __setColumnVis = function ( settings, column, vis ) {\n\t\tvar\n\t\t\tcols = settings.aoColumns,\n\t\t\tcol = cols[ column ],\n\t\t\tdata = settings.aoData,\n\t\t\trow, cells, i, ien, tr;\n\t\n\t\t// Get\n\t\tif ( vis === undefined ) {\n\t\t\treturn col.bVisible;\n\t\t}\n\t\n\t\t// Set\n\t\t// No change\n\t\tif ( col.bVisible === vis ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tif ( vis ) {\n\t\t\t// Insert column\n\t\t\t// Need to decide if we should use appendChild or insertBefore\n\t\t\tvar insertBefore = $.inArray( true, _pluck(cols, 'bVisible'), column+1 );\n\t\n\t\t\tfor ( i=0, ien=data.length ; i iThat;\n\t\t}\n\t\n\t\treturn true;\n\t};\n\t\n\t\n\t/**\n\t * Check if a `
    ', {\n\t\t\t\t\t'valign': 'top',\n\t\t\t\t\t'colSpan': _fnVisbleColumns( oSettings ),\n\t\t\t\t\t'class': oSettings.oClasses.sRowEmpty\n\t\t\t\t} ).html( sZero ) )[0];\n\t\t}\n\t\n\t\t/* Header and footer callbacks */\n\t\t_fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0],\n\t\t\t_fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] );\n\t\n\t\t_fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0],\n\t\t\t_fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] );\n\t\n\t\tvar body = $(oSettings.nTBody);\n\t\n\t\tbody.children().detach();\n\t\tbody.append( $(anRows) );\n\t\n\t\t/* Call all required callback functions for the end of a draw */\n\t\t_fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] );\n\t\n\t\t/* Draw is complete, sorting and filtering must be as well */\n\t\toSettings.bSorted = false;\n\t\toSettings.bFiltered = false;\n\t\toSettings.bDrawing = false;\n\t}\n\t\n\t\n\t/**\n\t * Redraw the table - taking account of the various features which are enabled\n\t * @param {object} oSettings dataTables settings object\n\t * @param {boolean} [holdPosition] Keep the current paging position. By default\n\t * the paging is reset to the first page\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnReDraw( settings, holdPosition )\n\t{\n\t\tvar\n\t\t\tfeatures = settings.oFeatures,\n\t\t\tsort = features.bSort,\n\t\t\tfilter = features.bFilter;\n\t\n\t\tif ( sort ) {\n\t\t\t_fnSort( settings );\n\t\t}\n\t\n\t\tif ( filter ) {\n\t\t\t_fnFilterComplete( settings, settings.oPreviousSearch );\n\t\t}\n\t\telse {\n\t\t\t// No filtering, so we want to just use the display master\n\t\t\tsettings.aiDisplay = settings.aiDisplayMaster.slice();\n\t\t}\n\t\n\t\tif ( holdPosition !== true ) {\n\t\t\tsettings._iDisplayStart = 0;\n\t\t}\n\t\n\t\t// Let any modules know about the draw hold position state (used by\n\t\t// scrolling internally)\n\t\tsettings._drawHold = holdPosition;\n\t\n\t\t_fnDraw( settings );\n\t\n\t\tsettings._drawHold = false;\n\t}\n\t\n\t\n\t/**\n\t * Add the options to the page HTML for the table\n\t * @param {object} oSettings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnAddOptionsHtml ( oSettings )\n\t{\n\t\tvar classes = oSettings.oClasses;\n\t\tvar table = $(oSettings.nTable);\n\t\tvar holding = $('
    ').insertBefore( table ); // Holding element for speed\n\t\tvar features = oSettings.oFeatures;\n\t\n\t\t// All DataTables are wrapped in a div\n\t\tvar insert = $('
    ', {\n\t\t\tid: oSettings.sTableId+'_wrapper',\n\t\t\t'class': classes.sWrapper + (oSettings.nTFoot ? '' : ' '+classes.sNoFooter)\n\t\t} );\n\t\n\t\toSettings.nHolding = holding[0];\n\t\toSettings.nTableWrapper = insert[0];\n\t\toSettings.nTableReinsertBefore = oSettings.nTable.nextSibling;\n\t\n\t\t/* Loop over the user set positioning and place the elements as needed */\n\t\tvar aDom = oSettings.sDom.split('');\n\t\tvar featureNode, cOption, nNewNode, cNext, sAttr, j;\n\t\tfor ( var i=0 ; i')[0];\n\t\n\t\t\t\t/* Check to see if we should append an id and/or a class name to the container */\n\t\t\t\tcNext = aDom[i+1];\n\t\t\t\tif ( cNext == \"'\" || cNext == '\"' )\n\t\t\t\t{\n\t\t\t\t\tsAttr = \"\";\n\t\t\t\t\tj = 2;\n\t\t\t\t\twhile ( aDom[i+j] != cNext )\n\t\t\t\t\t{\n\t\t\t\t\t\tsAttr += aDom[i+j];\n\t\t\t\t\t\tj++;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t/* Replace jQuery UI constants @todo depreciated */\n\t\t\t\t\tif ( sAttr == \"H\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tsAttr = classes.sJUIHeader;\n\t\t\t\t\t}\n\t\t\t\t\telse if ( sAttr == \"F\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tsAttr = classes.sJUIFooter;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t/* The attribute can be in the format of \"#id.class\", \"#id\" or \"class\" This logic\n\t\t\t\t\t * breaks the string into parts and applies them as needed\n\t\t\t\t\t */\n\t\t\t\t\tif ( sAttr.indexOf('.') != -1 )\n\t\t\t\t\t{\n\t\t\t\t\t\tvar aSplit = sAttr.split('.');\n\t\t\t\t\t\tnNewNode.id = aSplit[0].substr(1, aSplit[0].length-1);\n\t\t\t\t\t\tnNewNode.className = aSplit[1];\n\t\t\t\t\t}\n\t\t\t\t\telse if ( sAttr.charAt(0) == \"#\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tnNewNode.id = sAttr.substr(1, sAttr.length-1);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tnNewNode.className = sAttr;\n\t\t\t\t\t}\n\t\n\t\t\t\t\ti += j; /* Move along the position array */\n\t\t\t\t}\n\t\n\t\t\t\tinsert.append( nNewNode );\n\t\t\t\tinsert = $(nNewNode);\n\t\t\t}\n\t\t\telse if ( cOption == '>' )\n\t\t\t{\n\t\t\t\t/* End container div */\n\t\t\t\tinsert = insert.parent();\n\t\t\t}\n\t\t\t// @todo Move options into their own plugins?\n\t\t\telse if ( cOption == 'l' && features.bPaginate && features.bLengthChange )\n\t\t\t{\n\t\t\t\t/* Length */\n\t\t\t\tfeatureNode = _fnFeatureHtmlLength( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 'f' && features.bFilter )\n\t\t\t{\n\t\t\t\t/* Filter */\n\t\t\t\tfeatureNode = _fnFeatureHtmlFilter( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 'r' && features.bProcessing )\n\t\t\t{\n\t\t\t\t/* pRocessing */\n\t\t\t\tfeatureNode = _fnFeatureHtmlProcessing( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 't' )\n\t\t\t{\n\t\t\t\t/* Table */\n\t\t\t\tfeatureNode = _fnFeatureHtmlTable( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 'i' && features.bInfo )\n\t\t\t{\n\t\t\t\t/* Info */\n\t\t\t\tfeatureNode = _fnFeatureHtmlInfo( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 'p' && features.bPaginate )\n\t\t\t{\n\t\t\t\t/* Pagination */\n\t\t\t\tfeatureNode = _fnFeatureHtmlPaginate( oSettings );\n\t\t\t}\n\t\t\telse if ( DataTable.ext.feature.length !== 0 )\n\t\t\t{\n\t\t\t\t/* Plug-in features */\n\t\t\t\tvar aoFeatures = DataTable.ext.feature;\n\t\t\t\tfor ( var k=0, kLen=aoFeatures.length ; k';\n\t\n\t\tvar str = language.sSearch;\n\t\tstr = str.match(/_INPUT_/) ?\n\t\t\tstr.replace('_INPUT_', input) :\n\t\t\tstr+input;\n\t\n\t\tvar filter = $('
    ', {\n\t\t\t\t'id': ! features.f ? tableId+'_filter' : null,\n\t\t\t\t'class': classes.sFilter\n\t\t\t} )\n\t\t\t.append( $('
    ').addClass( classes.sLength );\n\t\tif ( ! settings.aanFeatures.l ) {\n\t\t\tdiv[0].id = tableId+'_length';\n\t\t}\n\t\n\t\tdiv.children().append(\n\t\t\tsettings.oLanguage.sLengthMenu.replace( '_MENU_', select[0].outerHTML )\n\t\t);\n\t\n\t\t// Can't use `select` variable as user might provide their own and the\n\t\t// reference is broken by the use of outerHTML\n\t\t$('select', div)\n\t\t\t.val( settings._iDisplayLength )\n\t\t\t.on( 'change.DT', function(e) {\n\t\t\t\t_fnLengthChange( settings, $(this).val() );\n\t\t\t\t_fnDraw( settings );\n\t\t\t} );\n\t\n\t\t// Update node value whenever anything changes the table's length\n\t\t$(settings.nTable).on( 'length.dt.DT', function (e, s, len) {\n\t\t\tif ( settings === s ) {\n\t\t\t\t$('select', div).val( len );\n\t\t\t}\n\t\t} );\n\t\n\t\treturn div[0];\n\t}\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Note that most of the paging logic is done in\n\t * DataTable.ext.pager\n\t */\n\t\n\t/**\n\t * Generate the node required for default pagination\n\t * @param {object} oSettings dataTables settings object\n\t * @returns {node} Pagination feature node\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlPaginate ( settings )\n\t{\n\t\tvar\n\t\t\ttype = settings.sPaginationType,\n\t\t\tplugin = DataTable.ext.pager[ type ],\n\t\t\tmodern = typeof plugin === 'function',\n\t\t\tredraw = function( settings ) {\n\t\t\t\t_fnDraw( settings );\n\t\t\t},\n\t\t\tnode = $('
    ').addClass( settings.oClasses.sPaging + type )[0],\n\t\t\tfeatures = settings.aanFeatures;\n\t\n\t\tif ( ! modern ) {\n\t\t\tplugin.fnInit( settings, node, redraw );\n\t\t}\n\t\n\t\t/* Add a draw callback for the pagination on first instance, to update the paging display */\n\t\tif ( ! features.p )\n\t\t{\n\t\t\tnode.id = settings.sTableId+'_paginate';\n\t\n\t\t\tsettings.aoDrawCallback.push( {\n\t\t\t\t\"fn\": function( settings ) {\n\t\t\t\t\tif ( modern ) {\n\t\t\t\t\t\tvar\n\t\t\t\t\t\t\tstart = settings._iDisplayStart,\n\t\t\t\t\t\t\tlen = settings._iDisplayLength,\n\t\t\t\t\t\t\tvisRecords = settings.fnRecordsDisplay(),\n\t\t\t\t\t\t\tall = len === -1,\n\t\t\t\t\t\t\tpage = all ? 0 : Math.ceil( start / len ),\n\t\t\t\t\t\t\tpages = all ? 1 : Math.ceil( visRecords / len ),\n\t\t\t\t\t\t\tbuttons = plugin(page, pages),\n\t\t\t\t\t\t\ti, ien;\n\t\n\t\t\t\t\t\tfor ( i=0, ien=features.p.length ; i records )\n\t\t\t{\n\t\t\t\tstart = 0;\n\t\t\t}\n\t\t}\n\t\telse if ( action == \"first\" )\n\t\t{\n\t\t\tstart = 0;\n\t\t}\n\t\telse if ( action == \"previous\" )\n\t\t{\n\t\t\tstart = len >= 0 ?\n\t\t\t\tstart - len :\n\t\t\t\t0;\n\t\n\t\t\tif ( start < 0 )\n\t\t\t{\n\t\t\t start = 0;\n\t\t\t}\n\t\t}\n\t\telse if ( action == \"next\" )\n\t\t{\n\t\t\tif ( start + len < records )\n\t\t\t{\n\t\t\t\tstart += len;\n\t\t\t}\n\t\t}\n\t\telse if ( action == \"last\" )\n\t\t{\n\t\t\tstart = Math.floor( (records-1) / len) * len;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_fnLog( settings, 0, \"Unknown paging action: \"+action, 5 );\n\t\t}\n\t\n\t\tvar changed = settings._iDisplayStart !== start;\n\t\tsettings._iDisplayStart = start;\n\t\n\t\tif ( changed ) {\n\t\t\t_fnCallbackFire( settings, null, 'page', [settings] );\n\t\n\t\t\tif ( redraw ) {\n\t\t\t\t_fnDraw( settings );\n\t\t\t}\n\t\t}\n\t\n\t\treturn changed;\n\t}\n\t\n\t\n\t\n\t/**\n\t * Generate the node required for the processing node\n\t * @param {object} settings dataTables settings object\n\t * @returns {node} Processing element\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlProcessing ( settings )\n\t{\n\t\treturn $('
    ', {\n\t\t\t\t'id': ! settings.aanFeatures.r ? settings.sTableId+'_processing' : null,\n\t\t\t\t'class': settings.oClasses.sProcessing\n\t\t\t} )\n\t\t\t.html( settings.oLanguage.sProcessing )\n\t\t\t.insertBefore( settings.nTable )[0];\n\t}\n\t\n\t\n\t/**\n\t * Display or hide the processing indicator\n\t * @param {object} settings dataTables settings object\n\t * @param {bool} show Show the processing indicator (true) or not (false)\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnProcessingDisplay ( settings, show )\n\t{\n\t\tif ( settings.oFeatures.bProcessing ) {\n\t\t\t$(settings.aanFeatures.r).css( 'display', show ? 'block' : 'none' );\n\t\t}\n\t\n\t\t_fnCallbackFire( settings, null, 'processing', [settings, show] );\n\t}\n\t\n\t/**\n\t * Add any control elements for the table - specifically scrolling\n\t * @param {object} settings dataTables settings object\n\t * @returns {node} Node to add to the DOM\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlTable ( settings )\n\t{\n\t\tvar table = $(settings.nTable);\n\t\n\t\t// Add the ARIA grid role to the table\n\t\ttable.attr( 'role', 'grid' );\n\t\n\t\t// Scrolling from here on in\n\t\tvar scroll = settings.oScroll;\n\t\n\t\tif ( scroll.sX === '' && scroll.sY === '' ) {\n\t\t\treturn settings.nTable;\n\t\t}\n\t\n\t\tvar scrollX = scroll.sX;\n\t\tvar scrollY = scroll.sY;\n\t\tvar classes = settings.oClasses;\n\t\tvar caption = table.children('caption');\n\t\tvar captionSide = caption.length ? caption[0]._captionSide : null;\n\t\tvar headerClone = $( table[0].cloneNode(false) );\n\t\tvar footerClone = $( table[0].cloneNode(false) );\n\t\tvar footer = table.children('tfoot');\n\t\tvar _div = '
    ';\n\t\tvar size = function ( s ) {\n\t\t\treturn !s ? null : _fnStringToCss( s );\n\t\t};\n\t\n\t\tif ( ! footer.length ) {\n\t\t\tfooter = null;\n\t\t}\n\t\n\t\t/*\n\t\t * The HTML structure that we want to generate in this function is:\n\t\t * div - scroller\n\t\t * div - scroll head\n\t\t * div - scroll head inner\n\t\t * table - scroll head table\n\t\t * thead - thead\n\t\t * div - scroll body\n\t\t * table - table (master table)\n\t\t * thead - thead clone for sizing\n\t\t * tbody - tbody\n\t\t * div - scroll foot\n\t\t * div - scroll foot inner\n\t\t * table - scroll foot table\n\t\t * tfoot - tfoot\n\t\t */\n\t\tvar scroller = $( _div, { 'class': classes.sScrollWrapper } )\n\t\t\t.append(\n\t\t\t\t$(_div, { 'class': classes.sScrollHead } )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\tposition: 'relative',\n\t\t\t\t\t\tborder: 0,\n\t\t\t\t\t\twidth: scrollX ? size(scrollX) : '100%'\n\t\t\t\t\t} )\n\t\t\t\t\t.append(\n\t\t\t\t\t\t$(_div, { 'class': classes.sScrollHeadInner } )\n\t\t\t\t\t\t\t.css( {\n\t\t\t\t\t\t\t\t'box-sizing': 'content-box',\n\t\t\t\t\t\t\t\twidth: scroll.sXInner || '100%'\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\theaderClone\n\t\t\t\t\t\t\t\t\t.removeAttr('id')\n\t\t\t\t\t\t\t\t\t.css( 'margin-left', 0 )\n\t\t\t\t\t\t\t\t\t.append( captionSide === 'top' ? caption : null )\n\t\t\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\t\t\ttable.children('thead')\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t)\n\t\t\t.append(\n\t\t\t\t$(_div, { 'class': classes.sScrollBody } )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\tposition: 'relative',\n\t\t\t\t\t\toverflow: 'auto',\n\t\t\t\t\t\twidth: size( scrollX )\n\t\t\t\t\t} )\n\t\t\t\t\t.append( table )\n\t\t\t);\n\t\n\t\tif ( footer ) {\n\t\t\tscroller.append(\n\t\t\t\t$(_div, { 'class': classes.sScrollFoot } )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\tborder: 0,\n\t\t\t\t\t\twidth: scrollX ? size(scrollX) : '100%'\n\t\t\t\t\t} )\n\t\t\t\t\t.append(\n\t\t\t\t\t\t$(_div, { 'class': classes.sScrollFootInner } )\n\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\tfooterClone\n\t\t\t\t\t\t\t\t\t.removeAttr('id')\n\t\t\t\t\t\t\t\t\t.css( 'margin-left', 0 )\n\t\t\t\t\t\t\t\t\t.append( captionSide === 'bottom' ? caption : null )\n\t\t\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\t\t\ttable.children('tfoot')\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\n\t\tvar children = scroller.children();\n\t\tvar scrollHead = children[0];\n\t\tvar scrollBody = children[1];\n\t\tvar scrollFoot = footer ? children[2] : null;\n\t\n\t\t// When the body is scrolled, then we also want to scroll the headers\n\t\tif ( scrollX ) {\n\t\t\t$(scrollBody).on( 'scroll.DT', function (e) {\n\t\t\t\tvar scrollLeft = this.scrollLeft;\n\t\n\t\t\t\tscrollHead.scrollLeft = scrollLeft;\n\t\n\t\t\t\tif ( footer ) {\n\t\t\t\t\tscrollFoot.scrollLeft = scrollLeft;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\n\t\t$(scrollBody).css(\n\t\t\tscrollY && scroll.bCollapse ? 'max-height' : 'height', \n\t\t\tscrollY\n\t\t);\n\t\n\t\tsettings.nScrollHead = scrollHead;\n\t\tsettings.nScrollBody = scrollBody;\n\t\tsettings.nScrollFoot = scrollFoot;\n\t\n\t\t// On redraw - align columns\n\t\tsettings.aoDrawCallback.push( {\n\t\t\t\"fn\": _fnScrollDraw,\n\t\t\t\"sName\": \"scrolling\"\n\t\t} );\n\t\n\t\treturn scroller[0];\n\t}\n\t\n\t\n\t\n\t/**\n\t * Update the header, footer and body tables for resizing - i.e. column\n\t * alignment.\n\t *\n\t * Welcome to the most horrible function DataTables. The process that this\n\t * function follows is basically:\n\t * 1. Re-create the table inside the scrolling div\n\t * 2. Take live measurements from the DOM\n\t * 3. Apply the measurements to align the columns\n\t * 4. Clean up\n\t *\n\t * @param {object} settings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnScrollDraw ( settings )\n\t{\n\t\t// Given that this is such a monster function, a lot of variables are use\n\t\t// to try and keep the minimised size as small as possible\n\t\tvar\n\t\t\tscroll = settings.oScroll,\n\t\t\tscrollX = scroll.sX,\n\t\t\tscrollXInner = scroll.sXInner,\n\t\t\tscrollY = scroll.sY,\n\t\t\tbarWidth = scroll.iBarWidth,\n\t\t\tdivHeader = $(settings.nScrollHead),\n\t\t\tdivHeaderStyle = divHeader[0].style,\n\t\t\tdivHeaderInner = divHeader.children('div'),\n\t\t\tdivHeaderInnerStyle = divHeaderInner[0].style,\n\t\t\tdivHeaderTable = divHeaderInner.children('table'),\n\t\t\tdivBodyEl = settings.nScrollBody,\n\t\t\tdivBody = $(divBodyEl),\n\t\t\tdivBodyStyle = divBodyEl.style,\n\t\t\tdivFooter = $(settings.nScrollFoot),\n\t\t\tdivFooterInner = divFooter.children('div'),\n\t\t\tdivFooterTable = divFooterInner.children('table'),\n\t\t\theader = $(settings.nTHead),\n\t\t\ttable = $(settings.nTable),\n\t\t\ttableEl = table[0],\n\t\t\ttableStyle = tableEl.style,\n\t\t\tfooter = settings.nTFoot ? $(settings.nTFoot) : null,\n\t\t\tbrowser = settings.oBrowser,\n\t\t\tie67 = browser.bScrollOversize,\n\t\t\tdtHeaderCells = _pluck( settings.aoColumns, 'nTh' ),\n\t\t\theaderTrgEls, footerTrgEls,\n\t\t\theaderSrcEls, footerSrcEls,\n\t\t\theaderCopy, footerCopy,\n\t\t\theaderWidths=[], footerWidths=[],\n\t\t\theaderContent=[], footerContent=[],\n\t\t\tidx, correction, sanityWidth,\n\t\t\tzeroOut = function(nSizer) {\n\t\t\t\tvar style = nSizer.style;\n\t\t\t\tstyle.paddingTop = \"0\";\n\t\t\t\tstyle.paddingBottom = \"0\";\n\t\t\t\tstyle.borderTopWidth = \"0\";\n\t\t\t\tstyle.borderBottomWidth = \"0\";\n\t\t\t\tstyle.height = 0;\n\t\t\t};\n\t\n\t\t// If the scrollbar visibility has changed from the last draw, we need to\n\t\t// adjust the column sizes as the table width will have changed to account\n\t\t// for the scrollbar\n\t\tvar scrollBarVis = divBodyEl.scrollHeight > divBodyEl.clientHeight;\n\t\t\n\t\tif ( settings.scrollBarVis !== scrollBarVis && settings.scrollBarVis !== undefined ) {\n\t\t\tsettings.scrollBarVis = scrollBarVis;\n\t\t\t_fnAdjustColumnSizing( settings );\n\t\t\treturn; // adjust column sizing will call this function again\n\t\t}\n\t\telse {\n\t\t\tsettings.scrollBarVis = scrollBarVis;\n\t\t}\n\t\n\t\t/*\n\t\t * 1. Re-create the table inside the scrolling div\n\t\t */\n\t\n\t\t// Remove the old minimised thead and tfoot elements in the inner table\n\t\ttable.children('thead, tfoot').remove();\n\t\n\t\tif ( footer ) {\n\t\t\tfooterCopy = footer.clone().prependTo( table );\n\t\t\tfooterTrgEls = footer.find('tr'); // the original tfoot is in its own table and must be sized\n\t\t\tfooterSrcEls = footerCopy.find('tr');\n\t\t}\n\t\n\t\t// Clone the current header and footer elements and then place it into the inner table\n\t\theaderCopy = header.clone().prependTo( table );\n\t\theaderTrgEls = header.find('tr'); // original header is in its own table\n\t\theaderSrcEls = headerCopy.find('tr');\n\t\theaderCopy.find('th, td').removeAttr('tabindex');\n\t\n\t\n\t\t/*\n\t\t * 2. Take live measurements from the DOM - do not alter the DOM itself!\n\t\t */\n\t\n\t\t// Remove old sizing and apply the calculated column widths\n\t\t// Get the unique column headers in the newly created (cloned) header. We want to apply the\n\t\t// calculated sizes to this header\n\t\tif ( ! scrollX )\n\t\t{\n\t\t\tdivBodyStyle.width = '100%';\n\t\t\tdivHeader[0].style.width = '100%';\n\t\t}\n\t\n\t\t$.each( _fnGetUniqueThs( settings, headerCopy ), function ( i, el ) {\n\t\t\tidx = _fnVisibleToColumnIndex( settings, i );\n\t\t\tel.style.width = settings.aoColumns[idx].sWidth;\n\t\t} );\n\t\n\t\tif ( footer ) {\n\t\t\t_fnApplyToChildren( function(n) {\n\t\t\t\tn.style.width = \"\";\n\t\t\t}, footerSrcEls );\n\t\t}\n\t\n\t\t// Size the table as a whole\n\t\tsanityWidth = table.outerWidth();\n\t\tif ( scrollX === \"\" ) {\n\t\t\t// No x scrolling\n\t\t\ttableStyle.width = \"100%\";\n\t\n\t\t\t// IE7 will make the width of the table when 100% include the scrollbar\n\t\t\t// - which is shouldn't. When there is a scrollbar we need to take this\n\t\t\t// into account.\n\t\t\tif ( ie67 && (table.find('tbody').height() > divBodyEl.offsetHeight ||\n\t\t\t\tdivBody.css('overflow-y') == \"scroll\")\n\t\t\t) {\n\t\t\t\ttableStyle.width = _fnStringToCss( table.outerWidth() - barWidth);\n\t\t\t}\n\t\n\t\t\t// Recalculate the sanity width\n\t\t\tsanityWidth = table.outerWidth();\n\t\t}\n\t\telse if ( scrollXInner !== \"\" ) {\n\t\t\t// legacy x scroll inner has been given - use it\n\t\t\ttableStyle.width = _fnStringToCss(scrollXInner);\n\t\n\t\t\t// Recalculate the sanity width\n\t\t\tsanityWidth = table.outerWidth();\n\t\t}\n\t\n\t\t// Hidden header should have zero height, so remove padding and borders. Then\n\t\t// set the width based on the real headers\n\t\n\t\t// Apply all styles in one pass\n\t\t_fnApplyToChildren( zeroOut, headerSrcEls );\n\t\n\t\t// Read all widths in next pass\n\t\t_fnApplyToChildren( function(nSizer) {\n\t\t\theaderContent.push( nSizer.innerHTML );\n\t\t\theaderWidths.push( _fnStringToCss( $(nSizer).css('width') ) );\n\t\t}, headerSrcEls );\n\t\n\t\t// Apply all widths in final pass\n\t\t_fnApplyToChildren( function(nToSize, i) {\n\t\t\t// Only apply widths to the DataTables detected header cells - this\n\t\t\t// prevents complex headers from having contradictory sizes applied\n\t\t\tif ( $.inArray( nToSize, dtHeaderCells ) !== -1 ) {\n\t\t\t\tnToSize.style.width = headerWidths[i];\n\t\t\t}\n\t\t}, headerTrgEls );\n\t\n\t\t$(headerSrcEls).height(0);\n\t\n\t\t/* Same again with the footer if we have one */\n\t\tif ( footer )\n\t\t{\n\t\t\t_fnApplyToChildren( zeroOut, footerSrcEls );\n\t\n\t\t\t_fnApplyToChildren( function(nSizer) {\n\t\t\t\tfooterContent.push( nSizer.innerHTML );\n\t\t\t\tfooterWidths.push( _fnStringToCss( $(nSizer).css('width') ) );\n\t\t\t}, footerSrcEls );\n\t\n\t\t\t_fnApplyToChildren( function(nToSize, i) {\n\t\t\t\tnToSize.style.width = footerWidths[i];\n\t\t\t}, footerTrgEls );\n\t\n\t\t\t$(footerSrcEls).height(0);\n\t\t}\n\t\n\t\n\t\t/*\n\t\t * 3. Apply the measurements\n\t\t */\n\t\n\t\t// \"Hide\" the header and footer that we used for the sizing. We need to keep\n\t\t// the content of the cell so that the width applied to the header and body\n\t\t// both match, but we want to hide it completely. We want to also fix their\n\t\t// width to what they currently are\n\t\t_fnApplyToChildren( function(nSizer, i) {\n\t\t\tnSizer.innerHTML = '
    '+headerContent[i]+'
    ';\n\t\t\tnSizer.style.width = headerWidths[i];\n\t\t}, headerSrcEls );\n\t\n\t\tif ( footer )\n\t\t{\n\t\t\t_fnApplyToChildren( function(nSizer, i) {\n\t\t\t\tnSizer.innerHTML = '
    '+footerContent[i]+'
    ';\n\t\t\t\tnSizer.style.width = footerWidths[i];\n\t\t\t}, footerSrcEls );\n\t\t}\n\t\n\t\t// Sanity check that the table is of a sensible width. If not then we are going to get\n\t\t// misalignment - try to prevent this by not allowing the table to shrink below its min width\n\t\tif ( table.outerWidth() < sanityWidth )\n\t\t{\n\t\t\t// The min width depends upon if we have a vertical scrollbar visible or not */\n\t\t\tcorrection = ((divBodyEl.scrollHeight > divBodyEl.offsetHeight ||\n\t\t\t\tdivBody.css('overflow-y') == \"scroll\")) ?\n\t\t\t\t\tsanityWidth+barWidth :\n\t\t\t\t\tsanityWidth;\n\t\n\t\t\t// IE6/7 are a law unto themselves...\n\t\t\tif ( ie67 && (divBodyEl.scrollHeight >\n\t\t\t\tdivBodyEl.offsetHeight || divBody.css('overflow-y') == \"scroll\")\n\t\t\t) {\n\t\t\t\ttableStyle.width = _fnStringToCss( correction-barWidth );\n\t\t\t}\n\t\n\t\t\t// And give the user a warning that we've stopped the table getting too small\n\t\t\tif ( scrollX === \"\" || scrollXInner !== \"\" ) {\n\t\t\t\t_fnLog( settings, 1, 'Possible column misalignment', 6 );\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcorrection = '100%';\n\t\t}\n\t\n\t\t// Apply to the container elements\n\t\tdivBodyStyle.width = _fnStringToCss( correction );\n\t\tdivHeaderStyle.width = _fnStringToCss( correction );\n\t\n\t\tif ( footer ) {\n\t\t\tsettings.nScrollFoot.style.width = _fnStringToCss( correction );\n\t\t}\n\t\n\t\n\t\t/*\n\t\t * 4. Clean up\n\t\t */\n\t\tif ( ! scrollY ) {\n\t\t\t/* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting\n\t\t\t * the scrollbar height from the visible display, rather than adding it on. We need to\n\t\t\t * set the height in order to sort this. Don't want to do it in any other browsers.\n\t\t\t */\n\t\t\tif ( ie67 ) {\n\t\t\t\tdivBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+barWidth );\n\t\t\t}\n\t\t}\n\t\n\t\t/* Finally set the width's of the header and footer tables */\n\t\tvar iOuterWidth = table.outerWidth();\n\t\tdivHeaderTable[0].style.width = _fnStringToCss( iOuterWidth );\n\t\tdivHeaderInnerStyle.width = _fnStringToCss( iOuterWidth );\n\t\n\t\t// Figure out if there are scrollbar present - if so then we need a the header and footer to\n\t\t// provide a bit more space to allow \"overflow\" scrolling (i.e. past the scrollbar)\n\t\tvar bScrolling = table.height() > divBodyEl.clientHeight || divBody.css('overflow-y') == \"scroll\";\n\t\tvar padding = 'padding' + (browser.bScrollbarLeft ? 'Left' : 'Right' );\n\t\tdivHeaderInnerStyle[ padding ] = bScrolling ? barWidth+\"px\" : \"0px\";\n\t\n\t\tif ( footer ) {\n\t\t\tdivFooterTable[0].style.width = _fnStringToCss( iOuterWidth );\n\t\t\tdivFooterInner[0].style.width = _fnStringToCss( iOuterWidth );\n\t\t\tdivFooterInner[0].style[padding] = bScrolling ? barWidth+\"px\" : \"0px\";\n\t\t}\n\t\n\t\t// Correct DOM ordering for colgroup - comes before the thead\n\t\ttable.children('colgroup').insertBefore( table.children('thead') );\n\t\n\t\t/* Adjust the position of the header in case we loose the y-scrollbar */\n\t\tdivBody.scroll();\n\t\n\t\t// If sorting or filtering has occurred, jump the scrolling back to the top\n\t\t// only if we aren't holding the position\n\t\tif ( (settings.bSorted || settings.bFiltered) && ! settings._drawHold ) {\n\t\t\tdivBodyEl.scrollTop = 0;\n\t\t}\n\t}\n\t\n\t\n\t\n\t/**\n\t * Apply a given function to the display child nodes of an element array (typically\n\t * TD children of TR rows\n\t * @param {function} fn Method to apply to the objects\n\t * @param array {nodes} an1 List of elements to look through for display children\n\t * @param array {nodes} an2 Another list (identical structure to the first) - optional\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnApplyToChildren( fn, an1, an2 )\n\t{\n\t\tvar index=0, i=0, iLen=an1.length;\n\t\tvar nNode1, nNode2;\n\t\n\t\twhile ( i < iLen ) {\n\t\t\tnNode1 = an1[i].firstChild;\n\t\t\tnNode2 = an2 ? an2[i].firstChild : null;\n\t\n\t\t\twhile ( nNode1 ) {\n\t\t\t\tif ( nNode1.nodeType === 1 ) {\n\t\t\t\t\tif ( an2 ) {\n\t\t\t\t\t\tfn( nNode1, nNode2, index );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tfn( nNode1, index );\n\t\t\t\t\t}\n\t\n\t\t\t\t\tindex++;\n\t\t\t\t}\n\t\n\t\t\t\tnNode1 = nNode1.nextSibling;\n\t\t\t\tnNode2 = an2 ? nNode2.nextSibling : null;\n\t\t\t}\n\t\n\t\t\ti++;\n\t\t}\n\t}\n\t\n\t\n\t\n\tvar __re_html_remove = /<.*?>/g;\n\t\n\t\n\t/**\n\t * Calculate the width of columns for the table\n\t * @param {object} oSettings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnCalculateColumnWidths ( oSettings )\n\t{\n\t\tvar\n\t\t\ttable = oSettings.nTable,\n\t\t\tcolumns = oSettings.aoColumns,\n\t\t\tscroll = oSettings.oScroll,\n\t\t\tscrollY = scroll.sY,\n\t\t\tscrollX = scroll.sX,\n\t\t\tscrollXInner = scroll.sXInner,\n\t\t\tcolumnCount = columns.length,\n\t\t\tvisibleColumns = _fnGetColumns( oSettings, 'bVisible' ),\n\t\t\theaderCells = $('th', oSettings.nTHead),\n\t\t\ttableWidthAttr = table.getAttribute('width'), // from DOM element\n\t\t\ttableContainer = table.parentNode,\n\t\t\tuserInputs = false,\n\t\t\ti, column, columnIdx, width, outerWidth,\n\t\t\tbrowser = oSettings.oBrowser,\n\t\t\tie67 = browser.bScrollOversize;\n\t\n\t\tvar styleWidth = table.style.width;\n\t\tif ( styleWidth && styleWidth.indexOf('%') !== -1 ) {\n\t\t\ttableWidthAttr = styleWidth;\n\t\t}\n\t\n\t\t/* Convert any user input sizes into pixel sizes */\n\t\tfor ( i=0 ; i').appendTo( tmpTable.find('tbody') );\n\t\n\t\t\t// Clone the table header and footer - we can't use the header / footer\n\t\t\t// from the cloned table, since if scrolling is active, the table's\n\t\t\t// real header and footer are contained in different table tags\n\t\t\ttmpTable.find('thead, tfoot').remove();\n\t\t\ttmpTable\n\t\t\t\t.append( $(oSettings.nTHead).clone() )\n\t\t\t\t.append( $(oSettings.nTFoot).clone() );\n\t\n\t\t\t// Remove any assigned widths from the footer (from scrolling)\n\t\t\ttmpTable.find('tfoot th, tfoot td').css('width', '');\n\t\n\t\t\t// Apply custom sizing to the cloned header\n\t\t\theaderCells = _fnGetUniqueThs( oSettings, tmpTable.find('thead')[0] );\n\t\n\t\t\tfor ( i=0 ; i').css( {\n\t\t\t\t\t\twidth: column.sWidthOrig,\n\t\t\t\t\t\tmargin: 0,\n\t\t\t\t\t\tpadding: 0,\n\t\t\t\t\t\tborder: 0,\n\t\t\t\t\t\theight: 1\n\t\t\t\t\t} ) );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Find the widest cell for each column and put it into the table\n\t\t\tif ( oSettings.aoData.length ) {\n\t\t\t\tfor ( i=0 ; i').css( scrollX || scrollY ?\n\t\t\t\t\t{\n\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\theight: 1,\n\t\t\t\t\t\tright: 0,\n\t\t\t\t\t\toverflow: 'hidden'\n\t\t\t\t\t} :\n\t\t\t\t\t{}\n\t\t\t\t)\n\t\t\t\t.append( tmpTable )\n\t\t\t\t.appendTo( tableContainer );\n\t\n\t\t\t// When scrolling (X or Y) we want to set the width of the table as \n\t\t\t// appropriate. However, when not scrolling leave the table width as it\n\t\t\t// is. This results in slightly different, but I think correct behaviour\n\t\t\tif ( scrollX && scrollXInner ) {\n\t\t\t\ttmpTable.width( scrollXInner );\n\t\t\t}\n\t\t\telse if ( scrollX ) {\n\t\t\t\ttmpTable.css( 'width', 'auto' );\n\t\t\t\ttmpTable.removeAttr('width');\n\t\n\t\t\t\t// If there is no width attribute or style, then allow the table to\n\t\t\t\t// collapse\n\t\t\t\tif ( tmpTable.width() < tableContainer.clientWidth && tableWidthAttr ) {\n\t\t\t\t\ttmpTable.width( tableContainer.clientWidth );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( scrollY ) {\n\t\t\t\ttmpTable.width( tableContainer.clientWidth );\n\t\t\t}\n\t\t\telse if ( tableWidthAttr ) {\n\t\t\t\ttmpTable.width( tableWidthAttr );\n\t\t\t}\n\t\n\t\t\t// Get the width of each column in the constructed table - we need to\n\t\t\t// know the inner width (so it can be assigned to the other table's\n\t\t\t// cells) and the outer width so we can calculate the full width of the\n\t\t\t// table. This is safe since DataTables requires a unique cell for each\n\t\t\t// column, but if ever a header can span multiple columns, this will\n\t\t\t// need to be modified.\n\t\t\tvar total = 0;\n\t\t\tfor ( i=0 ; i')\n\t\t\t.css( 'width', _fnStringToCss( width ) )\n\t\t\t.appendTo( parent || document.body );\n\t\n\t\tvar val = n[0].offsetWidth;\n\t\tn.remove();\n\t\n\t\treturn val;\n\t}\n\t\n\t\n\t/**\n\t * Get the widest node\n\t * @param {object} settings dataTables settings object\n\t * @param {int} colIdx column of interest\n\t * @returns {node} widest table node\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnGetWidestNode( settings, colIdx )\n\t{\n\t\tvar idx = _fnGetMaxLenString( settings, colIdx );\n\t\tif ( idx < 0 ) {\n\t\t\treturn null;\n\t\t}\n\t\n\t\tvar data = settings.aoData[ idx ];\n\t\treturn ! data.nTr ? // Might not have been created when deferred rendering\n\t\t\t$('
    ').html( _fnGetCellData( settings, idx, colIdx, 'display' ) )[0] :\n\t\t\tdata.anCells[ colIdx ];\n\t}\n\t\n\t\n\t/**\n\t * Get the maximum strlen for each data column\n\t * @param {object} settings dataTables settings object\n\t * @param {int} colIdx column of interest\n\t * @returns {string} max string length for each column\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnGetMaxLenString( settings, colIdx )\n\t{\n\t\tvar s, max=-1, maxIdx = -1;\n\t\n\t\tfor ( var i=0, ien=settings.aoData.length ; i max ) {\n\t\t\t\tmax = s.length;\n\t\t\t\tmaxIdx = i;\n\t\t\t}\n\t\t}\n\t\n\t\treturn maxIdx;\n\t}\n\t\n\t\n\t/**\n\t * Append a CSS unit (only if required) to a string\n\t * @param {string} value to css-ify\n\t * @returns {string} value with css unit\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnStringToCss( s )\n\t{\n\t\tif ( s === null ) {\n\t\t\treturn '0px';\n\t\t}\n\t\n\t\tif ( typeof s == 'number' ) {\n\t\t\treturn s < 0 ?\n\t\t\t\t'0px' :\n\t\t\t\ts+'px';\n\t\t}\n\t\n\t\t// Check it has a unit character already\n\t\treturn s.match(/\\d$/) ?\n\t\t\ts+'px' :\n\t\t\ts;\n\t}\n\t\n\t\n\t\n\tfunction _fnSortFlatten ( settings )\n\t{\n\t\tvar\n\t\t\ti, iLen, k, kLen,\n\t\t\taSort = [],\n\t\t\taiOrig = [],\n\t\t\taoColumns = settings.aoColumns,\n\t\t\taDataSort, iCol, sType, srcCol,\n\t\t\tfixed = settings.aaSortingFixed,\n\t\t\tfixedObj = $.isPlainObject( fixed ),\n\t\t\tnestedSort = [],\n\t\t\tadd = function ( a ) {\n\t\t\t\tif ( a.length && ! $.isArray( a[0] ) ) {\n\t\t\t\t\t// 1D array\n\t\t\t\t\tnestedSort.push( a );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// 2D array\n\t\t\t\t\t$.merge( nestedSort, a );\n\t\t\t\t}\n\t\t\t};\n\t\n\t\t// Build the sort array, with pre-fix and post-fix options if they have been\n\t\t// specified\n\t\tif ( $.isArray( fixed ) ) {\n\t\t\tadd( fixed );\n\t\t}\n\t\n\t\tif ( fixedObj && fixed.pre ) {\n\t\t\tadd( fixed.pre );\n\t\t}\n\t\n\t\tadd( settings.aaSorting );\n\t\n\t\tif (fixedObj && fixed.post ) {\n\t\t\tadd( fixed.post );\n\t\t}\n\t\n\t\tfor ( i=0 ; iy ? 1 : 0;\n\t\t\t\t\t\tif ( test !== 0 ) {\n\t\t\t\t\t\t\treturn sort.dir === 'asc' ? test : -test;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\tx = aiOrig[a];\n\t\t\t\t\ty = aiOrig[b];\n\t\t\t\t\treturn xy ? 1 : 0;\n\t\t\t\t} );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Depreciated - remove in 1.11 (providing a plug-in option)\n\t\t\t\t// Not all sort types have formatting methods, so we have to call their sorting\n\t\t\t\t// methods.\n\t\t\t\tdisplayMaster.sort( function ( a, b ) {\n\t\t\t\t\tvar\n\t\t\t\t\t\tx, y, k, l, test, sort, fn,\n\t\t\t\t\t\tlen=aSort.length,\n\t\t\t\t\t\tdataA = aoData[a]._aSortData,\n\t\t\t\t\t\tdataB = aoData[b]._aSortData;\n\t\n\t\t\t\t\tfor ( k=0 ; ky ? 1 : 0;\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t\n\t\t/* Tell the draw function that we have sorted the data */\n\t\toSettings.bSorted = true;\n\t}\n\t\n\t\n\tfunction _fnSortAria ( settings )\n\t{\n\t\tvar label;\n\t\tvar nextSort;\n\t\tvar columns = settings.aoColumns;\n\t\tvar aSort = _fnSortFlatten( settings );\n\t\tvar oAria = settings.oLanguage.oAria;\n\t\n\t\t// ARIA attributes - need to loop all columns, to update all (removing old\n\t\t// attributes as needed)\n\t\tfor ( var i=0, iLen=columns.length ; i/g, \"\" );\n\t\t\tvar th = col.nTh;\n\t\n\t\t\t// IE7 is throwing an error when setting these properties with jQuery's\n\t\t\t// attr() and removeAttr() methods...\n\t\t\tth.removeAttribute('aria-sort');\n\t\n\t\t\t/* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */\n\t\t\tif ( col.bSortable ) {\n\t\t\t\tif ( aSort.length > 0 && aSort[0].col == i ) {\n\t\t\t\t\tth.setAttribute('aria-sort', aSort[0].dir==\"asc\" ? \"ascending\" : \"descending\" );\n\t\t\t\t\tnextSort = asSorting[ aSort[0].index+1 ] || asSorting[0];\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tnextSort = asSorting[0];\n\t\t\t\t}\n\t\n\t\t\t\tlabel = sTitle + ( nextSort === \"asc\" ?\n\t\t\t\t\toAria.sSortAscending :\n\t\t\t\t\toAria.sSortDescending\n\t\t\t\t);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlabel = sTitle;\n\t\t\t}\n\t\n\t\t\tth.setAttribute('aria-label', label);\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Function to run on user sort request\n\t * @param {object} settings dataTables settings object\n\t * @param {node} attachTo node to attach the handler to\n\t * @param {int} colIdx column sorting index\n\t * @param {boolean} [append=false] Append the requested sort to the existing\n\t * sort if true (i.e. multi-column sort)\n\t * @param {function} [callback] callback function\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnSortListener ( settings, colIdx, append, callback )\n\t{\n\t\tvar col = settings.aoColumns[ colIdx ];\n\t\tvar sorting = settings.aaSorting;\n\t\tvar asSorting = col.asSorting;\n\t\tvar nextSortIdx;\n\t\tvar next = function ( a, overflow ) {\n\t\t\tvar idx = a._idx;\n\t\t\tif ( idx === undefined ) {\n\t\t\t\tidx = $.inArray( a[1], asSorting );\n\t\t\t}\n\t\n\t\t\treturn idx+1 < asSorting.length ?\n\t\t\t\tidx+1 :\n\t\t\t\toverflow ?\n\t\t\t\t\tnull :\n\t\t\t\t\t0;\n\t\t};\n\t\n\t\t// Convert to 2D array if needed\n\t\tif ( typeof sorting[0] === 'number' ) {\n\t\t\tsorting = settings.aaSorting = [ sorting ];\n\t\t}\n\t\n\t\t// If appending the sort then we are multi-column sorting\n\t\tif ( append && settings.oFeatures.bSortMulti ) {\n\t\t\t// Are we already doing some kind of sort on this column?\n\t\t\tvar sortIdx = $.inArray( colIdx, _pluck(sorting, '0') );\n\t\n\t\t\tif ( sortIdx !== -1 ) {\n\t\t\t\t// Yes, modify the sort\n\t\t\t\tnextSortIdx = next( sorting[sortIdx], true );\n\t\n\t\t\t\tif ( nextSortIdx === null && sorting.length === 1 ) {\n\t\t\t\t\tnextSortIdx = 0; // can't remove sorting completely\n\t\t\t\t}\n\t\n\t\t\t\tif ( nextSortIdx === null ) {\n\t\t\t\t\tsorting.splice( sortIdx, 1 );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tsorting[sortIdx][1] = asSorting[ nextSortIdx ];\n\t\t\t\t\tsorting[sortIdx]._idx = nextSortIdx;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// No sort on this column yet\n\t\t\t\tsorting.push( [ colIdx, asSorting[0], 0 ] );\n\t\t\t\tsorting[sorting.length-1]._idx = 0;\n\t\t\t}\n\t\t}\n\t\telse if ( sorting.length && sorting[0][0] == colIdx ) {\n\t\t\t// Single column - already sorting on this column, modify the sort\n\t\t\tnextSortIdx = next( sorting[0] );\n\t\n\t\t\tsorting.length = 1;\n\t\t\tsorting[0][1] = asSorting[ nextSortIdx ];\n\t\t\tsorting[0]._idx = nextSortIdx;\n\t\t}\n\t\telse {\n\t\t\t// Single column - sort only on this column\n\t\t\tsorting.length = 0;\n\t\t\tsorting.push( [ colIdx, asSorting[0] ] );\n\t\t\tsorting[0]._idx = 0;\n\t\t}\n\t\n\t\t// Run the sort by calling a full redraw\n\t\t_fnReDraw( settings );\n\t\n\t\t// callback used for async user interaction\n\t\tif ( typeof callback == 'function' ) {\n\t\t\tcallback( settings );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Attach a sort handler (click) to a node\n\t * @param {object} settings dataTables settings object\n\t * @param {node} attachTo node to attach the handler to\n\t * @param {int} colIdx column sorting index\n\t * @param {function} [callback] callback function\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnSortAttachListener ( settings, attachTo, colIdx, callback )\n\t{\n\t\tvar col = settings.aoColumns[ colIdx ];\n\t\n\t\t_fnBindAction( attachTo, {}, function (e) {\n\t\t\t/* If the column is not sortable - don't to anything */\n\t\t\tif ( col.bSortable === false ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t// If processing is enabled use a timeout to allow the processing\n\t\t\t// display to be shown - otherwise to it synchronously\n\t\t\tif ( settings.oFeatures.bProcessing ) {\n\t\t\t\t_fnProcessingDisplay( settings, true );\n\t\n\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t_fnSortListener( settings, colIdx, e.shiftKey, callback );\n\t\n\t\t\t\t\t// In server-side processing, the draw callback will remove the\n\t\t\t\t\t// processing display\n\t\t\t\t\tif ( _fnDataSource( settings ) !== 'ssp' ) {\n\t\t\t\t\t\t_fnProcessingDisplay( settings, false );\n\t\t\t\t\t}\n\t\t\t\t}, 0 );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_fnSortListener( settings, colIdx, e.shiftKey, callback );\n\t\t\t}\n\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Set the sorting classes on table's body, Note: it is safe to call this function\n\t * when bSort and bSortClasses are false\n\t * @param {object} oSettings dataTables settings object\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnSortingClasses( settings )\n\t{\n\t\tvar oldSort = settings.aLastSort;\n\t\tvar sortClass = settings.oClasses.sSortColumn;\n\t\tvar sort = _fnSortFlatten( settings );\n\t\tvar features = settings.oFeatures;\n\t\tvar i, ien, colIdx;\n\t\n\t\tif ( features.bSort && features.bSortClasses ) {\n\t\t\t// Remove old sorting classes\n\t\t\tfor ( i=0, ien=oldSort.length ; i 0 && s.time < +new Date() - (duration*1000) ) {\n\t\t\t\tcallback();\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t// Number of columns have changed - all bets are off, no restore of settings\n\t\t\tif ( s.columns && columns.length !== s.columns.length ) {\n\t\t\t\tcallback();\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t// Store the saved state so it might be accessed at any time\n\t\t\tsettings.oLoadedState = $.extend( true, {}, state );\n\t\n\t\t\t// Restore key features - todo - for 1.11 this needs to be done by\n\t\t\t// subscribed events\n\t\t\tif ( s.start !== undefined ) {\n\t\t\t\tsettings._iDisplayStart = s.start;\n\t\t\t\tsettings.iInitDisplayStart = s.start;\n\t\t\t}\n\t\t\tif ( s.length !== undefined ) {\n\t\t\t\tsettings._iDisplayLength = s.length;\n\t\t\t}\n\t\n\t\t\t// Order\n\t\t\tif ( s.order !== undefined ) {\n\t\t\t\tsettings.aaSorting = [];\n\t\t\t\t$.each( s.order, function ( i, col ) {\n\t\t\t\t\tsettings.aaSorting.push( col[0] >= columns.length ?\n\t\t\t\t\t\t[ 0, col[1] ] :\n\t\t\t\t\t\tcol\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t}\n\t\n\t\t\t// Search\n\t\t\tif ( s.search !== undefined ) {\n\t\t\t\t$.extend( settings.oPreviousSearch, _fnSearchToHung( s.search ) );\n\t\t\t}\n\t\n\t\t\t// Columns\n\t\t\t// \n\t\t\tif ( s.columns ) {\n\t\t\t\tfor ( i=0, ien=s.columns.length ; i= end )\n\t\t{\n\t\t\tstart = end - len;\n\t\t}\n\t\n\t\t// Keep the start record on the current page\n\t\tstart -= (start % len);\n\t\n\t\tif ( len === -1 || start < 0 )\n\t\t{\n\t\t\tstart = 0;\n\t\t}\n\t\n\t\tsettings._iDisplayStart = start;\n\t}\n\t\n\t\n\tfunction _fnRenderer( settings, type )\n\t{\n\t\tvar renderer = settings.renderer;\n\t\tvar host = DataTable.ext.renderer[type];\n\t\n\t\tif ( $.isPlainObject( renderer ) && renderer[type] ) {\n\t\t\t// Specific renderer for this type. If available use it, otherwise use\n\t\t\t// the default.\n\t\t\treturn host[renderer[type]] || host._;\n\t\t}\n\t\telse if ( typeof renderer === 'string' ) {\n\t\t\t// Common renderer - if there is one available for this type use it,\n\t\t\t// otherwise use the default\n\t\t\treturn host[renderer] || host._;\n\t\t}\n\t\n\t\t// Use the default\n\t\treturn host._;\n\t}\n\t\n\t\n\t/**\n\t * Detect the data source being used for the table. Used to simplify the code\n\t * a little (ajax) and to make it compress a little smaller.\n\t *\n\t * @param {object} settings dataTables settings object\n\t * @returns {string} Data source\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnDataSource ( settings )\n\t{\n\t\tif ( settings.oFeatures.bServerSide ) {\n\t\t\treturn 'ssp';\n\t\t}\n\t\telse if ( settings.ajax || settings.sAjaxSource ) {\n\t\t\treturn 'ajax';\n\t\t}\n\t\treturn 'dom';\n\t}\n\t\n\n\t\n\t\n\t/**\n\t * Computed structure of the DataTables API, defined by the options passed to\n\t * `DataTable.Api.register()` when building the API.\n\t *\n\t * The structure is built in order to speed creation and extension of the Api\n\t * objects since the extensions are effectively pre-parsed.\n\t *\n\t * The array is an array of objects with the following structure, where this\n\t * base array represents the Api prototype base:\n\t *\n\t * [\n\t * {\n\t * name: 'data' -- string - Property name\n\t * val: function () {}, -- function - Api method (or undefined if just an object\n\t * methodExt: [ ... ], -- array - Array of Api object definitions to extend the method result\n\t * propExt: [ ... ] -- array - Array of Api object definitions to extend the property\n\t * },\n\t * {\n\t * name: 'row'\n\t * val: {},\n\t * methodExt: [ ... ],\n\t * propExt: [\n\t * {\n\t * name: 'data'\n\t * val: function () {},\n\t * methodExt: [ ... ],\n\t * propExt: [ ... ]\n\t * },\n\t * ...\n\t * ]\n\t * }\n\t * ]\n\t *\n\t * @type {Array}\n\t * @ignore\n\t */\n\tvar __apiStruct = [];\n\t\n\t\n\t/**\n\t * `Array.prototype` reference.\n\t *\n\t * @type object\n\t * @ignore\n\t */\n\tvar __arrayProto = Array.prototype;\n\t\n\t\n\t/**\n\t * Abstraction for `context` parameter of the `Api` constructor to allow it to\n\t * take several different forms for ease of use.\n\t *\n\t * Each of the input parameter types will be converted to a DataTables settings\n\t * object where possible.\n\t *\n\t * @param {string|node|jQuery|object} mixed DataTable identifier. Can be one\n\t * of:\n\t *\n\t * * `string` - jQuery selector. Any DataTables' matching the given selector\n\t * with be found and used.\n\t * * `node` - `TABLE` node which has already been formed into a DataTable.\n\t * * `jQuery` - A jQuery object of `TABLE` nodes.\n\t * * `object` - DataTables settings object\n\t * * `DataTables.Api` - API instance\n\t * @return {array|null} Matching DataTables settings objects. `null` or\n\t * `undefined` is returned if no matching DataTable is found.\n\t * @ignore\n\t */\n\tvar _toSettings = function ( mixed )\n\t{\n\t\tvar idx, jq;\n\t\tvar settings = DataTable.settings;\n\t\tvar tables = $.map( settings, function (el, i) {\n\t\t\treturn el.nTable;\n\t\t} );\n\t\n\t\tif ( ! mixed ) {\n\t\t\treturn [];\n\t\t}\n\t\telse if ( mixed.nTable && mixed.oApi ) {\n\t\t\t// DataTables settings object\n\t\t\treturn [ mixed ];\n\t\t}\n\t\telse if ( mixed.nodeName && mixed.nodeName.toLowerCase() === 'table' ) {\n\t\t\t// Table node\n\t\t\tidx = $.inArray( mixed, tables );\n\t\t\treturn idx !== -1 ? [ settings[idx] ] : null;\n\t\t}\n\t\telse if ( mixed && typeof mixed.settings === 'function' ) {\n\t\t\treturn mixed.settings().toArray();\n\t\t}\n\t\telse if ( typeof mixed === 'string' ) {\n\t\t\t// jQuery selector\n\t\t\tjq = $(mixed);\n\t\t}\n\t\telse if ( mixed instanceof $ ) {\n\t\t\t// jQuery object (also DataTables instance)\n\t\t\tjq = mixed;\n\t\t}\n\t\n\t\tif ( jq ) {\n\t\t\treturn jq.map( function(i) {\n\t\t\t\tidx = $.inArray( this, tables );\n\t\t\t\treturn idx !== -1 ? settings[idx] : null;\n\t\t\t} ).toArray();\n\t\t}\n\t};\n\t\n\t\n\t/**\n\t * DataTables API class - used to control and interface with one or more\n\t * DataTables enhanced tables.\n\t *\n\t * The API class is heavily based on jQuery, presenting a chainable interface\n\t * that you can use to interact with tables. Each instance of the API class has\n\t * a \"context\" - i.e. the tables that it will operate on. This could be a single\n\t * table, all tables on a page or a sub-set thereof.\n\t *\n\t * Additionally the API is designed to allow you to easily work with the data in\n\t * the tables, retrieving and manipulating it as required. This is done by\n\t * presenting the API class as an array like interface. The contents of the\n\t * array depend upon the actions requested by each method (for example\n\t * `rows().nodes()` will return an array of nodes, while `rows().data()` will\n\t * return an array of objects or arrays depending upon your table's\n\t * configuration). The API object has a number of array like methods (`push`,\n\t * `pop`, `reverse` etc) as well as additional helper methods (`each`, `pluck`,\n\t * `unique` etc) to assist your working with the data held in a table.\n\t *\n\t * Most methods (those which return an Api instance) are chainable, which means\n\t * the return from a method call also has all of the methods available that the\n\t * top level object had. For example, these two calls are equivalent:\n\t *\n\t * // Not chained\n\t * api.row.add( {...} );\n\t * api.draw();\n\t *\n\t * // Chained\n\t * api.row.add( {...} ).draw();\n\t *\n\t * @class DataTable.Api\n\t * @param {array|object|string|jQuery} context DataTable identifier. This is\n\t * used to define which DataTables enhanced tables this API will operate on.\n\t * Can be one of:\n\t *\n\t * * `string` - jQuery selector. Any DataTables' matching the given selector\n\t * with be found and used.\n\t * * `node` - `TABLE` node which has already been formed into a DataTable.\n\t * * `jQuery` - A jQuery object of `TABLE` nodes.\n\t * * `object` - DataTables settings object\n\t * @param {array} [data] Data to initialise the Api instance with.\n\t *\n\t * @example\n\t * // Direct initialisation during DataTables construction\n\t * var api = $('#example').DataTable();\n\t *\n\t * @example\n\t * // Initialisation using a DataTables jQuery object\n\t * var api = $('#example').dataTable().api();\n\t *\n\t * @example\n\t * // Initialisation as a constructor\n\t * var api = new $.fn.DataTable.Api( 'table.dataTable' );\n\t */\n\t_Api = function ( context, data )\n\t{\n\t\tif ( ! (this instanceof _Api) ) {\n\t\t\treturn new _Api( context, data );\n\t\t}\n\t\n\t\tvar settings = [];\n\t\tvar ctxSettings = function ( o ) {\n\t\t\tvar a = _toSettings( o );\n\t\t\tif ( a ) {\n\t\t\t\tsettings = settings.concat( a );\n\t\t\t}\n\t\t};\n\t\n\t\tif ( $.isArray( context ) ) {\n\t\t\tfor ( var i=0, ien=context.length ; i idx ?\n\t\t\t\tnew _Api( ctx[idx], this[idx] ) :\n\t\t\t\tnull;\n\t\t},\n\t\n\t\n\t\tfilter: function ( fn )\n\t\t{\n\t\t\tvar a = [];\n\t\n\t\t\tif ( __arrayProto.filter ) {\n\t\t\t\ta = __arrayProto.filter.call( this, fn, this );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Compatibility for browsers without EMCA-252-5 (JS 1.6)\n\t\t\t\tfor ( var i=0, ien=this.length ; i 0 ) {\n\t\t\treturn ctx[0].json;\n\t\t}\n\t\n\t\t// else return undefined;\n\t} );\n\t\n\t\n\t/**\n\t * Get the data submitted in the last Ajax request\n\t */\n\t_api_register( 'ajax.params()', function () {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( ctx.length > 0 ) {\n\t\t\treturn ctx[0].oAjaxData;\n\t\t}\n\t\n\t\t// else return undefined;\n\t} );\n\t\n\t\n\t/**\n\t * Reload tables from the Ajax data source. Note that this function will\n\t * automatically re-draw the table when the remote data has been loaded.\n\t *\n\t * @param {boolean} [reset=true] Reset (default) or hold the current paging\n\t * position. A full re-sort and re-filter is performed when this method is\n\t * called, which is why the pagination reset is the default action.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'ajax.reload()', function ( callback, resetPaging ) {\n\t\treturn this.iterator( 'table', function (settings) {\n\t\t\t__reload( settings, resetPaging===false, callback );\n\t\t} );\n\t} );\n\t\n\t\n\t/**\n\t * Get the current Ajax URL. Note that this returns the URL from the first\n\t * table in the current context.\n\t *\n\t * @return {string} Current Ajax source URL\n\t *//**\n\t * Set the Ajax URL. Note that this will set the URL for all tables in the\n\t * current context.\n\t *\n\t * @param {string} url URL to set.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'ajax.url()', function ( url ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( url === undefined ) {\n\t\t\t// get\n\t\t\tif ( ctx.length === 0 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tctx = ctx[0];\n\t\n\t\t\treturn ctx.ajax ?\n\t\t\t\t$.isPlainObject( ctx.ajax ) ?\n\t\t\t\t\tctx.ajax.url :\n\t\t\t\t\tctx.ajax :\n\t\t\t\tctx.sAjaxSource;\n\t\t}\n\t\n\t\t// set\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tif ( $.isPlainObject( settings.ajax ) ) {\n\t\t\t\tsettings.ajax.url = url;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tsettings.ajax = url;\n\t\t\t}\n\t\t\t// No need to consider sAjaxSource here since DataTables gives priority\n\t\t\t// to `ajax` over `sAjaxSource`. So setting `ajax` here, renders any\n\t\t\t// value of `sAjaxSource` redundant.\n\t\t} );\n\t} );\n\t\n\t\n\t/**\n\t * Load data from the newly set Ajax URL. Note that this method is only\n\t * available when `ajax.url()` is used to set a URL. Additionally, this method\n\t * has the same effect as calling `ajax.reload()` but is provided for\n\t * convenience when setting a new URL. Like `ajax.reload()` it will\n\t * automatically redraw the table once the remote data has been loaded.\n\t *\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'ajax.url().load()', function ( callback, resetPaging ) {\n\t\t// Same as a reload, but makes sense to present it for easy access after a\n\t\t// url change\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\t__reload( ctx, resetPaging===false, callback );\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t\n\tvar _selector_run = function ( type, selector, selectFn, settings, opts )\n\t{\n\t\tvar\n\t\t\tout = [], res,\n\t\t\ta, i, ien, j, jen,\n\t\t\tselectorType = typeof selector;\n\t\n\t\t// Can't just check for isArray here, as an API or jQuery instance might be\n\t\t// given with their array like look\n\t\tif ( ! selector || selectorType === 'string' || selectorType === 'function' || selector.length === undefined ) {\n\t\t\tselector = [ selector ];\n\t\t}\n\t\n\t\tfor ( i=0, ien=selector.length ; i 0 ) {\n\t\t\t\t// Assign the first element to the first item in the instance\n\t\t\t\t// and truncate the instance and context\n\t\t\t\tinst[0] = inst[i];\n\t\t\t\tinst[0].length = 1;\n\t\t\t\tinst.length = 1;\n\t\t\t\tinst.context = [ inst.context[i] ];\n\t\n\t\t\t\treturn inst;\n\t\t\t}\n\t\t}\n\t\n\t\t// Not found - return an empty instance\n\t\tinst.length = 0;\n\t\treturn inst;\n\t};\n\t\n\t\n\tvar _selector_row_indexes = function ( settings, opts )\n\t{\n\t\tvar\n\t\t\ti, ien, tmp, a=[],\n\t\t\tdisplayFiltered = settings.aiDisplay,\n\t\t\tdisplayMaster = settings.aiDisplayMaster;\n\t\n\t\tvar\n\t\t\tsearch = opts.search, // none, applied, removed\n\t\t\torder = opts.order, // applied, current, index (original - compatibility with 1.9)\n\t\t\tpage = opts.page; // all, current\n\t\n\t\tif ( _fnDataSource( settings ) == 'ssp' ) {\n\t\t\t// In server-side processing mode, most options are irrelevant since\n\t\t\t// rows not shown don't exist and the index order is the applied order\n\t\t\t// Removed is a special case - for consistency just return an empty\n\t\t\t// array\n\t\t\treturn search === 'removed' ?\n\t\t\t\t[] :\n\t\t\t\t_range( 0, displayMaster.length );\n\t\t}\n\t\telse if ( page == 'current' ) {\n\t\t\t// Current page implies that order=current and fitler=applied, since it is\n\t\t\t// fairly senseless otherwise, regardless of what order and search actually\n\t\t\t// are\n\t\t\tfor ( i=settings._iDisplayStart, ien=settings.fnDisplayEnd() ; i= 0 && search == 'applied') )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( i );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn a;\n\t};\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Rows\n\t *\n\t * {} - no selector - use all available rows\n\t * {integer} - row aoData index\n\t * {node} - TR node\n\t * {string} - jQuery selector to apply to the TR elements\n\t * {array} - jQuery array of nodes, or simply an array of TR nodes\n\t *\n\t */\n\t\n\t\n\tvar __row_selector = function ( settings, selector, opts )\n\t{\n\t\tvar rows;\n\t\tvar run = function ( sel ) {\n\t\t\tvar selInt = _intVal( sel );\n\t\t\tvar i, ien;\n\t\n\t\t\t// Short cut - selector is a number and no options provided (default is\n\t\t\t// all records, so no need to check if the index is in there, since it\n\t\t\t// must be - dev error if the index doesn't exist).\n\t\t\tif ( selInt !== null && ! opts ) {\n\t\t\t\treturn [ selInt ];\n\t\t\t}\n\t\n\t\t\tif ( ! rows ) {\n\t\t\t\trows = _selector_row_indexes( settings, opts );\n\t\t\t}\n\t\n\t\t\tif ( selInt !== null && $.inArray( selInt, rows ) !== -1 ) {\n\t\t\t\t// Selector - integer\n\t\t\t\treturn [ selInt ];\n\t\t\t}\n\t\t\telse if ( sel === null || sel === undefined || sel === '' ) {\n\t\t\t\t// Selector - none\n\t\t\t\treturn rows;\n\t\t\t}\n\t\n\t\t\t// Selector - function\n\t\t\tif ( typeof sel === 'function' ) {\n\t\t\t\treturn $.map( rows, function (idx) {\n\t\t\t\t\tvar row = settings.aoData[ idx ];\n\t\t\t\t\treturn sel( idx, row._aData, row.nTr ) ? idx : null;\n\t\t\t\t} );\n\t\t\t}\n\t\n\t\t\t// Get nodes in the order from the `rows` array with null values removed\n\t\t\tvar nodes = _removeEmpty(\n\t\t\t\t_pluck_order( settings.aoData, rows, 'nTr' )\n\t\t\t);\n\t\n\t\t\t// Selector - node\n\t\t\tif ( sel.nodeName ) {\n\t\t\t\tif ( sel._DT_RowIndex !== undefined ) {\n\t\t\t\t\treturn [ sel._DT_RowIndex ]; // Property added by DT for fast lookup\n\t\t\t\t}\n\t\t\t\telse if ( sel._DT_CellIndex ) {\n\t\t\t\t\treturn [ sel._DT_CellIndex.row ];\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tvar host = $(sel).closest('*[data-dt-row]');\n\t\t\t\t\treturn host.length ?\n\t\t\t\t\t\t[ host.data('dt-row') ] :\n\t\t\t\t\t\t[];\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// ID selector. Want to always be able to select rows by id, regardless\n\t\t\t// of if the tr element has been created or not, so can't rely upon\n\t\t\t// jQuery here - hence a custom implementation. This does not match\n\t\t\t// Sizzle's fast selector or HTML4 - in HTML5 the ID can be anything,\n\t\t\t// but to select it using a CSS selector engine (like Sizzle or\n\t\t\t// querySelect) it would need to need to be escaped for some characters.\n\t\t\t// DataTables simplifies this for row selectors since you can select\n\t\t\t// only a row. A # indicates an id any anything that follows is the id -\n\t\t\t// unescaped.\n\t\t\tif ( typeof sel === 'string' && sel.charAt(0) === '#' ) {\n\t\t\t\t// get row index from id\n\t\t\t\tvar rowObj = settings.aIds[ sel.replace( /^#/, '' ) ];\n\t\t\t\tif ( rowObj !== undefined ) {\n\t\t\t\t\treturn [ rowObj.idx ];\n\t\t\t\t}\n\t\n\t\t\t\t// need to fall through to jQuery in case there is DOM id that\n\t\t\t\t// matches\n\t\t\t}\n\t\n\t\t\t// Selector - jQuery selector string, array of nodes or jQuery object/\n\t\t\t// As jQuery's .filter() allows jQuery objects to be passed in filter,\n\t\t\t// it also allows arrays, so this will cope with all three options\n\t\t\treturn $(nodes)\n\t\t\t\t.filter( sel )\n\t\t\t\t.map( function () {\n\t\t\t\t\treturn this._DT_RowIndex;\n\t\t\t\t} )\n\t\t\t\t.toArray();\n\t\t};\n\t\n\t\treturn _selector_run( 'row', selector, run, settings, opts );\n\t};\n\t\n\t\n\t_api_register( 'rows()', function ( selector, opts ) {\n\t\t// argument shifting\n\t\tif ( selector === undefined ) {\n\t\t\tselector = '';\n\t\t}\n\t\telse if ( $.isPlainObject( selector ) ) {\n\t\t\topts = selector;\n\t\t\tselector = '';\n\t\t}\n\t\n\t\topts = _selector_opts( opts );\n\t\n\t\tvar inst = this.iterator( 'table', function ( settings ) {\n\t\t\treturn __row_selector( settings, selector, opts );\n\t\t}, 1 );\n\t\n\t\t// Want argument shifting here and in __row_selector?\n\t\tinst.selector.rows = selector;\n\t\tinst.selector.opts = opts;\n\t\n\t\treturn inst;\n\t} );\n\t\n\t_api_register( 'rows().nodes()', function () {\n\t\treturn this.iterator( 'row', function ( settings, row ) {\n\t\t\treturn settings.aoData[ row ].nTr || undefined;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_register( 'rows().data()', function () {\n\t\treturn this.iterator( true, 'rows', function ( settings, rows ) {\n\t\t\treturn _pluck_order( settings.aoData, rows, '_aData' );\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'rows().cache()', 'row().cache()', function ( type ) {\n\t\treturn this.iterator( 'row', function ( settings, row ) {\n\t\t\tvar r = settings.aoData[ row ];\n\t\t\treturn type === 'search' ? r._aFilterData : r._aSortData;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'rows().invalidate()', 'row().invalidate()', function ( src ) {\n\t\treturn this.iterator( 'row', function ( settings, row ) {\n\t\t\t_fnInvalidate( settings, row, src );\n\t\t} );\n\t} );\n\t\n\t_api_registerPlural( 'rows().indexes()', 'row().index()', function () {\n\t\treturn this.iterator( 'row', function ( settings, row ) {\n\t\t\treturn row;\n\t\t}, 1 );\n\t} );\n\t\n\t_api_registerPlural( 'rows().ids()', 'row().id()', function ( hash ) {\n\t\tvar a = [];\n\t\tvar context = this.context;\n\t\n\t\t// `iterator` will drop undefined values, but in this case we want them\n\t\tfor ( var i=0, ien=context.length ; i
    ` node is a DataTable table already or not.\n\t *\n\t * @param {node|jquery|string} table Table node, jQuery object or jQuery\n\t * selector for the table to test. Note that if more than more than one\n\t * table is passed on, only the first will be checked\n\t * @returns {boolean} true the table given is a DataTable, or false otherwise\n\t * @static\n\t * @dtopt API-Static\n\t *\n\t * @example\n\t * if ( ! $.fn.DataTable.isDataTable( '#example' ) ) {\n\t * $('#example').dataTable();\n\t * }\n\t */\n\tDataTable.isDataTable = DataTable.fnIsDataTable = function ( table )\n\t{\n\t\tvar t = $(table).get(0);\n\t\tvar is = false;\n\t\n\t\tif ( table instanceof DataTable.Api ) {\n\t\t\treturn true;\n\t\t}\n\t\n\t\t$.each( DataTable.settings, function (i, o) {\n\t\t\tvar head = o.nScrollHead ? $('table', o.nScrollHead)[0] : null;\n\t\t\tvar foot = o.nScrollFoot ? $('table', o.nScrollFoot)[0] : null;\n\t\n\t\t\tif ( o.nTable === t || head === t || foot === t ) {\n\t\t\t\tis = true;\n\t\t\t}\n\t\t} );\n\t\n\t\treturn is;\n\t};\n\t\n\t\n\t/**\n\t * Get all DataTable tables that have been initialised - optionally you can\n\t * select to get only currently visible tables.\n\t *\n\t * @param {boolean} [visible=false] Flag to indicate if you want all (default)\n\t * or visible tables only.\n\t * @returns {array} Array of `table` nodes (not DataTable instances) which are\n\t * DataTables\n\t * @static\n\t * @dtopt API-Static\n\t *\n\t * @example\n\t * $.each( $.fn.dataTable.tables(true), function () {\n\t * $(table).DataTable().columns.adjust();\n\t * } );\n\t */\n\tDataTable.tables = DataTable.fnTables = function ( visible )\n\t{\n\t\tvar api = false;\n\t\n\t\tif ( $.isPlainObject( visible ) ) {\n\t\t\tapi = visible.api;\n\t\t\tvisible = visible.visible;\n\t\t}\n\t\n\t\tvar a = $.map( DataTable.settings, function (o) {\n\t\t\tif ( !visible || (visible && $(o.nTable).is(':visible')) ) {\n\t\t\t\treturn o.nTable;\n\t\t\t}\n\t\t} );\n\t\n\t\treturn api ?\n\t\t\tnew _Api( a ) :\n\t\t\ta;\n\t};\n\t\n\t\n\t/**\n\t * Convert from camel case parameters to Hungarian notation. This is made public\n\t * for the extensions to provide the same ability as DataTables core to accept\n\t * either the 1.9 style Hungarian notation, or the 1.10+ style camelCase\n\t * parameters.\n\t *\n\t * @param {object} src The model object which holds all parameters that can be\n\t * mapped.\n\t * @param {object} user The object to convert from camel case to Hungarian.\n\t * @param {boolean} force When set to `true`, properties which already have a\n\t * Hungarian value in the `user` object will be overwritten. Otherwise they\n\t * won't be.\n\t */\n\tDataTable.camelToHungarian = _fnCamelToHungarian;\n\t\n\t\n\t\n\t/**\n\t *\n\t */\n\t_api_register( '$()', function ( selector, opts ) {\n\t\tvar\n\t\t\trows = this.rows( opts ).nodes(), // Get all rows\n\t\t\tjqRows = $(rows);\n\t\n\t\treturn $( [].concat(\n\t\t\tjqRows.filter( selector ).toArray(),\n\t\t\tjqRows.find( selector ).toArray()\n\t\t) );\n\t} );\n\t\n\t\n\t// jQuery functions to operate on the tables\n\t$.each( [ 'on', 'one', 'off' ], function (i, key) {\n\t\t_api_register( key+'()', function ( /* event, handler */ ) {\n\t\t\tvar args = Array.prototype.slice.call(arguments);\n\t\n\t\t\t// Add the `dt` namespace automatically if it isn't already present\n\t\t\targs[0] = $.map( args[0].split( /\\s/ ), function ( e ) {\n\t\t\t\treturn ! e.match(/\\.dt\\b/) ?\n\t\t\t\t\te+'.dt' :\n\t\t\t\t\te;\n\t\t\t\t} ).join( ' ' );\n\t\n\t\t\tvar inst = $( this.tables().nodes() );\n\t\t\tinst[key].apply( inst, args );\n\t\t\treturn this;\n\t\t} );\n\t} );\n\t\n\t\n\t_api_register( 'clear()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnClearTable( settings );\n\t\t} );\n\t} );\n\t\n\t\n\t_api_register( 'settings()', function () {\n\t\treturn new _Api( this.context, this.context );\n\t} );\n\t\n\t\n\t_api_register( 'init()', function () {\n\t\tvar ctx = this.context;\n\t\treturn ctx.length ? ctx[0].oInit : null;\n\t} );\n\t\n\t\n\t_api_register( 'data()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\treturn _pluck( settings.aoData, '_aData' );\n\t\t} ).flatten();\n\t} );\n\t\n\t\n\t_api_register( 'destroy()', function ( remove ) {\n\t\tremove = remove || false;\n\t\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tvar orig = settings.nTableWrapper.parentNode;\n\t\t\tvar classes = settings.oClasses;\n\t\t\tvar table = settings.nTable;\n\t\t\tvar tbody = settings.nTBody;\n\t\t\tvar thead = settings.nTHead;\n\t\t\tvar tfoot = settings.nTFoot;\n\t\t\tvar jqTable = $(table);\n\t\t\tvar jqTbody = $(tbody);\n\t\t\tvar jqWrapper = $(settings.nTableWrapper);\n\t\t\tvar rows = $.map( settings.aoData, function (r) { return r.nTr; } );\n\t\t\tvar i, ien;\n\t\n\t\t\t// Flag to note that the table is currently being destroyed - no action\n\t\t\t// should be taken\n\t\t\tsettings.bDestroying = true;\n\t\n\t\t\t// Fire off the destroy callbacks for plug-ins etc\n\t\t\t_fnCallbackFire( settings, \"aoDestroyCallback\", \"destroy\", [settings] );\n\t\n\t\t\t// If not being removed from the document, make all columns visible\n\t\t\tif ( ! remove ) {\n\t\t\t\tnew _Api( settings ).columns().visible( true );\n\t\t\t}\n\t\n\t\t\t// Blitz all `DT` namespaced events (these are internal events, the\n\t\t\t// lowercase, `dt` events are user subscribed and they are responsible\n\t\t\t// for removing them\n\t\t\tjqWrapper.off('.DT').find(':not(tbody *)').off('.DT');\n\t\t\t$(window).off('.DT-'+settings.sInstance);\n\t\n\t\t\t// When scrolling we had to break the table up - restore it\n\t\t\tif ( table != thead.parentNode ) {\n\t\t\t\tjqTable.children('thead').detach();\n\t\t\t\tjqTable.append( thead );\n\t\t\t}\n\t\n\t\t\tif ( tfoot && table != tfoot.parentNode ) {\n\t\t\t\tjqTable.children('tfoot').detach();\n\t\t\t\tjqTable.append( tfoot );\n\t\t\t}\n\t\n\t\t\tsettings.aaSorting = [];\n\t\t\tsettings.aaSortingFixed = [];\n\t\t\t_fnSortingClasses( settings );\n\t\n\t\t\t$( rows ).removeClass( settings.asStripeClasses.join(' ') );\n\t\n\t\t\t$('th, td', thead).removeClass( classes.sSortable+' '+\n\t\t\t\tclasses.sSortableAsc+' '+classes.sSortableDesc+' '+classes.sSortableNone\n\t\t\t);\n\t\n\t\t\tif ( settings.bJUI ) {\n\t\t\t\t$('th span.'+classes.sSortIcon+ ', td span.'+classes.sSortIcon, thead).detach();\n\t\t\t\t$('th, td', thead).each( function () {\n\t\t\t\t\tvar wrapper = $('div.'+classes.sSortJUIWrapper, this);\n\t\t\t\t\t$(this).append( wrapper.contents() );\n\t\t\t\t\twrapper.detach();\n\t\t\t\t} );\n\t\t\t}\n\t\n\t\t\t// Add the TR elements back into the table in their original order\n\t\t\tjqTbody.children().detach();\n\t\t\tjqTbody.append( rows );\n\t\n\t\t\t// Remove the DataTables generated nodes, events and classes\n\t\t\tvar removedMethod = remove ? 'remove' : 'detach';\n\t\t\tjqTable[ removedMethod ]();\n\t\t\tjqWrapper[ removedMethod ]();\n\t\n\t\t\t// If we need to reattach the table to the document\n\t\t\tif ( ! remove && orig ) {\n\t\t\t\t// insertBefore acts like appendChild if !arg[1]\n\t\t\t\torig.insertBefore( table, settings.nTableReinsertBefore );\n\t\n\t\t\t\t// Restore the width of the original table - was read from the style property,\n\t\t\t\t// so we can restore directly to that\n\t\t\t\tjqTable\n\t\t\t\t\t.css( 'width', settings.sDestroyWidth )\n\t\t\t\t\t.removeClass( classes.sTable );\n\t\n\t\t\t\t// If the were originally stripe classes - then we add them back here.\n\t\t\t\t// Note this is not fool proof (for example if not all rows had stripe\n\t\t\t\t// classes - but it's a good effort without getting carried away\n\t\t\t\tien = settings.asDestroyStripes.length;\n\t\n\t\t\t\tif ( ien ) {\n\t\t\t\t\tjqTbody.children().each( function (i) {\n\t\t\t\t\t\t$(this).addClass( settings.asDestroyStripes[i % ien] );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t/* Remove the settings object from the settings array */\n\t\t\tvar idx = $.inArray( settings, DataTable.settings );\n\t\t\tif ( idx !== -1 ) {\n\t\t\t\tDataTable.settings.splice( idx, 1 );\n\t\t\t}\n\t\t} );\n\t} );\n\t\n\t\n\t// Add the `every()` method for rows, columns and cells in a compact form\n\t$.each( [ 'column', 'row', 'cell' ], function ( i, type ) {\n\t\t_api_register( type+'s().every()', function ( fn ) {\n\t\t\tvar opts = this.selector.opts;\n\t\t\tvar api = this;\n\t\n\t\t\treturn this.iterator( type, function ( settings, arg1, arg2, arg3, arg4 ) {\n\t\t\t\t// Rows and columns:\n\t\t\t\t// arg1 - index\n\t\t\t\t// arg2 - table counter\n\t\t\t\t// arg3 - loop counter\n\t\t\t\t// arg4 - undefined\n\t\t\t\t// Cells:\n\t\t\t\t// arg1 - row index\n\t\t\t\t// arg2 - column index\n\t\t\t\t// arg3 - table counter\n\t\t\t\t// arg4 - loop counter\n\t\t\t\tfn.call(\n\t\t\t\t\tapi[ type ](\n\t\t\t\t\t\targ1,\n\t\t\t\t\t\ttype==='cell' ? arg2 : opts,\n\t\t\t\t\t\ttype==='cell' ? opts : undefined\n\t\t\t\t\t),\n\t\t\t\t\targ1, arg2, arg3, arg4\n\t\t\t\t);\n\t\t\t} );\n\t\t} );\n\t} );\n\t\n\t\n\t// i18n method for extensions to be able to use the language object from the\n\t// DataTable\n\t_api_register( 'i18n()', function ( token, def, plural ) {\n\t\tvar ctx = this.context[0];\n\t\tvar resolved = _fnGetObjectDataFn( token )( ctx.oLanguage );\n\t\n\t\tif ( resolved === undefined ) {\n\t\t\tresolved = def;\n\t\t}\n\t\n\t\tif ( plural !== undefined && $.isPlainObject( resolved ) ) {\n\t\t\tresolved = resolved[ plural ] !== undefined ?\n\t\t\t\tresolved[ plural ] :\n\t\t\t\tresolved._;\n\t\t}\n\t\n\t\treturn resolved.replace( '%d', plural ); // nb: plural might be undefined,\n\t} );\n\n\t/**\n\t * Version string for plug-ins to check compatibility. Allowed format is\n\t * `a.b.c-d` where: a:int, b:int, c:int, d:string(dev|beta|alpha). `d` is used\n\t * only for non-release builds. See http://semver.org/ for more information.\n\t * @member\n\t * @type string\n\t * @default Version number\n\t */\n\tDataTable.version = \"1.10.13\";\n\n\t/**\n\t * Private data store, containing all of the settings objects that are\n\t * created for the tables on a given page.\n\t *\n\t * Note that the `DataTable.settings` object is aliased to\n\t * `jQuery.fn.dataTableExt` through which it may be accessed and\n\t * manipulated, or `jQuery.fn.dataTable.settings`.\n\t * @member\n\t * @type array\n\t * @default []\n\t * @private\n\t */\n\tDataTable.settings = [];\n\n\t/**\n\t * Object models container, for the various models that DataTables has\n\t * available to it. These models define the objects that are used to hold\n\t * the active state and configuration of the table.\n\t * @namespace\n\t */\n\tDataTable.models = {};\n\t\n\t\n\t\n\t/**\n\t * Template object for the way in which DataTables holds information about\n\t * search information for the global filter and individual column filters.\n\t * @namespace\n\t */\n\tDataTable.models.oSearch = {\n\t\t/**\n\t\t * Flag to indicate if the filtering should be case insensitive or not\n\t\t * @type boolean\n\t\t * @default true\n\t\t */\n\t\t\"bCaseInsensitive\": true,\n\t\n\t\t/**\n\t\t * Applied search term\n\t\t * @type string\n\t\t * @default Empty string\n\t\t */\n\t\t\"sSearch\": \"\",\n\t\n\t\t/**\n\t\t * Flag to indicate if the search term should be interpreted as a\n\t\t * regular expression (true) or not (false) and therefore and special\n\t\t * regex characters escaped.\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\t\t\"bRegex\": false,\n\t\n\t\t/**\n\t\t * Flag to indicate if DataTables is to use its smart filtering or not.\n\t\t * @type boolean\n\t\t * @default true\n\t\t */\n\t\t\"bSmart\": true\n\t};\n\t\n\t\n\t\n\t\n\t/**\n\t * Template object for the way in which DataTables holds information about\n\t * each individual row. This is the object format used for the settings\n\t * aoData array.\n\t * @namespace\n\t */\n\tDataTable.models.oRow = {\n\t\t/**\n\t\t * TR element for the row\n\t\t * @type node\n\t\t * @default null\n\t\t */\n\t\t\"nTr\": null,\n\t\n\t\t/**\n\t\t * Array of TD elements for each row. This is null until the row has been\n\t\t * created.\n\t\t * @type array nodes\n\t\t * @default []\n\t\t */\n\t\t\"anCells\": null,\n\t\n\t\t/**\n\t\t * Data object from the original data source for the row. This is either\n\t\t * an array if using the traditional form of DataTables, or an object if\n\t\t * using mData options. The exact type will depend on the passed in\n\t\t * data from the data source, or will be an array if using DOM a data\n\t\t * source.\n\t\t * @type array|object\n\t\t * @default []\n\t\t */\n\t\t\"_aData\": [],\n\t\n\t\t/**\n\t\t * Sorting data cache - this array is ostensibly the same length as the\n\t\t * number of columns (although each index is generated only as it is\n\t\t * needed), and holds the data that is used for sorting each column in the\n\t\t * row. We do this cache generation at the start of the sort in order that\n\t\t * the formatting of the sort data need be done only once for each cell\n\t\t * per sort. This array should not be read from or written to by anything\n\t\t * other than the master sorting methods.\n\t\t * @type array\n\t\t * @default null\n\t\t * @private\n\t\t */\n\t\t\"_aSortData\": null,\n\t\n\t\t/**\n\t\t * Per cell filtering data cache. As per the sort data cache, used to\n\t\t * increase the performance of the filtering in DataTables\n\t\t * @type array\n\t\t * @default null\n\t\t * @private\n\t\t */\n\t\t\"_aFilterData\": null,\n\t\n\t\t/**\n\t\t * Filtering data cache. This is the same as the cell filtering cache, but\n\t\t * in this case a string rather than an array. This is easily computed with\n\t\t * a join on `_aFilterData`, but is provided as a cache so the join isn't\n\t\t * needed on every search (memory traded for performance)\n\t\t * @type array\n\t\t * @default null\n\t\t * @private\n\t\t */\n\t\t\"_sFilterRow\": null,\n\t\n\t\t/**\n\t\t * Cache of the class name that DataTables has applied to the row, so we\n\t\t * can quickly look at this variable rather than needing to do a DOM check\n\t\t * on className for the nTr property.\n\t\t * @type string\n\t\t * @default Empty string\n\t\t * @private\n\t\t */\n\t\t\"_sRowStripe\": \"\",\n\t\n\t\t/**\n\t\t * Denote if the original data source was from the DOM, or the data source\n\t\t * object. This is used for invalidating data, so DataTables can\n\t\t * automatically read data from the original source, unless uninstructed\n\t\t * otherwise.\n\t\t * @type string\n\t\t * @default null\n\t\t * @private\n\t\t */\n\t\t\"src\": null,\n\t\n\t\t/**\n\t\t * Index in the aoData array. This saves an indexOf lookup when we have the\n\t\t * object, but want to know the index\n\t\t * @type integer\n\t\t * @default -1\n\t\t * @private\n\t\t */\n\t\t\"idx\": -1\n\t};\n\t\n\t\n\t/**\n\t * Template object for the column information object in DataTables. This object\n\t * is held in the settings aoColumns array and contains all the information that\n\t * DataTables needs about each individual column.\n\t *\n\t * Note that this object is related to {@link DataTable.defaults.column}\n\t * but this one is the internal data store for DataTables's cache of columns.\n\t * It should NOT be manipulated outside of DataTables. Any configuration should\n\t * be done through the initialisation options.\n\t * @namespace\n\t */\n\tDataTable.models.oColumn = {\n\t\t/**\n\t\t * Column index. This could be worked out on-the-fly with $.inArray, but it\n\t\t * is faster to just hold it as a variable\n\t\t * @type integer\n\t\t * @default null\n\t\t */\n\t\t\"idx\": null,\n\t\n\t\t/**\n\t\t * A list of the columns that sorting should occur on when this column\n\t\t * is sorted. That this property is an array allows multi-column sorting\n\t\t * to be defined for a column (for example first name / last name columns\n\t\t * would benefit from this). The values are integers pointing to the\n\t\t * columns to be sorted on (typically it will be a single integer pointing\n\t\t * at itself, but that doesn't need to be the case).\n\t\t * @type array\n\t\t */\n\t\t\"aDataSort\": null,\n\t\n\t\t/**\n\t\t * Define the sorting directions that are applied to the column, in sequence\n\t\t * as the column is repeatedly sorted upon - i.e. the first value is used\n\t\t * as the sorting direction when the column if first sorted (clicked on).\n\t\t * Sort it again (click again) and it will move on to the next index.\n\t\t * Repeat until loop.\n\t\t * @type array\n\t\t */\n\t\t\"asSorting\": null,\n\t\n\t\t/**\n\t\t * Flag to indicate if the column is searchable, and thus should be included\n\t\t * in the filtering or not.\n\t\t * @type boolean\n\t\t */\n\t\t\"bSearchable\": null,\n\t\n\t\t/**\n\t\t * Flag to indicate if the column is sortable or not.\n\t\t * @type boolean\n\t\t */\n\t\t\"bSortable\": null,\n\t\n\t\t/**\n\t\t * Flag to indicate if the column is currently visible in the table or not\n\t\t * @type boolean\n\t\t */\n\t\t\"bVisible\": null,\n\t\n\t\t/**\n\t\t * Store for manual type assignment using the `column.type` option. This\n\t\t * is held in store so we can manipulate the column's `sType` property.\n\t\t * @type string\n\t\t * @default null\n\t\t * @private\n\t\t */\n\t\t\"_sManualType\": null,\n\t\n\t\t/**\n\t\t * Flag to indicate if HTML5 data attributes should be used as the data\n\t\t * source for filtering or sorting. True is either are.\n\t\t * @type boolean\n\t\t * @default false\n\t\t * @private\n\t\t */\n\t\t\"_bAttrSrc\": false,\n\t\n\t\t/**\n\t\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t\t * allowing you to modify the DOM element (add background colour for example) when the\n\t\t * element is available.\n\t\t * @type function\n\t\t * @param {element} nTd The TD node that has been created\n\t\t * @param {*} sData The Data for the cell\n\t\t * @param {array|object} oData The data for the whole row\n\t\t * @param {int} iRow The row index for the aoData data store\n\t\t * @default null\n\t\t */\n\t\t\"fnCreatedCell\": null,\n\t\n\t\t/**\n\t\t * Function to get data from a cell in a column. You should never\n\t\t * access data directly through _aData internally in DataTables - always use\n\t\t * the method attached to this property. It allows mData to function as\n\t\t * required. This function is automatically assigned by the column\n\t\t * initialisation method\n\t\t * @type function\n\t\t * @param {array|object} oData The data array/object for the array\n\t\t * (i.e. aoData[]._aData)\n\t\t * @param {string} sSpecific The specific data type you want to get -\n\t\t * 'display', 'type' 'filter' 'sort'\n\t\t * @returns {*} The data for the cell from the given row's data\n\t\t * @default null\n\t\t */\n\t\t\"fnGetData\": null,\n\t\n\t\t/**\n\t\t * Function to set data for a cell in the column. You should never\n\t\t * set the data directly to _aData internally in DataTables - always use\n\t\t * this method. It allows mData to function as required. This function\n\t\t * is automatically assigned by the column initialisation method\n\t\t * @type function\n\t\t * @param {array|object} oData The data array/object for the array\n\t\t * (i.e. aoData[]._aData)\n\t\t * @param {*} sValue Value to set\n\t\t * @default null\n\t\t */\n\t\t\"fnSetData\": null,\n\t\n\t\t/**\n\t\t * Property to read the value for the cells in the column from the data\n\t\t * source array / object. If null, then the default content is used, if a\n\t\t * function is given then the return from the function is used.\n\t\t * @type function|int|string|null\n\t\t * @default null\n\t\t */\n\t\t\"mData\": null,\n\t\n\t\t/**\n\t\t * Partner property to mData which is used (only when defined) to get\n\t\t * the data - i.e. it is basically the same as mData, but without the\n\t\t * 'set' option, and also the data fed to it is the result from mData.\n\t\t * This is the rendering method to match the data method of mData.\n\t\t * @type function|int|string|null\n\t\t * @default null\n\t\t */\n\t\t\"mRender\": null,\n\t\n\t\t/**\n\t\t * Unique header TH/TD element for this column - this is what the sorting\n\t\t * listener is attached to (if sorting is enabled.)\n\t\t * @type node\n\t\t * @default null\n\t\t */\n\t\t\"nTh\": null,\n\t\n\t\t/**\n\t\t * Unique footer TH/TD element for this column (if there is one). Not used\n\t\t * in DataTables as such, but can be used for plug-ins to reference the\n\t\t * footer for each column.\n\t\t * @type node\n\t\t * @default null\n\t\t */\n\t\t\"nTf\": null,\n\t\n\t\t/**\n\t\t * The class to apply to all TD elements in the table's TBODY for the column\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sClass\": null,\n\t\n\t\t/**\n\t\t * When DataTables calculates the column widths to assign to each column,\n\t\t * it finds the longest string in each column and then constructs a\n\t\t * temporary table and reads the widths from that. The problem with this\n\t\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer\n\t\t * string - thus the calculation can go wrong (doing it properly and putting\n\t\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t\t * a \"work around\" we provide this option. It will append its value to the\n\t\t * text that is found to be the longest string for the column - i.e. padding.\n\t\t * @type string\n\t\t */\n\t\t\"sContentPadding\": null,\n\t\n\t\t/**\n\t\t * Allows a default value to be given for a column's data, and will be used\n\t\t * whenever a null data source is encountered (this can be because mData\n\t\t * is set to null, or because the data source itself is null).\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sDefaultContent\": null,\n\t\n\t\t/**\n\t\t * Name for the column, allowing reference to the column by name as well as\n\t\t * by index (needs a lookup to work by name).\n\t\t * @type string\n\t\t */\n\t\t\"sName\": null,\n\t\n\t\t/**\n\t\t * Custom sorting data type - defines which of the available plug-ins in\n\t\t * afnSortData the custom sorting will use - if any is defined.\n\t\t * @type string\n\t\t * @default std\n\t\t */\n\t\t\"sSortDataType\": 'std',\n\t\n\t\t/**\n\t\t * Class to be applied to the header element when sorting on this column\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sSortingClass\": null,\n\t\n\t\t/**\n\t\t * Class to be applied to the header element when sorting on this column -\n\t\t * when jQuery UI theming is used.\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sSortingClassJUI\": null,\n\t\n\t\t/**\n\t\t * Title of the column - what is seen in the TH element (nTh).\n\t\t * @type string\n\t\t */\n\t\t\"sTitle\": null,\n\t\n\t\t/**\n\t\t * Column sorting and filtering type\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sType\": null,\n\t\n\t\t/**\n\t\t * Width of the column\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sWidth\": null,\n\t\n\t\t/**\n\t\t * Width of the column when it was first \"encountered\"\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sWidthOrig\": null\n\t};\n\t\n\t\n\t/*\n\t * Developer note: The properties of the object below are given in Hungarian\n\t * notation, that was used as the interface for DataTables prior to v1.10, however\n\t * from v1.10 onwards the primary interface is camel case. In order to avoid\n\t * breaking backwards compatibility utterly with this change, the Hungarian\n\t * version is still, internally the primary interface, but is is not documented\n\t * - hence the @name tags in each doc comment. This allows a Javascript function\n\t * to create a map from Hungarian notation to camel case (going the other direction\n\t * would require each property to be listed, which would at around 3K to the size\n\t * of DataTables, while this method is about a 0.5K hit.\n\t *\n\t * Ultimately this does pave the way for Hungarian notation to be dropped\n\t * completely, but that is a massive amount of work and will break current\n\t * installs (therefore is on-hold until v2).\n\t */\n\t\n\t/**\n\t * Initialisation options that can be given to DataTables at initialisation\n\t * time.\n\t * @namespace\n\t */\n\tDataTable.defaults = {\n\t\t/**\n\t\t * An array of data to use for the table, passed in at initialisation which\n\t\t * will be used in preference to any data which is already in the DOM. This is\n\t\t * particularly useful for constructing tables purely in Javascript, for\n\t\t * example with a custom Ajax call.\n\t\t * @type array\n\t\t * @default null\n\t\t *\n\t\t * @dtopt Option\n\t\t * @name DataTable.defaults.data\n\t\t *\n\t\t * @example\n\t\t * // Using a 2D array data source\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"data\": [\n\t\t * ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'],\n\t\t * ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'],\n\t\t * ],\n\t\t * \"columns\": [\n\t\t * { \"title\": \"Engine\" },\n\t\t * { \"title\": \"Browser\" },\n\t\t * { \"title\": \"Platform\" },\n\t\t * { \"title\": \"Version\" },\n\t\t * { \"title\": \"Grade\" }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using an array of objects as a data source (`data`)\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"data\": [\n\t\t * {\n\t\t * \"engine\": \"Trident\",\n\t\t * \"browser\": \"Internet Explorer 4.0\",\n\t\t * \"platform\": \"Win 95+\",\n\t\t * \"version\": 4,\n\t\t * \"grade\": \"X\"\n\t\t * },\n\t\t * {\n\t\t * \"engine\": \"Trident\",\n\t\t * \"browser\": \"Internet Explorer 5.0\",\n\t\t * \"platform\": \"Win 95+\",\n\t\t * \"version\": 5,\n\t\t * \"grade\": \"C\"\n\t\t * }\n\t\t * ],\n\t\t * \"columns\": [\n\t\t * { \"title\": \"Engine\", \"data\": \"engine\" },\n\t\t * { \"title\": \"Browser\", \"data\": \"browser\" },\n\t\t * { \"title\": \"Platform\", \"data\": \"platform\" },\n\t\t * { \"title\": \"Version\", \"data\": \"version\" },\n\t\t * { \"title\": \"Grade\", \"data\": \"grade\" }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"aaData\": null,\n\t\n\t\n\t\t/**\n\t\t * If ordering is enabled, then DataTables will perform a first pass sort on\n\t\t * initialisation. You can define which column(s) the sort is performed\n\t\t * upon, and the sorting direction, with this variable. The `sorting` array\n\t\t * should contain an array for each column to be sorted initially containing\n\t\t * the column's index and a direction string ('asc' or 'desc').\n\t\t * @type array\n\t\t * @default [[0,'asc']]\n\t\t *\n\t\t * @dtopt Option\n\t\t * @name DataTable.defaults.order\n\t\t *\n\t\t * @example\n\t\t * // Sort by 3rd column first, and then 4th column\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"order\": [[2,'asc'], [3,'desc']]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * // No initial sorting\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"order\": []\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"aaSorting\": [[0,'asc']],\n\t\n\t\n\t\t/**\n\t\t * This parameter is basically identical to the `sorting` parameter, but\n\t\t * cannot be overridden by user interaction with the table. What this means\n\t\t * is that you could have a column (visible or hidden) which the sorting\n\t\t * will always be forced on first - any sorting after that (from the user)\n\t\t * will then be performed as required. This can be useful for grouping rows\n\t\t * together.\n\t\t * @type array\n\t\t * @default null\n\t\t *\n\t\t * @dtopt Option\n\t\t * @name DataTable.defaults.orderFixed\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"orderFixed\": [[0,'asc']]\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"aaSortingFixed\": [],\n\t\n\t\n\t\t/**\n\t\t * DataTables can be instructed to load data to display in the table from a\n\t\t * Ajax source. This option defines how that Ajax call is made and where to.\n\t\t *\n\t\t * The `ajax` property has three different modes of operation, depending on\n\t\t * how it is defined. These are:\n\t\t *\n\t\t * * `string` - Set the URL from where the data should be loaded from.\n\t\t * * `object` - Define properties for `jQuery.ajax`.\n\t\t * * `function` - Custom data get function\n\t\t *\n\t\t * `string`\n\t\t * --------\n\t\t *\n\t\t * As a string, the `ajax` property simply defines the URL from which\n\t\t * DataTables will load data.\n\t\t *\n\t\t * `object`\n\t\t * --------\n\t\t *\n\t\t * As an object, the parameters in the object are passed to\n\t\t * [jQuery.ajax](http://api.jquery.com/jQuery.ajax/) allowing fine control\n\t\t * of the Ajax request. DataTables has a number of default parameters which\n\t\t * you can override using this option. Please refer to the jQuery\n\t\t * documentation for a full description of the options available, although\n\t\t * the following parameters provide additional options in DataTables or\n\t\t * require special consideration:\n\t\t *\n\t\t * * `data` - As with jQuery, `data` can be provided as an object, but it\n\t\t * can also be used as a function to manipulate the data DataTables sends\n\t\t * to the server. The function takes a single parameter, an object of\n\t\t * parameters with the values that DataTables has readied for sending. An\n\t\t * object may be returned which will be merged into the DataTables\n\t\t * defaults, or you can add the items to the object that was passed in and\n\t\t * not return anything from the function. This supersedes `fnServerParams`\n\t\t * from DataTables 1.9-.\n\t\t *\n\t\t * * `dataSrc` - By default DataTables will look for the property `data` (or\n\t\t * `aaData` for compatibility with DataTables 1.9-) when obtaining data\n\t\t * from an Ajax source or for server-side processing - this parameter\n\t\t * allows that property to be changed. You can use Javascript dotted\n\t\t * object notation to get a data source for multiple levels of nesting, or\n\t\t * it my be used as a function. As a function it takes a single parameter,\n\t\t * the JSON returned from the server, which can be manipulated as\n\t\t * required, with the returned value being that used by DataTables as the\n\t\t * data source for the table. This supersedes `sAjaxDataProp` from\n\t\t * DataTables 1.9-.\n\t\t *\n\t\t * * `success` - Should not be overridden it is used internally in\n\t\t * DataTables. To manipulate / transform the data returned by the server\n\t\t * use `ajax.dataSrc`, or use `ajax` as a function (see below).\n\t\t *\n\t\t * `function`\n\t\t * ----------\n\t\t *\n\t\t * As a function, making the Ajax call is left up to yourself allowing\n\t\t * complete control of the Ajax request. Indeed, if desired, a method other\n\t\t * than Ajax could be used to obtain the required data, such as Web storage\n\t\t * or an AIR database.\n\t\t *\n\t\t * The function is given four parameters and no return is required. The\n\t\t * parameters are:\n\t\t *\n\t\t * 1. _object_ - Data to send to the server\n\t\t * 2. _function_ - Callback function that must be executed when the required\n\t\t * data has been obtained. That data should be passed into the callback\n\t\t * as the only parameter\n\t\t * 3. _object_ - DataTables settings object for the table\n\t\t *\n\t\t * Note that this supersedes `fnServerData` from DataTables 1.9-.\n\t\t *\n\t\t * @type string|object|function\n\t\t * @default null\n\t\t *\n\t\t * @dtopt Option\n\t\t * @name DataTable.defaults.ajax\n\t\t * @since 1.10.0\n\t\t *\n\t\t * @example\n\t\t * // Get JSON data from a file via Ajax.\n\t\t * // Note DataTables expects data in the form `{ data: [ ...data... ] }` by default).\n\t\t * $('#example').dataTable( {\n\t\t * \"ajax\": \"data.json\"\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Get JSON data from a file via Ajax, using `dataSrc` to change\n\t\t * // `data` to `tableData` (i.e. `{ tableData: [ ...data... ] }`)\n\t\t * $('#example').dataTable( {\n\t\t * \"ajax\": {\n\t\t * \"url\": \"data.json\",\n\t\t * \"dataSrc\": \"tableData\"\n\t\t * }\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Get JSON data from a file via Ajax, using `dataSrc` to read data\n\t\t * // from a plain array rather than an array in an object\n\t\t * $('#example').dataTable( {\n\t\t * \"ajax\": {\n\t\t * \"url\": \"data.json\",\n\t\t * \"dataSrc\": \"\"\n\t\t * }\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Manipulate the data returned from the server - add a link to data\n\t\t * // (note this can, should, be done using `render` for the column - this\n\t\t * // is just a simple example of how the data can be manipulated).\n\t\t * $('#example').dataTable( {\n\t\t * \"ajax\": {\n\t\t * \"url\": \"data.json\",\n\t\t * \"dataSrc\": function ( json ) {\n\t\t * for ( var i=0, ien=json.length ; iView message';\n\t\t * }\n\t\t * return json;\n\t\t * }\n\t\t * }\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Add data to the request\n\t\t * $('#example').dataTable( {\n\t\t * \"ajax\": {\n\t\t * \"url\": \"data.json\",\n\t\t * \"data\": function ( d ) {\n\t\t * return {\n\t\t * \"extra_search\": $('#extra').val()\n\t\t * };\n\t\t * }\n\t\t * }\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Send request as POST\n\t\t * $('#example').dataTable( {\n\t\t * \"ajax\": {\n\t\t * \"url\": \"data.json\",\n\t\t * \"type\": \"POST\"\n\t\t * }\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Get the data from localStorage (could interface with a form for\n\t\t * // adding, editing and removing rows).\n\t\t * $('#example').dataTable( {\n\t\t * \"ajax\": function (data, callback, settings) {\n\t\t * callback(\n\t\t * JSON.parse( localStorage.getItem('dataTablesData') )\n\t\t * );\n\t\t * }\n\t\t * } );\n\t\t */\n\t\t\"ajax\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter allows you to readily specify the entries in the length drop\n\t\t * down menu that DataTables shows when pagination is enabled. It can be\n\t\t * either a 1D array of options which will be used for both the displayed\n\t\t * option and the value, or a 2D array which will use the array in the first\n\t\t * position as the value, and the array in the second position as the\n\t\t * displayed options (useful for language strings such as 'All').\n\t\t *\n\t\t * Note that the `pageLength` property will be automatically set to the\n\t\t * first value given in this array, unless `pageLength` is also provided.\n\t\t * @type array\n\t\t * @default [ 10, 25, 50, 100 ]\n\t\t *\n\t\t * @dtopt Option\n\t\t * @name DataTable.defaults.lengthMenu\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"lengthMenu\": [[10, 25, 50, -1], [10, 25, 50, \"All\"]]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"aLengthMenu\": [ 10, 25, 50, 100 ],\n\t\n\t\n\t\t/**\n\t\t * The `columns` option in the initialisation parameter allows you to define\n\t\t * details about the way individual columns behave. For a full list of\n\t\t * column options that can be set, please see\n\t\t * {@link DataTable.defaults.column}. Note that if you use `columns` to\n\t\t * define your columns, you must have an entry in the array for every single\n\t\t * column that you have in your table (these can be null if you don't which\n\t\t * to specify any options).\n\t\t * @member\n\t\t *\n\t\t * @name DataTable.defaults.column\n\t\t */\n\t\t\"aoColumns\": null,\n\t\n\t\t/**\n\t\t * Very similar to `columns`, `columnDefs` allows you to target a specific\n\t\t * column, multiple columns, or all columns, using the `targets` property of\n\t\t * each object in the array. This allows great flexibility when creating\n\t\t * tables, as the `columnDefs` arrays can be of any length, targeting the\n\t\t * columns you specifically want. `columnDefs` may use any of the column\n\t\t * options available: {@link DataTable.defaults.column}, but it _must_\n\t\t * have `targets` defined in each object in the array. Values in the `targets`\n\t\t * array may be:\n\t\t *
      \n\t\t *
    • a string - class name will be matched on the TH for the column
    • \n\t\t *
    • 0 or a positive integer - column index counting from the left
    • \n\t\t *
    • a negative integer - column index counting from the right
    • \n\t\t *
    • the string \"_all\" - all columns (i.e. assign a default)
    • \n\t\t *
    \n\t\t * @member\n\t\t *\n\t\t * @name DataTable.defaults.columnDefs\n\t\t */\n\t\t\"aoColumnDefs\": null,\n\t\n\t\n\t\t/**\n\t\t * Basically the same as `search`, this parameter defines the individual column\n\t\t * filtering state at initialisation time. The array must be of the same size\n\t\t * as the number of columns, and each element be an object with the parameters\n\t\t * `search` and `escapeRegex` (the latter is optional). 'null' is also\n\t\t * accepted and the default will be used.\n\t\t * @type array\n\t\t * @default []\n\t\t *\n\t\t * @dtopt Option\n\t\t * @name DataTable.defaults.searchCols\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"searchCols\": [\n\t\t * null,\n\t\t * { \"search\": \"My filter\" },\n\t\t * null,\n\t\t * { \"search\": \"^[0-9]\", \"escapeRegex\": false }\n\t\t * ]\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"aoSearchCols\": [],\n\t\n\t\n\t\t/**\n\t\t * An array of CSS classes that should be applied to displayed rows. This\n\t\t * array may be of any length, and DataTables will apply each class\n\t\t * sequentially, looping when required.\n\t\t * @type array\n\t\t * @default null Will take the values determined by the `oClasses.stripe*`\n\t\t * options\n\t\t *\n\t\t * @dtopt Option\n\t\t * @name DataTable.defaults.stripeClasses\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"stripeClasses\": [ 'strip1', 'strip2', 'strip3' ]\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"asStripeClasses\": null,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable automatic column width calculation. This can be disabled\n\t\t * as an optimisation (it takes some time to calculate the widths) if the\n\t\t * tables widths are passed in using `columns`.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.autoWidth\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"autoWidth\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bAutoWidth\": true,\n\t\n\t\n\t\t/**\n\t\t * Deferred rendering can provide DataTables with a huge speed boost when you\n\t\t * are using an Ajax or JS data source for the table. This option, when set to\n\t\t * true, will cause DataTables to defer the creation of the table elements for\n\t\t * each row until they are needed for a draw - saving a significant amount of\n\t\t * time.\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.deferRender\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"ajax\": \"sources/arrays.txt\",\n\t\t * \"deferRender\": true\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bDeferRender\": false,\n\t\n\t\n\t\t/**\n\t\t * Replace a DataTable which matches the given selector and replace it with\n\t\t * one which has the properties of the new initialisation object passed. If no\n\t\t * table matches the selector, then the new DataTable will be constructed as\n\t\t * per normal.\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.destroy\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"srollY\": \"200px\",\n\t\t * \"paginate\": false\n\t\t * } );\n\t\t *\n\t\t * // Some time later....\n\t\t * $('#example').dataTable( {\n\t\t * \"filter\": false,\n\t\t * \"destroy\": true\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bDestroy\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable filtering of data. Filtering in DataTables is \"smart\" in\n\t\t * that it allows the end user to input multiple words (space separated) and\n\t\t * will match a row containing those words, even if not in the order that was\n\t\t * specified (this allow matching across multiple columns). Note that if you\n\t\t * wish to use filtering in DataTables this must remain 'true' - to remove the\n\t\t * default filtering input box and retain filtering abilities, please use\n\t\t * {@link DataTable.defaults.dom}.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.searching\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"searching\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bFilter\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the table information display. This shows information\n\t\t * about the data that is currently visible on the page, including information\n\t\t * about filtered data if that action is being performed.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.info\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"info\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bInfo\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable jQuery UI ThemeRoller support (required as ThemeRoller requires some\n\t\t * slightly different and additional mark-up from what DataTables has\n\t\t * traditionally used).\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.jQueryUI\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"jQueryUI\": true\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bJQueryUI\": false,\n\t\n\t\n\t\t/**\n\t\t * Allows the end user to select the size of a formatted page from a select\n\t\t * menu (sizes are 10, 25, 50 and 100). Requires pagination (`paginate`).\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.lengthChange\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"lengthChange\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bLengthChange\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable pagination.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.paging\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"paging\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bPaginate\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the display of a 'processing' indicator when the table is\n\t\t * being processed (e.g. a sort). This is particularly useful for tables with\n\t\t * large amounts of data where it can take a noticeable amount of time to sort\n\t\t * the entries.\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.processing\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"processing\": true\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bProcessing\": false,\n\t\n\t\n\t\t/**\n\t\t * Retrieve the DataTables object for the given selector. Note that if the\n\t\t * table has already been initialised, this parameter will cause DataTables\n\t\t * to simply return the object that has already been set up - it will not take\n\t\t * account of any changes you might have made to the initialisation object\n\t\t * passed to DataTables (setting this parameter to true is an acknowledgement\n\t\t * that you understand this). `destroy` can be used to reinitialise a table if\n\t\t * you need.\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.retrieve\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * initTable();\n\t\t * tableActions();\n\t\t * } );\n\t\t *\n\t\t * function initTable ()\n\t\t * {\n\t\t * return $('#example').dataTable( {\n\t\t * \"scrollY\": \"200px\",\n\t\t * \"paginate\": false,\n\t\t * \"retrieve\": true\n\t\t * } );\n\t\t * }\n\t\t *\n\t\t * function tableActions ()\n\t\t * {\n\t\t * var table = initTable();\n\t\t * // perform API operations with oTable\n\t\t * }\n\t\t */\n\t\t\"bRetrieve\": false,\n\t\n\t\n\t\t/**\n\t\t * When vertical (y) scrolling is enabled, DataTables will force the height of\n\t\t * the table's viewport to the given height at all times (useful for layout).\n\t\t * However, this can look odd when filtering data down to a small data set,\n\t\t * and the footer is left \"floating\" further down. This parameter (when\n\t\t * enabled) will cause DataTables to collapse the table's viewport down when\n\t\t * the result set will fit within the given Y height.\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.scrollCollapse\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"scrollY\": \"200\",\n\t\t * \"scrollCollapse\": true\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bScrollCollapse\": false,\n\t\n\t\n\t\t/**\n\t\t * Configure DataTables to use server-side processing. Note that the\n\t\t * `ajax` parameter must also be given in order to give DataTables a\n\t\t * source to obtain the required data for each draw.\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Features\n\t\t * @dtopt Server-side\n\t\t * @name DataTable.defaults.serverSide\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"serverSide\": true,\n\t\t * \"ajax\": \"xhr.php\"\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bServerSide\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable sorting of columns. Sorting of individual columns can be\n\t\t * disabled by the `sortable` option for each column.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.ordering\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"ordering\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bSort\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or display DataTables' ability to sort multiple columns at the\n\t\t * same time (activated by shift-click by the user).\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.orderMulti\n\t\t *\n\t\t * @example\n\t\t * // Disable multiple column sorting ability\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"orderMulti\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bSortMulti\": true,\n\t\n\t\n\t\t/**\n\t\t * Allows control over whether DataTables should use the top (true) unique\n\t\t * cell that is found for a single column, or the bottom (false - default).\n\t\t * This is useful when using complex headers.\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.orderCellsTop\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"orderCellsTop\": true\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bSortCellsTop\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the addition of the classes `sorting\\_1`, `sorting\\_2` and\n\t\t * `sorting\\_3` to the columns which are currently being sorted on. This is\n\t\t * presented as a feature switch as it can increase processing time (while\n\t\t * classes are removed and added) so for large data sets you might want to\n\t\t * turn this off.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.orderClasses\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"orderClasses\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bSortClasses\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable state saving. When enabled HTML5 `localStorage` will be\n\t\t * used to save table display information such as pagination information,\n\t\t * display length, filtering and sorting. As such when the end user reloads\n\t\t * the page the display display will match what thy had previously set up.\n\t\t *\n\t\t * Due to the use of `localStorage` the default state saving is not supported\n\t\t * in IE6 or 7. If state saving is required in those browsers, use\n\t\t * `stateSaveCallback` to provide a storage solution such as cookies.\n\t\t * @type boolean\n\t\t * @default false\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.stateSave\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function () {\n\t\t * $('#example').dataTable( {\n\t\t * \"stateSave\": true\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"bStateSave\": false,\n\t\n\t\n\t\t/**\n\t\t * This function is called when a TR element is created (and all TD child\n\t\t * elements have been inserted), or registered if using a DOM source, allowing\n\t\t * manipulation of the TR element (adding classes etc).\n\t\t * @type function\n\t\t * @param {node} row \"TR\" element for the current row\n\t\t * @param {array} data Raw data array for this row\n\t\t * @param {int} dataIndex The index of this row in the internal aoData array\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.createdRow\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"createdRow\": function( row, data, dataIndex ) {\n\t\t * // Bold the grade for all 'A' grade browsers\n\t\t * if ( data[4] == \"A\" )\n\t\t * {\n\t\t * $('td:eq(4)', row).html( 'A' );\n\t\t * }\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnCreatedRow\": null,\n\t\n\t\n\t\t/**\n\t\t * This function is called on every 'draw' event, and allows you to\n\t\t * dynamically modify any aspect you want about the created DOM.\n\t\t * @type function\n\t\t * @param {object} settings DataTables settings object\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.drawCallback\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"drawCallback\": function( settings ) {\n\t\t * alert( 'DataTables has redrawn the table' );\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnDrawCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * Identical to fnHeaderCallback() but for the table footer this function\n\t\t * allows you to modify the table footer on every 'draw' event.\n\t\t * @type function\n\t\t * @param {node} foot \"TR\" element for the footer\n\t\t * @param {array} data Full table data (as derived from the original HTML)\n\t\t * @param {int} start Index for the current display starting point in the\n\t\t * display array\n\t\t * @param {int} end Index for the current display ending point in the\n\t\t * display array\n\t\t * @param {array int} display Index array to translate the visual position\n\t\t * to the full data array\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.footerCallback\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"footerCallback\": function( tfoot, data, start, end, display ) {\n\t\t * tfoot.getElementsByTagName('th')[0].innerHTML = \"Starting index is \"+start;\n\t\t * }\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"fnFooterCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * When rendering large numbers in the information element for the table\n\t\t * (i.e. \"Showing 1 to 10 of 57 entries\") DataTables will render large numbers\n\t\t * to have a comma separator for the 'thousands' units (e.g. 1 million is\n\t\t * rendered as \"1,000,000\") to help readability for the end user. This\n\t\t * function will override the default method DataTables uses.\n\t\t * @type function\n\t\t * @member\n\t\t * @param {int} toFormat number to be formatted\n\t\t * @returns {string} formatted string for DataTables to show the number\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.formatNumber\n\t\t *\n\t\t * @example\n\t\t * // Format a number using a single quote for the separator (note that\n\t\t * // this can also be done with the language.thousands option)\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"formatNumber\": function ( toFormat ) {\n\t\t * return toFormat.toString().replace(\n\t\t * /\\B(?=(\\d{3})+(?!\\d))/g, \"'\"\n\t\t * );\n\t\t * };\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnFormatNumber\": function ( toFormat ) {\n\t\t\treturn toFormat.toString().replace(\n\t\t\t\t/\\B(?=(\\d{3})+(?!\\d))/g,\n\t\t\t\tthis.oLanguage.sThousands\n\t\t\t);\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * This function is called on every 'draw' event, and allows you to\n\t\t * dynamically modify the header row. This can be used to calculate and\n\t\t * display useful information about the table.\n\t\t * @type function\n\t\t * @param {node} head \"TR\" element for the header\n\t\t * @param {array} data Full table data (as derived from the original HTML)\n\t\t * @param {int} start Index for the current display starting point in the\n\t\t * display array\n\t\t * @param {int} end Index for the current display ending point in the\n\t\t * display array\n\t\t * @param {array int} display Index array to translate the visual position\n\t\t * to the full data array\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.headerCallback\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"fheaderCallback\": function( head, data, start, end, display ) {\n\t\t * head.getElementsByTagName('th')[0].innerHTML = \"Displaying \"+(end-start)+\" records\";\n\t\t * }\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"fnHeaderCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * The information element can be used to convey information about the current\n\t\t * state of the table. Although the internationalisation options presented by\n\t\t * DataTables are quite capable of dealing with most customisations, there may\n\t\t * be times where you wish to customise the string further. This callback\n\t\t * allows you to do exactly that.\n\t\t * @type function\n\t\t * @param {object} oSettings DataTables settings object\n\t\t * @param {int} start Starting position in data for the draw\n\t\t * @param {int} end End position in data for the draw\n\t\t * @param {int} max Total number of rows in the table (regardless of\n\t\t * filtering)\n\t\t * @param {int} total Total number of rows in the data set, after filtering\n\t\t * @param {string} pre The string that DataTables has formatted using it's\n\t\t * own rules\n\t\t * @returns {string} The string to be displayed in the information element.\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.infoCallback\n\t\t *\n\t\t * @example\n\t\t * $('#example').dataTable( {\n\t\t * \"infoCallback\": function( settings, start, end, max, total, pre ) {\n\t\t * return start +\" to \"+ end;\n\t\t * }\n\t\t * } );\n\t\t */\n\t\t\"fnInfoCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * Called when the table has been initialised. Normally DataTables will\n\t\t * initialise sequentially and there will be no need for this function,\n\t\t * however, this does not hold true when using external language information\n\t\t * since that is obtained using an async XHR call.\n\t\t * @type function\n\t\t * @param {object} settings DataTables settings object\n\t\t * @param {object} json The JSON object request from the server - only\n\t\t * present if client-side Ajax sourced data is used\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.initComplete\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"initComplete\": function(settings, json) {\n\t\t * alert( 'DataTables has finished its initialisation.' );\n\t\t * }\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"fnInitComplete\": null,\n\t\n\t\n\t\t/**\n\t\t * Called at the very start of each table draw and can be used to cancel the\n\t\t * draw by returning false, any other return (including undefined) results in\n\t\t * the full draw occurring).\n\t\t * @type function\n\t\t * @param {object} settings DataTables settings object\n\t\t * @returns {boolean} False will cancel the draw, anything else (including no\n\t\t * return) will allow it to complete.\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.preDrawCallback\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"preDrawCallback\": function( settings ) {\n\t\t * if ( $('#test').val() == 1 ) {\n\t\t * return false;\n\t\t * }\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnPreDrawCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * This function allows you to 'post process' each row after it have been\n\t\t * generated for each table draw, but before it is rendered on screen. This\n\t\t * function might be used for setting the row class name etc.\n\t\t * @type function\n\t\t * @param {node} row \"TR\" element for the current row\n\t\t * @param {array} data Raw data array for this row\n\t\t * @param {int} displayIndex The display index for the current table draw\n\t\t * @param {int} displayIndexFull The index of the data in the full list of\n\t\t * rows (after filtering)\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.rowCallback\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"rowCallback\": function( row, data, displayIndex, displayIndexFull ) {\n\t\t * // Bold the grade for all 'A' grade browsers\n\t\t * if ( data[4] == \"A\" ) {\n\t\t * $('td:eq(4)', row).html( 'A' );\n\t\t * }\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnRowCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * This parameter allows you to override the default function which obtains\n\t\t * the data from the server so something more suitable for your application.\n\t\t * For example you could use POST data, or pull information from a Gears or\n\t\t * AIR database.\n\t\t * @type function\n\t\t * @member\n\t\t * @param {string} source HTTP source to obtain the data from (`ajax`)\n\t\t * @param {array} data A key/value pair object containing the data to send\n\t\t * to the server\n\t\t * @param {function} callback to be called on completion of the data get\n\t\t * process that will draw the data on the page.\n\t\t * @param {object} settings DataTables settings object\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @dtopt Server-side\n\t\t * @name DataTable.defaults.serverData\n\t\t *\n\t\t * @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"fnServerData\": null,\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * It is often useful to send extra data to the server when making an Ajax\n\t\t * request - for example custom filtering information, and this callback\n\t\t * function makes it trivial to send extra information to the server. The\n\t\t * passed in parameter is the data set that has been constructed by\n\t\t * DataTables, and you can add to this or modify it as you require.\n\t\t * @type function\n\t\t * @param {array} data Data array (array of objects which are name/value\n\t\t * pairs) that has been constructed by DataTables and will be sent to the\n\t\t * server. In the case of Ajax sourced data with server-side processing\n\t\t * this will be an empty array, for server-side processing there will be a\n\t\t * significant number of parameters!\n\t\t * @returns {undefined} Ensure that you modify the data array passed in,\n\t\t * as this is passed by reference.\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @dtopt Server-side\n\t\t * @name DataTable.defaults.serverParams\n\t\t *\n\t\t * @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"fnServerParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Load the table state. With this function you can define from where, and how, the\n\t\t * state of a table is loaded. By default DataTables will load from `localStorage`\n\t\t * but you might wish to use a server-side database or cookies.\n\t\t * @type function\n\t\t * @member\n\t\t * @param {object} settings DataTables settings object\n\t\t * @param {object} callback Callback that can be executed when done. It\n\t\t * should be passed the loaded state object.\n\t\t * @return {object} The DataTables state object to be loaded\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.stateLoadCallback\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"stateSave\": true,\n\t\t * \"stateLoadCallback\": function (settings, callback) {\n\t\t * $.ajax( {\n\t\t * \"url\": \"/state_load\",\n\t\t * \"dataType\": \"json\",\n\t\t * \"success\": function (json) {\n\t\t * callback( json );\n\t\t * }\n\t\t * } );\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnStateLoadCallback\": function ( settings ) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(\n\t\t\t\t\t(settings.iStateDuration === -1 ? sessionStorage : localStorage).getItem(\n\t\t\t\t\t\t'DataTables_'+settings.sInstance+'_'+location.pathname\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} catch (e) {}\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Callback which allows modification of the saved state prior to loading that state.\n\t\t * This callback is called when the table is loading state from the stored data, but\n\t\t * prior to the settings object being modified by the saved state. Note that for\n\t\t * plug-in authors, you should use the `stateLoadParams` event to load parameters for\n\t\t * a plug-in.\n\t\t * @type function\n\t\t * @param {object} settings DataTables settings object\n\t\t * @param {object} data The state object that is to be loaded\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.stateLoadParams\n\t\t *\n\t\t * @example\n\t\t * // Remove a saved filter, so filtering is never loaded\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"stateSave\": true,\n\t\t * \"stateLoadParams\": function (settings, data) {\n\t\t * data.oSearch.sSearch = \"\";\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Disallow state loading by returning false\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"stateSave\": true,\n\t\t * \"stateLoadParams\": function (settings, data) {\n\t\t * return false;\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnStateLoadParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Callback that is called when the state has been loaded from the state saving method\n\t\t * and the DataTables settings object has been modified as a result of the loaded state.\n\t\t * @type function\n\t\t * @param {object} settings DataTables settings object\n\t\t * @param {object} data The state object that was loaded\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.stateLoaded\n\t\t *\n\t\t * @example\n\t\t * // Show an alert with the filtering value that was saved\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"stateSave\": true,\n\t\t * \"stateLoaded\": function (settings, data) {\n\t\t * alert( 'Saved filter was: '+data.oSearch.sSearch );\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnStateLoaded\": null,\n\t\n\t\n\t\t/**\n\t\t * Save the table state. This function allows you to define where and how the state\n\t\t * information for the table is stored By default DataTables will use `localStorage`\n\t\t * but you might wish to use a server-side database or cookies.\n\t\t * @type function\n\t\t * @member\n\t\t * @param {object} settings DataTables settings object\n\t\t * @param {object} data The state object to be saved\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.stateSaveCallback\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"stateSave\": true,\n\t\t * \"stateSaveCallback\": function (settings, data) {\n\t\t * // Send an Ajax request to the server with the state object\n\t\t * $.ajax( {\n\t\t * \"url\": \"/state_save\",\n\t\t * \"data\": data,\n\t\t * \"dataType\": \"json\",\n\t\t * \"method\": \"POST\"\n\t\t * \"success\": function () {}\n\t\t * } );\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnStateSaveCallback\": function ( settings, data ) {\n\t\t\ttry {\n\t\t\t\t(settings.iStateDuration === -1 ? sessionStorage : localStorage).setItem(\n\t\t\t\t\t'DataTables_'+settings.sInstance+'_'+location.pathname,\n\t\t\t\t\tJSON.stringify( data )\n\t\t\t\t);\n\t\t\t} catch (e) {}\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Callback which allows modification of the state to be saved. Called when the table\n\t\t * has changed state a new state save is required. This method allows modification of\n\t\t * the state saving object prior to actually doing the save, including addition or\n\t\t * other state properties or modification. Note that for plug-in authors, you should\n\t\t * use the `stateSaveParams` event to save parameters for a plug-in.\n\t\t * @type function\n\t\t * @param {object} settings DataTables settings object\n\t\t * @param {object} data The state object to be saved\n\t\t *\n\t\t * @dtopt Callbacks\n\t\t * @name DataTable.defaults.stateSaveParams\n\t\t *\n\t\t * @example\n\t\t * // Remove a saved filter, so filtering is never saved\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"stateSave\": true,\n\t\t * \"stateSaveParams\": function (settings, data) {\n\t\t * data.oSearch.sSearch = \"\";\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"fnStateSaveParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Duration for which the saved state information is considered valid. After this period\n\t\t * has elapsed the state will be returned to the default.\n\t\t * Value is given in seconds.\n\t\t * @type int\n\t\t * @default 7200 (2 hours)\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.stateDuration\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"stateDuration\": 60*60*24; // 1 day\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"iStateDuration\": 7200,\n\t\n\t\n\t\t/**\n\t\t * When enabled DataTables will not make a request to the server for the first\n\t\t * page draw - rather it will use the data already on the page (no sorting etc\n\t\t * will be applied to it), thus saving on an XHR at load time. `deferLoading`\n\t\t * is used to indicate that deferred loading is required, but it is also used\n\t\t * to tell DataTables how many records there are in the full table (allowing\n\t\t * the information element and pagination to be displayed correctly). In the case\n\t\t * where a filtering is applied to the table on initial load, this can be\n\t\t * indicated by giving the parameter as an array, where the first element is\n\t\t * the number of records available after filtering and the second element is the\n\t\t * number of records without filtering (allowing the table information element\n\t\t * to be shown correctly).\n\t\t * @type int | array\n\t\t * @default null\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.deferLoading\n\t\t *\n\t\t * @example\n\t\t * // 57 records available in the table, no filtering applied\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"serverSide\": true,\n\t\t * \"ajax\": \"scripts/server_processing.php\",\n\t\t * \"deferLoading\": 57\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // 57 records after filtering, 100 without filtering (an initial filter applied)\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"serverSide\": true,\n\t\t * \"ajax\": \"scripts/server_processing.php\",\n\t\t * \"deferLoading\": [ 57, 100 ],\n\t\t * \"search\": {\n\t\t * \"search\": \"my_filter\"\n\t\t * }\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"iDeferLoading\": null,\n\t\n\t\n\t\t/**\n\t\t * Number of rows to display on a single page when using pagination. If\n\t\t * feature enabled (`lengthChange`) then the end user will be able to override\n\t\t * this to a custom setting using a pop-up menu.\n\t\t * @type int\n\t\t * @default 10\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.pageLength\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"pageLength\": 50\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"iDisplayLength\": 10,\n\t\n\t\n\t\t/**\n\t\t * Define the starting point for data display when using DataTables with\n\t\t * pagination. Note that this parameter is the number of records, rather than\n\t\t * the page number, so if you have 10 records per page and want to start on\n\t\t * the third page, it should be \"20\".\n\t\t * @type int\n\t\t * @default 0\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.displayStart\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"displayStart\": 20\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"iDisplayStart\": 0,\n\t\n\t\n\t\t/**\n\t\t * By default DataTables allows keyboard navigation of the table (sorting, paging,\n\t\t * and filtering) by adding a `tabindex` attribute to the required elements. This\n\t\t * allows you to tab through the controls and press the enter key to activate them.\n\t\t * The tabindex is default 0, meaning that the tab follows the flow of the document.\n\t\t * You can overrule this using this parameter if you wish. Use a value of -1 to\n\t\t * disable built-in keyboard navigation.\n\t\t * @type int\n\t\t * @default 0\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.tabIndex\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"tabIndex\": 1\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"iTabIndex\": 0,\n\t\n\t\n\t\t/**\n\t\t * Classes that DataTables assigns to the various components and features\n\t\t * that it adds to the HTML table. This allows classes to be configured\n\t\t * during initialisation in addition to through the static\n\t\t * {@link DataTable.ext.oStdClasses} object).\n\t\t * @namespace\n\t\t * @name DataTable.defaults.classes\n\t\t */\n\t\t\"oClasses\": {},\n\t\n\t\n\t\t/**\n\t\t * All strings that DataTables uses in the user interface that it creates\n\t\t * are defined in this object, allowing you to modified them individually or\n\t\t * completely replace them all as required.\n\t\t * @namespace\n\t\t * @name DataTable.defaults.language\n\t\t */\n\t\t\"oLanguage\": {\n\t\t\t/**\n\t\t\t * Strings that are used for WAI-ARIA labels and controls only (these are not\n\t\t\t * actually visible on the page, but will be read by screenreaders, and thus\n\t\t\t * must be internationalised as well).\n\t\t\t * @namespace\n\t\t\t * @name DataTable.defaults.language.aria\n\t\t\t */\n\t\t\t\"oAria\": {\n\t\t\t\t/**\n\t\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t\t * sorted ascending by activing the column (click or return when focused).\n\t\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t\t * @type string\n\t\t\t\t * @default : activate to sort column ascending\n\t\t\t\t *\n\t\t\t\t * @dtopt Language\n\t\t\t\t * @name DataTable.defaults.language.aria.sortAscending\n\t\t\t\t *\n\t\t\t\t * @example\n\t\t\t\t * $(document).ready( function() {\n\t\t\t\t * $('#example').dataTable( {\n\t\t\t\t * \"language\": {\n\t\t\t\t * \"aria\": {\n\t\t\t\t * \"sortAscending\": \" - click/return to sort ascending\"\n\t\t\t\t * }\n\t\t\t\t * }\n\t\t\t\t * } );\n\t\t\t\t * } );\n\t\t\t\t */\n\t\t\t\t\"sSortAscending\": \": activate to sort column ascending\",\n\t\n\t\t\t\t/**\n\t\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t\t * sorted descending by activing the column (click or return when focused).\n\t\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t\t * @type string\n\t\t\t\t * @default : activate to sort column ascending\n\t\t\t\t *\n\t\t\t\t * @dtopt Language\n\t\t\t\t * @name DataTable.defaults.language.aria.sortDescending\n\t\t\t\t *\n\t\t\t\t * @example\n\t\t\t\t * $(document).ready( function() {\n\t\t\t\t * $('#example').dataTable( {\n\t\t\t\t * \"language\": {\n\t\t\t\t * \"aria\": {\n\t\t\t\t * \"sortDescending\": \" - click/return to sort descending\"\n\t\t\t\t * }\n\t\t\t\t * }\n\t\t\t\t * } );\n\t\t\t\t * } );\n\t\t\t\t */\n\t\t\t\t\"sSortDescending\": \": activate to sort column descending\"\n\t\t\t},\n\t\n\t\t\t/**\n\t\t\t * Pagination string used by DataTables for the built-in pagination\n\t\t\t * control types.\n\t\t\t * @namespace\n\t\t\t * @name DataTable.defaults.language.paginate\n\t\t\t */\n\t\t\t\"oPaginate\": {\n\t\t\t\t/**\n\t\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t\t * button to take the user to the first page.\n\t\t\t\t * @type string\n\t\t\t\t * @default First\n\t\t\t\t *\n\t\t\t\t * @dtopt Language\n\t\t\t\t * @name DataTable.defaults.language.paginate.first\n\t\t\t\t *\n\t\t\t\t * @example\n\t\t\t\t * $(document).ready( function() {\n\t\t\t\t * $('#example').dataTable( {\n\t\t\t\t * \"language\": {\n\t\t\t\t * \"paginate\": {\n\t\t\t\t * \"first\": \"First page\"\n\t\t\t\t * }\n\t\t\t\t * }\n\t\t\t\t * } );\n\t\t\t\t * } );\n\t\t\t\t */\n\t\t\t\t\"sFirst\": \"First\",\n\t\n\t\n\t\t\t\t/**\n\t\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t\t * button to take the user to the last page.\n\t\t\t\t * @type string\n\t\t\t\t * @default Last\n\t\t\t\t *\n\t\t\t\t * @dtopt Language\n\t\t\t\t * @name DataTable.defaults.language.paginate.last\n\t\t\t\t *\n\t\t\t\t * @example\n\t\t\t\t * $(document).ready( function() {\n\t\t\t\t * $('#example').dataTable( {\n\t\t\t\t * \"language\": {\n\t\t\t\t * \"paginate\": {\n\t\t\t\t * \"last\": \"Last page\"\n\t\t\t\t * }\n\t\t\t\t * }\n\t\t\t\t * } );\n\t\t\t\t * } );\n\t\t\t\t */\n\t\t\t\t\"sLast\": \"Last\",\n\t\n\t\n\t\t\t\t/**\n\t\t\t\t * Text to use for the 'next' pagination button (to take the user to the\n\t\t\t\t * next page).\n\t\t\t\t * @type string\n\t\t\t\t * @default Next\n\t\t\t\t *\n\t\t\t\t * @dtopt Language\n\t\t\t\t * @name DataTable.defaults.language.paginate.next\n\t\t\t\t *\n\t\t\t\t * @example\n\t\t\t\t * $(document).ready( function() {\n\t\t\t\t * $('#example').dataTable( {\n\t\t\t\t * \"language\": {\n\t\t\t\t * \"paginate\": {\n\t\t\t\t * \"next\": \"Next page\"\n\t\t\t\t * }\n\t\t\t\t * }\n\t\t\t\t * } );\n\t\t\t\t * } );\n\t\t\t\t */\n\t\t\t\t\"sNext\": \"Next\",\n\t\n\t\n\t\t\t\t/**\n\t\t\t\t * Text to use for the 'previous' pagination button (to take the user to\n\t\t\t\t * the previous page).\n\t\t\t\t * @type string\n\t\t\t\t * @default Previous\n\t\t\t\t *\n\t\t\t\t * @dtopt Language\n\t\t\t\t * @name DataTable.defaults.language.paginate.previous\n\t\t\t\t *\n\t\t\t\t * @example\n\t\t\t\t * $(document).ready( function() {\n\t\t\t\t * $('#example').dataTable( {\n\t\t\t\t * \"language\": {\n\t\t\t\t * \"paginate\": {\n\t\t\t\t * \"previous\": \"Previous page\"\n\t\t\t\t * }\n\t\t\t\t * }\n\t\t\t\t * } );\n\t\t\t\t * } );\n\t\t\t\t */\n\t\t\t\t\"sPrevious\": \"Previous\"\n\t\t\t},\n\t\n\t\t\t/**\n\t\t\t * This string is shown in preference to `zeroRecords` when the table is\n\t\t\t * empty of data (regardless of filtering). Note that this is an optional\n\t\t\t * parameter - if it is not given, the value of `zeroRecords` will be used\n\t\t\t * instead (either the default or given value).\n\t\t\t * @type string\n\t\t\t * @default No data available in table\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.emptyTable\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"emptyTable\": \"No data available in table\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sEmptyTable\": \"No data available in table\",\n\t\n\t\n\t\t\t/**\n\t\t\t * This string gives information to the end user about the information\n\t\t\t * that is current on display on the page. The following tokens can be\n\t\t\t * used in the string and will be dynamically replaced as the table\n\t\t\t * display updates. This tokens can be placed anywhere in the string, or\n\t\t\t * removed as needed by the language requires:\n\t\t\t *\n\t\t\t * * `\\_START\\_` - Display index of the first record on the current page\n\t\t\t * * `\\_END\\_` - Display index of the last record on the current page\n\t\t\t * * `\\_TOTAL\\_` - Number of records in the table after filtering\n\t\t\t * * `\\_MAX\\_` - Number of records in the table without filtering\n\t\t\t * * `\\_PAGE\\_` - Current page number\n\t\t\t * * `\\_PAGES\\_` - Total number of pages of data in the table\n\t\t\t *\n\t\t\t * @type string\n\t\t\t * @default Showing _START_ to _END_ of _TOTAL_ entries\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.info\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"info\": \"Showing page _PAGE_ of _PAGES_\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sInfo\": \"Showing _START_ to _END_ of _TOTAL_ entries\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Display information string for when the table is empty. Typically the\n\t\t\t * format of this string should match `info`.\n\t\t\t * @type string\n\t\t\t * @default Showing 0 to 0 of 0 entries\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.infoEmpty\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"infoEmpty\": \"No entries to show\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sInfoEmpty\": \"Showing 0 to 0 of 0 entries\",\n\t\n\t\n\t\t\t/**\n\t\t\t * When a user filters the information in a table, this string is appended\n\t\t\t * to the information (`info`) to give an idea of how strong the filtering\n\t\t\t * is. The variable _MAX_ is dynamically updated.\n\t\t\t * @type string\n\t\t\t * @default (filtered from _MAX_ total entries)\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.infoFiltered\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"infoFiltered\": \" - filtering from _MAX_ records\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sInfoFiltered\": \"(filtered from _MAX_ total entries)\",\n\t\n\t\n\t\t\t/**\n\t\t\t * If can be useful to append extra information to the info string at times,\n\t\t\t * and this variable does exactly that. This information will be appended to\n\t\t\t * the `info` (`infoEmpty` and `infoFiltered` in whatever combination they are\n\t\t\t * being used) at all times.\n\t\t\t * @type string\n\t\t\t * @default Empty string\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.infoPostFix\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"infoPostFix\": \"All records shown are derived from real information.\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sInfoPostFix\": \"\",\n\t\n\t\n\t\t\t/**\n\t\t\t * This decimal place operator is a little different from the other\n\t\t\t * language options since DataTables doesn't output floating point\n\t\t\t * numbers, so it won't ever use this for display of a number. Rather,\n\t\t\t * what this parameter does is modify the sort methods of the table so\n\t\t\t * that numbers which are in a format which has a character other than\n\t\t\t * a period (`.`) as a decimal place will be sorted numerically.\n\t\t\t *\n\t\t\t * Note that numbers with different decimal places cannot be shown in\n\t\t\t * the same table and still be sortable, the table must be consistent.\n\t\t\t * However, multiple different tables on the page can use different\n\t\t\t * decimal place characters.\n\t\t\t * @type string\n\t\t\t * @default \n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.decimal\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"decimal\": \",\"\n\t\t\t * \"thousands\": \".\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sDecimal\": \"\",\n\t\n\t\n\t\t\t/**\n\t\t\t * DataTables has a build in number formatter (`formatNumber`) which is\n\t\t\t * used to format large numbers that are used in the table information.\n\t\t\t * By default a comma is used, but this can be trivially changed to any\n\t\t\t * character you wish with this parameter.\n\t\t\t * @type string\n\t\t\t * @default ,\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.thousands\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"thousands\": \"'\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sThousands\": \",\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Detail the action that will be taken when the drop down menu for the\n\t\t\t * pagination length option is changed. The '_MENU_' variable is replaced\n\t\t\t * with a default select list of 10, 25, 50 and 100, and can be replaced\n\t\t\t * with a custom select box if required.\n\t\t\t * @type string\n\t\t\t * @default Show _MENU_ entries\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.lengthMenu\n\t\t\t *\n\t\t\t * @example\n\t\t\t * // Language change only\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"lengthMenu\": \"Display _MENU_ records\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t *\n\t\t\t * @example\n\t\t\t * // Language and options change\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"lengthMenu\": 'Display records'\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sLengthMenu\": \"Show _MENU_ entries\",\n\t\n\t\n\t\t\t/**\n\t\t\t * When using Ajax sourced data and during the first draw when DataTables is\n\t\t\t * gathering the data, this message is shown in an empty row in the table to\n\t\t\t * indicate to the end user the the data is being loaded. Note that this\n\t\t\t * parameter is not used when loading data by server-side processing, just\n\t\t\t * Ajax sourced data with client-side processing.\n\t\t\t * @type string\n\t\t\t * @default Loading...\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.loadingRecords\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"loadingRecords\": \"Please wait - loading...\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sLoadingRecords\": \"Loading...\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Text which is displayed when the table is processing a user action\n\t\t\t * (usually a sort command or similar).\n\t\t\t * @type string\n\t\t\t * @default Processing...\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.processing\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"processing\": \"DataTables is currently busy\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sProcessing\": \"Processing...\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Details the actions that will be taken when the user types into the\n\t\t\t * filtering input text box. The variable \"_INPUT_\", if used in the string,\n\t\t\t * is replaced with the HTML text box for the filtering input allowing\n\t\t\t * control over where it appears in the string. If \"_INPUT_\" is not given\n\t\t\t * then the input box is appended to the string automatically.\n\t\t\t * @type string\n\t\t\t * @default Search:\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.search\n\t\t\t *\n\t\t\t * @example\n\t\t\t * // Input text box will be appended at the end automatically\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"search\": \"Filter records:\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t *\n\t\t\t * @example\n\t\t\t * // Specify where the filter should appear\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"search\": \"Apply filter _INPUT_ to table\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sSearch\": \"Search:\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Assign a `placeholder` attribute to the search `input` element\n\t\t\t * @type string\n\t\t\t * @default \n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.searchPlaceholder\n\t\t\t */\n\t\t\t\"sSearchPlaceholder\": \"\",\n\t\n\t\n\t\t\t/**\n\t\t\t * All of the language information can be stored in a file on the\n\t\t\t * server-side, which DataTables will look up if this parameter is passed.\n\t\t\t * It must store the URL of the language file, which is in a JSON format,\n\t\t\t * and the object has the same properties as the oLanguage object in the\n\t\t\t * initialiser object (i.e. the above parameters). Please refer to one of\n\t\t\t * the example language files to see how this works in action.\n\t\t\t * @type string\n\t\t\t * @default Empty string - i.e. disabled\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.url\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"url\": \"http://www.sprymedia.co.uk/dataTables/lang.txt\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sUrl\": \"\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Text shown inside the table records when the is no information to be\n\t\t\t * displayed after filtering. `emptyTable` is shown when there is simply no\n\t\t\t * information in the table at all (regardless of filtering).\n\t\t\t * @type string\n\t\t\t * @default No matching records found\n\t\t\t *\n\t\t\t * @dtopt Language\n\t\t\t * @name DataTable.defaults.language.zeroRecords\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $(document).ready( function() {\n\t\t\t * $('#example').dataTable( {\n\t\t\t * \"language\": {\n\t\t\t * \"zeroRecords\": \"No records to display\"\n\t\t\t * }\n\t\t\t * } );\n\t\t\t * } );\n\t\t\t */\n\t\t\t\"sZeroRecords\": \"No matching records found\"\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * This parameter allows you to have define the global filtering state at\n\t\t * initialisation time. As an object the `search` parameter must be\n\t\t * defined, but all other parameters are optional. When `regex` is true,\n\t\t * the search string will be treated as a regular expression, when false\n\t\t * (default) it will be treated as a straight string. When `smart`\n\t\t * DataTables will use it's smart filtering methods (to word match at\n\t\t * any point in the data), when false this will not be done.\n\t\t * @namespace\n\t\t * @extends DataTable.models.oSearch\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.search\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"search\": {\"search\": \"Initial search\"}\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"oSearch\": $.extend( {}, DataTable.models.oSearch ),\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * By default DataTables will look for the property `data` (or `aaData` for\n\t\t * compatibility with DataTables 1.9-) when obtaining data from an Ajax\n\t\t * source or for server-side processing - this parameter allows that\n\t\t * property to be changed. You can use Javascript dotted object notation to\n\t\t * get a data source for multiple levels of nesting.\n\t\t * @type string\n\t\t * @default data\n\t\t *\n\t\t * @dtopt Options\n\t\t * @dtopt Server-side\n\t\t * @name DataTable.defaults.ajaxDataProp\n\t\t *\n\t\t * @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"sAjaxDataProp\": \"data\",\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * You can instruct DataTables to load data from an external\n\t\t * source using this parameter (use aData if you want to pass data in you\n\t\t * already have). Simply provide a url a JSON object can be obtained from.\n\t\t * @type string\n\t\t * @default null\n\t\t *\n\t\t * @dtopt Options\n\t\t * @dtopt Server-side\n\t\t * @name DataTable.defaults.ajaxSource\n\t\t *\n\t\t * @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"sAjaxSource\": null,\n\t\n\t\n\t\t/**\n\t\t * This initialisation variable allows you to specify exactly where in the\n\t\t * DOM you want DataTables to inject the various controls it adds to the page\n\t\t * (for example you might want the pagination controls at the top of the\n\t\t * table). DIV elements (with or without a custom class) can also be added to\n\t\t * aid styling. The follow syntax is used:\n\t\t *
      \n\t\t *
    • The following options are allowed:\n\t\t *
        \n\t\t *
      • 'l' - Length changing
      • \n\t\t *
      • 'f' - Filtering input
      • \n\t\t *
      • 't' - The table!
      • \n\t\t *
      • 'i' - Information
      • \n\t\t *
      • 'p' - Pagination
      • \n\t\t *
      • 'r' - pRocessing
      • \n\t\t *
      \n\t\t *
    • \n\t\t *
    • The following constants are allowed:\n\t\t *
        \n\t\t *
      • 'H' - jQueryUI theme \"header\" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')
      • \n\t\t *
      • 'F' - jQueryUI theme \"footer\" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')
      • \n\t\t *
      \n\t\t *
    • \n\t\t *
    • The following syntax is expected:\n\t\t *
        \n\t\t *
      • '<' and '>' - div elements
      • \n\t\t *
      • '<\"class\" and '>' - div with a class
      • \n\t\t *
      • '<\"#id\" and '>' - div with an ID
      • \n\t\t *
      \n\t\t *
    • \n\t\t *
    • Examples:\n\t\t *
        \n\t\t *
      • '<\"wrapper\"flipt>'
      • \n\t\t *
      • '<lf<t>ip>'
      • \n\t\t *
      \n\t\t *
    • \n\t\t *
    \n\t\t * @type string\n\t\t * @default lfrtip (when `jQueryUI` is false) or\n\t\t * <\"H\"lfr>t<\"F\"ip> (when `jQueryUI` is true)\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.dom\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"dom\": '<\"top\"i>rt<\"bottom\"flp><\"clear\">'\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sDom\": \"lfrtip\",\n\t\n\t\n\t\t/**\n\t\t * Search delay option. This will throttle full table searches that use the\n\t\t * DataTables provided search input element (it does not effect calls to\n\t\t * `dt-api search()`, providing a delay before the search is made.\n\t\t * @type integer\n\t\t * @default 0\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.searchDelay\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"searchDelay\": 200\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"searchDelay\": null,\n\t\n\t\n\t\t/**\n\t\t * DataTables features six different built-in options for the buttons to\n\t\t * display for pagination control:\n\t\t *\n\t\t * * `numbers` - Page number buttons only\n\t\t * * `simple` - 'Previous' and 'Next' buttons only\n\t\t * * 'simple_numbers` - 'Previous' and 'Next' buttons, plus page numbers\n\t\t * * `full` - 'First', 'Previous', 'Next' and 'Last' buttons\n\t\t * * `full_numbers` - 'First', 'Previous', 'Next' and 'Last' buttons, plus page numbers\n\t\t * * `first_last_numbers` - 'First' and 'Last' buttons, plus page numbers\n\t\t * \n\t\t * Further methods can be added using {@link DataTable.ext.oPagination}.\n\t\t * @type string\n\t\t * @default simple_numbers\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.pagingType\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"pagingType\": \"full_numbers\"\n\t\t * } );\n\t\t * } )\n\t\t */\n\t\t\"sPaginationType\": \"simple_numbers\",\n\t\n\t\n\t\t/**\n\t\t * Enable horizontal scrolling. When a table is too wide to fit into a\n\t\t * certain layout, or you have a large number of columns in the table, you\n\t\t * can enable x-scrolling to show the table in a viewport, which can be\n\t\t * scrolled. This property can be `true` which will allow the table to\n\t\t * scroll horizontally when needed, or any CSS unit, or a number (in which\n\t\t * case it will be treated as a pixel measurement). Setting as simply `true`\n\t\t * is recommended.\n\t\t * @type boolean|string\n\t\t * @default blank string - i.e. disabled\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.scrollX\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"scrollX\": true,\n\t\t * \"scrollCollapse\": true\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sScrollX\": \"\",\n\t\n\t\n\t\t/**\n\t\t * This property can be used to force a DataTable to use more width than it\n\t\t * might otherwise do when x-scrolling is enabled. For example if you have a\n\t\t * table which requires to be well spaced, this parameter is useful for\n\t\t * \"over-sizing\" the table, and thus forcing scrolling. This property can by\n\t\t * any CSS unit, or a number (in which case it will be treated as a pixel\n\t\t * measurement).\n\t\t * @type string\n\t\t * @default blank string - i.e. disabled\n\t\t *\n\t\t * @dtopt Options\n\t\t * @name DataTable.defaults.scrollXInner\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"scrollX\": \"100%\",\n\t\t * \"scrollXInner\": \"110%\"\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sScrollXInner\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Enable vertical scrolling. Vertical scrolling will constrain the DataTable\n\t\t * to the given height, and enable scrolling for any data which overflows the\n\t\t * current viewport. This can be used as an alternative to paging to display\n\t\t * a lot of data in a small area (although paging and scrolling can both be\n\t\t * enabled at the same time). This property can be any CSS unit, or a number\n\t\t * (in which case it will be treated as a pixel measurement).\n\t\t * @type string\n\t\t * @default blank string - i.e. disabled\n\t\t *\n\t\t * @dtopt Features\n\t\t * @name DataTable.defaults.scrollY\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"scrollY\": \"200px\",\n\t\t * \"paginate\": false\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sScrollY\": \"\",\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * Set the HTTP method that is used to make the Ajax call for server-side\n\t\t * processing or Ajax sourced data.\n\t\t * @type string\n\t\t * @default GET\n\t\t *\n\t\t * @dtopt Options\n\t\t * @dtopt Server-side\n\t\t * @name DataTable.defaults.serverMethod\n\t\t *\n\t\t * @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"sServerMethod\": \"GET\",\n\t\n\t\n\t\t/**\n\t\t * DataTables makes use of renderers when displaying HTML elements for\n\t\t * a table. These renderers can be added or modified by plug-ins to\n\t\t * generate suitable mark-up for a site. For example the Bootstrap\n\t\t * integration plug-in for DataTables uses a paging button renderer to\n\t\t * display pagination buttons in the mark-up required by Bootstrap.\n\t\t *\n\t\t * For further information about the renderers available see\n\t\t * DataTable.ext.renderer\n\t\t * @type string|object\n\t\t * @default null\n\t\t *\n\t\t * @name DataTable.defaults.renderer\n\t\t *\n\t\t */\n\t\t\"renderer\": null,\n\t\n\t\n\t\t/**\n\t\t * Set the data property name that DataTables should use to get a row's id\n\t\t * to set as the `id` property in the node.\n\t\t * @type string\n\t\t * @default DT_RowId\n\t\t *\n\t\t * @name DataTable.defaults.rowId\n\t\t */\n\t\t\"rowId\": \"DT_RowId\"\n\t};\n\t\n\t_fnHungarianMap( DataTable.defaults );\n\t\n\t\n\t\n\t/*\n\t * Developer note - See note in model.defaults.js about the use of Hungarian\n\t * notation and camel case.\n\t */\n\t\n\t/**\n\t * Column options that can be given to DataTables at initialisation time.\n\t * @namespace\n\t */\n\tDataTable.defaults.column = {\n\t\t/**\n\t\t * Define which column(s) an order will occur on for this column. This\n\t\t * allows a column's ordering to take multiple columns into account when\n\t\t * doing a sort or use the data from a different column. For example first\n\t\t * name / last name columns make sense to do a multi-column sort over the\n\t\t * two columns.\n\t\t * @type array|int\n\t\t * @default null Takes the value of the column index automatically\n\t\t *\n\t\t * @name DataTable.defaults.column.orderData\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"orderData\": [ 0, 1 ], \"targets\": [ 0 ] },\n\t\t * { \"orderData\": [ 1, 0 ], \"targets\": [ 1 ] },\n\t\t * { \"orderData\": 2, \"targets\": [ 2 ] }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"orderData\": [ 0, 1 ] },\n\t\t * { \"orderData\": [ 1, 0 ] },\n\t\t * { \"orderData\": 2 },\n\t\t * null,\n\t\t * null\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"aDataSort\": null,\n\t\t\"iDataSort\": -1,\n\t\n\t\n\t\t/**\n\t\t * You can control the default ordering direction, and even alter the\n\t\t * behaviour of the sort handler (i.e. only allow ascending ordering etc)\n\t\t * using this parameter.\n\t\t * @type array\n\t\t * @default [ 'asc', 'desc' ]\n\t\t *\n\t\t * @name DataTable.defaults.column.orderSequence\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"orderSequence\": [ \"asc\" ], \"targets\": [ 1 ] },\n\t\t * { \"orderSequence\": [ \"desc\", \"asc\", \"asc\" ], \"targets\": [ 2 ] },\n\t\t * { \"orderSequence\": [ \"desc\" ], \"targets\": [ 3 ] }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * null,\n\t\t * { \"orderSequence\": [ \"asc\" ] },\n\t\t * { \"orderSequence\": [ \"desc\", \"asc\", \"asc\" ] },\n\t\t * { \"orderSequence\": [ \"desc\" ] },\n\t\t * null\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"asSorting\": [ 'asc', 'desc' ],\n\t\n\t\n\t\t/**\n\t\t * Enable or disable filtering on the data in this column.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @name DataTable.defaults.column.searchable\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"searchable\": false, \"targets\": [ 0 ] }\n\t\t * ] } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"searchable\": false },\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * null\n\t\t * ] } );\n\t\t * } );\n\t\t */\n\t\t\"bSearchable\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable ordering on this column.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @name DataTable.defaults.column.orderable\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"orderable\": false, \"targets\": [ 0 ] }\n\t\t * ] } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"orderable\": false },\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * null\n\t\t * ] } );\n\t\t * } );\n\t\t */\n\t\t\"bSortable\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the display of this column.\n\t\t * @type boolean\n\t\t * @default true\n\t\t *\n\t\t * @name DataTable.defaults.column.visible\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"visible\": false, \"targets\": [ 0 ] }\n\t\t * ] } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"visible\": false },\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * null\n\t\t * ] } );\n\t\t * } );\n\t\t */\n\t\t\"bVisible\": true,\n\t\n\t\n\t\t/**\n\t\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t\t * allowing you to modify the DOM element (add background colour for example) when the\n\t\t * element is available.\n\t\t * @type function\n\t\t * @param {element} td The TD node that has been created\n\t\t * @param {*} cellData The Data for the cell\n\t\t * @param {array|object} rowData The data for the whole row\n\t\t * @param {int} row The row index for the aoData data store\n\t\t * @param {int} col The column index for aoColumns\n\t\t *\n\t\t * @name DataTable.defaults.column.createdCell\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [ {\n\t\t * \"targets\": [3],\n\t\t * \"createdCell\": function (td, cellData, rowData, row, col) {\n\t\t * if ( cellData == \"1.7\" ) {\n\t\t * $(td).css('color', 'blue')\n\t\t * }\n\t\t * }\n\t\t * } ]\n\t\t * });\n\t\t * } );\n\t\t */\n\t\t\"fnCreatedCell\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter has been replaced by `data` in DataTables to ensure naming\n\t\t * consistency. `dataProp` can still be used, as there is backwards\n\t\t * compatibility in DataTables for this option, but it is strongly\n\t\t * recommended that you use `data` in preference to `dataProp`.\n\t\t * @name DataTable.defaults.column.dataProp\n\t\t */\n\t\n\t\n\t\t/**\n\t\t * This property can be used to read data from any data source property,\n\t\t * including deeply nested objects / properties. `data` can be given in a\n\t\t * number of different ways which effect its behaviour:\n\t\t *\n\t\t * * `integer` - treated as an array index for the data source. This is the\n\t\t * default that DataTables uses (incrementally increased for each column).\n\t\t * * `string` - read an object property from the data source. There are\n\t\t * three 'special' options that can be used in the string to alter how\n\t\t * DataTables reads the data from the source object:\n\t\t * * `.` - Dotted Javascript notation. Just as you use a `.` in\n\t\t * Javascript to read from nested objects, so to can the options\n\t\t * specified in `data`. For example: `browser.version` or\n\t\t * `browser.name`. If your object parameter name contains a period, use\n\t\t * `\\\\` to escape it - i.e. `first\\\\.name`.\n\t\t * * `[]` - Array notation. DataTables can automatically combine data\n\t\t * from and array source, joining the data with the characters provided\n\t\t * between the two brackets. For example: `name[, ]` would provide a\n\t\t * comma-space separated list from the source array. If no characters\n\t\t * are provided between the brackets, the original array source is\n\t\t * returned.\n\t\t * * `()` - Function notation. Adding `()` to the end of a parameter will\n\t\t * execute a function of the name given. For example: `browser()` for a\n\t\t * simple function on the data source, `browser.version()` for a\n\t\t * function in a nested property or even `browser().version` to get an\n\t\t * object property if the function called returns an object. Note that\n\t\t * function notation is recommended for use in `render` rather than\n\t\t * `data` as it is much simpler to use as a renderer.\n\t\t * * `null` - use the original data source for the row rather than plucking\n\t\t * data directly from it. This action has effects on two other\n\t\t * initialisation options:\n\t\t * * `defaultContent` - When null is given as the `data` option and\n\t\t * `defaultContent` is specified for the column, the value defined by\n\t\t * `defaultContent` will be used for the cell.\n\t\t * * `render` - When null is used for the `data` option and the `render`\n\t\t * option is specified for the column, the whole data source for the\n\t\t * row is used for the renderer.\n\t\t * * `function` - the function given will be executed whenever DataTables\n\t\t * needs to set or get the data for a cell in the column. The function\n\t\t * takes three parameters:\n\t\t * * Parameters:\n\t\t * * `{array|object}` The data source for the row\n\t\t * * `{string}` The type call data requested - this will be 'set' when\n\t\t * setting data or 'filter', 'display', 'type', 'sort' or undefined\n\t\t * when gathering data. Note that when `undefined` is given for the\n\t\t * type DataTables expects to get the raw data for the object back<\n\t\t * * `{*}` Data to set when the second parameter is 'set'.\n\t\t * * Return:\n\t\t * * The return value from the function is not required when 'set' is\n\t\t * the type of call, but otherwise the return is what will be used\n\t\t * for the data requested.\n\t\t *\n\t\t * Note that `data` is a getter and setter option. If you just require\n\t\t * formatting of data for output, you will likely want to use `render` which\n\t\t * is simply a getter and thus simpler to use.\n\t\t *\n\t\t * Note that prior to DataTables 1.9.2 `data` was called `mDataProp`. The\n\t\t * name change reflects the flexibility of this property and is consistent\n\t\t * with the naming of mRender. If 'mDataProp' is given, then it will still\n\t\t * be used by DataTables, as it automatically maps the old name to the new\n\t\t * if required.\n\t\t *\n\t\t * @type string|int|function|null\n\t\t * @default null Use automatically calculated column index\n\t\t *\n\t\t * @name DataTable.defaults.column.data\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Read table data from objects\n\t\t * // JSON structure for each row:\n\t\t * // {\n\t\t * // \"engine\": {value},\n\t\t * // \"browser\": {value},\n\t\t * // \"platform\": {value},\n\t\t * // \"version\": {value},\n\t\t * // \"grade\": {value}\n\t\t * // }\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"ajaxSource\": \"sources/objects.txt\",\n\t\t * \"columns\": [\n\t\t * { \"data\": \"engine\" },\n\t\t * { \"data\": \"browser\" },\n\t\t * { \"data\": \"platform\" },\n\t\t * { \"data\": \"version\" },\n\t\t * { \"data\": \"grade\" }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Read information from deeply nested objects\n\t\t * // JSON structure for each row:\n\t\t * // {\n\t\t * // \"engine\": {value},\n\t\t * // \"browser\": {value},\n\t\t * // \"platform\": {\n\t\t * // \"inner\": {value}\n\t\t * // },\n\t\t * // \"details\": [\n\t\t * // {value}, {value}\n\t\t * // ]\n\t\t * // }\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"ajaxSource\": \"sources/deep.txt\",\n\t\t * \"columns\": [\n\t\t * { \"data\": \"engine\" },\n\t\t * { \"data\": \"browser\" },\n\t\t * { \"data\": \"platform.inner\" },\n\t\t * { \"data\": \"platform.details.0\" },\n\t\t * { \"data\": \"platform.details.1\" }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `data` as a function to provide different information for\n\t\t * // sorting, filtering and display. In this case, currency (price)\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [ {\n\t\t * \"targets\": [ 0 ],\n\t\t * \"data\": function ( source, type, val ) {\n\t\t * if (type === 'set') {\n\t\t * source.price = val;\n\t\t * // Store the computed dislay and filter values for efficiency\n\t\t * source.price_display = val==\"\" ? \"\" : \"$\"+numberFormat(val);\n\t\t * source.price_filter = val==\"\" ? \"\" : \"$\"+numberFormat(val)+\" \"+val;\n\t\t * return;\n\t\t * }\n\t\t * else if (type === 'display') {\n\t\t * return source.price_display;\n\t\t * }\n\t\t * else if (type === 'filter') {\n\t\t * return source.price_filter;\n\t\t * }\n\t\t * // 'sort', 'type' and undefined all just use the integer\n\t\t * return source.price;\n\t\t * }\n\t\t * } ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using default content\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [ {\n\t\t * \"targets\": [ 0 ],\n\t\t * \"data\": null,\n\t\t * \"defaultContent\": \"Click to edit\"\n\t\t * } ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using array notation - outputting a list from an array\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [ {\n\t\t * \"targets\": [ 0 ],\n\t\t * \"data\": \"name[, ]\"\n\t\t * } ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t */\n\t\t\"mData\": null,\n\t\n\t\n\t\t/**\n\t\t * This property is the rendering partner to `data` and it is suggested that\n\t\t * when you want to manipulate data for display (including filtering,\n\t\t * sorting etc) without altering the underlying data for the table, use this\n\t\t * property. `render` can be considered to be the the read only companion to\n\t\t * `data` which is read / write (then as such more complex). Like `data`\n\t\t * this option can be given in a number of different ways to effect its\n\t\t * behaviour:\n\t\t *\n\t\t * * `integer` - treated as an array index for the data source. This is the\n\t\t * default that DataTables uses (incrementally increased for each column).\n\t\t * * `string` - read an object property from the data source. There are\n\t\t * three 'special' options that can be used in the string to alter how\n\t\t * DataTables reads the data from the source object:\n\t\t * * `.` - Dotted Javascript notation. Just as you use a `.` in\n\t\t * Javascript to read from nested objects, so to can the options\n\t\t * specified in `data`. For example: `browser.version` or\n\t\t * `browser.name`. If your object parameter name contains a period, use\n\t\t * `\\\\` to escape it - i.e. `first\\\\.name`.\n\t\t * * `[]` - Array notation. DataTables can automatically combine data\n\t\t * from and array source, joining the data with the characters provided\n\t\t * between the two brackets. For example: `name[, ]` would provide a\n\t\t * comma-space separated list from the source array. If no characters\n\t\t * are provided between the brackets, the original array source is\n\t\t * returned.\n\t\t * * `()` - Function notation. Adding `()` to the end of a parameter will\n\t\t * execute a function of the name given. For example: `browser()` for a\n\t\t * simple function on the data source, `browser.version()` for a\n\t\t * function in a nested property or even `browser().version` to get an\n\t\t * object property if the function called returns an object.\n\t\t * * `object` - use different data for the different data types requested by\n\t\t * DataTables ('filter', 'display', 'type' or 'sort'). The property names\n\t\t * of the object is the data type the property refers to and the value can\n\t\t * defined using an integer, string or function using the same rules as\n\t\t * `render` normally does. Note that an `_` option _must_ be specified.\n\t\t * This is the default value to use if you haven't specified a value for\n\t\t * the data type requested by DataTables.\n\t\t * * `function` - the function given will be executed whenever DataTables\n\t\t * needs to set or get the data for a cell in the column. The function\n\t\t * takes three parameters:\n\t\t * * Parameters:\n\t\t * * {array|object} The data source for the row (based on `data`)\n\t\t * * {string} The type call data requested - this will be 'filter',\n\t\t * 'display', 'type' or 'sort'.\n\t\t * * {array|object} The full data source for the row (not based on\n\t\t * `data`)\n\t\t * * Return:\n\t\t * * The return value from the function is what will be used for the\n\t\t * data requested.\n\t\t *\n\t\t * @type string|int|function|object|null\n\t\t * @default null Use the data source value.\n\t\t *\n\t\t * @name DataTable.defaults.column.render\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Create a comma separated list from an array of objects\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"ajaxSource\": \"sources/deep.txt\",\n\t\t * \"columns\": [\n\t\t * { \"data\": \"engine\" },\n\t\t * { \"data\": \"browser\" },\n\t\t * {\n\t\t * \"data\": \"platform\",\n\t\t * \"render\": \"[, ].name\"\n\t\t * }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Execute a function to obtain data\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [ {\n\t\t * \"targets\": [ 0 ],\n\t\t * \"data\": null, // Use the full data source object for the renderer's source\n\t\t * \"render\": \"browserName()\"\n\t\t * } ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // As an object, extracting different data for the different types\n\t\t * // This would be used with a data source such as:\n\t\t * // { \"phone\": 5552368, \"phone_filter\": \"5552368 555-2368\", \"phone_display\": \"555-2368\" }\n\t\t * // Here the `phone` integer is used for sorting and type detection, while `phone_filter`\n\t\t * // (which has both forms) is used for filtering for if a user inputs either format, while\n\t\t * // the formatted phone number is the one that is shown in the table.\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [ {\n\t\t * \"targets\": [ 0 ],\n\t\t * \"data\": null, // Use the full data source object for the renderer's source\n\t\t * \"render\": {\n\t\t * \"_\": \"phone\",\n\t\t * \"filter\": \"phone_filter\",\n\t\t * \"display\": \"phone_display\"\n\t\t * }\n\t\t * } ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Use as a function to create a link from the data source\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [ {\n\t\t * \"targets\": [ 0 ],\n\t\t * \"data\": \"download_link\",\n\t\t * \"render\": function ( data, type, full ) {\n\t\t * return 'Download';\n\t\t * }\n\t\t * } ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"mRender\": null,\n\t\n\t\n\t\t/**\n\t\t * Change the cell type created for the column - either TD cells or TH cells. This\n\t\t * can be useful as TH cells have semantic meaning in the table body, allowing them\n\t\t * to act as a header for a row (you may wish to add scope='row' to the TH elements).\n\t\t * @type string\n\t\t * @default td\n\t\t *\n\t\t * @name DataTable.defaults.column.cellType\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Make the first column use TH cells\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [ {\n\t\t * \"targets\": [ 0 ],\n\t\t * \"cellType\": \"th\"\n\t\t * } ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sCellType\": \"td\",\n\t\n\t\n\t\t/**\n\t\t * Class to give to each cell in this column.\n\t\t * @type string\n\t\t * @default Empty string\n\t\t *\n\t\t * @name DataTable.defaults.column.class\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"class\": \"my_class\", \"targets\": [ 0 ] }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"class\": \"my_class\" },\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * null\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sClass\": \"\",\n\t\n\t\t/**\n\t\t * When DataTables calculates the column widths to assign to each column,\n\t\t * it finds the longest string in each column and then constructs a\n\t\t * temporary table and reads the widths from that. The problem with this\n\t\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer\n\t\t * string - thus the calculation can go wrong (doing it properly and putting\n\t\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t\t * a \"work around\" we provide this option. It will append its value to the\n\t\t * text that is found to be the longest string for the column - i.e. padding.\n\t\t * Generally you shouldn't need this!\n\t\t * @type string\n\t\t * @default Empty string\n\t\t *\n\t\t * @name DataTable.defaults.column.contentPadding\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * {\n\t\t * \"contentPadding\": \"mmm\"\n\t\t * }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sContentPadding\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Allows a default value to be given for a column's data, and will be used\n\t\t * whenever a null data source is encountered (this can be because `data`\n\t\t * is set to null, or because the data source itself is null).\n\t\t * @type string\n\t\t * @default null\n\t\t *\n\t\t * @name DataTable.defaults.column.defaultContent\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * {\n\t\t * \"data\": null,\n\t\t * \"defaultContent\": \"Edit\",\n\t\t * \"targets\": [ -1 ]\n\t\t * }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * {\n\t\t * \"data\": null,\n\t\t * \"defaultContent\": \"Edit\"\n\t\t * }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sDefaultContent\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter is only used in DataTables' server-side processing. It can\n\t\t * be exceptionally useful to know what columns are being displayed on the\n\t\t * client side, and to map these to database fields. When defined, the names\n\t\t * also allow DataTables to reorder information from the server if it comes\n\t\t * back in an unexpected order (i.e. if you switch your columns around on the\n\t\t * client-side, your server-side code does not also need updating).\n\t\t * @type string\n\t\t * @default Empty string\n\t\t *\n\t\t * @name DataTable.defaults.column.name\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"name\": \"engine\", \"targets\": [ 0 ] },\n\t\t * { \"name\": \"browser\", \"targets\": [ 1 ] },\n\t\t * { \"name\": \"platform\", \"targets\": [ 2 ] },\n\t\t * { \"name\": \"version\", \"targets\": [ 3 ] },\n\t\t * { \"name\": \"grade\", \"targets\": [ 4 ] }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"name\": \"engine\" },\n\t\t * { \"name\": \"browser\" },\n\t\t * { \"name\": \"platform\" },\n\t\t * { \"name\": \"version\" },\n\t\t * { \"name\": \"grade\" }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sName\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Defines a data source type for the ordering which can be used to read\n\t\t * real-time information from the table (updating the internally cached\n\t\t * version) prior to ordering. This allows ordering to occur on user\n\t\t * editable elements such as form inputs.\n\t\t * @type string\n\t\t * @default std\n\t\t *\n\t\t * @name DataTable.defaults.column.orderDataType\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"orderDataType\": \"dom-text\", \"targets\": [ 2, 3 ] },\n\t\t * { \"type\": \"numeric\", \"targets\": [ 3 ] },\n\t\t * { \"orderDataType\": \"dom-select\", \"targets\": [ 4 ] },\n\t\t * { \"orderDataType\": \"dom-checkbox\", \"targets\": [ 5 ] }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * null,\n\t\t * null,\n\t\t * { \"orderDataType\": \"dom-text\" },\n\t\t * { \"orderDataType\": \"dom-text\", \"type\": \"numeric\" },\n\t\t * { \"orderDataType\": \"dom-select\" },\n\t\t * { \"orderDataType\": \"dom-checkbox\" }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sSortDataType\": \"std\",\n\t\n\t\n\t\t/**\n\t\t * The title of this column.\n\t\t * @type string\n\t\t * @default null Derived from the 'TH' value for this column in the\n\t\t * original HTML table.\n\t\t *\n\t\t * @name DataTable.defaults.column.title\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"title\": \"My column title\", \"targets\": [ 0 ] }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"title\": \"My column title\" },\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * null\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sTitle\": null,\n\t\n\t\n\t\t/**\n\t\t * The type allows you to specify how the data for this column will be\n\t\t * ordered. Four types (string, numeric, date and html (which will strip\n\t\t * HTML tags before ordering)) are currently available. Note that only date\n\t\t * formats understood by Javascript's Date() object will be accepted as type\n\t\t * date. For example: \"Mar 26, 2008 5:03 PM\". May take the values: 'string',\n\t\t * 'numeric', 'date' or 'html' (by default). Further types can be adding\n\t\t * through plug-ins.\n\t\t * @type string\n\t\t * @default null Auto-detected from raw data\n\t\t *\n\t\t * @name DataTable.defaults.column.type\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"type\": \"html\", \"targets\": [ 0 ] }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"type\": \"html\" },\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * null\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sType\": null,\n\t\n\t\n\t\t/**\n\t\t * Defining the width of the column, this parameter may take any CSS value\n\t\t * (3em, 20px etc). DataTables applies 'smart' widths to columns which have not\n\t\t * been given a specific width through this interface ensuring that the table\n\t\t * remains readable.\n\t\t * @type string\n\t\t * @default null Automatic\n\t\t *\n\t\t * @name DataTable.defaults.column.width\n\t\t * @dtopt Columns\n\t\t *\n\t\t * @example\n\t\t * // Using `columnDefs`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columnDefs\": [\n\t\t * { \"width\": \"20%\", \"targets\": [ 0 ] }\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t *\n\t\t * @example\n\t\t * // Using `columns`\n\t\t * $(document).ready( function() {\n\t\t * $('#example').dataTable( {\n\t\t * \"columns\": [\n\t\t * { \"width\": \"20%\" },\n\t\t * null,\n\t\t * null,\n\t\t * null,\n\t\t * null\n\t\t * ]\n\t\t * } );\n\t\t * } );\n\t\t */\n\t\t\"sWidth\": null\n\t};\n\t\n\t_fnHungarianMap( DataTable.defaults.column );\n\t\n\t\n\t\n\t/**\n\t * DataTables settings object - this holds all the information needed for a\n\t * given table, including configuration, data and current application of the\n\t * table options. DataTables does not have a single instance for each DataTable\n\t * with the settings attached to that instance, but rather instances of the\n\t * DataTable \"class\" are created on-the-fly as needed (typically by a\n\t * $().dataTable() call) and the settings object is then applied to that\n\t * instance.\n\t *\n\t * Note that this object is related to {@link DataTable.defaults} but this\n\t * one is the internal data store for DataTables's cache of columns. It should\n\t * NOT be manipulated outside of DataTables. Any configuration should be done\n\t * through the initialisation options.\n\t * @namespace\n\t * @todo Really should attach the settings object to individual instances so we\n\t * don't need to create new instances on each $().dataTable() call (if the\n\t * table already exists). It would also save passing oSettings around and\n\t * into every single function. However, this is a very significant\n\t * architecture change for DataTables and will almost certainly break\n\t * backwards compatibility with older installations. This is something that\n\t * will be done in 2.0.\n\t */\n\tDataTable.models.oSettings = {\n\t\t/**\n\t\t * Primary features of DataTables and their enablement state.\n\t\t * @namespace\n\t\t */\n\t\t\"oFeatures\": {\n\t\n\t\t\t/**\n\t\t\t * Flag to say if DataTables should automatically try to calculate the\n\t\t\t * optimum table and columns widths (true) or not (false).\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bAutoWidth\": null,\n\t\n\t\t\t/**\n\t\t\t * Delay the creation of TR and TD elements until they are actually\n\t\t\t * needed by a driven page draw. This can give a significant speed\n\t\t\t * increase for Ajax source and Javascript source data, but makes no\n\t\t\t * difference at all fro DOM and server-side processing tables.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bDeferRender\": null,\n\t\n\t\t\t/**\n\t\t\t * Enable filtering on the table or not. Note that if this is disabled\n\t\t\t * then there is no filtering at all on the table, including fnFilter.\n\t\t\t * To just remove the filtering input use sDom and remove the 'f' option.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bFilter\": null,\n\t\n\t\t\t/**\n\t\t\t * Table information element (the 'Showing x of y records' div) enable\n\t\t\t * flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bInfo\": null,\n\t\n\t\t\t/**\n\t\t\t * Present a user control allowing the end user to change the page size\n\t\t\t * when pagination is enabled.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bLengthChange\": null,\n\t\n\t\t\t/**\n\t\t\t * Pagination enabled or not. Note that if this is disabled then length\n\t\t\t * changing must also be disabled.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bPaginate\": null,\n\t\n\t\t\t/**\n\t\t\t * Processing indicator enable flag whenever DataTables is enacting a\n\t\t\t * user request - typically an Ajax request for server-side processing.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bProcessing\": null,\n\t\n\t\t\t/**\n\t\t\t * Server-side processing enabled flag - when enabled DataTables will\n\t\t\t * get all data from the server for every draw - there is no filtering,\n\t\t\t * sorting or paging done on the client-side.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bServerSide\": null,\n\t\n\t\t\t/**\n\t\t\t * Sorting enablement flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bSort\": null,\n\t\n\t\t\t/**\n\t\t\t * Multi-column sorting\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bSortMulti\": null,\n\t\n\t\t\t/**\n\t\t\t * Apply a class to the columns which are being sorted to provide a\n\t\t\t * visual highlight or not. This can slow things down when enabled since\n\t\t\t * there is a lot of DOM interaction.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bSortClasses\": null,\n\t\n\t\t\t/**\n\t\t\t * State saving enablement flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bStateSave\": null\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Scrolling settings for a table.\n\t\t * @namespace\n\t\t */\n\t\t\"oScroll\": {\n\t\t\t/**\n\t\t\t * When the table is shorter in height than sScrollY, collapse the\n\t\t\t * table container down to the height of the table (when true).\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type boolean\n\t\t\t */\n\t\t\t\"bCollapse\": null,\n\t\n\t\t\t/**\n\t\t\t * Width of the scrollbar for the web-browser's platform. Calculated\n\t\t\t * during table initialisation.\n\t\t\t * @type int\n\t\t\t * @default 0\n\t\t\t */\n\t\t\t\"iBarWidth\": 0,\n\t\n\t\t\t/**\n\t\t\t * Viewport width for horizontal scrolling. Horizontal scrolling is\n\t\t\t * disabled if an empty string.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type string\n\t\t\t */\n\t\t\t\"sX\": null,\n\t\n\t\t\t/**\n\t\t\t * Width to expand the table to when using x-scrolling. Typically you\n\t\t\t * should not need to use this.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type string\n\t\t\t * @deprecated\n\t\t\t */\n\t\t\t\"sXInner\": null,\n\t\n\t\t\t/**\n\t\t\t * Viewport height for vertical scrolling. Vertical scrolling is disabled\n\t\t\t * if an empty string.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t * @type string\n\t\t\t */\n\t\t\t\"sY\": null\n\t\t},\n\t\n\t\t/**\n\t\t * Language information for the table.\n\t\t * @namespace\n\t\t * @extends DataTable.defaults.oLanguage\n\t\t */\n\t\t\"oLanguage\": {\n\t\t\t/**\n\t\t\t * Information callback function. See\n\t\t\t * {@link DataTable.defaults.fnInfoCallback}\n\t\t\t * @type function\n\t\t\t * @default null\n\t\t\t */\n\t\t\t\"fnInfoCallback\": null\n\t\t},\n\t\n\t\t/**\n\t\t * Browser support parameters\n\t\t * @namespace\n\t\t */\n\t\t\"oBrowser\": {\n\t\t\t/**\n\t\t\t * Indicate if the browser incorrectly calculates width:100% inside a\n\t\t\t * scrolling element (IE6/7)\n\t\t\t * @type boolean\n\t\t\t * @default false\n\t\t\t */\n\t\t\t\"bScrollOversize\": false,\n\t\n\t\t\t/**\n\t\t\t * Determine if the vertical scrollbar is on the right or left of the\n\t\t\t * scrolling container - needed for rtl language layout, although not\n\t\t\t * all browsers move the scrollbar (Safari).\n\t\t\t * @type boolean\n\t\t\t * @default false\n\t\t\t */\n\t\t\t\"bScrollbarLeft\": false,\n\t\n\t\t\t/**\n\t\t\t * Flag for if `getBoundingClientRect` is fully supported or not\n\t\t\t * @type boolean\n\t\t\t * @default false\n\t\t\t */\n\t\t\t\"bBounding\": false,\n\t\n\t\t\t/**\n\t\t\t * Browser scrollbar width\n\t\t\t * @type integer\n\t\t\t * @default 0\n\t\t\t */\n\t\t\t\"barWidth\": 0\n\t\t},\n\t\n\t\n\t\t\"ajax\": null,\n\t\n\t\n\t\t/**\n\t\t * Array referencing the nodes which are used for the features. The\n\t\t * parameters of this object match what is allowed by sDom - i.e.\n\t\t *
      \n\t\t *
    • 'l' - Length changing
    • \n\t\t *
    • 'f' - Filtering input
    • \n\t\t *
    • 't' - The table!
    • \n\t\t *
    • 'i' - Information
    • \n\t\t *
    • 'p' - Pagination
    • \n\t\t *
    • 'r' - pRocessing
    • \n\t\t *
    \n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aanFeatures\": [],\n\t\n\t\t/**\n\t\t * Store data information - see {@link DataTable.models.oRow} for detailed\n\t\t * information.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoData\": [],\n\t\n\t\t/**\n\t\t * Array of indexes which are in the current display (after filtering etc)\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aiDisplay\": [],\n\t\n\t\t/**\n\t\t * Array of indexes for display - no filtering\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aiDisplayMaster\": [],\n\t\n\t\t/**\n\t\t * Map of row ids to data indexes\n\t\t * @type object\n\t\t * @default {}\n\t\t */\n\t\t\"aIds\": {},\n\t\n\t\t/**\n\t\t * Store information about each column that is in use\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoColumns\": [],\n\t\n\t\t/**\n\t\t * Store information about the table's header\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoHeader\": [],\n\t\n\t\t/**\n\t\t * Store information about the table's footer\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoFooter\": [],\n\t\n\t\t/**\n\t\t * Store the applied global search information in case we want to force a\n\t\t * research or compare the old search to a new one.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @namespace\n\t\t * @extends DataTable.models.oSearch\n\t\t */\n\t\t\"oPreviousSearch\": {},\n\t\n\t\t/**\n\t\t * Store the applied search for each column - see\n\t\t * {@link DataTable.models.oSearch} for the format that is used for the\n\t\t * filtering information for each column.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoPreSearchCols\": [],\n\t\n\t\t/**\n\t\t * Sorting that is applied to the table. Note that the inner arrays are\n\t\t * used in the following manner:\n\t\t *
      \n\t\t *
    • Index 0 - column number
    • \n\t\t *
    • Index 1 - current sorting direction
    • \n\t\t *
    \n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type array\n\t\t * @todo These inner arrays should really be objects\n\t\t */\n\t\t\"aaSorting\": null,\n\t\n\t\t/**\n\t\t * Sorting that is always applied to the table (i.e. prefixed in front of\n\t\t * aaSorting).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aaSortingFixed\": [],\n\t\n\t\t/**\n\t\t * Classes to use for the striping of a table.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"asStripeClasses\": null,\n\t\n\t\t/**\n\t\t * If restoring a table - we should restore its striping classes as well\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"asDestroyStripes\": [],\n\t\n\t\t/**\n\t\t * If restoring a table - we should restore its width\n\t\t * @type int\n\t\t * @default 0\n\t\t */\n\t\t\"sDestroyWidth\": 0,\n\t\n\t\t/**\n\t\t * Callback functions array for every time a row is inserted (i.e. on a draw).\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoRowCallback\": [],\n\t\n\t\t/**\n\t\t * Callback functions for the header on each draw.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoHeaderCallback\": [],\n\t\n\t\t/**\n\t\t * Callback function for the footer on each draw.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoFooterCallback\": [],\n\t\n\t\t/**\n\t\t * Array of callback functions for draw callback functions\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoDrawCallback\": [],\n\t\n\t\t/**\n\t\t * Array of callback functions for row created function\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoRowCreatedCallback\": [],\n\t\n\t\t/**\n\t\t * Callback functions for just before the table is redrawn. A return of\n\t\t * false will be used to cancel the draw.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoPreDrawCallback\": [],\n\t\n\t\t/**\n\t\t * Callback functions for when the table has been initialised.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoInitComplete\": [],\n\t\n\t\n\t\t/**\n\t\t * Callbacks for modifying the settings to be stored for state saving, prior to\n\t\t * saving state.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoStateSaveParams\": [],\n\t\n\t\t/**\n\t\t * Callbacks for modifying the settings that have been stored for state saving\n\t\t * prior to using the stored values to restore the state.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoStateLoadParams\": [],\n\t\n\t\t/**\n\t\t * Callbacks for operating on the settings object once the saved state has been\n\t\t * loaded\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoStateLoaded\": [],\n\t\n\t\t/**\n\t\t * Cache the table ID for quick access\n\t\t * @type string\n\t\t * @default Empty string\n\t\t */\n\t\t\"sTableId\": \"\",\n\t\n\t\t/**\n\t\t * The TABLE node for the main table\n\t\t * @type node\n\t\t * @default null\n\t\t */\n\t\t\"nTable\": null,\n\t\n\t\t/**\n\t\t * Permanent ref to the thead element\n\t\t * @type node\n\t\t * @default null\n\t\t */\n\t\t\"nTHead\": null,\n\t\n\t\t/**\n\t\t * Permanent ref to the tfoot element - if it exists\n\t\t * @type node\n\t\t * @default null\n\t\t */\n\t\t\"nTFoot\": null,\n\t\n\t\t/**\n\t\t * Permanent ref to the tbody element\n\t\t * @type node\n\t\t * @default null\n\t\t */\n\t\t\"nTBody\": null,\n\t\n\t\t/**\n\t\t * Cache the wrapper node (contains all DataTables controlled elements)\n\t\t * @type node\n\t\t * @default null\n\t\t */\n\t\t\"nTableWrapper\": null,\n\t\n\t\t/**\n\t\t * Indicate if when using server-side processing the loading of data\n\t\t * should be deferred until the second draw.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\t\t\"bDeferLoading\": false,\n\t\n\t\t/**\n\t\t * Indicate if all required information has been read in\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\t\t\"bInitialised\": false,\n\t\n\t\t/**\n\t\t * Information about open rows. Each object in the array has the parameters\n\t\t * 'nTr' and 'nParent'\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoOpenRows\": [],\n\t\n\t\t/**\n\t\t * Dictate the positioning of DataTables' control elements - see\n\t\t * {@link DataTable.model.oInit.sDom}.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sDom\": null,\n\t\n\t\t/**\n\t\t * Search delay (in mS)\n\t\t * @type integer\n\t\t * @default null\n\t\t */\n\t\t\"searchDelay\": null,\n\t\n\t\t/**\n\t\t * Which type of pagination should be used.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type string\n\t\t * @default two_button\n\t\t */\n\t\t\"sPaginationType\": \"two_button\",\n\t\n\t\t/**\n\t\t * The state duration (for `stateSave`) in seconds.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type int\n\t\t * @default 0\n\t\t */\n\t\t\"iStateDuration\": 0,\n\t\n\t\t/**\n\t\t * Array of callback functions for state saving. Each array element is an\n\t\t * object with the following parameters:\n\t\t *
      \n\t\t *
    • function:fn - function to call. Takes two parameters, oSettings\n\t\t * and the JSON string to save that has been thus far created. Returns\n\t\t * a JSON string to be inserted into a json object\n\t\t * (i.e. '\"param\": [ 0, 1, 2]')
    • \n\t\t *
    • string:sName - name of callback
    • \n\t\t *
    \n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoStateSave\": [],\n\t\n\t\t/**\n\t\t * Array of callback functions for state loading. Each array element is an\n\t\t * object with the following parameters:\n\t\t *
      \n\t\t *
    • function:fn - function to call. Takes two parameters, oSettings\n\t\t * and the object stored. May return false to cancel state loading
    • \n\t\t *
    • string:sName - name of callback
    • \n\t\t *
    \n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoStateLoad\": [],\n\t\n\t\t/**\n\t\t * State that was saved. Useful for back reference\n\t\t * @type object\n\t\t * @default null\n\t\t */\n\t\t\"oSavedState\": null,\n\t\n\t\t/**\n\t\t * State that was loaded. Useful for back reference\n\t\t * @type object\n\t\t * @default null\n\t\t */\n\t\t\"oLoadedState\": null,\n\t\n\t\t/**\n\t\t * Source url for AJAX data for the table.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sAjaxSource\": null,\n\t\n\t\t/**\n\t\t * Property from a given object from which to read the table data from. This\n\t\t * can be an empty string (when not server-side processing), in which case\n\t\t * it is assumed an an array is given directly.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type string\n\t\t */\n\t\t\"sAjaxDataProp\": null,\n\t\n\t\t/**\n\t\t * Note if draw should be blocked while getting data\n\t\t * @type boolean\n\t\t * @default true\n\t\t */\n\t\t\"bAjaxDataGet\": true,\n\t\n\t\t/**\n\t\t * The last jQuery XHR object that was used for server-side data gathering.\n\t\t * This can be used for working with the XHR information in one of the\n\t\t * callbacks\n\t\t * @type object\n\t\t * @default null\n\t\t */\n\t\t\"jqXHR\": null,\n\t\n\t\t/**\n\t\t * JSON returned from the server in the last Ajax request\n\t\t * @type object\n\t\t * @default undefined\n\t\t */\n\t\t\"json\": undefined,\n\t\n\t\t/**\n\t\t * Data submitted as part of the last Ajax request\n\t\t * @type object\n\t\t * @default undefined\n\t\t */\n\t\t\"oAjaxData\": undefined,\n\t\n\t\t/**\n\t\t * Function to get the server-side data.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type function\n\t\t */\n\t\t\"fnServerData\": null,\n\t\n\t\t/**\n\t\t * Functions which are called prior to sending an Ajax request so extra\n\t\t * parameters can easily be sent to the server\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoServerParams\": [],\n\t\n\t\t/**\n\t\t * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if\n\t\t * required).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type string\n\t\t */\n\t\t\"sServerMethod\": null,\n\t\n\t\t/**\n\t\t * Format numbers for display.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type function\n\t\t */\n\t\t\"fnFormatNumber\": null,\n\t\n\t\t/**\n\t\t * List of options that can be used for the user selectable length menu.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aLengthMenu\": null,\n\t\n\t\t/**\n\t\t * Counter for the draws that the table does. Also used as a tracker for\n\t\t * server-side processing\n\t\t * @type int\n\t\t * @default 0\n\t\t */\n\t\t\"iDraw\": 0,\n\t\n\t\t/**\n\t\t * Indicate if a redraw is being done - useful for Ajax\n\t\t * @type boolean\n\t\t * @default false\n\t\t */\n\t\t\"bDrawing\": false,\n\t\n\t\t/**\n\t\t * Draw index (iDraw) of the last error when parsing the returned data\n\t\t * @type int\n\t\t * @default -1\n\t\t */\n\t\t\"iDrawError\": -1,\n\t\n\t\t/**\n\t\t * Paging display length\n\t\t * @type int\n\t\t * @default 10\n\t\t */\n\t\t\"_iDisplayLength\": 10,\n\t\n\t\t/**\n\t\t * Paging start point - aiDisplay index\n\t\t * @type int\n\t\t * @default 0\n\t\t */\n\t\t\"_iDisplayStart\": 0,\n\t\n\t\t/**\n\t\t * Server-side processing - number of records in the result set\n\t\t * (i.e. before filtering), Use fnRecordsTotal rather than\n\t\t * this property to get the value of the number of records, regardless of\n\t\t * the server-side processing setting.\n\t\t * @type int\n\t\t * @default 0\n\t\t * @private\n\t\t */\n\t\t\"_iRecordsTotal\": 0,\n\t\n\t\t/**\n\t\t * Server-side processing - number of records in the current display set\n\t\t * (i.e. after filtering). Use fnRecordsDisplay rather than\n\t\t * this property to get the value of the number of records, regardless of\n\t\t * the server-side processing setting.\n\t\t * @type boolean\n\t\t * @default 0\n\t\t * @private\n\t\t */\n\t\t\"_iRecordsDisplay\": 0,\n\t\n\t\t/**\n\t\t * Flag to indicate if jQuery UI marking and classes should be used.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type boolean\n\t\t */\n\t\t\"bJUI\": null,\n\t\n\t\t/**\n\t\t * The classes to use for the table\n\t\t * @type object\n\t\t * @default {}\n\t\t */\n\t\t\"oClasses\": {},\n\t\n\t\t/**\n\t\t * Flag attached to the settings object so you can check in the draw\n\t\t * callback if filtering has been done in the draw. Deprecated in favour of\n\t\t * events.\n\t\t * @type boolean\n\t\t * @default false\n\t\t * @deprecated\n\t\t */\n\t\t\"bFiltered\": false,\n\t\n\t\t/**\n\t\t * Flag attached to the settings object so you can check in the draw\n\t\t * callback if sorting has been done in the draw. Deprecated in favour of\n\t\t * events.\n\t\t * @type boolean\n\t\t * @default false\n\t\t * @deprecated\n\t\t */\n\t\t\"bSorted\": false,\n\t\n\t\t/**\n\t\t * Indicate that if multiple rows are in the header and there is more than\n\t\t * one unique cell per column, if the top one (true) or bottom one (false)\n\t\t * should be used for sorting / title by DataTables.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t * @type boolean\n\t\t */\n\t\t\"bSortCellsTop\": null,\n\t\n\t\t/**\n\t\t * Initialisation object that is used for the table\n\t\t * @type object\n\t\t * @default null\n\t\t */\n\t\t\"oInit\": null,\n\t\n\t\t/**\n\t\t * Destroy callback functions - for plug-ins to attach themselves to the\n\t\t * destroy so they can clean up markup and events.\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aoDestroyCallback\": [],\n\t\n\t\n\t\t/**\n\t\t * Get the number of records in the current record set, before filtering\n\t\t * @type function\n\t\t */\n\t\t\"fnRecordsTotal\": function ()\n\t\t{\n\t\t\treturn _fnDataSource( this ) == 'ssp' ?\n\t\t\t\tthis._iRecordsTotal * 1 :\n\t\t\t\tthis.aiDisplayMaster.length;\n\t\t},\n\t\n\t\t/**\n\t\t * Get the number of records in the current record set, after filtering\n\t\t * @type function\n\t\t */\n\t\t\"fnRecordsDisplay\": function ()\n\t\t{\n\t\t\treturn _fnDataSource( this ) == 'ssp' ?\n\t\t\t\tthis._iRecordsDisplay * 1 :\n\t\t\t\tthis.aiDisplay.length;\n\t\t},\n\t\n\t\t/**\n\t\t * Get the display end point - aiDisplay index\n\t\t * @type function\n\t\t */\n\t\t\"fnDisplayEnd\": function ()\n\t\t{\n\t\t\tvar\n\t\t\t\tlen = this._iDisplayLength,\n\t\t\t\tstart = this._iDisplayStart,\n\t\t\t\tcalc = start + len,\n\t\t\t\trecords = this.aiDisplay.length,\n\t\t\t\tfeatures = this.oFeatures,\n\t\t\t\tpaginate = features.bPaginate;\n\t\n\t\t\tif ( features.bServerSide ) {\n\t\t\t\treturn paginate === false || len === -1 ?\n\t\t\t\t\tstart + records :\n\t\t\t\t\tMath.min( start+len, this._iRecordsDisplay );\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn ! paginate || calc>records || len===-1 ?\n\t\t\t\t\trecords :\n\t\t\t\t\tcalc;\n\t\t\t}\n\t\t},\n\t\n\t\t/**\n\t\t * The DataTables object for this table\n\t\t * @type object\n\t\t * @default null\n\t\t */\n\t\t\"oInstance\": null,\n\t\n\t\t/**\n\t\t * Unique identifier for each instance of the DataTables object. If there\n\t\t * is an ID on the table node, then it takes that value, otherwise an\n\t\t * incrementing internal counter is used.\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"sInstance\": null,\n\t\n\t\t/**\n\t\t * tabindex attribute value that is added to DataTables control elements, allowing\n\t\t * keyboard navigation of the table and its controls.\n\t\t */\n\t\t\"iTabIndex\": 0,\n\t\n\t\t/**\n\t\t * DIV container for the footer scrolling table if scrolling\n\t\t */\n\t\t\"nScrollHead\": null,\n\t\n\t\t/**\n\t\t * DIV container for the footer scrolling table if scrolling\n\t\t */\n\t\t\"nScrollFoot\": null,\n\t\n\t\t/**\n\t\t * Last applied sort\n\t\t * @type array\n\t\t * @default []\n\t\t */\n\t\t\"aLastSort\": [],\n\t\n\t\t/**\n\t\t * Stored plug-in instances\n\t\t * @type object\n\t\t * @default {}\n\t\t */\n\t\t\"oPlugins\": {},\n\t\n\t\t/**\n\t\t * Function used to get a row's id from the row's data\n\t\t * @type function\n\t\t * @default null\n\t\t */\n\t\t\"rowIdFn\": null,\n\t\n\t\t/**\n\t\t * Data location where to store a row's id\n\t\t * @type string\n\t\t * @default null\n\t\t */\n\t\t\"rowId\": null\n\t};\n\n\t/**\n\t * Extension object for DataTables that is used to provide all extension\n\t * options.\n\t *\n\t * Note that the `DataTable.ext` object is available through\n\t * `jQuery.fn.dataTable.ext` where it may be accessed and manipulated. It is\n\t * also aliased to `jQuery.fn.dataTableExt` for historic reasons.\n\t * @namespace\n\t * @extends DataTable.models.ext\n\t */\n\t\n\t\n\t/**\n\t * DataTables extensions\n\t * \n\t * This namespace acts as a collection area for plug-ins that can be used to\n\t * extend DataTables capabilities. Indeed many of the build in methods\n\t * use this method to provide their own capabilities (sorting methods for\n\t * example).\n\t *\n\t * Note that this namespace is aliased to `jQuery.fn.dataTableExt` for legacy\n\t * reasons\n\t *\n\t * @namespace\n\t */\n\tDataTable.ext = _ext = {\n\t\t/**\n\t\t * Buttons. For use with the Buttons extension for DataTables. This is\n\t\t * defined here so other extensions can define buttons regardless of load\n\t\t * order. It is _not_ used by DataTables core.\n\t\t *\n\t\t * @type object\n\t\t * @default {}\n\t\t */\n\t\tbuttons: {},\n\t\n\t\n\t\t/**\n\t\t * Element class names\n\t\t *\n\t\t * @type object\n\t\t * @default {}\n\t\t */\n\t\tclasses: {},\n\t\n\t\n\t\t/**\n\t\t * DataTables build type (expanded by the download builder)\n\t\t *\n\t\t * @type string\n\t\t */\n\t\tbuilder: \"-source-\",\n\t\n\t\n\t\t/**\n\t\t * Error reporting.\n\t\t * \n\t\t * How should DataTables report an error. Can take the value 'alert',\n\t\t * 'throw', 'none' or a function.\n\t\t *\n\t\t * @type string|function\n\t\t * @default alert\n\t\t */\n\t\terrMode: \"alert\",\n\t\n\t\n\t\t/**\n\t\t * Feature plug-ins.\n\t\t * \n\t\t * This is an array of objects which describe the feature plug-ins that are\n\t\t * available to DataTables. These feature plug-ins are then available for\n\t\t * use through the `dom` initialisation option.\n\t\t * \n\t\t * Each feature plug-in is described by an object which must have the\n\t\t * following properties:\n\t\t * \n\t\t * * `fnInit` - function that is used to initialise the plug-in,\n\t\t * * `cFeature` - a character so the feature can be enabled by the `dom`\n\t\t * instillation option. This is case sensitive.\n\t\t *\n\t\t * The `fnInit` function has the following input parameters:\n\t\t *\n\t\t * 1. `{object}` DataTables settings object: see\n\t\t * {@link DataTable.models.oSettings}\n\t\t *\n\t\t * And the following return is expected:\n\t\t * \n\t\t * * {node|null} The element which contains your feature. Note that the\n\t\t * return may also be void if your plug-in does not require to inject any\n\t\t * DOM elements into DataTables control (`dom`) - for example this might\n\t\t * be useful when developing a plug-in which allows table control via\n\t\t * keyboard entry\n\t\t *\n\t\t * @type array\n\t\t *\n\t\t * @example\n\t\t * $.fn.dataTable.ext.features.push( {\n\t\t * \"fnInit\": function( oSettings ) {\n\t\t * return new TableTools( { \"oDTSettings\": oSettings } );\n\t\t * },\n\t\t * \"cFeature\": \"T\"\n\t\t * } );\n\t\t */\n\t\tfeature: [],\n\t\n\t\n\t\t/**\n\t\t * Row searching.\n\t\t * \n\t\t * This method of searching is complimentary to the default type based\n\t\t * searching, and a lot more comprehensive as it allows you complete control\n\t\t * over the searching logic. Each element in this array is a function\n\t\t * (parameters described below) that is called for every row in the table,\n\t\t * and your logic decides if it should be included in the searching data set\n\t\t * or not.\n\t\t *\n\t\t * Searching functions have the following input parameters:\n\t\t *\n\t\t * 1. `{object}` DataTables settings object: see\n\t\t * {@link DataTable.models.oSettings}\n\t\t * 2. `{array|object}` Data for the row to be processed (same as the\n\t\t * original format that was passed in as the data source, or an array\n\t\t * from a DOM data source\n\t\t * 3. `{int}` Row index ({@link DataTable.models.oSettings.aoData}), which\n\t\t * can be useful to retrieve the `TR` element if you need DOM interaction.\n\t\t *\n\t\t * And the following return is expected:\n\t\t *\n\t\t * * {boolean} Include the row in the searched result set (true) or not\n\t\t * (false)\n\t\t *\n\t\t * Note that as with the main search ability in DataTables, technically this\n\t\t * is \"filtering\", since it is subtractive. However, for consistency in\n\t\t * naming we call it searching here.\n\t\t *\n\t\t * @type array\n\t\t * @default []\n\t\t *\n\t\t * @example\n\t\t * // The following example shows custom search being applied to the\n\t\t * // fourth column (i.e. the data[3] index) based on two input values\n\t\t * // from the end-user, matching the data in a certain range.\n\t\t * $.fn.dataTable.ext.search.push(\n\t\t * function( settings, data, dataIndex ) {\n\t\t * var min = document.getElementById('min').value * 1;\n\t\t * var max = document.getElementById('max').value * 1;\n\t\t * var version = data[3] == \"-\" ? 0 : data[3]*1;\n\t\t *\n\t\t * if ( min == \"\" && max == \"\" ) {\n\t\t * return true;\n\t\t * }\n\t\t * else if ( min == \"\" && version < max ) {\n\t\t * return true;\n\t\t * }\n\t\t * else if ( min < version && \"\" == max ) {\n\t\t * return true;\n\t\t * }\n\t\t * else if ( min < version && version < max ) {\n\t\t * return true;\n\t\t * }\n\t\t * return false;\n\t\t * }\n\t\t * );\n\t\t */\n\t\tsearch: [],\n\t\n\t\n\t\t/**\n\t\t * Selector extensions\n\t\t *\n\t\t * The `selector` option can be used to extend the options available for the\n\t\t * selector modifier options (`selector-modifier` object data type) that\n\t\t * each of the three built in selector types offer (row, column and cell +\n\t\t * their plural counterparts). For example the Select extension uses this\n\t\t * mechanism to provide an option to select only rows, columns and cells\n\t\t * that have been marked as selected by the end user (`{selected: true}`),\n\t\t * which can be used in conjunction with the existing built in selector\n\t\t * options.\n\t\t *\n\t\t * Each property is an array to which functions can be pushed. The functions\n\t\t * take three attributes:\n\t\t *\n\t\t * * Settings object for the host table\n\t\t * * Options object (`selector-modifier` object type)\n\t\t * * Array of selected item indexes\n\t\t *\n\t\t * The return is an array of the resulting item indexes after the custom\n\t\t * selector has been applied.\n\t\t *\n\t\t * @type object\n\t\t */\n\t\tselector: {\n\t\t\tcell: [],\n\t\t\tcolumn: [],\n\t\t\trow: []\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Internal functions, exposed for used in plug-ins.\n\t\t * \n\t\t * Please note that you should not need to use the internal methods for\n\t\t * anything other than a plug-in (and even then, try to avoid if possible).\n\t\t * The internal function may change between releases.\n\t\t *\n\t\t * @type object\n\t\t * @default {}\n\t\t */\n\t\tinternal: {},\n\t\n\t\n\t\t/**\n\t\t * Legacy configuration options. Enable and disable legacy options that\n\t\t * are available in DataTables.\n\t\t *\n\t\t * @type object\n\t\t */\n\t\tlegacy: {\n\t\t\t/**\n\t\t\t * Enable / disable DataTables 1.9 compatible server-side processing\n\t\t\t * requests\n\t\t\t *\n\t\t\t * @type boolean\n\t\t\t * @default null\n\t\t\t */\n\t\t\tajax: null\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Pagination plug-in methods.\n\t\t * \n\t\t * Each entry in this object is a function and defines which buttons should\n\t\t * be shown by the pagination rendering method that is used for the table:\n\t\t * {@link DataTable.ext.renderer.pageButton}. The renderer addresses how the\n\t\t * buttons are displayed in the document, while the functions here tell it\n\t\t * what buttons to display. This is done by returning an array of button\n\t\t * descriptions (what each button will do).\n\t\t *\n\t\t * Pagination types (the four built in options and any additional plug-in\n\t\t * options defined here) can be used through the `paginationType`\n\t\t * initialisation parameter.\n\t\t *\n\t\t * The functions defined take two parameters:\n\t\t *\n\t\t * 1. `{int} page` The current page index\n\t\t * 2. `{int} pages` The number of pages in the table\n\t\t *\n\t\t * Each function is expected to return an array where each element of the\n\t\t * array can be one of:\n\t\t *\n\t\t * * `first` - Jump to first page when activated\n\t\t * * `last` - Jump to last page when activated\n\t\t * * `previous` - Show previous page when activated\n\t\t * * `next` - Show next page when activated\n\t\t * * `{int}` - Show page of the index given\n\t\t * * `{array}` - A nested array containing the above elements to add a\n\t\t * containing 'DIV' element (might be useful for styling).\n\t\t *\n\t\t * Note that DataTables v1.9- used this object slightly differently whereby\n\t\t * an object with two functions would be defined for each plug-in. That\n\t\t * ability is still supported by DataTables 1.10+ to provide backwards\n\t\t * compatibility, but this option of use is now decremented and no longer\n\t\t * documented in DataTables 1.10+.\n\t\t *\n\t\t * @type object\n\t\t * @default {}\n\t\t *\n\t\t * @example\n\t\t * // Show previous, next and current page buttons only\n\t\t * $.fn.dataTableExt.oPagination.current = function ( page, pages ) {\n\t\t * return [ 'previous', page, 'next' ];\n\t\t * };\n\t\t */\n\t\tpager: {},\n\t\n\t\n\t\trenderer: {\n\t\t\tpageButton: {},\n\t\t\theader: {}\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Ordering plug-ins - custom data source\n\t\t * \n\t\t * The extension options for ordering of data available here is complimentary\n\t\t * to the default type based ordering that DataTables typically uses. It\n\t\t * allows much greater control over the the data that is being used to\n\t\t * order a column, but is necessarily therefore more complex.\n\t\t * \n\t\t * This type of ordering is useful if you want to do ordering based on data\n\t\t * live from the DOM (for example the contents of an 'input' element) rather\n\t\t * than just the static string that DataTables knows of.\n\t\t * \n\t\t * The way these plug-ins work is that you create an array of the values you\n\t\t * wish to be ordering for the column in question and then return that\n\t\t * array. The data in the array much be in the index order of the rows in\n\t\t * the table (not the currently ordering order!). Which order data gathering\n\t\t * function is run here depends on the `dt-init columns.orderDataType`\n\t\t * parameter that is used for the column (if any).\n\t\t *\n\t\t * The functions defined take two parameters:\n\t\t *\n\t\t * 1. `{object}` DataTables settings object: see\n\t\t * {@link DataTable.models.oSettings}\n\t\t * 2. `{int}` Target column index\n\t\t *\n\t\t * Each function is expected to return an array:\n\t\t *\n\t\t * * `{array}` Data for the column to be ordering upon\n\t\t *\n\t\t * @type array\n\t\t *\n\t\t * @example\n\t\t * // Ordering using `input` node values\n\t\t * $.fn.dataTable.ext.order['dom-text'] = function ( settings, col )\n\t\t * {\n\t\t * return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) {\n\t\t * return $('input', td).val();\n\t\t * } );\n\t\t * }\n\t\t */\n\t\torder: {},\n\t\n\t\n\t\t/**\n\t\t * Type based plug-ins.\n\t\t *\n\t\t * Each column in DataTables has a type assigned to it, either by automatic\n\t\t * detection or by direct assignment using the `type` option for the column.\n\t\t * The type of a column will effect how it is ordering and search (plug-ins\n\t\t * can also make use of the column type if required).\n\t\t *\n\t\t * @namespace\n\t\t */\n\t\ttype: {\n\t\t\t/**\n\t\t\t * Type detection functions.\n\t\t\t *\n\t\t\t * The functions defined in this object are used to automatically detect\n\t\t\t * a column's type, making initialisation of DataTables super easy, even\n\t\t\t * when complex data is in the table.\n\t\t\t *\n\t\t\t * The functions defined take two parameters:\n\t\t\t *\n\t\t * 1. `{*}` Data from the column cell to be analysed\n\t\t * 2. `{settings}` DataTables settings object. This can be used to\n\t\t * perform context specific type detection - for example detection\n\t\t * based on language settings such as using a comma for a decimal\n\t\t * place. Generally speaking the options from the settings will not\n\t\t * be required\n\t\t\t *\n\t\t\t * Each function is expected to return:\n\t\t\t *\n\t\t\t * * `{string|null}` Data type detected, or null if unknown (and thus\n\t\t\t * pass it on to the other type detection functions.\n\t\t\t *\n\t\t\t * @type array\n\t\t\t *\n\t\t\t * @example\n\t\t\t * // Currency type detection plug-in:\n\t\t\t * $.fn.dataTable.ext.type.detect.push(\n\t\t\t * function ( data, settings ) {\n\t\t\t * // Check the numeric part\n\t\t\t * if ( ! $.isNumeric( data.substring(1) ) ) {\n\t\t\t * return null;\n\t\t\t * }\n\t\t\t *\n\t\t\t * // Check prefixed by currency\n\t\t\t * if ( data.charAt(0) == '$' || data.charAt(0) == '£' ) {\n\t\t\t * return 'currency';\n\t\t\t * }\n\t\t\t * return null;\n\t\t\t * }\n\t\t\t * );\n\t\t\t */\n\t\t\tdetect: [],\n\t\n\t\n\t\t\t/**\n\t\t\t * Type based search formatting.\n\t\t\t *\n\t\t\t * The type based searching functions can be used to pre-format the\n\t\t\t * data to be search on. For example, it can be used to strip HTML\n\t\t\t * tags or to de-format telephone numbers for numeric only searching.\n\t\t\t *\n\t\t\t * Note that is a search is not defined for a column of a given type,\n\t\t\t * no search formatting will be performed.\n\t\t\t * \n\t\t\t * Pre-processing of searching data plug-ins - When you assign the sType\n\t\t\t * for a column (or have it automatically detected for you by DataTables\n\t\t\t * or a type detection plug-in), you will typically be using this for\n\t\t\t * custom sorting, but it can also be used to provide custom searching\n\t\t\t * by allowing you to pre-processing the data and returning the data in\n\t\t\t * the format that should be searched upon. This is done by adding\n\t\t\t * functions this object with a parameter name which matches the sType\n\t\t\t * for that target column. This is the corollary of afnSortData\n\t\t\t * for searching data.\n\t\t\t *\n\t\t\t * The functions defined take a single parameter:\n\t\t\t *\n\t\t * 1. `{*}` Data from the column cell to be prepared for searching\n\t\t\t *\n\t\t\t * Each function is expected to return:\n\t\t\t *\n\t\t\t * * `{string|null}` Formatted string that will be used for the searching.\n\t\t\t *\n\t\t\t * @type object\n\t\t\t * @default {}\n\t\t\t *\n\t\t\t * @example\n\t\t\t * $.fn.dataTable.ext.type.search['title-numeric'] = function ( d ) {\n\t\t\t * return d.replace(/\\n/g,\" \").replace( /<.*?>/g, \"\" );\n\t\t\t * }\n\t\t\t */\n\t\t\tsearch: {},\n\t\n\t\n\t\t\t/**\n\t\t\t * Type based ordering.\n\t\t\t *\n\t\t\t * The column type tells DataTables what ordering to apply to the table\n\t\t\t * when a column is sorted upon. The order for each type that is defined,\n\t\t\t * is defined by the functions available in this object.\n\t\t\t *\n\t\t\t * Each ordering option can be described by three properties added to\n\t\t\t * this object:\n\t\t\t *\n\t\t\t * * `{type}-pre` - Pre-formatting function\n\t\t\t * * `{type}-asc` - Ascending order function\n\t\t\t * * `{type}-desc` - Descending order function\n\t\t\t *\n\t\t\t * All three can be used together, only `{type}-pre` or only\n\t\t\t * `{type}-asc` and `{type}-desc` together. It is generally recommended\n\t\t\t * that only `{type}-pre` is used, as this provides the optimal\n\t\t\t * implementation in terms of speed, although the others are provided\n\t\t\t * for compatibility with existing Javascript sort functions.\n\t\t\t *\n\t\t\t * `{type}-pre`: Functions defined take a single parameter:\n\t\t\t *\n\t\t * 1. `{*}` Data from the column cell to be prepared for ordering\n\t\t\t *\n\t\t\t * And return:\n\t\t\t *\n\t\t\t * * `{*}` Data to be sorted upon\n\t\t\t *\n\t\t\t * `{type}-asc` and `{type}-desc`: Functions are typical Javascript sort\n\t\t\t * functions, taking two parameters:\n\t\t\t *\n\t\t * 1. `{*}` Data to compare to the second parameter\n\t\t * 2. `{*}` Data to compare to the first parameter\n\t\t\t *\n\t\t\t * And returning:\n\t\t\t *\n\t\t\t * * `{*}` Ordering match: <0 if first parameter should be sorted lower\n\t\t\t * than the second parameter, ===0 if the two parameters are equal and\n\t\t\t * >0 if the first parameter should be sorted height than the second\n\t\t\t * parameter.\n\t\t\t * \n\t\t\t * @type object\n\t\t\t * @default {}\n\t\t\t *\n\t\t\t * @example\n\t\t\t * // Numeric ordering of formatted numbers with a pre-formatter\n\t\t\t * $.extend( $.fn.dataTable.ext.type.order, {\n\t\t\t * \"string-pre\": function(x) {\n\t\t\t * a = (a === \"-\" || a === \"\") ? 0 : a.replace( /[^\\d\\-\\.]/g, \"\" );\n\t\t\t * return parseFloat( a );\n\t\t\t * }\n\t\t\t * } );\n\t\t\t *\n\t\t\t * @example\n\t\t\t * // Case-sensitive string ordering, with no pre-formatting method\n\t\t\t * $.extend( $.fn.dataTable.ext.order, {\n\t\t\t * \"string-case-asc\": function(x,y) {\n\t\t\t * return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t\t * },\n\t\t\t * \"string-case-desc\": function(x,y) {\n\t\t\t * return ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t\t * }\n\t\t\t * } );\n\t\t\t */\n\t\t\torder: {}\n\t\t},\n\t\n\t\t/**\n\t\t * Unique DataTables instance counter\n\t\t *\n\t\t * @type int\n\t\t * @private\n\t\t */\n\t\t_unique: 0,\n\t\n\t\n\t\t//\n\t\t// Depreciated\n\t\t// The following properties are retained for backwards compatiblity only.\n\t\t// The should not be used in new projects and will be removed in a future\n\t\t// version\n\t\t//\n\t\n\t\t/**\n\t\t * Version check function.\n\t\t * @type function\n\t\t * @depreciated Since 1.10\n\t\t */\n\t\tfnVersionCheck: DataTable.fnVersionCheck,\n\t\n\t\n\t\t/**\n\t\t * Index for what 'this' index API functions should use\n\t\t * @type int\n\t\t * @deprecated Since v1.10\n\t\t */\n\t\tiApiIndex: 0,\n\t\n\t\n\t\t/**\n\t\t * jQuery UI class container\n\t\t * @type object\n\t\t * @deprecated Since v1.10\n\t\t */\n\t\toJUIClasses: {},\n\t\n\t\n\t\t/**\n\t\t * Software version\n\t\t * @type string\n\t\t * @deprecated Since v1.10\n\t\t */\n\t\tsVersion: DataTable.version\n\t};\n\t\n\t\n\t//\n\t// Backwards compatibility. Alias to pre 1.10 Hungarian notation counter parts\n\t//\n\t$.extend( _ext, {\n\t\tafnFiltering: _ext.search,\n\t\taTypes: _ext.type.detect,\n\t\tofnSearch: _ext.type.search,\n\t\toSort: _ext.type.order,\n\t\tafnSortData: _ext.order,\n\t\taoFeatures: _ext.feature,\n\t\toApi: _ext.internal,\n\t\toStdClasses: _ext.classes,\n\t\toPagination: _ext.pager\n\t} );\n\t\n\t\n\t$.extend( DataTable.ext.classes, {\n\t\t\"sTable\": \"dataTable\",\n\t\t\"sNoFooter\": \"no-footer\",\n\t\n\t\t/* Paging buttons */\n\t\t\"sPageButton\": \"paginate_button\",\n\t\t\"sPageButtonActive\": \"current\",\n\t\t\"sPageButtonDisabled\": \"disabled\",\n\t\n\t\t/* Striping classes */\n\t\t\"sStripeOdd\": \"odd\",\n\t\t\"sStripeEven\": \"even\",\n\t\n\t\t/* Empty row */\n\t\t\"sRowEmpty\": \"dataTables_empty\",\n\t\n\t\t/* Features */\n\t\t\"sWrapper\": \"dataTables_wrapper\",\n\t\t\"sFilter\": \"dataTables_filter\",\n\t\t\"sInfo\": \"dataTables_info\",\n\t\t\"sPaging\": \"dataTables_paginate paging_\", /* Note that the type is postfixed */\n\t\t\"sLength\": \"dataTables_length\",\n\t\t\"sProcessing\": \"dataTables_processing\",\n\t\n\t\t/* Sorting */\n\t\t\"sSortAsc\": \"sorting_asc\",\n\t\t\"sSortDesc\": \"sorting_desc\",\n\t\t\"sSortable\": \"sorting\", /* Sortable in both directions */\n\t\t\"sSortableAsc\": \"sorting_asc_disabled\",\n\t\t\"sSortableDesc\": \"sorting_desc_disabled\",\n\t\t\"sSortableNone\": \"sorting_disabled\",\n\t\t\"sSortColumn\": \"sorting_\", /* Note that an int is postfixed for the sorting order */\n\t\n\t\t/* Filtering */\n\t\t\"sFilterInput\": \"\",\n\t\n\t\t/* Page length */\n\t\t\"sLengthSelect\": \"\",\n\t\n\t\t/* Scrolling */\n\t\t\"sScrollWrapper\": \"dataTables_scroll\",\n\t\t\"sScrollHead\": \"dataTables_scrollHead\",\n\t\t\"sScrollHeadInner\": \"dataTables_scrollHeadInner\",\n\t\t\"sScrollBody\": \"dataTables_scrollBody\",\n\t\t\"sScrollFoot\": \"dataTables_scrollFoot\",\n\t\t\"sScrollFootInner\": \"dataTables_scrollFootInner\",\n\t\n\t\t/* Misc */\n\t\t\"sHeaderTH\": \"\",\n\t\t\"sFooterTH\": \"\",\n\t\n\t\t// Deprecated\n\t\t\"sSortJUIAsc\": \"\",\n\t\t\"sSortJUIDesc\": \"\",\n\t\t\"sSortJUI\": \"\",\n\t\t\"sSortJUIAscAllowed\": \"\",\n\t\t\"sSortJUIDescAllowed\": \"\",\n\t\t\"sSortJUIWrapper\": \"\",\n\t\t\"sSortIcon\": \"\",\n\t\t\"sJUIHeader\": \"\",\n\t\t\"sJUIFooter\": \"\"\n\t} );\n\t\n\t\n\t(function() {\n\t\n\t// Reused strings for better compression. Closure compiler appears to have a\n\t// weird edge case where it is trying to expand strings rather than use the\n\t// variable version. This results in about 200 bytes being added, for very\n\t// little preference benefit since it this run on script load only.\n\tvar _empty = '';\n\t_empty = '';\n\t\n\tvar _stateDefault = _empty + 'ui-state-default';\n\tvar _sortIcon = _empty + 'css_right ui-icon ui-icon-';\n\tvar _headerFooter = _empty + 'fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix';\n\t\n\t$.extend( DataTable.ext.oJUIClasses, DataTable.ext.classes, {\n\t\t/* Full numbers paging buttons */\n\t\t\"sPageButton\": \"fg-button ui-button \"+_stateDefault,\n\t\t\"sPageButtonActive\": \"ui-state-disabled\",\n\t\t\"sPageButtonDisabled\": \"ui-state-disabled\",\n\t\n\t\t/* Features */\n\t\t\"sPaging\": \"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi \"+\n\t\t\t\"ui-buttonset-multi paging_\", /* Note that the type is postfixed */\n\t\n\t\t/* Sorting */\n\t\t\"sSortAsc\": _stateDefault+\" sorting_asc\",\n\t\t\"sSortDesc\": _stateDefault+\" sorting_desc\",\n\t\t\"sSortable\": _stateDefault+\" sorting\",\n\t\t\"sSortableAsc\": _stateDefault+\" sorting_asc_disabled\",\n\t\t\"sSortableDesc\": _stateDefault+\" sorting_desc_disabled\",\n\t\t\"sSortableNone\": _stateDefault+\" sorting_disabled\",\n\t\t\"sSortJUIAsc\": _sortIcon+\"triangle-1-n\",\n\t\t\"sSortJUIDesc\": _sortIcon+\"triangle-1-s\",\n\t\t\"sSortJUI\": _sortIcon+\"carat-2-n-s\",\n\t\t\"sSortJUIAscAllowed\": _sortIcon+\"carat-1-n\",\n\t\t\"sSortJUIDescAllowed\": _sortIcon+\"carat-1-s\",\n\t\t\"sSortJUIWrapper\": \"DataTables_sort_wrapper\",\n\t\t\"sSortIcon\": \"DataTables_sort_icon\",\n\t\n\t\t/* Scrolling */\n\t\t\"sScrollHead\": \"dataTables_scrollHead \"+_stateDefault,\n\t\t\"sScrollFoot\": \"dataTables_scrollFoot \"+_stateDefault,\n\t\n\t\t/* Misc */\n\t\t\"sHeaderTH\": _stateDefault,\n\t\t\"sFooterTH\": _stateDefault,\n\t\t\"sJUIHeader\": _headerFooter+\" ui-corner-tl ui-corner-tr\",\n\t\t\"sJUIFooter\": _headerFooter+\" ui-corner-bl ui-corner-br\"\n\t} );\n\t\n\t}());\n\t\n\t\n\t\n\tvar extPagination = DataTable.ext.pager;\n\t\n\tfunction _numbers ( page, pages ) {\n\t\tvar\n\t\t\tnumbers = [],\n\t\t\tbuttons = extPagination.numbers_length,\n\t\t\thalf = Math.floor( buttons / 2 ),\n\t\t\ti = 1;\n\t\n\t\tif ( pages <= buttons ) {\n\t\t\tnumbers = _range( 0, pages );\n\t\t}\n\t\telse if ( page <= half ) {\n\t\t\tnumbers = _range( 0, buttons-2 );\n\t\t\tnumbers.push( 'ellipsis' );\n\t\t\tnumbers.push( pages-1 );\n\t\t}\n\t\telse if ( page >= pages - 1 - half ) {\n\t\t\tnumbers = _range( pages-(buttons-2), pages );\n\t\t\tnumbers.splice( 0, 0, 'ellipsis' ); // no unshift in ie6\n\t\t\tnumbers.splice( 0, 0, 0 );\n\t\t}\n\t\telse {\n\t\t\tnumbers = _range( page-half+2, page+half-1 );\n\t\t\tnumbers.push( 'ellipsis' );\n\t\t\tnumbers.push( pages-1 );\n\t\t\tnumbers.splice( 0, 0, 'ellipsis' );\n\t\t\tnumbers.splice( 0, 0, 0 );\n\t\t}\n\t\n\t\tnumbers.DT_el = 'span';\n\t\treturn numbers;\n\t}\n\t\n\t\n\t$.extend( extPagination, {\n\t\tsimple: function ( page, pages ) {\n\t\t\treturn [ 'previous', 'next' ];\n\t\t},\n\t\n\t\tfull: function ( page, pages ) {\n\t\t\treturn [ 'first', 'previous', 'next', 'last' ];\n\t\t},\n\t\n\t\tnumbers: function ( page, pages ) {\n\t\t\treturn [ _numbers(page, pages) ];\n\t\t},\n\t\n\t\tsimple_numbers: function ( page, pages ) {\n\t\t\treturn [ 'previous', _numbers(page, pages), 'next' ];\n\t\t},\n\t\n\t\tfull_numbers: function ( page, pages ) {\n\t\t\treturn [ 'first', 'previous', _numbers(page, pages), 'next', 'last' ];\n\t\t},\n\t\t\n\t\tfirst_last_numbers: function (page, pages) {\n\t \t\treturn ['first', _numbers(page, pages), 'last'];\n\t \t},\n\t\n\t\t// For testing and plug-ins to use\n\t\t_numbers: _numbers,\n\t\n\t\t// Number of number buttons (including ellipsis) to show. _Must be odd!_\n\t\tnumbers_length: 7\n\t} );\n\t\n\t\n\t$.extend( true, DataTable.ext.renderer, {\n\t\tpageButton: {\n\t\t\t_: function ( settings, host, idx, buttons, page, pages ) {\n\t\t\t\tvar classes = settings.oClasses;\n\t\t\t\tvar lang = settings.oLanguage.oPaginate;\n\t\t\t\tvar aria = settings.oLanguage.oAria.paginate || {};\n\t\t\t\tvar btnDisplay, btnClass, counter=0;\n\t\n\t\t\t\tvar attach = function( container, buttons ) {\n\t\t\t\t\tvar i, ien, node, button;\n\t\t\t\t\tvar clickHandler = function ( e ) {\n\t\t\t\t\t\t_fnPageChange( settings, e.data.action, true );\n\t\t\t\t\t};\n\t\n\t\t\t\t\tfor ( i=0, ien=buttons.length ; i' )\n\t\t\t\t\t\t\t\t.appendTo( container );\n\t\t\t\t\t\t\tattach( inner, button );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tbtnDisplay = null;\n\t\t\t\t\t\t\tbtnClass = '';\n\t\n\t\t\t\t\t\t\tswitch ( button ) {\n\t\t\t\t\t\t\t\tcase 'ellipsis':\n\t\t\t\t\t\t\t\t\tcontainer.append('');\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tcase 'first':\n\t\t\t\t\t\t\t\t\tbtnDisplay = lang.sFirst;\n\t\t\t\t\t\t\t\t\tbtnClass = button + (page > 0 ?\n\t\t\t\t\t\t\t\t\t\t'' : ' '+classes.sPageButtonDisabled);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tcase 'previous':\n\t\t\t\t\t\t\t\t\tbtnDisplay = lang.sPrevious;\n\t\t\t\t\t\t\t\t\tbtnClass = button + (page > 0 ?\n\t\t\t\t\t\t\t\t\t\t'' : ' '+classes.sPageButtonDisabled);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tcase 'next':\n\t\t\t\t\t\t\t\t\tbtnDisplay = lang.sNext;\n\t\t\t\t\t\t\t\t\tbtnClass = button + (page < pages-1 ?\n\t\t\t\t\t\t\t\t\t\t'' : ' '+classes.sPageButtonDisabled);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tcase 'last':\n\t\t\t\t\t\t\t\t\tbtnDisplay = lang.sLast;\n\t\t\t\t\t\t\t\t\tbtnClass = button + (page < pages-1 ?\n\t\t\t\t\t\t\t\t\t\t'' : ' '+classes.sPageButtonDisabled);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\tbtnDisplay = button + 1;\n\t\t\t\t\t\t\t\t\tbtnClass = page === button ?\n\t\t\t\t\t\t\t\t\t\tclasses.sPageButtonActive : '';\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\tif ( btnDisplay !== null ) {\n\t\t\t\t\t\t\t\tnode = $('', {\n\t\t\t\t\t\t\t\t\t\t'class': classes.sPageButton+' '+btnClass,\n\t\t\t\t\t\t\t\t\t\t'aria-controls': settings.sTableId,\n\t\t\t\t\t\t\t\t\t\t'aria-label': aria[ button ],\n\t\t\t\t\t\t\t\t\t\t'data-dt-idx': counter,\n\t\t\t\t\t\t\t\t\t\t'tabindex': settings.iTabIndex,\n\t\t\t\t\t\t\t\t\t\t'id': idx === 0 && typeof button === 'string' ?\n\t\t\t\t\t\t\t\t\t\t\tsettings.sTableId +'_'+ button :\n\t\t\t\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t\t.html( btnDisplay )\n\t\t\t\t\t\t\t\t\t.appendTo( container );\n\t\n\t\t\t\t\t\t\t\t_fnBindAction(\n\t\t\t\t\t\t\t\t\tnode, {action: button}, clickHandler\n\t\t\t\t\t\t\t\t);\n\t\n\t\t\t\t\t\t\t\tcounter++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\n\t\t\t\t// IE9 throws an 'unknown error' if document.activeElement is used\n\t\t\t\t// inside an iframe or frame. Try / catch the error. Not good for\n\t\t\t\t// accessibility, but neither are frames.\n\t\t\t\tvar activeEl;\n\t\n\t\t\t\ttry {\n\t\t\t\t\t// Because this approach is destroying and recreating the paging\n\t\t\t\t\t// elements, focus is lost on the select button which is bad for\n\t\t\t\t\t// accessibility. So we want to restore focus once the draw has\n\t\t\t\t\t// completed\n\t\t\t\t\tactiveEl = $(host).find(document.activeElement).data('dt-idx');\n\t\t\t\t}\n\t\t\t\tcatch (e) {}\n\t\n\t\t\t\tattach( $(host).empty(), buttons );\n\t\n\t\t\t\tif ( activeEl !== undefined ) {\n\t\t\t\t\t$(host).find( '[data-dt-idx='+activeEl+']' ).focus();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} );\n\t\n\t\n\t\n\t// Built in type detection. See model.ext.aTypes for information about\n\t// what is required from this methods.\n\t$.extend( DataTable.ext.type.detect, [\n\t\t// Plain numbers - first since V8 detects some plain numbers as dates\n\t\t// e.g. Date.parse('55') (but not all, e.g. Date.parse('22')...).\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\t\treturn _isNumber( d, decimal ) ? 'num'+decimal : null;\n\t\t},\n\t\n\t\t// Dates (only those recognised by the browser's Date.parse)\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\t// V8 tries _very_ hard to make a string passed into `Date.parse()`\n\t\t\t// valid, so we need to use a regex to restrict date formats. Use a\n\t\t\t// plug-in for anything other than ISO8601 style strings\n\t\t\tif ( d && !(d instanceof Date) && ! _re_date.test(d) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tvar parsed = Date.parse(d);\n\t\t\treturn (parsed !== null && !isNaN(parsed)) || _empty(d) ? 'date' : null;\n\t\t},\n\t\n\t\t// Formatted numbers\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\t\treturn _isNumber( d, decimal, true ) ? 'num-fmt'+decimal : null;\n\t\t},\n\t\n\t\t// HTML numeric\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\t\treturn _htmlNumeric( d, decimal ) ? 'html-num'+decimal : null;\n\t\t},\n\t\n\t\t// HTML numeric, formatted\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\t\treturn _htmlNumeric( d, decimal, true ) ? 'html-num-fmt'+decimal : null;\n\t\t},\n\t\n\t\t// HTML (this is strict checking - there must be html)\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\treturn _empty( d ) || (typeof d === 'string' && d.indexOf('<') !== -1) ?\n\t\t\t\t'html' : null;\n\t\t}\n\t] );\n\t\n\t\n\t\n\t// Filter formatting functions. See model.ext.ofnSearch for information about\n\t// what is required from these methods.\n\t// \n\t// Note that additional search methods are added for the html numbers and\n\t// html formatted numbers by `_addNumericSort()` when we know what the decimal\n\t// place is\n\t\n\t\n\t$.extend( DataTable.ext.type.search, {\n\t\thtml: function ( data ) {\n\t\t\treturn _empty(data) ?\n\t\t\t\tdata :\n\t\t\t\ttypeof data === 'string' ?\n\t\t\t\t\tdata\n\t\t\t\t\t\t.replace( _re_new_lines, \" \" )\n\t\t\t\t\t\t.replace( _re_html, \"\" ) :\n\t\t\t\t\t'';\n\t\t},\n\t\n\t\tstring: function ( data ) {\n\t\t\treturn _empty(data) ?\n\t\t\t\tdata :\n\t\t\t\ttypeof data === 'string' ?\n\t\t\t\t\tdata.replace( _re_new_lines, \" \" ) :\n\t\t\t\t\tdata;\n\t\t}\n\t} );\n\t\n\t\n\t\n\tvar __numericReplace = function ( d, decimalPlace, re1, re2 ) {\n\t\tif ( d !== 0 && (!d || d === '-') ) {\n\t\t\treturn -Infinity;\n\t\t}\n\t\n\t\t// If a decimal place other than `.` is used, it needs to be given to the\n\t\t// function so we can detect it and replace with a `.` which is the only\n\t\t// decimal place Javascript recognises - it is not locale aware.\n\t\tif ( decimalPlace ) {\n\t\t\td = _numToDecimal( d, decimalPlace );\n\t\t}\n\t\n\t\tif ( d.replace ) {\n\t\t\tif ( re1 ) {\n\t\t\t\td = d.replace( re1, '' );\n\t\t\t}\n\t\n\t\t\tif ( re2 ) {\n\t\t\t\td = d.replace( re2, '' );\n\t\t\t}\n\t\t}\n\t\n\t\treturn d * 1;\n\t};\n\t\n\t\n\t// Add the numeric 'deformatting' functions for sorting and search. This is done\n\t// in a function to provide an easy ability for the language options to add\n\t// additional methods if a non-period decimal place is used.\n\tfunction _addNumericSort ( decimalPlace ) {\n\t\t$.each(\n\t\t\t{\n\t\t\t\t// Plain numbers\n\t\t\t\t\"num\": function ( d ) {\n\t\t\t\t\treturn __numericReplace( d, decimalPlace );\n\t\t\t\t},\n\t\n\t\t\t\t// Formatted numbers\n\t\t\t\t\"num-fmt\": function ( d ) {\n\t\t\t\t\treturn __numericReplace( d, decimalPlace, _re_formatted_numeric );\n\t\t\t\t},\n\t\n\t\t\t\t// HTML numeric\n\t\t\t\t\"html-num\": function ( d ) {\n\t\t\t\t\treturn __numericReplace( d, decimalPlace, _re_html );\n\t\t\t\t},\n\t\n\t\t\t\t// HTML numeric, formatted\n\t\t\t\t\"html-num-fmt\": function ( d ) {\n\t\t\t\t\treturn __numericReplace( d, decimalPlace, _re_html, _re_formatted_numeric );\n\t\t\t\t}\n\t\t\t},\n\t\t\tfunction ( key, fn ) {\n\t\t\t\t// Add the ordering method\n\t\t\t\t_ext.type.order[ key+decimalPlace+'-pre' ] = fn;\n\t\n\t\t\t\t// For HTML types add a search formatter that will strip the HTML\n\t\t\t\tif ( key.match(/^html\\-/) ) {\n\t\t\t\t\t_ext.type.search[ key+decimalPlace ] = _ext.type.search.html;\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\t\n\t\n\t// Default sort methods\n\t$.extend( _ext.type.order, {\n\t\t// Dates\n\t\t\"date-pre\": function ( d ) {\n\t\t\treturn Date.parse( d ) || -Infinity;\n\t\t},\n\t\n\t\t// html\n\t\t\"html-pre\": function ( a ) {\n\t\t\treturn _empty(a) ?\n\t\t\t\t'' :\n\t\t\t\ta.replace ?\n\t\t\t\t\ta.replace( /<.*?>/g, \"\" ).toLowerCase() :\n\t\t\t\t\ta+'';\n\t\t},\n\t\n\t\t// string\n\t\t\"string-pre\": function ( a ) {\n\t\t\t// This is a little complex, but faster than always calling toString,\n\t\t\t// http://jsperf.com/tostring-v-check\n\t\t\treturn _empty(a) ?\n\t\t\t\t'' :\n\t\t\t\ttypeof a === 'string' ?\n\t\t\t\t\ta.toLowerCase() :\n\t\t\t\t\t! a.toString ?\n\t\t\t\t\t\t'' :\n\t\t\t\t\t\ta.toString();\n\t\t},\n\t\n\t\t// string-asc and -desc are retained only for compatibility with the old\n\t\t// sort methods\n\t\t\"string-asc\": function ( x, y ) {\n\t\t\treturn ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t},\n\t\n\t\t\"string-desc\": function ( x, y ) {\n\t\t\treturn ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t}\n\t} );\n\t\n\t\n\t// Numeric sorting types - order doesn't matter here\n\t_addNumericSort( '' );\n\t\n\t\n\t$.extend( true, DataTable.ext.renderer, {\n\t\theader: {\n\t\t\t_: function ( settings, cell, column, classes ) {\n\t\t\t\t// No additional mark-up required\n\t\t\t\t// Attach a sort listener to update on sort - note that using the\n\t\t\t\t// `DT` namespace will allow the event to be removed automatically\n\t\t\t\t// on destroy, while the `dt` namespaced event is the one we are\n\t\t\t\t// listening for\n\t\t\t\t$(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) {\n\t\t\t\t\tif ( settings !== ctx ) { // need to check this this is the host\n\t\t\t\t\t\treturn; // table, not a nested one\n\t\t\t\t\t}\n\t\n\t\t\t\t\tvar colIdx = column.idx;\n\t\n\t\t\t\t\tcell\n\t\t\t\t\t\t.removeClass(\n\t\t\t\t\t\t\tcolumn.sSortingClass +' '+\n\t\t\t\t\t\t\tclasses.sSortAsc +' '+\n\t\t\t\t\t\t\tclasses.sSortDesc\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.addClass( columns[ colIdx ] == 'asc' ?\n\t\t\t\t\t\t\tclasses.sSortAsc : columns[ colIdx ] == 'desc' ?\n\t\t\t\t\t\t\t\tclasses.sSortDesc :\n\t\t\t\t\t\t\t\tcolumn.sSortingClass\n\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t},\n\t\n\t\t\tjqueryui: function ( settings, cell, column, classes ) {\n\t\t\t\t$('
    ')\n\t\t\t\t\t.addClass( classes.sSortJUIWrapper )\n\t\t\t\t\t.append( cell.contents() )\n\t\t\t\t\t.append( $('')\n\t\t\t\t\t\t.addClass( classes.sSortIcon+' '+column.sSortingClassJUI )\n\t\t\t\t\t)\n\t\t\t\t\t.appendTo( cell );\n\t\n\t\t\t\t// Attach a sort listener to update on sort\n\t\t\t\t$(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) {\n\t\t\t\t\tif ( settings !== ctx ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tvar colIdx = column.idx;\n\t\n\t\t\t\t\tcell\n\t\t\t\t\t\t.removeClass( classes.sSortAsc +\" \"+classes.sSortDesc )\n\t\t\t\t\t\t.addClass( columns[ colIdx ] == 'asc' ?\n\t\t\t\t\t\t\tclasses.sSortAsc : columns[ colIdx ] == 'desc' ?\n\t\t\t\t\t\t\t\tclasses.sSortDesc :\n\t\t\t\t\t\t\t\tcolumn.sSortingClass\n\t\t\t\t\t\t);\n\t\n\t\t\t\t\tcell\n\t\t\t\t\t\t.find( 'span.'+classes.sSortIcon )\n\t\t\t\t\t\t.removeClass(\n\t\t\t\t\t\t\tclasses.sSortJUIAsc +\" \"+\n\t\t\t\t\t\t\tclasses.sSortJUIDesc +\" \"+\n\t\t\t\t\t\t\tclasses.sSortJUI +\" \"+\n\t\t\t\t\t\t\tclasses.sSortJUIAscAllowed +\" \"+\n\t\t\t\t\t\t\tclasses.sSortJUIDescAllowed\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.addClass( columns[ colIdx ] == 'asc' ?\n\t\t\t\t\t\t\tclasses.sSortJUIAsc : columns[ colIdx ] == 'desc' ?\n\t\t\t\t\t\t\t\tclasses.sSortJUIDesc :\n\t\t\t\t\t\t\t\tcolumn.sSortingClassJUI\n\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t} );\n\t\n\t/*\n\t * Public helper functions. These aren't used internally by DataTables, or\n\t * called by any of the options passed into DataTables, but they can be used\n\t * externally by developers working with DataTables. They are helper functions\n\t * to make working with DataTables a little bit easier.\n\t */\n\t\n\tvar __htmlEscapeEntities = function ( d ) {\n\t\treturn typeof d === 'string' ?\n\t\t\td.replace(//g, '>').replace(/\"/g, '"') :\n\t\t\td;\n\t};\n\t\n\t/**\n\t * Helpers for `columns.render`.\n\t *\n\t * The options defined here can be used with the `columns.render` initialisation\n\t * option to provide a display renderer. The following functions are defined:\n\t *\n\t * * `number` - Will format numeric data (defined by `columns.data`) for\n\t * display, retaining the original unformatted data for sorting and filtering.\n\t * It takes 5 parameters:\n\t * * `string` - Thousands grouping separator\n\t * * `string` - Decimal point indicator\n\t * * `integer` - Number of decimal points to show\n\t * * `string` (optional) - Prefix.\n\t * * `string` (optional) - Postfix (/suffix).\n\t * * `text` - Escape HTML to help prevent XSS attacks. It has no optional\n\t * parameters.\n\t *\n\t * @example\n\t * // Column definition using the number renderer\n\t * {\n\t * data: \"salary\",\n\t * render: $.fn.dataTable.render.number( '\\'', '.', 0, '$' )\n\t * }\n\t *\n\t * @namespace\n\t */\n\tDataTable.render = {\n\t\tnumber: function ( thousands, decimal, precision, prefix, postfix ) {\n\t\t\treturn {\n\t\t\t\tdisplay: function ( d ) {\n\t\t\t\t\tif ( typeof d !== 'number' && typeof d !== 'string' ) {\n\t\t\t\t\t\treturn d;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tvar negative = d < 0 ? '-' : '';\n\t\t\t\t\tvar flo = parseFloat( d );\n\t\n\t\t\t\t\t// If NaN then there isn't much formatting that we can do - just\n\t\t\t\t\t// return immediately, escaping any HTML (this was supposed to\n\t\t\t\t\t// be a number after all)\n\t\t\t\t\tif ( isNaN( flo ) ) {\n\t\t\t\t\t\treturn __htmlEscapeEntities( d );\n\t\t\t\t\t}\n\t\n\t\t\t\t\tflo = flo.toFixed( precision );\n\t\t\t\t\td = Math.abs( flo );\n\t\n\t\t\t\t\tvar intPart = parseInt( d, 10 );\n\t\t\t\t\tvar floatPart = precision ?\n\t\t\t\t\t\tdecimal+(d - intPart).toFixed( precision ).substring( 2 ):\n\t\t\t\t\t\t'';\n\t\n\t\t\t\t\treturn negative + (prefix||'') +\n\t\t\t\t\t\tintPart.toString().replace(\n\t\t\t\t\t\t\t/\\B(?=(\\d{3})+(?!\\d))/g, thousands\n\t\t\t\t\t\t) +\n\t\t\t\t\t\tfloatPart +\n\t\t\t\t\t\t(postfix||'');\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\n\t\ttext: function () {\n\t\t\treturn {\n\t\t\t\tdisplay: __htmlEscapeEntities\n\t\t\t};\n\t\t}\n\t};\n\t\n\t\n\t/*\n\t * This is really a good bit rubbish this method of exposing the internal methods\n\t * publicly... - To be fixed in 2.0 using methods on the prototype\n\t */\n\t\n\t\n\t/**\n\t * Create a wrapper function for exporting an internal functions to an external API.\n\t * @param {string} fn API function name\n\t * @returns {function} wrapped function\n\t * @memberof DataTable#internal\n\t */\n\tfunction _fnExternApiFunc (fn)\n\t{\n\t\treturn function() {\n\t\t\tvar args = [_fnSettingsFromNode( this[DataTable.ext.iApiIndex] )].concat(\n\t\t\t\tArray.prototype.slice.call(arguments)\n\t\t\t);\n\t\t\treturn DataTable.ext.internal[fn].apply( this, args );\n\t\t};\n\t}\n\t\n\t\n\t/**\n\t * Reference to internal functions for use by plug-in developers. Note that\n\t * these methods are references to internal functions and are considered to be\n\t * private. If you use these methods, be aware that they are liable to change\n\t * between versions.\n\t * @namespace\n\t */\n\t$.extend( DataTable.ext.internal, {\n\t\t_fnExternApiFunc: _fnExternApiFunc,\n\t\t_fnBuildAjax: _fnBuildAjax,\n\t\t_fnAjaxUpdate: _fnAjaxUpdate,\n\t\t_fnAjaxParameters: _fnAjaxParameters,\n\t\t_fnAjaxUpdateDraw: _fnAjaxUpdateDraw,\n\t\t_fnAjaxDataSrc: _fnAjaxDataSrc,\n\t\t_fnAddColumn: _fnAddColumn,\n\t\t_fnColumnOptions: _fnColumnOptions,\n\t\t_fnAdjustColumnSizing: _fnAdjustColumnSizing,\n\t\t_fnVisibleToColumnIndex: _fnVisibleToColumnIndex,\n\t\t_fnColumnIndexToVisible: _fnColumnIndexToVisible,\n\t\t_fnVisbleColumns: _fnVisbleColumns,\n\t\t_fnGetColumns: _fnGetColumns,\n\t\t_fnColumnTypes: _fnColumnTypes,\n\t\t_fnApplyColumnDefs: _fnApplyColumnDefs,\n\t\t_fnHungarianMap: _fnHungarianMap,\n\t\t_fnCamelToHungarian: _fnCamelToHungarian,\n\t\t_fnLanguageCompat: _fnLanguageCompat,\n\t\t_fnBrowserDetect: _fnBrowserDetect,\n\t\t_fnAddData: _fnAddData,\n\t\t_fnAddTr: _fnAddTr,\n\t\t_fnNodeToDataIndex: _fnNodeToDataIndex,\n\t\t_fnNodeToColumnIndex: _fnNodeToColumnIndex,\n\t\t_fnGetCellData: _fnGetCellData,\n\t\t_fnSetCellData: _fnSetCellData,\n\t\t_fnSplitObjNotation: _fnSplitObjNotation,\n\t\t_fnGetObjectDataFn: _fnGetObjectDataFn,\n\t\t_fnSetObjectDataFn: _fnSetObjectDataFn,\n\t\t_fnGetDataMaster: _fnGetDataMaster,\n\t\t_fnClearTable: _fnClearTable,\n\t\t_fnDeleteIndex: _fnDeleteIndex,\n\t\t_fnInvalidate: _fnInvalidate,\n\t\t_fnGetRowElements: _fnGetRowElements,\n\t\t_fnCreateTr: _fnCreateTr,\n\t\t_fnBuildHead: _fnBuildHead,\n\t\t_fnDrawHead: _fnDrawHead,\n\t\t_fnDraw: _fnDraw,\n\t\t_fnReDraw: _fnReDraw,\n\t\t_fnAddOptionsHtml: _fnAddOptionsHtml,\n\t\t_fnDetectHeader: _fnDetectHeader,\n\t\t_fnGetUniqueThs: _fnGetUniqueThs,\n\t\t_fnFeatureHtmlFilter: _fnFeatureHtmlFilter,\n\t\t_fnFilterComplete: _fnFilterComplete,\n\t\t_fnFilterCustom: _fnFilterCustom,\n\t\t_fnFilterColumn: _fnFilterColumn,\n\t\t_fnFilter: _fnFilter,\n\t\t_fnFilterCreateSearch: _fnFilterCreateSearch,\n\t\t_fnEscapeRegex: _fnEscapeRegex,\n\t\t_fnFilterData: _fnFilterData,\n\t\t_fnFeatureHtmlInfo: _fnFeatureHtmlInfo,\n\t\t_fnUpdateInfo: _fnUpdateInfo,\n\t\t_fnInfoMacros: _fnInfoMacros,\n\t\t_fnInitialise: _fnInitialise,\n\t\t_fnInitComplete: _fnInitComplete,\n\t\t_fnLengthChange: _fnLengthChange,\n\t\t_fnFeatureHtmlLength: _fnFeatureHtmlLength,\n\t\t_fnFeatureHtmlPaginate: _fnFeatureHtmlPaginate,\n\t\t_fnPageChange: _fnPageChange,\n\t\t_fnFeatureHtmlProcessing: _fnFeatureHtmlProcessing,\n\t\t_fnProcessingDisplay: _fnProcessingDisplay,\n\t\t_fnFeatureHtmlTable: _fnFeatureHtmlTable,\n\t\t_fnScrollDraw: _fnScrollDraw,\n\t\t_fnApplyToChildren: _fnApplyToChildren,\n\t\t_fnCalculateColumnWidths: _fnCalculateColumnWidths,\n\t\t_fnThrottle: _fnThrottle,\n\t\t_fnConvertToWidth: _fnConvertToWidth,\n\t\t_fnGetWidestNode: _fnGetWidestNode,\n\t\t_fnGetMaxLenString: _fnGetMaxLenString,\n\t\t_fnStringToCss: _fnStringToCss,\n\t\t_fnSortFlatten: _fnSortFlatten,\n\t\t_fnSort: _fnSort,\n\t\t_fnSortAria: _fnSortAria,\n\t\t_fnSortListener: _fnSortListener,\n\t\t_fnSortAttachListener: _fnSortAttachListener,\n\t\t_fnSortingClasses: _fnSortingClasses,\n\t\t_fnSortData: _fnSortData,\n\t\t_fnSaveState: _fnSaveState,\n\t\t_fnLoadState: _fnLoadState,\n\t\t_fnSettingsFromNode: _fnSettingsFromNode,\n\t\t_fnLog: _fnLog,\n\t\t_fnMap: _fnMap,\n\t\t_fnBindAction: _fnBindAction,\n\t\t_fnCallbackReg: _fnCallbackReg,\n\t\t_fnCallbackFire: _fnCallbackFire,\n\t\t_fnLengthOverflow: _fnLengthOverflow,\n\t\t_fnRenderer: _fnRenderer,\n\t\t_fnDataSource: _fnDataSource,\n\t\t_fnRowAttributes: _fnRowAttributes,\n\t\t_fnCalculateEnd: function () {} // Used by a lot of plug-ins, but redundant\n\t\t // in 1.10, so this dead-end function is\n\t\t // added to prevent errors\n\t} );\n\t\n\n\t// jQuery access\n\t$.fn.dataTable = DataTable;\n\n\t// Provide access to the host jQuery object (circular reference)\n\tDataTable.$ = $;\n\n\t// Legacy aliases\n\t$.fn.dataTableSettings = DataTable.settings;\n\t$.fn.dataTableExt = DataTable.ext;\n\n\t// With a capital `D` we return a DataTables API instance rather than a\n\t// jQuery object\n\t$.fn.DataTable = function ( opts ) {\n\t\treturn $(this).dataTable( opts ).api();\n\t};\n\n\t// All properties that are available to $.fn.dataTable should also be\n\t// available on $.fn.DataTable\n\t$.each( DataTable, function ( prop, val ) {\n\t\t$.fn.DataTable[ prop ] = val;\n\t} );\n\n\n\t// Information about events fired by DataTables - for documentation.\n\t/**\n\t * Draw event, fired whenever the table is redrawn on the page, at the same\n\t * point as fnDrawCallback. This may be useful for binding events or\n\t * performing calculations when the table is altered at all.\n\t * @name DataTable#draw.dt\n\t * @event\n\t * @param {event} e jQuery event object\n\t * @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Search event, fired when the searching applied to the table (using the\n\t * built-in global search, or column filters) is altered.\n\t * @name DataTable#search.dt\n\t * @event\n\t * @param {event} e jQuery event object\n\t * @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Page change event, fired when the paging of the table is altered.\n\t * @name DataTable#page.dt\n\t * @event\n\t * @param {event} e jQuery event object\n\t * @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Order event, fired when the ordering applied to the table is altered.\n\t * @name DataTable#order.dt\n\t * @event\n\t * @param {event} e jQuery event object\n\t * @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * DataTables initialisation complete event, fired when the table is fully\n\t * drawn, including Ajax data loaded, if Ajax data is required.\n\t * @name DataTable#init.dt\n\t * @event\n\t * @param {event} e jQuery event object\n\t * @param {object} oSettings DataTables settings object\n\t * @param {object} json The JSON object request from the server - only\n\t * present if client-side Ajax sourced data is used\n\t */\n\n\t/**\n\t * State save event, fired when the table has changed state a new state save\n\t * is required. This event allows modification of the state saving object\n\t * prior to actually doing the save, including addition or other state\n\t * properties (for plug-ins) or modification of a DataTables core property.\n\t * @name DataTable#stateSaveParams.dt\n\t * @event\n\t * @param {event} e jQuery event object\n\t * @param {object} oSettings DataTables settings object\n\t * @param {object} json The state information to be saved\n\t */\n\n\t/**\n\t * State load event, fired when the table is loading state from the stored\n\t * data, but prior to the settings object being modified by the saved state\n\t * - allowing modification of the saved state is required or loading of\n\t * state for a plug-in.\n\t * @name DataTable#stateLoadParams.dt\n\t * @event\n\t * @param {event} e jQuery event object\n\t * @param {object} oSettings DataTables settings object\n\t * @param {object} json The saved state information\n\t */\n\n\t/**\n\t * State loaded event, fired when state has been loaded from stored data and\n\t * the settings object has been modified by the loaded data.\n\t * @name DataTable#stateLoaded.dt\n\t * @event\n\t * @param {event} e jQuery event object\n\t * @param {object} oSettings DataTables settings object\n\t * @param {object} json The saved state information\n\t */\n\n\t/**\n\t * Processing event, fired when DataTables is doing some kind of processing\n\t * (be it, order, searcg or anything else). It can be used to indicate to\n\t * the end user that there is something happening, or that something has\n\t * finished.\n\t * @name DataTable#processing.dt\n\t * @event\n\t * @param {event} e jQuery event object\n\t * @param {object} oSettings DataTables settings object\n\t * @param {boolean} bShow Flag for if DataTables is doing processing or not\n\t */\n\n\t/**\n\t * Ajax (XHR) event, fired whenever an Ajax request is completed from a\n\t * request to made to the server for new data. This event is called before\n\t * DataTables processed the returned data, so it can also be used to pre-\n\t * process the data returned from the server, if needed.\n\t *\n\t * Note that this trigger is called in `fnServerData`, if you override\n\t * `fnServerData` and which to use this event, you need to trigger it in you\n\t * success function.\n\t * @name DataTable#xhr.dt\n\t * @event\n\t * @param {event} e jQuery event object\n\t * @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t * @param {object} json JSON returned from the server\n\t *\n\t * @example\n\t * // Use a custom property returned from the server in another DOM element\n\t * $('#table').dataTable().on('xhr.dt', function (e, settings, json) {\n\t * $('#status').html( json.status );\n\t * } );\n\t *\n\t * @example\n\t * // Pre-process the data returned from the server\n\t * $('#table').dataTable().on('xhr.dt', function (e, settings, json) {\n\t * for ( var i=0, ien=json.aaData.length ; iSome text\n\t\t\t\tSpecial notes:\t\twhen using selector you must provide a valid selector string for the html_data_selector property\n\n* html_data_selector\n\t\t\t\tRequired:\t\t\tfalse\n\t\t\t\tType:\t\t\t\tString\n\t\t\t\tDefault value:\t\tundefined\n\t\t\t\tPossible values:\tany valid selector string, for example 'li:eq(1)'\n\t\t\t\tDescription:\t\tallows for advanced text value selection within the html located in the td element\n\t\t\t\tSpecial notes:\t\tknow that the selector string \"begin is search\" from (and not outside) the first element of the html inside the td\n\t\t\t\t\t\t\t\t\t(supported by range_number_slider / select / auto_complete)\n\t\t\t\t\n* html5_data\n\t\t\t\tRequired:\t\t\tfalse\n\t\t\t\tType:\t\t\t\tString\n\t\t\t\tDefault value:\t\tundefined\n\t\t\t\tPossible values:\tdata-filter / data-search / anything that is supported by datatables\n\t\t\t\tDescription:\t\tAllows to filter based on data-filter / data-search attributes of the
    ' +\n\t\t\t\t(this.isRTL ? '' : this.renderHeadIntroHtml()) +\n\t\t\t\tthis.renderHeadDateCellsHtml() +\n\t\t\t\t(this.isRTL ? this.renderHeadIntroHtml() : '') +\n\t\t\t'';\n\t},\n\n\n\trenderHeadDateCellsHtml: function() {\n\t\tvar htmls = [];\n\t\tvar col, date;\n\n\t\tfor (col = 0; col < this.colCnt; col++) {\n\t\t\tdate = this.getCellDate(0, col);\n\t\t\thtmls.push(this.renderHeadDateCellHtml(date));\n\t\t}\n\n\t\treturn htmls.join('');\n\t},\n\n\n\t// TODO: when internalApiVersion, accept an object for HTML attributes\n\t// (colspan should be no different)\n\trenderHeadDateCellHtml: function(date, colspan, otherAttrs) {\n\t\tvar view = this.view;\n\t\tvar classNames = [\n\t\t\t'fc-day-header',\n\t\t\tview.widgetHeaderClass\n\t\t];\n\n\t\t// if only one row of days, the classNames on the header can represent the specific days beneath\n\t\tif (this.rowCnt === 1) {\n\t\t\tclassNames = classNames.concat(\n\t\t\t\t// includes the day-of-week class\n\t\t\t\t// noThemeHighlight=true (don't highlight the header)\n\t\t\t\tthis.getDayClasses(date, true)\n\t\t\t);\n\t\t}\n\t\telse {\n\t\t\tclassNames.push('fc-' + dayIDs[date.day()]); // only add the day-of-week class\n\t\t}\n\n\t\treturn '' +\n '';\n\t},\n\n\n\t/* Background Rendering\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trenderBgTrHtml: function(row) {\n\t\treturn '' +\n\t\t\t'' +\n\t\t\t\t(this.isRTL ? '' : this.renderBgIntroHtml(row)) +\n\t\t\t\tthis.renderBgCellsHtml(row) +\n\t\t\t\t(this.isRTL ? this.renderBgIntroHtml(row) : '') +\n\t\t\t'';\n\t},\n\n\n\trenderBgIntroHtml: function(row) {\n\t\treturn this.renderIntroHtml(); // fall back to generic\n\t},\n\n\n\trenderBgCellsHtml: function(row) {\n\t\tvar htmls = [];\n\t\tvar col, date;\n\n\t\tfor (col = 0; col < this.colCnt; col++) {\n\t\t\tdate = this.getCellDate(row, col);\n\t\t\thtmls.push(this.renderBgCellHtml(date));\n\t\t}\n\n\t\treturn htmls.join('');\n\t},\n\n\n\trenderBgCellHtml: function(date, otherAttrs) {\n\t\tvar view = this.view;\n\t\tvar classes = this.getDayClasses(date);\n\n\t\tclasses.unshift('fc-day', view.widgetContentClass);\n\n\t\treturn '';\n\t},\n\n\n\t/* Generic\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Generates the default HTML intro for any row. User classes should override\n\trenderIntroHtml: function() {\n\t},\n\n\n\t// TODO: a generic method for dealing with , RTL, intro\n\t// when increment internalApiVersion\n\t// wrapTr (scheduler)\n\n\n\t/* Utils\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Applies the generic \"intro\" and \"outro\" HTML to the given cells.\n\t// Intro means the leftmost cell when the calendar is LTR and the rightmost cell when RTL. Vice-versa for outro.\n\tbookendCells: function(trEl) {\n\t\tvar introHtml = this.renderIntroHtml();\n\n\t\tif (introHtml) {\n\t\t\tif (this.isRTL) {\n\t\t\t\ttrEl.append(introHtml);\n\t\t\t}\n\t\t\telse {\n\t\t\t\ttrEl.prepend(introHtml);\n\t\t\t}\n\t\t}\n\t}\n\n};\n\n;;\n\n/* A component that renders a grid of whole-days that runs horizontally. There can be multiple rows, one per week.\n----------------------------------------------------------------------------------------------------------------------*/\n\nvar DayGrid = FC.DayGrid = Grid.extend(DayTableMixin, {\n\n\tnumbersVisible: false, // should render a row for day/week numbers? set by outside view. TODO: make internal\n\tbottomCoordPadding: 0, // hack for extending the hit area for the last row of the coordinate grid\n\n\trowEls: null, // set of fake row elements\n\tcellEls: null, // set of whole-day elements comprising the row's background\n\thelperEls: null, // set of cell skeleton elements for rendering the mock event \"helper\"\n\n\trowCoordCache: null,\n\tcolCoordCache: null,\n\n\n\t// Renders the rows and columns into the component's `this.el`, which should already be assigned.\n\t// isRigid determins whether the individual rows should ignore the contents and be a constant height.\n\t// Relies on the view's colCnt and rowCnt. In the future, this component should probably be self-sufficient.\n\trenderDates: function(isRigid) {\n\t\tvar view = this.view;\n\t\tvar rowCnt = this.rowCnt;\n\t\tvar colCnt = this.colCnt;\n\t\tvar html = '';\n\t\tvar row;\n\t\tvar col;\n\n\t\tfor (row = 0; row < rowCnt; row++) {\n\t\t\thtml += this.renderDayRowHtml(row, isRigid);\n\t\t}\n\t\tthis.el.html(html);\n\n\t\tthis.rowEls = this.el.find('.fc-row');\n\t\tthis.cellEls = this.el.find('.fc-day');\n\n\t\tthis.rowCoordCache = new CoordCache({\n\t\t\tels: this.rowEls,\n\t\t\tisVertical: true\n\t\t});\n\t\tthis.colCoordCache = new CoordCache({\n\t\t\tels: this.cellEls.slice(0, this.colCnt), // only the first row\n\t\t\tisHorizontal: true\n\t\t});\n\n\t\t// trigger dayRender with each cell's element\n\t\tfor (row = 0; row < rowCnt; row++) {\n\t\t\tfor (col = 0; col < colCnt; col++) {\n\t\t\t\tview.publiclyTrigger(\n\t\t\t\t\t'dayRender',\n\t\t\t\t\tnull,\n\t\t\t\t\tthis.getCellDate(row, col),\n\t\t\t\t\tthis.getCellEl(row, col)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t},\n\n\n\tunrenderDates: function() {\n\t\tthis.removeSegPopover();\n\t},\n\n\n\trenderBusinessHours: function() {\n\t\tvar segs = this.buildBusinessHourSegs(true); // wholeDay=true\n\t\tthis.renderFill('businessHours', segs, 'bgevent');\n\t},\n\n\n\tunrenderBusinessHours: function() {\n\t\tthis.unrenderFill('businessHours');\n\t},\n\n\n\t// Generates the HTML for a single row, which is a div that wraps a table.\n\t// `row` is the row number.\n\trenderDayRowHtml: function(row, isRigid) {\n\t\tvar view = this.view;\n\t\tvar classes = [ 'fc-row', 'fc-week', view.widgetContentClass ];\n\n\t\tif (isRigid) {\n\t\t\tclasses.push('fc-rigid');\n\t\t}\n\n\t\treturn '' +\n\t\t\t'
    ' +\n\t\t\t\t'
    ' +\n\t\t\t\t\t'
    element, read more: http://www.datatables.net/examples/advanced_init/html5-data-attributes.html\n\t\t\t\t\n* filter_container_id\n\t\t\t\tRequired:\t\t\tfalse\n\t\t\t\tType:\t\t\t\tString\n\t\t\t\tDescription:\t\tIn case that user don't want to place the filter in column header , he can pass an id of the desired container for the column filter \n\t\t\n* filter_default_label\n\t\t\t\tRequired:\t\t\tfalse\n\t\t\t\tType:\t\t\t\tString / Array of string in case of range_number filter (first entry is for the first input and the second entry is for the second input\n\t\t\t\tDefault value:\t\tSelect value\n\t\t\t\tDescription:\t\tThe label that will appear in the select menu filter when no value is selected from the filter\n\t\t\t\t\t\t\t\t\t\n* filter_reset_button_text\n\t\t\t\tRequired:\t\t\tfalse\n\t\t\t\tType:\t\t\t\tString / boolean\n\t\t\t\tDefault value:\t\tx\n\t\t\t\tDescription:\t\tThe text that will appear inside the reset button next to the select drop down (set this to false (boolean) in order to hide it from that column filter)\n\n* enable_auto_complete (this attribute is deprecated , and will become obsolete in the future , so you better start using filter_type: \"auto_complete\")\n\t\t\t\tRequired:\t\t\tfalse\n\t\t\t\tType:\t\t\t\tboolean\n\t\t\t\tDefault value:\t\tfalse\n\t\t\t\tDescription:\t\tTurns the filter into an autocomplete input - make use of the jQuery UI Autocomplete widget (with some enhancements)\n\n* sort_as\n\t\t\t\tRequired:\t\t\tfalse\n\t\t\t\tType:\t\t\t\tString\n\t\t\t\tDefault value:\t\talpha\n\t\t\t\tPossible values:\talpha / num / alphaNum / none\n\t\t\t\tDescription:\t\tDefines how the values in the filter will be sorted, alphabetically / numerically / alphanumeric / custom / not sorted at all (none is useful to preserve\n\t\t\t\t\t\t\t\t\tthe order of the data attribute as is)\n\t\t\t\tNote:\t\t\t\tWhen custom value is set you must provide a custom sorting function for the sort_as_custom_func property\n\n* sort_as_custom_func\n\t\t\t\tRequired:\t\t\tfalse\n\t\t\t\tType:\t\t\t\tfunction\n\t\t\t\tDefault value:\t\tundefined\n\t\t\t\tDescription:\t\tAllows to provide a custom sorting function for the filter elements\n\t\t\t\t\n* sort_order\n\t\t\t\tRequired:\t\t\tfalse\n\t\t\t\tType:\t\t\t\tString\n\t\t\t\tDefault value:\t\tasc\n\t\t\t\tPossible values:\tasc / desc\n\t\t\t\tDescription:\t\tDefines the order in which the values in the filter will be sorted, ascending or descending\n\n* date_format\n\t\t\t\tRequired:\t\t\tfalse\n\t\t\t\tType:\t\t\t\tString\n\t\t\t\tDefault value:\t\tmm/dd/yyyy\n\t\t\t\tPossible values:\tmm/dd/yyyy / dd/mm/yyyy (eventually I replace yyyy into yy for jquery datepicker)\n\t\t\t\tDescription:\t\tDefines the format in which the date values are being parsed into Date object\n\t\t\t\tNote:\t\t\t\tYou can replace the / separator with other one , for example mm-dd-yy\n\n* ignore_char\n\t\t\t\tRequired:\t\t\tfalse\n\t\t\t\tType:\t\t\t\tString\n\t\t\t\tDescription:\t\tTells the range_number and range_number_slide to ignore specific char while filtering (that char can used as number separator)\n\t\t\t\tNote:\t\t\t\tUse double escape for regex chars , e.g \\\\$ , also you can use multiple ignore chars with | , e.g '_|\\\\.|\\\\$'\n\t\t\t\t\n* filter_match_mode\n\t\t\t\tRequired:\t\t\tfalse\n\t\t\t\tType:\t\t\t\tString\n\t\t\t\tDefault value:\t\tcontains\n\t\t\t\tPossible values:\tcontains / exact / startsWith / regex\n\t\t\t\tDescription:\t\tAllows to control the matching mode of the filter (supported in select / auto_complete / text filters)\n\n* exclude\n\t\t\t\tRequired:\t\t\tfalse\n\t\t\t\tType:\t\t\t\tboolean\n\t\t\t\tDefault value:\t\tundefined\n\t\t\t\tDescription:\t\tAdds a checkbox next to the filter that allows to do a \"not/exclude\" filtering (acts the same all filter_match_mode)\n\t\t\t\tNote:\t\t\t\tCurrently available for the text filter\n\t\t\t\t\n* exclude_label\n\t\t\t\tRequired:\t\t\tfalse\n\t\t\t\tType:\t\t\t\tstring\n\t\t\t\tDefault value:\t\texclude\n\t\t\t\tDescription:\t\tThe label that will appear above the exclude checkbox\n\t\t\t\t\t\n* select_type\n\t\t\t\tRequired:\t\t\tfalse\n\t\t\t\tType:\t\t\t\tString\n\t\t\t\tDefault value:\t\tundefined\n\t\t\t\tPossible values:\tchosen / select2 \n\t\t\t\tDescription:\t\tTurns the simple select element into Chosen / Select2 (make use of the Chosen / Select2 select jQuery plugins)\n\t\t\t\t\n\t\t\t\t\n* select_type_options\n\t\t\t\tRequired:\t\t\tfalse\n\t\t\t\tType:\t\t\t\tObject\n\t\t\t\tDefault value:\t\t{}\n\t\t\t\tDescription:\t\tThis parameter will be passed \"as is\" to the Chosen/Select2 plugin constructor\n\t\t\t\t\n\t\t\t\t\n* filter_plugin_options\n\t\t\t\tRequired:\t\t\tfalse\n\t\t\t\tType:\t\t\t\tObject\n\t\t\t\tDefault value:\t\tundefined\n\t\t\t\tDescription:\t\tThis parameter will be passed to the jQuery Autocomplete plugin constructor\n\t\t\t\t\n* case_insensitive\n\t\t\t\tRequired:\t\t\tfalse\n\t\t\t\tType:\t\t\t\tboolean\n\t\t\t\tDefault value:\t\ttrue\n\t\t\t\tDescription:\t\tDo case-insensitive filtering (supported in select / auto_complete / text filters)\n\n\n* filter_delay\n\t\t\t\tRequired:\t\t\tfalse\n\t\t\t\tType:\t\t\t\tinteger\n\t\t\t\tDefault value:\t\tundefined\n\t\t\t\tDescription:\t\tDelay filter execution for a XXX milliseconds - filter will fire XXX milliseconds after the last keyup.\n\t\t\t\tSpecial notes:\t\tCurrently supported in text / range_number / range_date filters / range_number_slider\n\n*\t\t\t\t\n*\t\t\t\t\n*\t\t\t\t\n* External API functions:\n*\n*\t\t\t\t\t\n* -------------\t\t\t\t\n\n* exFilterColumn\n\t\t\t\tDescription:\t\tAllows to trigger filter/s externally/programmatically (support ALL filter types!!!) , perfect for showing table with pre filtered columns\n\t\t\t\tArguments:\t\t\ttable_arg: (variable of the datatable), \n\t\t\t\t\t\t\t\t\tarray of pairs: column number String/Object with from and to, filter_value (the actual string value that we want to filter by)\n\t\t\t\tUsage example:\t\tyadcf.exFilterColumn(oTable, [[0, 'Some Data 2']]); //pre filter one column\n\t\t\t\t\t\t\t\t\tyadcf.exFilterColumn(oTable, [[0, 'Some Data 1'], [1, {from: 111, to: 1110}], [2, {from: \"\", to: \"11/25/2014\"}]]); //pre filter several columns\n\t\t\t\t\t\t\t\t\tyadcf.exFilterColumn(oTable, [[0, ['Some Data 1','Some Data 2']]]); // for pre filtering multi select filter you should use array with values (or an array with single value)\n\n* exGetColumnFilterVal\t\t\t\t\t\t\t\t\t\n\t\t\t\tDescription:\t\tAllows to retrieve column current filtered value (support ALL filter types!!!)\n\t\t\t\tArguments:\t\t\ttable_arg: (variable of the datatable), \n\t\t\t\t\t\t\t\t\tcolumn number: column number from which we want the value\n\t\t\t\tUsage example:\t\tyadcf.exGetColumnFilterVal(oTable,1);\n\t\t\t\tReturn value:\t\tString (for simple filter) / Object (for range filter) with from and to properties / Array of strings for multi_select filter\n\n\t\t\t\t\n* exResetAllFilters\n\t\t\t\tDescription:\t\tAllows to reset all filters externally/programmatically (support ALL filter types!!!) , perfect for adding a \"reset all\" button to your page!\n\t\t\t\tArguments:\t\t\ttable_arg: (variable of the datatable)\n\t\t\t\t\t\t\t\t\tnoRedraw:\t(boolean) , use it if you don't want your table to be reloaded after the filter reset, \n\t\t\t\t\t\t\t\t\t\t\t\tfor example if you planning to call exFilterColumn function right after the exResetAllFilters (to avoid two AJAX requests)\n\t\t\t\tUsage example:\t\tyadcf.exResetAllFilters(oTable);\n\t\t\t\t\t\t\t\t\t\n* exResetFilters\n\t\t\t\tDescription:\t\tAllows to reset specific filters externally/programmatically (support ALL filter types!!!) , can be used for resetting one or more filters\n\t\t\t\tArguments:\t\t\ttable_arg: (variable of the datatable)\t\n\t\t\t\t\t\t\t\t\tarray with columns numbers \n\t\t\t\tUsage example:\t\tyadcf.exResetAllFilters(oTable, [1,2]);\n\t\t\t\t\t\t\t\t\t\n*\n*\t\t\t\t\n*\t\t\t\t\n* Server-side processing API (see more on showcase):\n* \n* From server to client:\n* In order to populate the filters with data from server (select / auto_complete / range_number_slider (min and max values), you should add to your current json respond the following properties: \n* lets say for first column you add yadcf_data_0 filled with array of values, for column second column yadcf_data_1 and so on...\n* \n* From client to server:\n* Read the filtered value like this (for first column) req.getParameter(\"columns[0][search][value]\"); <- java code , php/.Net/etc you just need to get it from the request\n* Range filter value will arrive delimited by -yadcf_delim- , so just split it into an array or something like this: String[] minMax = sSearch_0.split(\"-yadcf_delim-\");\n*\n*\t\t\t\t\t\n* Filters position\n*\n*\t\t\t\t\t\n* -------------\n\n* Filters can be placed in the header (thead) or in the footer (tfoot) , it is defined by the second argument of yadcf constructor \n or third argument of init function. Header location is the default position, use 'footer' in order to place the filters in the tfoot position\n\n\n*\t\t\t\t\n*\t\t\t\t\n*\t\t\t\t\n* Working with filters for multiple tables:\n*\n*\t\t\t\t\t\n* -------------\t\t\t\t\n\n* initMultipleTables\n\t\t\t\tDescription:\t\tAllows to create filter that will affect multiple tables / multiple column(s) in multiple tables\n\t\t\t\tArguments:\t\t\tArray of tables,\n\t\t\t\t\t\t\t\t\tArray of objects with properties for each filter\n\t\t\t\tUsage example:\t\tyadcf.initMultipleTables([oTable, oTable2], [{\n\t\t\t\t\t\t\t\t\t\tcolumn_number: [0, 1], filter_container_id: 'multi-table-filter-0', filter_default_label: 'Filter all tables columns 1 and 2!'\n\t\t\t\t\t\t\t\t\t},\t\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcolumn_number: [2], filter_container_id: 'multi-table-filter-1', filter_default_label: 'Filter all tables column 3!'\n\t\t\t\t\t\t\t\t\t}]);\n\t\t\t\tValid properties:\tfilter_type: 'text' (default) / 'select',\n\t\t\t\t\t\t\t\t\tcolumn_number: not required (in that case the filter will be global)\n\t\t\t\t\t\t\t\t\t\t\t\t can be either number(single column filter) or array of numbers(multiple columns filter)\n\t\t\t\t\t\t\t\t\tfilter_container_id: '' (required),\n\t\t\t\tNote:\t\t\t\tAll the usual properties of yadcf should be supported in initMultipleTables too!\n\n* initMultipleColumns\t\t\t\n\t\t\t\tDescription:\t\tAllows to create filter that will affect multiple column(s) in in a particular table\n\t\t\t\tArguments:\t\t\tTable variable,\n\t\t\t\t\t\t\t\t\tArray of objects with properties for each filter\n\t\t\t\tUsage example:\t\tyadcf.initMultipleColumns(oTable, [{\n\t\t\t\t\t\t\t\t\t\tcolumn_number: [0, 1], filter_container_id: 'multi-table-filter-0', filter_default_label: 'Filter columns 1 and 2!'\n\t\t\t\t\t\t\t\t\t},\t\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcolumn_number: [2, 3], filter_container_id: 'multi-table-filter-1', filter_default_label: 'Filter column 3 and 4!'\n\t\t\t\t\t\t\t\t\t}]);\n\t\t\t\tValid properties:\tfilter_type: 'text' (default) / 'select',\n\t\t\t\t\t\t\t\t\tcolumn_number: not required (in that case the filter will be global)\n\t\t\t\t\t\t\t\t\t\t\t\t can be either number(single column filter) or array of numbers(multiple columns filter)\n\t\t\t\t\t\t\t\t\tfilter_container_id: '' (required),\n\t\t\t\tNote:\t\t\t\tAll the usual properties of yadcf should be supported in initMultipleColumns too!\t\n*/\nvar yadcf = (function ($) {\n\n\t'use strict';\n\n\tvar tablesDT = {},\n\t\toTables = {},\n\t\toTablesIndex = {},\n\t\toptions = {},\n\t\tplugins = {},\n\t\texFilterColumnQueue = [],\n\t\tyadcfDelay,\n\t\treA = /[^a-zA-Z]/g,\n\t\treN = /[^0-9]/g;\n\n\t//From ColReorder (SpryMedia Ltd (www.sprymedia.co.uk))\n\tfunction getSettingsObjFromTable(dt) {\n\t\tvar oDTSettings;\n\t\tif ($.fn.dataTable.Api) {\n\t\t\toDTSettings = new $.fn.dataTable.Api(dt).settings()[0];\n\t\t} else if (dt.fnSettings) {// 1.9 compatibility\n\t\t\t// DataTables object, convert to the settings object\n\t\t\toDTSettings = dt.fnSettings();\n\t\t} else if (typeof dt === 'string') {// jQuery selector\n\t\t\tif ($.fn.dataTable.fnIsDataTable($(dt)[0])) {\n\t\t\t\toDTSettings = $(dt).eq(0).dataTable().fnSettings();\n\t\t\t}\n\t\t} else if (dt.nodeName && dt.nodeName.toLowerCase() === 'table') {\n\t\t\t// Table node\n\t\t\tif ($.fn.dataTable.fnIsDataTable(dt.nodeName)) {\n\t\t\t\toDTSettings = $(dt.nodeName).dataTable().fnSettings();\n\t\t\t}\n\t\t} else if (dt instanceof jQuery) {\n\t\t\t// jQuery object\n\t\t\tif ($.fn.dataTable.fnIsDataTable(dt[0])) {\n\t\t\t\toDTSettings = dt.eq(0).dataTable().fnSettings();\n\t\t\t}\n\t\t} else {\n\t\t\t// DataTables settings object\n\t\t\toDTSettings = dt;\n\t\t}\n\t\treturn oDTSettings;\n\t}\n\n\tfunction arraySwapValueWithIndex(pArray) {\n\t\tvar tmp = [],\n\t\t\ti;\n\t\tfor (i = 0; i < pArray.length; i++) {\n\t\t\ttmp[pArray[i]] = i;\n\t\t}\n\t\treturn tmp;\n\t}\n\n\tfunction initColReorder(state, table_selector_jq_friendly) {\n\t\tif (state != undefined && state.ColReorder !== undefined) {\n\t\t\tif (plugins[table_selector_jq_friendly] === undefined) {\n\t\t\t\tplugins[table_selector_jq_friendly] = {};\n\t\t\t\tplugins[table_selector_jq_friendly].ColReorder = arraySwapValueWithIndex(state.ColReorder);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction initColReorderFromEvent(table_selector_jq_friendly) {\n\t\tplugins[table_selector_jq_friendly] = undefined;\n\t}\n\n\tfunction columnsArrayToString(column_number) {\n\t\tvar column_number_obj = {};\n\t\tif (column_number !== undefined) {\n\t\t\tif (column_number instanceof Array) {\n\t\t\t\tcolumn_number_obj.column_number_str = column_number.join('_');\n\t\t\t} else {\n\t\t\t\tcolumn_number_obj.column_number_str = column_number;\n\t\t\t\tcolumn_number = [];\n\t\t\t\tcolumn_number.push(column_number_obj.column_number_str);\n\t\t\t}\n\t\t} else {\n\t\t\tcolumn_number_obj.column_number_str = 'global';\n\t\t}\n\t\tcolumn_number_obj.column_number = column_number;\n\t\treturn column_number_obj;\n\t}\n\n\tfunction getOptions(selector) {\n\t\treturn options[selector];\n\t}\n\n\tfunction eventTargetFixUp(pEvent) {\n\t\tif (pEvent.target === undefined) {\n pEvent.target = pEvent.srcElement;\n }\n\t\treturn pEvent;\n\t}\n\n\tfunction dot2obj(tmpObj, dot_refs) {\n\t\tvar i = 0;\n\t\tdot_refs = dot_refs.split(\".\");\n\t\tfor (i = 0; i < dot_refs.length; i++) {\n\t\t\ttmpObj = tmpObj[dot_refs[i]];\n\t\t}\n\t\treturn tmpObj;\n\t}\n\n\tfunction setOptions(selector_arg, options_arg, params) {\n\t\tvar tmpOptions = {},\n\t\t\ti,\n\t\t\tj,\n\t\t\tcol_num_as_int,\n\t\t\tdefault_options = {\n\t\t\t\tfilter_type : \"select\",\n\t\t\t\tenable_auto_complete : false,\n\t\t\t\tsort_as : \"alpha\",\n\t\t\t\tsort_order : \"asc\",\n\t\t\t\tdate_format : \"mm/dd/yyyy\",\n\t\t\t\tignore_char : undefined,\n\t\t\t\tfilter_match_mode : \"contains\",\n\t\t\t\tselect_type : undefined,\n\t\t\t\tselect_type_options : {},\n\t\t\t\tcase_insensitive : true,\n\t\t\t\tcolumn_data_type: 'text',\n\t\t\t\thtml_data_type: 'text',\n\t\t\t\texclude_label: 'exclude',\n\t\t\t\tstyle_class: ''\n\t\t\t},\n\t\t\tadaptContainerCssClassImpl = function (dummy) { return ''; };\n\n\t\t$.extend(true, default_options, params);\n\n\t\tif (options_arg.length === undefined) {\n\t\t\toptions[selector_arg] = options_arg;\n\t\t\treturn;\n\t\t}\n\t\tfor (i = 0; i < options_arg.length; i++) {\n\t\t\tif (options_arg[i].select_type === 'select2') {\n\t\t\t\tdefault_options.select_type_options = {\n\t\t\t\t\tadaptContainerCssClass: adaptContainerCssClassImpl\n\t\t\t\t};\n\t\t\t}\n\t\t\t//no individual reset button for externally_triggered mode\n\t\t\tif (default_options.externally_triggered === true) {\n\t\t\t\toptions_arg[i].filter_reset_button_text = false;\n\t\t\t}\n\t\t\t//validate custom function required attributes\n\t\t\tif (options_arg[i].filter_type !== undefined && options_arg[i].filter_type.indexOf('custom_func') !== -1) {\n\t\t\t\tif (options_arg[i].custom_func === undefined) {\n\t\t\t\t\talert('You are trying to use filter_type: \"custom_func / multi_select_custom_func\" for column ' + options_arg[i].column_number + ' but there is no such custom_func attribute provided (custom_func: \\\"function reference goes here...\\\")');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcol_num_as_int = +options_arg[i].column_number;\n\t\t\tif (isNaN(col_num_as_int)) {\n\t\t\t\ttmpOptions[options_arg[i].column_number_str] = $.extend(true, {}, default_options, options_arg[i]);\n\t\t\t} else {\n\t\t\t\ttmpOptions[col_num_as_int] = $.extend(true, {}, default_options, options_arg[i]);\n\t\t\t}\n\t\t}\n\t\toptions[selector_arg] = tmpOptions;\n\t}\n\n\t//taken and modified from DataTables 1.10.0-beta.2 source \n\tfunction yadcfVersionCheck(version) {\n\t\tvar aThis = $.fn.dataTable.ext.sVersion.split('.'),\n\t\t\taThat = version.split('.'),\n\t\t\tiThis,\n\t\t\tiThat,\n\t\t\ti,\n\t\t\tiLen;\n\n\t\tfor (i = 0, iLen = aThat.length; i < iLen; i++) {\n\t\t\tiThis = parseInt(aThis[i], 10) || 0;\n\t\t\tiThat = parseInt(aThat[i], 10) || 0;\n\n\t\t\t// Parts are the same, keep comparing\n\t\t\tif (iThis === iThat) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Parts are different, return immediately\n\t\t\treturn iThis > iThat;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tfunction calculateColumnNumber(column_number, pTable) {\n\t\tvar col_num_visible_iter,\n\t\t\tcol_num_visible = column_number;\n\t\tfor (col_num_visible_iter = 0; col_num_visible_iter < pTable.fnSettings().aoColumns.length && col_num_visible_iter < column_number; col_num_visible_iter++) {\n\t\t\tif (pTable.fnSettings().aoColumns[col_num_visible_iter].bVisible === false) {\n\t\t\t\tcol_num_visible++;\n\t\t\t}\n\t\t}\n\t\treturn col_num_visible;\n\t}\n\n\tfunction resetIApiIndex() {\n\t\t$.fn.dataTableExt.iApiIndex = 0;\n\n\t}\n\n\tfunction generateTableSelectorJQFriendly(tmpStr) {\n\t\treturn tmpStr.replace(\":\", \"-\").replace(\"(\", \"\").replace(\")\", \"\").replace(\".\", \"-\").replace(\"#\", \"-\");\n\t}\n\n\tfunction escapeRegExp(string) {\n\t\treturn string.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, \"\\\\$1\");\n\t}\n\n\tfunction replaceAll(string, find, replace) {\n\t\treturn string.replace(new RegExp(escapeRegExp(find), 'g'), replace);\n\t}\n\n\tfunction generateTableSelectorJQFriendlyNew(tmpStr) {\n\t\ttmpStr = replaceAll(tmpStr, \":\", \"-\");\n\t\ttmpStr = replaceAll(tmpStr, \"(\", \"\");\n\t\ttmpStr = replaceAll(tmpStr, \")\", \"\");\n\t\ttmpStr = replaceAll(tmpStr, \",\", \"\");\n\t\ttmpStr = replaceAll(tmpStr, \".\", \"-\");\n\t\ttmpStr = replaceAll(tmpStr, \"#\", \"-\");\n\t\treturn tmpStr;\n\t}\n\n\tyadcfDelay = (function () {\n\t\tvar timer = 0;\n\t\treturn function (callback, ms, param) {\n\t\t\tclearTimeout(timer);\n\t\t\ttimer = setTimeout(function () {\n\t\t\t\tcallback(param);\n\t\t\t}, ms);\n\t\t\treturn timer;\n\t\t};\n\t}());\n\n\t//Used by exFilterColumn for translating readable search value into proper search string for datatables filtering\n\tfunction yadcfMatchFilterString(table_arg, column_number, selected_value, filter_match_mode, multiple) {\n\t\tvar case_insensitive = yadcf.getOptions(table_arg.selector)[column_number].case_insensitive,\n\t\t\tret_val;\n\n\t\ttable_arg.fnSettings().aoPreSearchCols[column_number].bSmart = false;\n\t\ttable_arg.fnSettings().aoPreSearchCols[column_number].bRegex = true;\n\t\ttable_arg.fnSettings().aoPreSearchCols[column_number].bCaseInsensitive = case_insensitive;\n\n\t\tif (multiple === undefined || multiple === false) {\n\t\t\tif (filter_match_mode === \"contains\") {\n\t\t\t\ttable_arg.fnSettings().aoPreSearchCols[column_number].bSmart = true;\n\t\t\t\ttable_arg.fnSettings().aoPreSearchCols[column_number].bRegex = false;\n\t\t\t\tret_val = selected_value;\n\t\t\t} else if (filter_match_mode === \"exact\") {\n\t\t\t\tret_val = \"^\" + selected_value + \"$\";\n\t\t\t} else if (filter_match_mode === \"startsWith\") {\n\t\t\t\tret_val = \"^\" + selected_value;\n\t\t\t} else if (filter_match_mode === \"regex\") {\n\t\t\t\tret_val = selected_value;\n\t\t\t}\n\t\t} else {\n\t\t\tif (filter_match_mode === \"contains\") {\n\t\t\t\tret_val = selected_value.join(\"|\");\n\t\t\t} else if (filter_match_mode === \"exact\") {\n\t\t\t\tret_val = \"^(\" + selected_value.join(\"|\") + \")$\";\n\t\t\t} else if (filter_match_mode === \"startsWith\") {\n\t\t\t\tret_val = \"^(\" + selected_value.join(\"|\") + \")\";\n\t\t\t} else if (filter_match_mode === \"regex\") {\n\t\t\t\tret_val = selected_value;\n\t\t\t}\n\t\t}\n\t\treturn ret_val;\n\t}\n\n\tfunction yadcfMatchFilter(oTable, selected_value, filter_match_mode, column_number, exclude) {\n\t\tvar case_insensitive = yadcf.getOptions(oTable.selector)[column_number].case_insensitive;\n\t\tif (exclude !== true) {\n\t\t\tif (filter_match_mode === \"contains\") {\n\t\t\t\toTable.fnFilter(selected_value, column_number, false, true, true, case_insensitive);\n\t\t\t} else if (filter_match_mode === \"exact\") {\n\t\t\t\tselected_value = escapeRegExp(selected_value);\n\t\t\t\toTable.fnFilter(\"^\" + selected_value + \"$\", column_number, true, false, true, case_insensitive);\n\t\t\t} else if (filter_match_mode === \"startsWith\") {\n\t\t\t\tselected_value = escapeRegExp(selected_value);\n\t\t\t\toTable.fnFilter(\"^\" + selected_value, column_number, true, false, true, case_insensitive);\n\t\t\t} else if (filter_match_mode === \"regex\") {\n\t\t\t\ttry {\n\t\t\t\t\t//validate regex, only call fnFilter if valid\n\t\t\t\t\tnew RegExp(selected_value);\n\t\t\t\t} catch (error) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\toTable.fnFilter(selected_value, column_number, true, false, true, case_insensitive);\n\t\t\t}\n\t\t} else {\n\t\t\toTable.fnFilter(\"^((?!\" + selected_value + \").)*$\", column_number, true, false, true, case_insensitive);\n\t\t}\n\t}\n\tfunction yadcfParseMatchFilter(tmpStr, filter_match_mode) {\n\t\tvar retVal;\n\t\tif (filter_match_mode === \"contains\") {\n\t\t\tretVal = tmpStr;\n\t\t} else if (filter_match_mode === \"exact\") {\n\t\t\tretVal = tmpStr.substring(1, tmpStr.length - 1);\n\t\t\tretVal = retVal.replace(/([\\\\])/g, '');\n\t\t} else if (filter_match_mode === \"startsWith\") {\n\t\t\tretVal = tmpStr.substring(1, tmpStr.length);\n\t\t\tretVal = retVal.replace(/([\\\\])/g, '');\n\t\t} else if (filter_match_mode === \"regex\") {\n\t\t\tretVal = tmpStr;\n\t\t}\n\t\treturn retVal;\n\t}\n\n\tfunction doFilterCustomDateFunc(arg, table_selector_jq_friendly, column_number) {\n\t\tvar oTable = oTables[table_selector_jq_friendly],\n\t\t\tyadcfState,\n\t\t\tcolumnObj = getOptions(oTable.selector)[column_number];\n\n\t\tif (arg === \"clear\" || arg.value === \"-1\") {\n\t\t\tif (exGetColumnFilterVal(oTable, column_number) === '') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).val('-1').focus();\n\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).removeClass(\"inuse\");\n\t\t\tif (columnObj.select_type === 'chosen') {\n\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).trigger(\"chosen:updated\");\n\t\t\t} else if (columnObj.select_type !== undefined && columnObj.select_type === 'select2') {\n\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).select2('val', '-1');\n\t\t\t}\n\t\t} else {\n\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).addClass(\"inuse\");\n\t\t}\n\n\t\tif (!oTable.fnSettings().oLoadedState) {\n\t\t\toTable.fnSettings().oLoadedState = {};\n\t\t\toTable.fnSettings().oApi._fnSaveState(oTable.fnSettings());\n\t\t}\n\t\tif (oTable.fnSettings().oFeatures.bStateSave === true) {\n\t\t\tif (oTable.fnSettings().oLoadedState.yadcfState !== undefined && oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly] !== undefined) {\n\t\t\t\toTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number] =\n\t\t\t\t\t{\n\t\t\t\t\t\t'from' : arg.value\n\t\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tyadcfState = {};\n\t\t\t\tyadcfState[table_selector_jq_friendly] = [];\n\t\t\t\tyadcfState[table_selector_jq_friendly][column_number] = {\n\t\t\t\t\t'from' : arg.value\n\t\t\t\t};\n\t\t\t\toTable.fnSettings().oLoadedState.yadcfState = yadcfState;\n\t\t\t}\n\t\t\toTable.fnSettings().oApi._fnSaveState(oTable.fnSettings());\n\t\t}\n\n\t\toTable.fnDraw();\n\t}\n\n\tfunction doFilter(arg, table_selector_jq_friendly, column_number, filter_match_mode) {\n\t\t$.fn.dataTableExt.iApiIndex = oTablesIndex[table_selector_jq_friendly];\n\n\t\tvar oTable = oTables[table_selector_jq_friendly],\n\t\t\tselected_value,\n\t\t\tcolumn_number_filter,\n\t\t\tcolumnObj,\n\t\t\tsettingsDt = getSettingsObjFromTable(oTable);\n\n\t\tif ((settingsDt.oSavedState != undefined && settingsDt.oSavedState.ColReorder !== undefined) || (plugins[table_selector_jq_friendly] !== undefined && plugins[table_selector_jq_friendly].ColReorder !== undefined)) {\n\t\t\tinitColReorder(settingsDt.oSavedState, table_selector_jq_friendly);\n\t\t\tcolumn_number_filter = plugins[table_selector_jq_friendly].ColReorder[column_number];\n\t\t} else {\n\t\t\tcolumn_number_filter = column_number;\n\t\t}\n\t\tcolumnObj = getOptions(oTable.selector)[column_number];\n\t\tif (arg === \"clear\") {\n\t\t\tif (exGetColumnFilterVal(oTable, column_number) === '') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).val(\"-1\").focus();\n\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).removeClass(\"inuse\");\n\t\t\t$(document).data(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number + \"_val\", \"-1\");\n\t\t\toTable.fnFilter(\"\", column_number_filter);\n\t\t\tresetIApiIndex();\n\t\t\tif (getOptions(oTable.selector)[column_number].select_type === 'chosen') {\n\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).trigger(\"chosen:updated\");\n\t\t\t} else if (columnObj.select_type !== undefined && columnObj.select_type === 'select2') {\n\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).select2('val', '-1');\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).addClass(\"inuse\");\n\n\t\t$(document).data(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number + \"_val\", arg.value);\n\n\t\tselected_value = $.trim($(arg).find('option:selected').val());\n\n\t\tif (arg.value !== \"-1\") {\n\t\t\tyadcfMatchFilter(oTable, selected_value, filter_match_mode, column_number_filter);\n\t\t} else {\n\t\t\toTable.fnFilter(\"\", column_number_filter);\n\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).removeClass(\"inuse\");\n\t\t}\n\t\tresetIApiIndex();\n\t}\n\n\tfunction doFilterMultiSelect(arg, table_selector_jq_friendly, column_number, filter_match_mode) {\n\t\t$.fn.dataTableExt.iApiIndex = oTablesIndex[table_selector_jq_friendly];\n\t\tvar oTable = oTables[table_selector_jq_friendly],\n\t\t\tselected_values = $(arg).val(),\n\t\t\tselected_values_trimmed = [],\n\t\t\ti,\n\t\t\tstringForSearch,\n\t\t\tcolumn_number_filter,\n\t\t\tsettingsDt = getSettingsObjFromTable(oTable);\n\n\t\tif ((settingsDt.oSavedState != undefined && settingsDt.oSavedState.ColReorder !== undefined) || (plugins[table_selector_jq_friendly] !== undefined && plugins[table_selector_jq_friendly].ColReorder !== undefined)) {\n\t\t\tinitColReorder(settingsDt.oSavedState, table_selector_jq_friendly);\n\t\t\tcolumn_number_filter = plugins[table_selector_jq_friendly].ColReorder[column_number];\n\t\t} else {\n\t\t\tcolumn_number_filter = column_number;\n\t\t}\n\t\t$(document).data(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number + \"_val\", selected_values);\n\n\t\tif (selected_values !== null) {\n\t\t\tfor (i = selected_values.length - 1; i >= 0; i--) {\n\t\t\t\tif (selected_values[i] === \"-1\") {\n\t\t\t\t\tselected_values.splice(i, 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (i = 0; i < selected_values.length; i++) {\n\t\t\t\tselected_values_trimmed.push($.trim(selected_values[i]));\n\t\t\t}\n\t\t\tif (selected_values_trimmed.length !== 0) {\n\t\t\t\tstringForSearch = selected_values_trimmed.join('narutouzomaki');\n\t\t\t\tstringForSearch = stringForSearch.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, \"\\\\$1\");\n\t\t\t\tstringForSearch = stringForSearch.split('narutouzomaki').join('|');\n\t\t\t\tif (filter_match_mode === \"contains\") {\n\t\t\t\t\toTable.fnFilter(stringForSearch, column_number_filter, true, false, true);\n\t\t\t\t} else if (filter_match_mode === \"exact\") {\n\t\t\t\t\toTable.fnFilter(\"^(\" + stringForSearch + \")$\", column_number_filter, true, false, true);\n\t\t\t\t} else if (filter_match_mode === \"startsWith\") {\n\t\t\t\t\toTable.fnFilter(\"^(\" + stringForSearch + \")\", column_number_filter, true, false, true);\n\t\t\t\t} else if (filter_match_mode === \"regex\") {\n\t\t\t\t\toTable.fnFilter(stringForSearch, column_number_filter, true, false, true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toTable.fnFilter(\"\", column_number_filter);\n\t\t\t}\n\t\t} else {\n\t\t\toTable.fnFilter(\"\", column_number_filter);\n\t\t}\n\t\tresetIApiIndex();\n\t}\n\n\tfunction yadcfParseMatchFilterMultiSelect(tmpStr, filter_match_mode) {\n\t\tvar retVal;\n\t\tif (filter_match_mode === \"contains\") {\n\t\t\tretVal = tmpStr;\n\t\t} else if (filter_match_mode === \"exact\") {\n\t\t\tretVal = tmpStr.substring(1, tmpStr.length - 1);\n\t\t\tretVal = retVal.substring(1, retVal.length - 1);\n\t\t} else if (filter_match_mode === \"startsWith\") {\n\t\t\tretVal = tmpStr.substring(1, tmpStr.length);\n\t\t\tretVal = retVal.substring(1, retVal.length - 1);\n\t\t} else if (filter_match_mode === \"regex\") {\n\t\t\tretVal = tmpStr;\n\t\t}\n\t\treturn retVal;\n\t}\n\n\tfunction doFilterAutocomplete(arg, table_selector_jq_friendly, column_number, filter_match_mode) {\n\t\t$.fn.dataTableExt.iApiIndex = oTablesIndex[table_selector_jq_friendly];\n\t\tvar oTable = oTables[table_selector_jq_friendly],\n\t\t\tcolumn_number_filter,\n\t\t\tsettingsDt = getSettingsObjFromTable(oTable);\n\n\t\tif ((settingsDt.oSavedState != undefined && settingsDt.oSavedState.ColReorder !== undefined) || (plugins[table_selector_jq_friendly] !== undefined && plugins[table_selector_jq_friendly].ColReorder !== undefined)) {\n\t\t\tinitColReorder(settingsDt.oSavedState, table_selector_jq_friendly);\n\t\t\tcolumn_number_filter = plugins[table_selector_jq_friendly].ColReorder[column_number];\n\t\t} else {\n\t\t\tcolumn_number_filter = column_number;\n\t\t}\n\n\t\tif (arg === \"clear\") {\n\t\t\tif (exGetColumnFilterVal(oTable, column_number) === '') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).val(\"\").focus();\n\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).removeClass(\"inuse\");\n\t\t\t$(document).removeData(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number + \"_val\");\n\t\t\toTable.fnFilter(\"\", column_number_filter);\n\t\t\tresetIApiIndex();\n\t\t\treturn;\n\t\t}\n\n\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).addClass(\"inuse\");\n\n\t\t$(document).data(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number + \"_val\", arg.value);\n\n\t\tyadcfMatchFilter(oTable, arg.value, filter_match_mode, column_number_filter);\n\n\t\tresetIApiIndex();\n\t}\n\n\tfunction autocompleteSelect(event, ui) {\n\t\tevent = eventTargetFixUp(event);\n\t\tvar table_column = event.target.id.replace(\"yadcf-filter-\", \"\"),\n\t\t\tdashIndex = table_column.lastIndexOf(\"-\"),\n\t\t\ttable_selector_jq_friendly = table_column.substring(0, dashIndex),\n\t\t\tcol_num = parseInt(table_column.substring(dashIndex + 1), 10),\n\t\t\tfilter_match_mode = $(event.target).attr(\"filter_match_mode\");\n\t\tdoFilterAutocomplete(ui.item, table_selector_jq_friendly, col_num, filter_match_mode);\n\t}\n\n\tfunction sortNumAsc(a, b) {\n\t\treturn a - b;\n\t}\n\n\tfunction sortNumDesc(a, b) {\n\t\treturn b - a;\n\t}\n\n\tfunction findMinInArray(array, ignore_char) {\n\t\tvar narray = [], i, num;\n\t\tfor (i = 0; i < array.length; i++) {\n\t\t\tif (array[i] !== null) {\n\t\t\t\tif (ignore_char !== undefined) {\n\t\t\t\t\tarray[i] = array[i].toString().replace(ignore_char, \"\");\n\t\t\t\t}\n\t\t\t\tnum = +array[i];\n\t\t\t\tif (!isNaN(num)) {\n\t\t\t\t\tnarray.push(num);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn Math.min.apply(Math, narray);\n\t}\n\n\tfunction findMaxInArray(array, ignore_char) {\n\t\tvar narray = [], i, num;\n\t\tfor (i = 0; i < array.length; i++) {\n\t\t\tif (array[i] !== null) {\n\t\t\t\tif (ignore_char !== undefined) {\n\t\t\t\t\tarray[i] = array[i].toString().replace(ignore_char, \"\");\n\t\t\t\t}\n\t\t\t\tnum = +array[i];\n\t\t\t\tif (!isNaN(num)) {\n\t\t\t\t\tnarray.push(num);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn Math.max.apply(Math, narray);\n\t}\n\n\tfunction addRangeNumberAndSliderFilterCapability(table_selector_jq_friendly, fromId, toId, col_num, ignore_char) {\n\n\t\t$.fn.dataTableExt.afnFiltering.push(\n\t\t\tfunction (settingsDt, aData, iDataIndex, rowData) {\n\t\t\t\tvar min,\n\t\t\t\t\tmax,\n\t\t\t\t\tval,\n\t\t\t\t\tretVal = false,\n\t\t\t\t\ttable_selector_jq_friendly_local = table_selector_jq_friendly,\n\t\t\t\t\tcurrent_table_selector_jq_friendly = yadcf.generateTableSelectorJQFriendly(settingsDt.oInstance.selector),\n\t\t\t\t\tignore_char_local = ignore_char,\n\t\t\t\t\tcolumn_data_type,\n\t\t\t\t\thtml_data_type,\n\t\t\t\t\ti,\n\t\t\t\t\tcolumnObjKey,\n\t\t\t\t\tcolumnObj,\n\t\t\t\t\tcolumn_number_filter;\n\n\t\t\t\tif (table_selector_jq_friendly_local !== current_table_selector_jq_friendly) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tcolumnObj = getOptions(settingsDt.oInstance.selector)[col_num];\n\t\t\t\tif (columnObj.filter_type === 'range_number_slider') {\n\t\t\t\t\tmin = $('#' + fromId).text();\n\t\t\t\t\tmax = $('#' + toId).text();\n\t\t\t\t} else {\n\t\t\t\t\tmin = document.getElementById(fromId).value;\n\t\t\t\t\tmax = document.getElementById(toId).value;\n\t\t\t\t}\n\t\t\t\tif ((settingsDt.oSavedState != undefined && settingsDt.oSavedState.ColReorder !== undefined) || (plugins[table_selector_jq_friendly] !== undefined && plugins[table_selector_jq_friendly].ColReorder !== undefined)) {\n\t\t\t\t\tinitColReorder(settingsDt.oSavedState, table_selector_jq_friendly);\n\t\t\t\t\tcolumn_number_filter = plugins[table_selector_jq_friendly].ColReorder[col_num];\n\t\t\t\t} else {\n\t\t\t\t\tcolumn_number_filter = col_num;\n\t\t\t\t}\n\t\t\t\tif (rowData !== undefined) {\n\t\t\t\t\taData = rowData;\n\t\t\t\t\tif (columnObj.column_number_data !== undefined) {\n\t\t\t\t\t\tcolumn_number_filter = columnObj.column_number_data;\n\t\t\t\t\t\tval = dot2obj(aData, column_number_filter);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tval = aData[column_number_filter];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tval = aData[column_number_filter];\n\t\t\t\t}\n\t\t\t\tif (!isFinite(min) || !isFinite(max)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tcolumn_data_type = columnObj.column_data_type;\n\t\t\t\thtml_data_type = columnObj.html_data_type;\n\n\t\t\t\tif (column_data_type === \"html\" || column_data_type === \"rendered_html\") {\n\t\t\t\t\tif (html_data_type === undefined) {\n\t\t\t\t\t\thtml_data_type = \"text\";\n\t\t\t\t\t}\n\t\t\t\t\tif ($(val).length !== 0) {\n\t\t\t\t\t\tswitch (html_data_type) {\n\t\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\t\tval = $(val).text();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"value\":\n\t\t\t\t\t\t\tval = $(val).val();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"id\":\n\t\t\t\t\t\t\tval = val.id;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"selector\":\n\t\t\t\t\t\t\tval = $(val).find(columnObj.html_data_selector).text();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (typeof val === 'object') {\n\t\t\t\t\t\tif (columnObj.html5_data !== undefined) {\n\t\t\t\t\t\t\tval = val['@' + columnObj.html5_data];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (ignore_char_local !== undefined) {\n\t\t\t\t\tmin = min.replace(ignore_char_local, \"\");\n\t\t\t\t\tmax = max.replace(ignore_char_local, \"\");\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tval = val.toString().replace(ignore_char_local, \"\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tval = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tmin = (min !== \"\") ? (+min) : min;\n\t\t\t\tmax = (max !== \"\") ? (+max) : max;\n\t\t\t\tval = (val !== \"\") ? (+val) : val;\n\t\t\t\tif (min === \"\" && max === \"\") {\n\t\t\t\t\tretVal = true;\n\t\t\t\t} else if (min === \"\" && val <= max) {\n\t\t\t\t\tretVal = true;\n\t\t\t\t} else if (min <= val && \"\" === max) {\n\t\t\t\t\tretVal = true;\n\t\t\t\t} else if (min <= val && val <= max) {\n\t\t\t\t\tretVal = true;\n\t\t\t\t} else if (val === '' || isNaN(val)) {\n\t\t\t\t\tretVal = true;\n\t\t\t\t}\n\t\t\t\treturn retVal;\n\t\t\t}\n\t\t);\n\t}\n\n\tfunction addCustomFunctionFilterCapability(table_selector_jq_friendly, filterId, col_num) {\n\n\t\t$.fn.dataTableExt.afnFiltering.push(\n\t\t\tfunction (settingsDt, aData, iDataIndex, stateVal) {\n\t\t\t\tvar filterVal = $('#' + filterId).val(),\n\t\t\t\t\tcolumnVal,\n\t\t\t\t\tretVal = false,\n\t\t\t\t\ttable_selector_jq_friendly_local = table_selector_jq_friendly,\n\t\t\t\t\tcurrent_table_selector_jq_friendly = yadcf.generateTableSelectorJQFriendly(settingsDt.oInstance.selector),\n\t\t\t\t\tcustom_func,\n\t\t\t\t\tcolumn_number_filter;\n\n\t\t\t\tif (table_selector_jq_friendly_local !== current_table_selector_jq_friendly) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tif ((settingsDt.oSavedState != undefined && settingsDt.oSavedState.ColReorder !== undefined) || (plugins[table_selector_jq_friendly] !== undefined && plugins[table_selector_jq_friendly].ColReorder !== undefined)) {\n\t\t\t\t\tinitColReorder(settingsDt.oSavedState, table_selector_jq_friendly);\n\t\t\t\t\tcolumn_number_filter = plugins[table_selector_jq_friendly].ColReorder[col_num];\n\t\t\t\t} else {\n\t\t\t\t\tcolumn_number_filter = col_num;\n\t\t\t\t}\n\n\t\t\t\tcolumnVal = aData[column_number_filter] === \"-\" ? 0 : aData[column_number_filter];\n\n\t\t\t\tcustom_func = getOptions(settingsDt.oInstance.selector)[col_num].custom_func;\n\n\t\t\t\tretVal = custom_func(filterVal, columnVal, aData);\n\n\t\t\t\treturn retVal;\n\t\t\t}\n\t\t);\n\t}\n\tfunction addRangeDateFilterCapability(table_selector_jq_friendly, fromId, toId, col_num, date_format) {\n\n\t\t$.fn.dataTableExt.afnFiltering.push(\n\t\t\tfunction (settingsDt, aData, iDataIndex, rowData) {\n\t\t\t\tvar min = document.getElementById(fromId) !== null ? document.getElementById(fromId).value : \"\",\n\t\t\t\t\tmax = document.getElementById(toId) !== null ? document.getElementById(toId).value : \"\",\n\t\t\t\t\tval,\n\t\t\t\t\tretVal = false,\n\t\t\t\t\ttable_selector_jq_friendly_local = table_selector_jq_friendly,\n\t\t\t\t\tcurrent_table_selector_jq_friendly = yadcf.generateTableSelectorJQFriendly(settingsDt.oInstance.selector),\n\t\t\t\t\tcolumn_data_type,\n\t\t\t\t\thtml_data_type,\n\t\t\t\t\ti,\n\t\t\t\t\tcolumnObjKey,\n\t\t\t\t\tcolumnObj,\n\t\t\t\t\tcolumn_number_filter;\n\n\t\t\t\tif (table_selector_jq_friendly_local !== current_table_selector_jq_friendly) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tcolumnObj = getOptions(settingsDt.oInstance.selector)[col_num];\n\t\t\t\tif ((settingsDt.oSavedState != undefined && settingsDt.oSavedState.ColReorder !== undefined) || (plugins[table_selector_jq_friendly] !== undefined && plugins[table_selector_jq_friendly].ColReorder !== undefined)) {\n\t\t\t\t\tinitColReorder(settingsDt.oSavedState, table_selector_jq_friendly);\n\t\t\t\t\tcolumn_number_filter = plugins[table_selector_jq_friendly].ColReorder[col_num];\n\t\t\t\t} else {\n\t\t\t\t\tcolumn_number_filter = col_num;\n\t\t\t\t}\n\t\t\t\tif (rowData !== undefined) {\n\t\t\t\t\taData = rowData;\n\t\t\t\t\tif (columnObj.column_number_data !== undefined) {\n\t\t\t\t\t\tcolumn_number_filter = columnObj.column_number_data;\n\t\t\t\t\t\tval = dot2obj(aData, column_number_filter);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tval = aData[column_number_filter];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tval = aData[column_number_filter];\n\t\t\t\t}\n\n\t\t\t\tcolumn_data_type = columnObj.column_data_type;\n\t\t\t\thtml_data_type = columnObj.html_data_type;\n\n\t\t\t\tif (column_data_type === \"html\" || column_data_type === \"rendered_html\") {\n\t\t\t\t\tif (html_data_type === undefined) {\n\t\t\t\t\t\thtml_data_type = \"text\";\n\t\t\t\t\t}\n\t\t\t\t\tif ($(val).length !== 0) {\n\t\t\t\t\t\tswitch (html_data_type) {\n\t\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\t\tval = $(val).text();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"value\":\n\t\t\t\t\t\t\tval = $(val).val();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"id\":\n\t\t\t\t\t\t\tval = val.id;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"selector\":\n\t\t\t\t\t\t\tval = $(val).find(columnObj.html_data_selector).text();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (typeof val === 'object') {\n\t\t\t\t\t\tif (columnObj.html5_data !== undefined) {\n\t\t\t\t\t\t\tval = val['@' + columnObj.html5_data];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tif (min.length === (date_format.length + 2)) {\n\t\t\t\t\t\tmin = (min !== \"\") ? $.datepicker.parseDate(date_format, min) : min;\n\t\t\t\t\t}\n\t\t\t\t} catch (err1) {}\n\t\t\t\ttry {\n\t\t\t\t\tif (max.length === (date_format.length + 2)) {\n\t\t\t\t\t\tmax = (max !== \"\") ? $.datepicker.parseDate(date_format, max) : max;\n\t\t\t\t\t}\n\t\t\t\t} catch (err2) {}\n\t\t\t\ttry {\n\t\t\t\t\tval = (val !== \"\") ? $.datepicker.parseDate(date_format, val) : val;\n\t\t\t\t} catch (err3) {}\n\n\t\t\t\tif ((min === \"\" || !(min instanceof Date)) && (max === \"\" || !(max instanceof Date))) {\n\t\t\t\t\tretVal = true;\n\t\t\t\t} else if (min === \"\" && val <= max) {\n\t\t\t\t\tretVal = true;\n\t\t\t\t} else if (min <= val && \"\" === max) {\n\t\t\t\t\tretVal = true;\n\t\t\t\t} else if (min <= val && val <= max) {\n\t\t\t\t\tretVal = true;\n\t\t\t\t}\n\n\t\t\t\treturn retVal;\n\t\t\t}\n\t\t);\n\t}\n\n\tfunction addRangeNumberFilter(filter_selector_string, table_selector_jq_friendly, column_number, filter_reset_button_text, filter_default_label, ignore_char) {\n\t\tvar fromId = \"yadcf-filter-\" + table_selector_jq_friendly + \"-from-\" + column_number,\n\t\t\ttoId = \"yadcf-filter-\" + table_selector_jq_friendly + \"-to-\" + column_number,\n\t\t\tfilter_selector_string_tmp,\n\t\t\tfilter_wrapper_id,\n\t\t\toTable,\n\t\t\tcolumnObj,\n\t\t\tfilterActionStr;\n\n\t\tfilter_wrapper_id = \"yadcf-filter-wrapper-\" + table_selector_jq_friendly + \"-\" + column_number;\n\n\t\tif ($(\"#\" + filter_wrapper_id).length > 0) {\n\t\t\treturn;\n\t\t}\n\t\t$.fn.dataTableExt.iApiIndex = oTablesIndex[table_selector_jq_friendly];\n\t\toTable = oTables[table_selector_jq_friendly];\n\t\tcolumnObj = getOptions(oTable.selector)[column_number];\n\n\t\t//add a wrapper to hold both filter and reset button\n\t\t$(filter_selector_string).append(\"
    \");\n\t\tfilter_selector_string = filter_selector_string + \" div.yadcf-filter-wrapper\";\n\t\tfilter_selector_string_tmp = filter_selector_string;\n\n\t\t$(filter_selector_string).append(\"
    \");\n\t\tfilter_selector_string = filter_selector_string + \" div.yadcf-filter-wrapper-inner\";\n\n\t\tfilterActionStr = 'onkeyup=\"yadcf.rangeNumberKeyUP(\\'' + table_selector_jq_friendly + '\\',event);\"';\n\t\tif (columnObj.externally_triggered === true) {\n\t\t\tfilterActionStr = '';\n\t\t}\n\n\t\t$(filter_selector_string).append(\"\");\n\t\t$(filter_selector_string).append(\"\" +\n\t\t\t\"\");\n\t\t$(filter_selector_string).append(\"\");\n\n\t\tif (filter_reset_button_text !== false) {\n\t\t\t$(filter_selector_string_tmp).append(\"\");\n\t\t}\n\n\t\tif (oTable.fnSettings().oFeatures.bStateSave === true && oTable.fnSettings().oLoadedState) {\n\t\t\tif (oTable.fnSettings().oLoadedState.yadcfState && oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly] && oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number]) {\n\t\t\t\t$('#' + fromId).val(oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number].from);\n\t\t\t\tif (oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number].from !== \"\") {\n\t\t\t\t\t$('#' + fromId).addClass(\"inuse\");\n\t\t\t\t}\n\t\t\t\t$('#' + toId).val(oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number].to);\n\t\t\t\tif (oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number].to !== \"\") {\n\t\t\t\t\t$('#' + toId).addClass(\"inuse\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tresetIApiIndex();\n\n\t\tif (oTable.fnSettings().oFeatures.bServerSide !== true) {\n\t\t\taddRangeNumberAndSliderFilterCapability(table_selector_jq_friendly, fromId, toId, column_number, ignore_char);\n\t\t}\n\n\t}\n\n\tfunction dateSelectSingle(date, event, clear) {\n\t\tvar oTable,\n\t\t\tcolumn_number = $(event).attr('id').replace('yadcf-filter-', '').replace('-date', '').replace('-reset', ''),\n\t\t\tdashIndex = column_number.lastIndexOf(\"-\"),\n\t\t\ttable_selector_jq_friendly = column_number.substring(0, dashIndex),\n\t\t\tdate_str,\n\t\t\tcolumn_number_filter,\n\t\t\tsettingsDt;\n\n\t\tcolumn_number = column_number.substring(dashIndex + 1);\n\t\t$.fn.dataTableExt.iApiIndex = oTablesIndex[table_selector_jq_friendly];\n\t\toTable = oTables[table_selector_jq_friendly];\n\t\tsettingsDt = getSettingsObjFromTable(oTable);\n\n\t\tif ((settingsDt.oSavedState != undefined && settingsDt.oSavedState.ColReorder !== undefined) || (plugins[table_selector_jq_friendly] !== undefined && plugins[table_selector_jq_friendly].ColReorder !== undefined)) {\n\t\t\tinitColReorder(settingsDt.oSavedState, table_selector_jq_friendly);\n\t\t\tcolumn_number_filter = plugins[table_selector_jq_friendly].ColReorder[column_number];\n\t\t} else {\n\t\t\tcolumn_number_filter = column_number;\n\t\t}\n\n\t\tif (clear === undefined) {\n\t\t\tdate_str = document.getElementById($(event).attr('id')).value;\n\t\t\toTable.fnFilter(date, column_number_filter);\n\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).addClass(\"inuse\");\n\t\t} else if (clear === 'clear') {\n\t\t\tif (exGetColumnFilterVal(oTable, column_number) === '') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\toTable.fnFilter('', column_number_filter);\n\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).val('').removeClass(\"inuse\");\n\t\t}\n\n\t\tresetIApiIndex();\n\t}\n\n\tfunction dateSelect(date, event) {\n\n\t\tvar oTable,\n\t\t\tcolumn_number = $(event).attr(\"id\").replace(\"yadcf-filter-\", \"\").replace(\"-from-date\", \"\").replace(\"-to-date\", \"\"),\n\t\t\tdashIndex = column_number.lastIndexOf(\"-\"),\n\t\t\ttable_selector_jq_friendly = column_number.substring(0, dashIndex),\n\t\t\tyadcfState,\n\t\t\tfrom,\n\t\t\tto,\n\t\t\tdate_format;\n\n\t\tcolumn_number = column_number.substring(dashIndex + 1);\n\t\t$.fn.dataTableExt.iApiIndex = oTablesIndex[table_selector_jq_friendly];\n\n\t\toTable = oTables[table_selector_jq_friendly];\n\t\tdate_format = yadcf.getOptions(oTable.selector)[column_number].date_format;\n\t\tdate_format = date_format.replace(\"yyyy\", \"yy\");\n\n\t\t$(\"#\" + $(event).attr(\"id\")).addClass(\"inuse\");\n\n\t\tif ($(event).attr(\"id\").indexOf(\"-from-\") !== -1) {\n\t\t\tfrom = document.getElementById($(event).attr(\"id\")).value;\n\t\t\tto = document.getElementById($(event).attr(\"id\").replace(\"-from-\", \"-to-\")).value;\n\t\t} else {\n\t\t\tto = document.getElementById($(event).attr(\"id\")).value;\n\t\t\tfrom = document.getElementById($(event).attr(\"id\").replace(\"-to-\", \"-from-\")).value;\n\t\t}\n\n\t\tif (oTable.fnSettings().oFeatures.bServerSide !== true) {\n\t\t\toTable.fnDraw();\n\t\t} else {\n\t\t\toTable.fnFilter(from + '-yadcf_delim-' + to, column_number);\n\t\t}\n\n\t\tif (!oTable.fnSettings().oLoadedState) {\n\t\t\toTable.fnSettings().oLoadedState = {};\n\t\t\toTable.fnSettings().oApi._fnSaveState(oTable.fnSettings());\n\t\t}\n\t\tif (oTable.fnSettings().oFeatures.bStateSave === true) {\n\t\t\tif (oTable.fnSettings().oLoadedState.yadcfState !== undefined && oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly] !== undefined) {\n\t\t\t\toTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number] =\n\t\t\t\t\t{\n\t\t\t\t\t\t'from' : from,\n\t\t\t\t\t\t'to' : to\n\t\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tyadcfState = {};\n\t\t\t\tyadcfState[table_selector_jq_friendly] = [];\n\t\t\t\tyadcfState[table_selector_jq_friendly][column_number] = {\n\t\t\t\t\t'from' : from,\n\t\t\t\t\t'to' : to\n\t\t\t\t};\n\t\t\t\toTable.fnSettings().oLoadedState.yadcfState = yadcfState;\n\t\t\t}\n\t\t\toTable.fnSettings().oApi._fnSaveState(oTable.fnSettings());\n\t\t}\n\n\t\tresetIApiIndex();\n\t}\n\n\tfunction addRangeDateFilter(filter_selector_string, table_selector_jq_friendly, column_number, filter_reset_button_text, filter_default_label, date_format) {\n\t\tvar fromId = \"yadcf-filter-\" + table_selector_jq_friendly + \"-from-date-\" + column_number,\n\t\t\ttoId = \"yadcf-filter-\" + table_selector_jq_friendly + \"-to-date-\" + column_number,\n\t\t\tfilter_selector_string_tmp,\n\t\t\tfilter_wrapper_id,\n\t\t\toTable,\n\t\t\tcolumnObj,\n\t\t\tdatepickerObj = {},\n\t\t\tfilterActionStr;\n\n\t\tfilter_wrapper_id = \"yadcf-filter-wrapper-\" + table_selector_jq_friendly + \"-\" + column_number;\n\n\t\tif ($(\"#\" + filter_wrapper_id).length > 0) {\n\t\t\treturn;\n\t\t}\n\n\t\t//add a wrapper to hold both filter and reset button\n\t\t$(filter_selector_string).append(\"
    \");\n\t\tfilter_selector_string = filter_selector_string + \" div.yadcf-filter-wrapper\";\n\t\tfilter_selector_string_tmp = filter_selector_string;\n\n\t\t$(filter_selector_string).append(\"
    \");\n\t\tfilter_selector_string = filter_selector_string + \" div.yadcf-filter-wrapper-inner\";\n\n\t\t$.fn.dataTableExt.iApiIndex = oTablesIndex[table_selector_jq_friendly];\n\t\toTable = oTables[table_selector_jq_friendly];\n\t\tcolumnObj = getOptions(oTable.selector)[column_number];\n\n\t\tfilterActionStr = 'onkeyup=\"yadcf.rangeDateKeyUP(\\'' + table_selector_jq_friendly + '\\',\\'' + date_format + '\\',event);\"';\n\t\tif (columnObj.externally_triggered === true) {\n\t\t\tfilterActionStr = '';\n\t\t}\n\n\t\t$(filter_selector_string).append(\"\");\n\t\t$(filter_selector_string).append(\"\" +\n\t\t\t\"\");\n\t\t$(filter_selector_string).append(\"\");\n\n\t\tif (filter_reset_button_text !== false) {\n\t\t\t$(filter_selector_string_tmp).append(\"\");\n\t\t}\n\n\t\tdatepickerObj.dateFormat = date_format;\n\n\t\tif (columnObj.externally_triggered !== true) {\n\t\t\tdatepickerObj.onSelect = dateSelect;\n\t\t}\n\n\t\t$(\"#\" + fromId).datepicker(datepickerObj);\n\t\t$(\"#\" + toId).datepicker(datepickerObj);\n\n\t\tif (oTable.fnSettings().oFeatures.bStateSave === true && oTable.fnSettings().oLoadedState) {\n\t\t\tif (oTable.fnSettings().oLoadedState.yadcfState && oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly] && oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number]) {\n\t\t\t\t$('#' + fromId).val(oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number].from);\n\t\t\t\tif (oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number].from !== \"\") {\n\t\t\t\t\t$('#' + fromId).addClass(\"inuse\");\n\t\t\t\t}\n\t\t\t\t$('#' + toId).val(oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number].to);\n\t\t\t\tif (oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number].to !== \"\") {\n\t\t\t\t\t$('#' + toId).addClass(\"inuse\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (oTable.fnSettings().oFeatures.bServerSide !== true) {\n\t\t\taddRangeDateFilterCapability(table_selector_jq_friendly, fromId, toId, column_number, date_format);\n\t\t}\n\n\t\tresetIApiIndex();\n\t}\n\n\tfunction addDateFilter(filter_selector_string, table_selector_jq_friendly, column_number, filter_reset_button_text, filter_default_label, date_format) {\n\t\tvar dateId = \"yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number,\n\t\t\tfilter_selector_string_tmp,\n\t\t\tfilter_wrapper_id,\n\t\t\toTable,\n\t\t\tcolumnObj,\n\t\t\tdatepickerObj = {},\n\t\t\tfilterActionStr;\n\n\t\tfilter_wrapper_id = \"yadcf-filter-wrapper-\" + table_selector_jq_friendly + \"-\" + column_number;\n\n\t\tif ($(\"#\" + filter_wrapper_id).length > 0) {\n\t\t\treturn;\n\t\t}\n\t\t$.fn.dataTableExt.iApiIndex = oTablesIndex[table_selector_jq_friendly];\n\t\toTable = oTables[table_selector_jq_friendly];\n\t\tcolumnObj = getOptions(oTable.selector)[column_number];\n\n\t\t//add a wrapper to hold both filter and reset button\n\t\t$(filter_selector_string).append(\"
    \");\n\t\tfilter_selector_string = filter_selector_string + \" div.yadcf-filter-wrapper\";\n\t\tfilter_selector_string_tmp = filter_selector_string;\n\n\t\tfilterActionStr = 'onkeyup=\"yadcf.dateKeyUP(\\'' + table_selector_jq_friendly + '\\',\\'' + date_format + '\\',event);\"';\n\t\tif (columnObj.externally_triggered === true) {\n\t\t\tfilterActionStr = '';\n\t\t}\n\n\t\t$(filter_selector_string).append(\"\");\n\n\t\tif (filter_reset_button_text !== false) {\n\t\t\t$(filter_selector_string_tmp).append('');\n\t\t}\n\n\t\tdatepickerObj.dateFormat = date_format;\n\n\t\tif (columnObj.externally_triggered !== true) {\n\t\t\tdatepickerObj.onSelect = dateSelectSingle;\n\t\t}\n\n\t\t$(\"#\" + dateId).datepicker(datepickerObj);\n\n\t\tif (oTable.fnSettings().aoPreSearchCols[column_number].sSearch !== '') {\n\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).val(oTable.fnSettings().aoPreSearchCols[column_number].sSearch).addClass(\"inuse\");\n\t\t}\n\n\t\tresetIApiIndex();\n\n\t}\n\n\tfunction rangeNumberSldierDrawTips(min_tip_val, max_tip_val, min_tip_id, max_tip_id, table_selector_jq_friendly, column_number) {\n\t\tvar first_handle = $(\"#yadcf-filter-wrapper-inner-\" + table_selector_jq_friendly + \"-\" + column_number + \" .ui-slider-handle:first\"),\n\t\t\tlast_handle = $(\"#yadcf-filter-wrapper-inner-\" + table_selector_jq_friendly + \"-\" + column_number + \" .ui-slider-handle:last\"),\n\t\t\tmin_tip_inner,\n\t\t\tmax_tip_inner;\n\n\t\tmin_tip_inner = \"
    \" + min_tip_val + \"
    \";\n\t\tmax_tip_inner = \"
    \" + max_tip_val + \"
    \";\n\n\t\t$(first_handle).addClass(\"yadcf-filter-range-number-slider-min-tip\").html(min_tip_inner);\n\t\t$(last_handle).addClass(\"yadcf-filter-range-number-slider-max-tip\").html(max_tip_inner);\n\t}\n\n\tfunction rangeNumberSliderChange(table_selector_jq_friendly, event, ui) {\n\t\tevent = eventTargetFixUp(event);\n\t\tvar oTable,\n\t\t\tmin_val,\n\t\t\tmax_val,\n\t\t\tslider_inuse,\n\t\t\tyadcfState,\n\t\t\tcolumn_number = $(event.target).attr('id').replace(\"yadcf-filter-\", \"\").replace(table_selector_jq_friendly, \"\").replace(\"-slider-\", \"\"),\n\t\t\tcolumnObj,\n\t\t\tkeyUp;\n\n\t\toTable = oTables[table_selector_jq_friendly];\n\t\tcolumnObj = getOptions(oTable.selector)[column_number];\n\n\t\tkeyUp = function () {\n\n\t\t\t$.fn.dataTableExt.iApiIndex = oTablesIndex[table_selector_jq_friendly];\n\n\t\t\tif (oTable.fnSettings().oFeatures.bServerSide !== true) {\n\t\t\t\toTable.fnDraw();\n\t\t\t} else {\n\t\t\t\toTable.fnFilter(ui.values[0] + '-yadcf_delim-' + ui.values[1], column_number);\n\t\t\t}\n\t\t\tmin_val = +$($(event.target).parent().find(\".yadcf-filter-range-number-slider-min-tip-hidden\")).text();\n\t\t\tmax_val = +$($(event.target).parent().find(\".yadcf-filter-range-number-slider-max-tip-hidden\")).text();\n\n\t\t\tif (min_val !== ui.values[0]) {\n\t\t\t\t$($(event.target).find(\".ui-slider-handle\")[0]).addClass(\"inuse\");\n\t\t\t\tslider_inuse = true;\n\t\t\t} else {\n\t\t\t\t$($(event.target).find(\".ui-slider-handle\")[0]).removeClass(\"inuse\");\n\t\t\t}\n\t\t\tif (max_val !== ui.values[1]) {\n\t\t\t\t$($(event.target).find(\".ui-slider-handle\")[1]).addClass(\"inuse\");\n\t\t\t\tslider_inuse = true;\n\t\t\t} else {\n\t\t\t\t$($(event.target).find(\".ui-slider-handle\")[1]).removeClass(\"inuse\");\n\t\t\t}\n\n\t\t\tif (slider_inuse === true) {\n\t\t\t\t$(event.target).find(\".ui-slider-range\").addClass(\"inuse\");\n\t\t\t} else {\n\t\t\t\t$(event.target).find(\".ui-slider-range\").removeClass(\"inuse\");\n\t\t\t}\n\n\t\t\tif (!oTable.fnSettings().oLoadedState) {\n\t\t\t\toTable.fnSettings().oLoadedState = {};\n\t\t\t\toTable.fnSettings().oApi._fnSaveState(oTable.fnSettings());\n\t\t\t}\n\t\t\tif (oTable.fnSettings().oFeatures.bStateSave === true) {\n\t\t\t\tif (oTable.fnSettings().oLoadedState.yadcfState !== undefined && oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly] !== undefined) {\n\t\t\t\t\toTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number] =\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'from' : ui.values[0],\n\t\t\t\t\t\t\t'to' : ui.values[1]\n\t\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tyadcfState = {};\n\t\t\t\t\tyadcfState[table_selector_jq_friendly] = [];\n\t\t\t\t\tyadcfState[table_selector_jq_friendly][column_number] = {\n\t\t\t\t\t\t'from' : ui.values[0],\n\t\t\t\t\t\t'to' : ui.values[1]\n\t\t\t\t\t};\n\t\t\t\t\toTable.fnSettings().oLoadedState.yadcfState = yadcfState;\n\t\t\t\t}\n\t\t\t\toTable.fnSettings().oApi._fnSaveState(oTable.fnSettings());\n\t\t\t}\n\n\t\t\tresetIApiIndex();\n\t\t};\n\n\t\tif (columnObj.filter_delay === undefined) {\n\t\t\tkeyUp();\n\t\t} else {\n\t\t\tyadcfDelay(function () {\n\t\t\t\tkeyUp();\n\t\t\t}, columnObj.filter_delay);\n\t\t}\n\t}\n\n\tfunction addRangeNumberSliderFilter(filter_selector_string, table_selector_jq_friendly, column_number, filter_reset_button_text, min_val, max_val, ignore_char) {\n\t\tvar sliderId = \"yadcf-filter-\" + table_selector_jq_friendly + \"-slider-\" + column_number,\n\t\t\tmin_tip_id = \"yadcf-filter-\" + table_selector_jq_friendly + \"-min_tip-\" + column_number,\n\t\t\tmax_tip_id = \"yadcf-filter-\" + table_selector_jq_friendly + \"-max_tip-\" + column_number,\n\t\t\tfilter_selector_string_tmp,\n\t\t\tfilter_wrapper_id,\n\t\t\toTable,\n\t\t\tmin_state_val = min_val,\n\t\t\tmax_state_val = max_val,\n\t\t\tcolumnObj,\n\t\t\tslideFunc,\n\t\t\tchangeFunc;\n\n\t\tfilter_wrapper_id = \"yadcf-filter-wrapper-\" + table_selector_jq_friendly + \"-\" + column_number;\n\n\t\tif ($(\"#\" + filter_wrapper_id).length > 0) {\n\t\t\treturn;\n\t\t}\n\n\t\t$.fn.dataTableExt.iApiIndex = oTablesIndex[table_selector_jq_friendly];\n\t\toTable = oTables[table_selector_jq_friendly];\n\t\tcolumnObj = getOptions(oTable.selector)[column_number];\n\n\t\tif (oTable.fnSettings().oFeatures.bStateSave === true && oTable.fnSettings().oLoadedState) {\n\t\t\tif (oTable.fnSettings().oLoadedState.yadcfState && oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly] && oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number]) {\n\t\t\t\tif (min_val !== oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number].from) {\n\t\t\t\t\tmin_state_val = oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number].from;\n\t\t\t\t}\n\t\t\t\tif (max_val !== oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number].to) {\n\t\t\t\t\tmax_state_val = oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number].to;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (isFinite(min_val) && isFinite(max_val) && isFinite(min_state_val) && isFinite(max_state_val)) {\n\n\t\t\t//add a wrapper to hold both filter and reset button\n\t\t\t$(filter_selector_string).append(\"
    \");\n\t\t\tfilter_selector_string = filter_selector_string + \" div.yadcf-filter-wrapper\";\n\t\t\tfilter_selector_string_tmp = filter_selector_string;\n\n\t\t\t$(filter_selector_string).append(\"
    \");\n\t\t\tfilter_selector_string = filter_selector_string + \" div.yadcf-number-slider-filter-wrapper-inner\";\n\n\t\t\t$(filter_selector_string).append(\"
    \");\n\t\t\tfilter_selector_string = filter_selector_string + \" #\" + sliderId;\n\n\t\t\t$(filter_selector_string).append(\"\" + min_val + \"\");\n\t\t\t$(filter_selector_string).append(\"\" + max_val + \"\");\n\n\t\t\tif (columnObj.externally_triggered !== true) {\n\t\t\t\tslideFunc = function (event, ui) {\n\t\t\t\t\trangeNumberSldierDrawTips(ui.values[0], ui.values[1], min_tip_id, max_tip_id, table_selector_jq_friendly, column_number);\n\t\t\t\t\trangeNumberSliderChange(table_selector_jq_friendly, event, ui);\n\t\t\t\t};\n\t\t\t\tchangeFunc = function (event, ui) {\n\t\t\t\t\trangeNumberSldierDrawTips(ui.values[0], ui.values[1], min_tip_id, max_tip_id, table_selector_jq_friendly, column_number);\n\t\t\t\t\tif (event.originalEvent || $(event.target).slider(\"option\", \"yadcf-reset\") === true) {\n\t\t\t\t\t\t$(event.target).slider(\"option\", \"yadcf-reset\", false);\n\t\t\t\t\t\trangeNumberSliderChange(table_selector_jq_friendly, event, ui);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tslideFunc = function (event, ui) {\n\t\t\t\t\trangeNumberSldierDrawTips(ui.values[0], ui.values[1], min_tip_id, max_tip_id, table_selector_jq_friendly, column_number);\n\t\t\t\t};\n\t\t\t\tchangeFunc = function (event, ui) {\n\t\t\t\t\trangeNumberSldierDrawTips(ui.values[0], ui.values[1], min_tip_id, max_tip_id, table_selector_jq_friendly, column_number);\n\t\t\t\t};\n\t\t\t}\n\t\t\t$(\"#\" + sliderId).slider({\n\t\t\t\trange: true,\n\t\t\t\tmin: min_val,\n\t\t\t\tmax: max_val,\n\t\t\t\tvalues: [min_state_val, max_state_val],\n\t\t\t\tcreate: function (event, ui) {\n\t\t\t\t\trangeNumberSldierDrawTips(min_state_val, max_state_val, min_tip_id, max_tip_id, table_selector_jq_friendly, column_number);\n\t\t\t\t},\n\t\t\t\tslide: slideFunc,\n\t\t\t\tchange: changeFunc\n\t\t\t});\n\n\t\t\tif (filter_reset_button_text !== false) {\n\t\t\t\t$(filter_selector_string_tmp).append(\"\");\n\t\t\t}\n\t\t}\n\n\t\t$.fn.dataTableExt.iApiIndex = oTablesIndex[table_selector_jq_friendly];\n\t\toTable = oTables[table_selector_jq_friendly];\n\t\tif (oTable.fnSettings().oFeatures.bStateSave === true && oTable.fnSettings().oLoadedState) {\n\t\t\tif (oTable.fnSettings().oLoadedState.yadcfState && oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly] && oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number]) {\n\t\t\t\tif (isFinite(min_val) && min_val !== oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number].from) {\n\t\t\t\t\t$($(filter_selector_string).find(\".ui-slider-handle\")[0]).addClass(\"inuse\");\n\t\t\t\t}\n\t\t\t\tif (isFinite(max_val) && max_val !== oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number].to) {\n\t\t\t\t\t$($(filter_selector_string).find(\".ui-slider-handle\")[1]).addClass(\"inuse\");\n\t\t\t\t}\n\t\t\t\tif ((isFinite(min_val) && isFinite(max_val)) && (min_val !== oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number].from || max_val !== oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number].to)) {\n\t\t\t\t\t$($(filter_selector_string).find(\".ui-slider-range\")).addClass(\"inuse\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tresetIApiIndex();\n\n\t\tif (oTable.fnSettings().oFeatures.bServerSide !== true) {\n\t\t\taddRangeNumberAndSliderFilterCapability(table_selector_jq_friendly, min_tip_id, max_tip_id, column_number, ignore_char);\n\t\t}\n\t}\n\n\tfunction removeFilters(oTable, args, table_selector) {\n\t\t$('.yadcf-filter-wrapper').remove();\n\t\tif (yadcfVersionCheck('1.10')) {\n\t\t\t$(document).off('draw.dt', oTable.selector);\n\t\t\t$(document).off('xhr.dt', oTable.selector);\n\t\t\t$(document).off('column-visibility.dt', oTable.selector);\n\t\t\t$(document).off('destroy.dt', oTable.selector);\n\t\t} else {\n\t\t\t$(document).off('draw', oTable.selector);\n\t\t\t$(document).off('destroy', oTable.selector);\n\t\t}\n\t}\n\n\tfunction sortAlphaNum(a, b) {\n\t\tvar aA = a.replace(reA, \"\"),\n\t\t\tbA = b.replace(reA, \"\"),\n\t\t\taN,\n\t\t\tbN;\n\t\tif (aA === bA) {\n\t\t\taN = parseInt(a.replace(reN, \"\"), 10);\n\t\t\tbN = parseInt(b.replace(reN, \"\"), 10);\n\t\t\treturn aN === bN ? 0 : aN > bN ? 1 : -1;\n\t\t}\n\t\treturn aA > bA ? 1 : -1;\n\t}\n\n\tfunction sortColumnData(column_data, columnObj) {\n\t\tvar numArray = [],\n\t\t\talphaArray = [];\n\t\tif (columnObj.filter_type === \"select\" || columnObj.filter_type === \"auto_complete\" || columnObj.filter_type === \"multi_select\" || columnObj.filter_type === 'multi_select_custom_func' || columnObj.filter_type === \"custom_func\") {\n\t\t\tif (columnObj.sort_as === \"alpha\") {\n\t\t\t\tif (columnObj.sort_order === \"asc\") {\n\t\t\t\t\tcolumn_data.sort();\n\t\t\t\t} else if (columnObj.sort_order === \"desc\") {\n\t\t\t\t\tcolumn_data.sort();\n\t\t\t\t\tcolumn_data.reverse();\n\t\t\t\t}\n\t\t\t} else if (columnObj.sort_as === \"num\") {\n\t\t\t\tif (columnObj.sort_order === \"asc\") {\n\t\t\t\t\tcolumn_data.sort(sortNumAsc);\n\t\t\t\t} else if (columnObj.sort_order === \"desc\") {\n\t\t\t\t\tcolumn_data.sort(sortNumDesc);\n\t\t\t\t}\n\t\t\t} else if (columnObj.sort_as === \"alphaNum\") {\n\t\t\t\tif (columnObj.sort_order === \"asc\") {\n\t\t\t\t\tcolumn_data.sort(sortAlphaNum);\n\t\t\t\t} else if (columnObj.sort_order === \"desc\") {\n\t\t\t\t\tcolumn_data.sort(sortAlphaNum);\n\t\t\t\t\tcolumn_data.reverse();\n\t\t\t\t}\n\t\t\t} else if (columnObj.sort_as === \"custom\") {\n\t\t\t\tcolumn_data.sort(columnObj.sort_as_custom_func);\n\t\t\t}\n\t\t}\n\t\treturn column_data;\n\t}\n\n\tfunction parseTableColumn(pTable, columnObj, table_selector_jq_friendly) {\n\t\tvar col_inner_elements,\n\t\t\tcol_inner_data,\n\t\t\tj,\n\t\t\tk,\n\t\t\tcol_filter_array = {},\n\t\t\tcolumn_data = [],\n\t\t\tdata = pTable.fnSettings().aoData,\n\t\t\tdata_length = data.length,\n\t\t\tsettingsDt,\n\t\t\tcolumn_number_filter;\n\n\t\tsettingsDt = getSettingsObjFromTable(pTable);\n\n\t\tif (columnObj.col_filter_array !== undefined) {\n\t\t\tcol_filter_array = columnObj.col_filter_array;\n\t\t}\n\t\tif ((settingsDt.oSavedState != undefined && settingsDt.oSavedState.ColReorder !== undefined) || (plugins[table_selector_jq_friendly] !== undefined && plugins[table_selector_jq_friendly].ColReorder !== undefined)) {\n\t\t\tinitColReorder(settingsDt.oSavedState, table_selector_jq_friendly);\n\t\t}\n\t\tif (plugins[table_selector_jq_friendly] !== undefined && plugins[table_selector_jq_friendly].ColReorder !== undefined) {\n\t\t\tcolumn_number_filter = plugins[table_selector_jq_friendly].ColReorder[columnObj.column_number];\n\t\t} else {\n\t\t\tcolumn_number_filter = columnObj.column_number;\n\t\t}\n\t\tif (isNaN(pTable.fnSettings().aoColumns[column_number_filter].mData) && typeof pTable.fnSettings().aoColumns[column_number_filter].mData !== 'object') {\n\t\t\tcolumnObj.column_number_data = pTable.fnSettings().aoColumns[column_number_filter].mData;\n\t\t}\n\n\t\tfor (j = 0; j < data_length; j++) {\n\t\t\tif (columnObj.column_data_type === \"html\") {\n\t\t\t\tif (columnObj.column_number_data === undefined) {\n\t\t\t\t\tcol_inner_elements = $(data[j]._aData[column_number_filter]);\n\t\t\t\t} else {\n\t\t\t\t\tcol_inner_elements = dot2obj(data[j]._aData, columnObj.column_number_data);\n\t\t\t\t\tcol_inner_elements = $(col_inner_elements);\n\t\t\t\t}\n\t\t\t\tif (col_inner_elements.length > 0) {\n\t\t\t\t\tfor (k = 0; k < col_inner_elements.length; k++) {\n\t\t\t\t\t\tswitch (columnObj.html_data_type) {\n\t\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\t\tcol_inner_data = $(col_inner_elements[k]).text();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"value\":\n\t\t\t\t\t\t\tcol_inner_data = $(col_inner_elements[k]).val();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"id\":\n\t\t\t\t\t\t\tcol_inner_data = col_inner_elements[k].id;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"selector\":\n\t\t\t\t\t\t\tcol_inner_data = $(col_inner_elements[k]).find(columnObj.html_data_selector).text();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ($.trim(col_inner_data) !== '' && !(col_filter_array.hasOwnProperty(col_inner_data))) {\n\t\t\t\t\t\t\tcol_filter_array[col_inner_data] = col_inner_data;\n\t\t\t\t\t\t\tcolumn_data.push(col_inner_data);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcol_inner_data = col_inner_elements.selector;\n\t\t\t\t\tif ($.trim(col_inner_data) !== '' && !(col_filter_array.hasOwnProperty(col_inner_data))) {\n\t\t\t\t\t\tcol_filter_array[col_inner_data] = col_inner_data;\n\t\t\t\t\t\tcolumn_data.push(col_inner_data);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else if (columnObj.column_data_type === \"text\") {\n\t\t\t\tif (columnObj.text_data_delimiter !== undefined) {\n\t\t\t\t\tif (columnObj.column_number_data === undefined) {\n\t\t\t\t\t\tcol_inner_elements = data[j]._aData[column_number_filter].split(columnObj.text_data_delimiter);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcol_inner_elements = dot2obj(data[j]._aData, columnObj.column_number_data);\n\t\t\t\t\t\tcol_inner_elements = (col_inner_elements + '').split(columnObj.text_data_delimiter);\n\t\t\t\t\t}\n\t\t\t\t\tfor (k = 0; k < col_inner_elements.length; k++) {\n\t\t\t\t\t\tcol_inner_data = col_inner_elements[k];\n\t\t\t\t\t\tif ($.trim(col_inner_data) !== '' && !(col_filter_array.hasOwnProperty(col_inner_data))) {\n\t\t\t\t\t\t\tcol_filter_array[col_inner_data] = col_inner_data;\n\t\t\t\t\t\t\tcolumn_data.push(col_inner_data);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (columnObj.column_number_data === undefined) {\n\t\t\t\t\t\tcol_inner_data = data[j]._aData[column_number_filter];\n\t\t\t\t\t\tif (typeof col_inner_data === 'object') {\n\t\t\t\t\t\t\tif (columnObj.html5_data !== undefined) {\n\t\t\t\t\t\t\t\tcol_inner_data = col_inner_data['@' + columnObj.html5_data];\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\talert('Looks like you have forgot to define the html5_data attribute for the ' + columnObj.column_number + ' column');\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (data[j]._aFilterData !== undefined && data[j]._aFilterData !== null) {\n\t\t\t\t\t\tcol_inner_data = data[j]._aFilterData[column_number_filter];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcol_inner_data = dot2obj(data[j]._aData, columnObj.column_number_data);\n\t\t\t\t\t}\n\t\t\t\t\tif ($.trim(col_inner_data) !== '' && !(col_filter_array.hasOwnProperty(col_inner_data))) {\n\t\t\t\t\t\tcol_filter_array[col_inner_data] = col_inner_data;\n\t\t\t\t\t\tcolumn_data.push(col_inner_data);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (columnObj.column_data_type === \"rendered_html\") {\n\t\t\t\tcol_inner_elements = data[j]._aFilterData[column_number_filter];\n\t\t\t\tcol_inner_elements = $(col_inner_elements);\n\t\t\t\tif (col_inner_elements.length > 0) {\n\t\t\t\t\tfor (k = 0; k < col_inner_elements.length; k++) {\n\t\t\t\t\t\tswitch (columnObj.html_data_type) {\n\t\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\t\tcol_inner_data = $(col_inner_elements[k]).text();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"value\":\n\t\t\t\t\t\t\tcol_inner_data = $(col_inner_elements[k]).val();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"id\":\n\t\t\t\t\t\t\tcol_inner_data = col_inner_elements[k].id;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"selector\":\n\t\t\t\t\t\t\tcol_inner_data = $(col_inner_elements[k]).find(columnObj.html_data_selector).text();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcol_inner_data = col_inner_elements.selector;\n\t\t\t\t}\n\t\t\t\tif ($.trim(col_inner_data) !== '' && !(col_filter_array.hasOwnProperty(col_inner_data))) {\n\t\t\t\t\tcol_filter_array[col_inner_data] = col_inner_data;\n\t\t\t\t\tcolumn_data.push(col_inner_data);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcolumnObj.col_filter_array = col_filter_array;\n\t\treturn column_data;\n\t}\n\n\tfunction appendFilters(oTable, args, table_selector) {\n\n\t\tvar i = 0,\n\t\t\t$filter_selector,\n\t\t\tfilter_selector_string,\n\n\t\t\tdata,\n\t\t\tfilter_container_id,\n\t\t\tcolumn_number_data,\n\t\t\tcolumn_number,\n\t\t\tcolumn_position,\n\t\t\tcolumn_data_type,\n\t\t\thtml_data_type,\n\t\t\ttext_data_delimiter,\n\t\t\tfilter_default_label,\n\t\t\tfilter_reset_button_text,\n\t\t\tenable_auto_complete,\n\t\t\tsort_as,\n\t\t\tsort_order,\n\t\t\tdate_format,\n\t\t\tignore_char,\n\t\t\tfilter_match_mode,\n\n\t\t\tcolumn_data,\n\t\t\tcolumn_data_temp,\n\t\t\toptions_tmp,\n\t\t\tj,\n\t\t\tk,\n\t\t\tdata_length,\n\t\t\tcol_inner_elements,\n\t\t\tcol_inner_data,\n\t\t\tii,\n\t\t\ttable_selector_jq_friendly,\n\t\t\tmin_val,\n\t\t\tmax_val,\n\t\t\tcol_num_visible,\n\t\t\tcol_num_visible_iter,\n\t\t\ttmpStr,\n\t\t\tcolumnObjKey,\n\t\t\tcolumnObj,\n\t\t\tfilters_position,\n\t\t\tunique_th,\n\t\t\tsettingsDt,\n\t\t\tfilterActionStr,\n\t\t\tcustom_func_filter_value_holder,\n\t\t\texclude_str,\n\t\t\ttableDT,\n\t\t\tcolumnFilterVal;\n\n\t\tsettingsDt = getSettingsObjFromTable(oTable);\n\t\ttable_selector_jq_friendly = yadcf.generateTableSelectorJQFriendly(table_selector);\n\t\ttableDT = tablesDT[table_selector_jq_friendly];\n\n\t\tinitColReorder(settingsDt.oSavedState, table_selector_jq_friendly);\n\n\t\tfilters_position = $(document).data(table_selector + \"_filters_position\");\n\t\tif (settingsDt.oScroll.sX !== '' || settingsDt.oScroll.sY !== '') {\n\t\t\ttable_selector = '.yadcf-datatables-table-' + table_selector_jq_friendly;\n\t\t}\n\t\tif (oTable._fnGetUniqueThs() !== undefined) {\n\t\t\tunique_th = oTable._fnGetUniqueThs();\n\t\t}\n\t\tfor (columnObjKey in args) {\n\t\t\tif (args.hasOwnProperty(columnObjKey)) {\n\t\t\t\tcolumnObj = args[columnObjKey];\n\n\t\t\t\ttmpStr = '';\n\t\t\t\tdata = columnObj.data;\n\t\t\t\tcolumn_data = [];\n\t\t\t\tcolumn_data_temp = [];\n\t\t\t\tfilter_container_id = columnObj.filter_container_id;\n\t\t\t\tcolumn_number = columnObj.column_number;\n\t\t\t\tcolumn_number = +column_number;\n\t\t\t\tcolumn_position = column_number;\n\n\t\t\t\tif (plugins[table_selector_jq_friendly] !== undefined && (plugins[table_selector_jq_friendly] !== undefined && plugins[table_selector_jq_friendly].ColReorder !== undefined)) {\n\t\t\t\t\tcolumn_position = plugins[table_selector_jq_friendly].ColReorder[column_number];\n\t\t\t\t}\n\n\t\t\t\tcolumnObj.column_number = column_number;\n\t\t\t\tcolumn_number_data = undefined;\n\t\t\t\tif (isNaN(settingsDt.aoColumns[column_position].mData) && typeof settingsDt.aoColumns[column_position].mData !== 'object') {\n\t\t\t\t\tcolumn_number_data = settingsDt.aoColumns[column_position].mData;\n\t\t\t\t\tcolumnObj.column_number_data = column_number_data;\n\t\t\t\t}\n\t\t\t\tcolumn_data_type = columnObj.column_data_type;\n\t\t\t\thtml_data_type = columnObj.html_data_type;\n\t\t\t\ttext_data_delimiter = columnObj.text_data_delimiter;\n\t\t\t\tfilter_default_label = columnObj.filter_default_label;\n\t\t\t\tfilter_reset_button_text = columnObj.filter_reset_button_text;\n\t\t\t\tenable_auto_complete = columnObj.enable_auto_complete;\n\t\t\t\tsort_as = columnObj.sort_as;\n\t\t\t\tsort_order = columnObj.sort_order;\n\t\t\t\tdate_format = columnObj.date_format;\n\t\t\t\t//for jquery datepicker\n\t\t\t\tdate_format = date_format.replace(\"yyyy\", \"yy\");\n\t\t\t\tcolumnObj.date_format = date_format;\n\n\t\t\t\tif (columnObj.ignore_char !== undefined && !(columnObj.ignore_char instanceof RegExp)) {\n\t\t\t\t\tignore_char = new RegExp(columnObj.ignore_char, \"g\");\n\t\t\t\t\tcolumnObj.ignore_char = ignore_char;\n\t\t\t\t}\n\t\t\t\tfilter_match_mode = columnObj.filter_match_mode;\n\n\t\t\t\tif (column_number === undefined) {\n\t\t\t\t\talert(\"You must specify column number\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\n\n\t\t\t\tif (enable_auto_complete === true) {\n\t\t\t\t\tcolumnObj.filter_type = \"auto_complete\";\n\t\t\t\t}\n\n\t\t\t\tif (filter_default_label === undefined) {\n\t\t\t\t\tif (columnObj.filter_type === \"select\" || columnObj.filter_type === 'custom_func') {\n\t\t\t\t\t\tfilter_default_label = \"Select value\";\n\t\t\t\t\t} else if (columnObj.filter_type === \"multi_select\" || columnObj.filter_type === 'multi_select_custom_func') {\n\t\t\t\t\t\tfilter_default_label = \"Select values\";\n\t\t\t\t\t} else if (columnObj.filter_type === \"auto_complete\" || columnObj.filter_type === \"text\") {\n\t\t\t\t\t\tfilter_default_label = 'Type to filter';\n\t\t\t\t\t} else if (columnObj.filter_type === \"range_number\" || columnObj.filter_type === \"range_date\") {\n\t\t\t\t\t\tfilter_default_label = [\"from\", \"to\"];\n\t\t\t\t\t} else if (columnObj.filter_type === \"date\") {\n\t\t\t\t\t\tfilter_default_label = \"Select a date\";\n\t\t\t\t\t}\n\t\t\t\t\tcolumnObj.filter_default_label = filter_default_label;\n\t\t\t\t}\n\n\t\t\t\tif (filter_reset_button_text === undefined) {\n\t\t\t\t\tfilter_reset_button_text = \"x\";\n\t\t\t\t}\n\n\t\t\t\tif (data !== undefined) {\n\t\t\t\t\tfor (ii = 0; ii < data.length; ii++) {\n\t\t\t\t\t\tcolumn_data.push(data[ii]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (data === undefined || columnObj.append_data_to_table_data !== undefined) {\n\t\t\t\t\tcolumnObj.col_filter_array = undefined;\n\t\t\t\t\tcolumn_data_temp = parseTableColumn(oTable, columnObj, table_selector_jq_friendly);\n\t\t\t\t\tif (columnObj.append_data_to_table_data !== 'before') {\n\t\t\t\t\t\tcolumn_data = column_data.concat(column_data_temp);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcolumn_data_temp = sortColumnData(column_data_temp, columnObj);\n\t\t\t\t\t\tcolumn_data = column_data.concat(column_data_temp);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (columnObj.append_data_to_table_data === undefined || columnObj.append_data_to_table_data === 'sorted') {\n\t\t\t\t\tcolumn_data = sortColumnData(column_data, columnObj);\n\t\t\t\t}\n\n\t\t\t\tif (columnObj.filter_type === \"range_number_slider\") {\n\t\t\t\t\tmin_val = findMinInArray(column_data, ignore_char);\n\t\t\t\t\tmax_val = findMaxInArray(column_data, ignore_char);\n\t\t\t\t}\n\n\n\t\t\t\tif (filter_container_id === undefined) {\n\t\t\t\t\t//Can't show filter inside a column for a hidden one (place it outside using filter_container_id) \n\t\t\t\t\tif (settingsDt.aoColumns[column_position].bVisible === false) {\n\t\t\t\t\t\t//console.log('Yadcf warning: Can\\'t show filter inside a column N#' + column_number + ' for a hidden one (place it outside using filter_container_id)');\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (filters_position !== 'thead') {\n\t\t\t\t\t\tif (unique_th === undefined) {\n\t\t\t\t\t\t\t//handle hidden columns\n\t\t\t\t\t\t\tcol_num_visible = column_position;\n\t\t\t\t\t\t\tfor (col_num_visible_iter = 0; col_num_visible_iter < settingsDt.aoColumns.length && col_num_visible_iter < column_position; col_num_visible_iter++) {\n\t\t\t\t\t\t\t\tif (settingsDt.aoColumns[col_num_visible_iter].bVisible === false) {\n\t\t\t\t\t\t\t\t\tcol_num_visible--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcolumn_position = col_num_visible;\n\t\t\t\t\t\t\tfilter_selector_string = table_selector + ' ' + filters_position + ' th:eq(' + column_position + ')';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfilter_selector_string = table_selector + ' ' + filters_position + ' th:eq(' + $(unique_th[column_position]).index() + ')';\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfilter_selector_string = table_selector + ' ' + filters_position + ' tr:eq(' + $(unique_th[column_position]).parent().index() + ') th:eq(' + $(unique_th[column_position]).index() + ')';\n\t\t\t\t\t}\n\t\t\t\t\t$filter_selector = $(filter_selector_string).find(\".yadcf-filter\");\n\t\t\t\t} else {\n\t\t\t\t\tif ($(\"#\" + filter_container_id).length === 0) {\n\t\t\t\t\t\talert(\"Filter container could not be found.\");\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tfilter_selector_string = \"#\" + filter_container_id;\n\t\t\t\t\t$filter_selector = $(filter_selector_string).find(\".yadcf-filter\");\n\t\t\t\t}\n\n\n\n\t\t\t\tif (columnObj.filter_type === \"select\" || columnObj.filter_type === 'custom_func') {\n\t\t\t\t\toptions_tmp = \"\";\n\n\t\t\t\t\tif (columnObj.select_type === 'select2' && columnObj.select_type_options.placeholder !== undefined && columnObj.select_type_options.allowClear === true) {\n\t\t\t\t\t\toptions_tmp = \"\";\n\t\t\t\t\t}\n\t\t\t\t} else if (columnObj.filter_type === \"multi_select\" || columnObj.filter_type === 'multi_select_custom_func') {\n\t\t\t\t\tif (columnObj.select_type === undefined) {\n\t\t\t\t\t\toptions_tmp = \"\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\toptions_tmp = \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (columnObj.append_data_to_table_data === undefined) {\n\t\t\t\t\tif (typeof column_data[0] === 'object') {\n\t\t\t\t\t\tfor (ii = 0; ii < column_data.length; ii++) {\n\t\t\t\t\t\t\toptions_tmp += \"\";\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor (ii = 0; ii < column_data.length; ii++) {\n\t\t\t\t\t\t\toptions_tmp += \"\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor (ii = 0; ii < column_data.length; ii++) {\n\t\t\t\t\t\tif (typeof column_data[ii] === 'object') {\n\t\t\t\t\t\t\toptions_tmp += \"\";\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\toptions_tmp += \"\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcolumn_data = options_tmp;\n\n\t\t\t\tif ($filter_selector.length === 1) {\n\t\t\t\t\tif (columnObj.filter_type === \"select\" || columnObj.filter_type === \"multi_select\" || columnObj.filter_type === 'custom_func' || columnObj.filter_type === 'multi_select_custom_func') {\n\t\t\t\t\t\tif (columnObj.filter_type === 'custom_func' || columnObj.filter_type === 'multi_select_custom_func') {\n\t\t\t\t\t\t\tcustom_func_filter_value_holder = $('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).val();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$filter_selector.empty();\n\t\t\t\t\t\t$filter_selector.append(column_data);\n\t\t\t\t\t\t//console.log('column_position: ' + column_position + ', aoPreSearchCols[]: ' + settingsDt.aoPreSearchCols[column_position].sSearch);\n\t\t\t\t\t\t//console.log('column_position: ' + column_position + ', column: ' + tableDT.column([column_position]).search());\n\t\t\t\t\t\tif (settingsDt.aoPreSearchCols[column_position].sSearch !== '') {\n\t\t\t\t\t\t\ttmpStr = settingsDt.aoPreSearchCols[column_position].sSearch;\n\t\t\t\t\t\t\tif (columnObj.filter_type === \"select\") {\n\t\t\t\t\t\t\t\ttmpStr = yadcfParseMatchFilter(tmpStr, getOptions(oTable.selector)[column_number].filter_match_mode);\n\t\t\t\t\t\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).val(tmpStr).addClass(\"inuse\");\n\t\t\t\t\t\t\t} else if (columnObj.filter_type === \"multi_select\") {\n\t\t\t\t\t\t\t\ttmpStr = yadcfParseMatchFilterMultiSelect(tmpStr, getOptions(oTable.selector)[column_number].filter_match_mode);\n\t\t\t\t\t\t\t\ttmpStr = tmpStr.replace(/\\\\/g, \"\");\n\t\t\t\t\t\t\t\ttmpStr = tmpStr.split(\"|\");\n\t\t\t\t\t\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).val(tmpStr);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (columnObj.filter_type === 'custom_func' || columnObj.filter_type === 'multi_select_custom_func') {\n\t\t\t\t\t\t\ttmpStr = custom_func_filter_value_holder;\n\t\t\t\t\t\t\tif (tmpStr === '-1' || tmpStr === undefined) {\n\t\t\t\t\t\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).val(tmpStr);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).val(tmpStr).addClass(\"inuse\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (columnObj.select_type === 'chosen') {\n\t\t\t\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).trigger(\"chosen:updated\");\n\t\t\t\t\t\t} else if (columnObj.select_type !== undefined && columnObj.select_type === 'select2') {\n\t\t\t\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).select2('val', tmpStr);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (columnObj.filter_type === \"auto_complete\") {\n\t\t\t\t\t\t$(document).data(\"yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number, column_data);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (filter_container_id === undefined) {\n\t\t\t\t\t\tif ($(filter_selector_string + \" div.DataTables_sort_wrapper\").length > 0) {\n\t\t\t\t\t\t\t$(filter_selector_string + \" div.DataTables_sort_wrapper\").css(\"display\", \"inline-block\");\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ($(\"#yadcf-filter-wrapper-\" + filter_container_id).length === 0) {\n\t\t\t\t\t\t\t$(\"#\" + filter_container_id).append(\"
    \");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfilter_selector_string = \"#yadcf-filter-wrapper-\" + filter_container_id;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (columnObj.filter_type === \"select\" || columnObj.filter_type === 'custom_func') {\n\n\t\t\t\t\t\t//add a wrapper to hold both filter and reset button\n\t\t\t\t\t\t$(filter_selector_string).append(\"
    \");\n\t\t\t\t\t\tfilter_selector_string = filter_selector_string + \" div.yadcf-filter-wrapper\";\n\n\t\t\t\t\t\tif (columnObj.filter_type === \"select\") {\n\t\t\t\t\t\t\tfilterActionStr = 'onchange=\"yadcf.doFilter(this, \\'' + table_selector_jq_friendly + '\\', ' + column_number + ', \\'' + filter_match_mode + '\\');\"';\n\t\t\t\t\t\t\tif (columnObj.externally_triggered === true) {\n\t\t\t\t\t\t\t\tfilterActionStr = '';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t$(filter_selector_string).append(\"\");\n\t\t\t\t\t\t\tif (filter_reset_button_text !== false) {\n\t\t\t\t\t\t\t\t$(filter_selector_string).find(\".yadcf-filter\").after(\"\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfilterActionStr = 'onchange=\"yadcf.doFilterCustomDateFunc(this, \\'' + table_selector_jq_friendly + '\\', ' + column_number + ');\"';\n\t\t\t\t\t\t\tif (columnObj.externally_triggered === true) {\n\t\t\t\t\t\t\t\tfilterActionStr = '';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t$(filter_selector_string).append(\"\");\n\t\t\t\t\t\t\tif (filter_reset_button_text !== false) {\n\t\t\t\t\t\t\t\t$(filter_selector_string).find(\".yadcf-filter\").after(\"\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (settingsDt.oFeatures.bStateSave === true && settingsDt.oLoadedState) {\n\t\t\t\t\t\t\t\tif (settingsDt.oLoadedState.yadcfState && settingsDt.oLoadedState.yadcfState[table_selector_jq_friendly] && settingsDt.oLoadedState.yadcfState[table_selector_jq_friendly][column_number]) {\n\t\t\t\t\t\t\t\t\ttmpStr = settingsDt.oLoadedState.yadcfState[table_selector_jq_friendly][column_number].from;\n\t\t\t\t\t\t\t\t\tif (tmpStr === '-1' || tmpStr === undefined) {\n\t\t\t\t\t\t\t\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).val(tmpStr);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).val(tmpStr).addClass(\"inuse\");\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (settingsDt.oFeatures.bServerSide !== true) {\n\t\t\t\t\t\t\t\taddCustomFunctionFilterCapability(table_selector_jq_friendly, \"yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number, column_number);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (settingsDt.aoPreSearchCols[column_position].sSearch !== '') {\n\t\t\t\t\t\t\ttmpStr = settingsDt.aoPreSearchCols[column_position].sSearch;\n\t\t\t\t\t\t\ttmpStr = yadcfParseMatchFilter(tmpStr, getOptions(oTable.selector)[column_number].filter_match_mode);\n\t\t\t\t\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).val(tmpStr).addClass(\"inuse\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (columnObj.select_type !== undefined && columnObj.select_type === 'chosen') {\n\t\t\t\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).chosen(columnObj.select_type_options);\n\t\t\t\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).next().attr(\"onclick\", \"yadcf.stopPropagation(event);\").attr(\"onmousedown\", \"yadcf.stopPropagation(event);\");\n\t\t\t\t\t\t} else if (columnObj.select_type !== undefined && columnObj.select_type === 'select2') {\n\t\t\t\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).select2(columnObj.select_type_options);\n\t\t\t\t\t\t\tif ($(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).next().hasClass('select2-container')) {\n\t\t\t\t\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).next().attr(\"onclick\", \"yadcf.stopPropagation(event);\").attr(\"onmousedown\", \"yadcf.stopPropagation(event);\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if (columnObj.filter_type === \"multi_select\" || columnObj.filter_type === 'multi_select_custom_func') {\n\n\t\t\t\t\t\t//add a wrapper to hold both filter and reset button\n\t\t\t\t\t\t$(filter_selector_string).append(\"
    \");\n\t\t\t\t\t\tfilter_selector_string = filter_selector_string + \" div.yadcf-filter-wrapper\";\n\n\t\t\t\t\t\tif (columnObj.filter_type === \"multi_select\") {\n\t\t\t\t\t\t\tfilterActionStr = 'onchange=\"yadcf.doFilterMultiSelect(this, \\'' + table_selector_jq_friendly + '\\', ' + column_number + ', \\'' + filter_match_mode + '\\');\"';\n\t\t\t\t\t\t\tif (columnObj.externally_triggered === true) {\n\t\t\t\t\t\t\t\tfilterActionStr = '';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t$(filter_selector_string).append(\"\");\n\n\t\t\t\t\t\t\tif (filter_reset_button_text !== false) {\n\t\t\t\t\t\t\t\t$(filter_selector_string).find(\".yadcf-filter\").after(\"\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (settingsDt.aoPreSearchCols[column_position].sSearch !== '') {\n\t\t\t\t\t\t\t\ttmpStr = settingsDt.aoPreSearchCols[column_position].sSearch;\n\t\t\t\t\t\t\t\ttmpStr = yadcfParseMatchFilterMultiSelect(tmpStr, getOptions(oTable.selector)[column_number].filter_match_mode);\n\t\t\t\t\t\t\t\ttmpStr = tmpStr.replace(/\\\\/g, \"\");\n\t\t\t\t\t\t\t\ttmpStr = tmpStr.split(\"|\");\n\t\t\t\t\t\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).val(tmpStr);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfilterActionStr = 'onchange=\"yadcf.doFilterCustomDateFunc(this, \\'' + table_selector_jq_friendly + '\\', ' + column_number + ');\"';\n\t\t\t\t\t\t\tif (columnObj.externally_triggered === true) {\n\t\t\t\t\t\t\t\tfilterActionStr = '';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t$(filter_selector_string).append(\"\");\n\n\t\t\t\t\t\t\tif (filter_reset_button_text !== false) {\n\t\t\t\t\t\t\t\t$(filter_selector_string).find(\".yadcf-filter\").after(\"\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (settingsDt.oFeatures.bStateSave === true && settingsDt.oLoadedState) {\n\t\t\t\t\t\t\t\tif (settingsDt.oLoadedState.yadcfState && settingsDt.oLoadedState.yadcfState[table_selector_jq_friendly] && settingsDt.oLoadedState.yadcfState[table_selector_jq_friendly][column_number]) {\n\t\t\t\t\t\t\t\t\ttmpStr = settingsDt.oLoadedState.yadcfState[table_selector_jq_friendly][column_number].from;\n\t\t\t\t\t\t\t\t\tif (tmpStr === '-1' || tmpStr === undefined) {\n\t\t\t\t\t\t\t\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).val(tmpStr);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).val(tmpStr).addClass(\"inuse\");\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (settingsDt.oFeatures.bServerSide !== true) {\n\t\t\t\t\t\t\t\taddCustomFunctionFilterCapability(table_selector_jq_friendly, \"yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number, column_number);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (columnObj.filter_container_id === undefined && columnObj.select_type_options.width === undefined) {\n\t\t\t\t\t\t\tcolumnObj.select_type_options = $.extend(columnObj.select_type_options, {width: $(filter_selector_string).closest(\"th\").width() + \"px\"});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (columnObj.filter_container_id !== undefined && columnObj.select_type_options.width === undefined) {\n\t\t\t\t\t\t\tcolumnObj.select_type_options = $.extend(columnObj.select_type_options, {width: $(filter_selector_string).closest('#' + columnObj.filter_container_id).width() + \"px\"});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (columnObj.select_type !== undefined && columnObj.select_type === 'chosen') {\n\t\t\t\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).chosen(columnObj.select_type_options);\n\t\t\t\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).next().attr(\"onclick\", \"yadcf.stopPropagation(event);\").attr(\"onmousedown\", \"yadcf.stopPropagation(event);\");\n\t\t\t\t\t\t} else if (columnObj.select_type !== undefined && columnObj.select_type === 'select2') {\n\t\t\t\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).select2(columnObj.select_type_options);\n\t\t\t\t\t\t\tif ($(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).next().hasClass('select2-container')) {\n\t\t\t\t\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).next().attr(\"onclick\", \"yadcf.stopPropagation(event);\").attr(\"onmousedown\", \"yadcf.stopPropagation(event);\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if (columnObj.filter_type === \"auto_complete\") {\n\n\t\t\t\t\t\t//add a wrapper to hold both filter and reset button\n\t\t\t\t\t\t$(filter_selector_string).append(\"
    \");\n\t\t\t\t\t\tfilter_selector_string = filter_selector_string + \" div.yadcf-filter-wrapper\";\n\n\t\t\t\t\t\tfilterActionStr = 'onkeyup=\"yadcf.autocompleteKeyUP(\\'' + table_selector_jq_friendly + '\\',event);\"';\n\t\t\t\t\t\tif (columnObj.externally_triggered === true) {\n\t\t\t\t\t\t\tfilterActionStr = '';\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(filter_selector_string).append(\"\");\n\t\t\t\t\t\t$(document).data(\"yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number, column_data);\n\n\t\t\t\t\t\tif (filter_reset_button_text !== false) {\n\t\t\t\t\t\t\t$(filter_selector_string).find(\".yadcf-filter\").after(\"\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if (columnObj.filter_type === \"text\") {\n\n\t\t\t\t\t\t//add a wrapper to hold both filter and reset button\n\t\t\t\t\t\t$(filter_selector_string).append(\"
    \");\n\t\t\t\t\t\tfilter_selector_string = filter_selector_string + \" div.yadcf-filter-wrapper\";\n\n\t\t\t\t\t\tfilterActionStr = 'onkeyup=\"yadcf.textKeyUP(\\'' + table_selector_jq_friendly + '\\', ' + column_number + ');\"';\n\t\t\t\t\t\tif (columnObj.externally_triggered === true) {\n\t\t\t\t\t\t\tfilterActionStr = '';\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\texclude_str = '';\n\t\t\t\t\t\tif (columnObj.exclude === true) {\n\t\t\t\t\t\t\texclude_str = '' +\n\t\t\t\t\t\t\t\t'
    ' + columnObj.exclude_label + '
    ';\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t$(filter_selector_string).append(exclude_str + \"\");\n\n\t\t\t\t\t\tif (filter_reset_button_text !== false) {\n\t\t\t\t\t\t\t$(filter_selector_string).find(\".yadcf-filter\").after(\"\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (settingsDt.aoPreSearchCols[column_position].sSearch !== '') {\n\t\t\t\t\t\t\ttmpStr = settingsDt.aoPreSearchCols[column_position].sSearch;\n\t\t\t\t\t\t\tif (columnObj.exclude === true) {\n\t\t\t\t\t\t\t\tif (tmpStr.indexOf('^((?!') !== -1) {\n\t\t\t\t\t\t\t\t\t$('#yadcf-filter-wrapper-' + table_selector_jq_friendly + '-' + column_number).find(':checkbox').prop('checked', true);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttmpStr = tmpStr.substring(5, tmpStr.indexOf(').)'));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttmpStr = yadcfParseMatchFilter(tmpStr, getOptions(oTable.selector)[column_number].filter_match_mode);\n\t\t\t\t\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).val(tmpStr).addClass(\"inuse\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if (columnObj.filter_type === \"date\") {\n\n\t\t\t\t\t\taddDateFilter(filter_selector_string, table_selector_jq_friendly, column_number, filter_reset_button_text, filter_default_label, date_format);\n\n\t\t\t\t\t} else if (columnObj.filter_type === \"range_number\") {\n\n\t\t\t\t\t\taddRangeNumberFilter(filter_selector_string, table_selector_jq_friendly, column_number, filter_reset_button_text, filter_default_label, ignore_char);\n\n\t\t\t\t\t} else if (columnObj.filter_type === \"range_number_slider\") {\n\n\t\t\t\t\t\taddRangeNumberSliderFilter(filter_selector_string, table_selector_jq_friendly, column_number, filter_reset_button_text, min_val, max_val, ignore_char);\n\n\t\t\t\t\t} else if (columnObj.filter_type === \"range_date\") {\n\n\t\t\t\t\t\taddRangeDateFilter(filter_selector_string, table_selector_jq_friendly, column_number, filter_reset_button_text, filter_default_label, date_format);\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ($(document).data(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number + \"_val\") !== undefined && $(document).data(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number + \"_val\") !== \"-1\") {\n\t\t\t\t\t$(filter_selector_string).find(\".yadcf-filter\").val($(document).data(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number + \"_val\"));\n\t\t\t\t}\n\t\t\t\tif (columnObj.filter_type === \"auto_complete\") {\n\t\t\t\t\tif (columnObj.filter_plugin_options !== undefined) {\n\t\t\t\t\t\tif (columnObj.filter_plugin_options.source !== undefined) {\n\t\t\t\t\t\t\tcolumnObj.filter_plugin_options.select = autocompleteSelect;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcolumnObj.filter_plugin_options.source = $(document).data(\"yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number);\n\t\t\t\t\t\t\tcolumnObj.filter_plugin_options.select = autocompleteSelect;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcolumnObj.filter_plugin_options = {\n\t\t\t\t\t\t\tsource: $(document).data(\"yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number),\n\t\t\t\t\t\t\tselect: autocompleteSelect\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tif (columnObj.externally_triggered === true) {\n\t\t\t\t\t\tdelete columnObj.filter_plugin_options.select;\n\t\t\t\t\t}\n\t\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).autocomplete(columnObj.filter_plugin_options);\n\t\t\t\t\tif (settingsDt.aoPreSearchCols[column_position].sSearch !== '') {\n\t\t\t\t\t\ttmpStr = settingsDt.aoPreSearchCols[column_position].sSearch;\n\t\t\t\t\t\ttmpStr = yadcfParseMatchFilter(tmpStr, getOptions(oTable.selector)[column_number].filter_match_mode);\n\t\t\t\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).val(tmpStr).addClass(\"inuse\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (exFilterColumnQueue.length > 0) {\n\t\t\t(exFilterColumnQueue.shift())();\n\t\t}\n\t}\n\n\tfunction endsWith(str, suffix) {\n\t\treturn str.indexOf(suffix, str.length - suffix.length) !== -1;\n\t}\n\n\tfunction rangeClear(table_selector_jq_friendly, event) {\n\t\tevent = eventTargetFixUp(event);\n\t\t$.fn.dataTableExt.iApiIndex = oTablesIndex[table_selector_jq_friendly];\n\t\tvar oTable = oTables[table_selector_jq_friendly],\n\t\t\tyadcfState,\n\t\t\tsettingsDt,\n\t\t\tcolumn_number,\n\t\t\tcolumn_number_filter,\n\t\t\tcurrentFilterValues;\n\n\t\tsettingsDt = getSettingsObjFromTable(oTable);\n\t\tcolumn_number = parseInt($(event.target).parent().attr(\"id\").replace('yadcf-filter-wrapper-' + table_selector_jq_friendly + '-', ''), 10);\n\n\t\tif ((settingsDt.oSavedState != undefined && settingsDt.oSavedState.ColReorder !== undefined) || (plugins[table_selector_jq_friendly] !== undefined && plugins[table_selector_jq_friendly].ColReorder !== undefined)) {\n\t\t\tinitColReorder(settingsDt.oSavedState, table_selector_jq_friendly);\n\t\t\tcolumn_number_filter = plugins[table_selector_jq_friendly].ColReorder[column_number];\n\t\t} else {\n\t\t\tcolumn_number_filter = column_number;\n\t\t}\n\n\t\tcurrentFilterValues = exGetColumnFilterVal(oTable, column_number);\n\t\tif (currentFilterValues.from === '' && currentFilterValues.to === '') {\n\t\t\treturn;\n\t\t}\n\n\t\t$(event.target).parent().find(\".yadcf-filter-range\").val(\"\");\n\t\tif ($(event.target).parent().find(\".yadcf-filter-range-number\").length > 0) {\n\t\t\t$($(event.target).parent().find(\".yadcf-filter-range\")[0]).focus();\n\t\t}\n\n\t\tif (oTable.fnSettings().oFeatures.bServerSide !== true) {\n\t\t\toTable.fnDraw();\n\t\t} else {\n\t\t\toTable.fnFilter('-yadcf_delim-', column_number_filter);\n\t\t}\n\n\t\tif (!oTable.fnSettings().oLoadedState) {\n\t\t\toTable.fnSettings().oLoadedState = {};\n\t\t\toTable.fnSettings().oApi._fnSaveState(oTable.fnSettings());\n\t\t}\n\t\tif (oTable.fnSettings().oFeatures.bStateSave === true) {\n\t\t\tif (oTable.fnSettings().oLoadedState.yadcfState !== undefined && oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly] !== undefined) {\n\t\t\t\toTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number] =\n\t\t\t\t\t{\n\t\t\t\t\t\t'from' : \"\",\n\t\t\t\t\t\t'to' : \"\"\n\t\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tyadcfState = {};\n\t\t\t\tyadcfState[table_selector_jq_friendly] = [];\n\t\t\t\tyadcfState[table_selector_jq_friendly][column_number] = {\n\t\t\t\t\t'from' : \"\",\n\t\t\t\t\t'to' : \"\"\n\t\t\t\t};\n\t\t\t\toTable.fnSettings().oLoadedState.yadcfState = yadcfState;\n\t\t\t}\n\t\t\toTable.fnSettings().oApi._fnSaveState(oTable.fnSettings());\n\t\t}\n\t\tresetIApiIndex();\n\n\t\t$(event.target).parent().find(\".yadcf-filter-range\").removeClass(\"inuse\");\n\n\t\treturn;\n\t}\n\n\tfunction rangeNumberSliderClear(table_selector_jq_friendly, event) {\n\t\tevent = eventTargetFixUp(event);\n\t\t$.fn.dataTableExt.iApiIndex = oTablesIndex[table_selector_jq_friendly];\n\t\tvar oTable = oTables[table_selector_jq_friendly],\n\t\t\tmin_val,\n\t\t\tmax_val,\n\t\t\tcurrentFilterValues,\n\t\t\tcolumn_number;\n\n\t\tcolumn_number = parseInt($(event.target).prev().find(\".yadcf-filter-range-number-slider\").attr(\"id\").replace(\"yadcf-filter-\" + table_selector_jq_friendly + \"-slider-\", \"\"), 10);\n\n\t\tmin_val = +$($(event.target).parent().find(\".yadcf-filter-range-number-slider-min-tip-hidden\")).text();\n\t\tmax_val = +$($(event.target).parent().find(\".yadcf-filter-range-number-slider-max-tip-hidden\")).text();\n\n\t\tcurrentFilterValues = exGetColumnFilterVal(oTable, column_number);\n\t\tif (+currentFilterValues.from === min_val && +currentFilterValues.to === max_val) {\n\t\t\treturn;\n\t\t}\n\n\t\t$(\"#\" + $(event.target).prev().find(\".yadcf-filter-range-number-slider\").attr(\"id\")).slider(\"option\", \"yadcf-reset\", true);\n\t\t$(\"#\" + $(event.target).prev().find(\".yadcf-filter-range-number-slider\").attr(\"id\")).slider(\"option\", \"values\", [min_val, max_val]);\n\n\t\t$($(event.target).prev().find(\".ui-slider-handle\")[0]).attr(\"tabindex\", -1).focus();\n\n\t\t$($(event.target).prev().find(\".ui-slider-handle\")[0]).removeClass(\"inuse\");\n\t\t$($(event.target).prev().find(\".ui-slider-handle\")[1]).removeClass(\"inuse\");\n\t\t$(event.target).prev().find(\".ui-slider-range\").removeClass(\"inuse\");\n\n\t\toTable.fnDraw();\n\t\tresetIApiIndex();\n\n\t\treturn;\n\t}\n\n\tfunction dateKeyUP(table_selector_jq_friendly, date_format, event) {\n\t\tvar oTable,\n\t\t\tdate,\n\t\t\tdateId,\n\t\t\tcolumn_number;\n\n\t\tevent = eventTargetFixUp(event);\n\n\t\tdateId = event.target.id;\n\t\tdate = document.getElementById(dateId).value;\n\t\ttry {\n\t\t\tif (date.length === (date_format.length + 2)) {\n\t\t\t\tdate = (date !== \"\") ? $.datepicker.parseDate(date_format, date) : date;\n\t\t\t}\n\t\t} catch (err1) {}\n\n\t\tif (((date instanceof Date) || date === \"\")) {\n\n\t\t\t$.fn.dataTableExt.iApiIndex = oTablesIndex[table_selector_jq_friendly];\n\t\t\toTable = oTables[table_selector_jq_friendly];\n\t\t\tcolumn_number = parseInt(dateId.replace(\"yadcf-filter-\" + table_selector_jq_friendly + \"-\", \"\"), 10);\n\n\t\t\tif (date instanceof Date) {\n\t\t\t\t$(\"#\" + dateId).addClass('inuse');\n\t\t\t\toTable.fnFilter(document.getElementById(dateId).value, column_number);\n\t\t\t} else {\n\t\t\t\t$(\"#\" + dateId).removeClass('inuse');\n\t\t\t}\n\t\t\tif ($.trim(event.target.value) === '' && $(event.target).hasClass('inuse')) {\n\t\t\t\t$('#' + event.target.id).removeClass('inuse');\n\t\t\t\toTable.fnFilter('', column_number);\n\t\t\t}\n\t\t\tresetIApiIndex();\n\t\t} else if ($(event.target).hasClass('inuse')) {\n\n\t\t\t$.fn.dataTableExt.iApiIndex = oTablesIndex[table_selector_jq_friendly];\n\t\t\toTable = oTables[table_selector_jq_friendly];\n\t\t\tcolumn_number = parseInt(dateId.replace(\"yadcf-filter-\" + table_selector_jq_friendly + \"-\", \"\"), 10);\n\n\t\t\t$(\"#\" + dateId).removeClass('inuse');\n\n\t\t\toTable.fnFilter('', column_number);\n\t\t\tresetIApiIndex();\n\t\t}\n\t}\n\n\tfunction rangeDateKeyUP(table_selector_jq_friendly, date_format, event) {\n\t\tevent = eventTargetFixUp(event);\n\t\t$.fn.dataTableExt.iApiIndex = oTablesIndex[table_selector_jq_friendly];\n\t\tvar oTable = oTables[table_selector_jq_friendly],\n\t\t\tmin,\n\t\t\tmax,\n\t\t\tfromId,\n\t\t\ttoId,\n\t\t\tcolumn_number,\n\t\t\toptions,\n\t\t\tkeyUp;\n\n\t\tcolumn_number = parseInt($(event.target).attr(\"id\").replace('-from-date-', '').replace('-to-date-', '').replace('yadcf-filter-' + table_selector_jq_friendly, ''), 10);\n\t\toptions = getOptions(oTable.selector)[column_number];\n\n\t\tkeyUp = function () {\n\t\t\tif (event.target.id.indexOf(\"-from-\") !== -1) {\n\t\t\t\tfromId = event.target.id;\n\t\t\t\ttoId = event.target.id.replace(\"-from-\", \"-to-\");\n\n\t\t\t\tmin = document.getElementById(fromId).value;\n\t\t\t\tmax = document.getElementById(toId).value;\n\t\t\t} else {\n\t\t\t\ttoId = event.target.id;\n\t\t\t\tfromId = event.target.id.replace(\"-to-\", \"-from-\");\n\n\t\t\t\tmax = document.getElementById(toId).value;\n\t\t\t\tmin = document.getElementById(fromId).value;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tif (min.length === (date_format.length + 2)) {\n\t\t\t\t\tmin = (min !== \"\") ? $.datepicker.parseDate(date_format, min) : min;\n\t\t\t\t}\n\t\t\t} catch (err1) {}\n\t\t\ttry {\n\t\t\t\tif (max.length === (date_format.length + 2)) {\n\t\t\t\t\tmax = (max !== \"\") ? $.datepicker.parseDate(date_format, max) : max;\n\t\t\t\t}\n\t\t\t} catch (err2) {}\n\n\t\t\tif (((max instanceof Date) && (min instanceof Date) && (max >= min)) || min === \"\" || max === \"\") {\n\n\t\t\t\tif (oTable.fnSettings().oFeatures.bServerSide !== true) {\n\t\t\t\t\toTable.fnDraw();\n\t\t\t\t} else {\n\t\t\t\t\toTable.fnFilter(document.getElementById(fromId).value + '-yadcf_delim-' + document.getElementById(toId).value, column_number);\n\t\t\t\t}\n\n\t\t\t\tif (min instanceof Date) {\n\t\t\t\t\t$(\"#\" + fromId).addClass(\"inuse\");\n\t\t\t\t} else {\n\t\t\t\t\t$(\"#\" + fromId).removeClass(\"inuse\");\n\t\t\t\t}\n\t\t\t\tif (max instanceof Date) {\n\t\t\t\t\t$(\"#\" + toId).addClass(\"inuse\");\n\t\t\t\t} else {\n\t\t\t\t\t$(\"#\" + toId).removeClass(\"inuse\");\n\t\t\t\t}\n\n\t\t\t\tif ($.trim(event.target.value) === \"\" && $(event.target).hasClass(\"inuse\")) {\n\t\t\t\t\t$(\"#\" + event.target.id).removeClass(\"inuse\");\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tresetIApiIndex();\n\t\t};\n\n\t\tif (options.filter_delay === undefined) {\n\t\t\tkeyUp(table_selector_jq_friendly, event);\n\t\t} else {\n\t\t\tyadcfDelay(function () {\n\t\t\t\tkeyUp(table_selector_jq_friendly, event);\n\t\t\t}, options.filter_delay);\n\t\t}\n\t}\n\n\tfunction rangeNumberKeyUP(table_selector_jq_friendly, event) {\n\t\tevent = eventTargetFixUp(event);\n\t\t$.fn.dataTableExt.iApiIndex = oTablesIndex[table_selector_jq_friendly];\n\t\tvar oTable = oTables[table_selector_jq_friendly],\n\t\t\tmin,\n\t\t\tmax,\n\t\t\tfromId,\n\t\t\ttoId,\n\t\t\tyadcfState,\n\t\t\tcolumn_number,\n\t\t\toptions,\n\t\t\tkeyUp;\n\n\t\tcolumn_number = parseInt($(event.target).attr(\"id\").replace('-from-', '').replace('-to-', '').replace('yadcf-filter-' + table_selector_jq_friendly, ''), 10);\n\t\toptions = getOptions(oTable.selector)[column_number];\n\n\t\tkeyUp = function () {\n\n\t\t\tif (event.target.id.indexOf(\"-from-\") !== -1) {\n\t\t\t\tfromId = event.target.id;\n\t\t\t\ttoId = event.target.id.replace(\"-from-\", \"-to-\");\n\n\t\t\t\tmin = document.getElementById(fromId).value;\n\t\t\t\tmax = document.getElementById(toId).value;\n\t\t\t} else {\n\t\t\t\ttoId = event.target.id;\n\t\t\t\tfromId = event.target.id.replace(\"-to-\", \"-from-\");\n\n\t\t\t\tmax = document.getElementById(toId).value;\n\t\t\t\tmin = document.getElementById(fromId).value;\n\t\t\t}\n\n\t\t\tmin = (min !== \"\") ? (+min) : min;\n\t\t\tmax = (max !== \"\") ? (+max) : max;\n\n\t\t\tif ((!isNaN(max) && !isNaN(min) && (max >= min)) || min === \"\" || max === \"\") {\n\n\t\t\t\tif (oTable.fnSettings().oFeatures.bServerSide !== true) {\n\t\t\t\t\toTable.fnDraw();\n\t\t\t\t} else {\n\t\t\t\t\toTable.fnFilter(min + '-yadcf_delim-' + max, column_number);\n\t\t\t\t}\n\t\t\t\tif (document.getElementById(fromId).value !== \"\") {\n\t\t\t\t\t$(\"#\" + fromId).addClass(\"inuse\");\n\t\t\t\t}\n\t\t\t\tif (document.getElementById(toId).value !== \"\") {\n\t\t\t\t\t$(\"#\" + toId).addClass(\"inuse\");\n\t\t\t\t}\n\n\t\t\t\tif ($.trim(event.target.value) === \"\" && $(event.target).hasClass(\"inuse\")) {\n\t\t\t\t\t$(\"#\" + event.target.id).removeClass(\"inuse\");\n\t\t\t\t}\n\t\t\t\tif (!oTable.fnSettings().oLoadedState) {\n\t\t\t\t\toTable.fnSettings().oLoadedState = {};\n\t\t\t\t\toTable.fnSettings().oApi._fnSaveState(oTable.fnSettings());\n\t\t\t\t}\n\t\t\t\tif (oTable.fnSettings().oFeatures.bStateSave === true) {\n\t\t\t\t\tif (oTable.fnSettings().oLoadedState.yadcfState !== undefined && oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly] !== undefined) {\n\t\t\t\t\t\toTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number] =\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'from' : min,\n\t\t\t\t\t\t\t\t'to' : max\n\t\t\t\t\t\t\t};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tyadcfState = {};\n\t\t\t\t\t\tyadcfState[table_selector_jq_friendly] = [];\n\t\t\t\t\t\tyadcfState[table_selector_jq_friendly][column_number] = {\n\t\t\t\t\t\t\t'from' : min,\n\t\t\t\t\t\t\t'to' : max\n\t\t\t\t\t\t};\n\t\t\t\t\t\toTable.fnSettings().oLoadedState.yadcfState = yadcfState;\n\t\t\t\t\t}\n\t\t\t\t\toTable.fnSettings().oApi._fnSaveState(oTable.fnSettings());\n\t\t\t\t}\n\t\t\t}\n\t\t\tresetIApiIndex();\n\t\t};\n\n\t\tif (options.filter_delay === undefined) {\n\t\t\tkeyUp();\n\t\t} else {\n\t\t\tyadcfDelay(function () {\n\t\t\t\tkeyUp();\n\t\t\t}, options.filter_delay);\n\t\t}\n\t}\n\n\tfunction doFilterMultiTablesMultiSelect(tablesSelectors, event, column_number_str, clear) {\n\n\t\tvar columnsObj = getOptions(tablesSelectors + '_' + column_number_str)[column_number_str],\n\t\t\tregex = false,\n\t\t\tsmart = true,\n\t\t\tcaseInsen = true,\n\t\t\ttablesAsOne,\n\t\t\ttablesArray = oTables[tablesSelectors],\n\t\t\tselected_values = $(event.target).val(),\n\t\t\ti;\n\n\t\tevent = eventTargetFixUp(event);\n\t\ttablesAsOne = new $.fn.dataTable.Api(tablesArray);\n\n\t\tif (clear !== undefined || selected_values == undefined || selected_values.length === 0) {\n\t\t\tif (clear !== undefined) {\n\t\t\t\t$(event.target).parent().find('select').val('-1').focus();\n\t\t\t\t$(event.target).parent().find('select').removeClass(\"inuse\");\n\t\t\t}\n\t\t\tif (columnsObj.column_number instanceof Array) {\n\t\t\t\ttablesAsOne.columns(columnsObj.column_number).search('').draw();\n\t\t\t} else {\n\t\t\t\ttablesAsOne.search('').draw();\n\t\t\t}\n\t\t\tif (columnsObj.select_type === 'chosen') {\n\t\t\t\t$('#' + columnsObj.filter_container_id + ' select').trigger(\"chosen:updated\");\n\t\t\t} else if (columnsObj.select_type === 'select2') {\n\t\t\t\t$('#' + columnsObj.filter_container_id + ' select').select2('val', '-1');\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t$(event.target).addClass(\"inuse\");\n\n\t\tregex = true;\n\t\tsmart = false;\n\t\tcaseInsen = columnsObj.case_insensitive;\n\n\t\tif (selected_values !== null) {\n\t\t\tfor (i = selected_values.length - 1; i >= 0; i--) {\n\t\t\t\tif (selected_values[i] === \"-1\") {\n\t\t\t\t\tselected_values.splice(i, 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (selected_values.length !== 0) {\n\t\t\t\tselected_values = selected_values.join('narutouzomaki');\n\t\t\t\tselected_values = selected_values.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, \"\\\\$1\");\n\t\t\t\tselected_values = selected_values.split('narutouzomaki').join('|');\n\t\t\t}\n\t\t}\n\t\tif (columnsObj.filter_match_mode === \"exact\") {\n\t\t\tselected_values = \"^\" + selected_values + \"$\";\n\t\t} else if (columnsObj.filter_match_mode === \"startsWith\") {\n\t\t\tselected_values = \"^\" + selected_values;\n\t\t}\n\t\tif (columnsObj.column_number instanceof Array) {\n\t\t\ttablesAsOne.columns(columnsObj.column_number).search(selected_values, regex, smart, caseInsen).draw();\n\t\t} else {\n\t\t\ttablesAsOne.search(selected_values, regex, smart, caseInsen).draw();\n\t\t}\n\t}\n\n\tfunction doFilterMultiTables(tablesSelectors, event, column_number_str, clear) {\n\n\t\tvar columnsObj = getOptions(tablesSelectors + '_' + column_number_str)[column_number_str],\n\t\t\tregex = false,\n\t\t\tsmart = true,\n\t\t\tcaseInsen = true,\n\t\t\tserachVal,\n\t\t\ttablesAsOne,\n\t\t\ttablesArray = oTables[tablesSelectors];\n\n\t\tevent = eventTargetFixUp(event);\n\t\ttablesAsOne = new $.fn.dataTable.Api(tablesArray);\n\n\t\tif (clear !== undefined || event.target.value === '-1') {\n\t\t\tif (clear !== undefined) {\n\t\t\t\t$(event.target).parent().find('select').val('-1').focus();\n\t\t\t\t$(event.target).parent().find('select').removeClass(\"inuse\");\n\t\t\t}\n\t\t\tif (columnsObj.column_number instanceof Array) {\n\t\t\t\ttablesAsOne.columns(columnsObj.column_number).search('').draw();\n\t\t\t} else {\n\t\t\t\ttablesAsOne.search('').draw();\n\t\t\t}\n\t\t\tif (columnsObj.select_type === 'chosen') {\n\t\t\t\t$('#' + columnsObj.filter_container_id + ' select').trigger(\"chosen:updated\");\n\t\t\t} else if (columnsObj.select_type === 'select2') {\n\t\t\t\t$('#' + columnsObj.filter_container_id + ' select').select2('val', '-1');\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t$(event.target).addClass(\"inuse\");\n\n\t\tserachVal = event.target.value;\n\t\tsmart = false;\n\t\tcaseInsen = columnsObj.case_insensitive;\n/*\n\t\tif (columnsObj.filter_match_mode === \"contains\") {\n\t\t\tregex = false;\n\t\t} else if (columnsObj.filter_match_mode === \"exact\") {\n\t\t\tregex = true;\n\t\t\tserachVal = \"^\" + serachVal + \"$\";\n\t\t} else if (columnsObj.filter_match_mode === \"startsWith\") {\n\t\t\tregex = true;\n\t\t\tserachVal = \"^\" + serachVal;\n\t\t}*/\n\t\tif (columnsObj.column_number instanceof Array) {\n\t\t\ttablesAsOne.columns(columnsObj.column_number).search(serachVal, regex, smart, caseInsen).draw();\n\t\t} else {\n\t\t\ttablesAsOne.search(serachVal, regex, smart, caseInsen).draw();\n\t\t}\n\t}\n\n\tfunction textKeyUpMultiTables(tablesSelectors, event, column_number_str, clear) {\n\n\t\tvar keyUp,\n\t\t\tcolumnsObj = getOptions(tablesSelectors + '_' + column_number_str)[column_number_str],\n\t\t\tregex = false,\n\t\t\tsmart = true,\n\t\t\tcaseInsen = true,\n\t\t\tserachVal,\n\t\t\ttablesAsOne,\n\t\t\ttablesArray = oTables[tablesSelectors];\n\n\t\tevent = eventTargetFixUp(event);\n\t\ttablesAsOne = new $.fn.dataTable.Api(tablesArray);\n\n\t\tkeyUp = function (tablesAsOne, event, clear) {\n\n\t\t\tif (clear !== undefined || event.target.value === '') {\n\t\t\t\tif (clear !== undefined) {\n\t\t\t\t\t$(event.target).prev().val(\"\").focus();\n\t\t\t\t\t$(event.target).prev().removeClass(\"inuse\");\n\t\t\t\t} else {\n\t\t\t\t\t$(event.target).val(\"\").focus();\n\t\t\t\t\t$(event.target).removeClass(\"inuse\");\n\t\t\t\t}\n\t\t\t\tif (columnsObj.column_number instanceof Array) {\n\t\t\t\t\ttablesAsOne.columns(columnsObj.column_number).search('').draw();\n\t\t\t\t} else {\n\t\t\t\t\ttablesAsOne.search('').draw();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$(event.target).addClass(\"inuse\");\n\n\t\t\tserachVal = event.target.value;\n\t\t\tsmart = false;\n\t\t\tcaseInsen = columnsObj.case_insensitive;\n/*\n\t\t\tif (columnsObj.filter_match_mode === \"contains\") {\n\t\t\t\tregex = false;\n\t\t\t} else if (columnsObj.filter_match_mode === \"exact\") {\n\t\t\t\tregex = true;\n\t\t\t\tserachVal = \"^\" + serachVal + \"$\";\n\t\t\t} else if (columnsObj.filter_match_mode === \"startsWith\") {\n\t\t\t\tregex = true;\n\t\t\t\tserachVal = \"^\" + serachVal;\n\t\t\t}\n*/\n\t\t\tif (columnsObj.column_number instanceof Array) {\n\t\t\t\ttablesAsOne.columns(columnsObj.column_number).search(serachVal, regex, smart, caseInsen).draw();\n\t\t\t} else {\n\t\t\t\ttablesAsOne.search(serachVal, regex, smart, caseInsen).draw();\n\t\t\t}\n\n\t\t};\n\n\t\tif (columnsObj.filter_delay === undefined) {\n\t\t\tkeyUp(tablesAsOne, event, clear);\n\t\t} else {\n\t\t\tyadcfDelay(function () {\n\t\t\t\tkeyUp(tablesAsOne, event, clear);\n\t\t\t}, columnsObj.filter_delay);\n\t\t}\n\t}\n\n\tfunction textKeyUP(table_selector_jq_friendly, column_number, clear) {\n\t\tvar column_number_filter,\n\t\t\toTable = oTables[table_selector_jq_friendly],\n\t\t\tkeyUp,\n\t\t\tcolumnObj,\n\t\t\tsettingsDt = getSettingsObjFromTable(oTable),\n\t\t\texclude;\n\n\t\tif ((settingsDt.oSavedState != undefined && settingsDt.oSavedState.ColReorder !== undefined) || (plugins[table_selector_jq_friendly] !== undefined && plugins[table_selector_jq_friendly].ColReorder !== undefined)) {\n\t\t\tinitColReorder(settingsDt.oSavedState, table_selector_jq_friendly);\n\t\t\tcolumn_number_filter = plugins[table_selector_jq_friendly].ColReorder[column_number];\n\t\t} else {\n\t\t\tcolumn_number_filter = column_number;\n\t\t}\n\t\tcolumnObj = getOptions(oTable.selector)[column_number];\n\n\t\tkeyUp = function (table_selector_jq_friendly, column_number, clear) {\n\t\t\t$.fn.dataTableExt.iApiIndex = oTablesIndex[table_selector_jq_friendly];\n\n\t\t\tif (clear === 'clear' || $(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).val() === '') {\n\t\t\t\tif (clear === 'clear' && exGetColumnFilterVal(oTable, column_number) === '') {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).val(\"\").focus();\n\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).removeClass(\"inuse\");\n\t\t\t\toTable.fnFilter(\"\", column_number_filter);\n\t\t\t\tresetIApiIndex();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (columnObj.exclude === true) {\n\t\t\t\texclude = $(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).closest('.yadcf-filter-wrapper').find('.yadcf-exclude-wrapper :checkbox').prop('checked');\n\t\t\t}\n\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).addClass(\"inuse\");\n\n\t\t\tyadcfMatchFilter(oTable, $(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).val(), columnObj.filter_match_mode, column_number_filter, exclude);\n\n\t\t\tresetIApiIndex();\n\t\t};\n\n\t\tif (columnObj.filter_delay === undefined) {\n\t\t\tkeyUp(table_selector_jq_friendly, column_number, clear);\n\t\t} else {\n\t\t\tyadcfDelay(function () {\n\t\t\t\tkeyUp(table_selector_jq_friendly, column_number, clear);\n\t\t\t}, columnObj.filter_delay);\n\t\t}\n\t}\n\n\tfunction autocompleteKeyUP(table_selector_jq_friendly, event) {\n\t\tevent = eventTargetFixUp(event);\n\n\t\tif (event.target.value === \"\" && event.keyCode === 8 && $(event.target).hasClass(\"inuse\")) {\n\t\t\t$.fn.dataTableExt.iApiIndex = oTablesIndex[table_selector_jq_friendly];\n\t\t\tvar oTable = oTables[table_selector_jq_friendly],\n\t\t\t\tcolumn_number = parseInt($(event.target).attr(\"id\").replace(\"yadcf-filter-\" + table_selector_jq_friendly + \"-\", \"\"), 10);\n\n\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).removeClass(\"inuse\");\n\t\t\t$(document).removeData(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number + \"_val\");\n\t\t\toTable.fnFilter(\"\", column_number);\n\t\t\tresetIApiIndex();\n\t\t}\n\t}\n\n\tfunction isDOMSource(tableVar) {\n\t\tif (tableVar.fnSettings().sAjaxSource == undefined && tableVar.fnSettings().ajax == undefined) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tfunction scrollXYHandler(oTable, table_selector) {\n\t\tvar $tmpSelector,\n\t\t\tfilters_position = $(document).data(table_selector + \"_filters_position\"),\n\t\t\ttable_selector_jq_friendly = yadcf.generateTableSelectorJQFriendly(table_selector);\n\n\t\tif (filters_position === 'thead') {\n\t\t\tfilters_position = '.dataTables_scrollHead';\n\t\t} else {\n\t\t\tfilters_position = '.dataTables_scrollFoot';\n\t\t}\n\t\tif (oTable.fnSettings().oScroll.sX !== '' || oTable.fnSettings().oScroll.sY !== '') {\n\t\t\t$tmpSelector = $(table_selector).closest('.dataTables_scroll').find(filters_position + ' table');\n\t\t\t$tmpSelector.addClass('yadcf-datatables-table-' + table_selector_jq_friendly);\n\t\t}\n\t}\n\n\tfunction initAndBindTable(oTable, table_selector, index, pTableDT) {\n\n\t\tvar table_selector_jq_friendly = yadcf.generateTableSelectorJQFriendly(table_selector),\n\t\t\ttable_selector_tmp;\n oTables[table_selector_jq_friendly] = oTable;\n\t\ttablesDT[table_selector_jq_friendly] = pTableDT;\n\t\toTablesIndex[table_selector_jq_friendly] = index;\n\n\t\tscrollXYHandler(oTable, table_selector);\n\n if (isDOMSource(oTable)) {\n\t\t\ttable_selector_tmp = table_selector;\n\t\t\tif (table_selector.indexOf(\":eq\") !== -1) {\n\t\t\t\ttable_selector_tmp = table_selector.substring(0, table_selector.lastIndexOf(\":eq\"));\n\t\t\t}\n\t\t\tappendFilters(oTable, yadcf.getOptions(table_selector_tmp), table_selector);\n } else {\n\t\t\tappendFilters(oTable, yadcf.getOptions(table_selector), table_selector);\n\t\t\tif (yadcfVersionCheck('1.10')) {\n\t\t\t\t$(document).off('draw.dt', oTable.selector).on('draw.dt', oTable.selector, function (event, ui) {\n\t\t\t\t\tappendFilters(oTable, yadcf.getOptions(ui.oInstance.selector), ui.oInstance.selector);\n\t\t\t\t});\n\t\t\t\t$(document).off('xhr.dt', oTable.selector).on('xhr.dt', oTable.selector, function (e, settings, json) {\n\t\t\t\t\tvar col_num,\n\t\t\t\t\t\tcolumn_number_filter,\n\t\t\t\t\t\ttable_selector_jq_friendly = generateTableSelectorJQFriendly(oTable.selector);\n\t\t\t\t\tif (settings.oSavedState !== null) {\n\t\t\t\t\t\tinitColReorder(settings.oSavedState, table_selector_jq_friendly);\n\t\t\t\t\t}\n\t\t\t\t\tfor (col_num in yadcf.getOptions(settings.oInstance.selector)) {\n\t\t\t\t\t\tif (yadcf.getOptions(settings.oInstance.selector).hasOwnProperty(col_num)) {\n\t\t\t\t\t\t\tif (json['yadcf_data_' + col_num] !== undefined) {\n\t\t\t\t\t\t\t\tcolumn_number_filter = col_num;\n\t\t\t\t\t\t\t\tif (settings.oSavedState !== null) {\n\t\t\t\t\t\t\t\t\tcolumn_number_filter = plugins[table_selector_jq_friendly].ColReorder[col_num];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tyadcf.getOptions(settings.oInstance.selector)[col_num].data = json['yadcf_data_' + column_number_filter];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t$(document).off('column-visibility.dt', oTable.selector).on('column-visibility.dt', oTable.selector, function (e, settings, col_num, state) {\n\t\t\t\t\tvar obj = {};\n\t\t\t\t\tif (state === true) {\n\t\t\t\t\t\tif ((plugins[table_selector_jq_friendly] !== undefined && plugins[table_selector_jq_friendly].ColReorder !== undefined)) {\n\t\t\t\t\t\t\tcol_num = plugins[table_selector_jq_friendly].ColReorder[col_num];\n\t\t\t\t\t\t} else if (settings.oSavedState != undefined && settings.oSavedState.ColReorder !== undefined) {\n\t\t\t\t\t\t\tcol_num = settings.oSavedState.ColReorder[col_num];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tobj[col_num] = yadcf.getOptions(settings.oInstance.selector)[col_num];\n\t\t\t\t\t\tobj[col_num].column_number = col_num;\n\t\t\t\t\t\tif (obj[col_num] !== undefined) {\n\t\t\t\t\t\t\tappendFilters(oTables[yadcf.generateTableSelectorJQFriendly(settings.oInstance.selector)],\n\t\t\t\t\t\t\t\tobj,\n\t\t\t\t\t\t\t\tsettings.oInstance.selector);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t$(document).off('destroy.dt', oTable.selector).on('destroy.dt', oTable.selector, function (event, ui) {\n\t\t\t\t\tremoveFilters(oTable, yadcf.getOptions(ui.oInstance.selector), ui.oInstance.selector);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t$(document).off('draw', oTable.selector).on('draw', oTable.selector, function (event, ui) {\n\t\t\t\t\tappendFilters(oTable, yadcf.getOptions(ui.oInstance.selector), ui.oInstance.selector);\n\t\t\t\t});\n\t\t\t\t$(document).off('destroy', oTable.selector).on('destroy', oTable.selector, function (event, ui) {\n\t\t\t\t\tremoveFilters(oTable, yadcf.getOptions(ui.oInstance.selector), ui.oInstance.selector);\n\t\t\t\t});\n\t\t\t}\n }\n\t\t//events that affects both DOM and Ajax\n\t\tif (yadcfVersionCheck('1.10')) {\n\t\t\t$(document).off('destroy.dt', oTable.selector).on('destroy.dt', oTable.selector, function (event, ui) {\n\t\t\t\tremoveFilters(oTable, yadcf.getOptions(ui.oInstance.selector), ui.oInstance.selector);\n\t\t\t});\n\t\t} else {\n\t\t\t$(document).off('destroy', oTable.selector).on('destroy', oTable.selector, function (event, ui) {\n\t\t\t\tremoveFilters(oTable, yadcf.getOptions(ui.oInstance.selector), ui.oInstance.selector);\n\t\t\t});\n\t\t}\n\t\t$(document).off('column-reorder.dt', oTable.selector).on('column-reorder.dt', oTable.selector, function (e, settings, json) {\n\t\t\tvar table_selector_jq_friendly = generateTableSelectorJQFriendly(oTable.selector);\n\t\t\tinitColReorderFromEvent(table_selector_jq_friendly);\n\t\t});\n\t\tif (oTable.fnSettings().oFeatures.bStateSave === true) {\n\t\t\tif (yadcfVersionCheck('1.10')) {\n\t\t\t\t$(oTable.selector).off('stateSaveParams.dt').on('stateSaveParams.dt', function (e, settings, data) {\n\t\t\t\t\tif (settings.oLoadedState && settings.oLoadedState.yadcfState !== undefined) {\n\t\t\t\t\t\tdata.yadcfState = settings.oLoadedState.yadcfState;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdata.naruto = 'kurama';\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t$(oTable.selector).off('stateSaveParams').on('stateSaveParams', function (e, settings, data) {\n\t\t\t\t\tif (settings.oLoadedState && settings.oLoadedState.yadcfState !== undefined) {\n\t\t\t\t\t\tdata.yadcfState = settings.oLoadedState.yadcfState;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdata.naruto = 'kurama';\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\t//when using DOM source\n\t\t\tif (isDOMSource(oTable)) {\n\t\t\t\t//we need to make sure that the yadcf state will be saved after page reload\n\t\t\t\toTable.fnSettings().oApi._fnSaveState(oTable.fnSettings());\n\t\t\t\t//redraw the table in order to apply the filters\n\t\t\t\toTable.fnDraw(false);\n\t\t\t}\n\t\t}\n\t}\n\n $.fn.yadcf = function (options_arg, params) {\n\n\t\tvar tmpParams,\n\t\t\ti = 0,\n\t\t\tselector;\n\n\t\tif (params === undefined) {\n\t\t\tparams = {};\n\t\t}\n\n\t\tif (typeof params === 'string') {\n\t\t\ttmpParams = params;\n\t\t\tparams = {};\n\t\t\tparams.filters_position = tmpParams;\n\t\t}\n\t\tif (params.filters_position === undefined || params.filters_position === 'header') {\n\t\t\tparams.filters_position = 'thead';\n\t\t} else {\n\t\t\tparams.filters_position = 'tfoot';\n\t\t}\n\t\t$(document).data(this.selector + \"_filters_position\", params.filters_position);\n\n\t\tif ($(this.selector).length === 1) {\n\t\t\tsetOptions(this.selector, options_arg, params);\n\t\t\tinitAndBindTable(this, this.selector, 0);\n\t\t} else {\n\t\t\tfor (i; i < $(this.selector).length; i++) {\n\t\t\t\t$.fn.dataTableExt.iApiIndex = i;\n\t\t\t\tselector = this.selector + \":eq(\" + i + \")\";\n\t\t\t\tsetOptions(this.selector, options_arg, params);\n\t\t\t\tinitAndBindTable(this, selector, i);\n\t\t\t}\n\t\t\t$.fn.dataTableExt.iApiIndex = 0;\n\t\t}\n return this;\n };\n\n\tfunction init(oTable, options_arg, params) {\n\t\tvar instance = oTable.settings()[0].oInstance,\n\t\t\ti = 0,\n\t\t\tselector,\n\t\t\ttmpParams;\n\n\t\tif (params === undefined) {\n\t\t\tparams = {};\n\t\t}\n\n\t\tif (typeof params === 'string') {\n\t\t\ttmpParams = params;\n\t\t\tparams = {};\n\t\t\tparams.filters_position = tmpParams;\n\t\t}\n\t\tif (params.filters_position === undefined || params.filters_position === 'header') {\n\t\t\tparams.filters_position = 'thead';\n\t\t} else {\n\t\t\tparams.filters_position = 'tfoot';\n\t\t}\n\t\t$(document).data(instance.selector + \"_filters_position\", params.filters_position);\n\n\t\tif ($(instance.selector).length === 1) {\n\t\t\tsetOptions(instance.selector, options_arg, params);\n\t\t\tinitAndBindTable(instance, instance.selector, 0, oTable);\n\t\t} else {\n\t\t\tfor (i; i < $(instance.selector).length; i++) {\n\t\t\t\t$.fn.dataTableExt.iApiIndex = i;\n\t\t\t\tselector = instance.selector + \":eq(\" + i + \")\";\n\t\t\t\tsetOptions(instance.selector, options_arg, params);\n\t\t\t\tinitAndBindTable(instance, selector, i, oTable);\n\t\t\t}\n\t\t\t$.fn.dataTableExt.iApiIndex = 0;\n\t\t}\n\t}\n\n\tfunction appendFiltersMultipleTables(tablesArray, tablesSelectors, colObjDummy) {\n\t\tvar filter_selector_string = \"#\" + colObjDummy.filter_container_id,\n\t\t\t$filter_selector = $(filter_selector_string).find(\".yadcf-filter\"),\n\t\t\ttable_selector_jq_friendly = yadcf.generateTableSelectorJQFriendlyNew(tablesSelectors),\n\t\t\toptions_tmp,\n\t\t\tii,\n\t\t\tcolumn_number_str = columnsArrayToString(colObjDummy.column_number).column_number_str,\n\t\t\ttableTmp,\n\t\t\ttableTmpArr,\n\t\t\ttableTmpArrIndex,\n\t\t\tfilterOptions = getOptions(tablesSelectors + '_' + column_number_str)[column_number_str],\n\t\t\tcolumn_number_index,\n\t\t\tcolumnsTmpArr;\n\n\t\t//add a wrapper to hold both filter and reset button\n\t\t$(filter_selector_string).append(\"
    \");\n\t\tfilter_selector_string = filter_selector_string + \" div.yadcf-filter-wrapper\";\n\n\t\tswitch (filterOptions.filter_type) {\n\t\tcase 'text':\n\t\t\t$(filter_selector_string).append(\"\");\n\t\t\tif (filterOptions.filter_reset_button_text !== false) {\n\t\t\t\t$(filter_selector_string).find(\".yadcf-filter\").after(\"\");\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'select':\n\t\tcase 'multi_select':\n\t\t\tif (filterOptions.select_type === undefined) {\n\t\t\t\toptions_tmp = \"\";\n\t\t\t} else {\n\t\t\t\toptions_tmp = \"\";\n\t\t\t}\n\t\t\tif (filterOptions.select_type === 'select2' && filterOptions.select_type_options.placeholder !== undefined && filterOptions.select_type_options.allowClear === true) {\n\t\t\t\toptions_tmp = \"\";\n\t\t\t}\n\t\t\tif (filterOptions.data === undefined) {\n\t\t\t\tfilterOptions.data = [];\n\t\t\t\ttableTmpArr = tablesSelectors.split(',');\n\t\t\t\tfor (tableTmpArrIndex = 0; tableTmpArrIndex < tableTmpArr.length; tableTmpArrIndex++) {\n\t\t\t\t\ttableTmp = $('#' + tablesArray[tableTmpArrIndex].table().node().id).dataTable();\n\t\t\t\t\tif (isDOMSource(tableTmp)) {\n\t\t\t\t\t\t//check if ajax source, if so, listen for dt.draw\n\t\t\t\t\t\tcolumnsTmpArr = filterOptions.column_number;\n\t\t\t\t\t\tfor (column_number_index = 0; column_number_index < columnsTmpArr.length; column_number_index++) {\n\t\t\t\t\t\t\tfilterOptions.column_number = columnsTmpArr[column_number_index];\n\t\t\t\t\t\t\tfilterOptions.data = filterOptions.data.concat(parseTableColumn(tableTmp, filterOptions, table_selector_jq_friendly));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfilterOptions.column_number = columnsTmpArr;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(document).off('draw.dt', '#' + tablesArray[tableTmpArrIndex].table().node().id).on('draw.dt', '#' + tablesArray[tableTmpArrIndex].table().node().id, function (event, ui) {\n\t\t\t\t\t\t\tvar options_tmp = '',\n\t\t\t\t\t\t\t\tii;\n\t\t\t\t\t\t\tcolumnsTmpArr = filterOptions.column_number;\n\t\t\t\t\t\t\tfor (column_number_index = 0; column_number_index < columnsTmpArr.length; column_number_index++) {\n\t\t\t\t\t\t\t\tfilterOptions.column_number = columnsTmpArr[column_number_index];\n\t\t\t\t\t\t\t\tfilterOptions.data = filterOptions.data.concat(parseTableColumn(tableTmp, filterOptions, table_selector_jq_friendly));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfilterOptions.column_number = columnsTmpArr;\n\t\t\t\t\t\t\tfilterOptions.data = sortColumnData(filterOptions.data, filterOptions);\n\t\t\t\t\t\t\tfor (ii = 0; ii < filterOptions.data.length; ii++) {\n\t\t\t\t\t\t\t\toptions_tmp += \"\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t$('#' + filterOptions.filter_container_id + ' select').empty().append(options_tmp);\n\t\t\t\t\t\t\tif (filterOptions.select_type !== undefined && filterOptions.select_type === 'chosen') {\n\t\t\t\t\t\t\t\t$('#' + filterOptions.filter_container_id + ' select').chosen(filterOptions.select_type_options);\n\t\t\t\t\t\t\t\t$('#' + filterOptions.filter_container_id + ' select').next().attr(\"onclick\", \"yadcf.stopPropagation(event);\").attr(\"onmousedown\", \"yadcf.stopPropagation(event);\");\n\t\t\t\t\t\t\t} else if (filterOptions.select_type !== undefined && filterOptions.select_type === 'select2') {\n\t\t\t\t\t\t\t\t$('#' + filterOptions.filter_container_id + ' select').select2(filterOptions.select_type_options);\n\t\t\t\t\t\t\t\tif ($('#' + filterOptions.filter_container_id + ' select').next().hasClass('select2-container')) {\n\t\t\t\t\t\t\t\t\t$('#' + filterOptions.filter_container_id + ' select').next().attr(\"onclick\", \"yadcf.stopPropagation(event);\").attr(\"onmousedown\", \"yadcf.stopPropagation(event);\");\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfilterOptions.data = sortColumnData(filterOptions.data, filterOptions);\n\n\t\t\tif (typeof filterOptions.data[0] === 'object') {\n\t\t\t\tfor (ii = 0; ii < filterOptions.data.length; ii++) {\n\t\t\t\t\toptions_tmp += \"\";\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (ii = 0; ii < filterOptions.data.length; ii++) {\n\t\t\t\t\toptions_tmp += \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (filterOptions.filter_type === 'select') {\n\t\t\t\t$(filter_selector_string).append(\"\");\n\t\t\t} else if (filterOptions.filter_type === 'multi_select') {\n\t\t\t\t$(filter_selector_string).append(\"\");\n\t\t\t}\n\t\t\tif (filterOptions.filter_type === 'select') {\n\t\t\t\tif (filterOptions.filter_reset_button_text !== false) {\n\t\t\t\t\t$(filter_selector_string).find(\".yadcf-filter\").after(\"\");\n\t\t\t\t}\n\t\t\t} else if (filterOptions.filter_type === 'multi_select') {\n\t\t\t\tif (filterOptions.filter_reset_button_text !== false) {\n\t\t\t\t\t$(filter_selector_string).find(\".yadcf-filter\").after(\"\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (filterOptions.select_type !== undefined && filterOptions.select_type === 'chosen') {\n\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + '-' + column_number_str).chosen(filterOptions.select_type_options);\n\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + '-' + column_number_str).next().attr(\"onclick\", \"yadcf.stopPropagation(event);\").attr(\"onmousedown\", \"yadcf.stopPropagation(event);\");\n\t\t\t} else if (filterOptions.select_type !== undefined && filterOptions.select_type === 'select2') {\n\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + '-' + column_number_str).select2(filterOptions.select_type_options);\n\t\t\t\tif ($(\"#yadcf-filter-\" + table_selector_jq_friendly + '-' + column_number_str).next().hasClass('select2-container')) {\n\t\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + '-' + column_number_str).next().attr(\"onclick\", \"yadcf.stopPropagation(event);\").attr(\"onmousedown\", \"yadcf.stopPropagation(event);\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\talert('Filters Multiple Tables does not support ' + filterOptions.filter_type);\n\t\t}\n\t}\n\n\tfunction initMultipleTables(tablesArray, filtersOptions) {\n\t\tvar i,\n\t\t\ttablesSelectors = '',\n\t\t\tdefault_options = {\n\t\t\t\tfilter_type : \"text\",\n\t\t\t\tfilter_container_id: '',\n\t\t\t\tfilter_reset_button_text: 'x',\n\t\t\t\tcase_insensitive: true\n\t\t\t},\n\t\t\tcolumnsObjKey,\n\t\t\tcolumnsObj,\n\t\t\tcolumnsArrIndex,\n\t\t\tcolumn_number_str,\n\t\t\tdummyArr;\n\n\t\tfor (columnsArrIndex = 0; columnsArrIndex < filtersOptions.length; columnsArrIndex++) {\n\t\t\tdummyArr = [];\n\t\t\tcolumnsObj = filtersOptions[columnsArrIndex];\n\t\t\tif (columnsObj.filter_default_label === undefined) {\n\t\t\t\tif (columnsObj.filter_type === \"select\" || columnsObj.filter_type === 'custom_func') {\n\t\t\t\t\tcolumnsObj.filter_default_label = \"Select value\";\n\t\t\t\t} else if (columnsObj.filter_type === \"multi_select\" || columnsObj.filter_type === 'multi_select_custom_func') {\n\t\t\t\t\tcolumnsObj.filter_default_label = \"Select values\";\n\t\t\t\t} else if (columnsObj.filter_type === \"auto_complete\" || columnsObj.filter_type === \"text\") {\n\t\t\t\t\tcolumnsObj.filter_default_label = 'Type to filter';\n\t\t\t\t} else if (columnsObj.filter_type === \"range_number\" || columnsObj.filter_type === \"range_date\") {\n\t\t\t\t\tcolumnsObj.filter_default_label = [\"from\", \"to\"];\n\t\t\t\t} else if (columnsObj.filter_type === \"date\") {\n\t\t\t\t\tcolumnsObj.filter_default_label = \"Select a date\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tcolumnsObj = $.extend({}, default_options, columnsObj);\n\n\t\t\tcolumn_number_str = columnsArrayToString(columnsObj.column_number).column_number_str;\n\t\t\tcolumnsObj.column_number_str = column_number_str;\n\n\t\t\tdummyArr.push(columnsObj);\n\t\t\ttablesSelectors = '';\n\t\t\tfor (i = 0; i < tablesArray.length; i++) {\n\t\t\t\ttablesSelectors += tablesArray[i].table().node().id + ',';\n\t\t\t}\n\t\t\ttablesSelectors = tablesSelectors.substring(0, tablesSelectors.length - 1);\n\n\t\t\tsetOptions(tablesSelectors + '_' + column_number_str, dummyArr);\n\t\t\toTables[tablesSelectors] = tablesArray;\n\t\t\tappendFiltersMultipleTables(tablesArray, tablesSelectors, columnsObj);\n\t\t}\n\t}\n\n\tfunction initMultipleColumns(table, filtersOptions) {\n\t\tvar tablesArray = [];\n\t\ttablesArray.push(table);\n\t\tinitMultipleTables(tablesArray, filtersOptions);\n\t}\n\n function stopPropagation(evt) {\n\t\tif (evt.stopPropagation !== undefined) {\n\t\t\tevt.stopPropagation();\n\t\t} else {\n\t\t\tevt.cancelBubble = true;\n\t\t}\n\t}\n\n\t//--------------------------------------------------------\n\tfunction exInternalFilterColumnAJAXQueue(table_arg, col_filter_arr) {\n\t\treturn function () {\n\t\t\texFilterColumn(table_arg, col_filter_arr, true);\n\t\t};\n\t}\n\n\tfunction exFilterColumn(table_arg, col_filter_arr, ajaxSource) {\n\t\tvar table_selector_jq_friendly,\n\t\t\tj,\n\t\t\ttmpStr,\n\t\t\tcolumn_number,\n\t\t\tcolumn_position,\n\t\t\tfilter_value,\n\t\t\tfromId,\n\t\t\ttoId,\n\t\t\tsliderId,\n\t\t\toptionsObj,\n\t\t\tmin,\n\t\t\tmax;\n\t\t//check if the table arg is from new datatables API (capital \"D\")\n\t\tif (table_arg.settings !== undefined) {\n\t\t\ttable_arg = table_arg.settings()[0].oInstance;\n\t\t}\n\t\ttable_selector_jq_friendly = yadcf.generateTableSelectorJQFriendly(table_arg.selector);\n\t\tif (isDOMSource(table_arg) || ajaxSource === true) {\n\t\t\tfor (j = 0; j < col_filter_arr.length; j++) {\n\t\t\t\tcolumn_number = col_filter_arr[j][0];\n\t\t\t\tcolumn_position = column_number;\n\t\t\t\tif (plugins[table_selector_jq_friendly] !== undefined && (plugins[table_selector_jq_friendly] !== undefined && plugins[table_selector_jq_friendly].ColReorder !== undefined)) {\n\t\t\t\t\tcolumn_position = plugins[table_selector_jq_friendly].ColReorder[column_number];\n\t\t\t\t}\n\t\t\t\toptionsObj = getOptions(table_arg.selector)[column_number];\n\t\t\t\tfilter_value = col_filter_arr[j][1];\n\n\t\t\t\tswitch (optionsObj.filter_type) {\n\t\t\t\tcase 'auto_complete':\n\t\t\t\tcase 'text':\n\t\t\t\tcase 'date':\n\t\t\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).val(filter_value).addClass('inuse');\n\t\t\t\t\ttmpStr = yadcfMatchFilterString(table_arg, column_position, filter_value, optionsObj.filter_match_mode, false);\n\t\t\t\t\ttable_arg.fnSettings().aoPreSearchCols[column_position].sSearch = tmpStr;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'select':\n\t\t\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).val(filter_value).addClass('inuse');\n\t\t\t\t\ttmpStr = yadcfMatchFilterString(table_arg, column_position, filter_value, optionsObj.filter_match_mode, false);\n\t\t\t\t\ttable_arg.fnSettings().aoPreSearchCols[column_position].sSearch = tmpStr;\n\t\t\t\t\tif (optionsObj.select_type !== undefined) {\n\t\t\t\t\t\tif (optionsObj.select_type === 'chosen') {\n\t\t\t\t\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).trigger('chosen:updated');\n\t\t\t\t\t\t} else if (optionsObj.select_type === 'select2') {\n\t\t\t\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).select2('val', filter_value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'multi_select':\n\t\t\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).val(filter_value);\n\t\t\t\t\ttmpStr = yadcfMatchFilterString(table_arg, column_position, filter_value, optionsObj.filter_match_mode, true);\n\t\t\t\t\ttable_arg.fnSettings().aoPreSearchCols[column_position].sSearch = tmpStr;\n\t\t\t\t\tif (optionsObj.select_type !== undefined) {\n\t\t\t\t\t\tif (optionsObj.select_type === 'chosen') {\n\t\t\t\t\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).trigger('chosen:updated');\n\t\t\t\t\t\t} else if (optionsObj.select_type === 'select2') {\n\t\t\t\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).select2('val', filter_value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'range_date':\n\t\t\t\t\tfromId = 'yadcf-filter-' + table_selector_jq_friendly + '-from-date-' + column_number;\n\t\t\t\t\ttoId = 'yadcf-filter-' + table_selector_jq_friendly + '-to-date-' + column_number;\n\t\t\t\t\tif (filter_value.from !== '') {\n\t\t\t\t\t\t$('#' + fromId).val(filter_value.from);\n\t\t\t\t\t\t$('#' + fromId).addClass('inuse');\n\t\t\t\t\t}\n\t\t\t\t\tif (filter_value.to !== '') {\n\t\t\t\t\t\t$('#' + toId).val(filter_value.to);\n\t\t\t\t\t\t$('#' + toId).addClass('inuse');\n\t\t\t\t\t}\n\t\t\t\t\tif (table_arg.fnSettings().oFeatures.bServerSide === true) {\n\t\t\t\t\t\tmin = filter_value.from;\n\t\t\t\t\t\tmax = filter_value.to;\n\t\t\t\t\t\ttable_arg.fnSettings().aoPreSearchCols[column_position].sSearch = min + '-yadcf_delim-' + max;\n\t\t\t\t\t}\n\t\t\t\t\tsaveStateSave(table_arg, column_number, table_selector_jq_friendly, filter_value.from, filter_value.to);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'range_number':\n\t\t\t\t\tfromId = 'yadcf-filter-' + table_selector_jq_friendly + '-from-' + column_number;\n\t\t\t\t\ttoId = 'yadcf-filter-' + table_selector_jq_friendly + '-to-' + column_number;\n\t\t\t\t\tif (filter_value.from !== '') {\n\t\t\t\t\t\t$('#' + fromId).val(filter_value.from);\n\t\t\t\t\t\t$('#' + fromId).addClass('inuse');\n\t\t\t\t\t}\n\t\t\t\t\tif (filter_value.to !== '') {\n\t\t\t\t\t\t$('#' + toId).val(filter_value.to);\n\t\t\t\t\t\t$('#' + toId).addClass('inuse');\n\t\t\t\t\t}\n\t\t\t\t\tif (table_arg.fnSettings().oFeatures.bServerSide === true) {\n\t\t\t\t\t\ttable_arg.fnSettings().aoPreSearchCols[column_position].sSearch = filter_value.from + '-yadcf_delim-' + filter_value.to;\n\t\t\t\t\t}\n\t\t\t\t\tsaveStateSave(table_arg, column_number, table_selector_jq_friendly, filter_value.from, filter_value.to);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'range_number_slider':\n\t\t\t\t\tsliderId = 'yadcf-filter-' + table_selector_jq_friendly + '-slider-' + column_number;\n\t\t\t\t\tfromId = 'yadcf-filter-' + table_selector_jq_friendly + '-min_tip-' + column_number;\n\t\t\t\t\ttoId = 'yadcf-filter-' + table_selector_jq_friendly + '-max_tip-' + column_number;\n\t\t\t\t\tif (filter_value.from !== '') {\n\t\t\t\t\t\tmin = $('#' + fromId).closest('.yadcf-filter-range-number-slider').find(\".yadcf-filter-range-number-slider-min-tip-hidden\").text();\n\t\t\t\t\t\tmax = $('#' + fromId).closest('.yadcf-filter-range-number-slider').find(\".yadcf-filter-range-number-slider-max-tip-hidden\").text();\n\t\t\t\t\t\t$('#' + fromId).text(filter_value.from);\n\t\t\t\t\t\tif (min !== filter_value.from) {\n\t\t\t\t\t\t\t$('#' + fromId).parent().addClass('inuse');\n\t\t\t\t\t\t\t$('#' + fromId).parent().parent().find('ui-slider-range').addClass('inuse');\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$('#' + sliderId).slider('values', 0, filter_value.from);\n\t\t\t\t\t}\n\t\t\t\t\tif (filter_value.to !== '') {\n\t\t\t\t\t\t$('#' + toId).text(filter_value.to);\n\t\t\t\t\t\tif (max !== filter_value.to) {\n\t\t\t\t\t\t\t$('#' + toId).parent().addClass('inuse');\n\t\t\t\t\t\t\t$('#' + toId).parent().parent().find('.ui-slider-range').addClass('inuse');\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$('#' + sliderId).slider('values', 1, filter_value.to);\n\t\t\t\t\t}\n\t\t\t\t\tif (table_arg.fnSettings().oFeatures.bServerSide === true) {\n\t\t\t\t\t\ttable_arg.fnSettings().aoPreSearchCols[column_position].sSearch = filter_value.from + '-yadcf_delim-' + filter_value.to;\n\t\t\t\t\t}\n\t\t\t\t\tsaveStateSave(table_arg, column_number, table_selector_jq_friendly, filter_value.from, filter_value.to);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'custom_func':\n\t\t\t\tcase 'multi_select_custom_func':\n\t\t\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).val(filter_value).addClass('inuse');\n\t\t\t\t\tif (table_arg.fnSettings().oFeatures.bServerSide === true) {\n\t\t\t\t\t\ttable_arg.fnSettings().aoPreSearchCols[column_position].sSearch = filter_value;\n\t\t\t\t\t}\n\t\t\t\t\tif (optionsObj.select_type !== undefined) {\n\t\t\t\t\t\tif (optionsObj.select_type === 'chosen') {\n\t\t\t\t\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).trigger('chosen:updated');\n\t\t\t\t\t\t} else if (optionsObj.select_type === 'select2') {\n\t\t\t\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).select2('val', filter_value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tsaveStateSave(table_arg, column_number, table_selector_jq_friendly, filter_value, '');\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (table_arg.fnSettings().oFeatures.bServerSide !== true) {\n\t\t\t\ttable_arg.fnDraw();\n\t\t\t} else {\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\ttable_arg.fnDraw();\n\t\t\t\t}, 10);\n\t\t\t}\n } else {\n\t\t\texFilterColumnQueue.push(exInternalFilterColumnAJAXQueue(table_arg, col_filter_arr));\n }\n\t}\n\n\tfunction exGetColumnFilterVal(table_arg, column_number) {\n\t\tvar retVal,\n\t\t\tfromId,\n\t\t\ttoId,\n\t\t\ttable_selector_jq_friendly,\n\t\t\toptionsObj;\n\n\t\t//check if the table arg is from new datatables API (capital \"D\")\n\t\tif (table_arg.settings !== undefined) {\n\t\t\ttable_arg = table_arg.settings()[0].oInstance;\n\t\t}\n\n\t\toptionsObj = getOptions(table_arg.selector)[column_number];\n\t\ttable_selector_jq_friendly = yadcf.generateTableSelectorJQFriendly(table_arg.selector);\n\n\t\tswitch (optionsObj.filter_type) {\n\t\tcase 'select':\n\t\tcase 'custom_func':\n\t\t\tretVal = $('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).val();\n\t\t\tif (retVal === '-1') {\n\t\t\t\tretVal = '';\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'auto_complete':\n\t\tcase 'text':\n\t\tcase 'date':\n\t\t\tretVal = $('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).val();\n\t\t\tbreak;\n\t\tcase 'multi_select':\n\t\t\tretVal = $('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).val();\n\t\t\tif (retVal === null) {\n\t\t\t\tretVal = '';\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'range_date':\n\t\t\tretVal = {};\n\t\t\tfromId = 'yadcf-filter-' + table_selector_jq_friendly + '-from-date-' + column_number;\n\t\t\ttoId = 'yadcf-filter-' + table_selector_jq_friendly + '-to-date-' + column_number;\n\n\t\t\tretVal.from = $('#' + fromId).val();\n\t\t\tretVal.to = $('#' + toId).val();\n\t\t\tbreak;\n\t\tcase 'range_number':\n\t\t\tretVal = {};\n\t\t\tfromId = 'yadcf-filter-' + table_selector_jq_friendly + '-from-' + column_number;\n\t\t\ttoId = 'yadcf-filter-' + table_selector_jq_friendly + '-to-' + column_number;\n\n\t\t\tretVal.from = $('#' + fromId).val();\n\t\t\tretVal.to = $('#' + toId).val();\n\t\t\tbreak;\n\t\tcase 'range_number_slider':\n\t\t\tretVal = {};\n\t\t\tfromId = 'yadcf-filter-' + table_selector_jq_friendly + '-min_tip-' + column_number;\n\t\t\ttoId = 'yadcf-filter-' + table_selector_jq_friendly + '-max_tip-' + column_number;\n\n\t\t\tretVal.from = $('#' + fromId).text();\n\t\t\tretVal.to = $('#' + toId).text();\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tconsole.log('exGetColumnFilterVal error: no such filter_type: ' + optionsObj.filter_type);\n\t\t}\n\t\treturn retVal;\n\t}\n\n\tfunction clearStateSave(oTable, column_number, table_selector_jq_friendly) {\n\t\tvar yadcfState;\n\t\tif (oTable.fnSettings().oFeatures.bStateSave === true) {\n\t\t\tif (!oTable.fnSettings().oLoadedState) {\n\t\t\t\toTable.fnSettings().oLoadedState = {};\n\t\t\t\toTable.fnSettings().oApi._fnSaveState(oTable.fnSettings());\n\t\t\t}\n\t\t\tif (oTable.fnSettings().oLoadedState.yadcfState !== undefined && oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly] !== undefined) {\n\t\t\t\toTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number] = undefined;\n\t\t\t} else {\n\t\t\t\tyadcfState = {};\n\t\t\t\tyadcfState[table_selector_jq_friendly] = [];\n\t\t\t\tyadcfState[table_selector_jq_friendly][column_number] = undefined;\n\t\t\t\toTable.fnSettings().oLoadedState.yadcfState = yadcfState;\n\t\t\t}\n\t\t\toTable.fnSettings().oApi._fnSaveState(oTable.fnSettings());\n\t\t}\n\t}\n\n\tfunction saveStateSave(oTable, column_number, table_selector_jq_friendly, from, to) {\n\t\tvar yadcfState;\n\t\tif (oTable.fnSettings().oFeatures.bStateSave === true) {\n\t\t\tif (!oTable.fnSettings().oLoadedState) {\n\t\t\t\toTable.fnSettings().oLoadedState = {};\n\t\t\t}\n\t\t\tif (oTable.fnSettings().oLoadedState.yadcfState !== undefined && oTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly] !== undefined) {\n\t\t\t\toTable.fnSettings().oLoadedState.yadcfState[table_selector_jq_friendly][column_number] = {\n\t\t\t\t\t'from' : from,\n\t\t\t\t\t'to' : to\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tyadcfState = {};\n\t\t\t\tyadcfState[table_selector_jq_friendly] = [];\n\t\t\t\tyadcfState[table_selector_jq_friendly][column_number] = {\n\t\t\t\t\t'from' : from,\n\t\t\t\t\t'to' : to\n\t\t\t\t};\n\t\t\t\toTable.fnSettings().oLoadedState.yadcfState = yadcfState;\n\t\t\t}\n\t\t\toTable.fnSettings().oApi._fnSaveState(oTable.fnSettings());\n\t\t}\n\t}\n\n\tfunction exResetAllFilters(table_arg, noRedraw, columns) {\n\t\tvar table_selector_jq_friendly,\n\t\t\tcolumn_number,\n\t\t\tfromId,\n\t\t\ttoId,\n\t\t\tsliderId,\n\t\t\ttableOptions,\n\t\t\toptionsObj,\n\t\t\tcolumnObjKey,\n\t\t\tsettingsDt = getSettingsObjFromTable(table_arg),\n\t\t\ti;\n\n\t\t//check if the table arg is from new datatables API (capital \"D\")\n\t\tif (table_arg.settings !== undefined) {\n\t\t\ttable_arg = table_arg.settings()[0].oInstance;\n\t\t}\n\t\ttableOptions = getOptions(table_arg.selector);\n\t\ttable_selector_jq_friendly = yadcf.generateTableSelectorJQFriendly(table_arg.selector);\n\t\tsettingsDt = getSettingsObjFromTable(table_arg);\n\n\t\tfor (columnObjKey in tableOptions) {\n\t\t\tif (tableOptions.hasOwnProperty(columnObjKey)) {\n\t\t\t\toptionsObj = tableOptions[columnObjKey];\n\t\t\t\tcolumn_number = optionsObj.column_number;\n\n\t\t\t\tif (columns !== undefined && $.inArray(column_number, columns) === -1) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t$(document).removeData(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number + \"_val\");\n\n\t\t\t\tswitch (optionsObj.filter_type) {\n\t\t\t\tcase 'select':\n\t\t\t\tcase 'custom_func':\n\t\t\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).val('-1').removeClass('inuse');\n\t\t\t\t\ttable_arg.fnSettings().aoPreSearchCols[column_number].sSearch = '';\n\t\t\t\t\tif (optionsObj.select_type !== undefined) {\n\t\t\t\t\t\tif (optionsObj.select_type === 'chosen') {\n\t\t\t\t\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).trigger('chosen:updated');\n\t\t\t\t\t\t} else if (optionsObj.select_type === 'select2') {\n\t\t\t\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).select2('val', '-1');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'auto_complete':\n\t\t\t\tcase 'text':\n\t\t\t\tcase 'date':\n\t\t\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).val('').removeClass('inuse');\n\t\t\t\t\ttable_arg.fnSettings().aoPreSearchCols[column_number].sSearch = '';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'multi_select':\n\t\t\t\tcase 'multi_select_custom_func':\n\t\t\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).val('-1');\n\t\t\t\t\t$(document).data(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number + \"_val\", undefined);\n\t\t\t\t\ttable_arg.fnSettings().aoPreSearchCols[column_number].sSearch = '';\n\t\t\t\t\tif (optionsObj.select_type !== undefined) {\n\t\t\t\t\t\tif (optionsObj.select_type === 'chosen') {\n\t\t\t\t\t\t\t$('#yadcf-filter-' + table_selector_jq_friendly + '-' + column_number).trigger('chosen:updated');\n\t\t\t\t\t\t} else if (optionsObj.select_type === 'select2') {\n\t\t\t\t\t\t\t$(\"#yadcf-filter-\" + table_selector_jq_friendly + \"-\" + column_number).select2('val', '-1');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'range_date':\n\t\t\t\t\tfromId = 'yadcf-filter-' + table_selector_jq_friendly + '-from-date-' + column_number;\n\t\t\t\t\ttoId = 'yadcf-filter-' + table_selector_jq_friendly + '-to-date-' + column_number;\n\t\t\t\t\t$('#' + fromId).val('');\n\t\t\t\t\t$('#' + fromId).removeClass('inuse');\n\t\t\t\t\t$('#' + toId).val('');\n\t\t\t\t\t$('#' + toId).removeClass('inuse');\n\t\t\t\t\tif (table_arg.fnSettings().oFeatures.bServerSide === true) {\n\t\t\t\t\t\ttable_arg.fnSettings().aoPreSearchCols[column_number].sSearch = '';\n\t\t\t\t\t}\n\t\t\t\t\tclearStateSave(table_arg, column_number, table_selector_jq_friendly);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'range_number':\n\t\t\t\t\tfromId = 'yadcf-filter-' + table_selector_jq_friendly + '-from-' + column_number;\n\t\t\t\t\ttoId = 'yadcf-filter-' + table_selector_jq_friendly + '-to-' + column_number;\n\t\t\t\t\t$('#' + fromId).val('');\n\t\t\t\t\t$('#' + fromId).removeClass('inuse');\n\t\t\t\t\t$('#' + toId).val('');\n\t\t\t\t\t$('#' + toId).removeClass('inuse');\n\t\t\t\t\tif (table_arg.fnSettings().oFeatures.bServerSide === true) {\n\t\t\t\t\t\ttable_arg.fnSettings().aoPreSearchCols[column_number].sSearch = '';\n\t\t\t\t\t}\n\t\t\t\t\tclearStateSave(table_arg, column_number, table_selector_jq_friendly);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'range_number_slider':\n\t\t\t\t\tsliderId = 'yadcf-filter-' + table_selector_jq_friendly + '-slider-' + column_number;\n\t\t\t\t\tfromId = 'yadcf-filter-' + table_selector_jq_friendly + '-min_tip-' + column_number;\n\t\t\t\t\ttoId = 'yadcf-filter-' + table_selector_jq_friendly + '-max_tip-' + column_number;\n\t\t\t\t\t$('#' + fromId).text('');\n\t\t\t\t\t$('#' + fromId).parent().removeClass('inuse');\n\t\t\t\t\t$('#' + fromId).parent().parent().find('ui-slider-range').removeClass('inuse');\n\t\t\t\t\t$('#' + toId).text('');\n\t\t\t\t\t$('#' + toId).parent().removeClass('inuse');\n\t\t\t\t\t$('#' + toId).parent().parent().find('.ui-slider-range').removeClass('inuse');\n\t\t\t\t\t$('#' + sliderId).slider(\"option\", \"values\", [$('#' + fromId).parent().parent().find('.yadcf-filter-range-number-slider-min-tip-hidden').text(), $('#' + fromId).parent().parent().find('.yadcf-filter-range-number-slider-max-tip-hidden').text()]);\n\t\t\t\t\tif (table_arg.fnSettings().oFeatures.bServerSide === true) {\n\t\t\t\t\t\ttable_arg.fnSettings().aoPreSearchCols[column_number].sSearch = '';\n\t\t\t\t\t}\n\t\t\t\t\tclearStateSave(table_arg, column_number, table_selector_jq_friendly);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\t\tif (noRedraw !== true) {\n\t\t\t//clear global filter\n\t\t\tsettingsDt.oPreviousSearch.sSearch = '';\n\t\t\tif (settingsDt.aanFeatures.f !== 'undefined') {\n\t\t\t\tfor (i = 0; i < settingsDt.aanFeatures.f.length; i++) {\n\t\t\t\t\t$('input', settingsDt.aanFeatures.f[i]).val('');\n\t\t\t\t}\n\t\t\t}\n\t\t\t//end of clear global filter\n\t\t\ttable_arg.fnDraw(settingsDt);\n\t\t}\n\t}\n\n\tfunction exResetFilters(table_arg, columns) {\n\t\texResetAllFilters(table_arg, false, columns);\n\t}\n\n\tfunction exFilterExternallyTriggered(table_arg) {\n\t\tvar columnsObj,\n\t\t\tcolumnObjKey,\n\t\t\tcolumnObj,\n\t\t\tfilterValue,\n\t\t\tfiltersValuesSingleElem,\n\t\t\tfiltersValuesArr = [];\n\n\t\t//check if the table arg is from new datatables API (capital \"D\")\n\t\tif (table_arg.settings !== undefined) {\n\t\t\ttable_arg = table_arg.settings()[0].oInstance;\n\t\t}\n\t\tcolumnsObj = getOptions(table_arg.selector);\n\n\t\tfor (columnObjKey in columnsObj) {\n\t\t\tif (columnsObj.hasOwnProperty(columnObjKey)) {\n\t\t\t\tcolumnObj = columnsObj[columnObjKey];\n\t\t\t\tfilterValue = exGetColumnFilterVal(table_arg, columnObj.column_number);\n\t\t\t\tif ((typeof filterValue === 'string' && filterValue !== '') || (typeof filterValue === 'object' && (filterValue.from !== '' || filterValue.to !== ''))) {\n\t\t\t\t\tfiltersValuesSingleElem = [];\n\t\t\t\t\tfiltersValuesSingleElem.push(columnObj.column_number);\n\t\t\t\t\tfiltersValuesSingleElem.push(filterValue);\n\t\t\t\t\tfiltersValuesArr.push(filtersValuesSingleElem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\texFilterColumn(table_arg, filtersValuesArr, true);\n\t}\n\n return {\n\t\tinit : init,\n\t\tdoFilter : doFilter,\n\t\tdoFilterMultiSelect : doFilterMultiSelect,\n\t\tdoFilterAutocomplete : doFilterAutocomplete,\n\t\tautocompleteKeyUP : autocompleteKeyUP,\n\t\tgetOptions : getOptions,\n\t\trangeNumberKeyUP : rangeNumberKeyUP,\n\t\trangeDateKeyUP : rangeDateKeyUP,\n\t\trangeClear : rangeClear,\n\t\trangeNumberSliderClear : rangeNumberSliderClear,\n\t\tstopPropagation : stopPropagation,\n\t\tgenerateTableSelectorJQFriendly : generateTableSelectorJQFriendly,\n\t\texFilterColumn : exFilterColumn,\n\t\texGetColumnFilterVal : exGetColumnFilterVal,\n\t\texResetAllFilters: exResetAllFilters,\n\t\tdateKeyUP : dateKeyUP,\n\t\tdateSelectSingle : dateSelectSingle,\n\t\ttextKeyUP : textKeyUP,\n\t\tdoFilterCustomDateFunc : doFilterCustomDateFunc,\n\t\teventTargetFixUp : eventTargetFixUp,\n\t\tinitMultipleTables: initMultipleTables,\n\t\tinitMultipleColumns: initMultipleColumns,\n\t\ttextKeyUpMultiTables: textKeyUpMultiTables,\n\t\tdoFilterMultiTables: doFilterMultiTables,\n\t\tdoFilterMultiTablesMultiSelect: doFilterMultiTablesMultiSelect,\n\t\tgenerateTableSelectorJQFriendlyNew: generateTableSelectorJQFriendlyNew,\n\t\texFilterExternallyTriggered: exFilterExternallyTriggered,\n\t\texResetFilters: exResetFilters\n };\n\n}(jQuery));","/*jshint browser:true */\n/*!\n* FitVids 1.1\n*\n* Copyright 2013, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com\n* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/\n* Released under the WTFPL license - http://sam.zoy.org/wtfpl/\n*\n*/\n\n;(function( $ ){\n\n 'use strict';\n\n $.fn.fitVids = function( options ) {\n var settings = {\n customSelector: null,\n ignore: null\n };\n\n if(!document.getElementById('fit-vids-style')) {\n // appendStyles: https://github.com/toddmotto/fluidvids/blob/master/dist/fluidvids.js\n var head = document.head || document.getElementsByTagName('head')[0];\n var css = '.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}';\n var div = document.createElement(\"div\");\n div.innerHTML = '

    x

    ';\n head.appendChild(div.childNodes[1]);\n }\n\n if ( options ) {\n $.extend( settings, options );\n }\n\n return this.each(function(){\n var selectors = [\n 'iframe[src*=\"player.vimeo.com\"]',\n 'iframe[src*=\"youtube.com\"]',\n 'iframe[src*=\"youtube-nocookie.com\"]',\n 'iframe[src*=\"kickstarter.com\"][src*=\"video.html\"]',\n 'object',\n 'embed'\n ];\n\n if (settings.customSelector) {\n selectors.push(settings.customSelector);\n }\n\n var ignoreList = '.fitvidsignore';\n\n if(settings.ignore) {\n ignoreList = ignoreList + ', ' + settings.ignore;\n }\n\n var $allVideos = $(this).find(selectors.join(','));\n $allVideos = $allVideos.not('object object'); // SwfObj conflict patch\n $allVideos = $allVideos.not(ignoreList); // Disable FitVids on this video.\n\n $allVideos.each(function(){\n var $this = $(this);\n if($this.parents(ignoreList).length > 0) {\n return; // Disable FitVids on this video.\n }\n if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; }\n if ((!$this.css('height') && !$this.css('width')) && (isNaN($this.attr('height')) || isNaN($this.attr('width'))))\n {\n $this.attr('height', 9);\n $this.attr('width', 16);\n }\n var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(),\n width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(),\n aspectRatio = height / width;\n if(!$this.attr('name')){\n var videoName = 'fitvid' + $.fn.fitVids._count;\n $this.attr('name', videoName);\n $.fn.fitVids._count++;\n }\n $this.wrap('
    ').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+'%');\n $this.removeAttr('height').removeAttr('width');\n });\n });\n };\n \n // Internal counter for unique video names.\n $.fn.fitVids._count = 0;\n \n// Works with either jQuery or Zepto\n})( window.jQuery || window.Zepto );\n","/*! hideshare - v0.1.0 - 2013-09-11\n* https://github.com/arnonate/jQuery-FASS-Widget\n* Copyright (c) 2013 Nate Arnold; Licensed MIT */\n/* ========================================================================\n * HIDESHARE v1.0.0\n * https://github.com/arnonate/hideshare\n * ========================================================================\n\n Copyright (c) 2013 Nate Arnold\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation\n files (the \"Software\"), to deal in the Software without\n restriction, including without limitation the rights to use,\n copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the\n Software is furnished to do so, subject to the following\n conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n OTHER DEALINGS IN THE SOFTWARE.\n */\n\n/*global jQuery:false, window:false, document:false */\n\n;(function(window, $) {\n\n \"use strict\";\n\n // HIDESHARE PUBLIC CLASS DEFINITION\n // =================================\n\n var Hideshare = function (elem, options) {\n this.elem = elem;\n this.$elem = $(elem);\n this.options = options;\n };\n\n Hideshare.prototype = {\n defaults: {\n link: document.URL,\n title: document.title,\n description: '',\n media: null,\n facebook: true,\n twitter: true,\n pinterest: true,\n googleplus: true,\n linkedin: true,\n position: \"bottom\",\n speed: 100\n },\n\n init: function() {\n this.config = $.extend({}, this.defaults, this.options);\n this.wrapHideshare();\n return this;\n },\n\n wrapHideshare: function() {\n var output = output,\n width = this.$elem.outerWidth(),\n height = this.$elem.outerHeight(),\n liWidth = 0,\n placement = this.config.position,\n transition = this.config.speed,\n shareTitle = this.config.title,\n shareLink = this.config.link,\n shareMedia = this.config.media,\n shareDescription = this.config.description,\n facebookTemplate = '
  5. Facebook
  6. ',\n twitterTemplate = '
  7. Twitter
  8. ',\n pinterestTemplate = '
  9. Pinterest
  10. ',\n googleplusTemplate = '
  11. Google Plus
  12. ',\n linkedinTemplate = '
  13. Linked In
  14. ';\n\n if (this.config.facebook) {\n output = facebookTemplate;\n liWidth += 40;\n } else {\n output = \"\";\n liWidth = liWidth;\n }\n if (this.config.twitter) {\n output += twitterTemplate;\n liWidth += 40;\n } else {\n output = output;\n liWidth = liWidth;\n }\n if (this.config.pinterest) {\n output += pinterestTemplate;\n liWidth += 40;\n } else {\n output = output;\n liWidth = liWidth;\n }\n if (this.config.googleplus) {\n output += googleplusTemplate;\n liWidth += 40;\n } else {\n output = output;\n liWidth = liWidth;\n }\n if (this.config.linkedin) {\n output += linkedinTemplate;\n liWidth += 40;\n } else {\n output = output;\n liWidth = liWidth;\n }\n if (liWidth < width) {\n liWidth = width;\n }\n\n // Construct sharing list\n var hideshareList = '
      ' + output + '
    ';\n\n // Wrap button\n this.$elem.addClass(\"hideshare-btn\").wrap(\"
    \");\n this.$wrap = this.$elem.parent();\n\n // Insert sharing button list\n $(hideshareList).insertAfter(this.$elem);\n\n // Get placement of share buttons\n var getPlacement = function(placement, width, height, speed, $wrap) {\n\n var styles = {};\n\n if (placement === \"right\") {\n styles = {\n \"left\" : width + 10 + \"px\",\n \"right\" : -(width + 10) + \"px\",\n \"opacity\" : \"toggle\"\n };\n } else if (placement === \"left\") {\n styles = {\n \"left\" : -(width + 10) + \"px\",\n \"right\" : width + 10 + \"px\",\n \"opacity\" : \"toggle\"\n };\n } else if (placement === \"top\") {\n styles = {\n \"top\" : -(height + 10) + \"px\",\n \"bottom\" : height + 10 + \"px\",\n \"opacity\" : \"toggle\"\n };\n } else /* placement === \"bottom\" */ {\n styles = {\n \"top\" : height + 10 + \"px\",\n \"bottom\" : -(height + 10) + \"px\",\n \"left\" : \"0px\",\n \"opacity\" : \"toggle\"\n };\n }\n\n $wrap.find(\".hideshare-list\").animate(styles, speed).addClass(\"shown\");\n };\n\n // Return to original position\n var returnPlacement = function(speed, $wrap) {\n var styles = {\n \"top\" : \"0px\",\n \"left\" : \"0px\",\n \"opacity\" : \"toggle\"\n };\n\n $wrap.find(\".hideshare-list\").animate(styles, speed).removeClass(\"shown\");\n };\n\n // Toggle sharing on button click\n this.$elem.click(function(e) {\n var $wrap = $(e.currentTarget).parent();\n var list = $wrap.find(\".hideshare-list\");\n if (list.hasClass(\"shown\")){\n returnPlacement(transition, $wrap);\n } else {\n getPlacement(placement, width, height, transition, $wrap);\n }\n return false;\n });\n\n\n // SHARING FUNCTIONS\n var shareFacebook = function() {\n window.open('//www.facebook.com/share.php?m2w&s=100&p[url]=' + encodeURIComponent(shareLink) + '&p[images][0]=' + encodeURIComponent(shareMedia) + '&p[title]=' + encodeURIComponent(shareTitle) + '&p[summary]=' + encodeURIComponent(shareDescription),'Facebook','menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');\n };\n var shareTwitter = function() {\n window.open('https://twitter.com/intent/tweet?original_referer=' + encodeURIComponent(shareLink) + '&text=' + encodeURIComponent(shareTitle) + '%20' + encodeURIComponent(shareLink),'Twitter','menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');\n };\n var sharePinterest = function() {\n window.open('//pinterest.com/pin/create/button/?url=' + encodeURIComponent(shareLink) + '&media=' + encodeURIComponent(shareMedia) + '&description=' + encodeURIComponent(shareTitle),'Pinterest','menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');\n };\n var shareGooglePlus = function() {\n window.open('//plus.google.com/share?url=' + encodeURIComponent(shareLink),'GooglePlus','menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');\n };\n var shareLinkedIn = function() {\n window.open('//www.linkedin.com/shareArticle?mini=true&url=' + encodeURIComponent(shareLink) + '&title=' + encodeURIComponent(shareTitle) + '&source=' + encodeURIComponent(shareLink),'LinkedIn','menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');\n };\n\n\n this.$wrap.find(\".hideshare-facebook\").click(function() {\n shareFacebook();\n return false;\n });\n\n this.$wrap.find(\".hideshare-twitter\").click(function() {\n shareTwitter();\n return false;\n });\n\n this.$wrap.find(\".hideshare-pinterest\").click(function() {\n sharePinterest();\n return false;\n });\n\n this.$wrap.find(\".hideshare-google-plus\").click(function() {\n shareGooglePlus();\n return false;\n });\n\n this.$wrap.find(\".hideshare-linkedin\").click(function() {\n shareLinkedIn();\n return false;\n });\n\n }\n };\n\n Hideshare.defaults = Hideshare.prototype.defaults;\n\n $.fn.hideshare = function(options) {\n return this.each(function() {\n new Hideshare(this, options).init();\n });\n };\n\n window.Hideshare = Hideshare;\n\n})(window, jQuery);","/*!\n * jQuery Cookie Plugin v1.4.1\n * https://github.com/carhartl/jquery-cookie\n *\n * Copyright 2013 Klaus Hartl\n * Released under the MIT license\n */\n(function (factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD\n\t\tdefine(['jquery'], factory);\n\t} else if (typeof exports === 'object') {\n\t\t// CommonJS\n\t\tfactory(require('jquery'));\n\t} else {\n\t\t// Browser globals\n\t\tfactory(jQuery);\n\t}\n}(function ($) {\n\n\tvar pluses = /\\+/g;\n\n\tfunction encode(s) {\n\t\treturn config.raw ? s : encodeURIComponent(s);\n\t}\n\n\tfunction decode(s) {\n\t\treturn config.raw ? s : decodeURIComponent(s);\n\t}\n\n\tfunction stringifyCookieValue(value) {\n\t\treturn encode(config.json ? JSON.stringify(value) : String(value));\n\t}\n\n\tfunction parseCookieValue(s) {\n\t\tif (s.indexOf('\"') === 0) {\n\t\t\t// This is a quoted cookie as according to RFC2068, unescape...\n\t\t\ts = s.slice(1, -1).replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, '\\\\');\n\t\t}\n\n\t\ttry {\n\t\t\t// Replace server-side written pluses with spaces.\n\t\t\t// If we can't decode the cookie, ignore it, it's unusable.\n\t\t\t// If we can't parse the cookie, ignore it, it's unusable.\n\t\t\ts = decodeURIComponent(s.replace(pluses, ' '));\n\t\t\treturn config.json ? JSON.parse(s) : s;\n\t\t} catch(e) {}\n\t}\n\n\tfunction read(s, converter) {\n\t\tvar value = config.raw ? s : parseCookieValue(s);\n\t\treturn $.isFunction(converter) ? converter(value) : value;\n\t}\n\n\tvar config = $.cookie = function (key, value, options) {\n\n\t\t// Write\n\n\t\tif (value !== undefined && !$.isFunction(value)) {\n\t\t\toptions = $.extend({}, config.defaults, options);\n\n\t\t\tif (typeof options.expires === 'number') {\n\t\t\t\tvar days = options.expires, t = options.expires = new Date();\n\t\t\t\tt.setTime(+t + days * 864e+5);\n\t\t\t}\n\n\t\t\treturn (document.cookie = [\n\t\t\t\tencode(key), '=', stringifyCookieValue(value),\n\t\t\t\toptions.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE\n\t\t\t\toptions.path ? '; path=' + options.path : '',\n\t\t\t\toptions.domain ? '; domain=' + options.domain : '',\n\t\t\t\toptions.secure ? '; secure' : ''\n\t\t\t].join(''));\n\t\t}\n\n\t\t// Read\n\n\t\tvar result = key ? undefined : {};\n\n\t\t// To prevent the for loop in the first place assign an empty array\n\t\t// in case there are no cookies at all. Also prevents odd result when\n\t\t// calling $.cookie().\n\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\n\t\tfor (var i = 0, l = cookies.length; i < l; i++) {\n\t\t\tvar parts = cookies[i].split('=');\n\t\t\tvar name = decode(parts.shift());\n\t\t\tvar cookie = parts.join('=');\n\n\t\t\tif (key && key === name) {\n\t\t\t\t// If second argument (value) is a function it's a converter...\n\t\t\t\tresult = read(cookie, value);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Prevent storing a cookie that we couldn't decode.\n\t\t\tif (!key && (cookie = read(cookie)) !== undefined) {\n\t\t\t\tresult[name] = cookie;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\tconfig.defaults = {};\n\n\t$.removeCookie = function (key, options) {\n\t\tif ($.cookie(key) === undefined) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Must not alter options, thus extending a fresh object...\n\t\t$.cookie(key, '', $.extend({}, options, { expires: -1 }));\n\t\treturn !$.cookie(key);\n\t};\n\n}));\n","/* ========================================================================\n * Bootstrap: modal.js v3.3.7\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$body = $(document.body)\n this.$element = $(element)\n this.$dialog = this.$element.find('.modal-dialog')\n this.$backdrop = null\n this.isShown = null\n this.originalBodyPad = null\n this.scrollbarWidth = 0\n this.ignoreBackdropClick = false\n\n if (this.options.remote) {\n this.$element\n .find('.modal-content')\n .load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n }\n\n Modal.VERSION = '3.3.7'\n\n Modal.TRANSITION_DURATION = 300\n Modal.BACKDROP_TRANSITION_DURATION = 150\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.checkScrollbar()\n this.setScrollbar()\n this.$body.addClass('modal-open')\n\n this.escape()\n this.resize()\n\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n })\n })\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(that.$body) // don't move modals dom position\n }\n\n that.$element\n .show()\n .scrollTop(0)\n\n that.adjustDialog()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element.addClass('in')\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$dialog // wait for modal to slide in\n .one('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e)\n })\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n that.$element.trigger('focus').trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n this.resize()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .off('click.dismiss.bs.modal')\n .off('mouseup.dismiss.bs.modal')\n\n this.$dialog.off('mousedown.dismiss.bs.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (document !== e.target &&\n this.$element[0] !== e.target &&\n !this.$element.has(e.target).length) {\n this.$element.trigger('focus')\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keydown.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.resize = function () {\n if (this.isShown) {\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n } else {\n $(window).off('resize.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.$body.removeClass('modal-open')\n that.resetAdjustments()\n that.resetScrollbar()\n that.$element.trigger('hidden.bs.modal')\n })\n }\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n Modal.prototype.backdrop = function (callback) {\n var that = this\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $(document.createElement('div'))\n .addClass('modal-backdrop ' + animate)\n .appendTo(this.$body)\n\n this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n if (this.ignoreBackdropClick) {\n this.ignoreBackdropClick = false\n return\n }\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus()\n : this.hide()\n }, this))\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop\n .one('bsTransitionEnd', callback)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n var callbackRemove = function () {\n that.removeBackdrop()\n callback && callback()\n }\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one('bsTransitionEnd', callbackRemove)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callbackRemove()\n\n } else if (callback) {\n callback()\n }\n }\n\n // these following methods are used to handle overflowing modals\n\n Modal.prototype.handleUpdate = function () {\n this.adjustDialog()\n }\n\n Modal.prototype.adjustDialog = function () {\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n this.$element.css({\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n })\n }\n\n Modal.prototype.resetAdjustments = function () {\n this.$element.css({\n paddingLeft: '',\n paddingRight: ''\n })\n }\n\n Modal.prototype.checkScrollbar = function () {\n var fullWindowWidth = window.innerWidth\n if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n var documentElementRect = document.documentElement.getBoundingClientRect()\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n }\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n this.scrollbarWidth = this.measureScrollbar()\n }\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n this.originalBodyPad = document.body.style.paddingRight || ''\n if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)\n }\n\n Modal.prototype.resetScrollbar = function () {\n this.$body.css('padding-right', this.originalBodyPad)\n }\n\n Modal.prototype.measureScrollbar = function () { // thx walsh\n var scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.$body.append(scrollDiv)\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n this.$body[0].removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n function Plugin(option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.modal')\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option](_relatedTarget)\n else if (options.show) data.show(_relatedTarget)\n })\n }\n\n var old = $.fn.modal\n\n $.fn.modal = Plugin\n $.fn.modal.Constructor = Modal\n\n\n // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old\n return this\n }\n\n\n // MODAL DATA-API\n // ==============\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) // strip for ie7\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n if ($this.is('a')) e.preventDefault()\n\n $target.one('show.bs.modal', function (showEvent) {\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n $target.one('hidden.bs.modal', function () {\n $this.is(':visible') && $this.trigger('focus')\n })\n })\n Plugin.call($target, option, this)\n })\n\n}(jQuery);\n","/*! Swipebox v1.4.4 | Constantin Saguin csag.co | MIT License | github.com/brutaldesign/swipebox */\n\n;( function ( window, document, $, undefined ) {\n\n\t$.swipebox = function( elem, options ) {\n\n\t\t// Default options\n\t\tvar ui,\n\t\t\tdefaults = {\n\t\t\t\tuseCSS : true,\n\t\t\t\tuseSVG : true,\n\t\t\t\tinitialIndexOnArray : 0,\n\t\t\t\tremoveBarsOnMobile : true,\n\t\t\t\thideCloseButtonOnMobile : false,\n\t\t\t\thideBarsDelay : 3000,\n\t\t\t\tvideoMaxWidth : 1140,\n\t\t\t\tvimeoColor : 'cccccc',\n\t\t\t\tbeforeOpen: null,\n\t\t\t\tafterOpen: null,\n\t\t\t\tafterClose: null,\n\t\t\t\tafterMedia: null,\n\t\t\t\tnextSlide: null,\n\t\t\t\tprevSlide: null,\n\t\t\t\tloopAtEnd: false,\n\t\t\t\tautoplayVideos: false,\n\t\t\t\tqueryStringData: {},\n\t\t\t\ttoggleClassOnLoad: ''\n\t\t\t},\n\n\t\t\tplugin = this,\n\t\t\telements = [], // slides array [ { href:'...', title:'...' }, ...],\n\t\t\t$elem,\n\t\t\tselector = elem.selector,\n\t\t\tisMobile = navigator.userAgent.match( /(iPad)|(iPhone)|(iPod)|(Android)|(PlayBook)|(BB10)|(BlackBerry)|(Opera Mini)|(IEMobile)|(webOS)|(MeeGo)/i ),\n\t\t\tisTouch = isMobile !== null || document.createTouch !== undefined || ( 'ontouchstart' in window ) || ( 'onmsgesturechange' in window ) || navigator.msMaxTouchPoints,\n\t\t\tsupportSVG = !! document.createElementNS && !! document.createElementNS( 'http://www.w3.org/2000/svg', 'svg').createSVGRect,\n\t\t\twinWidth = window.innerWidth ? window.innerWidth : $( window ).width(),\n\t\t\twinHeight = window.innerHeight ? window.innerHeight : $( window ).height(),\n\t\t\tcurrentX = 0,\n\t\t\t/* jshint multistr: true */\n\t\t\thtml = '
    \\\n\t\t\t\t\t
    \\\n\t\t\t\t\t\t
    \\\n\t\t\t\t\t\t
    \\\n\t\t\t\t\t\t\t
    \\\n\t\t\t\t\t\t
    \\\n\t\t\t\t\t\t
    \\\n\t\t\t\t\t\t\t
    \\\n\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t
    \\\n\t\t\t\t\t\t
    \\\n\t\t\t\t\t\t\\\n\t\t\t\t\t
    \\\n\t\t\t
    ';\n\n\t\tplugin.settings = {};\n\n\t\t$.swipebox.close = function () {\n\t\t\tui.closeSlide();\n\t\t};\n\n\t\t$.swipebox.extend = function () {\n\t\t\treturn ui;\n\t\t};\n\n\t\tplugin.init = function() {\n\n\t\t\tplugin.settings = $.extend( {}, defaults, options );\n\n\t\t\tif ( $.isArray( elem ) ) {\n\n\t\t\t\telements = elem;\n\t\t\t\tui.target = $( window );\n\t\t\t\tui.init( plugin.settings.initialIndexOnArray );\n\n\t\t\t} else {\n\n\t\t\t\t$( document ).on( 'click', selector, function( event ) {\n\n\t\t\t\t\t// console.log( isTouch );\n\n\t\t\t\t\tif ( event.target.parentNode.className === 'slide current' ) {\n\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! $.isArray( elem ) ) {\n\t\t\t\t\t\tui.destroy();\n\t\t\t\t\t\t$elem = $( selector );\n\t\t\t\t\t\tui.actions();\n\t\t\t\t\t}\n\n\t\t\t\t\telements = [];\n\t\t\t\t\tvar index, relType, relVal;\n\n\t\t\t\t\t// Allow for HTML5 compliant attribute before legacy use of rel\n\t\t\t\t\tif ( ! relVal ) {\n\t\t\t\t\t\trelType = 'data-rel';\n\t\t\t\t\t\trelVal = $( this ).attr( relType );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! relVal ) {\n\t\t\t\t\t\trelType = 'rel';\n\t\t\t\t\t\trelVal = $( this ).attr( relType );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( relVal && relVal !== '' && relVal !== 'nofollow' ) {\n\t\t\t\t\t\t$elem = $( selector ).filter( '[' + relType + '=\"' + relVal + '\"]' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$elem = $( selector );\n\t\t\t\t\t}\n\n\t\t\t\t\t$elem.each( function() {\n\n\t\t\t\t\t\tvar title = null,\n\t\t\t\t\t\t\thref = null;\n\n\t\t\t\t\t\tif ( $( this ).attr( 'title' ) ) {\n\t\t\t\t\t\t\ttitle = $( this ).attr( 'title' );\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\tif ( $( this ).attr( 'href' ) ) {\n\t\t\t\t\t\t\thref = $( this ).attr( 'href' );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\telements.push( {\n\t\t\t\t\t\t\thref: href,\n\t\t\t\t\t\t\ttitle: title\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\n\t\t\t\t\tindex = $elem.index( $( this ) );\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\tui.target = $( event.target );\n\t\t\t\t\tui.init( index );\n\t\t\t\t} );\n\t\t\t}\n\t\t};\n\n\t\tui = {\n\n\t\t\t/**\n\t\t\t * Initiate Swipebox\n\t\t\t */\n\t\t\tinit : function( index ) {\n\t\t\t\tif ( plugin.settings.beforeOpen ) {\n\t\t\t\t\tplugin.settings.beforeOpen();\n\t\t\t\t}\n\t\t\t\tthis.target.trigger( 'swipebox-start' );\n\t\t\t\t$.swipebox.isOpen = true;\n\t\t\t\tthis.build();\n\t\t\t\tthis.openSlide( index );\n\t\t\t\tthis.openMedia( index );\n\t\t\t\tthis.preloadMedia( index+1 );\n\t\t\t\tthis.preloadMedia( index-1 );\n\t\t\t\tif ( plugin.settings.afterOpen ) {\n\t\t\t\t\tplugin.settings.afterOpen(index);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Built HTML containers and fire main functions\n\t\t\t */\n\t\t\tbuild : function () {\n\t\t\t\tvar $this = this, bg;\n\n\t\t\t\t$( 'body' ).append( html );\n\n\t\t\t\tif ( supportSVG && plugin.settings.useSVG === true ) {\n\t\t\t\t\tbg = $( '#swipebox-close' ).css( 'background-image' );\n\t\t\t\t\tbg = bg.replace( 'png', 'svg' );\n\t\t\t\t\t$( '#swipebox-prev, #swipebox-next, #swipebox-close' ).css( {\n\t\t\t\t\t\t'background-image' : bg\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tif ( isMobile && plugin.settings.removeBarsOnMobile ) {\n\t\t\t\t\t$( '#swipebox-bottom-bar, #swipebox-top-bar' ).remove();\n\t\t\t\t}\n\n\t\t\t\t$.each( elements, function() {\n\t\t\t\t\t$( '#swipebox-slider' ).append( '
    ' );\n\t\t\t\t} );\n\n\t\t\t\t$this.setDim();\n\t\t\t\t$this.actions();\n\n\t\t\t\tif ( isTouch ) {\n\t\t\t\t\t$this.gesture();\n\t\t\t\t}\n\n\t\t\t\t// Devices can have both touch and keyboard input so always allow key events\n\t\t\t\t$this.keyboard();\n\n\t\t\t\t$this.animBars();\n\t\t\t\t$this.resize();\n\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Set dimensions depending on windows width and height\n\t\t\t */\n\t\t\tsetDim : function () {\n\n\t\t\t\tvar width, height, sliderCss = {};\n\n\t\t\t\t// Reset dimensions on mobile orientation change\n\t\t\t\tif ( 'onorientationchange' in window ) {\n\n\t\t\t\t\twindow.addEventListener( 'orientationchange', function() {\n\t\t\t\t\t\tif ( window.orientation === 0 ) {\n\t\t\t\t\t\t\twidth = winWidth;\n\t\t\t\t\t\t\theight = winHeight;\n\t\t\t\t\t\t} else if ( window.orientation === 90 || window.orientation === -90 ) {\n\t\t\t\t\t\t\twidth = winHeight;\n\t\t\t\t\t\t\theight = winWidth;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\twidth = window.innerWidth ? window.innerWidth : $( window ).width();\n\t\t\t\t\theight = window.innerHeight ? window.innerHeight : $( window ).height();\n\t\t\t\t}\n\n\t\t\t\tsliderCss = {\n\t\t\t\t\twidth : width,\n\t\t\t\t\theight : height\n\t\t\t\t};\n\n\t\t\t\t$( '#swipebox-overlay' ).css( sliderCss );\n\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Reset dimensions on window resize envent\n\t\t\t */\n\t\t\tresize : function () {\n\t\t\t\tvar $this = this;\n\n\t\t\t\t$( window ).resize( function() {\n\t\t\t\t\t$this.setDim();\n\t\t\t\t} ).resize();\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Check if device supports CSS transitions\n\t\t\t */\n\t\t\tsupportTransition : function () {\n\n\t\t\t\tvar prefixes = 'transition WebkitTransition MozTransition OTransition msTransition KhtmlTransition'.split( ' ' ),\n\t\t\t\t\ti;\n\n\t\t\t\tfor ( i = 0; i < prefixes.length; i++ ) {\n\t\t\t\t\tif ( document.createElement( 'div' ).style[ prefixes[i] ] !== undefined ) {\n\t\t\t\t\t\treturn prefixes[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Check if CSS transitions are allowed (options + devicesupport)\n\t\t\t */\n\t\t\tdoCssTrans : function () {\n\t\t\t\tif ( plugin.settings.useCSS && this.supportTransition() ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Touch navigation\n\t\t\t */\n\t\t\tgesture : function () {\n\n\t\t\t\tvar $this = this,\n\t\t\t\t\tindex,\n\t\t\t\t\thDistance,\n\t\t\t\t\tvDistance,\n\t\t\t\t\thDistanceLast,\n\t\t\t\t\tvDistanceLast,\n\t\t\t\t\thDistancePercent,\n\t\t\t\t\tvSwipe = false,\n\t\t\t\t\thSwipe = false,\n\t\t\t\t\thSwipMinDistance = 10,\n\t\t\t\t\tvSwipMinDistance = 50,\n\t\t\t\t\tstartCoords = {},\n\t\t\t\t\tendCoords = {},\n\t\t\t\t\tbars = $( '#swipebox-top-bar, #swipebox-bottom-bar' ),\n\t\t\t\t\tslider = $( '#swipebox-slider' );\n\n\t\t\t\tbars.addClass( 'visible-bars' );\n\t\t\t\t$this.setTimeout();\n\n\t\t\t\t$( 'body' ).bind( 'touchstart', function( event ) {\n\n\t\t\t\t\t$( this ).addClass( 'touching' );\n\t\t\t\t\tindex = $( '#swipebox-slider .slide' ).index( $( '#swipebox-slider .slide.current' ) );\n\t\t\t\t\tendCoords = event.originalEvent.targetTouches[0];\n\t\t\t\t\tstartCoords.pageX = event.originalEvent.targetTouches[0].pageX;\n\t\t\t\t\tstartCoords.pageY = event.originalEvent.targetTouches[0].pageY;\n\n\t\t\t\t\t$( '#swipebox-slider' ).css( {\n\t\t\t\t\t\t'-webkit-transform' : 'translate3d(' + currentX +'%, 0, 0)',\n\t\t\t\t\t\t'transform' : 'translate3d(' + currentX + '%, 0, 0)'\n\t\t\t\t\t} );\n\n\t\t\t\t\t$( '.touching' ).bind( 'touchmove',function( event ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tendCoords = event.originalEvent.targetTouches[0];\n\n\t\t\t\t\t\tif ( ! hSwipe ) {\n\t\t\t\t\t\t\tvDistanceLast = vDistance;\n\t\t\t\t\t\t\tvDistance = endCoords.pageY - startCoords.pageY;\n\t\t\t\t\t\t\tif ( Math.abs( vDistance ) >= vSwipMinDistance || vSwipe ) {\n\t\t\t\t\t\t\t\tvar opacity = 0.75 - Math.abs(vDistance) / slider.height();\n\n\t\t\t\t\t\t\t\tslider.css( { 'top': vDistance + 'px' } );\n\t\t\t\t\t\t\t\tslider.css( { 'opacity': opacity } );\n\n\t\t\t\t\t\t\t\tvSwipe = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\thDistanceLast = hDistance;\n\t\t\t\t\t\thDistance = endCoords.pageX - startCoords.pageX;\n\t\t\t\t\t\thDistancePercent = hDistance * 100 / winWidth;\n\n\t\t\t\t\t\tif ( ! hSwipe && ! vSwipe && Math.abs( hDistance ) >= hSwipMinDistance ) {\n\t\t\t\t\t\t\t$( '#swipebox-slider' ).css( {\n\t\t\t\t\t\t\t\t'-webkit-transition' : '',\n\t\t\t\t\t\t\t\t'transition' : ''\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\thSwipe = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( hSwipe ) {\n\n\t\t\t\t\t\t\t// swipe left\n\t\t\t\t\t\t\tif ( 0 < hDistance ) {\n\n\t\t\t\t\t\t\t\t// first slide\n\t\t\t\t\t\t\t\tif ( 0 === index ) {\n\t\t\t\t\t\t\t\t\t// console.log( 'first' );\n\t\t\t\t\t\t\t\t\t$( '#swipebox-overlay' ).addClass( 'leftSpringTouch' );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// Follow gesture\n\t\t\t\t\t\t\t\t\t$( '#swipebox-overlay' ).removeClass( 'leftSpringTouch' ).removeClass( 'rightSpringTouch' );\n\t\t\t\t\t\t\t\t\t$( '#swipebox-slider' ).css( {\n\t\t\t\t\t\t\t\t\t\t'-webkit-transform' : 'translate3d(' + ( currentX + hDistancePercent ) +'%, 0, 0)',\n\t\t\t\t\t\t\t\t\t\t'transform' : 'translate3d(' + ( currentX + hDistancePercent ) + '%, 0, 0)'\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// swipe rught\n\t\t\t\t\t\t\t} else if ( 0 > hDistance ) {\n\n\t\t\t\t\t\t\t\t// last Slide\n\t\t\t\t\t\t\t\tif ( elements.length === index +1 ) {\n\t\t\t\t\t\t\t\t\t// console.log( 'last' );\n\t\t\t\t\t\t\t\t\t$( '#swipebox-overlay' ).addClass( 'rightSpringTouch' );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t$( '#swipebox-overlay' ).removeClass( 'leftSpringTouch' ).removeClass( 'rightSpringTouch' );\n\t\t\t\t\t\t\t\t\t$( '#swipebox-slider' ).css( {\n\t\t\t\t\t\t\t\t\t\t'-webkit-transform' : 'translate3d(' + ( currentX + hDistancePercent ) +'%, 0, 0)',\n\t\t\t\t\t\t\t\t\t\t'transform' : 'translate3d(' + ( currentX + hDistancePercent ) + '%, 0, 0)'\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn false;\n\n\t\t\t\t} ).bind( 'touchend',function( event ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t\t$( '#swipebox-slider' ).css( {\n\t\t\t\t\t\t'-webkit-transition' : '-webkit-transform 0.4s ease',\n\t\t\t\t\t\t'transition' : 'transform 0.4s ease'\n\t\t\t\t\t} );\n\n\t\t\t\t\tvDistance = endCoords.pageY - startCoords.pageY;\n\t\t\t\t\thDistance = endCoords.pageX - startCoords.pageX;\n\t\t\t\t\thDistancePercent = hDistance*100/winWidth;\n\n\t\t\t\t\t// Swipe to bottom to close\n\t\t\t\t\tif ( vSwipe ) {\n\t\t\t\t\t\tvSwipe = false;\n\t\t\t\t\t\tif ( Math.abs( vDistance ) >= 2 * vSwipMinDistance && Math.abs( vDistance ) > Math.abs( vDistanceLast ) ) {\n\t\t\t\t\t\t\tvar vOffset = vDistance > 0 ? slider.height() : - slider.height();\n\t\t\t\t\t\t\tslider.animate( { top: vOffset + 'px', 'opacity': 0 },\n\t\t\t\t\t\t\t\t300,\n\t\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\t\t$this.closeSlide();\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tslider.animate( { top: 0, 'opacity': 1 }, 300 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else if ( hSwipe ) {\n\n\t\t\t\t\t\thSwipe = false;\n\n\t\t\t\t\t\t// swipeLeft\n\t\t\t\t\t\tif( hDistance >= hSwipMinDistance && hDistance >= hDistanceLast) {\n\n\t\t\t\t\t\t\t$this.getPrev();\n\n\t\t\t\t\t\t// swipeRight\n\t\t\t\t\t\t} else if ( hDistance <= -hSwipMinDistance && hDistance <= hDistanceLast) {\n\n\t\t\t\t\t\t\t$this.getNext();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else { // Top and bottom bars have been removed on touchable devices\n\t\t\t\t\t\t// tap\n\t\t\t\t\t\tif ( ! bars.hasClass( 'visible-bars' ) ) {\n\t\t\t\t\t\t\t$this.showBars();\n\t\t\t\t\t\t\t$this.setTimeout();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$this.clearTimeout();\n\t\t\t\t\t\t\t$this.hideBars();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t$( '#swipebox-slider' ).css( {\n\t\t\t\t\t\t'-webkit-transform' : 'translate3d(' + currentX + '%, 0, 0)',\n\t\t\t\t\t\t'transform' : 'translate3d(' + currentX + '%, 0, 0)'\n\t\t\t\t\t} );\n\n\t\t\t\t\t$( '#swipebox-overlay' ).removeClass( 'leftSpringTouch' ).removeClass( 'rightSpringTouch' );\n\t\t\t\t\t$( '.touching' ).off( 'touchmove' ).removeClass( 'touching' );\n\n\t\t\t\t} );\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Set timer to hide the action bars\n\t\t\t */\n\t\t\tsetTimeout: function () {\n\t\t\t\tif ( plugin.settings.hideBarsDelay > 0 ) {\n\t\t\t\t\tvar $this = this;\n\t\t\t\t\t$this.clearTimeout();\n\t\t\t\t\t$this.timeout = window.setTimeout( function() {\n\t\t\t\t\t\t\t$this.hideBars();\n\t\t\t\t\t\t},\n\n\t\t\t\t\t\tplugin.settings.hideBarsDelay\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Clear timer\n\t\t\t */\n\t\t\tclearTimeout: function () {\n\t\t\t\twindow.clearTimeout( this.timeout );\n\t\t\t\tthis.timeout = null;\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Show navigation and title bars\n\t\t\t */\n\t\t\tshowBars : function () {\n\t\t\t\tvar bars = $( '#swipebox-top-bar, #swipebox-bottom-bar' );\n\t\t\t\tif ( this.doCssTrans() ) {\n\t\t\t\t\tbars.addClass( 'visible-bars' );\n\t\t\t\t} else {\n\t\t\t\t\t$( '#swipebox-top-bar' ).animate( { top : 0 }, 500 );\n\t\t\t\t\t$( '#swipebox-bottom-bar' ).animate( { bottom : 0 }, 500 );\n\t\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t\tbars.addClass( 'visible-bars' );\n\t\t\t\t\t}, 1000 );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Hide navigation and title bars\n\t\t\t */\n\t\t\thideBars : function () {\n\t\t\t\tvar bars = $( '#swipebox-top-bar, #swipebox-bottom-bar' );\n\t\t\t\tif ( this.doCssTrans() ) {\n\t\t\t\t\tbars.removeClass( 'visible-bars' );\n\t\t\t\t} else {\n\t\t\t\t\t$( '#swipebox-top-bar' ).animate( { top : '-50px' }, 500 );\n\t\t\t\t\t$( '#swipebox-bottom-bar' ).animate( { bottom : '-50px' }, 500 );\n\t\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t\tbars.removeClass( 'visible-bars' );\n\t\t\t\t\t}, 1000 );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Animate navigation and top bars\n\t\t\t */\n\t\t\tanimBars : function () {\n\t\t\t\tvar $this = this,\n\t\t\t\t\tbars = $( '#swipebox-top-bar, #swipebox-bottom-bar' );\n\n\t\t\t\tbars.addClass( 'visible-bars' );\n\t\t\t\t$this.setTimeout();\n\n\t\t\t\t$( '#swipebox-slider' ).click( function() {\n\t\t\t\t\tif ( ! bars.hasClass( 'visible-bars' ) ) {\n\t\t\t\t\t\t$this.showBars();\n\t\t\t\t\t\t$this.setTimeout();\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\t$( '#swipebox-bottom-bar' ).hover( function() {\n\t\t\t\t\t$this.showBars();\n\t\t\t\t\tbars.addClass( 'visible-bars' );\n\t\t\t\t\t$this.clearTimeout();\n\n\t\t\t\t}, function() {\n\t\t\t\t\tif ( plugin.settings.hideBarsDelay > 0 ) {\n\t\t\t\t\t\tbars.removeClass( 'visible-bars' );\n\t\t\t\t\t\t$this.setTimeout();\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Keyboard navigation\n\t\t\t */\n\t\t\tkeyboard : function () {\n\t\t\t\tvar $this = this;\n\t\t\t\t$( window ).bind( 'keyup', function( event ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\n\t\t\t\t\tif ( event.keyCode === 37 ) {\n\n\t\t\t\t\t\t$this.getPrev();\n\n\t\t\t\t\t} else if ( event.keyCode === 39 ) {\n\n\t\t\t\t\t\t$this.getNext();\n\n\t\t\t\t\t} else if ( event.keyCode === 27 ) {\n\n\t\t\t\t\t\t$this.closeSlide();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Navigation events : go to next slide, go to prevous slide and close\n\t\t\t */\n\t\t\tactions : function () {\n\t\t\t\tvar $this = this,\n\t\t\t\t\taction = 'touchend click'; // Just detect for both event types to allow for multi-input\n\n\t\t\t\tif ( elements.length < 2 ) {\n\n\t\t\t\t\t$( '#swipebox-bottom-bar' ).hide();\n\n\t\t\t\t\tif ( undefined === elements[ 1 ] ) {\n\t\t\t\t\t\t$( '#swipebox-top-bar' ).hide();\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\t$( '#swipebox-prev' ).bind( action, function( event ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t$this.getPrev();\n\t\t\t\t\t\t$this.setTimeout();\n\t\t\t\t\t} );\n\n\t\t\t\t\t$( '#swipebox-next' ).bind( action, function( event ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t$this.getNext();\n\t\t\t\t\t\t$this.setTimeout();\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t$( '#swipebox-close' ).bind( action, function() {\n\t\t\t\t\t$this.closeSlide();\n\t\t\t\t} );\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Set current slide\n\t\t\t */\n\t\t\tsetSlide : function ( index, isFirst ) {\n\n\t\t\t\tisFirst = isFirst || false;\n\n\t\t\t\tvar slider = $( '#swipebox-slider' );\n\n\t\t\t\tcurrentX = -index*100;\n\n\t\t\t\tif ( this.doCssTrans() ) {\n\t\t\t\t\tslider.css( {\n\t\t\t\t\t\t'-webkit-transform' : 'translate3d(' + (-index*100)+'%, 0, 0)',\n\t\t\t\t\t\t'transform' : 'translate3d(' + (-index*100)+'%, 0, 0)'\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tslider.animate( { left : ( -index*100 )+'%' } );\n\t\t\t\t}\n\n\t\t\t\t$( '#swipebox-slider .slide' ).removeClass( 'current' );\n\t\t\t\t$( '#swipebox-slider .slide' ).eq( index ).addClass( 'current' );\n\t\t\t\tthis.setTitle( index );\n\n\t\t\t\tif ( isFirst ) {\n\t\t\t\t\tslider.fadeIn();\n\t\t\t\t}\n\n\t\t\t\t$( '#swipebox-prev, #swipebox-next' ).removeClass( 'disabled' );\n\n\t\t\t\tif ( index === 0 ) {\n\t\t\t\t\t$( '#swipebox-prev' ).addClass( 'disabled' );\n\t\t\t\t} else if ( index === elements.length - 1 && plugin.settings.loopAtEnd !== true ) {\n\t\t\t\t\t$( '#swipebox-next' ).addClass( 'disabled' );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Open slide\n\t\t\t */\n\t\t\topenSlide : function ( index ) {\n\t\t\t\t$( 'html' ).addClass( 'swipebox-html' );\n\t\t\t\tif ( isTouch ) {\n\t\t\t\t\t$( 'html' ).addClass( 'swipebox-touch' );\n\n\t\t\t\t\tif ( plugin.settings.hideCloseButtonOnMobile ) {\n\t\t\t\t\t\t$( 'html' ).addClass( 'swipebox-no-close-button' );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$( 'html' ).addClass( 'swipebox-no-touch' );\n\t\t\t\t}\n\t\t\t\t$( window ).trigger( 'resize' ); // fix scroll bar visibility on desktop\n\t\t\t\tthis.setSlide( index, true );\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Set a time out if the media is a video\n\t\t\t */\n\t\t\tpreloadMedia : function ( index ) {\n\t\t\t\tvar $this = this,\n\t\t\t\t\tsrc = null;\n\n\t\t\t\tif ( elements[ index ] !== undefined ) {\n\t\t\t\t\tsrc = elements[ index ].href;\n\t\t\t\t}\n\n\t\t\t\tif ( ! $this.isVideo( src ) ) {\n\t\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t\t$this.openMedia( index );\n\t\t\t\t\t}, 1000);\n\t\t\t\t} else {\n\t\t\t\t\t$this.openMedia( index );\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Open\n\t\t\t */\n\t\t\topenMedia : function ( index ) {\n\t\t\t\tvar $this = this,\n\t\t\t\t\tsrc,\n\t\t\t\t\tslide;\n\n\t\t\t\tif ( elements[ index ] !== undefined ) {\n\t\t\t\t\tsrc = elements[ index ].href;\n\t\t\t\t}\n\n\t\t\t\tif ( index < 0 || index >= elements.length ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tslide = $( '#swipebox-slider .slide' ).eq( index );\n\n\t\t\t\tif ( ! $this.isVideo( src ) ) {\n\t\t\t\t\tslide.addClass( 'slide-loading' );\n\t\t\t\t\t$this.loadMedia( src, function() {\n\t\t\t\t\t\tslide.removeClass( 'slide-loading' );\n\t\t\t\t\t\tslide.html( this );\n\n\t\t\t\t\t\tif ( plugin.settings.afterMedia ) {\n\t\t\t\t\t\t\tplugin.settings.afterMedia( index );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tslide.html( $this.getVideo( src ) );\n\n\t\t\t\t\tif ( plugin.settings.afterMedia ) {\n\t\t\t\t\t\tplugin.settings.afterMedia( index );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Set link title attribute as caption\n\t\t\t */\n\t\t\tsetTitle : function ( index ) {\n\t\t\t\tvar title = null;\n\n\t\t\t\t$( '#swipebox-title' ).empty();\n\n\t\t\t\tif ( elements[ index ] !== undefined ) {\n\t\t\t\t\ttitle = elements[ index ].title;\n\t\t\t\t}\n\n\t\t\t\tif ( title ) {\n\t\t\t\t\t$( '#swipebox-top-bar' ).show();\n\t\t\t\t\t$( '#swipebox-title' ).append( title );\n\t\t\t\t} else {\n\t\t\t\t\t$( '#swipebox-top-bar' ).hide();\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Check if the URL is a video\n\t\t\t */\n\t\t\tisVideo : function ( src ) {\n\n\t\t\t\tif ( src ) {\n\t\t\t\t\tif ( src.match( /(youtube\\.com|youtube-nocookie\\.com)\\/watch\\?v=([a-zA-Z0-9\\-_]+)/) || src.match( /vimeo\\.com\\/([0-9]*)/ ) || src.match( /youtu\\.be\\/([a-zA-Z0-9\\-_]+)/ ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( src.toLowerCase().indexOf( 'swipeboxvideo=1' ) >= 0 ) {\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Parse URI querystring and:\n\t\t\t * - overrides value provided via dictionary\n\t\t\t * - rebuild it again returning a string\n\t\t\t */\n\t\t\tparseUri : function (uri, customData) {\n\t\t\t\tvar a = document.createElement('a'),\n\t\t\t\t\tqs = {};\n\n\t\t\t\t// Decode the URI\n\t\t\t\ta.href = decodeURIComponent( uri );\n\n\t\t\t\t// QueryString to Object\n\t\t\t\tif ( a.search ) {\n\t\t\t\t\tqs = JSON.parse( '{\"' + a.search.toLowerCase().replace('?','').replace(/&/g,'\",\"').replace(/=/g,'\":\"') + '\"}' );\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// Extend with custom data\n\t\t\t\tif ( $.isPlainObject( customData ) ) {\n\t\t\t\t\tqs = $.extend( qs, customData, plugin.settings.queryStringData ); // The dev has always the final word\n\t\t\t\t}\n\n\t\t\t\t// Return querystring as a string\n\t\t\t\treturn $\n\t\t\t\t\t.map( qs, function (val, key) {\n\t\t\t\t\t\tif ( val && val > '' ) {\n\t\t\t\t\t\t\treturn encodeURIComponent( key ) + '=' + encodeURIComponent( val );\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.join('&');\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Get video iframe code from URL\n\t\t\t */\n\t\t\tgetVideo : function( url ) {\n\t\t\t\tvar iframe = '',\n\t\t\t\t\tyoutubeUrl = url.match( /((?:www\\.)?youtube\\.com|(?:www\\.)?youtube-nocookie\\.com)\\/watch\\?v=([a-zA-Z0-9\\-_]+)/ ),\n\t\t\t\t\tyoutubeShortUrl = url.match(/(?:www\\.)?youtu\\.be\\/([a-zA-Z0-9\\-_]+)/),\n\t\t\t\t\tvimeoUrl = url.match( /(?:www\\.)?vimeo\\.com\\/([0-9]*)/ ),\n\t\t\t\t\tqs = '';\n\t\t\t\tif ( youtubeUrl || youtubeShortUrl) {\n\t\t\t\t\tif ( youtubeShortUrl ) {\n\t\t\t\t\t\tyoutubeUrl = youtubeShortUrl;\n\t\t\t\t\t}\n\t\t\t\t\tqs = ui.parseUri( url, {\n\t\t\t\t\t\t'autoplay' : ( plugin.settings.autoplayVideos ? '1' : '0' ),\n\t\t\t\t\t\t'v' : ''\n\t\t\t\t\t});\n\t\t\t\t\tiframe = '';\n\n\t\t\t\t} else if ( vimeoUrl ) {\n\t\t\t\t\tqs = ui.parseUri( url, {\n\t\t\t\t\t\t'autoplay' : ( plugin.settings.autoplayVideos ? '1' : '0' ),\n\t\t\t\t\t\t'byline' : '0',\n\t\t\t\t\t\t'portrait' : '0',\n\t\t\t\t\t\t'color': plugin.settings.vimeoColor\n\t\t\t\t\t});\n\t\t\t\t\tiframe = '';\n\n\t\t\t\t} else {\n\t\t\t\t\tiframe = '';\n\t\t\t\t}\n\n\t\t\t\treturn '
    ' + iframe + '
    ';\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Load image\n\t\t\t */\n\t\t\tloadMedia : function ( src, callback ) {\n // Inline content\n if ( src.trim().indexOf('#') === 0 ) {\n callback.call(\n \t$('
    ', {\n \t\t'class' : 'swipebox-inline-container'\n \t})\n \t.append(\n \t\t$(src)\n\t \t.clone()\n\t \t.toggleClass( plugin.settings.toggleClassOnLoad )\n\t )\n );\n }\n // Everything else\n else {\n \t\t\t\tif ( ! this.isVideo( src ) ) {\n \t\t\t\t\tvar img = $( '' ).on( 'load', function() {\n \t\t\t\t\t\tcallback.call( img );\n \t\t\t\t\t} );\n\n \t\t\t\t\timg.attr( 'src', src );\n \t\t\t\t}\n }\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Get next slide\n\t\t\t */\n\t\t\tgetNext : function () {\n\t\t\t\tvar $this = this,\n\t\t\t\t\tsrc,\n\t\t\t\t\tindex = $( '#swipebox-slider .slide' ).index( $( '#swipebox-slider .slide.current' ) );\n\t\t\t\tif ( index + 1 < elements.length ) {\n\n\t\t\t\t\tsrc = $( '#swipebox-slider .slide' ).eq( index ).contents().find( 'iframe' ).attr( 'src' );\n\t\t\t\t\t$( '#swipebox-slider .slide' ).eq( index ).contents().find( 'iframe' ).attr( 'src', src );\n\t\t\t\t\tindex++;\n\t\t\t\t\t$this.setSlide( index );\n\t\t\t\t\t$this.preloadMedia( index+1 );\n\t\t\t\t\tif ( plugin.settings.nextSlide ) {\n\t\t\t\t\t\tplugin.settings.nextSlide(index);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( plugin.settings.loopAtEnd === true ) {\n\t\t\t\t\t\tsrc = $( '#swipebox-slider .slide' ).eq( index ).contents().find( 'iframe' ).attr( 'src' );\n\t\t\t\t\t\t$( '#swipebox-slider .slide' ).eq( index ).contents().find( 'iframe' ).attr( 'src', src );\n\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t$this.preloadMedia( index );\n\t\t\t\t\t\t$this.setSlide( index );\n\t\t\t\t\t\t$this.preloadMedia( index + 1 );\n\t\t\t\t\t\tif ( plugin.settings.nextSlide ) {\n\t\t\t\t\t\t\tplugin.settings.nextSlide(index);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$( '#swipebox-overlay' ).addClass( 'rightSpring' );\n\t\t\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t\t\t$( '#swipebox-overlay' ).removeClass( 'rightSpring' );\n\t\t\t\t\t\t}, 500 );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Get previous slide\n\t\t\t */\n\t\t\tgetPrev : function () {\n\t\t\t\tvar index = $( '#swipebox-slider .slide' ).index( $( '#swipebox-slider .slide.current' ) ),\n\t\t\t\t\tsrc;\n\t\t\t\tif ( index > 0 ) {\n\t\t\t\t\tsrc = $( '#swipebox-slider .slide' ).eq( index ).contents().find( 'iframe').attr( 'src' );\n\t\t\t\t\t$( '#swipebox-slider .slide' ).eq( index ).contents().find( 'iframe' ).attr( 'src', src );\n\t\t\t\t\tindex--;\n\t\t\t\t\tthis.setSlide( index );\n\t\t\t\t\tthis.preloadMedia( index-1 );\n\t\t\t\t\tif ( plugin.settings.prevSlide ) {\n\t\t\t\t\t\tplugin.settings.prevSlide(index);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$( '#swipebox-overlay' ).addClass( 'leftSpring' );\n\t\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t\t$( '#swipebox-overlay' ).removeClass( 'leftSpring' );\n\t\t\t\t\t}, 500 );\n\t\t\t\t}\n\t\t\t},\n\t\t\t/* jshint unused:false */\n\t\t\tnextSlide : function ( index ) {\n\t\t\t\t// Callback for next slide\n\t\t\t},\n\n\t\t\tprevSlide : function ( index ) {\n\t\t\t\t// Callback for prev slide\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Close\n\t\t\t */\n\t\t\tcloseSlide : function () {\n\t\t\t\t$( 'html' ).removeClass( 'swipebox-html' );\n\t\t\t\t$( 'html' ).removeClass( 'swipebox-touch' );\n\t\t\t\t$( window ).trigger( 'resize' );\n\t\t\t\tthis.destroy();\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Destroy the whole thing\n\t\t\t */\n\t\t\tdestroy : function () {\n\t\t\t\t$( window ).unbind( 'keyup' );\n\t\t\t\t$( 'body' ).unbind( 'touchstart' );\n\t\t\t\t$( 'body' ).unbind( 'touchmove' );\n\t\t\t\t$( 'body' ).unbind( 'touchend' );\n\t\t\t\t$( '#swipebox-slider' ).unbind();\n\t\t\t\t$( '#swipebox-overlay' ).remove();\n\n\t\t\t\tif ( ! $.isArray( elem ) ) {\n\t\t\t\t\telem.removeData( '_swipebox' );\n\t\t\t\t}\n\n\t\t\t\tif ( this.target ) {\n\t\t\t\t\tthis.target.trigger( 'swipebox-destroy' );\n\t\t\t\t}\n\n\t\t\t\t$.swipebox.isOpen = false;\n\n\t\t\t\tif ( plugin.settings.afterClose ) {\n\t\t\t\t\tplugin.settings.afterClose();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tplugin.init();\n\t};\n\n\t$.fn.swipebox = function( options ) {\n\n\t\tif ( ! $.data( this, '_swipebox' ) ) {\n\t\t\tvar swipebox = new $.swipebox( this, options );\n\t\t\tthis.data( '_swipebox', swipebox );\n\t\t}\n\t\treturn this.data( '_swipebox' );\n\n\t};\n\n}( window, document, jQuery ) );\n","//! moment.js\n//! version : 2.17.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\nvar hookCallback;\n\nfunction hooks () {\n return hookCallback.apply(null, arguments);\n}\n\n// This is done to register the method called with moment()\n// without creating circular dependencies.\nfunction setHookCallback (callback) {\n hookCallback = callback;\n}\n\nfunction isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n}\n\nfunction isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n}\n\nfunction isObjectEmpty(obj) {\n var k;\n for (k in obj) {\n // even if its not own property I'd still call it non-empty\n return false;\n }\n return true;\n}\n\nfunction isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n}\n\nfunction isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n}\n\nfunction map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n}\n\nfunction hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n}\n\nfunction extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n}\n\nfunction createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n}\n\nfunction defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null\n };\n}\n\nfunction getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n}\n\nvar some;\nif (Array.prototype.some) {\n some = Array.prototype.some;\n} else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n}\n\nvar some$1 = some;\n\nfunction isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some$1.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n}\n\nfunction createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n}\n\nfunction isUndefined(input) {\n return input === void 0;\n}\n\n// Plugins that add properties should also add the key here (null value),\n// so we can properly clone ourselves.\nvar momentProperties = hooks.momentProperties = [];\n\nfunction copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i in momentProperties) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n}\n\nvar updateInProgress = false;\n\n// Moment prototype object\nfunction Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n}\n\nfunction isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n}\n\nfunction absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n}\n\nfunction toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n}\n\n// compare two arrays, return the number of differences\nfunction compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n}\n\nfunction warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n}\n\nfunction deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n}\n\nvar deprecations = {};\n\nfunction deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n}\n\nhooks.suppressDeprecationWarnings = false;\nhooks.deprecationHandler = null;\n\nfunction isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n}\n\nfunction set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _ordinalParseLenient.\n this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\\d{1,2}/).source);\n}\n\nfunction mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n}\n\nfunction Locale(config) {\n if (config != null) {\n this.set(config);\n }\n}\n\nvar keys;\n\nif (Object.keys) {\n keys = Object.keys;\n} else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n}\n\nvar keys$1 = keys;\n\nvar defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n};\n\nfunction calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n}\n\nvar defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n};\n\nfunction longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n}\n\nvar defaultInvalidDate = 'Invalid date';\n\nfunction invalidDate () {\n return this._invalidDate;\n}\n\nvar defaultOrdinal = '%d';\nvar defaultOrdinalParse = /\\d{1,2}/;\n\nfunction ordinal (number) {\n return this._ordinal.replace('%d', number);\n}\n\nvar defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n};\n\nfunction relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n}\n\nfunction pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n}\n\nvar aliases = {};\n\nfunction addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n}\n\nfunction normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n}\n\nfunction normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n}\n\nvar priorities = {};\n\nfunction addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n}\n\nfunction getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n}\n\nfunction makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n}\n\nfunction get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n}\n\nfunction set$1 (mom, unit, value) {\n if (mom.isValid()) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n}\n\n// MOMENTS\n\nfunction stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n}\n\n\nfunction stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n}\n\nfunction zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n}\n\nvar formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\nvar localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\nvar formatFunctions = {};\n\nvar formatTokenFunctions = {};\n\n// token: 'M'\n// padded: ['MM', 2]\n// ordinal: 'Mo'\n// callback: function () { this.month() + 1 }\nfunction addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n}\n\nfunction removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n}\n\nfunction makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n}\n\n// format date using native date object\nfunction formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n}\n\nfunction expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n}\n\nvar match1 = /\\d/; // 0 - 9\nvar match2 = /\\d\\d/; // 00 - 99\nvar match3 = /\\d{3}/; // 000 - 999\nvar match4 = /\\d{4}/; // 0000 - 9999\nvar match6 = /[+-]?\\d{6}/; // -999999 - 999999\nvar match1to2 = /\\d\\d?/; // 0 - 99\nvar match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\nvar match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\nvar match1to3 = /\\d{1,3}/; // 0 - 999\nvar match1to4 = /\\d{1,4}/; // 0 - 9999\nvar match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\nvar matchUnsigned = /\\d+/; // 0 - inf\nvar matchSigned = /[+-]?\\d+/; // -inf - inf\n\nvar matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\nvar matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\nvar matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n// any word (or two) characters or numbers including two/three word month in arabic.\n// includes scottish gaelic two word and hyphenated months\nvar matchWord = /[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF\\/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i;\n\n\nvar regexes = {};\n\nfunction addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n}\n\nfunction getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n}\n\n// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\nfunction unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n}\n\nfunction regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nvar tokens = {};\n\nfunction addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n}\n\nfunction addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n}\n\nfunction addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n}\n\nvar YEAR = 0;\nvar MONTH = 1;\nvar DATE = 2;\nvar HOUR = 3;\nvar MINUTE = 4;\nvar SECOND = 5;\nvar MILLISECOND = 6;\nvar WEEK = 7;\nvar WEEKDAY = 8;\n\nvar indexOf;\n\nif (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n} else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n}\n\nvar indexOf$1 = indexOf;\n\nfunction daysInMonth(year, month) {\n return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();\n}\n\n// FORMATTING\n\naddFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n});\n\naddFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n});\n\naddFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n});\n\n// ALIASES\n\naddUnitAlias('month', 'M');\n\n// PRIORITY\n\naddUnitPriority('month', 8);\n\n// PARSING\n\naddRegexToken('M', match1to2);\naddRegexToken('MM', match1to2, match2);\naddRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n});\naddRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n});\n\naddParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n});\n\naddParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n});\n\n// LOCALES\n\nvar MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\nvar defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\nfunction localeMonths (m, format) {\n if (!m) {\n return this._months;\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n}\n\nvar defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\nfunction localeMonthsShort (m, format) {\n if (!m) {\n return this._monthsShort;\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n}\n\nfunction handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n}\n\nfunction localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n}\n\n// MOMENTS\n\nfunction setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n}\n\nfunction getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n}\n\nfunction getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n}\n\nvar defaultMonthsShortRegex = matchWord;\nfunction monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n}\n\nvar defaultMonthsRegex = matchWord;\nfunction monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n}\n\nfunction computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n}\n\n// FORMATTING\n\naddFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n});\n\naddFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n});\n\naddFormatToken(0, ['YYYY', 4], 0, 'year');\naddFormatToken(0, ['YYYYY', 5], 0, 'year');\naddFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n// ALIASES\n\naddUnitAlias('year', 'y');\n\n// PRIORITIES\n\naddUnitPriority('year', 1);\n\n// PARSING\n\naddRegexToken('Y', matchSigned);\naddRegexToken('YY', match1to2, match2);\naddRegexToken('YYYY', match1to4, match4);\naddRegexToken('YYYYY', match1to6, match6);\naddRegexToken('YYYYYY', match1to6, match6);\n\naddParseToken(['YYYYY', 'YYYYYY'], YEAR);\naddParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n});\naddParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n});\naddParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n});\n\n// HELPERS\n\nfunction daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\nfunction isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\n\n// HOOKS\n\nhooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n};\n\n// MOMENTS\n\nvar getSetYear = makeGetSet('FullYear', true);\n\nfunction getIsLeapYear () {\n return isLeapYear(this.year());\n}\n\nfunction createDate (y, m, d, h, M, s, ms) {\n //can't just apply() to create a date:\n //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply\n var date = new Date(y, m, d, h, M, s, ms);\n\n //the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n return date;\n}\n\nfunction createUTCDate (y) {\n var date = new Date(Date.UTC.apply(null, arguments));\n\n //the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n return date;\n}\n\n// start-of-first-week - start-of-year\nfunction firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n}\n\n//http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\nfunction dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n}\n\nfunction weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n}\n\nfunction weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n}\n\n// FORMATTING\n\naddFormatToken('w', ['ww', 2], 'wo', 'week');\naddFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n// ALIASES\n\naddUnitAlias('week', 'w');\naddUnitAlias('isoWeek', 'W');\n\n// PRIORITIES\n\naddUnitPriority('week', 5);\naddUnitPriority('isoWeek', 5);\n\n// PARSING\n\naddRegexToken('w', match1to2);\naddRegexToken('ww', match1to2, match2);\naddRegexToken('W', match1to2);\naddRegexToken('WW', match1to2, match2);\n\naddWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n});\n\n// HELPERS\n\n// LOCALES\n\nfunction localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n}\n\nvar defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n};\n\nfunction localeFirstDayOfWeek () {\n return this._week.dow;\n}\n\nfunction localeFirstDayOfYear () {\n return this._week.doy;\n}\n\n// MOMENTS\n\nfunction getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\nfunction getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\n// FORMATTING\n\naddFormatToken('d', 0, 'do', 'day');\n\naddFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n});\n\naddFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n});\n\naddFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n});\n\naddFormatToken('e', 0, 0, 'weekday');\naddFormatToken('E', 0, 0, 'isoWeekday');\n\n// ALIASES\n\naddUnitAlias('day', 'd');\naddUnitAlias('weekday', 'e');\naddUnitAlias('isoWeekday', 'E');\n\n// PRIORITY\naddUnitPriority('day', 11);\naddUnitPriority('weekday', 11);\naddUnitPriority('isoWeekday', 11);\n\n// PARSING\n\naddRegexToken('d', match1to2);\naddRegexToken('e', match1to2);\naddRegexToken('E', match1to2);\naddRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n});\naddRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n});\naddRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n});\n\naddWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n});\n\naddWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n});\n\n// HELPERS\n\nfunction parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n}\n\nfunction parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n}\n\n// LOCALES\n\nvar defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\nfunction localeWeekdays (m, format) {\n if (!m) {\n return this._weekdays;\n }\n return isArray(this._weekdays) ? this._weekdays[m.day()] :\n this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];\n}\n\nvar defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\nfunction localeWeekdaysShort (m) {\n return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n}\n\nvar defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\nfunction localeWeekdaysMin (m) {\n return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n}\n\nfunction handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf$1.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n}\n\nfunction localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n}\n\n// MOMENTS\n\nfunction getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n}\n\nfunction getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n}\n\nfunction getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n}\n\nvar defaultWeekdaysRegex = matchWord;\nfunction weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n}\n\nvar defaultWeekdaysShortRegex = matchWord;\nfunction weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n}\n\nvar defaultWeekdaysMinRegex = matchWord;\nfunction weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n}\n\n\nfunction computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n}\n\n// FORMATTING\n\nfunction hFormat() {\n return this.hours() % 12 || 12;\n}\n\nfunction kFormat() {\n return this.hours() || 24;\n}\n\naddFormatToken('H', ['HH', 2], 0, 'hour');\naddFormatToken('h', ['hh', 2], 0, hFormat);\naddFormatToken('k', ['kk', 2], 0, kFormat);\n\naddFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n});\n\naddFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n});\n\nfunction meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n}\n\nmeridiem('a', true);\nmeridiem('A', false);\n\n// ALIASES\n\naddUnitAlias('hour', 'h');\n\n// PRIORITY\naddUnitPriority('hour', 13);\n\n// PARSING\n\nfunction matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n}\n\naddRegexToken('a', matchMeridiem);\naddRegexToken('A', matchMeridiem);\naddRegexToken('H', match1to2);\naddRegexToken('h', match1to2);\naddRegexToken('HH', match1to2, match2);\naddRegexToken('hh', match1to2, match2);\n\naddRegexToken('hmm', match3to4);\naddRegexToken('hmmss', match5to6);\naddRegexToken('Hmm', match3to4);\naddRegexToken('Hmmss', match5to6);\n\naddParseToken(['H', 'HH'], HOUR);\naddParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n});\naddParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n});\naddParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n});\n\n// LOCALES\n\nfunction localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n}\n\nvar defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\nfunction localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n}\n\n\n// MOMENTS\n\n// Setting the hour should keep the time, because the user explicitly\n// specified which hour he wants. So trying to maintain the same hour (in\n// a new timezone) makes sense. Adding/subtracting hours does not follow\n// this rule.\nvar getSetHour = makeGetSet('Hours', true);\n\n// months\n// week\n// weekdays\n// meridiem\nvar baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n ordinalParse: defaultOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n};\n\n// internal storage for locale config files\nvar locales = {};\nvar localeFamilies = {};\nvar globalLocale;\n\nfunction normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n}\n\n// pick the locale from the array\n// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\nfunction chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return null;\n}\n\nfunction loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n require('./locale/' + name);\n // because defineLocale currently also sets the global locale, we\n // want to undo that for lazy loaded locales\n getSetGlobalLocale(oldLocale);\n } catch (e) { }\n }\n return locales[name];\n}\n\n// This function will load locale and then set the global locale. If\n// no arguments are passed in, it will simply return the current global\n// locale key.\nfunction getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n }\n\n return globalLocale._abbr;\n}\n\nfunction defineLocale (name, config) {\n if (config !== null) {\n var parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n}\n\nfunction updateLocale(name, config) {\n if (config != null) {\n var locale, parentConfig = baseConfig;\n // MERGE\n if (locales[name] != null) {\n parentConfig = locales[name]._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n}\n\n// returns locale data\nfunction getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n}\n\nfunction listLocales() {\n return keys$1(locales);\n}\n\nfunction checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n}\n\n// iso 8601 regex\n// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\nvar extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\nvar basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\nvar tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\nvar isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n];\n\n// iso time formats and regexes\nvar isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n];\n\nvar aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n// date from iso format\nfunction configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n}\n\n// date from iso format or fallback\nfunction configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n hooks.createFromInputFallback(config);\n }\n}\n\nhooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n);\n\n// Pick the first defined of two or three arguments.\nfunction defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n}\n\nfunction currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n}\n\n// convert an array to a date.\n// the array should mirror the parameters below\n// note: all values past the year are optional and will default to the lowest possible value.\n// [year, month, day , hour, minute, second, millisecond]\nfunction configFromArray (config) {\n var i, date, input = [], currentDate, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse)) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n}\n\nfunction dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from begining of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to begining of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n}\n\n// constant that refers to the ISO standard\nhooks.ISO_8601 = function () {};\n\n// date from string and format string\nfunction configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n}\n\n\nfunction meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n}\n\n// date from string and array of format strings\nfunction configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n}\n\nfunction configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n}\n\nfunction createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n}\n\nfunction prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n}\n\nfunction configFromInput(config) {\n var input = config._i;\n if (input === undefined) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (typeof(input) === 'object') {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n}\n\nfunction createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n}\n\nfunction createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n}\n\nvar prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n);\n\nvar prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n);\n\n// Pick a moment m from moments so that m[fn](other) is true for all\n// other. This relies on the function fn to be transitive.\n//\n// moments should either be an array of moment objects or an array, whose\n// first element is an array of moment objects.\nfunction pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n}\n\n// TODO: Use [].sort instead?\nfunction min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n}\n\nfunction max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n}\n\nvar now = function () {\n return Date.now ? Date.now() : +(new Date());\n};\n\nfunction Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n}\n\nfunction isDuration (obj) {\n return obj instanceof Duration;\n}\n\nfunction absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n}\n\n// FORMATTING\n\nfunction offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n}\n\noffset('Z', ':');\noffset('ZZ', '');\n\n// PARSING\n\naddRegexToken('Z', matchShortOffset);\naddRegexToken('ZZ', matchShortOffset);\naddParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n});\n\n// HELPERS\n\n// timezone chunker\n// '+10:00' > ['10', '00']\n// '-1530' > ['-15', '30']\nvar chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\nfunction offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n}\n\n// Return a moment from input, that is local/utc/zone equivalent to model.\nfunction cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n}\n\nfunction getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n}\n\n// HOOKS\n\n// This function will be called whenever a moment is mutated.\n// It is intended to keep the offset in sync with the timezone.\nhooks.updateOffset = function () {};\n\n// MOMENTS\n\n// keepLocalTime = true means only change the timezone, without\n// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n// +0200, so we adjust the time as needed, to be valid.\n//\n// Keeping the time actually adds/subtracts (one hour)\n// from the actual represented time. That is why we call updateOffset\n// a second time. In case it wants us to change the offset again\n// _changeInProgress == true case, then we have to adjust, because\n// there is no such time in the given timezone.\nfunction getSetOffset (input, keepLocalTime) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n}\n\nfunction getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n}\n\nfunction setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n}\n\nfunction setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n}\n\nfunction setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n}\n\nfunction hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n}\n\nfunction isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n}\n\nfunction isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n}\n\nfunction isLocal () {\n return this.isValid() ? !this._isUTC : false;\n}\n\nfunction isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n}\n\nfunction isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n}\n\n// ASP.NET json date format regex\nvar aspNetRegex = /^(\\-)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n// and further modified to allow for strings containing both week and day\nvar isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;\n\nfunction createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n}\n\ncreateDuration.fn = Duration.prototype;\n\nfunction parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n}\n\nfunction positiveMomentsDifference(base, other) {\n var res = {milliseconds: 0, months: 0};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n}\n\nfunction momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n}\n\n// TODO: remove 'name' arg after deprecation is removed\nfunction createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n}\n\nfunction addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n}\n\nvar add = createAdder(1, 'add');\nvar subtract = createAdder(-1, 'subtract');\n\nfunction getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n}\n\nfunction calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n}\n\nfunction clone () {\n return new Moment(this);\n}\n\nfunction isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n}\n\nfunction isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n}\n\nfunction isBetween (from, to, units, inclusivity) {\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));\n}\n\nfunction isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units || 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n}\n\nfunction isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input,units);\n}\n\nfunction isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input,units);\n}\n\nfunction diff (input, units, asFloat) {\n var that,\n zoneDelta,\n delta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n if (units === 'year' || units === 'month' || units === 'quarter') {\n output = monthDiff(this, that);\n if (units === 'quarter') {\n output = output / 3;\n } else if (units === 'year') {\n output = output / 12;\n }\n } else {\n delta = this - that;\n output = units === 'second' ? delta / 1e3 : // 1000\n units === 'minute' ? delta / 6e4 : // 1000 * 60\n units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60\n units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst\n units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst\n delta;\n }\n return asFloat ? output : absFloor(output);\n}\n\nfunction monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n}\n\nhooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\nhooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\nfunction toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n}\n\nfunction toISOString () {\n var m = this.clone().utc();\n if (0 < m.year() && m.year() <= 9999) {\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n return this.toDate().toISOString();\n } else {\n return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n } else {\n return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n}\n\n/**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\nfunction inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 < this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n}\n\nfunction format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n}\n\nfunction from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n}\n\nfunction fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n}\n\nfunction to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n}\n\nfunction toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n}\n\n// If passed a locale key, it will set the locale for this\n// instance. Otherwise, it will return the locale configuration\n// variables for this instance.\nfunction locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n}\n\nvar lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n);\n\nfunction localeData () {\n return this._locale;\n}\n\nfunction startOf (units) {\n units = normalizeUnits(units);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (units) {\n case 'year':\n this.month(0);\n /* falls through */\n case 'quarter':\n case 'month':\n this.date(1);\n /* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n case 'date':\n this.hours(0);\n /* falls through */\n case 'hour':\n this.minutes(0);\n /* falls through */\n case 'minute':\n this.seconds(0);\n /* falls through */\n case 'second':\n this.milliseconds(0);\n }\n\n // weeks are a special case\n if (units === 'week') {\n this.weekday(0);\n }\n if (units === 'isoWeek') {\n this.isoWeekday(1);\n }\n\n // quarters are also special\n if (units === 'quarter') {\n this.month(Math.floor(this.month() / 3) * 3);\n }\n\n return this;\n}\n\nfunction endOf (units) {\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond') {\n return this;\n }\n\n // 'date' is an alias for 'day', so it should be considered as such.\n if (units === 'date') {\n units = 'day';\n }\n\n return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n}\n\nfunction valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n}\n\nfunction unix () {\n return Math.floor(this.valueOf() / 1000);\n}\n\nfunction toDate () {\n return new Date(this.valueOf());\n}\n\nfunction toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n}\n\nfunction toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n}\n\nfunction toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n}\n\nfunction isValid$1 () {\n return isValid(this);\n}\n\nfunction parsingFlags () {\n return extend({}, getParsingFlags(this));\n}\n\nfunction invalidAt () {\n return getParsingFlags(this).overflow;\n}\n\nfunction creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n}\n\n// FORMATTING\n\naddFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n});\n\naddFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n});\n\nfunction addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n}\n\naddWeekYearFormatToken('gggg', 'weekYear');\naddWeekYearFormatToken('ggggg', 'weekYear');\naddWeekYearFormatToken('GGGG', 'isoWeekYear');\naddWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n// ALIASES\n\naddUnitAlias('weekYear', 'gg');\naddUnitAlias('isoWeekYear', 'GG');\n\n// PRIORITY\n\naddUnitPriority('weekYear', 1);\naddUnitPriority('isoWeekYear', 1);\n\n\n// PARSING\n\naddRegexToken('G', matchSigned);\naddRegexToken('g', matchSigned);\naddRegexToken('GG', match1to2, match2);\naddRegexToken('gg', match1to2, match2);\naddRegexToken('GGGG', match1to4, match4);\naddRegexToken('gggg', match1to4, match4);\naddRegexToken('GGGGG', match1to6, match6);\naddRegexToken('ggggg', match1to6, match6);\n\naddWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n});\n\naddWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n});\n\n// MOMENTS\n\nfunction getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n}\n\nfunction getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n}\n\nfunction getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n}\n\nfunction getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n}\n\nfunction getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n}\n\nfunction setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n}\n\n// FORMATTING\n\naddFormatToken('Q', 0, 'Qo', 'quarter');\n\n// ALIASES\n\naddUnitAlias('quarter', 'Q');\n\n// PRIORITY\n\naddUnitPriority('quarter', 7);\n\n// PARSING\n\naddRegexToken('Q', match1);\naddParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n});\n\n// MOMENTS\n\nfunction getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n}\n\n// FORMATTING\n\naddFormatToken('D', ['DD', 2], 'Do', 'date');\n\n// ALIASES\n\naddUnitAlias('date', 'D');\n\n// PRIOROITY\naddUnitPriority('date', 9);\n\n// PARSING\n\naddRegexToken('D', match1to2);\naddRegexToken('DD', match1to2, match2);\naddRegexToken('Do', function (isStrict, locale) {\n return isStrict ? locale._ordinalParse : locale._ordinalParseLenient;\n});\n\naddParseToken(['D', 'DD'], DATE);\naddParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0], 10);\n});\n\n// MOMENTS\n\nvar getSetDayOfMonth = makeGetSet('Date', true);\n\n// FORMATTING\n\naddFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n// ALIASES\n\naddUnitAlias('dayOfYear', 'DDD');\n\n// PRIORITY\naddUnitPriority('dayOfYear', 4);\n\n// PARSING\n\naddRegexToken('DDD', match1to3);\naddRegexToken('DDDD', match3);\naddParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n});\n\n// HELPERS\n\n// MOMENTS\n\nfunction getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n}\n\n// FORMATTING\n\naddFormatToken('m', ['mm', 2], 0, 'minute');\n\n// ALIASES\n\naddUnitAlias('minute', 'm');\n\n// PRIORITY\n\naddUnitPriority('minute', 14);\n\n// PARSING\n\naddRegexToken('m', match1to2);\naddRegexToken('mm', match1to2, match2);\naddParseToken(['m', 'mm'], MINUTE);\n\n// MOMENTS\n\nvar getSetMinute = makeGetSet('Minutes', false);\n\n// FORMATTING\n\naddFormatToken('s', ['ss', 2], 0, 'second');\n\n// ALIASES\n\naddUnitAlias('second', 's');\n\n// PRIORITY\n\naddUnitPriority('second', 15);\n\n// PARSING\n\naddRegexToken('s', match1to2);\naddRegexToken('ss', match1to2, match2);\naddParseToken(['s', 'ss'], SECOND);\n\n// MOMENTS\n\nvar getSetSecond = makeGetSet('Seconds', false);\n\n// FORMATTING\n\naddFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n});\n\naddFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n});\n\naddFormatToken(0, ['SSS', 3], 0, 'millisecond');\naddFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n});\naddFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n});\naddFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n});\naddFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n});\naddFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n});\naddFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n});\n\n\n// ALIASES\n\naddUnitAlias('millisecond', 'ms');\n\n// PRIORITY\n\naddUnitPriority('millisecond', 16);\n\n// PARSING\n\naddRegexToken('S', match1to3, match1);\naddRegexToken('SS', match1to3, match2);\naddRegexToken('SSS', match1to3, match3);\n\nvar token;\nfor (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n}\n\nfunction parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n}\n\nfor (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n}\n// MOMENTS\n\nvar getSetMillisecond = makeGetSet('Milliseconds', false);\n\n// FORMATTING\n\naddFormatToken('z', 0, 0, 'zoneAbbr');\naddFormatToken('zz', 0, 0, 'zoneName');\n\n// MOMENTS\n\nfunction getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n}\n\nfunction getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n}\n\nvar proto = Moment.prototype;\n\nproto.add = add;\nproto.calendar = calendar$1;\nproto.clone = clone;\nproto.diff = diff;\nproto.endOf = endOf;\nproto.format = format;\nproto.from = from;\nproto.fromNow = fromNow;\nproto.to = to;\nproto.toNow = toNow;\nproto.get = stringGet;\nproto.invalidAt = invalidAt;\nproto.isAfter = isAfter;\nproto.isBefore = isBefore;\nproto.isBetween = isBetween;\nproto.isSame = isSame;\nproto.isSameOrAfter = isSameOrAfter;\nproto.isSameOrBefore = isSameOrBefore;\nproto.isValid = isValid$1;\nproto.lang = lang;\nproto.locale = locale;\nproto.localeData = localeData;\nproto.max = prototypeMax;\nproto.min = prototypeMin;\nproto.parsingFlags = parsingFlags;\nproto.set = stringSet;\nproto.startOf = startOf;\nproto.subtract = subtract;\nproto.toArray = toArray;\nproto.toObject = toObject;\nproto.toDate = toDate;\nproto.toISOString = toISOString;\nproto.inspect = inspect;\nproto.toJSON = toJSON;\nproto.toString = toString;\nproto.unix = unix;\nproto.valueOf = valueOf;\nproto.creationData = creationData;\n\n// Year\nproto.year = getSetYear;\nproto.isLeapYear = getIsLeapYear;\n\n// Week Year\nproto.weekYear = getSetWeekYear;\nproto.isoWeekYear = getSetISOWeekYear;\n\n// Quarter\nproto.quarter = proto.quarters = getSetQuarter;\n\n// Month\nproto.month = getSetMonth;\nproto.daysInMonth = getDaysInMonth;\n\n// Week\nproto.week = proto.weeks = getSetWeek;\nproto.isoWeek = proto.isoWeeks = getSetISOWeek;\nproto.weeksInYear = getWeeksInYear;\nproto.isoWeeksInYear = getISOWeeksInYear;\n\n// Day\nproto.date = getSetDayOfMonth;\nproto.day = proto.days = getSetDayOfWeek;\nproto.weekday = getSetLocaleDayOfWeek;\nproto.isoWeekday = getSetISODayOfWeek;\nproto.dayOfYear = getSetDayOfYear;\n\n// Hour\nproto.hour = proto.hours = getSetHour;\n\n// Minute\nproto.minute = proto.minutes = getSetMinute;\n\n// Second\nproto.second = proto.seconds = getSetSecond;\n\n// Millisecond\nproto.millisecond = proto.milliseconds = getSetMillisecond;\n\n// Offset\nproto.utcOffset = getSetOffset;\nproto.utc = setOffsetToUTC;\nproto.local = setOffsetToLocal;\nproto.parseZone = setOffsetToParsedOffset;\nproto.hasAlignedHourOffset = hasAlignedHourOffset;\nproto.isDST = isDaylightSavingTime;\nproto.isLocal = isLocal;\nproto.isUtcOffset = isUtcOffset;\nproto.isUtc = isUtc;\nproto.isUTC = isUtc;\n\n// Timezone\nproto.zoneAbbr = getZoneAbbr;\nproto.zoneName = getZoneName;\n\n// Deprecations\nproto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\nproto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\nproto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\nproto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\nproto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\nfunction createUnix (input) {\n return createLocal(input * 1000);\n}\n\nfunction createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n}\n\nfunction preParsePostFormat (string) {\n return string;\n}\n\nvar proto$1 = Locale.prototype;\n\nproto$1.calendar = calendar;\nproto$1.longDateFormat = longDateFormat;\nproto$1.invalidDate = invalidDate;\nproto$1.ordinal = ordinal;\nproto$1.preparse = preParsePostFormat;\nproto$1.postformat = preParsePostFormat;\nproto$1.relativeTime = relativeTime;\nproto$1.pastFuture = pastFuture;\nproto$1.set = set;\n\n// Month\nproto$1.months = localeMonths;\nproto$1.monthsShort = localeMonthsShort;\nproto$1.monthsParse = localeMonthsParse;\nproto$1.monthsRegex = monthsRegex;\nproto$1.monthsShortRegex = monthsShortRegex;\n\n// Week\nproto$1.week = localeWeek;\nproto$1.firstDayOfYear = localeFirstDayOfYear;\nproto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n// Day of Week\nproto$1.weekdays = localeWeekdays;\nproto$1.weekdaysMin = localeWeekdaysMin;\nproto$1.weekdaysShort = localeWeekdaysShort;\nproto$1.weekdaysParse = localeWeekdaysParse;\n\nproto$1.weekdaysRegex = weekdaysRegex;\nproto$1.weekdaysShortRegex = weekdaysShortRegex;\nproto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n// Hours\nproto$1.isPM = localeIsPM;\nproto$1.meridiem = localeMeridiem;\n\nfunction get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n}\n\nfunction listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n}\n\n// ()\n// (5)\n// (fmt, 5)\n// (fmt)\n// (true)\n// (true, 5)\n// (true, fmt, 5)\n// (true, fmt)\nfunction listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n}\n\nfunction listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n}\n\nfunction listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n}\n\nfunction listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n}\n\nfunction listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n}\n\nfunction listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n}\n\ngetSetGlobalLocale('en', {\n ordinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n});\n\n// Side effect imports\nhooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\nhooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\nvar mathAbs = Math.abs;\n\nfunction abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n}\n\nfunction addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n}\n\n// supports only 2.0-style add(1, 's') or add(duration)\nfunction add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n}\n\n// supports only 2.0-style subtract(1, 's') or subtract(duration)\nfunction subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n}\n\nfunction absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n}\n\nfunction bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n}\n\nfunction daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n}\n\nfunction monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n}\n\nfunction as (units) {\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n return units === 'month' ? months : months / 12;\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n}\n\n// TODO: Use this.as('ms')?\nfunction valueOf$1 () {\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n}\n\nfunction makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n}\n\nvar asMilliseconds = makeAs('ms');\nvar asSeconds = makeAs('s');\nvar asMinutes = makeAs('m');\nvar asHours = makeAs('h');\nvar asDays = makeAs('d');\nvar asWeeks = makeAs('w');\nvar asMonths = makeAs('M');\nvar asYears = makeAs('y');\n\nfunction get$2 (units) {\n units = normalizeUnits(units);\n return this[units + 's']();\n}\n\nfunction makeGetter(name) {\n return function () {\n return this._data[name];\n };\n}\n\nvar milliseconds = makeGetter('milliseconds');\nvar seconds = makeGetter('seconds');\nvar minutes = makeGetter('minutes');\nvar hours = makeGetter('hours');\nvar days = makeGetter('days');\nvar months = makeGetter('months');\nvar years = makeGetter('years');\n\nfunction weeks () {\n return absFloor(this.days() / 7);\n}\n\nvar round = Math.round;\nvar thresholds = {\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month\n M: 11 // months to year\n};\n\n// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\nfunction substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n}\n\nfunction relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds < thresholds.s && ['s', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n}\n\n// This function allows you to set the rounding function for relative time strings\nfunction getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n}\n\n// This function allows you to set a threshold for relative time strings\nfunction getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n return true;\n}\n\nfunction humanize (withSuffix) {\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n}\n\nvar abs$1 = Math.abs;\n\nfunction toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds;\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n return (total < 0 ? '-' : '') +\n 'P' +\n (Y ? Y + 'Y' : '') +\n (M ? M + 'M' : '') +\n (D ? D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? h + 'H' : '') +\n (m ? m + 'M' : '') +\n (s ? s + 'S' : '');\n}\n\nvar proto$2 = Duration.prototype;\n\nproto$2.abs = abs;\nproto$2.add = add$1;\nproto$2.subtract = subtract$1;\nproto$2.as = as;\nproto$2.asMilliseconds = asMilliseconds;\nproto$2.asSeconds = asSeconds;\nproto$2.asMinutes = asMinutes;\nproto$2.asHours = asHours;\nproto$2.asDays = asDays;\nproto$2.asWeeks = asWeeks;\nproto$2.asMonths = asMonths;\nproto$2.asYears = asYears;\nproto$2.valueOf = valueOf$1;\nproto$2._bubble = bubble;\nproto$2.get = get$2;\nproto$2.milliseconds = milliseconds;\nproto$2.seconds = seconds;\nproto$2.minutes = minutes;\nproto$2.hours = hours;\nproto$2.days = days;\nproto$2.weeks = weeks;\nproto$2.months = months;\nproto$2.years = years;\nproto$2.humanize = humanize;\nproto$2.toISOString = toISOString$1;\nproto$2.toString = toISOString$1;\nproto$2.toJSON = toISOString$1;\nproto$2.locale = locale;\nproto$2.localeData = localeData;\n\n// Deprecations\nproto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\nproto$2.lang = lang;\n\n// Side effect imports\n\n// FORMATTING\n\naddFormatToken('X', 0, 0, 'unix');\naddFormatToken('x', 0, 0, 'valueOf');\n\n// PARSING\n\naddRegexToken('x', matchSigned);\naddRegexToken('X', matchTimestamp);\naddParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n});\naddParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n});\n\n// Side effect imports\n\n\nhooks.version = '2.17.1';\n\nsetHookCallback(createLocal);\n\nhooks.fn = proto;\nhooks.min = min;\nhooks.max = max;\nhooks.now = now;\nhooks.utc = createUTC;\nhooks.unix = createUnix;\nhooks.months = listMonths;\nhooks.isDate = isDate;\nhooks.locale = getSetGlobalLocale;\nhooks.invalid = createInvalid;\nhooks.duration = createDuration;\nhooks.isMoment = isMoment;\nhooks.weekdays = listWeekdays;\nhooks.parseZone = createInZone;\nhooks.localeData = getLocale;\nhooks.isDuration = isDuration;\nhooks.monthsShort = listMonthsShort;\nhooks.weekdaysMin = listWeekdaysMin;\nhooks.defineLocale = defineLocale;\nhooks.updateLocale = updateLocale;\nhooks.locales = listLocales;\nhooks.weekdaysShort = listWeekdaysShort;\nhooks.normalizeUnits = normalizeUnits;\nhooks.relativeTimeRounding = getSetRelativeTimeRounding;\nhooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\nhooks.calendarFormat = getCalendarFormat;\nhooks.prototype = proto;\n\nreturn hooks;\n\n})));\n","/*!\n * FullCalendar v3.2.0\n * Docs & License: https://fullcalendar.io/\n * (c) 2017 Adam Shaw\n */\n\n(function(factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine([ 'jquery', 'moment' ], factory);\n\t}\n\telse if (typeof exports === 'object') { // Node/CommonJS\n\t\tmodule.exports = factory(require('jquery'), require('moment'));\n\t}\n\telse {\n\t\tfactory(jQuery, moment);\n\t}\n})(function($, moment) {\n\n;;\n\nvar FC = $.fullCalendar = {\n\tversion: \"3.2.0\",\n\t// When introducing internal API incompatibilities (where fullcalendar plugins would break),\n\t// the minor version of the calendar should be upped (ex: 2.7.2 -> 2.8.0)\n\t// and the below integer should be incremented.\n\tinternalApiVersion: 8\n};\nvar fcViews = FC.views = {};\n\n\n$.fn.fullCalendar = function(options) {\n\tvar args = Array.prototype.slice.call(arguments, 1); // for a possible method call\n\tvar res = this; // what this function will return (this jQuery object by default)\n\n\tthis.each(function(i, _element) { // loop each DOM element involved\n\t\tvar element = $(_element);\n\t\tvar calendar = element.data('fullCalendar'); // get the existing calendar object (if any)\n\t\tvar singleRes; // the returned value of this single method call\n\n\t\t// a method call\n\t\tif (typeof options === 'string') {\n\t\t\tif (calendar && $.isFunction(calendar[options])) {\n\t\t\t\tsingleRes = calendar[options].apply(calendar, args);\n\t\t\t\tif (!i) {\n\t\t\t\t\tres = singleRes; // record the first method call result\n\t\t\t\t}\n\t\t\t\tif (options === 'destroy') { // for the destroy method, must remove Calendar object data\n\t\t\t\t\telement.removeData('fullCalendar');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// a new calendar initialization\n\t\telse if (!calendar) { // don't initialize twice\n\t\t\tcalendar = new Calendar(element, options);\n\t\t\telement.data('fullCalendar', calendar);\n\t\t\tcalendar.render();\n\t\t}\n\t});\n\n\treturn res;\n};\n\n\nvar complexOptions = [ // names of options that are objects whose properties should be combined\n\t'header',\n\t'footer',\n\t'buttonText',\n\t'buttonIcons',\n\t'themeButtonIcons'\n];\n\n\n// Merges an array of option objects into a single object\nfunction mergeOptions(optionObjs) {\n\treturn mergeProps(optionObjs, complexOptions);\n}\n\n;;\n\n// exports\nFC.intersectRanges = intersectRanges;\nFC.applyAll = applyAll;\nFC.debounce = debounce;\nFC.isInt = isInt;\nFC.htmlEscape = htmlEscape;\nFC.cssToStr = cssToStr;\nFC.proxy = proxy;\nFC.capitaliseFirstLetter = capitaliseFirstLetter;\n\n\n/* FullCalendar-specific DOM Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\n\n// Given the scrollbar widths of some other container, create borders/margins on rowEls in order to match the left\n// and right space that was offset by the scrollbars. A 1-pixel border first, then margin beyond that.\nfunction compensateScroll(rowEls, scrollbarWidths) {\n\tif (scrollbarWidths.left) {\n\t\trowEls.css({\n\t\t\t'border-left-width': 1,\n\t\t\t'margin-left': scrollbarWidths.left - 1\n\t\t});\n\t}\n\tif (scrollbarWidths.right) {\n\t\trowEls.css({\n\t\t\t'border-right-width': 1,\n\t\t\t'margin-right': scrollbarWidths.right - 1\n\t\t});\n\t}\n}\n\n\n// Undoes compensateScroll and restores all borders/margins\nfunction uncompensateScroll(rowEls) {\n\trowEls.css({\n\t\t'margin-left': '',\n\t\t'margin-right': '',\n\t\t'border-left-width': '',\n\t\t'border-right-width': ''\n\t});\n}\n\n\n// Make the mouse cursor express that an event is not allowed in the current area\nfunction disableCursor() {\n\t$('body').addClass('fc-not-allowed');\n}\n\n\n// Returns the mouse cursor to its original look\nfunction enableCursor() {\n\t$('body').removeClass('fc-not-allowed');\n}\n\n\n// Given a total available height to fill, have `els` (essentially child rows) expand to accomodate.\n// By default, all elements that are shorter than the recommended height are expanded uniformly, not considering\n// any other els that are already too tall. if `shouldRedistribute` is on, it considers these tall rows and \n// reduces the available height.\nfunction distributeHeight(els, availableHeight, shouldRedistribute) {\n\n\t// *FLOORING NOTE*: we floor in certain places because zoom can give inaccurate floating-point dimensions,\n\t// and it is better to be shorter than taller, to avoid creating unnecessary scrollbars.\n\n\tvar minOffset1 = Math.floor(availableHeight / els.length); // for non-last element\n\tvar minOffset2 = Math.floor(availableHeight - minOffset1 * (els.length - 1)); // for last element *FLOORING NOTE*\n\tvar flexEls = []; // elements that are allowed to expand. array of DOM nodes\n\tvar flexOffsets = []; // amount of vertical space it takes up\n\tvar flexHeights = []; // actual css height\n\tvar usedHeight = 0;\n\n\tundistributeHeight(els); // give all elements their natural height\n\n\t// find elements that are below the recommended height (expandable).\n\t// important to query for heights in a single first pass (to avoid reflow oscillation).\n\tels.each(function(i, el) {\n\t\tvar minOffset = i === els.length - 1 ? minOffset2 : minOffset1;\n\t\tvar naturalOffset = $(el).outerHeight(true);\n\n\t\tif (naturalOffset < minOffset) {\n\t\t\tflexEls.push(el);\n\t\t\tflexOffsets.push(naturalOffset);\n\t\t\tflexHeights.push($(el).height());\n\t\t}\n\t\telse {\n\t\t\t// this element stretches past recommended height (non-expandable). mark the space as occupied.\n\t\t\tusedHeight += naturalOffset;\n\t\t}\n\t});\n\n\t// readjust the recommended height to only consider the height available to non-maxed-out rows.\n\tif (shouldRedistribute) {\n\t\tavailableHeight -= usedHeight;\n\t\tminOffset1 = Math.floor(availableHeight / flexEls.length);\n\t\tminOffset2 = Math.floor(availableHeight - minOffset1 * (flexEls.length - 1)); // *FLOORING NOTE*\n\t}\n\n\t// assign heights to all expandable elements\n\t$(flexEls).each(function(i, el) {\n\t\tvar minOffset = i === flexEls.length - 1 ? minOffset2 : minOffset1;\n\t\tvar naturalOffset = flexOffsets[i];\n\t\tvar naturalHeight = flexHeights[i];\n\t\tvar newHeight = minOffset - (naturalOffset - naturalHeight); // subtract the margin/padding\n\n\t\tif (naturalOffset < minOffset) { // we check this again because redistribution might have changed things\n\t\t\t$(el).height(newHeight);\n\t\t}\n\t});\n}\n\n\n// Undoes distrubuteHeight, restoring all els to their natural height\nfunction undistributeHeight(els) {\n\tels.height('');\n}\n\n\n// Given `els`, a jQuery set of
    cells, find the cell with the largest natural width and set the widths of all the\n// cells to be that width.\n// PREREQUISITE: if you want a cell to take up width, it needs to have a single inner element w/ display:inline\nfunction matchCellWidths(els) {\n\tvar maxInnerWidth = 0;\n\n\tels.find('> *').each(function(i, innerEl) {\n\t\tvar innerWidth = $(innerEl).outerWidth();\n\t\tif (innerWidth > maxInnerWidth) {\n\t\t\tmaxInnerWidth = innerWidth;\n\t\t}\n\t});\n\n\tmaxInnerWidth++; // sometimes not accurate of width the text needs to stay on one line. insurance\n\n\tels.width(maxInnerWidth);\n\n\treturn maxInnerWidth;\n}\n\n\n// Given one element that resides inside another,\n// Subtracts the height of the inner element from the outer element.\nfunction subtractInnerElHeight(outerEl, innerEl) {\n\tvar both = outerEl.add(innerEl);\n\tvar diff;\n\n\t// effin' IE8/9/10/11 sometimes returns 0 for dimensions. this weird hack was the only thing that worked\n\tboth.css({\n\t\tposition: 'relative', // cause a reflow, which will force fresh dimension recalculation\n\t\tleft: -1 // ensure reflow in case the el was already relative. negative is less likely to cause new scroll\n\t});\n\tdiff = outerEl.outerHeight() - innerEl.outerHeight(); // grab the dimensions\n\tboth.css({ position: '', left: '' }); // undo hack\n\n\treturn diff;\n}\n\n\n/* Element Geom Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\nFC.getOuterRect = getOuterRect;\nFC.getClientRect = getClientRect;\nFC.getContentRect = getContentRect;\nFC.getScrollbarWidths = getScrollbarWidths;\n\n\n// borrowed from https://github.com/jquery/jquery-ui/blob/1.11.0/ui/core.js#L51\nfunction getScrollParent(el) {\n\tvar position = el.css('position'),\n\t\tscrollParent = el.parents().filter(function() {\n\t\t\tvar parent = $(this);\n\t\t\treturn (/(auto|scroll)/).test(\n\t\t\t\tparent.css('overflow') + parent.css('overflow-y') + parent.css('overflow-x')\n\t\t\t);\n\t\t}).eq(0);\n\n\treturn position === 'fixed' || !scrollParent.length ? $(el[0].ownerDocument || document) : scrollParent;\n}\n\n\n// Queries the outer bounding area of a jQuery element.\n// Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive).\n// Origin is optional.\nfunction getOuterRect(el, origin) {\n\tvar offset = el.offset();\n\tvar left = offset.left - (origin ? origin.left : 0);\n\tvar top = offset.top - (origin ? origin.top : 0);\n\n\treturn {\n\t\tleft: left,\n\t\tright: left + el.outerWidth(),\n\t\ttop: top,\n\t\tbottom: top + el.outerHeight()\n\t};\n}\n\n\n// Queries the area within the margin/border/scrollbars of a jQuery element. Does not go within the padding.\n// Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive).\n// Origin is optional.\n// NOTE: should use clientLeft/clientTop, but very unreliable cross-browser.\nfunction getClientRect(el, origin) {\n\tvar offset = el.offset();\n\tvar scrollbarWidths = getScrollbarWidths(el);\n\tvar left = offset.left + getCssFloat(el, 'border-left-width') + scrollbarWidths.left - (origin ? origin.left : 0);\n\tvar top = offset.top + getCssFloat(el, 'border-top-width') + scrollbarWidths.top - (origin ? origin.top : 0);\n\n\treturn {\n\t\tleft: left,\n\t\tright: left + el[0].clientWidth, // clientWidth includes padding but NOT scrollbars\n\t\ttop: top,\n\t\tbottom: top + el[0].clientHeight // clientHeight includes padding but NOT scrollbars\n\t};\n}\n\n\n// Queries the area within the margin/border/padding of a jQuery element. Assumed not to have scrollbars.\n// Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive).\n// Origin is optional.\nfunction getContentRect(el, origin) {\n\tvar offset = el.offset(); // just outside of border, margin not included\n\tvar left = offset.left + getCssFloat(el, 'border-left-width') + getCssFloat(el, 'padding-left') -\n\t\t(origin ? origin.left : 0);\n\tvar top = offset.top + getCssFloat(el, 'border-top-width') + getCssFloat(el, 'padding-top') -\n\t\t(origin ? origin.top : 0);\n\n\treturn {\n\t\tleft: left,\n\t\tright: left + el.width(),\n\t\ttop: top,\n\t\tbottom: top + el.height()\n\t};\n}\n\n\n// Returns the computed left/right/top/bottom scrollbar widths for the given jQuery element.\n// NOTE: should use clientLeft/clientTop, but very unreliable cross-browser.\nfunction getScrollbarWidths(el) {\n\tvar leftRightWidth = el.innerWidth() - el[0].clientWidth; // the paddings cancel out, leaving the scrollbars\n\tvar bottomWidth = el.innerHeight() - el[0].clientHeight; // \"\n\tvar widths;\n\n\tleftRightWidth = sanitizeScrollbarWidth(leftRightWidth);\n\tbottomWidth = sanitizeScrollbarWidth(bottomWidth);\n\n\twidths = { left: 0, right: 0, top: 0, bottom: bottomWidth };\n\n\tif (getIsLeftRtlScrollbars() && el.css('direction') == 'rtl') { // is the scrollbar on the left side?\n\t\twidths.left = leftRightWidth;\n\t}\n\telse {\n\t\twidths.right = leftRightWidth;\n\t}\n\n\treturn widths;\n}\n\n\n// The scrollbar width computations in getScrollbarWidths are sometimes flawed when it comes to\n// retina displays, rounding, and IE11. Massage them into a usable value.\nfunction sanitizeScrollbarWidth(width) {\n\twidth = Math.max(0, width); // no negatives\n\twidth = Math.round(width);\n\treturn width;\n}\n\n\n// Logic for determining if, when the element is right-to-left, the scrollbar appears on the left side\n\nvar _isLeftRtlScrollbars = null;\n\nfunction getIsLeftRtlScrollbars() { // responsible for caching the computation\n\tif (_isLeftRtlScrollbars === null) {\n\t\t_isLeftRtlScrollbars = computeIsLeftRtlScrollbars();\n\t}\n\treturn _isLeftRtlScrollbars;\n}\n\nfunction computeIsLeftRtlScrollbars() { // creates an offscreen test element, then removes it\n\tvar el = $('
    ')\n\t\t.css({\n\t\t\tposition: 'absolute',\n\t\t\ttop: -1000,\n\t\t\tleft: 0,\n\t\t\tborder: 0,\n\t\t\tpadding: 0,\n\t\t\toverflow: 'scroll',\n\t\t\tdirection: 'rtl'\n\t\t})\n\t\t.appendTo('body');\n\tvar innerEl = el.children();\n\tvar res = innerEl.offset().left > el.offset().left; // is the inner div shifted to accommodate a left scrollbar?\n\tel.remove();\n\treturn res;\n}\n\n\n// Retrieves a jQuery element's computed CSS value as a floating-point number.\n// If the queried value is non-numeric (ex: IE can return \"medium\" for border width), will just return zero.\nfunction getCssFloat(el, prop) {\n\treturn parseFloat(el.css(prop)) || 0;\n}\n\n\n/* Mouse / Touch Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\nFC.preventDefault = preventDefault;\n\n\n// Returns a boolean whether this was a left mouse click and no ctrl key (which means right click on Mac)\nfunction isPrimaryMouseButton(ev) {\n\treturn ev.which == 1 && !ev.ctrlKey;\n}\n\n\nfunction getEvX(ev) {\n\tvar touches = ev.originalEvent.touches;\n\n\t// on mobile FF, pageX for touch events is present, but incorrect,\n\t// so, look at touch coordinates first.\n\tif (touches && touches.length) {\n\t\treturn touches[0].pageX;\n\t}\n\n\treturn ev.pageX;\n}\n\n\nfunction getEvY(ev) {\n\tvar touches = ev.originalEvent.touches;\n\n\t// on mobile FF, pageX for touch events is present, but incorrect,\n\t// so, look at touch coordinates first.\n\tif (touches && touches.length) {\n\t\treturn touches[0].pageY;\n\t}\n\n\treturn ev.pageY;\n}\n\n\nfunction getEvIsTouch(ev) {\n\treturn /^touch/.test(ev.type);\n}\n\n\nfunction preventSelection(el) {\n\tel.addClass('fc-unselectable')\n\t\t.on('selectstart', preventDefault);\n}\n\n\nfunction allowSelection(el) {\n\tel.removeClass('fc-unselectable')\n\t\t.off('selectstart', preventDefault);\n}\n\n\n// Stops a mouse/touch event from doing it's native browser action\nfunction preventDefault(ev) {\n\tev.preventDefault();\n}\n\n\n/* General Geometry Utils\n----------------------------------------------------------------------------------------------------------------------*/\n\nFC.intersectRects = intersectRects;\n\n// Returns a new rectangle that is the intersection of the two rectangles. If they don't intersect, returns false\nfunction intersectRects(rect1, rect2) {\n\tvar res = {\n\t\tleft: Math.max(rect1.left, rect2.left),\n\t\tright: Math.min(rect1.right, rect2.right),\n\t\ttop: Math.max(rect1.top, rect2.top),\n\t\tbottom: Math.min(rect1.bottom, rect2.bottom)\n\t};\n\n\tif (res.left < res.right && res.top < res.bottom) {\n\t\treturn res;\n\t}\n\treturn false;\n}\n\n\n// Returns a new point that will have been moved to reside within the given rectangle\nfunction constrainPoint(point, rect) {\n\treturn {\n\t\tleft: Math.min(Math.max(point.left, rect.left), rect.right),\n\t\ttop: Math.min(Math.max(point.top, rect.top), rect.bottom)\n\t};\n}\n\n\n// Returns a point that is the center of the given rectangle\nfunction getRectCenter(rect) {\n\treturn {\n\t\tleft: (rect.left + rect.right) / 2,\n\t\ttop: (rect.top + rect.bottom) / 2\n\t};\n}\n\n\n// Subtracts point2's coordinates from point1's coordinates, returning a delta\nfunction diffPoints(point1, point2) {\n\treturn {\n\t\tleft: point1.left - point2.left,\n\t\ttop: point1.top - point2.top\n\t};\n}\n\n\n/* Object Ordering by Field\n----------------------------------------------------------------------------------------------------------------------*/\n\nFC.parseFieldSpecs = parseFieldSpecs;\nFC.compareByFieldSpecs = compareByFieldSpecs;\nFC.compareByFieldSpec = compareByFieldSpec;\nFC.flexibleCompare = flexibleCompare;\n\n\nfunction parseFieldSpecs(input) {\n\tvar specs = [];\n\tvar tokens = [];\n\tvar i, token;\n\n\tif (typeof input === 'string') {\n\t\ttokens = input.split(/\\s*,\\s*/);\n\t}\n\telse if (typeof input === 'function') {\n\t\ttokens = [ input ];\n\t}\n\telse if ($.isArray(input)) {\n\t\ttokens = input;\n\t}\n\n\tfor (i = 0; i < tokens.length; i++) {\n\t\ttoken = tokens[i];\n\n\t\tif (typeof token === 'string') {\n\t\t\tspecs.push(\n\t\t\t\ttoken.charAt(0) == '-' ?\n\t\t\t\t\t{ field: token.substring(1), order: -1 } :\n\t\t\t\t\t{ field: token, order: 1 }\n\t\t\t);\n\t\t}\n\t\telse if (typeof token === 'function') {\n\t\t\tspecs.push({ func: token });\n\t\t}\n\t}\n\n\treturn specs;\n}\n\n\nfunction compareByFieldSpecs(obj1, obj2, fieldSpecs) {\n\tvar i;\n\tvar cmp;\n\n\tfor (i = 0; i < fieldSpecs.length; i++) {\n\t\tcmp = compareByFieldSpec(obj1, obj2, fieldSpecs[i]);\n\t\tif (cmp) {\n\t\t\treturn cmp;\n\t\t}\n\t}\n\n\treturn 0;\n}\n\n\nfunction compareByFieldSpec(obj1, obj2, fieldSpec) {\n\tif (fieldSpec.func) {\n\t\treturn fieldSpec.func(obj1, obj2);\n\t}\n\treturn flexibleCompare(obj1[fieldSpec.field], obj2[fieldSpec.field]) *\n\t\t(fieldSpec.order || 1);\n}\n\n\nfunction flexibleCompare(a, b) {\n\tif (!a && !b) {\n\t\treturn 0;\n\t}\n\tif (b == null) {\n\t\treturn -1;\n\t}\n\tif (a == null) {\n\t\treturn 1;\n\t}\n\tif ($.type(a) === 'string' || $.type(b) === 'string') {\n\t\treturn String(a).localeCompare(String(b));\n\t}\n\treturn a - b;\n}\n\n\n/* FullCalendar-specific Misc Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\n\n// Computes the intersection of the two ranges. Will return fresh date clones in a range.\n// Returns undefined if no intersection.\n// Expects all dates to be normalized to the same timezone beforehand.\n// TODO: move to date section?\nfunction intersectRanges(subjectRange, constraintRange) {\n\tvar subjectStart = subjectRange.start;\n\tvar subjectEnd = subjectRange.end;\n\tvar constraintStart = constraintRange.start;\n\tvar constraintEnd = constraintRange.end;\n\tvar segStart, segEnd;\n\tvar isStart, isEnd;\n\n\tif (subjectEnd > constraintStart && subjectStart < constraintEnd) { // in bounds at all?\n\n\t\tif (subjectStart >= constraintStart) {\n\t\t\tsegStart = subjectStart.clone();\n\t\t\tisStart = true;\n\t\t}\n\t\telse {\n\t\t\tsegStart = constraintStart.clone();\n\t\t\tisStart = false;\n\t\t}\n\n\t\tif (subjectEnd <= constraintEnd) {\n\t\t\tsegEnd = subjectEnd.clone();\n\t\t\tisEnd = true;\n\t\t}\n\t\telse {\n\t\t\tsegEnd = constraintEnd.clone();\n\t\t\tisEnd = false;\n\t\t}\n\n\t\treturn {\n\t\t\tstart: segStart,\n\t\t\tend: segEnd,\n\t\t\tisStart: isStart,\n\t\t\tisEnd: isEnd\n\t\t};\n\t}\n}\n\n\n/* Date Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\nFC.computeIntervalUnit = computeIntervalUnit;\nFC.divideRangeByDuration = divideRangeByDuration;\nFC.divideDurationByDuration = divideDurationByDuration;\nFC.multiplyDuration = multiplyDuration;\nFC.durationHasTime = durationHasTime;\n\nvar dayIDs = [ 'sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat' ];\nvar intervalUnits = [ 'year', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond' ];\n\n\n// Diffs the two moments into a Duration where full-days are recorded first, then the remaining time.\n// Moments will have their timezones normalized.\nfunction diffDayTime(a, b) {\n\treturn moment.duration({\n\t\tdays: a.clone().stripTime().diff(b.clone().stripTime(), 'days'),\n\t\tms: a.time() - b.time() // time-of-day from day start. disregards timezone\n\t});\n}\n\n\n// Diffs the two moments via their start-of-day (regardless of timezone). Produces whole-day durations.\nfunction diffDay(a, b) {\n\treturn moment.duration({\n\t\tdays: a.clone().stripTime().diff(b.clone().stripTime(), 'days')\n\t});\n}\n\n\n// Diffs two moments, producing a duration, made of a whole-unit-increment of the given unit. Uses rounding.\nfunction diffByUnit(a, b, unit) {\n\treturn moment.duration(\n\t\tMath.round(a.diff(b, unit, true)), // returnFloat=true\n\t\tunit\n\t);\n}\n\n\n// Computes the unit name of the largest whole-unit period of time.\n// For example, 48 hours will be \"days\" whereas 49 hours will be \"hours\".\n// Accepts start/end, a range object, or an original duration object.\nfunction computeIntervalUnit(start, end) {\n\tvar i, unit;\n\tvar val;\n\n\tfor (i = 0; i < intervalUnits.length; i++) {\n\t\tunit = intervalUnits[i];\n\t\tval = computeRangeAs(unit, start, end);\n\n\t\tif (val >= 1 && isInt(val)) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn unit; // will be \"milliseconds\" if nothing else matches\n}\n\n\n// Computes the number of units (like \"hours\") in the given range.\n// Range can be a {start,end} object, separate start/end args, or a Duration.\n// Results are based on Moment's .as() and .diff() methods, so results can depend on internal handling\n// of month-diffing logic (which tends to vary from version to version).\nfunction computeRangeAs(unit, start, end) {\n\n\tif (end != null) { // given start, end\n\t\treturn end.diff(start, unit, true);\n\t}\n\telse if (moment.isDuration(start)) { // given duration\n\t\treturn start.as(unit);\n\t}\n\telse { // given { start, end } range object\n\t\treturn start.end.diff(start.start, unit, true);\n\t}\n}\n\n\n// Intelligently divides a range (specified by a start/end params) by a duration\nfunction divideRangeByDuration(start, end, dur) {\n\tvar months;\n\n\tif (durationHasTime(dur)) {\n\t\treturn (end - start) / dur;\n\t}\n\tmonths = dur.asMonths();\n\tif (Math.abs(months) >= 1 && isInt(months)) {\n\t\treturn end.diff(start, 'months', true) / months;\n\t}\n\treturn end.diff(start, 'days', true) / dur.asDays();\n}\n\n\n// Intelligently divides one duration by another\nfunction divideDurationByDuration(dur1, dur2) {\n\tvar months1, months2;\n\n\tif (durationHasTime(dur1) || durationHasTime(dur2)) {\n\t\treturn dur1 / dur2;\n\t}\n\tmonths1 = dur1.asMonths();\n\tmonths2 = dur2.asMonths();\n\tif (\n\t\tMath.abs(months1) >= 1 && isInt(months1) &&\n\t\tMath.abs(months2) >= 1 && isInt(months2)\n\t) {\n\t\treturn months1 / months2;\n\t}\n\treturn dur1.asDays() / dur2.asDays();\n}\n\n\n// Intelligently multiplies a duration by a number\nfunction multiplyDuration(dur, n) {\n\tvar months;\n\n\tif (durationHasTime(dur)) {\n\t\treturn moment.duration(dur * n);\n\t}\n\tmonths = dur.asMonths();\n\tif (Math.abs(months) >= 1 && isInt(months)) {\n\t\treturn moment.duration({ months: months * n });\n\t}\n\treturn moment.duration({ days: dur.asDays() * n });\n}\n\n\n// Returns a boolean about whether the given duration has any time parts (hours/minutes/seconds/ms)\nfunction durationHasTime(dur) {\n\treturn Boolean(dur.hours() || dur.minutes() || dur.seconds() || dur.milliseconds());\n}\n\n\nfunction isNativeDate(input) {\n\treturn Object.prototype.toString.call(input) === '[object Date]' || input instanceof Date;\n}\n\n\n// Returns a boolean about whether the given input is a time string, like \"06:40:00\" or \"06:00\"\nfunction isTimeString(str) {\n\treturn /^\\d+\\:\\d+(?:\\:\\d+\\.?(?:\\d{3})?)?$/.test(str);\n}\n\n\n/* Logging and Debug\n----------------------------------------------------------------------------------------------------------------------*/\n\nFC.log = function() {\n\tvar console = window.console;\n\n\tif (console && console.log) {\n\t\treturn console.log.apply(console, arguments);\n\t}\n};\n\nFC.warn = function() {\n\tvar console = window.console;\n\n\tif (console && console.warn) {\n\t\treturn console.warn.apply(console, arguments);\n\t}\n\telse {\n\t\treturn FC.log.apply(FC, arguments);\n\t}\n};\n\n\n/* General Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\nvar hasOwnPropMethod = {}.hasOwnProperty;\n\n\n// Merges an array of objects into a single object.\n// The second argument allows for an array of property names who's object values will be merged together.\nfunction mergeProps(propObjs, complexProps) {\n\tvar dest = {};\n\tvar i, name;\n\tvar complexObjs;\n\tvar j, val;\n\tvar props;\n\n\tif (complexProps) {\n\t\tfor (i = 0; i < complexProps.length; i++) {\n\t\t\tname = complexProps[i];\n\t\t\tcomplexObjs = [];\n\n\t\t\t// collect the trailing object values, stopping when a non-object is discovered\n\t\t\tfor (j = propObjs.length - 1; j >= 0; j--) {\n\t\t\t\tval = propObjs[j][name];\n\n\t\t\t\tif (typeof val === 'object') {\n\t\t\t\t\tcomplexObjs.unshift(val);\n\t\t\t\t}\n\t\t\t\telse if (val !== undefined) {\n\t\t\t\t\tdest[name] = val; // if there were no objects, this value will be used\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// if the trailing values were objects, use the merged value\n\t\t\tif (complexObjs.length) {\n\t\t\t\tdest[name] = mergeProps(complexObjs);\n\t\t\t}\n\t\t}\n\t}\n\n\t// copy values into the destination, going from last to first\n\tfor (i = propObjs.length - 1; i >= 0; i--) {\n\t\tprops = propObjs[i];\n\n\t\tfor (name in props) {\n\t\t\tif (!(name in dest)) { // if already assigned by previous props or complex props, don't reassign\n\t\t\t\tdest[name] = props[name];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dest;\n}\n\n\n// Create an object that has the given prototype. Just like Object.create\nfunction createObject(proto) {\n\tvar f = function() {};\n\tf.prototype = proto;\n\treturn new f();\n}\nFC.createObject = createObject;\n\n\nfunction copyOwnProps(src, dest) {\n\tfor (var name in src) {\n\t\tif (hasOwnProp(src, name)) {\n\t\t\tdest[name] = src[name];\n\t\t}\n\t}\n}\n\n\nfunction hasOwnProp(obj, name) {\n\treturn hasOwnPropMethod.call(obj, name);\n}\n\n\n// Is the given value a non-object non-function value?\nfunction isAtomic(val) {\n\treturn /undefined|null|boolean|number|string/.test($.type(val));\n}\n\n\nfunction applyAll(functions, thisObj, args) {\n\tif ($.isFunction(functions)) {\n\t\tfunctions = [ functions ];\n\t}\n\tif (functions) {\n\t\tvar i;\n\t\tvar ret;\n\t\tfor (i=0; i/g, '>')\n\t\t.replace(/'/g, ''')\n\t\t.replace(/\"/g, '"')\n\t\t.replace(/\\n/g, '
    ');\n}\n\n\nfunction stripHtmlEntities(text) {\n\treturn text.replace(/&.*?;/g, '');\n}\n\n\n// Given a hash of CSS properties, returns a string of CSS.\n// Uses property names as-is (no camel-case conversion). Will not make statements for null/undefined values.\nfunction cssToStr(cssProps) {\n\tvar statements = [];\n\n\t$.each(cssProps, function(name, val) {\n\t\tif (val != null) {\n\t\t\tstatements.push(name + ':' + val);\n\t\t}\n\t});\n\n\treturn statements.join(';');\n}\n\n\n// Given an object hash of HTML attribute names to values,\n// generates a string that can be injected between < > in HTML\nfunction attrsToStr(attrs) {\n\tvar parts = [];\n\n\t$.each(attrs, function(name, val) {\n\t\tif (val != null) {\n\t\t\tparts.push(name + '=\"' + htmlEscape(val) + '\"');\n\t\t}\n\t});\n\n\treturn parts.join(' ');\n}\n\n\nfunction capitaliseFirstLetter(str) {\n\treturn str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n\nfunction compareNumbers(a, b) { // for .sort()\n\treturn a - b;\n}\n\n\nfunction isInt(n) {\n\treturn n % 1 === 0;\n}\n\n\n// Returns a method bound to the given object context.\n// Just like one of the jQuery.proxy signatures, but without the undesired behavior of treating the same method with\n// different contexts as identical when binding/unbinding events.\nfunction proxy(obj, methodName) {\n\tvar method = obj[methodName];\n\n\treturn function() {\n\t\treturn method.apply(obj, arguments);\n\t};\n}\n\n\n// Returns a function, that, as long as it continues to be invoked, will not\n// be triggered. The function will be called after it stops being called for\n// N milliseconds. If `immediate` is passed, trigger the function on the\n// leading edge, instead of the trailing.\n// https://github.com/jashkenas/underscore/blob/1.6.0/underscore.js#L714\nfunction debounce(func, wait, immediate) {\n\tvar timeout, args, context, timestamp, result;\n\n\tvar later = function() {\n\t\tvar last = +new Date() - timestamp;\n\t\tif (last < wait) {\n\t\t\ttimeout = setTimeout(later, wait - last);\n\t\t}\n\t\telse {\n\t\t\ttimeout = null;\n\t\t\tif (!immediate) {\n\t\t\t\tresult = func.apply(context, args);\n\t\t\t\tcontext = args = null;\n\t\t\t}\n\t\t}\n\t};\n\n\treturn function() {\n\t\tcontext = this;\n\t\targs = arguments;\n\t\ttimestamp = +new Date();\n\t\tvar callNow = immediate && !timeout;\n\t\tif (!timeout) {\n\t\t\ttimeout = setTimeout(later, wait);\n\t\t}\n\t\tif (callNow) {\n\t\t\tresult = func.apply(context, args);\n\t\t\tcontext = args = null;\n\t\t}\n\t\treturn result;\n\t};\n}\n\n;;\n\n/*\nGENERAL NOTE on moments throughout the *entire rest* of the codebase:\nAll moments are assumed to be ambiguously-zoned unless otherwise noted,\nwith the NOTABLE EXCEOPTION of start/end dates that live on *Event Objects*.\nAmbiguously-TIMED moments are assumed to be ambiguously-zoned by nature.\n*/\n\nvar ambigDateOfMonthRegex = /^\\s*\\d{4}-\\d\\d$/;\nvar ambigTimeOrZoneRegex =\n\t/^\\s*\\d{4}-(?:(\\d\\d-\\d\\d)|(W\\d\\d$)|(W\\d\\d-\\d)|(\\d\\d\\d))((T| )(\\d\\d(:\\d\\d(:\\d\\d(\\.\\d+)?)?)?)?)?$/;\nvar newMomentProto = moment.fn; // where we will attach our new methods\nvar oldMomentProto = $.extend({}, newMomentProto); // copy of original moment methods\n\n// tell momentjs to transfer these properties upon clone\nvar momentProperties = moment.momentProperties;\nmomentProperties.push('_fullCalendar');\nmomentProperties.push('_ambigTime');\nmomentProperties.push('_ambigZone');\n\n\n// Creating\n// -------------------------------------------------------------------------------------------------\n\n// Creates a new moment, similar to the vanilla moment(...) constructor, but with\n// extra features (ambiguous time, enhanced formatting). When given an existing moment,\n// it will function as a clone (and retain the zone of the moment). Anything else will\n// result in a moment in the local zone.\nFC.moment = function() {\n\treturn makeMoment(arguments);\n};\n\n// Sames as FC.moment, but forces the resulting moment to be in the UTC timezone.\nFC.moment.utc = function() {\n\tvar mom = makeMoment(arguments, true);\n\n\t// Force it into UTC because makeMoment doesn't guarantee it\n\t// (if given a pre-existing moment for example)\n\tif (mom.hasTime()) { // don't give ambiguously-timed moments a UTC zone\n\t\tmom.utc();\n\t}\n\n\treturn mom;\n};\n\n// Same as FC.moment, but when given an ISO8601 string, the timezone offset is preserved.\n// ISO8601 strings with no timezone offset will become ambiguously zoned.\nFC.moment.parseZone = function() {\n\treturn makeMoment(arguments, true, true);\n};\n\n// Builds an enhanced moment from args. When given an existing moment, it clones. When given a\n// native Date, or called with no arguments (the current time), the resulting moment will be local.\n// Anything else needs to be \"parsed\" (a string or an array), and will be affected by:\n// parseAsUTC - if there is no zone information, should we parse the input in UTC?\n// parseZone - if there is zone information, should we force the zone of the moment?\nfunction makeMoment(args, parseAsUTC, parseZone) {\n\tvar input = args[0];\n\tvar isSingleString = args.length == 1 && typeof input === 'string';\n\tvar isAmbigTime;\n\tvar isAmbigZone;\n\tvar ambigMatch;\n\tvar mom;\n\n\tif (moment.isMoment(input) || isNativeDate(input) || input === undefined) {\n\t\tmom = moment.apply(null, args);\n\t}\n\telse { // \"parsing\" is required\n\t\tisAmbigTime = false;\n\t\tisAmbigZone = false;\n\n\t\tif (isSingleString) {\n\t\t\tif (ambigDateOfMonthRegex.test(input)) {\n\t\t\t\t// accept strings like '2014-05', but convert to the first of the month\n\t\t\t\tinput += '-01';\n\t\t\t\targs = [ input ]; // for when we pass it on to moment's constructor\n\t\t\t\tisAmbigTime = true;\n\t\t\t\tisAmbigZone = true;\n\t\t\t}\n\t\t\telse if ((ambigMatch = ambigTimeOrZoneRegex.exec(input))) {\n\t\t\t\tisAmbigTime = !ambigMatch[5]; // no time part?\n\t\t\t\tisAmbigZone = true;\n\t\t\t}\n\t\t}\n\t\telse if ($.isArray(input)) {\n\t\t\t// arrays have no timezone information, so assume ambiguous zone\n\t\t\tisAmbigZone = true;\n\t\t}\n\t\t// otherwise, probably a string with a format\n\n\t\tif (parseAsUTC || isAmbigTime) {\n\t\t\tmom = moment.utc.apply(moment, args);\n\t\t}\n\t\telse {\n\t\t\tmom = moment.apply(null, args);\n\t\t}\n\n\t\tif (isAmbigTime) {\n\t\t\tmom._ambigTime = true;\n\t\t\tmom._ambigZone = true; // ambiguous time always means ambiguous zone\n\t\t}\n\t\telse if (parseZone) { // let's record the inputted zone somehow\n\t\t\tif (isAmbigZone) {\n\t\t\t\tmom._ambigZone = true;\n\t\t\t}\n\t\t\telse if (isSingleString) {\n\t\t\t\tmom.utcOffset(input); // if not a valid zone, will assign UTC\n\t\t\t}\n\t\t}\n\t}\n\n\tmom._fullCalendar = true; // flag for extended functionality\n\n\treturn mom;\n}\n\n\n// Week Number\n// -------------------------------------------------------------------------------------------------\n\n\n// Returns the week number, considering the locale's custom week number calcuation\n// `weeks` is an alias for `week`\nnewMomentProto.week = newMomentProto.weeks = function(input) {\n\tvar weekCalc = this._locale._fullCalendar_weekCalc;\n\n\tif (input == null && typeof weekCalc === 'function') { // custom function only works for getter\n\t\treturn weekCalc(this);\n\t}\n\telse if (weekCalc === 'ISO') {\n\t\treturn oldMomentProto.isoWeek.apply(this, arguments); // ISO getter/setter\n\t}\n\n\treturn oldMomentProto.week.apply(this, arguments); // local getter/setter\n};\n\n\n// Time-of-day\n// -------------------------------------------------------------------------------------------------\n\n// GETTER\n// Returns a Duration with the hours/minutes/seconds/ms values of the moment.\n// If the moment has an ambiguous time, a duration of 00:00 will be returned.\n//\n// SETTER\n// You can supply a Duration, a Moment, or a Duration-like argument.\n// When setting the time, and the moment has an ambiguous time, it then becomes unambiguous.\nnewMomentProto.time = function(time) {\n\n\t// Fallback to the original method (if there is one) if this moment wasn't created via FullCalendar.\n\t// `time` is a generic enough method name where this precaution is necessary to avoid collisions w/ other plugins.\n\tif (!this._fullCalendar) {\n\t\treturn oldMomentProto.time.apply(this, arguments);\n\t}\n\n\tif (time == null) { // getter\n\t\treturn moment.duration({\n\t\t\thours: this.hours(),\n\t\t\tminutes: this.minutes(),\n\t\t\tseconds: this.seconds(),\n\t\t\tmilliseconds: this.milliseconds()\n\t\t});\n\t}\n\telse { // setter\n\n\t\tthis._ambigTime = false; // mark that the moment now has a time\n\n\t\tif (!moment.isDuration(time) && !moment.isMoment(time)) {\n\t\t\ttime = moment.duration(time);\n\t\t}\n\n\t\t// The day value should cause overflow (so 24 hours becomes 00:00:00 of next day).\n\t\t// Only for Duration times, not Moment times.\n\t\tvar dayHours = 0;\n\t\tif (moment.isDuration(time)) {\n\t\t\tdayHours = Math.floor(time.asDays()) * 24;\n\t\t}\n\n\t\t// We need to set the individual fields.\n\t\t// Can't use startOf('day') then add duration. In case of DST at start of day.\n\t\treturn this.hours(dayHours + time.hours())\n\t\t\t.minutes(time.minutes())\n\t\t\t.seconds(time.seconds())\n\t\t\t.milliseconds(time.milliseconds());\n\t}\n};\n\n// Converts the moment to UTC, stripping out its time-of-day and timezone offset,\n// but preserving its YMD. A moment with a stripped time will display no time\n// nor timezone offset when .format() is called.\nnewMomentProto.stripTime = function() {\n\n\tif (!this._ambigTime) {\n\n\t\tthis.utc(true); // keepLocalTime=true (for keeping *date* value)\n\n\t\t// set time to zero\n\t\tthis.set({\n\t\t\thours: 0,\n\t\t\tminutes: 0,\n\t\t\tseconds: 0,\n\t\t\tms: 0\n\t\t});\n\n\t\t// Mark the time as ambiguous. This needs to happen after the .utc() call, which might call .utcOffset(),\n\t\t// which clears all ambig flags.\n\t\tthis._ambigTime = true;\n\t\tthis._ambigZone = true; // if ambiguous time, also ambiguous timezone offset\n\t}\n\n\treturn this; // for chaining\n};\n\n// Returns if the moment has a non-ambiguous time (boolean)\nnewMomentProto.hasTime = function() {\n\treturn !this._ambigTime;\n};\n\n\n// Timezone\n// -------------------------------------------------------------------------------------------------\n\n// Converts the moment to UTC, stripping out its timezone offset, but preserving its\n// YMD and time-of-day. A moment with a stripped timezone offset will display no\n// timezone offset when .format() is called.\nnewMomentProto.stripZone = function() {\n\tvar wasAmbigTime;\n\n\tif (!this._ambigZone) {\n\n\t\twasAmbigTime = this._ambigTime;\n\n\t\tthis.utc(true); // keepLocalTime=true (for keeping date and time values)\n\n\t\t// the above call to .utc()/.utcOffset() unfortunately might clear the ambig flags, so restore\n\t\tthis._ambigTime = wasAmbigTime || false;\n\n\t\t// Mark the zone as ambiguous. This needs to happen after the .utc() call, which might call .utcOffset(),\n\t\t// which clears the ambig flags.\n\t\tthis._ambigZone = true;\n\t}\n\n\treturn this; // for chaining\n};\n\n// Returns of the moment has a non-ambiguous timezone offset (boolean)\nnewMomentProto.hasZone = function() {\n\treturn !this._ambigZone;\n};\n\n\n// implicitly marks a zone\nnewMomentProto.local = function(keepLocalTime) {\n\n\t// for when converting from ambiguously-zoned to local,\n\t// keep the time values when converting from UTC -> local\n\toldMomentProto.local.call(this, this._ambigZone || keepLocalTime);\n\n\t// ensure non-ambiguous\n\t// this probably already happened via local() -> utcOffset(), but don't rely on Moment's internals\n\tthis._ambigTime = false;\n\tthis._ambigZone = false;\n\n\treturn this; // for chaining\n};\n\n\n// implicitly marks a zone\nnewMomentProto.utc = function(keepLocalTime) {\n\n\toldMomentProto.utc.call(this, keepLocalTime);\n\n\t// ensure non-ambiguous\n\t// this probably already happened via utc() -> utcOffset(), but don't rely on Moment's internals\n\tthis._ambigTime = false;\n\tthis._ambigZone = false;\n\n\treturn this;\n};\n\n\n// implicitly marks a zone (will probably get called upon .utc() and .local())\nnewMomentProto.utcOffset = function(tzo) {\n\n\tif (tzo != null) { // setter\n\t\t// these assignments needs to happen before the original zone method is called.\n\t\t// I forget why, something to do with a browser crash.\n\t\tthis._ambigTime = false;\n\t\tthis._ambigZone = false;\n\t}\n\n\treturn oldMomentProto.utcOffset.apply(this, arguments);\n};\n\n\n// Formatting\n// -------------------------------------------------------------------------------------------------\n\nnewMomentProto.format = function() {\n\tif (this._fullCalendar && arguments[0]) { // an enhanced moment? and a format string provided?\n\t\treturn formatDate(this, arguments[0]); // our extended formatting\n\t}\n\tif (this._ambigTime) {\n\t\treturn oldMomentFormat(this, 'YYYY-MM-DD');\n\t}\n\tif (this._ambigZone) {\n\t\treturn oldMomentFormat(this, 'YYYY-MM-DD[T]HH:mm:ss');\n\t}\n\treturn oldMomentProto.format.apply(this, arguments);\n};\n\nnewMomentProto.toISOString = function() {\n\tif (this._ambigTime) {\n\t\treturn oldMomentFormat(this, 'YYYY-MM-DD');\n\t}\n\tif (this._ambigZone) {\n\t\treturn oldMomentFormat(this, 'YYYY-MM-DD[T]HH:mm:ss');\n\t}\n\treturn oldMomentProto.toISOString.apply(this, arguments);\n};\n\n;;\n(function() {\n\n// exports\nFC.formatDate = formatDate;\nFC.formatRange = formatRange;\nFC.oldMomentFormat = oldMomentFormat;\nFC.queryMostGranularFormatUnit = queryMostGranularFormatUnit;\n\n\n// Config\n// ---------------------------------------------------------------------------------------------------------------------\n\n/*\nInserted between chunks in the fake (\"intermediate\") formatting string.\nImportant that it passes as whitespace (\\s) because moment often identifies non-standalone months\nvia a regexp with an \\s.\n*/\nvar PART_SEPARATOR = '\\u000b'; // vertical tab\n\n/*\nInserted as the first character of a literal-text chunk to indicate that the literal text is not actually literal text,\nbut rather, a \"special\" token that has custom rendering (see specialTokens map).\n*/\nvar SPECIAL_TOKEN_MARKER = '\\u001f'; // information separator 1\n\n/*\nInserted at the beginning and end of a span of text that must have non-zero numeric characters.\nHandling of these markers is done in a post-processing step at the very end of text rendering.\n*/\nvar MAYBE_MARKER = '\\u001e'; // information separator 2\nvar MAYBE_REGEXP = new RegExp(MAYBE_MARKER + '([^' + MAYBE_MARKER + ']*)' + MAYBE_MARKER, 'g'); // must be global\n\n/*\nAddition formatting tokens we want recognized\n*/\nvar specialTokens = {\n\tt: function(date) { // \"a\" or \"p\"\n\t\treturn oldMomentFormat(date, 'a').charAt(0);\n\t},\n\tT: function(date) { // \"A\" or \"P\"\n\t\treturn oldMomentFormat(date, 'A').charAt(0);\n\t}\n};\n\n/*\nThe first characters of formatting tokens for units that are 1 day or larger.\n`value` is for ranking relative size (lower means bigger).\n`unit` is a normalized unit, used for comparing moments.\n*/\nvar largeTokenMap = {\n\tY: { value: 1, unit: 'year' },\n\tM: { value: 2, unit: 'month' },\n\tW: { value: 3, unit: 'week' }, // ISO week\n\tw: { value: 3, unit: 'week' }, // local week\n\tD: { value: 4, unit: 'day' }, // day of month\n\td: { value: 4, unit: 'day' } // day of week\n};\n\n\n// Single Date Formatting\n// ---------------------------------------------------------------------------------------------------------------------\n\n/*\nFormats `date` with a Moment formatting string, but allow our non-zero areas and special token\n*/\nfunction formatDate(date, formatStr) {\n\treturn renderFakeFormatString(\n\t\tgetParsedFormatString(formatStr).fakeFormatString,\n\t\tdate\n\t);\n}\n\n/*\nCall this if you want Moment's original format method to be used\n*/\nfunction oldMomentFormat(mom, formatStr) {\n\treturn oldMomentProto.format.call(mom, formatStr); // oldMomentProto defined in moment-ext.js\n}\n\n\n// Date Range Formatting\n// -------------------------------------------------------------------------------------------------\n// TODO: make it work with timezone offset\n\n/*\nUsing a formatting string meant for a single date, generate a range string, like\n\"Sep 2 - 9 2013\", that intelligently inserts a separator where the dates differ.\nIf the dates are the same as far as the format string is concerned, just return a single\nrendering of one date, without any separator.\n*/\nfunction formatRange(date1, date2, formatStr, separator, isRTL) {\n\tvar localeData;\n\n\tdate1 = FC.moment.parseZone(date1);\n\tdate2 = FC.moment.parseZone(date2);\n\n\tlocaleData = date1.localeData();\n\n\t// Expand localized format strings, like \"LL\" -> \"MMMM D YYYY\".\n\t// BTW, this is not important for `formatDate` because it is impossible to put custom tokens\n\t// or non-zero areas in Moment's localized format strings.\n\tformatStr = localeData.longDateFormat(formatStr) || formatStr;\n\n\treturn renderParsedFormat(\n\t\tgetParsedFormatString(formatStr),\n\t\tdate1,\n\t\tdate2,\n\t\tseparator || ' - ',\n\t\tisRTL\n\t);\n}\n\n/*\nRenders a range with an already-parsed format string.\n*/\nfunction renderParsedFormat(parsedFormat, date1, date2, separator, isRTL) {\n\tvar sameUnits = parsedFormat.sameUnits;\n\tvar unzonedDate1 = date1.clone().stripZone(); // for same-unit comparisons\n\tvar unzonedDate2 = date2.clone().stripZone(); // \"\n\n\tvar renderedParts1 = renderFakeFormatStringParts(parsedFormat.fakeFormatString, date1);\n\tvar renderedParts2 = renderFakeFormatStringParts(parsedFormat.fakeFormatString, date2);\n\n\tvar leftI;\n\tvar leftStr = '';\n\tvar rightI;\n\tvar rightStr = '';\n\tvar middleI;\n\tvar middleStr1 = '';\n\tvar middleStr2 = '';\n\tvar middleStr = '';\n\n\t// Start at the leftmost side of the formatting string and continue until you hit a token\n\t// that is not the same between dates.\n\tfor (\n\t\tleftI = 0;\n\t\tleftI < sameUnits.length && (!sameUnits[leftI] || unzonedDate1.isSame(unzonedDate2, sameUnits[leftI]));\n\t\tleftI++\n\t) {\n\t\tleftStr += renderedParts1[leftI];\n\t}\n\n\t// Similarly, start at the rightmost side of the formatting string and move left\n\tfor (\n\t\trightI = sameUnits.length - 1;\n\t\trightI > leftI && (!sameUnits[rightI] || unzonedDate1.isSame(unzonedDate2, sameUnits[rightI]));\n\t\trightI--\n\t) {\n\t\t// If current chunk is on the boundary of unique date-content, and is a special-case\n\t\t// date-formatting postfix character, then don't consume it. Consider it unique date-content.\n\t\t// TODO: make configurable\n\t\tif (rightI - 1 === leftI && renderedParts1[rightI] === '.') {\n\t\t\tbreak;\n\t\t}\n\n\t\trightStr = renderedParts1[rightI] + rightStr;\n\t}\n\n\t// The area in the middle is different for both of the dates.\n\t// Collect them distinctly so we can jam them together later.\n\tfor (middleI = leftI; middleI <= rightI; middleI++) {\n\t\tmiddleStr1 += renderedParts1[middleI];\n\t\tmiddleStr2 += renderedParts2[middleI];\n\t}\n\n\tif (middleStr1 || middleStr2) {\n\t\tif (isRTL) {\n\t\t\tmiddleStr = middleStr2 + separator + middleStr1;\n\t\t}\n\t\telse {\n\t\t\tmiddleStr = middleStr1 + separator + middleStr2;\n\t\t}\n\t}\n\n\treturn processMaybeMarkers(\n\t\tleftStr + middleStr + rightStr\n\t);\n}\n\n\n// Format String Parsing\n// ---------------------------------------------------------------------------------------------------------------------\n\nvar parsedFormatStrCache = {};\n\n/*\nReturns a parsed format string, leveraging a cache.\n*/\nfunction getParsedFormatString(formatStr) {\n\treturn parsedFormatStrCache[formatStr] ||\n\t\t(parsedFormatStrCache[formatStr] = parseFormatString(formatStr));\n}\n\n/*\nParses a format string into the following:\n- fakeFormatString: a momentJS formatting string, littered with special control characters that get post-processed.\n- sameUnits: for every part in fakeFormatString, if the part is a token, the value will be a unit string (like \"day\"),\n that indicates how similar a range's start & end must be in order to share the same formatted text.\n If not a token, then the value is null.\n Always a flat array (not nested liked \"chunks\").\n*/\nfunction parseFormatString(formatStr) {\n\tvar chunks = chunkFormatString(formatStr);\n\t\n\treturn {\n\t\tfakeFormatString: buildFakeFormatString(chunks),\n\t\tsameUnits: buildSameUnits(chunks)\n\t};\n}\n\n/*\nBreak the formatting string into an array of chunks.\nA 'maybe' chunk will have nested chunks.\n*/\nfunction chunkFormatString(formatStr) {\n\tvar chunks = [];\n\tvar match;\n\n\t// TODO: more descrimination\n\t// \\4 is a backreference to the first character of a multi-character set.\n\tvar chunker = /\\[([^\\]]*)\\]|\\(([^\\)]*)\\)|(LTS|LT|(\\w)\\4*o?)|([^\\w\\[\\(]+)/g;\n\n\twhile ((match = chunker.exec(formatStr))) {\n\t\tif (match[1]) { // a literal string inside [ ... ]\n\t\t\tchunks.push.apply(chunks, // append\n\t\t\t\tsplitStringLiteral(match[1])\n\t\t\t);\n\t\t}\n\t\telse if (match[2]) { // non-zero formatting inside ( ... )\n\t\t\tchunks.push({ maybe: chunkFormatString(match[2]) });\n\t\t}\n\t\telse if (match[3]) { // a formatting token\n\t\t\tchunks.push({ token: match[3] });\n\t\t}\n\t\telse if (match[5]) { // an unenclosed literal string\n\t\t\tchunks.push.apply(chunks, // append\n\t\t\t\tsplitStringLiteral(match[5])\n\t\t\t);\n\t\t}\n\t}\n\n\treturn chunks;\n}\n\n/*\nPotentially splits a literal-text string into multiple parts. For special cases.\n*/\nfunction splitStringLiteral(s) {\n\tif (s === '. ') {\n\t\treturn [ '.', ' ' ]; // for locales with periods bound to the end of each year/month/date\n\t}\n\telse {\n\t\treturn [ s ];\n\t}\n}\n\n/*\nGiven chunks parsed from a real format string, generate a fake (aka \"intermediate\") format string with special control\ncharacters that will eventually be given to moment for formatting, and then post-processed.\n*/\nfunction buildFakeFormatString(chunks) {\n\tvar parts = [];\n\tvar i, chunk;\n\n\tfor (i = 0; i < chunks.length; i++) {\n\t\tchunk = chunks[i];\n\n\t\tif (typeof chunk === 'string') {\n\t\t\tparts.push('[' + chunk + ']');\n\t\t}\n\t\telse if (chunk.token) {\n\t\t\tif (chunk.token in specialTokens) {\n\t\t\t\tparts.push(\n\t\t\t\t\tSPECIAL_TOKEN_MARKER + // useful during post-processing\n\t\t\t\t\t'[' + chunk.token + ']' // preserve as literal text\n\t\t\t\t);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tparts.push(chunk.token); // unprotected text implies a format string\n\t\t\t}\n\t\t}\n\t\telse if (chunk.maybe) {\n\t\t\tparts.push(\n\t\t\t\tMAYBE_MARKER + // useful during post-processing\n\t\t\t\tbuildFakeFormatString(chunk.maybe) +\n\t\t\t\tMAYBE_MARKER\n\t\t\t);\n\t\t}\n\t}\n\n\treturn parts.join(PART_SEPARATOR);\n}\n\n/*\nGiven parsed chunks from a real formatting string, generates an array of unit strings (like \"day\") that indicate\nin which regard two dates must be similar in order to share range formatting text.\nThe `chunks` can be nested (because of \"maybe\" chunks), however, the returned array will be flat.\n*/\nfunction buildSameUnits(chunks) {\n\tvar units = [];\n\tvar i, chunk;\n\tvar tokenInfo;\n\n\tfor (i = 0; i < chunks.length; i++) {\n\t\tchunk = chunks[i];\n\n\t\tif (chunk.token) {\n\t\t\ttokenInfo = largeTokenMap[chunk.token.charAt(0)];\n\t\t\tunits.push(tokenInfo ? tokenInfo.unit : 'second'); // default to a very strict same-second\n\t\t}\n\t\telse if (chunk.maybe) {\n\t\t\tunits.push.apply(units, // append\n\t\t\t\tbuildSameUnits(chunk.maybe)\n\t\t\t);\n\t\t}\n\t\telse {\n\t\t\tunits.push(null);\n\t\t}\n\t}\n\n\treturn units;\n}\n\n\n// Rendering to text\n// ---------------------------------------------------------------------------------------------------------------------\n\n/*\nFormats a date with a fake format string, post-processes the control characters, then returns.\n*/\nfunction renderFakeFormatString(fakeFormatString, date) {\n\treturn processMaybeMarkers(\n\t\trenderFakeFormatStringParts(fakeFormatString, date).join('')\n\t);\n}\n\n/*\nFormats a date into parts that will have been post-processed, EXCEPT for the \"maybe\" markers.\n*/\nfunction renderFakeFormatStringParts(fakeFormatString, date) {\n\tvar parts = [];\n\tvar fakeRender = oldMomentFormat(date, fakeFormatString);\n\tvar fakeParts = fakeRender.split(PART_SEPARATOR);\n\tvar i, fakePart;\n\n\tfor (i = 0; i < fakeParts.length; i++) {\n\t\tfakePart = fakeParts[i];\n\n\t\tif (fakePart.charAt(0) === SPECIAL_TOKEN_MARKER) {\n\t\t\tparts.push(\n\t\t\t\t// the literal string IS the token's name.\n\t\t\t\t// call special token's registered function.\n\t\t\t\tspecialTokens[fakePart.substring(1)](date)\n\t\t\t);\n\t\t}\n\t\telse {\n\t\t\tparts.push(fakePart);\n\t\t}\n\t}\n\n\treturn parts;\n}\n\n/*\nAccepts an almost-finally-formatted string and processes the \"maybe\" control characters, returning a new string.\n*/\nfunction processMaybeMarkers(s) {\n\treturn s.replace(MAYBE_REGEXP, function(m0, m1) { // regex assumed to have 'g' flag\n\t\tif (m1.match(/[1-9]/)) { // any non-zero numeric characters?\n\t\t\treturn m1;\n\t\t}\n\t\telse {\n\t\t\treturn '';\n\t\t}\n\t});\n}\n\n\n// Misc Utils\n// -------------------------------------------------------------------------------------------------\n\n/*\nReturns a unit string, either 'year', 'month', 'day', or null for the most granular formatting token in the string.\n*/\nfunction queryMostGranularFormatUnit(formatStr) {\n\tvar chunks = chunkFormatString(formatStr);\n\tvar i, chunk;\n\tvar candidate;\n\tvar best;\n\n\tfor (i = 0; i < chunks.length; i++) {\n\t\tchunk = chunks[i];\n\n\t\tif (chunk.token) {\n\t\t\tcandidate = largeTokenMap[chunk.token.charAt(0)];\n\t\t\tif (candidate) {\n\t\t\t\tif (!best || candidate.value > best.value) {\n\t\t\t\t\tbest = candidate;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (best) {\n\t\treturn best.unit;\n\t}\n\n\treturn null;\n};\n\n})();\n\n// quick local references\nvar formatDate = FC.formatDate;\nvar formatRange = FC.formatRange;\nvar oldMomentFormat = FC.oldMomentFormat;\n\n;;\n\nFC.Class = Class; // export\n\n// Class that all other classes will inherit from\nfunction Class() { }\n\n\n// Called on a class to create a subclass.\n// Last argument contains instance methods. Any argument before the last are considered mixins.\nClass.extend = function() {\n\tvar len = arguments.length;\n\tvar i;\n\tvar members;\n\n\tfor (i = 0; i < len; i++) {\n\t\tmembers = arguments[i];\n\t\tif (i < len - 1) { // not the last argument?\n\t\t\tmixIntoClass(this, members);\n\t\t}\n\t}\n\n\treturn extendClass(this, members || {}); // members will be undefined if no arguments\n};\n\n\n// Adds new member variables/methods to the class's prototype.\n// Can be called with another class, or a plain object hash containing new members.\nClass.mixin = function(members) {\n\tmixIntoClass(this, members);\n};\n\n\nfunction extendClass(superClass, members) {\n\tvar subClass;\n\n\t// ensure a constructor for the subclass, forwarding all arguments to the super-constructor if it doesn't exist\n\tif (hasOwnProp(members, 'constructor')) {\n\t\tsubClass = members.constructor;\n\t}\n\tif (typeof subClass !== 'function') {\n\t\tsubClass = members.constructor = function() {\n\t\t\tsuperClass.apply(this, arguments);\n\t\t};\n\t}\n\n\t// build the base prototype for the subclass, which is an new object chained to the superclass's prototype\n\tsubClass.prototype = createObject(superClass.prototype);\n\n\t// copy each member variable/method onto the the subclass's prototype\n\tcopyOwnProps(members, subClass.prototype);\n\n\t// copy over all class variables/methods to the subclass, such as `extend` and `mixin`\n\tcopyOwnProps(superClass, subClass);\n\n\treturn subClass;\n}\n\n\nfunction mixIntoClass(theClass, members) {\n\tcopyOwnProps(members, theClass.prototype);\n}\n;;\n\n/*\nWrap jQuery's Deferred Promise object to be slightly more Promise/A+ compliant.\nWith the added non-standard feature of synchronously executing handlers on resolved promises,\nwhich doesn't always happen otherwise (esp with nested .then handlers!?),\nso, this makes things a lot easier, esp because jQuery 3 changed the synchronicity for Deferred objects.\n\nTODO: write tests and more comments\n*/\n\nfunction Promise(executor) {\n\tvar deferred = $.Deferred();\n\tvar promise = deferred.promise();\n\n\tif (typeof executor === 'function') {\n\t\texecutor(\n\t\t\tfunction(value) { // resolve\n\t\t\t\tif (Promise.immediate) {\n\t\t\t\t\tpromise._value = value;\n\t\t\t\t}\n\t\t\t\tdeferred.resolve(value);\n\t\t\t},\n\t\t\tfunction() { // reject\n\t\t\t\tdeferred.reject();\n\t\t\t}\n\t\t);\n\t}\n\t\n\tif (Promise.immediate) {\n\t\tvar origThen = promise.then;\n\n\t\tpromise.then = function(onFulfilled, onRejected) {\n\t\t\tvar state = promise.state();\n\t\t\t\n\t\t\tif (state === 'resolved') {\n\t\t\t\tif (typeof onFulfilled === 'function') {\n\t\t\t\t\treturn Promise.resolve(onFulfilled(promise._value));\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (state === 'rejected') {\n\t\t\t\tif (typeof onRejected === 'function') {\n\t\t\t\t\tonRejected();\n\t\t\t\t\treturn promise; // already rejected\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn origThen.call(promise, onFulfilled, onRejected);\n\t\t};\n\t}\n\n\treturn promise; // instanceof Promise will break :( TODO: make Promise a real class\n}\n\nFC.Promise = Promise;\n\nPromise.immediate = true;\n\n\nPromise.resolve = function(value) {\n\tif (value && typeof value.resolve === 'function') {\n\t\treturn value.promise();\n\t}\n\tif (value && typeof value.then === 'function') {\n\t\treturn value;\n\t}\n\telse {\n\t\tvar deferred = $.Deferred().resolve(value);\n\t\tvar promise = deferred.promise();\n\n\t\tif (Promise.immediate) {\n\t\t\tvar origThen = promise.then;\n\n\t\t\tpromise._value = value;\n\n\t\t\tpromise.then = function(onFulfilled, onRejected) {\n\t\t\t\tif (typeof onFulfilled === 'function') {\n\t\t\t\t\treturn Promise.resolve(onFulfilled(value));\n\t\t\t\t}\n\t\t\t\treturn origThen.call(promise, onFulfilled, onRejected);\n\t\t\t};\n\t\t}\n\n\t\treturn promise;\n\t}\n};\n\n\nPromise.reject = function() {\n\treturn $.Deferred().reject().promise();\n};\n\n\nPromise.all = function(inputs) {\n\tvar hasAllValues = false;\n\tvar values;\n\tvar i, input;\n\n\tif (Promise.immediate) {\n\t\thasAllValues = true;\n\t\tvalues = [];\n\n\t\tfor (i = 0; i < inputs.length; i++) {\n\t\t\tinput = inputs[i];\n\n\t\t\tif (input && typeof input.state === 'function' && input.state() === 'resolved' && ('_value' in input)) {\n\t\t\t\tvalues.push(input._value);\n\t\t\t}\n\t\t\telse if (input && typeof input.then === 'function') {\n\t\t\t\thasAllValues = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvalues.push(input);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (hasAllValues) {\n\t\treturn Promise.resolve(values);\n\t}\n\telse {\n\t\treturn $.when.apply($.when, inputs).then(function() {\n\t\t\treturn $.when($.makeArray(arguments));\n\t\t});\n\t}\n};\n\n;;\n\n// TODO: write tests and clean up code\n\nfunction TaskQueue(debounceWait) {\n\tvar q = []; // array of runFuncs\n\n\tfunction addTask(taskFunc) {\n\t\treturn new Promise(function(resolve) {\n\n\t\t\t// should run this function when it's taskFunc's turn to run.\n\t\t\t// responsible for popping itself off the queue.\n\t\t\tvar runFunc = function() {\n\t\t\t\tPromise.resolve(taskFunc()) // result might be async, coerce to promise\n\t\t\t\t\t.then(resolve) // resolve TaskQueue::push's promise, for the caller. will receive result of taskFunc.\n\t\t\t\t\t.then(function() {\n\t\t\t\t\t\tq.shift(); // pop itself off\n\n\t\t\t\t\t\t// run the next task, if any\n\t\t\t\t\t\tif (q.length) {\n\t\t\t\t\t\t\tq[0]();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t};\n\n\t\t\t// always put the task at the end of the queue, BEFORE running the task\n\t\t\tq.push(runFunc);\n\n\t\t\t// if it's the only task in the queue, run immediately\n\t\t\tif (q.length === 1) {\n\t\t\t\trunFunc();\n\t\t\t}\n\t\t});\n\t}\n\n\tthis.add = // potentially debounce, for the public method\n\t\ttypeof debounceWait === 'number' ?\n\t\t\tdebounce(addTask, debounceWait) :\n\t\t\taddTask; // if not a number (null/undefined/false), no debounce at all\n\n\tthis.addQuickly = addTask; // guaranteed no debounce\n}\n\nFC.TaskQueue = TaskQueue;\n\n/*\nq = new TaskQueue();\n\nfunction work(i) {\n\treturn q.push(function() {\n\t\ttrigger();\n\t\tconsole.log('work' + i);\n\t});\n}\n\nvar cnt = 0;\n\nfunction trigger() {\n\tif (cnt < 5) {\n\t\tcnt++;\n\t\twork(cnt);\n\t}\n}\n\nwork(9);\n*/\n\n;;\n\nvar EmitterMixin = FC.EmitterMixin = {\n\n\t// jQuery-ification via $(this) allows a non-DOM object to have\n\t// the same event handling capabilities (including namespaces).\n\n\n\ton: function(types, handler) {\n\t\t$(this).on(types, this._prepareIntercept(handler));\n\t\treturn this; // for chaining\n\t},\n\n\n\tone: function(types, handler) {\n\t\t$(this).one(types, this._prepareIntercept(handler));\n\t\treturn this; // for chaining\n\t},\n\n\n\t_prepareIntercept: function(handler) {\n\t\t// handlers are always called with an \"event\" object as their first param.\n\t\t// sneak the `this` context and arguments into the extra parameter object\n\t\t// and forward them on to the original handler.\n\t\tvar intercept = function(ev, extra) {\n\t\t\treturn handler.apply(\n\t\t\t\textra.context || this,\n\t\t\t\textra.args || []\n\t\t\t);\n\t\t};\n\n\t\t// mimick jQuery's internal \"proxy\" system (risky, I know)\n\t\t// causing all functions with the same .guid to appear to be the same.\n\t\t// https://github.com/jquery/jquery/blob/2.2.4/src/core.js#L448\n\t\t// this is needed for calling .off with the original non-intercept handler.\n\t\tif (!handler.guid) {\n\t\t\thandler.guid = $.guid++;\n\t\t}\n\t\tintercept.guid = handler.guid;\n\n\t\treturn intercept;\n\t},\n\n\n\toff: function(types, handler) {\n\t\t$(this).off(types, handler);\n\n\t\treturn this; // for chaining\n\t},\n\n\n\ttrigger: function(types) {\n\t\tvar args = Array.prototype.slice.call(arguments, 1); // arguments after the first\n\n\t\t// pass in \"extra\" info to the intercept\n\t\t$(this).triggerHandler(types, { args: args });\n\n\t\treturn this; // for chaining\n\t},\n\n\n\ttriggerWith: function(types, context, args) {\n\n\t\t// `triggerHandler` is less reliant on the DOM compared to `trigger`.\n\t\t// pass in \"extra\" info to the intercept.\n\t\t$(this).triggerHandler(types, { context: context, args: args });\n\n\t\treturn this; // for chaining\n\t}\n\n};\n\n;;\n\n/*\nUtility methods for easily listening to events on another object,\nand more importantly, easily unlistening from them.\n*/\nvar ListenerMixin = FC.ListenerMixin = (function() {\n\tvar guid = 0;\n\tvar ListenerMixin = {\n\n\t\tlistenerId: null,\n\n\t\t/*\n\t\tGiven an `other` object that has on/off methods, bind the given `callback` to an event by the given name.\n\t\tThe `callback` will be called with the `this` context of the object that .listenTo is being called on.\n\t\tCan be called:\n\t\t\t.listenTo(other, eventName, callback)\n\t\tOR\n\t\t\t.listenTo(other, {\n\t\t\t\teventName1: callback1,\n\t\t\t\teventName2: callback2\n\t\t\t})\n\t\t*/\n\t\tlistenTo: function(other, arg, callback) {\n\t\t\tif (typeof arg === 'object') { // given dictionary of callbacks\n\t\t\t\tfor (var eventName in arg) {\n\t\t\t\t\tif (arg.hasOwnProperty(eventName)) {\n\t\t\t\t\t\tthis.listenTo(other, eventName, arg[eventName]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (typeof arg === 'string') {\n\t\t\t\tother.on(\n\t\t\t\t\targ + '.' + this.getListenerNamespace(), // use event namespacing to identify this object\n\t\t\t\t\t$.proxy(callback, this) // always use `this` context\n\t\t\t\t\t\t// the usually-undesired jQuery guid behavior doesn't matter,\n\t\t\t\t\t\t// because we always unbind via namespace\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\n\t\t/*\n\t\tCauses the current object to stop listening to events on the `other` object.\n\t\t`eventName` is optional. If omitted, will stop listening to ALL events on `other`.\n\t\t*/\n\t\tstopListeningTo: function(other, eventName) {\n\t\t\tother.off((eventName || '') + '.' + this.getListenerNamespace());\n\t\t},\n\n\t\t/*\n\t\tReturns a string, unique to this object, to be used for event namespacing\n\t\t*/\n\t\tgetListenerNamespace: function() {\n\t\t\tif (this.listenerId == null) {\n\t\t\t\tthis.listenerId = guid++;\n\t\t\t}\n\t\t\treturn '_listener' + this.listenerId;\n\t\t}\n\n\t};\n\treturn ListenerMixin;\n})();\n;;\n\n/* A rectangular panel that is absolutely positioned over other content\n------------------------------------------------------------------------------------------------------------------------\nOptions:\n\t- className (string)\n\t- content (HTML string or jQuery element set)\n\t- parentEl\n\t- top\n\t- left\n\t- right (the x coord of where the right edge should be. not a \"CSS\" right)\n\t- autoHide (boolean)\n\t- show (callback)\n\t- hide (callback)\n*/\n\nvar Popover = Class.extend(ListenerMixin, {\n\n\tisHidden: true,\n\toptions: null,\n\tel: null, // the container element for the popover. generated by this object\n\tmargin: 10, // the space required between the popover and the edges of the scroll container\n\n\n\tconstructor: function(options) {\n\t\tthis.options = options || {};\n\t},\n\n\n\t// Shows the popover on the specified position. Renders it if not already\n\tshow: function() {\n\t\tif (this.isHidden) {\n\t\t\tif (!this.el) {\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t\tthis.el.show();\n\t\t\tthis.position();\n\t\t\tthis.isHidden = false;\n\t\t\tthis.trigger('show');\n\t\t}\n\t},\n\n\n\t// Hides the popover, through CSS, but does not remove it from the DOM\n\thide: function() {\n\t\tif (!this.isHidden) {\n\t\t\tthis.el.hide();\n\t\t\tthis.isHidden = true;\n\t\t\tthis.trigger('hide');\n\t\t}\n\t},\n\n\n\t// Creates `this.el` and renders content inside of it\n\trender: function() {\n\t\tvar _this = this;\n\t\tvar options = this.options;\n\n\t\tthis.el = $('
    ')\n\t\t\t.addClass(options.className || '')\n\t\t\t.css({\n\t\t\t\t// position initially to the top left to avoid creating scrollbars\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0\n\t\t\t})\n\t\t\t.append(options.content)\n\t\t\t.appendTo(options.parentEl);\n\n\t\t// when a click happens on anything inside with a 'fc-close' className, hide the popover\n\t\tthis.el.on('click', '.fc-close', function() {\n\t\t\t_this.hide();\n\t\t});\n\n\t\tif (options.autoHide) {\n\t\t\tthis.listenTo($(document), 'mousedown', this.documentMousedown);\n\t\t}\n\t},\n\n\n\t// Triggered when the user clicks *anywhere* in the document, for the autoHide feature\n\tdocumentMousedown: function(ev) {\n\t\t// only hide the popover if the click happened outside the popover\n\t\tif (this.el && !$(ev.target).closest(this.el).length) {\n\t\t\tthis.hide();\n\t\t}\n\t},\n\n\n\t// Hides and unregisters any handlers\n\tremoveElement: function() {\n\t\tthis.hide();\n\n\t\tif (this.el) {\n\t\t\tthis.el.remove();\n\t\t\tthis.el = null;\n\t\t}\n\n\t\tthis.stopListeningTo($(document), 'mousedown');\n\t},\n\n\n\t// Positions the popover optimally, using the top/left/right options\n\tposition: function() {\n\t\tvar options = this.options;\n\t\tvar origin = this.el.offsetParent().offset();\n\t\tvar width = this.el.outerWidth();\n\t\tvar height = this.el.outerHeight();\n\t\tvar windowEl = $(window);\n\t\tvar viewportEl = getScrollParent(this.el);\n\t\tvar viewportTop;\n\t\tvar viewportLeft;\n\t\tvar viewportOffset;\n\t\tvar top; // the \"position\" (not \"offset\") values for the popover\n\t\tvar left; //\n\n\t\t// compute top and left\n\t\ttop = options.top || 0;\n\t\tif (options.left !== undefined) {\n\t\t\tleft = options.left;\n\t\t}\n\t\telse if (options.right !== undefined) {\n\t\t\tleft = options.right - width; // derive the left value from the right value\n\t\t}\n\t\telse {\n\t\t\tleft = 0;\n\t\t}\n\n\t\tif (viewportEl.is(window) || viewportEl.is(document)) { // normalize getScrollParent's result\n\t\t\tviewportEl = windowEl;\n\t\t\tviewportTop = 0; // the window is always at the top left\n\t\t\tviewportLeft = 0; // (and .offset() won't work if called here)\n\t\t}\n\t\telse {\n\t\t\tviewportOffset = viewportEl.offset();\n\t\t\tviewportTop = viewportOffset.top;\n\t\t\tviewportLeft = viewportOffset.left;\n\t\t}\n\n\t\t// if the window is scrolled, it causes the visible area to be further down\n\t\tviewportTop += windowEl.scrollTop();\n\t\tviewportLeft += windowEl.scrollLeft();\n\n\t\t// constrain to the view port. if constrained by two edges, give precedence to top/left\n\t\tif (options.viewportConstrain !== false) {\n\t\t\ttop = Math.min(top, viewportTop + viewportEl.outerHeight() - height - this.margin);\n\t\t\ttop = Math.max(top, viewportTop + this.margin);\n\t\t\tleft = Math.min(left, viewportLeft + viewportEl.outerWidth() - width - this.margin);\n\t\t\tleft = Math.max(left, viewportLeft + this.margin);\n\t\t}\n\n\t\tthis.el.css({\n\t\t\ttop: top - origin.top,\n\t\t\tleft: left - origin.left\n\t\t});\n\t},\n\n\n\t// Triggers a callback. Calls a function in the option hash of the same name.\n\t// Arguments beyond the first `name` are forwarded on.\n\t// TODO: better code reuse for this. Repeat code\n\ttrigger: function(name) {\n\t\tif (this.options[name]) {\n\t\t\tthis.options[name].apply(this, Array.prototype.slice.call(arguments, 1));\n\t\t}\n\t}\n\n});\n\n;;\n\n/*\nA cache for the left/right/top/bottom/width/height values for one or more elements.\nWorks with both offset (from topleft document) and position (from offsetParent).\n\noptions:\n- els\n- isHorizontal\n- isVertical\n*/\nvar CoordCache = FC.CoordCache = Class.extend({\n\n\tels: null, // jQuery set (assumed to be siblings)\n\tforcedOffsetParentEl: null, // options can override the natural offsetParent\n\torigin: null, // {left,top} position of offsetParent of els\n\tboundingRect: null, // constrain cordinates to this rectangle. {left,right,top,bottom} or null\n\tisHorizontal: false, // whether to query for left/right/width\n\tisVertical: false, // whether to query for top/bottom/height\n\n\t// arrays of coordinates (offsets from topleft of document)\n\tlefts: null,\n\trights: null,\n\ttops: null,\n\tbottoms: null,\n\n\n\tconstructor: function(options) {\n\t\tthis.els = $(options.els);\n\t\tthis.isHorizontal = options.isHorizontal;\n\t\tthis.isVertical = options.isVertical;\n\t\tthis.forcedOffsetParentEl = options.offsetParent ? $(options.offsetParent) : null;\n\t},\n\n\n\t// Queries the els for coordinates and stores them.\n\t// Call this method before using and of the get* methods below.\n\tbuild: function() {\n\t\tvar offsetParentEl = this.forcedOffsetParentEl;\n\t\tif (!offsetParentEl && this.els.length > 0) {\n\t\t\toffsetParentEl = this.els.eq(0).offsetParent();\n\t\t}\n\n\t\tthis.origin = offsetParentEl ?\n\t\t\toffsetParentEl.offset() :\n\t\t\tnull;\n\n\t\tthis.boundingRect = this.queryBoundingRect();\n\n\t\tif (this.isHorizontal) {\n\t\t\tthis.buildElHorizontals();\n\t\t}\n\t\tif (this.isVertical) {\n\t\t\tthis.buildElVerticals();\n\t\t}\n\t},\n\n\n\t// Destroys all internal data about coordinates, freeing memory\n\tclear: function() {\n\t\tthis.origin = null;\n\t\tthis.boundingRect = null;\n\t\tthis.lefts = null;\n\t\tthis.rights = null;\n\t\tthis.tops = null;\n\t\tthis.bottoms = null;\n\t},\n\n\n\t// When called, if coord caches aren't built, builds them\n\tensureBuilt: function() {\n\t\tif (!this.origin) {\n\t\t\tthis.build();\n\t\t}\n\t},\n\n\n\t// Populates the left/right internal coordinate arrays\n\tbuildElHorizontals: function() {\n\t\tvar lefts = [];\n\t\tvar rights = [];\n\n\t\tthis.els.each(function(i, node) {\n\t\t\tvar el = $(node);\n\t\t\tvar left = el.offset().left;\n\t\t\tvar width = el.outerWidth();\n\n\t\t\tlefts.push(left);\n\t\t\trights.push(left + width);\n\t\t});\n\n\t\tthis.lefts = lefts;\n\t\tthis.rights = rights;\n\t},\n\n\n\t// Populates the top/bottom internal coordinate arrays\n\tbuildElVerticals: function() {\n\t\tvar tops = [];\n\t\tvar bottoms = [];\n\n\t\tthis.els.each(function(i, node) {\n\t\t\tvar el = $(node);\n\t\t\tvar top = el.offset().top;\n\t\t\tvar height = el.outerHeight();\n\n\t\t\ttops.push(top);\n\t\t\tbottoms.push(top + height);\n\t\t});\n\n\t\tthis.tops = tops;\n\t\tthis.bottoms = bottoms;\n\t},\n\n\n\t// Given a left offset (from document left), returns the index of the el that it horizontally intersects.\n\t// If no intersection is made, returns undefined.\n\tgetHorizontalIndex: function(leftOffset) {\n\t\tthis.ensureBuilt();\n\n\t\tvar lefts = this.lefts;\n\t\tvar rights = this.rights;\n\t\tvar len = lefts.length;\n\t\tvar i;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (leftOffset >= lefts[i] && leftOffset < rights[i]) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// Given a top offset (from document top), returns the index of the el that it vertically intersects.\n\t// If no intersection is made, returns undefined.\n\tgetVerticalIndex: function(topOffset) {\n\t\tthis.ensureBuilt();\n\n\t\tvar tops = this.tops;\n\t\tvar bottoms = this.bottoms;\n\t\tvar len = tops.length;\n\t\tvar i;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (topOffset >= tops[i] && topOffset < bottoms[i]) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// Gets the left offset (from document left) of the element at the given index\n\tgetLeftOffset: function(leftIndex) {\n\t\tthis.ensureBuilt();\n\t\treturn this.lefts[leftIndex];\n\t},\n\n\n\t// Gets the left position (from offsetParent left) of the element at the given index\n\tgetLeftPosition: function(leftIndex) {\n\t\tthis.ensureBuilt();\n\t\treturn this.lefts[leftIndex] - this.origin.left;\n\t},\n\n\n\t// Gets the right offset (from document left) of the element at the given index.\n\t// This value is NOT relative to the document's right edge, like the CSS concept of \"right\" would be.\n\tgetRightOffset: function(leftIndex) {\n\t\tthis.ensureBuilt();\n\t\treturn this.rights[leftIndex];\n\t},\n\n\n\t// Gets the right position (from offsetParent left) of the element at the given index.\n\t// This value is NOT relative to the offsetParent's right edge, like the CSS concept of \"right\" would be.\n\tgetRightPosition: function(leftIndex) {\n\t\tthis.ensureBuilt();\n\t\treturn this.rights[leftIndex] - this.origin.left;\n\t},\n\n\n\t// Gets the width of the element at the given index\n\tgetWidth: function(leftIndex) {\n\t\tthis.ensureBuilt();\n\t\treturn this.rights[leftIndex] - this.lefts[leftIndex];\n\t},\n\n\n\t// Gets the top offset (from document top) of the element at the given index\n\tgetTopOffset: function(topIndex) {\n\t\tthis.ensureBuilt();\n\t\treturn this.tops[topIndex];\n\t},\n\n\n\t// Gets the top position (from offsetParent top) of the element at the given position\n\tgetTopPosition: function(topIndex) {\n\t\tthis.ensureBuilt();\n\t\treturn this.tops[topIndex] - this.origin.top;\n\t},\n\n\t// Gets the bottom offset (from the document top) of the element at the given index.\n\t// This value is NOT relative to the offsetParent's bottom edge, like the CSS concept of \"bottom\" would be.\n\tgetBottomOffset: function(topIndex) {\n\t\tthis.ensureBuilt();\n\t\treturn this.bottoms[topIndex];\n\t},\n\n\n\t// Gets the bottom position (from the offsetParent top) of the element at the given index.\n\t// This value is NOT relative to the offsetParent's bottom edge, like the CSS concept of \"bottom\" would be.\n\tgetBottomPosition: function(topIndex) {\n\t\tthis.ensureBuilt();\n\t\treturn this.bottoms[topIndex] - this.origin.top;\n\t},\n\n\n\t// Gets the height of the element at the given index\n\tgetHeight: function(topIndex) {\n\t\tthis.ensureBuilt();\n\t\treturn this.bottoms[topIndex] - this.tops[topIndex];\n\t},\n\n\n\t// Bounding Rect\n\t// TODO: decouple this from CoordCache\n\n\t// Compute and return what the elements' bounding rectangle is, from the user's perspective.\n\t// Right now, only returns a rectangle if constrained by an overflow:scroll element.\n\t// Returns null if there are no elements\n\tqueryBoundingRect: function() {\n\t\tvar scrollParentEl;\n\n\t\tif (this.els.length > 0) {\n\t\t\tscrollParentEl = getScrollParent(this.els.eq(0));\n\n\t\t\tif (!scrollParentEl.is(document)) {\n\t\t\t\treturn getClientRect(scrollParentEl);\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t},\n\n\tisPointInBounds: function(leftOffset, topOffset) {\n\t\treturn this.isLeftInBounds(leftOffset) && this.isTopInBounds(topOffset);\n\t},\n\n\tisLeftInBounds: function(leftOffset) {\n\t\treturn !this.boundingRect || (leftOffset >= this.boundingRect.left && leftOffset < this.boundingRect.right);\n\t},\n\n\tisTopInBounds: function(topOffset) {\n\t\treturn !this.boundingRect || (topOffset >= this.boundingRect.top && topOffset < this.boundingRect.bottom);\n\t}\n\n});\n\n;;\n\n/* Tracks a drag's mouse movement, firing various handlers\n----------------------------------------------------------------------------------------------------------------------*/\n// TODO: use Emitter\n\nvar DragListener = FC.DragListener = Class.extend(ListenerMixin, {\n\n\toptions: null,\n\tsubjectEl: null,\n\n\t// coordinates of the initial mousedown\n\toriginX: null,\n\toriginY: null,\n\n\t// the wrapping element that scrolls, or MIGHT scroll if there's overflow.\n\t// TODO: do this for wrappers that have overflow:hidden as well.\n\tscrollEl: null,\n\n\tisInteracting: false,\n\tisDistanceSurpassed: false,\n\tisDelayEnded: false,\n\tisDragging: false,\n\tisTouch: false,\n\n\tdelay: null,\n\tdelayTimeoutId: null,\n\tminDistance: null,\n\n\tshouldCancelTouchScroll: true,\n\tscrollAlwaysKills: false,\n\n\n\tconstructor: function(options) {\n\t\tthis.options = options || {};\n\t},\n\n\n\t// Interaction (high-level)\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\tstartInteraction: function(ev, extraOptions) {\n\t\tvar isTouch = getEvIsTouch(ev);\n\n\t\tif (ev.type === 'mousedown') {\n\t\t\tif (GlobalEmitter.get().shouldIgnoreMouse()) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if (!isPrimaryMouseButton(ev)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tev.preventDefault(); // prevents native selection in most browsers\n\t\t\t}\n\t\t}\n\n\t\tif (!this.isInteracting) {\n\n\t\t\t// process options\n\t\t\textraOptions = extraOptions || {};\n\t\t\tthis.delay = firstDefined(extraOptions.delay, this.options.delay, 0);\n\t\t\tthis.minDistance = firstDefined(extraOptions.distance, this.options.distance, 0);\n\t\t\tthis.subjectEl = this.options.subjectEl;\n\n\t\t\tpreventSelection($('body'));\n\n\t\t\tthis.isInteracting = true;\n\t\t\tthis.isTouch = isTouch;\n\t\t\tthis.isDelayEnded = false;\n\t\t\tthis.isDistanceSurpassed = false;\n\n\t\t\tthis.originX = getEvX(ev);\n\t\t\tthis.originY = getEvY(ev);\n\t\t\tthis.scrollEl = getScrollParent($(ev.target));\n\n\t\t\tthis.bindHandlers();\n\t\t\tthis.initAutoScroll();\n\t\t\tthis.handleInteractionStart(ev);\n\t\t\tthis.startDelay(ev);\n\n\t\t\tif (!this.minDistance) {\n\t\t\t\tthis.handleDistanceSurpassed(ev);\n\t\t\t}\n\t\t}\n\t},\n\n\n\thandleInteractionStart: function(ev) {\n\t\tthis.trigger('interactionStart', ev);\n\t},\n\n\n\tendInteraction: function(ev, isCancelled) {\n\t\tif (this.isInteracting) {\n\t\t\tthis.endDrag(ev);\n\n\t\t\tif (this.delayTimeoutId) {\n\t\t\t\tclearTimeout(this.delayTimeoutId);\n\t\t\t\tthis.delayTimeoutId = null;\n\t\t\t}\n\n\t\t\tthis.destroyAutoScroll();\n\t\t\tthis.unbindHandlers();\n\n\t\t\tthis.isInteracting = false;\n\t\t\tthis.handleInteractionEnd(ev, isCancelled);\n\n\t\t\tallowSelection($('body'));\n\t\t}\n\t},\n\n\n\thandleInteractionEnd: function(ev, isCancelled) {\n\t\tthis.trigger('interactionEnd', ev, isCancelled || false);\n\t},\n\n\n\t// Binding To DOM\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\tbindHandlers: function() {\n\t\t// some browsers (Safari in iOS 10) don't allow preventDefault on touch events that are bound after touchstart,\n\t\t// so listen to the GlobalEmitter singleton, which is always bound, instead of the document directly.\n\t\tvar globalEmitter = GlobalEmitter.get();\n\n\t\tif (this.isTouch) {\n\t\t\tthis.listenTo(globalEmitter, {\n\t\t\t\ttouchmove: this.handleTouchMove,\n\t\t\t\ttouchend: this.endInteraction,\n\t\t\t\tscroll: this.handleTouchScroll\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tthis.listenTo(globalEmitter, {\n\t\t\t\tmousemove: this.handleMouseMove,\n\t\t\t\tmouseup: this.endInteraction\n\t\t\t});\n\t\t}\n\n\t\tthis.listenTo(globalEmitter, {\n\t\t\tselectstart: preventDefault, // don't allow selection while dragging\n\t\t\tcontextmenu: preventDefault // long taps would open menu on Chrome dev tools\n\t\t});\n\t},\n\n\n\tunbindHandlers: function() {\n\t\tthis.stopListeningTo(GlobalEmitter.get());\n\t},\n\n\n\t// Drag (high-level)\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\t// extraOptions ignored if drag already started\n\tstartDrag: function(ev, extraOptions) {\n\t\tthis.startInteraction(ev, extraOptions); // ensure interaction began\n\n\t\tif (!this.isDragging) {\n\t\t\tthis.isDragging = true;\n\t\t\tthis.handleDragStart(ev);\n\t\t}\n\t},\n\n\n\thandleDragStart: function(ev) {\n\t\tthis.trigger('dragStart', ev);\n\t},\n\n\n\thandleMove: function(ev) {\n\t\tvar dx = getEvX(ev) - this.originX;\n\t\tvar dy = getEvY(ev) - this.originY;\n\t\tvar minDistance = this.minDistance;\n\t\tvar distanceSq; // current distance from the origin, squared\n\n\t\tif (!this.isDistanceSurpassed) {\n\t\t\tdistanceSq = dx * dx + dy * dy;\n\t\t\tif (distanceSq >= minDistance * minDistance) { // use pythagorean theorem\n\t\t\t\tthis.handleDistanceSurpassed(ev);\n\t\t\t}\n\t\t}\n\n\t\tif (this.isDragging) {\n\t\t\tthis.handleDrag(dx, dy, ev);\n\t\t}\n\t},\n\n\n\t// Called while the mouse is being moved and when we know a legitimate drag is taking place\n\thandleDrag: function(dx, dy, ev) {\n\t\tthis.trigger('drag', dx, dy, ev);\n\t\tthis.updateAutoScroll(ev); // will possibly cause scrolling\n\t},\n\n\n\tendDrag: function(ev) {\n\t\tif (this.isDragging) {\n\t\t\tthis.isDragging = false;\n\t\t\tthis.handleDragEnd(ev);\n\t\t}\n\t},\n\n\n\thandleDragEnd: function(ev) {\n\t\tthis.trigger('dragEnd', ev);\n\t},\n\n\n\t// Delay\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\tstartDelay: function(initialEv) {\n\t\tvar _this = this;\n\n\t\tif (this.delay) {\n\t\t\tthis.delayTimeoutId = setTimeout(function() {\n\t\t\t\t_this.handleDelayEnd(initialEv);\n\t\t\t}, this.delay);\n\t\t}\n\t\telse {\n\t\t\tthis.handleDelayEnd(initialEv);\n\t\t}\n\t},\n\n\n\thandleDelayEnd: function(initialEv) {\n\t\tthis.isDelayEnded = true;\n\n\t\tif (this.isDistanceSurpassed) {\n\t\t\tthis.startDrag(initialEv);\n\t\t}\n\t},\n\n\n\t// Distance\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\thandleDistanceSurpassed: function(ev) {\n\t\tthis.isDistanceSurpassed = true;\n\n\t\tif (this.isDelayEnded) {\n\t\t\tthis.startDrag(ev);\n\t\t}\n\t},\n\n\n\t// Mouse / Touch\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\thandleTouchMove: function(ev) {\n\n\t\t// prevent inertia and touchmove-scrolling while dragging\n\t\tif (this.isDragging && this.shouldCancelTouchScroll) {\n\t\t\tev.preventDefault();\n\t\t}\n\n\t\tthis.handleMove(ev);\n\t},\n\n\n\thandleMouseMove: function(ev) {\n\t\tthis.handleMove(ev);\n\t},\n\n\n\t// Scrolling (unrelated to auto-scroll)\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\thandleTouchScroll: function(ev) {\n\t\t// if the drag is being initiated by touch, but a scroll happens before\n\t\t// the drag-initiating delay is over, cancel the drag\n\t\tif (!this.isDragging || this.scrollAlwaysKills) {\n\t\t\tthis.endInteraction(ev, true); // isCancelled=true\n\t\t}\n\t},\n\n\n\t// Utils\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\t// Triggers a callback. Calls a function in the option hash of the same name.\n\t// Arguments beyond the first `name` are forwarded on.\n\ttrigger: function(name) {\n\t\tif (this.options[name]) {\n\t\t\tthis.options[name].apply(this, Array.prototype.slice.call(arguments, 1));\n\t\t}\n\t\t// makes _methods callable by event name. TODO: kill this\n\t\tif (this['_' + name]) {\n\t\t\tthis['_' + name].apply(this, Array.prototype.slice.call(arguments, 1));\n\t\t}\n\t}\n\n\n});\n\n;;\n/*\nthis.scrollEl is set in DragListener\n*/\nDragListener.mixin({\n\n\tisAutoScroll: false,\n\n\tscrollBounds: null, // { top, bottom, left, right }\n\tscrollTopVel: null, // pixels per second\n\tscrollLeftVel: null, // pixels per second\n\tscrollIntervalId: null, // ID of setTimeout for scrolling animation loop\n\n\t// defaults\n\tscrollSensitivity: 30, // pixels from edge for scrolling to start\n\tscrollSpeed: 200, // pixels per second, at maximum speed\n\tscrollIntervalMs: 50, // millisecond wait between scroll increment\n\n\n\tinitAutoScroll: function() {\n\t\tvar scrollEl = this.scrollEl;\n\n\t\tthis.isAutoScroll =\n\t\t\tthis.options.scroll &&\n\t\t\tscrollEl &&\n\t\t\t!scrollEl.is(window) &&\n\t\t\t!scrollEl.is(document);\n\n\t\tif (this.isAutoScroll) {\n\t\t\t// debounce makes sure rapid calls don't happen\n\t\t\tthis.listenTo(scrollEl, 'scroll', debounce(this.handleDebouncedScroll, 100));\n\t\t}\n\t},\n\n\n\tdestroyAutoScroll: function() {\n\t\tthis.endAutoScroll(); // kill any animation loop\n\n\t\t// remove the scroll handler if there is a scrollEl\n\t\tif (this.isAutoScroll) {\n\t\t\tthis.stopListeningTo(this.scrollEl, 'scroll'); // will probably get removed by unbindHandlers too :(\n\t\t}\n\t},\n\n\n\t// Computes and stores the bounding rectangle of scrollEl\n\tcomputeScrollBounds: function() {\n\t\tif (this.isAutoScroll) {\n\t\t\tthis.scrollBounds = getOuterRect(this.scrollEl);\n\t\t\t// TODO: use getClientRect in future. but prevents auto scrolling when on top of scrollbars\n\t\t}\n\t},\n\n\n\t// Called when the dragging is in progress and scrolling should be updated\n\tupdateAutoScroll: function(ev) {\n\t\tvar sensitivity = this.scrollSensitivity;\n\t\tvar bounds = this.scrollBounds;\n\t\tvar topCloseness, bottomCloseness;\n\t\tvar leftCloseness, rightCloseness;\n\t\tvar topVel = 0;\n\t\tvar leftVel = 0;\n\n\t\tif (bounds) { // only scroll if scrollEl exists\n\n\t\t\t// compute closeness to edges. valid range is from 0.0 - 1.0\n\t\t\ttopCloseness = (sensitivity - (getEvY(ev) - bounds.top)) / sensitivity;\n\t\t\tbottomCloseness = (sensitivity - (bounds.bottom - getEvY(ev))) / sensitivity;\n\t\t\tleftCloseness = (sensitivity - (getEvX(ev) - bounds.left)) / sensitivity;\n\t\t\trightCloseness = (sensitivity - (bounds.right - getEvX(ev))) / sensitivity;\n\n\t\t\t// translate vertical closeness into velocity.\n\t\t\t// mouse must be completely in bounds for velocity to happen.\n\t\t\tif (topCloseness >= 0 && topCloseness <= 1) {\n\t\t\t\ttopVel = topCloseness * this.scrollSpeed * -1; // negative. for scrolling up\n\t\t\t}\n\t\t\telse if (bottomCloseness >= 0 && bottomCloseness <= 1) {\n\t\t\t\ttopVel = bottomCloseness * this.scrollSpeed;\n\t\t\t}\n\n\t\t\t// translate horizontal closeness into velocity\n\t\t\tif (leftCloseness >= 0 && leftCloseness <= 1) {\n\t\t\t\tleftVel = leftCloseness * this.scrollSpeed * -1; // negative. for scrolling left\n\t\t\t}\n\t\t\telse if (rightCloseness >= 0 && rightCloseness <= 1) {\n\t\t\t\tleftVel = rightCloseness * this.scrollSpeed;\n\t\t\t}\n\t\t}\n\n\t\tthis.setScrollVel(topVel, leftVel);\n\t},\n\n\n\t// Sets the speed-of-scrolling for the scrollEl\n\tsetScrollVel: function(topVel, leftVel) {\n\n\t\tthis.scrollTopVel = topVel;\n\t\tthis.scrollLeftVel = leftVel;\n\n\t\tthis.constrainScrollVel(); // massages into realistic values\n\n\t\t// if there is non-zero velocity, and an animation loop hasn't already started, then START\n\t\tif ((this.scrollTopVel || this.scrollLeftVel) && !this.scrollIntervalId) {\n\t\t\tthis.scrollIntervalId = setInterval(\n\t\t\t\tproxy(this, 'scrollIntervalFunc'), // scope to `this`\n\t\t\t\tthis.scrollIntervalMs\n\t\t\t);\n\t\t}\n\t},\n\n\n\t// Forces scrollTopVel and scrollLeftVel to be zero if scrolling has already gone all the way\n\tconstrainScrollVel: function() {\n\t\tvar el = this.scrollEl;\n\n\t\tif (this.scrollTopVel < 0) { // scrolling up?\n\t\t\tif (el.scrollTop() <= 0) { // already scrolled all the way up?\n\t\t\t\tthis.scrollTopVel = 0;\n\t\t\t}\n\t\t}\n\t\telse if (this.scrollTopVel > 0) { // scrolling down?\n\t\t\tif (el.scrollTop() + el[0].clientHeight >= el[0].scrollHeight) { // already scrolled all the way down?\n\t\t\t\tthis.scrollTopVel = 0;\n\t\t\t}\n\t\t}\n\n\t\tif (this.scrollLeftVel < 0) { // scrolling left?\n\t\t\tif (el.scrollLeft() <= 0) { // already scrolled all the left?\n\t\t\t\tthis.scrollLeftVel = 0;\n\t\t\t}\n\t\t}\n\t\telse if (this.scrollLeftVel > 0) { // scrolling right?\n\t\t\tif (el.scrollLeft() + el[0].clientWidth >= el[0].scrollWidth) { // already scrolled all the way right?\n\t\t\t\tthis.scrollLeftVel = 0;\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// This function gets called during every iteration of the scrolling animation loop\n\tscrollIntervalFunc: function() {\n\t\tvar el = this.scrollEl;\n\t\tvar frac = this.scrollIntervalMs / 1000; // considering animation frequency, what the vel should be mult'd by\n\n\t\t// change the value of scrollEl's scroll\n\t\tif (this.scrollTopVel) {\n\t\t\tel.scrollTop(el.scrollTop() + this.scrollTopVel * frac);\n\t\t}\n\t\tif (this.scrollLeftVel) {\n\t\t\tel.scrollLeft(el.scrollLeft() + this.scrollLeftVel * frac);\n\t\t}\n\n\t\tthis.constrainScrollVel(); // since the scroll values changed, recompute the velocities\n\n\t\t// if scrolled all the way, which causes the vels to be zero, stop the animation loop\n\t\tif (!this.scrollTopVel && !this.scrollLeftVel) {\n\t\t\tthis.endAutoScroll();\n\t\t}\n\t},\n\n\n\t// Kills any existing scrolling animation loop\n\tendAutoScroll: function() {\n\t\tif (this.scrollIntervalId) {\n\t\t\tclearInterval(this.scrollIntervalId);\n\t\t\tthis.scrollIntervalId = null;\n\n\t\t\tthis.handleScrollEnd();\n\t\t}\n\t},\n\n\n\t// Get called when the scrollEl is scrolled (NOTE: this is delayed via debounce)\n\thandleDebouncedScroll: function() {\n\t\t// recompute all coordinates, but *only* if this is *not* part of our scrolling animation\n\t\tif (!this.scrollIntervalId) {\n\t\t\tthis.handleScrollEnd();\n\t\t}\n\t},\n\n\n\t// Called when scrolling has stopped, whether through auto scroll, or the user scrolling\n\thandleScrollEnd: function() {\n\t}\n\n});\n;;\n\n/* Tracks mouse movements over a component and raises events about which hit the mouse is over.\n------------------------------------------------------------------------------------------------------------------------\noptions:\n- subjectEl\n- subjectCenter\n*/\n\nvar HitDragListener = DragListener.extend({\n\n\tcomponent: null, // converts coordinates to hits\n\t\t// methods: hitsNeeded, hitsNotNeeded, queryHit\n\n\torigHit: null, // the hit the mouse was over when listening started\n\thit: null, // the hit the mouse is over\n\tcoordAdjust: null, // delta that will be added to the mouse coordinates when computing collisions\n\n\n\tconstructor: function(component, options) {\n\t\tDragListener.call(this, options); // call the super-constructor\n\n\t\tthis.component = component;\n\t},\n\n\n\t// Called when drag listening starts (but a real drag has not necessarily began).\n\t// ev might be undefined if dragging was started manually.\n\thandleInteractionStart: function(ev) {\n\t\tvar subjectEl = this.subjectEl;\n\t\tvar subjectRect;\n\t\tvar origPoint;\n\t\tvar point;\n\n\t\tthis.component.hitsNeeded();\n\t\tthis.computeScrollBounds(); // for autoscroll\n\n\t\tif (ev) {\n\t\t\torigPoint = { left: getEvX(ev), top: getEvY(ev) };\n\t\t\tpoint = origPoint;\n\n\t\t\t// constrain the point to bounds of the element being dragged\n\t\t\tif (subjectEl) {\n\t\t\t\tsubjectRect = getOuterRect(subjectEl); // used for centering as well\n\t\t\t\tpoint = constrainPoint(point, subjectRect);\n\t\t\t}\n\n\t\t\tthis.origHit = this.queryHit(point.left, point.top);\n\n\t\t\t// treat the center of the subject as the collision point?\n\t\t\tif (subjectEl && this.options.subjectCenter) {\n\n\t\t\t\t// only consider the area the subject overlaps the hit. best for large subjects.\n\t\t\t\t// TODO: skip this if hit didn't supply left/right/top/bottom\n\t\t\t\tif (this.origHit) {\n\t\t\t\t\tsubjectRect = intersectRects(this.origHit, subjectRect) ||\n\t\t\t\t\t\tsubjectRect; // in case there is no intersection\n\t\t\t\t}\n\n\t\t\t\tpoint = getRectCenter(subjectRect);\n\t\t\t}\n\n\t\t\tthis.coordAdjust = diffPoints(point, origPoint); // point - origPoint\n\t\t}\n\t\telse {\n\t\t\tthis.origHit = null;\n\t\t\tthis.coordAdjust = null;\n\t\t}\n\n\t\t// call the super-method. do it after origHit has been computed\n\t\tDragListener.prototype.handleInteractionStart.apply(this, arguments);\n\t},\n\n\n\t// Called when the actual drag has started\n\thandleDragStart: function(ev) {\n\t\tvar hit;\n\n\t\tDragListener.prototype.handleDragStart.apply(this, arguments); // call the super-method\n\n\t\t// might be different from this.origHit if the min-distance is large\n\t\thit = this.queryHit(getEvX(ev), getEvY(ev));\n\n\t\t// report the initial hit the mouse is over\n\t\t// especially important if no min-distance and drag starts immediately\n\t\tif (hit) {\n\t\t\tthis.handleHitOver(hit);\n\t\t}\n\t},\n\n\n\t// Called when the drag moves\n\thandleDrag: function(dx, dy, ev) {\n\t\tvar hit;\n\n\t\tDragListener.prototype.handleDrag.apply(this, arguments); // call the super-method\n\n\t\thit = this.queryHit(getEvX(ev), getEvY(ev));\n\n\t\tif (!isHitsEqual(hit, this.hit)) { // a different hit than before?\n\t\t\tif (this.hit) {\n\t\t\t\tthis.handleHitOut();\n\t\t\t}\n\t\t\tif (hit) {\n\t\t\t\tthis.handleHitOver(hit);\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// Called when dragging has been stopped\n\thandleDragEnd: function() {\n\t\tthis.handleHitDone();\n\t\tDragListener.prototype.handleDragEnd.apply(this, arguments); // call the super-method\n\t},\n\n\n\t// Called when a the mouse has just moved over a new hit\n\thandleHitOver: function(hit) {\n\t\tvar isOrig = isHitsEqual(hit, this.origHit);\n\n\t\tthis.hit = hit;\n\n\t\tthis.trigger('hitOver', this.hit, isOrig, this.origHit);\n\t},\n\n\n\t// Called when the mouse has just moved out of a hit\n\thandleHitOut: function() {\n\t\tif (this.hit) {\n\t\t\tthis.trigger('hitOut', this.hit);\n\t\t\tthis.handleHitDone();\n\t\t\tthis.hit = null;\n\t\t}\n\t},\n\n\n\t// Called after a hitOut. Also called before a dragStop\n\thandleHitDone: function() {\n\t\tif (this.hit) {\n\t\t\tthis.trigger('hitDone', this.hit);\n\t\t}\n\t},\n\n\n\t// Called when the interaction ends, whether there was a real drag or not\n\thandleInteractionEnd: function() {\n\t\tDragListener.prototype.handleInteractionEnd.apply(this, arguments); // call the super-method\n\n\t\tthis.origHit = null;\n\t\tthis.hit = null;\n\n\t\tthis.component.hitsNotNeeded();\n\t},\n\n\n\t// Called when scrolling has stopped, whether through auto scroll, or the user scrolling\n\thandleScrollEnd: function() {\n\t\tDragListener.prototype.handleScrollEnd.apply(this, arguments); // call the super-method\n\n\t\t// hits' absolute positions will be in new places after a user's scroll.\n\t\t// HACK for recomputing.\n\t\tif (this.isDragging) {\n\t\t\tthis.component.releaseHits();\n\t\t\tthis.component.prepareHits();\n\t\t}\n\t},\n\n\n\t// Gets the hit underneath the coordinates for the given mouse event\n\tqueryHit: function(left, top) {\n\n\t\tif (this.coordAdjust) {\n\t\t\tleft += this.coordAdjust.left;\n\t\t\ttop += this.coordAdjust.top;\n\t\t}\n\n\t\treturn this.component.queryHit(left, top);\n\t}\n\n});\n\n\n// Returns `true` if the hits are identically equal. `false` otherwise. Must be from the same component.\n// Two null values will be considered equal, as two \"out of the component\" states are the same.\nfunction isHitsEqual(hit0, hit1) {\n\n\tif (!hit0 && !hit1) {\n\t\treturn true;\n\t}\n\n\tif (hit0 && hit1) {\n\t\treturn hit0.component === hit1.component &&\n\t\t\tisHitPropsWithin(hit0, hit1) &&\n\t\t\tisHitPropsWithin(hit1, hit0); // ensures all props are identical\n\t}\n\n\treturn false;\n}\n\n\n// Returns true if all of subHit's non-standard properties are within superHit\nfunction isHitPropsWithin(subHit, superHit) {\n\tfor (var propName in subHit) {\n\t\tif (!/^(component|left|right|top|bottom)$/.test(propName)) {\n\t\t\tif (subHit[propName] !== superHit[propName]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n\n;;\n\n/*\nListens to document and window-level user-interaction events, like touch events and mouse events,\nand fires these events as-is to whoever is observing a GlobalEmitter.\nBest when used as a singleton via GlobalEmitter.get()\n\nNormalizes mouse/touch events. For examples:\n- ignores the the simulated mouse events that happen after a quick tap: mousemove+mousedown+mouseup+click\n- compensates for various buggy scenarios where a touchend does not fire\n*/\n\nFC.touchMouseIgnoreWait = 500;\n\nvar GlobalEmitter = Class.extend(ListenerMixin, EmitterMixin, {\n\n\tisTouching: false,\n\tmouseIgnoreDepth: 0,\n\thandleScrollProxy: null,\n\n\n\tbind: function() {\n\t\tvar _this = this;\n\n\t\tthis.listenTo($(document), {\n\t\t\ttouchstart: this.handleTouchStart,\n\t\t\ttouchcancel: this.handleTouchCancel,\n\t\t\ttouchend: this.handleTouchEnd,\n\t\t\tmousedown: this.handleMouseDown,\n\t\t\tmousemove: this.handleMouseMove,\n\t\t\tmouseup: this.handleMouseUp,\n\t\t\tclick: this.handleClick,\n\t\t\tselectstart: this.handleSelectStart,\n\t\t\tcontextmenu: this.handleContextMenu\n\t\t});\n\n\t\t// because we need to call preventDefault\n\t\t// because https://www.chromestatus.com/features/5093566007214080\n\t\t// TODO: investigate performance because this is a global handler\n\t\twindow.addEventListener(\n\t\t\t'touchmove',\n\t\t\tthis.handleTouchMoveProxy = function(ev) {\n\t\t\t\t_this.handleTouchMove($.Event(ev));\n\t\t\t},\n\t\t\t{ passive: false } // allows preventDefault()\n\t\t);\n\n\t\t// attach a handler to get called when ANY scroll action happens on the page.\n\t\t// this was impossible to do with normal on/off because 'scroll' doesn't bubble.\n\t\t// http://stackoverflow.com/a/32954565/96342\n\t\twindow.addEventListener(\n\t\t\t'scroll',\n\t\t\tthis.handleScrollProxy = function(ev) {\n\t\t\t\t_this.handleScroll($.Event(ev));\n\t\t\t},\n\t\t\ttrue // useCapture\n\t\t);\n\t},\n\n\tunbind: function() {\n\t\tthis.stopListeningTo($(document));\n\n\t\twindow.removeEventListener(\n\t\t\t'touchmove',\n\t\t\tthis.handleTouchMoveProxy\n\t\t);\n\n\t\twindow.removeEventListener(\n\t\t\t'scroll',\n\t\t\tthis.handleScrollProxy,\n\t\t\ttrue // useCapture\n\t\t);\n\t},\n\n\n\t// Touch Handlers\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\thandleTouchStart: function(ev) {\n\n\t\t// if a previous touch interaction never ended with a touchend, then implicitly end it,\n\t\t// but since a new touch interaction is about to begin, don't start the mouse ignore period.\n\t\tthis.stopTouch(ev, true); // skipMouseIgnore=true\n\n\t\tthis.isTouching = true;\n\t\tthis.trigger('touchstart', ev);\n\t},\n\n\thandleTouchMove: function(ev) {\n\t\tif (this.isTouching) {\n\t\t\tthis.trigger('touchmove', ev);\n\t\t}\n\t},\n\n\thandleTouchCancel: function(ev) {\n\t\tif (this.isTouching) {\n\t\t\tthis.trigger('touchcancel', ev);\n\n\t\t\t// Have touchcancel fire an artificial touchend. That way, handlers won't need to listen to both.\n\t\t\t// If touchend fires later, it won't have any effect b/c isTouching will be false.\n\t\t\tthis.stopTouch(ev);\n\t\t}\n\t},\n\n\thandleTouchEnd: function(ev) {\n\t\tthis.stopTouch(ev);\n\t},\n\n\n\t// Mouse Handlers\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\thandleMouseDown: function(ev) {\n\t\tif (!this.shouldIgnoreMouse()) {\n\t\t\tthis.trigger('mousedown', ev);\n\t\t}\n\t},\n\n\thandleMouseMove: function(ev) {\n\t\tif (!this.shouldIgnoreMouse()) {\n\t\t\tthis.trigger('mousemove', ev);\n\t\t}\n\t},\n\n\thandleMouseUp: function(ev) {\n\t\tif (!this.shouldIgnoreMouse()) {\n\t\t\tthis.trigger('mouseup', ev);\n\t\t}\n\t},\n\n\thandleClick: function(ev) {\n\t\tif (!this.shouldIgnoreMouse()) {\n\t\t\tthis.trigger('click', ev);\n\t\t}\n\t},\n\n\n\t// Misc Handlers\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\thandleSelectStart: function(ev) {\n\t\tthis.trigger('selectstart', ev);\n\t},\n\n\thandleContextMenu: function(ev) {\n\t\tthis.trigger('contextmenu', ev);\n\t},\n\n\thandleScroll: function(ev) {\n\t\tthis.trigger('scroll', ev);\n\t},\n\n\n\t// Utils\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\tstopTouch: function(ev, skipMouseIgnore) {\n\t\tif (this.isTouching) {\n\t\t\tthis.isTouching = false;\n\t\t\tthis.trigger('touchend', ev);\n\n\t\t\tif (!skipMouseIgnore) {\n\t\t\t\tthis.startTouchMouseIgnore();\n\t\t\t}\n\t\t}\n\t},\n\n\tstartTouchMouseIgnore: function() {\n\t\tvar _this = this;\n\t\tvar wait = FC.touchMouseIgnoreWait;\n\n\t\tif (wait) {\n\t\t\tthis.mouseIgnoreDepth++;\n\t\t\tsetTimeout(function() {\n\t\t\t\t_this.mouseIgnoreDepth--;\n\t\t\t}, wait);\n\t\t}\n\t},\n\n\tshouldIgnoreMouse: function() {\n\t\treturn this.isTouching || Boolean(this.mouseIgnoreDepth);\n\t}\n\n});\n\n\n// Singleton\n// ---------------------------------------------------------------------------------------------------------------------\n\n(function() {\n\tvar globalEmitter = null;\n\tvar neededCount = 0;\n\n\n\t// gets the singleton\n\tGlobalEmitter.get = function() {\n\n\t\tif (!globalEmitter) {\n\t\t\tglobalEmitter = new GlobalEmitter();\n\t\t\tglobalEmitter.bind();\n\t\t}\n\n\t\treturn globalEmitter;\n\t};\n\n\n\t// called when an object knows it will need a GlobalEmitter in the near future.\n\tGlobalEmitter.needed = function() {\n\t\tGlobalEmitter.get(); // ensures globalEmitter\n\t\tneededCount++;\n\t};\n\n\n\t// called when the object that originally called needed() doesn't need a GlobalEmitter anymore.\n\tGlobalEmitter.unneeded = function() {\n\t\tneededCount--;\n\n\t\tif (!neededCount) { // nobody else needs it\n\t\t\tglobalEmitter.unbind();\n\t\t\tglobalEmitter = null;\n\t\t}\n\t};\n\n})();\n\n;;\n\n/* Creates a clone of an element and lets it track the mouse as it moves\n----------------------------------------------------------------------------------------------------------------------*/\n\nvar MouseFollower = Class.extend(ListenerMixin, {\n\n\toptions: null,\n\n\tsourceEl: null, // the element that will be cloned and made to look like it is dragging\n\tel: null, // the clone of `sourceEl` that will track the mouse\n\tparentEl: null, // the element that `el` (the clone) will be attached to\n\n\t// the initial position of el, relative to the offset parent. made to match the initial offset of sourceEl\n\ttop0: null,\n\tleft0: null,\n\n\t// the absolute coordinates of the initiating touch/mouse action\n\ty0: null,\n\tx0: null,\n\n\t// the number of pixels the mouse has moved from its initial position\n\ttopDelta: null,\n\tleftDelta: null,\n\n\tisFollowing: false,\n\tisHidden: false,\n\tisAnimating: false, // doing the revert animation?\n\n\tconstructor: function(sourceEl, options) {\n\t\tthis.options = options = options || {};\n\t\tthis.sourceEl = sourceEl;\n\t\tthis.parentEl = options.parentEl ? $(options.parentEl) : sourceEl.parent(); // default to sourceEl's parent\n\t},\n\n\n\t// Causes the element to start following the mouse\n\tstart: function(ev) {\n\t\tif (!this.isFollowing) {\n\t\t\tthis.isFollowing = true;\n\n\t\t\tthis.y0 = getEvY(ev);\n\t\t\tthis.x0 = getEvX(ev);\n\t\t\tthis.topDelta = 0;\n\t\t\tthis.leftDelta = 0;\n\n\t\t\tif (!this.isHidden) {\n\t\t\t\tthis.updatePosition();\n\t\t\t}\n\n\t\t\tif (getEvIsTouch(ev)) {\n\t\t\t\tthis.listenTo($(document), 'touchmove', this.handleMove);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.listenTo($(document), 'mousemove', this.handleMove);\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// Causes the element to stop following the mouse. If shouldRevert is true, will animate back to original position.\n\t// `callback` gets invoked when the animation is complete. If no animation, it is invoked immediately.\n\tstop: function(shouldRevert, callback) {\n\t\tvar _this = this;\n\t\tvar revertDuration = this.options.revertDuration;\n\n\t\tfunction complete() { // might be called by .animate(), which might change `this` context\n\t\t\t_this.isAnimating = false;\n\t\t\t_this.removeElement();\n\n\t\t\t_this.top0 = _this.left0 = null; // reset state for future updatePosition calls\n\n\t\t\tif (callback) {\n\t\t\t\tcallback();\n\t\t\t}\n\t\t}\n\n\t\tif (this.isFollowing && !this.isAnimating) { // disallow more than one stop animation at a time\n\t\t\tthis.isFollowing = false;\n\n\t\t\tthis.stopListeningTo($(document));\n\n\t\t\tif (shouldRevert && revertDuration && !this.isHidden) { // do a revert animation?\n\t\t\t\tthis.isAnimating = true;\n\t\t\t\tthis.el.animate({\n\t\t\t\t\ttop: this.top0,\n\t\t\t\t\tleft: this.left0\n\t\t\t\t}, {\n\t\t\t\t\tduration: revertDuration,\n\t\t\t\t\tcomplete: complete\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tcomplete();\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// Gets the tracking element. Create it if necessary\n\tgetEl: function() {\n\t\tvar el = this.el;\n\n\t\tif (!el) {\n\t\t\tel = this.el = this.sourceEl.clone()\n\t\t\t\t.addClass(this.options.additionalClass || '')\n\t\t\t\t.css({\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\tvisibility: '', // in case original element was hidden (commonly through hideEvents())\n\t\t\t\t\tdisplay: this.isHidden ? 'none' : '', // for when initially hidden\n\t\t\t\t\tmargin: 0,\n\t\t\t\t\tright: 'auto', // erase and set width instead\n\t\t\t\t\tbottom: 'auto', // erase and set height instead\n\t\t\t\t\twidth: this.sourceEl.width(), // explicit height in case there was a 'right' value\n\t\t\t\t\theight: this.sourceEl.height(), // explicit width in case there was a 'bottom' value\n\t\t\t\t\topacity: this.options.opacity || '',\n\t\t\t\t\tzIndex: this.options.zIndex\n\t\t\t\t});\n\n\t\t\t// we don't want long taps or any mouse interaction causing selection/menus.\n\t\t\t// would use preventSelection(), but that prevents selectstart, causing problems.\n\t\t\tel.addClass('fc-unselectable');\n\n\t\t\tel.appendTo(this.parentEl);\n\t\t}\n\n\t\treturn el;\n\t},\n\n\n\t// Removes the tracking element if it has already been created\n\tremoveElement: function() {\n\t\tif (this.el) {\n\t\t\tthis.el.remove();\n\t\t\tthis.el = null;\n\t\t}\n\t},\n\n\n\t// Update the CSS position of the tracking element\n\tupdatePosition: function() {\n\t\tvar sourceOffset;\n\t\tvar origin;\n\n\t\tthis.getEl(); // ensure this.el\n\n\t\t// make sure origin info was computed\n\t\tif (this.top0 === null) {\n\t\t\tsourceOffset = this.sourceEl.offset();\n\t\t\torigin = this.el.offsetParent().offset();\n\t\t\tthis.top0 = sourceOffset.top - origin.top;\n\t\t\tthis.left0 = sourceOffset.left - origin.left;\n\t\t}\n\n\t\tthis.el.css({\n\t\t\ttop: this.top0 + this.topDelta,\n\t\t\tleft: this.left0 + this.leftDelta\n\t\t});\n\t},\n\n\n\t// Gets called when the user moves the mouse\n\thandleMove: function(ev) {\n\t\tthis.topDelta = getEvY(ev) - this.y0;\n\t\tthis.leftDelta = getEvX(ev) - this.x0;\n\n\t\tif (!this.isHidden) {\n\t\t\tthis.updatePosition();\n\t\t}\n\t},\n\n\n\t// Temporarily makes the tracking element invisible. Can be called before following starts\n\thide: function() {\n\t\tif (!this.isHidden) {\n\t\t\tthis.isHidden = true;\n\t\t\tif (this.el) {\n\t\t\t\tthis.el.hide();\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// Show the tracking element after it has been temporarily hidden\n\tshow: function() {\n\t\tif (this.isHidden) {\n\t\t\tthis.isHidden = false;\n\t\t\tthis.updatePosition();\n\t\t\tthis.getEl().show();\n\t\t}\n\t}\n\n});\n\n;;\n\n/* An abstract class comprised of a \"grid\" of areas that each represent a specific datetime\n----------------------------------------------------------------------------------------------------------------------*/\n\nvar Grid = FC.Grid = Class.extend(ListenerMixin, {\n\n\t// self-config, overridable by subclasses\n\thasDayInteractions: true, // can user click/select ranges of time?\n\n\tview: null, // a View object\n\tisRTL: null, // shortcut to the view's isRTL option\n\n\tstart: null,\n\tend: null,\n\n\tel: null, // the containing element\n\telsByFill: null, // a hash of jQuery element sets used for rendering each fill. Keyed by fill name.\n\n\t// derived from options\n\teventTimeFormat: null,\n\tdisplayEventTime: null,\n\tdisplayEventEnd: null,\n\n\tminResizeDuration: null, // TODO: hack. set by subclasses. minumum event resize duration\n\n\t// if defined, holds the unit identified (ex: \"year\" or \"month\") that determines the level of granularity\n\t// of the date areas. if not defined, assumes to be day and time granularity.\n\t// TODO: port isTimeScale into same system?\n\tlargeUnit: null,\n\n\tdayClickListener: null,\n\tdaySelectListener: null,\n\tsegDragListener: null,\n\tsegResizeListener: null,\n\texternalDragListener: null,\n\n\n\tconstructor: function(view) {\n\t\tthis.view = view;\n\t\tthis.isRTL = view.opt('isRTL');\n\t\tthis.elsByFill = {};\n\n\t\tthis.dayClickListener = this.buildDayClickListener();\n\t\tthis.daySelectListener = this.buildDaySelectListener();\n\t},\n\n\n\t/* Options\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Generates the format string used for event time text, if not explicitly defined by 'timeFormat'\n\tcomputeEventTimeFormat: function() {\n\t\treturn this.view.opt('smallTimeFormat');\n\t},\n\n\n\t// Determines whether events should have their end times displayed, if not explicitly defined by 'displayEventTime'.\n\t// Only applies to non-all-day events.\n\tcomputeDisplayEventTime: function() {\n\t\treturn true;\n\t},\n\n\n\t// Determines whether events should have their end times displayed, if not explicitly defined by 'displayEventEnd'\n\tcomputeDisplayEventEnd: function() {\n\t\treturn true;\n\t},\n\n\n\t/* Dates\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Tells the grid about what period of time to display.\n\t// Any date-related internal data should be generated.\n\tsetRange: function(range) {\n\t\tthis.start = range.start.clone();\n\t\tthis.end = range.end.clone();\n\n\t\tthis.rangeUpdated();\n\t\tthis.processRangeOptions();\n\t},\n\n\n\t// Called when internal variables that rely on the range should be updated\n\trangeUpdated: function() {\n\t},\n\n\n\t// Updates values that rely on options and also relate to range\n\tprocessRangeOptions: function() {\n\t\tvar view = this.view;\n\t\tvar displayEventTime;\n\t\tvar displayEventEnd;\n\n\t\tthis.eventTimeFormat =\n\t\t\tview.opt('eventTimeFormat') ||\n\t\t\tview.opt('timeFormat') || // deprecated\n\t\t\tthis.computeEventTimeFormat();\n\n\t\tdisplayEventTime = view.opt('displayEventTime');\n\t\tif (displayEventTime == null) {\n\t\t\tdisplayEventTime = this.computeDisplayEventTime(); // might be based off of range\n\t\t}\n\n\t\tdisplayEventEnd = view.opt('displayEventEnd');\n\t\tif (displayEventEnd == null) {\n\t\t\tdisplayEventEnd = this.computeDisplayEventEnd(); // might be based off of range\n\t\t}\n\n\t\tthis.displayEventTime = displayEventTime;\n\t\tthis.displayEventEnd = displayEventEnd;\n\t},\n\n\n\t// Converts a span (has unzoned start/end and any other grid-specific location information)\n\t// into an array of segments (pieces of events whose format is decided by the grid).\n\tspanToSegs: function(span) {\n\t\t// subclasses must implement\n\t},\n\n\n\t// Diffs the two dates, returning a duration, based on granularity of the grid\n\t// TODO: port isTimeScale into this system?\n\tdiffDates: function(a, b) {\n\t\tif (this.largeUnit) {\n\t\t\treturn diffByUnit(a, b, this.largeUnit);\n\t\t}\n\t\telse {\n\t\t\treturn diffDayTime(a, b);\n\t\t}\n\t},\n\n\n\t/* Hit Area\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\thitsNeededDepth: 0, // necessary because multiple callers might need the same hits\n\n\thitsNeeded: function() {\n\t\tif (!(this.hitsNeededDepth++)) {\n\t\t\tthis.prepareHits();\n\t\t}\n\t},\n\n\thitsNotNeeded: function() {\n\t\tif (this.hitsNeededDepth && !(--this.hitsNeededDepth)) {\n\t\t\tthis.releaseHits();\n\t\t}\n\t},\n\n\n\t// Called before one or more queryHit calls might happen. Should prepare any cached coordinates for queryHit\n\tprepareHits: function() {\n\t},\n\n\n\t// Called when queryHit calls have subsided. Good place to clear any coordinate caches.\n\treleaseHits: function() {\n\t},\n\n\n\t// Given coordinates from the topleft of the document, return data about the date-related area underneath.\n\t// Can return an object with arbitrary properties (although top/right/left/bottom are encouraged).\n\t// Must have a `grid` property, a reference to this current grid. TODO: avoid this\n\t// The returned object will be processed by getHitSpan and getHitEl.\n\tqueryHit: function(leftOffset, topOffset) {\n\t},\n\n\n\t// Given position-level information about a date-related area within the grid,\n\t// should return an object with at least a start/end date. Can provide other information as well.\n\tgetHitSpan: function(hit) {\n\t},\n\n\n\t// Given position-level information about a date-related area within the grid,\n\t// should return a jQuery element that best represents it. passed to dayClick callback.\n\tgetHitEl: function(hit) {\n\t},\n\n\n\t/* Rendering\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Sets the container element that the grid should render inside of.\n\t// Does other DOM-related initializations.\n\tsetElement: function(el) {\n\t\tthis.el = el;\n\n\t\tif (this.hasDayInteractions) {\n\t\t\tpreventSelection(el);\n\n\t\t\tthis.bindDayHandler('touchstart', this.dayTouchStart);\n\t\t\tthis.bindDayHandler('mousedown', this.dayMousedown);\n\t\t}\n\n\t\t// attach event-element-related handlers. in Grid.events\n\t\t// same garbage collection note as above.\n\t\tthis.bindSegHandlers();\n\n\t\tthis.bindGlobalHandlers();\n\t},\n\n\n\tbindDayHandler: function(name, handler) {\n\t\tvar _this = this;\n\n\t\t// attach a handler to the grid's root element.\n\t\t// jQuery will take care of unregistering them when removeElement gets called.\n\t\tthis.el.on(name, function(ev) {\n\t\t\tif (\n\t\t\t\t!$(ev.target).is(\n\t\t\t\t\t_this.segSelector + ',' + // directly on an event element\n\t\t\t\t\t_this.segSelector + ' *,' + // within an event element\n\t\t\t\t\t'.fc-more,' + // a \"more..\" link\n\t\t\t\t\t'a[data-goto]' // a clickable nav link\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn handler.call(_this, ev);\n\t\t\t}\n\t\t});\n\t},\n\n\n\t// Removes the grid's container element from the DOM. Undoes any other DOM-related attachments.\n\t// DOES NOT remove any content beforehand (doesn't clear events or call unrenderDates), unlike View\n\tremoveElement: function() {\n\t\tthis.unbindGlobalHandlers();\n\t\tthis.clearDragListeners();\n\n\t\tthis.el.remove();\n\n\t\t// NOTE: we don't null-out this.el for the same reasons we don't do it within View::removeElement\n\t},\n\n\n\t// Renders the basic structure of grid view before any content is rendered\n\trenderSkeleton: function() {\n\t\t// subclasses should implement\n\t},\n\n\n\t// Renders the grid's date-related content (like areas that represent days/times).\n\t// Assumes setRange has already been called and the skeleton has already been rendered.\n\trenderDates: function() {\n\t\t// subclasses should implement\n\t},\n\n\n\t// Unrenders the grid's date-related content\n\tunrenderDates: function() {\n\t\t// subclasses should implement\n\t},\n\n\n\t/* Handlers\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Binds DOM handlers to elements that reside outside the grid, such as the document\n\tbindGlobalHandlers: function() {\n\t\tthis.listenTo($(document), {\n\t\t\tdragstart: this.externalDragStart, // jqui\n\t\t\tsortstart: this.externalDragStart // jqui\n\t\t});\n\t},\n\n\n\t// Unbinds DOM handlers from elements that reside outside the grid\n\tunbindGlobalHandlers: function() {\n\t\tthis.stopListeningTo($(document));\n\t},\n\n\n\t// Process a mousedown on an element that represents a day. For day clicking and selecting.\n\tdayMousedown: function(ev) {\n\t\tvar view = this.view;\n\n\t\t// prevent a user's clickaway for unselecting a range or an event from\n\t\t// causing a dayClick or starting an immediate new selection.\n\t\tif (view.isSelected || view.selectedEvent) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.dayClickListener.startInteraction(ev);\n\n\t\tif (view.opt('selectable')) {\n\t\t\tthis.daySelectListener.startInteraction(ev, {\n\t\t\t\tdistance: view.opt('selectMinDistance')\n\t\t\t});\n\t\t}\n\t},\n\n\n\tdayTouchStart: function(ev) {\n\t\tvar view = this.view;\n\t\tvar selectLongPressDelay;\n\n\t\t// prevent a user's clickaway for unselecting a range or an event from\n\t\t// causing a dayClick or starting an immediate new selection.\n\t\tif (view.isSelected || view.selectedEvent) {\n\t\t\treturn;\n\t\t}\n\n\t\tselectLongPressDelay = view.opt('selectLongPressDelay');\n\t\tif (selectLongPressDelay == null) {\n\t\t\tselectLongPressDelay = view.opt('longPressDelay'); // fallback\n\t\t}\n\n\t\tthis.dayClickListener.startInteraction(ev);\n\n\t\tif (view.opt('selectable')) {\n\t\t\tthis.daySelectListener.startInteraction(ev, {\n\t\t\t\tdelay: selectLongPressDelay\n\t\t\t});\n\t\t}\n\t},\n\n\n\t// Creates a listener that tracks the user's drag across day elements, for day clicking.\n\tbuildDayClickListener: function() {\n\t\tvar _this = this;\n\t\tvar view = this.view;\n\t\tvar dayClickHit; // null if invalid dayClick\n\n\t\tvar dragListener = new HitDragListener(this, {\n\t\t\tscroll: view.opt('dragScroll'),\n\t\t\tinteractionStart: function() {\n\t\t\t\tdayClickHit = dragListener.origHit;\n\t\t\t},\n\t\t\thitOver: function(hit, isOrig, origHit) {\n\t\t\t\t// if user dragged to another cell at any point, it can no longer be a dayClick\n\t\t\t\tif (!isOrig) {\n\t\t\t\t\tdayClickHit = null;\n\t\t\t\t}\n\t\t\t},\n\t\t\thitOut: function() { // called before mouse moves to a different hit OR moved out of all hits\n\t\t\t\tdayClickHit = null;\n\t\t\t},\n\t\t\tinteractionEnd: function(ev, isCancelled) {\n\t\t\t\tif (!isCancelled && dayClickHit) {\n\t\t\t\t\tview.triggerDayClick(\n\t\t\t\t\t\t_this.getHitSpan(dayClickHit),\n\t\t\t\t\t\t_this.getHitEl(dayClickHit),\n\t\t\t\t\t\tev\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// because dayClickListener won't be called with any time delay, \"dragging\" will begin immediately,\n\t\t// which will kill any touchmoving/scrolling. Prevent this.\n\t\tdragListener.shouldCancelTouchScroll = false;\n\n\t\tdragListener.scrollAlwaysKills = true;\n\n\t\treturn dragListener;\n\t},\n\n\n\t// Creates a listener that tracks the user's drag across day elements, for day selecting.\n\tbuildDaySelectListener: function() {\n\t\tvar _this = this;\n\t\tvar view = this.view;\n\t\tvar selectionSpan; // null if invalid selection\n\n\t\tvar dragListener = new HitDragListener(this, {\n\t\t\tscroll: view.opt('dragScroll'),\n\t\t\tinteractionStart: function() {\n\t\t\t\tselectionSpan = null;\n\t\t\t},\n\t\t\tdragStart: function() {\n\t\t\t\tview.unselect(); // since we could be rendering a new selection, we want to clear any old one\n\t\t\t},\n\t\t\thitOver: function(hit, isOrig, origHit) {\n\t\t\t\tif (origHit) { // click needs to have started on a hit\n\n\t\t\t\t\tselectionSpan = _this.computeSelection(\n\t\t\t\t\t\t_this.getHitSpan(origHit),\n\t\t\t\t\t\t_this.getHitSpan(hit)\n\t\t\t\t\t);\n\n\t\t\t\t\tif (selectionSpan) {\n\t\t\t\t\t\t_this.renderSelection(selectionSpan);\n\t\t\t\t\t}\n\t\t\t\t\telse if (selectionSpan === false) {\n\t\t\t\t\t\tdisableCursor();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\thitOut: function() { // called before mouse moves to a different hit OR moved out of all hits\n\t\t\t\tselectionSpan = null;\n\t\t\t\t_this.unrenderSelection();\n\t\t\t},\n\t\t\thitDone: function() { // called after a hitOut OR before a dragEnd\n\t\t\t\tenableCursor();\n\t\t\t},\n\t\t\tinteractionEnd: function(ev, isCancelled) {\n\t\t\t\tif (!isCancelled && selectionSpan) {\n\t\t\t\t\t// the selection will already have been rendered. just report it\n\t\t\t\t\tview.reportSelection(selectionSpan, ev);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn dragListener;\n\t},\n\n\n\t// Kills all in-progress dragging.\n\t// Useful for when public API methods that result in re-rendering are invoked during a drag.\n\t// Also useful for when touch devices misbehave and don't fire their touchend.\n\tclearDragListeners: function() {\n\t\tthis.dayClickListener.endInteraction();\n\t\tthis.daySelectListener.endInteraction();\n\n\t\tif (this.segDragListener) {\n\t\t\tthis.segDragListener.endInteraction(); // will clear this.segDragListener\n\t\t}\n\t\tif (this.segResizeListener) {\n\t\t\tthis.segResizeListener.endInteraction(); // will clear this.segResizeListener\n\t\t}\n\t\tif (this.externalDragListener) {\n\t\t\tthis.externalDragListener.endInteraction(); // will clear this.externalDragListener\n\t\t}\n\t},\n\n\n\t/* Event Helper\n\t------------------------------------------------------------------------------------------------------------------*/\n\t// TODO: should probably move this to Grid.events, like we did event dragging / resizing\n\n\n\t// Renders a mock event at the given event location, which contains zoned start/end properties.\n\t// Returns all mock event elements.\n\trenderEventLocationHelper: function(eventLocation, sourceSeg) {\n\t\tvar fakeEvent = this.fabricateHelperEvent(eventLocation, sourceSeg);\n\n\t\treturn this.renderHelper(fakeEvent, sourceSeg); // do the actual rendering\n\t},\n\n\n\t// Builds a fake event given zoned event date properties and a segment is should be inspired from.\n\t// The range's end can be null, in which case the mock event that is rendered will have a null end time.\n\t// `sourceSeg` is the internal segment object involved in the drag. If null, something external is dragging.\n\tfabricateHelperEvent: function(eventLocation, sourceSeg) {\n\t\tvar fakeEvent = sourceSeg ? createObject(sourceSeg.event) : {}; // mask the original event object if possible\n\n\t\tfakeEvent.start = eventLocation.start.clone();\n\t\tfakeEvent.end = eventLocation.end ? eventLocation.end.clone() : null;\n\t\tfakeEvent.allDay = null; // force it to be freshly computed by normalizeEventDates\n\t\tthis.view.calendar.normalizeEventDates(fakeEvent);\n\n\t\t// this extra className will be useful for differentiating real events from mock events in CSS\n\t\tfakeEvent.className = (fakeEvent.className || []).concat('fc-helper');\n\n\t\t// if something external is being dragged in, don't render a resizer\n\t\tif (!sourceSeg) {\n\t\t\tfakeEvent.editable = false;\n\t\t}\n\n\t\treturn fakeEvent;\n\t},\n\n\n\t// Renders a mock event. Given zoned event date properties.\n\t// Must return all mock event elements.\n\trenderHelper: function(eventLocation, sourceSeg) {\n\t\t// subclasses must implement\n\t},\n\n\n\t// Unrenders a mock event\n\tunrenderHelper: function() {\n\t\t// subclasses must implement\n\t},\n\n\n\t/* Selection\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders a visual indication of a selection. Will highlight by default but can be overridden by subclasses.\n\t// Given a span (unzoned start/end and other misc data)\n\trenderSelection: function(span) {\n\t\tthis.renderHighlight(span);\n\t},\n\n\n\t// Unrenders any visual indications of a selection. Will unrender a highlight by default.\n\tunrenderSelection: function() {\n\t\tthis.unrenderHighlight();\n\t},\n\n\n\t// Given the first and last date-spans of a selection, returns another date-span object.\n\t// Subclasses can override and provide additional data in the span object. Will be passed to renderSelection().\n\t// Will return false if the selection is invalid and this should be indicated to the user.\n\t// Will return null/undefined if a selection invalid but no error should be reported.\n\tcomputeSelection: function(span0, span1) {\n\t\tvar span = this.computeSelectionSpan(span0, span1);\n\n\t\tif (span && !this.view.calendar.isSelectionSpanAllowed(span)) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn span;\n\t},\n\n\n\t// Given two spans, must return the combination of the two.\n\t// TODO: do this separation of concerns (combining VS validation) for event dnd/resize too.\n\tcomputeSelectionSpan: function(span0, span1) {\n\t\tvar dates = [ span0.start, span0.end, span1.start, span1.end ];\n\n\t\tdates.sort(compareNumbers); // sorts chronologically. works with Moments\n\n\t\treturn { start: dates[0].clone(), end: dates[3].clone() };\n\t},\n\n\n\t/* Highlight\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders an emphasis on the given date range. Given a span (unzoned start/end and other misc data)\n\trenderHighlight: function(span) {\n\t\tthis.renderFill('highlight', this.spanToSegs(span));\n\t},\n\n\n\t// Unrenders the emphasis on a date range\n\tunrenderHighlight: function() {\n\t\tthis.unrenderFill('highlight');\n\t},\n\n\n\t// Generates an array of classNames for rendering the highlight. Used by the fill system.\n\thighlightSegClasses: function() {\n\t\treturn [ 'fc-highlight' ];\n\t},\n\n\n\t/* Business Hours\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trenderBusinessHours: function() {\n\t},\n\n\n\tunrenderBusinessHours: function() {\n\t},\n\n\n\t/* Now Indicator\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\tgetNowIndicatorUnit: function() {\n\t},\n\n\n\trenderNowIndicator: function(date) {\n\t},\n\n\n\tunrenderNowIndicator: function() {\n\t},\n\n\n\t/* Fill System (highlight, background events, business hours)\n\t--------------------------------------------------------------------------------------------------------------------\n\tTODO: remove this system. like we did in TimeGrid\n\t*/\n\n\n\t// Renders a set of rectangles over the given segments of time.\n\t// MUST RETURN a subset of segs, the segs that were actually rendered.\n\t// Responsible for populating this.elsByFill. TODO: better API for expressing this requirement\n\trenderFill: function(type, segs) {\n\t\t// subclasses must implement\n\t},\n\n\n\t// Unrenders a specific type of fill that is currently rendered on the grid\n\tunrenderFill: function(type) {\n\t\tvar el = this.elsByFill[type];\n\n\t\tif (el) {\n\t\t\tel.remove();\n\t\t\tdelete this.elsByFill[type];\n\t\t}\n\t},\n\n\n\t// Renders and assigns an `el` property for each fill segment. Generic enough to work with different types.\n\t// Only returns segments that successfully rendered.\n\t// To be harnessed by renderFill (implemented by subclasses).\n\t// Analagous to renderFgSegEls.\n\trenderFillSegEls: function(type, segs) {\n\t\tvar _this = this;\n\t\tvar segElMethod = this[type + 'SegEl'];\n\t\tvar html = '';\n\t\tvar renderedSegs = [];\n\t\tvar i;\n\n\t\tif (segs.length) {\n\n\t\t\t// build a large concatenation of segment HTML\n\t\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\t\thtml += this.fillSegHtml(type, segs[i]);\n\t\t\t}\n\n\t\t\t// Grab individual elements from the combined HTML string. Use each as the default rendering.\n\t\t\t// Then, compute the 'el' for each segment.\n\t\t\t$(html).each(function(i, node) {\n\t\t\t\tvar seg = segs[i];\n\t\t\t\tvar el = $(node);\n\n\t\t\t\t// allow custom filter methods per-type\n\t\t\t\tif (segElMethod) {\n\t\t\t\t\tel = segElMethod.call(_this, seg, el);\n\t\t\t\t}\n\n\t\t\t\tif (el) { // custom filters did not cancel the render\n\t\t\t\t\tel = $(el); // allow custom filter to return raw DOM node\n\n\t\t\t\t\t// correct element type? (would be bad if a non-TD were inserted into a table for example)\n\t\t\t\t\tif (el.is(_this.fillSegTag)) {\n\t\t\t\t\t\tseg.el = el;\n\t\t\t\t\t\trenderedSegs.push(seg);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn renderedSegs;\n\t},\n\n\n\tfillSegTag: 'div', // subclasses can override\n\n\n\t// Builds the HTML needed for one fill segment. Generic enough to work with different types.\n\tfillSegHtml: function(type, seg) {\n\n\t\t// custom hooks per-type\n\t\tvar classesMethod = this[type + 'SegClasses'];\n\t\tvar cssMethod = this[type + 'SegCss'];\n\n\t\tvar classes = classesMethod ? classesMethod.call(this, seg) : [];\n\t\tvar css = cssToStr(cssMethod ? cssMethod.call(this, seg) : {});\n\n\t\treturn '<' + this.fillSegTag +\n\t\t\t(classes.length ? ' class=\"' + classes.join(' ') + '\"' : '') +\n\t\t\t(css ? ' style=\"' + css + '\"' : '') +\n\t\t\t' />';\n\t},\n\n\n\n\t/* Generic rendering utilities for subclasses\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Computes HTML classNames for a single-day element\n\tgetDayClasses: function(date, noThemeHighlight) {\n\t\tvar view = this.view;\n\t\tvar today = view.calendar.getNow();\n\t\tvar classes = [ 'fc-' + dayIDs[date.day()] ];\n\n\t\tif (\n\t\t\tview.intervalDuration.as('months') == 1 &&\n\t\t\tdate.month() != view.intervalStart.month()\n\t\t) {\n\t\t\tclasses.push('fc-other-month');\n\t\t}\n\n\t\tif (date.isSame(today, 'day')) {\n\t\t\tclasses.push('fc-today');\n\n\t\t\tif (noThemeHighlight !== true) {\n\t\t\t\tclasses.push(view.highlightStateClass);\n\t\t\t}\n\t\t}\n\t\telse if (date < today) {\n\t\t\tclasses.push('fc-past');\n\t\t}\n\t\telse {\n\t\t\tclasses.push('fc-future');\n\t\t}\n\n\t\treturn classes;\n\t}\n\n});\n\n;;\n\n/* Event-rendering and event-interaction methods for the abstract Grid class\n----------------------------------------------------------------------------------------------------------------------*/\n\nGrid.mixin({\n\n\t// self-config, overridable by subclasses\n\tsegSelector: '.fc-event-container > *', // what constitutes an event element?\n\n\tmousedOverSeg: null, // the segment object the user's mouse is over. null if over nothing\n\tisDraggingSeg: false, // is a segment being dragged? boolean\n\tisResizingSeg: false, // is a segment being resized? boolean\n\tisDraggingExternal: false, // jqui-dragging an external element? boolean\n\tsegs: null, // the *event* segments currently rendered in the grid. TODO: rename to `eventSegs`\n\n\n\t// Renders the given events onto the grid\n\trenderEvents: function(events) {\n\t\tvar bgEvents = [];\n\t\tvar fgEvents = [];\n\t\tvar i;\n\n\t\tfor (i = 0; i < events.length; i++) {\n\t\t\t(isBgEvent(events[i]) ? bgEvents : fgEvents).push(events[i]);\n\t\t}\n\n\t\tthis.segs = [].concat( // record all segs\n\t\t\tthis.renderBgEvents(bgEvents),\n\t\t\tthis.renderFgEvents(fgEvents)\n\t\t);\n\t},\n\n\n\trenderBgEvents: function(events) {\n\t\tvar segs = this.eventsToSegs(events);\n\n\t\t// renderBgSegs might return a subset of segs, segs that were actually rendered\n\t\treturn this.renderBgSegs(segs) || segs;\n\t},\n\n\n\trenderFgEvents: function(events) {\n\t\tvar segs = this.eventsToSegs(events);\n\n\t\t// renderFgSegs might return a subset of segs, segs that were actually rendered\n\t\treturn this.renderFgSegs(segs) || segs;\n\t},\n\n\n\t// Unrenders all events currently rendered on the grid\n\tunrenderEvents: function() {\n\t\tthis.handleSegMouseout(); // trigger an eventMouseout if user's mouse is over an event\n\t\tthis.clearDragListeners();\n\n\t\tthis.unrenderFgSegs();\n\t\tthis.unrenderBgSegs();\n\n\t\tthis.segs = null;\n\t},\n\n\n\t// Retrieves all rendered segment objects currently rendered on the grid\n\tgetEventSegs: function() {\n\t\treturn this.segs || [];\n\t},\n\n\n\t/* Foreground Segment Rendering\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders foreground event segments onto the grid. May return a subset of segs that were rendered.\n\trenderFgSegs: function(segs) {\n\t\t// subclasses must implement\n\t},\n\n\n\t// Unrenders all currently rendered foreground segments\n\tunrenderFgSegs: function() {\n\t\t// subclasses must implement\n\t},\n\n\n\t// Renders and assigns an `el` property for each foreground event segment.\n\t// Only returns segments that successfully rendered.\n\t// A utility that subclasses may use.\n\trenderFgSegEls: function(segs, disableResizing) {\n\t\tvar view = this.view;\n\t\tvar html = '';\n\t\tvar renderedSegs = [];\n\t\tvar i;\n\n\t\tif (segs.length) { // don't build an empty html string\n\n\t\t\t// build a large concatenation of event segment HTML\n\t\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\t\thtml += this.fgSegHtml(segs[i], disableResizing);\n\t\t\t}\n\n\t\t\t// Grab individual elements from the combined HTML string. Use each as the default rendering.\n\t\t\t// Then, compute the 'el' for each segment. An el might be null if the eventRender callback returned false.\n\t\t\t$(html).each(function(i, node) {\n\t\t\t\tvar seg = segs[i];\n\t\t\t\tvar el = view.resolveEventEl(seg.event, $(node));\n\n\t\t\t\tif (el) {\n\t\t\t\t\tel.data('fc-seg', seg); // used by handlers\n\t\t\t\t\tseg.el = el;\n\t\t\t\t\trenderedSegs.push(seg);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn renderedSegs;\n\t},\n\n\n\t// Generates the HTML for the default rendering of a foreground event segment. Used by renderFgSegEls()\n\tfgSegHtml: function(seg, disableResizing) {\n\t\t// subclasses should implement\n\t},\n\n\n\t/* Background Segment Rendering\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders the given background event segments onto the grid.\n\t// Returns a subset of the segs that were actually rendered.\n\trenderBgSegs: function(segs) {\n\t\treturn this.renderFill('bgEvent', segs);\n\t},\n\n\n\t// Unrenders all the currently rendered background event segments\n\tunrenderBgSegs: function() {\n\t\tthis.unrenderFill('bgEvent');\n\t},\n\n\n\t// Renders a background event element, given the default rendering. Called by the fill system.\n\tbgEventSegEl: function(seg, el) {\n\t\treturn this.view.resolveEventEl(seg.event, el); // will filter through eventRender\n\t},\n\n\n\t// Generates an array of classNames to be used for the default rendering of a background event.\n\t// Called by fillSegHtml.\n\tbgEventSegClasses: function(seg) {\n\t\tvar event = seg.event;\n\t\tvar source = event.source || {};\n\n\t\treturn [ 'fc-bgevent' ].concat(\n\t\t\tevent.className,\n\t\t\tsource.className || []\n\t\t);\n\t},\n\n\n\t// Generates a semicolon-separated CSS string to be used for the default rendering of a background event.\n\t// Called by fillSegHtml.\n\tbgEventSegCss: function(seg) {\n\t\treturn {\n\t\t\t'background-color': this.getSegSkinCss(seg)['background-color']\n\t\t};\n\t},\n\n\n\t// Generates an array of classNames to be used for the rendering business hours overlay. Called by the fill system.\n\t// Called by fillSegHtml.\n\tbusinessHoursSegClasses: function(seg) {\n\t\treturn [ 'fc-nonbusiness', 'fc-bgevent' ];\n\t},\n\n\n\t/* Business Hours\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Compute business hour segs for the grid's current date range.\n\t// Caller must ask if whole-day business hours are needed.\n\t// If no `businessHours` configuration value is specified, assumes the calendar default.\n\tbuildBusinessHourSegs: function(wholeDay, businessHours) {\n\t\treturn this.eventsToSegs(\n\t\t\tthis.buildBusinessHourEvents(wholeDay, businessHours)\n\t\t);\n\t},\n\n\n\t// Compute business hour *events* for the grid's current date range.\n\t// Caller must ask if whole-day business hours are needed.\n\t// If no `businessHours` configuration value is specified, assumes the calendar default.\n\tbuildBusinessHourEvents: function(wholeDay, businessHours) {\n\t\tvar calendar = this.view.calendar;\n\t\tvar events;\n\n\t\tif (businessHours == null) {\n\t\t\t// fallback\n\t\t\t// access from calendawr. don't access from view. doesn't update with dynamic options.\n\t\t\tbusinessHours = calendar.options.businessHours;\n\t\t}\n\n\t\tevents = calendar.computeBusinessHourEvents(wholeDay, businessHours);\n\n\t\t// HACK. Eventually refactor business hours \"events\" system.\n\t\t// If no events are given, but businessHours is activated, this means the entire visible range should be\n\t\t// marked as *not* business-hours, via inverse-background rendering.\n\t\tif (!events.length && businessHours) {\n\t\t\tevents = [\n\t\t\t\t$.extend({}, BUSINESS_HOUR_EVENT_DEFAULTS, {\n\t\t\t\t\tstart: this.view.end, // guaranteed out-of-range\n\t\t\t\t\tend: this.view.end, // \"\n\t\t\t\t\tdow: null\n\t\t\t\t})\n\t\t\t];\n\t\t}\n\n\t\treturn events;\n\t},\n\n\n\t/* Handlers\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Attaches event-element-related handlers for *all* rendered event segments of the view.\n\tbindSegHandlers: function() {\n\t\tthis.bindSegHandlersToEl(this.el);\n\t},\n\n\n\t// Attaches event-element-related handlers to an arbitrary container element. leverages bubbling.\n\tbindSegHandlersToEl: function(el) {\n\t\tthis.bindSegHandlerToEl(el, 'touchstart', this.handleSegTouchStart);\n\t\tthis.bindSegHandlerToEl(el, 'mouseenter', this.handleSegMouseover);\n\t\tthis.bindSegHandlerToEl(el, 'mouseleave', this.handleSegMouseout);\n\t\tthis.bindSegHandlerToEl(el, 'mousedown', this.handleSegMousedown);\n\t\tthis.bindSegHandlerToEl(el, 'click', this.handleSegClick);\n\t},\n\n\n\t// Executes a handler for any a user-interaction on a segment.\n\t// Handler gets called with (seg, ev), and with the `this` context of the Grid\n\tbindSegHandlerToEl: function(el, name, handler) {\n\t\tvar _this = this;\n\n\t\tel.on(name, this.segSelector, function(ev) {\n\t\t\tvar seg = $(this).data('fc-seg'); // grab segment data. put there by View::renderEvents\n\n\t\t\t// only call the handlers if there is not a drag/resize in progress\n\t\t\tif (seg && !_this.isDraggingSeg && !_this.isResizingSeg) {\n\t\t\t\treturn handler.call(_this, seg, ev); // context will be the Grid\n\t\t\t}\n\t\t});\n\t},\n\n\n\thandleSegClick: function(seg, ev) {\n\t\tvar res = this.view.publiclyTrigger('eventClick', seg.el[0], seg.event, ev); // can return `false` to cancel\n\t\tif (res === false) {\n\t\t\tev.preventDefault();\n\t\t}\n\t},\n\n\n\t// Updates internal state and triggers handlers for when an event element is moused over\n\thandleSegMouseover: function(seg, ev) {\n\t\tif (\n\t\t\t!GlobalEmitter.get().shouldIgnoreMouse() &&\n\t\t\t!this.mousedOverSeg\n\t\t) {\n\t\t\tthis.mousedOverSeg = seg;\n\t\t\tif (this.view.isEventResizable(seg.event)) {\n\t\t\t\tseg.el.addClass('fc-allow-mouse-resize');\n\t\t\t}\n\t\t\tthis.view.publiclyTrigger('eventMouseover', seg.el[0], seg.event, ev);\n\t\t}\n\t},\n\n\n\t// Updates internal state and triggers handlers for when an event element is moused out.\n\t// Can be given no arguments, in which case it will mouseout the segment that was previously moused over.\n\thandleSegMouseout: function(seg, ev) {\n\t\tev = ev || {}; // if given no args, make a mock mouse event\n\n\t\tif (this.mousedOverSeg) {\n\t\t\tseg = seg || this.mousedOverSeg; // if given no args, use the currently moused-over segment\n\t\t\tthis.mousedOverSeg = null;\n\t\t\tif (this.view.isEventResizable(seg.event)) {\n\t\t\t\tseg.el.removeClass('fc-allow-mouse-resize');\n\t\t\t}\n\t\t\tthis.view.publiclyTrigger('eventMouseout', seg.el[0], seg.event, ev);\n\t\t}\n\t},\n\n\n\thandleSegMousedown: function(seg, ev) {\n\t\tvar isResizing = this.startSegResize(seg, ev, { distance: 5 });\n\n\t\tif (!isResizing && this.view.isEventDraggable(seg.event)) {\n\t\t\tthis.buildSegDragListener(seg)\n\t\t\t\t.startInteraction(ev, {\n\t\t\t\t\tdistance: 5\n\t\t\t\t});\n\t\t}\n\t},\n\n\n\thandleSegTouchStart: function(seg, ev) {\n\t\tvar view = this.view;\n\t\tvar event = seg.event;\n\t\tvar isSelected = view.isEventSelected(event);\n\t\tvar isDraggable = view.isEventDraggable(event);\n\t\tvar isResizable = view.isEventResizable(event);\n\t\tvar isResizing = false;\n\t\tvar dragListener;\n\t\tvar eventLongPressDelay;\n\n\t\tif (isSelected && isResizable) {\n\t\t\t// only allow resizing of the event is selected\n\t\t\tisResizing = this.startSegResize(seg, ev);\n\t\t}\n\n\t\tif (!isResizing && (isDraggable || isResizable)) { // allowed to be selected?\n\n\t\t\teventLongPressDelay = view.opt('eventLongPressDelay');\n\t\t\tif (eventLongPressDelay == null) {\n\t\t\t\teventLongPressDelay = view.opt('longPressDelay'); // fallback\n\t\t\t}\n\n\t\t\tdragListener = isDraggable ?\n\t\t\t\tthis.buildSegDragListener(seg) :\n\t\t\t\tthis.buildSegSelectListener(seg); // seg isn't draggable, but still needs to be selected\n\n\t\t\tdragListener.startInteraction(ev, { // won't start if already started\n\t\t\t\tdelay: isSelected ? 0 : eventLongPressDelay // do delay if not already selected\n\t\t\t});\n\t\t}\n\t},\n\n\n\t// returns boolean whether resizing actually started or not.\n\t// assumes the seg allows resizing.\n\t// `dragOptions` are optional.\n\tstartSegResize: function(seg, ev, dragOptions) {\n\t\tif ($(ev.target).is('.fc-resizer')) {\n\t\t\tthis.buildSegResizeListener(seg, $(ev.target).is('.fc-start-resizer'))\n\t\t\t\t.startInteraction(ev, dragOptions);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\n\n\n\t/* Event Dragging\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Builds a listener that will track user-dragging on an event segment.\n\t// Generic enough to work with any type of Grid.\n\t// Has side effect of setting/unsetting `segDragListener`\n\tbuildSegDragListener: function(seg) {\n\t\tvar _this = this;\n\t\tvar view = this.view;\n\t\tvar calendar = view.calendar;\n\t\tvar el = seg.el;\n\t\tvar event = seg.event;\n\t\tvar isDragging;\n\t\tvar mouseFollower; // A clone of the original element that will move with the mouse\n\t\tvar dropLocation; // zoned event date properties\n\n\t\tif (this.segDragListener) {\n\t\t\treturn this.segDragListener;\n\t\t}\n\n\t\t// Tracks mouse movement over the *view's* coordinate map. Allows dragging and dropping between subcomponents\n\t\t// of the view.\n\t\tvar dragListener = this.segDragListener = new HitDragListener(view, {\n\t\t\tscroll: view.opt('dragScroll'),\n\t\t\tsubjectEl: el,\n\t\t\tsubjectCenter: true,\n\t\t\tinteractionStart: function(ev) {\n\t\t\t\tseg.component = _this; // for renderDrag\n\t\t\t\tisDragging = false;\n\t\t\t\tmouseFollower = new MouseFollower(seg.el, {\n\t\t\t\t\tadditionalClass: 'fc-dragging',\n\t\t\t\t\tparentEl: view.el,\n\t\t\t\t\topacity: dragListener.isTouch ? null : view.opt('dragOpacity'),\n\t\t\t\t\trevertDuration: view.opt('dragRevertDuration'),\n\t\t\t\t\tzIndex: 2 // one above the .fc-view\n\t\t\t\t});\n\t\t\t\tmouseFollower.hide(); // don't show until we know this is a real drag\n\t\t\t\tmouseFollower.start(ev);\n\t\t\t},\n\t\t\tdragStart: function(ev) {\n\t\t\t\tif (dragListener.isTouch && !view.isEventSelected(event)) {\n\t\t\t\t\t// if not previously selected, will fire after a delay. then, select the event\n\t\t\t\t\tview.selectEvent(event);\n\t\t\t\t}\n\t\t\t\tisDragging = true;\n\t\t\t\t_this.handleSegMouseout(seg, ev); // ensure a mouseout on the manipulated event has been reported\n\t\t\t\t_this.segDragStart(seg, ev);\n\t\t\t\tview.hideEvent(event); // hide all event segments. our mouseFollower will take over\n\t\t\t},\n\t\t\thitOver: function(hit, isOrig, origHit) {\n\t\t\t\tvar dragHelperEls;\n\n\t\t\t\t// starting hit could be forced (DayGrid.limit)\n\t\t\t\tif (seg.hit) {\n\t\t\t\t\torigHit = seg.hit;\n\t\t\t\t}\n\n\t\t\t\t// since we are querying the parent view, might not belong to this grid\n\t\t\t\tdropLocation = _this.computeEventDrop(\n\t\t\t\t\torigHit.component.getHitSpan(origHit),\n\t\t\t\t\thit.component.getHitSpan(hit),\n\t\t\t\t\tevent\n\t\t\t\t);\n\n\t\t\t\tif (dropLocation && !calendar.isEventSpanAllowed(_this.eventToSpan(dropLocation), event)) {\n\t\t\t\t\tdisableCursor();\n\t\t\t\t\tdropLocation = null;\n\t\t\t\t}\n\n\t\t\t\t// if a valid drop location, have the subclass render a visual indication\n\t\t\t\tif (dropLocation && (dragHelperEls = view.renderDrag(dropLocation, seg))) {\n\n\t\t\t\t\tdragHelperEls.addClass('fc-dragging');\n\t\t\t\t\tif (!dragListener.isTouch) {\n\t\t\t\t\t\t_this.applyDragOpacity(dragHelperEls);\n\t\t\t\t\t}\n\n\t\t\t\t\tmouseFollower.hide(); // if the subclass is already using a mock event \"helper\", hide our own\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tmouseFollower.show(); // otherwise, have the helper follow the mouse (no snapping)\n\t\t\t\t}\n\n\t\t\t\tif (isOrig) {\n\t\t\t\t\tdropLocation = null; // needs to have moved hits to be a valid drop\n\t\t\t\t}\n\t\t\t},\n\t\t\thitOut: function() { // called before mouse moves to a different hit OR moved out of all hits\n\t\t\t\tview.unrenderDrag(); // unrender whatever was done in renderDrag\n\t\t\t\tmouseFollower.show(); // show in case we are moving out of all hits\n\t\t\t\tdropLocation = null;\n\t\t\t},\n\t\t\thitDone: function() { // Called after a hitOut OR before a dragEnd\n\t\t\t\tenableCursor();\n\t\t\t},\n\t\t\tinteractionEnd: function(ev) {\n\t\t\t\tdelete seg.component; // prevent side effects\n\n\t\t\t\t// do revert animation if hasn't changed. calls a callback when finished (whether animation or not)\n\t\t\t\tmouseFollower.stop(!dropLocation, function() {\n\t\t\t\t\tif (isDragging) {\n\t\t\t\t\t\tview.unrenderDrag();\n\t\t\t\t\t\t_this.segDragStop(seg, ev);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (dropLocation) {\n\t\t\t\t\t\t// no need to re-show original, will rerender all anyways. esp important if eventRenderWait\n\t\t\t\t\t\tview.reportSegDrop(seg, dropLocation, _this.largeUnit, el, ev);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tview.showEvent(event);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t_this.segDragListener = null;\n\t\t\t}\n\t\t});\n\n\t\treturn dragListener;\n\t},\n\n\n\t// seg isn't draggable, but let's use a generic DragListener\n\t// simply for the delay, so it can be selected.\n\t// Has side effect of setting/unsetting `segDragListener`\n\tbuildSegSelectListener: function(seg) {\n\t\tvar _this = this;\n\t\tvar view = this.view;\n\t\tvar event = seg.event;\n\n\t\tif (this.segDragListener) {\n\t\t\treturn this.segDragListener;\n\t\t}\n\n\t\tvar dragListener = this.segDragListener = new DragListener({\n\t\t\tdragStart: function(ev) {\n\t\t\t\tif (dragListener.isTouch && !view.isEventSelected(event)) {\n\t\t\t\t\t// if not previously selected, will fire after a delay. then, select the event\n\t\t\t\t\tview.selectEvent(event);\n\t\t\t\t}\n\t\t\t},\n\t\t\tinteractionEnd: function(ev) {\n\t\t\t\t_this.segDragListener = null;\n\t\t\t}\n\t\t});\n\n\t\treturn dragListener;\n\t},\n\n\n\t// Called before event segment dragging starts\n\tsegDragStart: function(seg, ev) {\n\t\tthis.isDraggingSeg = true;\n\t\tthis.view.publiclyTrigger('eventDragStart', seg.el[0], seg.event, ev, {}); // last argument is jqui dummy\n\t},\n\n\n\t// Called after event segment dragging stops\n\tsegDragStop: function(seg, ev) {\n\t\tthis.isDraggingSeg = false;\n\t\tthis.view.publiclyTrigger('eventDragStop', seg.el[0], seg.event, ev, {}); // last argument is jqui dummy\n\t},\n\n\n\t// Given the spans an event drag began, and the span event was dropped, calculates the new zoned start/end/allDay\n\t// values for the event. Subclasses may override and set additional properties to be used by renderDrag.\n\t// A falsy returned value indicates an invalid drop.\n\t// DOES NOT consider overlap/constraint.\n\tcomputeEventDrop: function(startSpan, endSpan, event) {\n\t\tvar calendar = this.view.calendar;\n\t\tvar dragStart = startSpan.start;\n\t\tvar dragEnd = endSpan.start;\n\t\tvar delta;\n\t\tvar dropLocation; // zoned event date properties\n\n\t\tif (dragStart.hasTime() === dragEnd.hasTime()) {\n\t\t\tdelta = this.diffDates(dragEnd, dragStart);\n\n\t\t\t// if an all-day event was in a timed area and it was dragged to a different time,\n\t\t\t// guarantee an end and adjust start/end to have times\n\t\t\tif (event.allDay && durationHasTime(delta)) {\n\t\t\t\tdropLocation = {\n\t\t\t\t\tstart: event.start.clone(),\n\t\t\t\t\tend: calendar.getEventEnd(event), // will be an ambig day\n\t\t\t\t\tallDay: false // for normalizeEventTimes\n\t\t\t\t};\n\t\t\t\tcalendar.normalizeEventTimes(dropLocation);\n\t\t\t}\n\t\t\t// othewise, work off existing values\n\t\t\telse {\n\t\t\t\tdropLocation = pluckEventDateProps(event);\n\t\t\t}\n\n\t\t\tdropLocation.start.add(delta);\n\t\t\tif (dropLocation.end) {\n\t\t\t\tdropLocation.end.add(delta);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// if switching from day <-> timed, start should be reset to the dropped date, and the end cleared\n\t\t\tdropLocation = {\n\t\t\t\tstart: dragEnd.clone(),\n\t\t\t\tend: null, // end should be cleared\n\t\t\t\tallDay: !dragEnd.hasTime()\n\t\t\t};\n\t\t}\n\n\t\treturn dropLocation;\n\t},\n\n\n\t// Utility for apply dragOpacity to a jQuery set\n\tapplyDragOpacity: function(els) {\n\t\tvar opacity = this.view.opt('dragOpacity');\n\n\t\tif (opacity != null) {\n\t\t\tels.css('opacity', opacity);\n\t\t}\n\t},\n\n\n\t/* External Element Dragging\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Called when a jQuery UI drag is initiated anywhere in the DOM\n\texternalDragStart: function(ev, ui) {\n\t\tvar view = this.view;\n\t\tvar el;\n\t\tvar accept;\n\n\t\tif (view.opt('droppable')) { // only listen if this setting is on\n\t\t\tel = $((ui ? ui.item : null) || ev.target);\n\n\t\t\t// Test that the dragged element passes the dropAccept selector or filter function.\n\t\t\t// FYI, the default is \"*\" (matches all)\n\t\t\taccept = view.opt('dropAccept');\n\t\t\tif ($.isFunction(accept) ? accept.call(el[0], el) : el.is(accept)) {\n\t\t\t\tif (!this.isDraggingExternal) { // prevent double-listening if fired twice\n\t\t\t\t\tthis.listenToExternalDrag(el, ev, ui);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// Called when a jQuery UI drag starts and it needs to be monitored for dropping\n\tlistenToExternalDrag: function(el, ev, ui) {\n\t\tvar _this = this;\n\t\tvar calendar = this.view.calendar;\n\t\tvar meta = getDraggedElMeta(el); // extra data about event drop, including possible event to create\n\t\tvar dropLocation; // a null value signals an unsuccessful drag\n\n\t\t// listener that tracks mouse movement over date-associated pixel regions\n\t\tvar dragListener = _this.externalDragListener = new HitDragListener(this, {\n\t\t\tinteractionStart: function() {\n\t\t\t\t_this.isDraggingExternal = true;\n\t\t\t},\n\t\t\thitOver: function(hit) {\n\t\t\t\tdropLocation = _this.computeExternalDrop(\n\t\t\t\t\thit.component.getHitSpan(hit), // since we are querying the parent view, might not belong to this grid\n\t\t\t\t\tmeta\n\t\t\t\t);\n\n\t\t\t\tif ( // invalid hit?\n\t\t\t\t\tdropLocation &&\n\t\t\t\t\t!calendar.isExternalSpanAllowed(_this.eventToSpan(dropLocation), dropLocation, meta.eventProps)\n\t\t\t\t) {\n\t\t\t\t\tdisableCursor();\n\t\t\t\t\tdropLocation = null;\n\t\t\t\t}\n\n\t\t\t\tif (dropLocation) {\n\t\t\t\t\t_this.renderDrag(dropLocation); // called without a seg parameter\n\t\t\t\t}\n\t\t\t},\n\t\t\thitOut: function() {\n\t\t\t\tdropLocation = null; // signal unsuccessful\n\t\t\t},\n\t\t\thitDone: function() { // Called after a hitOut OR before a dragEnd\n\t\t\t\tenableCursor();\n\t\t\t\t_this.unrenderDrag();\n\t\t\t},\n\t\t\tinteractionEnd: function(ev) {\n\t\t\t\tif (dropLocation) { // element was dropped on a valid hit\n\t\t\t\t\t_this.view.reportExternalDrop(meta, dropLocation, el, ev, ui);\n\t\t\t\t}\n\t\t\t\t_this.isDraggingExternal = false;\n\t\t\t\t_this.externalDragListener = null;\n\t\t\t}\n\t\t});\n\n\t\tdragListener.startDrag(ev); // start listening immediately\n\t},\n\n\n\t// Given a hit to be dropped upon, and misc data associated with the jqui drag (guaranteed to be a plain object),\n\t// returns the zoned start/end dates for the event that would result from the hypothetical drop. end might be null.\n\t// Returning a null value signals an invalid drop hit.\n\t// DOES NOT consider overlap/constraint.\n\tcomputeExternalDrop: function(span, meta) {\n\t\tvar calendar = this.view.calendar;\n\t\tvar dropLocation = {\n\t\t\tstart: calendar.applyTimezone(span.start), // simulate a zoned event start date\n\t\t\tend: null\n\t\t};\n\n\t\t// if dropped on an all-day span, and element's metadata specified a time, set it\n\t\tif (meta.startTime && !dropLocation.start.hasTime()) {\n\t\t\tdropLocation.start.time(meta.startTime);\n\t\t}\n\n\t\tif (meta.duration) {\n\t\t\tdropLocation.end = dropLocation.start.clone().add(meta.duration);\n\t\t}\n\n\t\treturn dropLocation;\n\t},\n\n\n\n\t/* Drag Rendering (for both events and an external elements)\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders a visual indication of an event or external element being dragged.\n\t// `dropLocation` contains hypothetical start/end/allDay values the event would have if dropped. end can be null.\n\t// `seg` is the internal segment object that is being dragged. If dragging an external element, `seg` is null.\n\t// A truthy returned value indicates this method has rendered a helper element.\n\t// Must return elements used for any mock events.\n\trenderDrag: function(dropLocation, seg) {\n\t\t// subclasses must implement\n\t},\n\n\n\t// Unrenders a visual indication of an event or external element being dragged\n\tunrenderDrag: function() {\n\t\t// subclasses must implement\n\t},\n\n\n\t/* Resizing\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Creates a listener that tracks the user as they resize an event segment.\n\t// Generic enough to work with any type of Grid.\n\tbuildSegResizeListener: function(seg, isStart) {\n\t\tvar _this = this;\n\t\tvar view = this.view;\n\t\tvar calendar = view.calendar;\n\t\tvar el = seg.el;\n\t\tvar event = seg.event;\n\t\tvar eventEnd = calendar.getEventEnd(event);\n\t\tvar isDragging;\n\t\tvar resizeLocation; // zoned event date properties. falsy if invalid resize\n\n\t\t// Tracks mouse movement over the *grid's* coordinate map\n\t\tvar dragListener = this.segResizeListener = new HitDragListener(this, {\n\t\t\tscroll: view.opt('dragScroll'),\n\t\t\tsubjectEl: el,\n\t\t\tinteractionStart: function() {\n\t\t\t\tisDragging = false;\n\t\t\t},\n\t\t\tdragStart: function(ev) {\n\t\t\t\tisDragging = true;\n\t\t\t\t_this.handleSegMouseout(seg, ev); // ensure a mouseout on the manipulated event has been reported\n\t\t\t\t_this.segResizeStart(seg, ev);\n\t\t\t},\n\t\t\thitOver: function(hit, isOrig, origHit) {\n\t\t\t\tvar origHitSpan = _this.getHitSpan(origHit);\n\t\t\t\tvar hitSpan = _this.getHitSpan(hit);\n\n\t\t\t\tresizeLocation = isStart ?\n\t\t\t\t\t_this.computeEventStartResize(origHitSpan, hitSpan, event) :\n\t\t\t\t\t_this.computeEventEndResize(origHitSpan, hitSpan, event);\n\n\t\t\t\tif (resizeLocation) {\n\t\t\t\t\tif (!calendar.isEventSpanAllowed(_this.eventToSpan(resizeLocation), event)) {\n\t\t\t\t\t\tdisableCursor();\n\t\t\t\t\t\tresizeLocation = null;\n\t\t\t\t\t}\n\t\t\t\t\t// no change? (FYI, event dates might have zones)\n\t\t\t\t\telse if (\n\t\t\t\t\t\tresizeLocation.start.isSame(event.start.clone().stripZone()) &&\n\t\t\t\t\t\tresizeLocation.end.isSame(eventEnd.clone().stripZone())\n\t\t\t\t\t) {\n\t\t\t\t\t\tresizeLocation = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (resizeLocation) {\n\t\t\t\t\tview.hideEvent(event);\n\t\t\t\t\t_this.renderEventResize(resizeLocation, seg);\n\t\t\t\t}\n\t\t\t},\n\t\t\thitOut: function() { // called before mouse moves to a different hit OR moved out of all hits\n\t\t\t\tresizeLocation = null;\n\t\t\t\tview.showEvent(event); // for when out-of-bounds. show original\n\t\t\t},\n\t\t\thitDone: function() { // resets the rendering to show the original event\n\t\t\t\t_this.unrenderEventResize();\n\t\t\t\tenableCursor();\n\t\t\t},\n\t\t\tinteractionEnd: function(ev) {\n\t\t\t\tif (isDragging) {\n\t\t\t\t\t_this.segResizeStop(seg, ev);\n\t\t\t\t}\n\n\t\t\t\tif (resizeLocation) { // valid date to resize to?\n\t\t\t\t\t// no need to re-show original, will rerender all anyways. esp important if eventRenderWait\n\t\t\t\t\tview.reportSegResize(seg, resizeLocation, _this.largeUnit, el, ev);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tview.showEvent(event);\n\t\t\t\t}\n\t\t\t\t_this.segResizeListener = null;\n\t\t\t}\n\t\t});\n\n\t\treturn dragListener;\n\t},\n\n\n\t// Called before event segment resizing starts\n\tsegResizeStart: function(seg, ev) {\n\t\tthis.isResizingSeg = true;\n\t\tthis.view.publiclyTrigger('eventResizeStart', seg.el[0], seg.event, ev, {}); // last argument is jqui dummy\n\t},\n\n\n\t// Called after event segment resizing stops\n\tsegResizeStop: function(seg, ev) {\n\t\tthis.isResizingSeg = false;\n\t\tthis.view.publiclyTrigger('eventResizeStop', seg.el[0], seg.event, ev, {}); // last argument is jqui dummy\n\t},\n\n\n\t// Returns new date-information for an event segment being resized from its start\n\tcomputeEventStartResize: function(startSpan, endSpan, event) {\n\t\treturn this.computeEventResize('start', startSpan, endSpan, event);\n\t},\n\n\n\t// Returns new date-information for an event segment being resized from its end\n\tcomputeEventEndResize: function(startSpan, endSpan, event) {\n\t\treturn this.computeEventResize('end', startSpan, endSpan, event);\n\t},\n\n\n\t// Returns new zoned date information for an event segment being resized from its start OR end\n\t// `type` is either 'start' or 'end'.\n\t// DOES NOT consider overlap/constraint.\n\tcomputeEventResize: function(type, startSpan, endSpan, event) {\n\t\tvar calendar = this.view.calendar;\n\t\tvar delta = this.diffDates(endSpan[type], startSpan[type]);\n\t\tvar resizeLocation; // zoned event date properties\n\t\tvar defaultDuration;\n\n\t\t// build original values to work from, guaranteeing a start and end\n\t\tresizeLocation = {\n\t\t\tstart: event.start.clone(),\n\t\t\tend: calendar.getEventEnd(event),\n\t\t\tallDay: event.allDay\n\t\t};\n\n\t\t// if an all-day event was in a timed area and was resized to a time, adjust start/end to have times\n\t\tif (resizeLocation.allDay && durationHasTime(delta)) {\n\t\t\tresizeLocation.allDay = false;\n\t\t\tcalendar.normalizeEventTimes(resizeLocation);\n\t\t}\n\n\t\tresizeLocation[type].add(delta); // apply delta to start or end\n\n\t\t// if the event was compressed too small, find a new reasonable duration for it\n\t\tif (!resizeLocation.start.isBefore(resizeLocation.end)) {\n\n\t\t\tdefaultDuration =\n\t\t\t\tthis.minResizeDuration || // TODO: hack\n\t\t\t\t(event.allDay ?\n\t\t\t\t\tcalendar.defaultAllDayEventDuration :\n\t\t\t\t\tcalendar.defaultTimedEventDuration);\n\n\t\t\tif (type == 'start') { // resizing the start?\n\t\t\t\tresizeLocation.start = resizeLocation.end.clone().subtract(defaultDuration);\n\t\t\t}\n\t\t\telse { // resizing the end?\n\t\t\t\tresizeLocation.end = resizeLocation.start.clone().add(defaultDuration);\n\t\t\t}\n\t\t}\n\n\t\treturn resizeLocation;\n\t},\n\n\n\t// Renders a visual indication of an event being resized.\n\t// `range` has the updated dates of the event. `seg` is the original segment object involved in the drag.\n\t// Must return elements used for any mock events.\n\trenderEventResize: function(range, seg) {\n\t\t// subclasses must implement\n\t},\n\n\n\t// Unrenders a visual indication of an event being resized.\n\tunrenderEventResize: function() {\n\t\t// subclasses must implement\n\t},\n\n\n\t/* Rendering Utils\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Compute the text that should be displayed on an event's element.\n\t// `range` can be the Event object itself, or something range-like, with at least a `start`.\n\t// If event times are disabled, or the event has no time, will return a blank string.\n\t// If not specified, formatStr will default to the eventTimeFormat setting,\n\t// and displayEnd will default to the displayEventEnd setting.\n\tgetEventTimeText: function(range, formatStr, displayEnd) {\n\n\t\tif (formatStr == null) {\n\t\t\tformatStr = this.eventTimeFormat;\n\t\t}\n\n\t\tif (displayEnd == null) {\n\t\t\tdisplayEnd = this.displayEventEnd;\n\t\t}\n\n\t\tif (this.displayEventTime && range.start.hasTime()) {\n\t\t\tif (displayEnd && range.end) {\n\t\t\t\treturn this.view.formatRange(range, formatStr);\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn range.start.format(formatStr);\n\t\t\t}\n\t\t}\n\n\t\treturn '';\n\t},\n\n\n\t// Generic utility for generating the HTML classNames for an event segment's element\n\tgetSegClasses: function(seg, isDraggable, isResizable) {\n\t\tvar view = this.view;\n\t\tvar classes = [\n\t\t\t'fc-event',\n\t\t\tseg.isStart ? 'fc-start' : 'fc-not-start',\n\t\t\tseg.isEnd ? 'fc-end' : 'fc-not-end'\n\t\t].concat(this.getSegCustomClasses(seg));\n\n\t\tif (isDraggable) {\n\t\t\tclasses.push('fc-draggable');\n\t\t}\n\t\tif (isResizable) {\n\t\t\tclasses.push('fc-resizable');\n\t\t}\n\n\t\t// event is currently selected? attach a className.\n\t\tif (view.isEventSelected(seg.event)) {\n\t\t\tclasses.push('fc-selected');\n\t\t}\n\n\t\treturn classes;\n\t},\n\n\n\t// List of classes that were defined by the caller of the API in some way\n\tgetSegCustomClasses: function(seg) {\n\t\tvar event = seg.event;\n\n\t\treturn [].concat(\n\t\t\tevent.className, // guaranteed to be an array\n\t\t\tevent.source ? event.source.className : []\n\t\t);\n\t},\n\n\n\t// Utility for generating event skin-related CSS properties\n\tgetSegSkinCss: function(seg) {\n\t\treturn {\n\t\t\t'background-color': this.getSegBackgroundColor(seg),\n\t\t\t'border-color': this.getSegBorderColor(seg),\n\t\t\tcolor: this.getSegTextColor(seg)\n\t\t};\n\t},\n\n\n\t// Queries for caller-specified color, then falls back to default\n\tgetSegBackgroundColor: function(seg) {\n\t\treturn seg.event.backgroundColor ||\n\t\t\tseg.event.color ||\n\t\t\tthis.getSegDefaultBackgroundColor(seg);\n\t},\n\n\n\tgetSegDefaultBackgroundColor: function(seg) {\n\t\tvar source = seg.event.source || {};\n\n\t\treturn source.backgroundColor ||\n\t\t\tsource.color ||\n\t\t\tthis.view.opt('eventBackgroundColor') ||\n\t\t\tthis.view.opt('eventColor');\n\t},\n\n\n\t// Queries for caller-specified color, then falls back to default\n\tgetSegBorderColor: function(seg) {\n\t\treturn seg.event.borderColor ||\n\t\t\tseg.event.color ||\n\t\t\tthis.getSegDefaultBorderColor(seg);\n\t},\n\n\n\tgetSegDefaultBorderColor: function(seg) {\n\t\tvar source = seg.event.source || {};\n\n\t\treturn source.borderColor ||\n\t\t\tsource.color ||\n\t\t\tthis.view.opt('eventBorderColor') ||\n\t\t\tthis.view.opt('eventColor');\n\t},\n\n\n\t// Queries for caller-specified color, then falls back to default\n\tgetSegTextColor: function(seg) {\n\t\treturn seg.event.textColor ||\n\t\t\tthis.getSegDefaultTextColor(seg);\n\t},\n\n\n\tgetSegDefaultTextColor: function(seg) {\n\t\tvar source = seg.event.source || {};\n\n\t\treturn source.textColor ||\n\t\t\tthis.view.opt('eventTextColor');\n\t},\n\n\n\t/* Converting events -> eventRange -> eventSpan -> eventSegs\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Generates an array of segments for the given single event\n\t// Can accept an event \"location\" as well (which only has start/end and no allDay)\n\teventToSegs: function(event) {\n\t\treturn this.eventsToSegs([ event ]);\n\t},\n\n\n\teventToSpan: function(event) {\n\t\treturn this.eventToSpans(event)[0];\n\t},\n\n\n\t// Generates spans (always unzoned) for the given event.\n\t// Does not do any inverting for inverse-background events.\n\t// Can accept an event \"location\" as well (which only has start/end and no allDay)\n\teventToSpans: function(event) {\n\t\tvar range = this.eventToRange(event);\n\t\treturn this.eventRangeToSpans(range, event);\n\t},\n\n\n\n\t// Converts an array of event objects into an array of event segment objects.\n\t// A custom `segSliceFunc` may be given for arbitrarily slicing up events.\n\t// Doesn't guarantee an order for the resulting array.\n\teventsToSegs: function(allEvents, segSliceFunc) {\n\t\tvar _this = this;\n\t\tvar eventsById = groupEventsById(allEvents);\n\t\tvar segs = [];\n\n\t\t$.each(eventsById, function(id, events) {\n\t\t\tvar ranges = [];\n\t\t\tvar i;\n\n\t\t\tfor (i = 0; i < events.length; i++) {\n\t\t\t\tranges.push(_this.eventToRange(events[i]));\n\t\t\t}\n\n\t\t\t// inverse-background events (utilize only the first event in calculations)\n\t\t\tif (isInverseBgEvent(events[0])) {\n\t\t\t\tranges = _this.invertRanges(ranges);\n\n\t\t\t\tfor (i = 0; i < ranges.length; i++) {\n\t\t\t\t\tsegs.push.apply(segs, // append to\n\t\t\t\t\t\t_this.eventRangeToSegs(ranges[i], events[0], segSliceFunc));\n\t\t\t\t}\n\t\t\t}\n\t\t\t// normal event ranges\n\t\t\telse {\n\t\t\t\tfor (i = 0; i < ranges.length; i++) {\n\t\t\t\t\tsegs.push.apply(segs, // append to\n\t\t\t\t\t\t_this.eventRangeToSegs(ranges[i], events[i], segSliceFunc));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn segs;\n\t},\n\n\n\t// Generates the unzoned start/end dates an event appears to occupy\n\t// Can accept an event \"location\" as well (which only has start/end and no allDay)\n\teventToRange: function(event) {\n\t\tvar calendar = this.view.calendar;\n\t\tvar start = event.start.clone().stripZone();\n\t\tvar end = (\n\t\t\t\tevent.end ?\n\t\t\t\t\tevent.end.clone() :\n\t\t\t\t\t// derive the end from the start and allDay. compute allDay if necessary\n\t\t\t\t\tcalendar.getDefaultEventEnd(\n\t\t\t\t\t\tevent.allDay != null ?\n\t\t\t\t\t\t\tevent.allDay :\n\t\t\t\t\t\t\t!event.start.hasTime(),\n\t\t\t\t\t\tevent.start\n\t\t\t\t\t)\n\t\t\t).stripZone();\n\n\t\t// hack: dynamic locale change forgets to upate stored event localed\n\t\tcalendar.localizeMoment(start);\n\t\tcalendar.localizeMoment(end);\n\n\t\treturn { start: start, end: end };\n\t},\n\n\n\t// Given an event's range (unzoned start/end), and the event itself,\n\t// slice into segments (using the segSliceFunc function if specified)\n\teventRangeToSegs: function(range, event, segSliceFunc) {\n\t\tvar spans = this.eventRangeToSpans(range, event);\n\t\tvar segs = [];\n\t\tvar i;\n\n\t\tfor (i = 0; i < spans.length; i++) {\n\t\t\tsegs.push.apply(segs, // append to\n\t\t\t\tthis.eventSpanToSegs(spans[i], event, segSliceFunc));\n\t\t}\n\n\t\treturn segs;\n\t},\n\n\n\t// Given an event's unzoned date range, return an array of \"span\" objects.\n\t// Subclasses can override.\n\teventRangeToSpans: function(range, event) {\n\t\treturn [ $.extend({}, range) ]; // copy into a single-item array\n\t},\n\n\n\t// Given an event's span (unzoned start/end and other misc data), and the event itself,\n\t// slices into segments and attaches event-derived properties to them.\n\teventSpanToSegs: function(span, event, segSliceFunc) {\n\t\tvar segs = segSliceFunc ? segSliceFunc(span) : this.spanToSegs(span);\n\t\tvar i, seg;\n\n\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\tseg = segs[i];\n\t\t\tseg.event = event;\n\t\t\tseg.eventStartMS = +span.start; // TODO: not the best name after making spans unzoned\n\t\t\tseg.eventDurationMS = span.end - span.start;\n\t\t}\n\n\t\treturn segs;\n\t},\n\n\n\t// Produces a new array of range objects that will cover all the time NOT covered by the given ranges.\n\t// SIDE EFFECT: will mutate the given array and will use its date references.\n\tinvertRanges: function(ranges) {\n\t\tvar view = this.view;\n\t\tvar viewStart = view.start.clone(); // need a copy\n\t\tvar viewEnd = view.end.clone(); // need a copy\n\t\tvar inverseRanges = [];\n\t\tvar start = viewStart; // the end of the previous range. the start of the new range\n\t\tvar i, range;\n\n\t\t// ranges need to be in order. required for our date-walking algorithm\n\t\tranges.sort(compareRanges);\n\n\t\tfor (i = 0; i < ranges.length; i++) {\n\t\t\trange = ranges[i];\n\n\t\t\t// add the span of time before the event (if there is any)\n\t\t\tif (range.start > start) { // compare millisecond time (skip any ambig logic)\n\t\t\t\tinverseRanges.push({\n\t\t\t\t\tstart: start,\n\t\t\t\t\tend: range.start\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tstart = range.end;\n\t\t}\n\n\t\t// add the span of time after the last event (if there is any)\n\t\tif (start < viewEnd) { // compare millisecond time (skip any ambig logic)\n\t\t\tinverseRanges.push({\n\t\t\t\tstart: start,\n\t\t\t\tend: viewEnd\n\t\t\t});\n\t\t}\n\n\t\treturn inverseRanges;\n\t},\n\n\n\tsortEventSegs: function(segs) {\n\t\tsegs.sort(proxy(this, 'compareEventSegs'));\n\t},\n\n\n\t// A cmp function for determining which segments should take visual priority\n\tcompareEventSegs: function(seg1, seg2) {\n\t\treturn seg1.eventStartMS - seg2.eventStartMS || // earlier events go first\n\t\t\tseg2.eventDurationMS - seg1.eventDurationMS || // tie? longer events go first\n\t\t\tseg2.event.allDay - seg1.event.allDay || // tie? put all-day events first (booleans cast to 0/1)\n\t\t\tcompareByFieldSpecs(seg1.event, seg2.event, this.view.eventOrderSpecs);\n\t}\n\n});\n\n\n/* Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n\n\nfunction pluckEventDateProps(event) {\n\treturn {\n\t\tstart: event.start.clone(),\n\t\tend: event.end ? event.end.clone() : null,\n\t\tallDay: event.allDay // keep it the same\n\t};\n}\nFC.pluckEventDateProps = pluckEventDateProps;\n\n\nfunction isBgEvent(event) { // returns true if background OR inverse-background\n\tvar rendering = getEventRendering(event);\n\treturn rendering === 'background' || rendering === 'inverse-background';\n}\nFC.isBgEvent = isBgEvent; // export\n\n\nfunction isInverseBgEvent(event) {\n\treturn getEventRendering(event) === 'inverse-background';\n}\n\n\nfunction getEventRendering(event) {\n\treturn firstDefined((event.source || {}).rendering, event.rendering);\n}\n\n\nfunction groupEventsById(events) {\n\tvar eventsById = {};\n\tvar i, event;\n\n\tfor (i = 0; i < events.length; i++) {\n\t\tevent = events[i];\n\t\t(eventsById[event._id] || (eventsById[event._id] = [])).push(event);\n\t}\n\n\treturn eventsById;\n}\n\n\n// A cmp function for determining which non-inverted \"ranges\" (see above) happen earlier\nfunction compareRanges(range1, range2) {\n\treturn range1.start - range2.start; // earlier ranges go first\n}\n\n\n/* External-Dragging-Element Data\n----------------------------------------------------------------------------------------------------------------------*/\n\n// Require all HTML5 data-* attributes used by FullCalendar to have this prefix.\n// A value of '' will query attributes like data-event. A value of 'fc' will query attributes like data-fc-event.\nFC.dataAttrPrefix = '';\n\n// Given a jQuery element that might represent a dragged FullCalendar event, returns an intermediate data structure\n// to be used for Event Object creation.\n// A defined `.eventProps`, even when empty, indicates that an event should be created.\nfunction getDraggedElMeta(el) {\n\tvar prefix = FC.dataAttrPrefix;\n\tvar eventProps; // properties for creating the event, not related to date/time\n\tvar startTime; // a Duration\n\tvar duration;\n\tvar stick;\n\n\tif (prefix) { prefix += '-'; }\n\teventProps = el.data(prefix + 'event') || null;\n\n\tif (eventProps) {\n\t\tif (typeof eventProps === 'object') {\n\t\t\teventProps = $.extend({}, eventProps); // make a copy\n\t\t}\n\t\telse { // something like 1 or true. still signal event creation\n\t\t\teventProps = {};\n\t\t}\n\n\t\t// pluck special-cased date/time properties\n\t\tstartTime = eventProps.start;\n\t\tif (startTime == null) { startTime = eventProps.time; } // accept 'time' as well\n\t\tduration = eventProps.duration;\n\t\tstick = eventProps.stick;\n\t\tdelete eventProps.start;\n\t\tdelete eventProps.time;\n\t\tdelete eventProps.duration;\n\t\tdelete eventProps.stick;\n\t}\n\n\t// fallback to standalone attribute values for each of the date/time properties\n\tif (startTime == null) { startTime = el.data(prefix + 'start'); }\n\tif (startTime == null) { startTime = el.data(prefix + 'time'); } // accept 'time' as well\n\tif (duration == null) { duration = el.data(prefix + 'duration'); }\n\tif (stick == null) { stick = el.data(prefix + 'stick'); }\n\n\t// massage into correct data types\n\tstartTime = startTime != null ? moment.duration(startTime) : null;\n\tduration = duration != null ? moment.duration(duration) : null;\n\tstick = Boolean(stick);\n\n\treturn { eventProps: eventProps, startTime: startTime, duration: duration, stick: stick };\n}\n\n\n;;\n\n/*\nA set of rendering and date-related methods for a visual component comprised of one or more rows of day columns.\nPrerequisite: the object being mixed into needs to be a *Grid*\n*/\nvar DayTableMixin = FC.DayTableMixin = {\n\n\tbreakOnWeeks: false, // should create a new row for each week?\n\tdayDates: null, // whole-day dates for each column. left to right\n\tdayIndices: null, // for each day from start, the offset\n\tdaysPerRow: null,\n\trowCnt: null,\n\tcolCnt: null,\n\tcolHeadFormat: null,\n\n\n\t// Populates internal variables used for date calculation and rendering\n\tupdateDayTable: function() {\n\t\tvar view = this.view;\n\t\tvar date = this.start.clone();\n\t\tvar dayIndex = -1;\n\t\tvar dayIndices = [];\n\t\tvar dayDates = [];\n\t\tvar daysPerRow;\n\t\tvar firstDay;\n\t\tvar rowCnt;\n\n\t\twhile (date.isBefore(this.end)) { // loop each day from start to end\n\t\t\tif (view.isHiddenDay(date)) {\n\t\t\t\tdayIndices.push(dayIndex + 0.5); // mark that it's between indices\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdayIndex++;\n\t\t\t\tdayIndices.push(dayIndex);\n\t\t\t\tdayDates.push(date.clone());\n\t\t\t}\n\t\t\tdate.add(1, 'days');\n\t\t}\n\n\t\tif (this.breakOnWeeks) {\n\t\t\t// count columns until the day-of-week repeats\n\t\t\tfirstDay = dayDates[0].day();\n\t\t\tfor (daysPerRow = 1; daysPerRow < dayDates.length; daysPerRow++) {\n\t\t\t\tif (dayDates[daysPerRow].day() == firstDay) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\trowCnt = Math.ceil(dayDates.length / daysPerRow);\n\t\t}\n\t\telse {\n\t\t\trowCnt = 1;\n\t\t\tdaysPerRow = dayDates.length;\n\t\t}\n\n\t\tthis.dayDates = dayDates;\n\t\tthis.dayIndices = dayIndices;\n\t\tthis.daysPerRow = daysPerRow;\n\t\tthis.rowCnt = rowCnt;\n\n\t\tthis.updateDayTableCols();\n\t},\n\n\n\t// Computes and assigned the colCnt property and updates any options that may be computed from it\n\tupdateDayTableCols: function() {\n\t\tthis.colCnt = this.computeColCnt();\n\t\tthis.colHeadFormat = this.view.opt('columnFormat') || this.computeColHeadFormat();\n\t},\n\n\n\t// Determines how many columns there should be in the table\n\tcomputeColCnt: function() {\n\t\treturn this.daysPerRow;\n\t},\n\n\n\t// Computes the ambiguously-timed moment for the given cell\n\tgetCellDate: function(row, col) {\n\t\treturn this.dayDates[\n\t\t\t\tthis.getCellDayIndex(row, col)\n\t\t\t].clone();\n\t},\n\n\n\t// Computes the ambiguously-timed date range for the given cell\n\tgetCellRange: function(row, col) {\n\t\tvar start = this.getCellDate(row, col);\n\t\tvar end = start.clone().add(1, 'days');\n\n\t\treturn { start: start, end: end };\n\t},\n\n\n\t// Returns the number of day cells, chronologically, from the first of the grid (0-based)\n\tgetCellDayIndex: function(row, col) {\n\t\treturn row * this.daysPerRow + this.getColDayIndex(col);\n\t},\n\n\n\t// Returns the numner of day cells, chronologically, from the first cell in *any given row*\n\tgetColDayIndex: function(col) {\n\t\tif (this.isRTL) {\n\t\t\treturn this.colCnt - 1 - col;\n\t\t}\n\t\telse {\n\t\t\treturn col;\n\t\t}\n\t},\n\n\n\t// Given a date, returns its chronolocial cell-index from the first cell of the grid.\n\t// If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets.\n\t// If before the first offset, returns a negative number.\n\t// If after the last offset, returns an offset past the last cell offset.\n\t// Only works for *start* dates of cells. Will not work for exclusive end dates for cells.\n\tgetDateDayIndex: function(date) {\n\t\tvar dayIndices = this.dayIndices;\n\t\tvar dayOffset = date.diff(this.start, 'days');\n\n\t\tif (dayOffset < 0) {\n\t\t\treturn dayIndices[0] - 1;\n\t\t}\n\t\telse if (dayOffset >= dayIndices.length) {\n\t\t\treturn dayIndices[dayIndices.length - 1] + 1;\n\t\t}\n\t\telse {\n\t\t\treturn dayIndices[dayOffset];\n\t\t}\n\t},\n\n\n\t/* Options\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Computes a default column header formatting string if `colFormat` is not explicitly defined\n\tcomputeColHeadFormat: function() {\n\t\t// if more than one week row, or if there are a lot of columns with not much space,\n\t\t// put just the day numbers will be in each cell\n\t\tif (this.rowCnt > 1 || this.colCnt > 10) {\n\t\t\treturn 'ddd'; // \"Sat\"\n\t\t}\n\t\t// multiple days, so full single date string WON'T be in title text\n\t\telse if (this.colCnt > 1) {\n\t\t\treturn this.view.opt('dayOfMonthFormat'); // \"Sat 12/10\"\n\t\t}\n\t\t// single day, so full single date string will probably be in title text\n\t\telse {\n\t\t\treturn 'dddd'; // \"Saturday\"\n\t\t}\n\t},\n\n\n\t/* Slicing\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Slices up a date range into a segment for every week-row it intersects with\n\tsliceRangeByRow: function(range) {\n\t\tvar daysPerRow = this.daysPerRow;\n\t\tvar normalRange = this.view.computeDayRange(range); // make whole-day range, considering nextDayThreshold\n\t\tvar rangeFirst = this.getDateDayIndex(normalRange.start); // inclusive first index\n\t\tvar rangeLast = this.getDateDayIndex(normalRange.end.clone().subtract(1, 'days')); // inclusive last index\n\t\tvar segs = [];\n\t\tvar row;\n\t\tvar rowFirst, rowLast; // inclusive day-index range for current row\n\t\tvar segFirst, segLast; // inclusive day-index range for segment\n\n\t\tfor (row = 0; row < this.rowCnt; row++) {\n\t\t\trowFirst = row * daysPerRow;\n\t\t\trowLast = rowFirst + daysPerRow - 1;\n\n\t\t\t// intersect segment's offset range with the row's\n\t\t\tsegFirst = Math.max(rangeFirst, rowFirst);\n\t\t\tsegLast = Math.min(rangeLast, rowLast);\n\n\t\t\t// deal with in-between indices\n\t\t\tsegFirst = Math.ceil(segFirst); // in-between starts round to next cell\n\t\t\tsegLast = Math.floor(segLast); // in-between ends round to prev cell\n\n\t\t\tif (segFirst <= segLast) { // was there any intersection with the current row?\n\t\t\t\tsegs.push({\n\t\t\t\t\trow: row,\n\n\t\t\t\t\t// normalize to start of row\n\t\t\t\t\tfirstRowDayIndex: segFirst - rowFirst,\n\t\t\t\t\tlastRowDayIndex: segLast - rowFirst,\n\n\t\t\t\t\t// must be matching integers to be the segment's start/end\n\t\t\t\t\tisStart: segFirst === rangeFirst,\n\t\t\t\t\tisEnd: segLast === rangeLast\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn segs;\n\t},\n\n\n\t// Slices up a date range into a segment for every day-cell it intersects with.\n\t// TODO: make more DRY with sliceRangeByRow somehow.\n\tsliceRangeByDay: function(range) {\n\t\tvar daysPerRow = this.daysPerRow;\n\t\tvar normalRange = this.view.computeDayRange(range); // make whole-day range, considering nextDayThreshold\n\t\tvar rangeFirst = this.getDateDayIndex(normalRange.start); // inclusive first index\n\t\tvar rangeLast = this.getDateDayIndex(normalRange.end.clone().subtract(1, 'days')); // inclusive last index\n\t\tvar segs = [];\n\t\tvar row;\n\t\tvar rowFirst, rowLast; // inclusive day-index range for current row\n\t\tvar i;\n\t\tvar segFirst, segLast; // inclusive day-index range for segment\n\n\t\tfor (row = 0; row < this.rowCnt; row++) {\n\t\t\trowFirst = row * daysPerRow;\n\t\t\trowLast = rowFirst + daysPerRow - 1;\n\n\t\t\tfor (i = rowFirst; i <= rowLast; i++) {\n\n\t\t\t\t// intersect segment's offset range with the row's\n\t\t\t\tsegFirst = Math.max(rangeFirst, i);\n\t\t\t\tsegLast = Math.min(rangeLast, i);\n\n\t\t\t\t// deal with in-between indices\n\t\t\t\tsegFirst = Math.ceil(segFirst); // in-between starts round to next cell\n\t\t\t\tsegLast = Math.floor(segLast); // in-between ends round to prev cell\n\n\t\t\t\tif (segFirst <= segLast) { // was there any intersection with the current row?\n\t\t\t\t\tsegs.push({\n\t\t\t\t\t\trow: row,\n\n\t\t\t\t\t\t// normalize to start of row\n\t\t\t\t\t\tfirstRowDayIndex: segFirst - rowFirst,\n\t\t\t\t\t\tlastRowDayIndex: segLast - rowFirst,\n\n\t\t\t\t\t\t// must be matching integers to be the segment's start/end\n\t\t\t\t\t\tisStart: segFirst === rangeFirst,\n\t\t\t\t\t\tisEnd: segLast === rangeLast\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn segs;\n\t},\n\n\n\t/* Header Rendering\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trenderHeadHtml: function() {\n\t\tvar view = this.view;\n\n\t\treturn '' +\n\t\t\t'
    ' +\n\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t\t\tthis.renderHeadTrHtml() +\n\t\t\t\t\t'' +\n\t\t\t\t'
    ' +\n\t\t\t'
    ';\n\t},\n\n\n\trenderHeadIntroHtml: function() {\n\t\treturn this.renderIntroHtml(); // fall back to generic\n\t},\n\n\n\trenderHeadTrHtml: function() {\n\t\treturn '' +\n\t\t\t'
    1 ?\n\t\t\t\t\t' colspan=\"' + colspan + '\"' :\n\t\t\t\t\t'') +\n\t\t\t\t(otherAttrs ?\n\t\t\t\t\t' ' + otherAttrs :\n\t\t\t\t\t'') +\n\t\t\t\t'>' +\n\t\t\t\t// don't make a link if the heading could represent multiple days, or if there's only one day (forceOff)\n\t\t\t\tview.buildGotoAnchorHtml(\n\t\t\t\t\t{ date: date, forceOff: this.rowCnt > 1 || this.colCnt === 1 },\n\t\t\t\t\thtmlEscape(date.format(this.colHeadFormat)) // inner HTML\n\t\t\t\t) +\n\t\t\t'
    ' +\n\t\t\t\t\t\tthis.renderBgTrHtml(row) +\n\t\t\t\t\t'
    ' +\n\t\t\t\t'' +\n\t\t\t\t'
    ' +\n\t\t\t\t\t'' +\n\t\t\t\t\t\t(this.numbersVisible ?\n\t\t\t\t\t\t\t'' +\n\t\t\t\t\t\t\t\tthis.renderNumberTrHtml(row) +\n\t\t\t\t\t\t\t'' :\n\t\t\t\t\t\t\t''\n\t\t\t\t\t\t\t) +\n\t\t\t\t\t'
    ' +\n\t\t\t\t'
    ' +\n\t\t\t'';\n\t},\n\n\n\t/* Grid Number Rendering\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trenderNumberTrHtml: function(row) {\n\t\treturn '' +\n\t\t\t'' +\n\t\t\t\t(this.isRTL ? '' : this.renderNumberIntroHtml(row)) +\n\t\t\t\tthis.renderNumberCellsHtml(row) +\n\t\t\t\t(this.isRTL ? this.renderNumberIntroHtml(row) : '') +\n\t\t\t'';\n\t},\n\n\n\trenderNumberIntroHtml: function(row) {\n\t\treturn this.renderIntroHtml();\n\t},\n\n\n\trenderNumberCellsHtml: function(row) {\n\t\tvar htmls = [];\n\t\tvar col, date;\n\n\t\tfor (col = 0; col < this.colCnt; col++) {\n\t\t\tdate = this.getCellDate(row, col);\n\t\t\thtmls.push(this.renderNumberCellHtml(date));\n\t\t}\n\n\t\treturn htmls.join('');\n\t},\n\n\n\t// Generates the HTML for the s of the \"number\" row in the DayGrid's content skeleton.\n\t// The number row will only exist if either day numbers or week numbers are turned on.\n\trenderNumberCellHtml: function(date) {\n\t\tvar html = '';\n\t\tvar classes;\n\t\tvar weekCalcFirstDoW;\n\n\t\tif (!this.view.dayNumbersVisible && !this.view.cellWeekNumbersVisible) {\n\t\t\t// no numbers in day cell (week number must be along the side)\n\t\t\treturn ''; // will create an empty space above events :(\n\t\t}\n\n\t\tclasses = this.getDayClasses(date);\n\t\tclasses.unshift('fc-day-top');\n\n\t\tif (this.view.cellWeekNumbersVisible) {\n\t\t\t// To determine the day of week number change under ISO, we cannot\n\t\t\t// rely on moment.js methods such as firstDayOfWeek() or weekday(),\n\t\t\t// because they rely on the locale's dow (possibly overridden by\n\t\t\t// our firstDay option), which may not be Monday. We cannot change\n\t\t\t// dow, because that would affect the calendar start day as well.\n\t\t\tif (date._locale._fullCalendar_weekCalc === 'ISO') {\n\t\t\t\tweekCalcFirstDoW = 1; // Monday by ISO 8601 definition\n\t\t\t}\n\t\t\telse {\n\t\t\t\tweekCalcFirstDoW = date._locale.firstDayOfWeek();\n\t\t\t}\n\t\t}\n\n\t\thtml += '';\n\n\t\tif (this.view.cellWeekNumbersVisible && (date.day() == weekCalcFirstDoW)) {\n\t\t\thtml += this.view.buildGotoAnchorHtml(\n\t\t\t\t{ date: date, type: 'week' },\n\t\t\t\t{ 'class': 'fc-week-number' },\n\t\t\t\tdate.format('w') // inner HTML\n\t\t\t);\n\t\t}\n\n\t\tif (this.view.dayNumbersVisible) {\n\t\t\thtml += this.view.buildGotoAnchorHtml(\n\t\t\t\tdate,\n\t\t\t\t{ 'class': 'fc-day-number' },\n\t\t\t\tdate.date() // inner HTML\n\t\t\t);\n\t\t}\n\n\t\thtml += '';\n\n\t\treturn html;\n\t},\n\n\n\t/* Options\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Computes a default event time formatting string if `timeFormat` is not explicitly defined\n\tcomputeEventTimeFormat: function() {\n\t\treturn this.view.opt('extraSmallTimeFormat'); // like \"6p\" or \"6:30p\"\n\t},\n\n\n\t// Computes a default `displayEventEnd` value if one is not expliclty defined\n\tcomputeDisplayEventEnd: function() {\n\t\treturn this.colCnt == 1; // we'll likely have space if there's only one day\n\t},\n\n\n\t/* Dates\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trangeUpdated: function() {\n\t\tthis.updateDayTable();\n\t},\n\n\n\t// Slices up the given span (unzoned start/end with other misc data) into an array of segments\n\tspanToSegs: function(span) {\n\t\tvar segs = this.sliceRangeByRow(span);\n\t\tvar i, seg;\n\n\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\tseg = segs[i];\n\t\t\tif (this.isRTL) {\n\t\t\t\tseg.leftCol = this.daysPerRow - 1 - seg.lastRowDayIndex;\n\t\t\t\tseg.rightCol = this.daysPerRow - 1 - seg.firstRowDayIndex;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tseg.leftCol = seg.firstRowDayIndex;\n\t\t\t\tseg.rightCol = seg.lastRowDayIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn segs;\n\t},\n\n\n\t/* Hit System\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\tprepareHits: function() {\n\t\tthis.colCoordCache.build();\n\t\tthis.rowCoordCache.build();\n\t\tthis.rowCoordCache.bottoms[this.rowCnt - 1] += this.bottomCoordPadding; // hack\n\t},\n\n\n\treleaseHits: function() {\n\t\tthis.colCoordCache.clear();\n\t\tthis.rowCoordCache.clear();\n\t},\n\n\n\tqueryHit: function(leftOffset, topOffset) {\n\t\tif (this.colCoordCache.isLeftInBounds(leftOffset) && this.rowCoordCache.isTopInBounds(topOffset)) {\n\t\t\tvar col = this.colCoordCache.getHorizontalIndex(leftOffset);\n\t\t\tvar row = this.rowCoordCache.getVerticalIndex(topOffset);\n\n\t\t\tif (row != null && col != null) {\n\t\t\t\treturn this.getCellHit(row, col);\n\t\t\t}\n\t\t}\n\t},\n\n\n\tgetHitSpan: function(hit) {\n\t\treturn this.getCellRange(hit.row, hit.col);\n\t},\n\n\n\tgetHitEl: function(hit) {\n\t\treturn this.getCellEl(hit.row, hit.col);\n\t},\n\n\n\t/* Cell System\n\t------------------------------------------------------------------------------------------------------------------*/\n\t// FYI: the first column is the leftmost column, regardless of date\n\n\n\tgetCellHit: function(row, col) {\n\t\treturn {\n\t\t\trow: row,\n\t\t\tcol: col,\n\t\t\tcomponent: this, // needed unfortunately :(\n\t\t\tleft: this.colCoordCache.getLeftOffset(col),\n\t\t\tright: this.colCoordCache.getRightOffset(col),\n\t\t\ttop: this.rowCoordCache.getTopOffset(row),\n\t\t\tbottom: this.rowCoordCache.getBottomOffset(row)\n\t\t};\n\t},\n\n\n\tgetCellEl: function(row, col) {\n\t\treturn this.cellEls.eq(row * this.colCnt + col);\n\t},\n\n\n\t/* Event Drag Visualization\n\t------------------------------------------------------------------------------------------------------------------*/\n\t// TODO: move to DayGrid.event, similar to what we did with Grid's drag methods\n\n\n\t// Renders a visual indication of an event or external element being dragged.\n\t// `eventLocation` has zoned start and end (optional)\n\trenderDrag: function(eventLocation, seg) {\n\n\t\t// always render a highlight underneath\n\t\tthis.renderHighlight(this.eventToSpan(eventLocation));\n\n\t\t// if a segment from the same calendar but another component is being dragged, render a helper event\n\t\tif (seg && seg.component !== this) {\n\t\t\treturn this.renderEventLocationHelper(eventLocation, seg); // returns mock event elements\n\t\t}\n\t},\n\n\n\t// Unrenders any visual indication of a hovering event\n\tunrenderDrag: function() {\n\t\tthis.unrenderHighlight();\n\t\tthis.unrenderHelper();\n\t},\n\n\n\t/* Event Resize Visualization\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders a visual indication of an event being resized\n\trenderEventResize: function(eventLocation, seg) {\n\t\tthis.renderHighlight(this.eventToSpan(eventLocation));\n\t\treturn this.renderEventLocationHelper(eventLocation, seg); // returns mock event elements\n\t},\n\n\n\t// Unrenders a visual indication of an event being resized\n\tunrenderEventResize: function() {\n\t\tthis.unrenderHighlight();\n\t\tthis.unrenderHelper();\n\t},\n\n\n\t/* Event Helper\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders a mock \"helper\" event. `sourceSeg` is the associated internal segment object. It can be null.\n\trenderHelper: function(event, sourceSeg) {\n\t\tvar helperNodes = [];\n\t\tvar segs = this.eventToSegs(event);\n\t\tvar rowStructs;\n\n\t\tsegs = this.renderFgSegEls(segs); // assigns each seg's el and returns a subset of segs that were rendered\n\t\trowStructs = this.renderSegRows(segs);\n\n\t\t// inject each new event skeleton into each associated row\n\t\tthis.rowEls.each(function(row, rowNode) {\n\t\t\tvar rowEl = $(rowNode); // the .fc-row\n\t\t\tvar skeletonEl = $('
    '); // will be absolutely positioned\n\t\t\tvar skeletonTop;\n\n\t\t\t// If there is an original segment, match the top position. Otherwise, put it at the row's top level\n\t\t\tif (sourceSeg && sourceSeg.row === row) {\n\t\t\t\tskeletonTop = sourceSeg.el.position().top;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tskeletonTop = rowEl.find('.fc-content-skeleton tbody').position().top;\n\t\t\t}\n\n\t\t\tskeletonEl.css('top', skeletonTop)\n\t\t\t\t.find('table')\n\t\t\t\t\t.append(rowStructs[row].tbodyEl);\n\n\t\t\trowEl.append(skeletonEl);\n\t\t\thelperNodes.push(skeletonEl[0]);\n\t\t});\n\n\t\treturn ( // must return the elements rendered\n\t\t\tthis.helperEls = $(helperNodes) // array -> jQuery set\n\t\t);\n\t},\n\n\n\t// Unrenders any visual indication of a mock helper event\n\tunrenderHelper: function() {\n\t\tif (this.helperEls) {\n\t\t\tthis.helperEls.remove();\n\t\t\tthis.helperEls = null;\n\t\t}\n\t},\n\n\n\t/* Fill System (highlight, background events, business hours)\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\tfillSegTag: 'td', // override the default tag name\n\n\n\t// Renders a set of rectangles over the given segments of days.\n\t// Only returns segments that successfully rendered.\n\trenderFill: function(type, segs, className) {\n\t\tvar nodes = [];\n\t\tvar i, seg;\n\t\tvar skeletonEl;\n\n\t\tsegs = this.renderFillSegEls(type, segs); // assignes `.el` to each seg. returns successfully rendered segs\n\n\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\tseg = segs[i];\n\t\t\tskeletonEl = this.renderFillRow(type, seg, className);\n\t\t\tthis.rowEls.eq(seg.row).append(skeletonEl);\n\t\t\tnodes.push(skeletonEl[0]);\n\t\t}\n\n\t\tthis.elsByFill[type] = $(nodes);\n\n\t\treturn segs;\n\t},\n\n\n\t// Generates the HTML needed for one row of a fill. Requires the seg's el to be rendered.\n\trenderFillRow: function(type, seg, className) {\n\t\tvar colCnt = this.colCnt;\n\t\tvar startCol = seg.leftCol;\n\t\tvar endCol = seg.rightCol + 1;\n\t\tvar skeletonEl;\n\t\tvar trEl;\n\n\t\tclassName = className || type.toLowerCase();\n\n\t\tskeletonEl = $(\n\t\t\t'
    ' +\n\t\t\t\t'
    ' +\n\t\t\t'
    '\n\t\t);\n\t\ttrEl = skeletonEl.find('tr');\n\n\t\tif (startCol > 0) {\n\t\t\ttrEl.append('');\n\t\t}\n\n\t\ttrEl.append(\n\t\t\tseg.el.attr('colspan', endCol - startCol)\n\t\t);\n\n\t\tif (endCol < colCnt) {\n\t\t\ttrEl.append('');\n\t\t}\n\n\t\tthis.bookendCells(trEl);\n\n\t\treturn skeletonEl;\n\t}\n\n});\n\n;;\n\n/* Event-rendering methods for the DayGrid class\n----------------------------------------------------------------------------------------------------------------------*/\n\nDayGrid.mixin({\n\n\trowStructs: null, // an array of objects, each holding information about a row's foreground event-rendering\n\n\n\t// Unrenders all events currently rendered on the grid\n\tunrenderEvents: function() {\n\t\tthis.removeSegPopover(); // removes the \"more..\" events popover\n\t\tGrid.prototype.unrenderEvents.apply(this, arguments); // calls the super-method\n\t},\n\n\n\t// Retrieves all rendered segment objects currently rendered on the grid\n\tgetEventSegs: function() {\n\t\treturn Grid.prototype.getEventSegs.call(this) // get the segments from the super-method\n\t\t\t.concat(this.popoverSegs || []); // append the segments from the \"more...\" popover\n\t},\n\n\n\t// Renders the given background event segments onto the grid\n\trenderBgSegs: function(segs) {\n\n\t\t// don't render timed background events\n\t\tvar allDaySegs = $.grep(segs, function(seg) {\n\t\t\treturn seg.event.allDay;\n\t\t});\n\n\t\treturn Grid.prototype.renderBgSegs.call(this, allDaySegs); // call the super-method\n\t},\n\n\n\t// Renders the given foreground event segments onto the grid\n\trenderFgSegs: function(segs) {\n\t\tvar rowStructs;\n\n\t\t// render an `.el` on each seg\n\t\t// returns a subset of the segs. segs that were actually rendered\n\t\tsegs = this.renderFgSegEls(segs);\n\n\t\trowStructs = this.rowStructs = this.renderSegRows(segs);\n\n\t\t// append to each row's content skeleton\n\t\tthis.rowEls.each(function(i, rowNode) {\n\t\t\t$(rowNode).find('.fc-content-skeleton > table').append(\n\t\t\t\trowStructs[i].tbodyEl\n\t\t\t);\n\t\t});\n\n\t\treturn segs; // return only the segs that were actually rendered\n\t},\n\n\n\t// Unrenders all currently rendered foreground event segments\n\tunrenderFgSegs: function() {\n\t\tvar rowStructs = this.rowStructs || [];\n\t\tvar rowStruct;\n\n\t\twhile ((rowStruct = rowStructs.pop())) {\n\t\t\trowStruct.tbodyEl.remove();\n\t\t}\n\n\t\tthis.rowStructs = null;\n\t},\n\n\n\t// Uses the given events array to generate elements that should be appended to each row's content skeleton.\n\t// Returns an array of rowStruct objects (see the bottom of `renderSegRow`).\n\t// PRECONDITION: each segment shoud already have a rendered and assigned `.el`\n\trenderSegRows: function(segs) {\n\t\tvar rowStructs = [];\n\t\tvar segRows;\n\t\tvar row;\n\n\t\tsegRows = this.groupSegRows(segs); // group into nested arrays\n\n\t\t// iterate each row of segment groupings\n\t\tfor (row = 0; row < segRows.length; row++) {\n\t\t\trowStructs.push(\n\t\t\t\tthis.renderSegRow(row, segRows[row])\n\t\t\t);\n\t\t}\n\n\t\treturn rowStructs;\n\t},\n\n\n\t// Builds the HTML to be used for the default element for an individual segment\n\tfgSegHtml: function(seg, disableResizing) {\n\t\tvar view = this.view;\n\t\tvar event = seg.event;\n\t\tvar isDraggable = view.isEventDraggable(event);\n\t\tvar isResizableFromStart = !disableResizing && event.allDay &&\n\t\t\tseg.isStart && view.isEventResizableFromStart(event);\n\t\tvar isResizableFromEnd = !disableResizing && event.allDay &&\n\t\t\tseg.isEnd && view.isEventResizableFromEnd(event);\n\t\tvar classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd);\n\t\tvar skinCss = cssToStr(this.getSegSkinCss(seg));\n\t\tvar timeHtml = '';\n\t\tvar timeText;\n\t\tvar titleHtml;\n\n\t\tclasses.unshift('fc-day-grid-event', 'fc-h-event');\n\n\t\t// Only display a timed events time if it is the starting segment\n\t\tif (seg.isStart) {\n\t\t\ttimeText = this.getEventTimeText(event);\n\t\t\tif (timeText) {\n\t\t\t\ttimeHtml = '' + htmlEscape(timeText) + '';\n\t\t\t}\n\t\t}\n\n\t\ttitleHtml =\n\t\t\t'' +\n\t\t\t\t(htmlEscape(event.title || '') || ' ') + // we always want one line of height\n\t\t\t'';\n\t\t\n\t\treturn '
    ' +\n\t\t\t\t'
    ' +\n\t\t\t\t\t(this.isRTL ?\n\t\t\t\t\t\ttitleHtml + ' ' + timeHtml : // put a natural space in between\n\t\t\t\t\t\ttimeHtml + ' ' + titleHtml //\n\t\t\t\t\t\t) +\n\t\t\t\t'
    ' +\n\t\t\t\t(isResizableFromStart ?\n\t\t\t\t\t'
    ' :\n\t\t\t\t\t''\n\t\t\t\t\t) +\n\t\t\t\t(isResizableFromEnd ?\n\t\t\t\t\t'
    ' :\n\t\t\t\t\t''\n\t\t\t\t\t) +\n\t\t\t'';\n\t},\n\n\n\t// Given a row # and an array of segments all in the same row, render a element, a skeleton that contains\n\t// the segments. Returns object with a bunch of internal data about how the render was calculated.\n\t// NOTE: modifies rowSegs\n\trenderSegRow: function(row, rowSegs) {\n\t\tvar colCnt = this.colCnt;\n\t\tvar segLevels = this.buildSegLevels(rowSegs); // group into sub-arrays of levels\n\t\tvar levelCnt = Math.max(1, segLevels.length); // ensure at least one level\n\t\tvar tbody = $('');\n\t\tvar segMatrix = []; // lookup for which segments are rendered into which level+col cells\n\t\tvar cellMatrix = []; // lookup for all elements of the level+col matrix\n\t\tvar loneCellMatrix = []; // lookup for elements that only take up a single column\n\t\tvar i, levelSegs;\n\t\tvar col;\n\t\tvar tr;\n\t\tvar j, seg;\n\t\tvar td;\n\n\t\t// populates empty cells from the current column (`col`) to `endCol`\n\t\tfunction emptyCellsUntil(endCol) {\n\t\t\twhile (col < endCol) {\n\t\t\t\t// try to grab a cell from the level above and extend its rowspan. otherwise, create a fresh cell\n\t\t\t\ttd = (loneCellMatrix[i - 1] || [])[col];\n\t\t\t\tif (td) {\n\t\t\t\t\ttd.attr(\n\t\t\t\t\t\t'rowspan',\n\t\t\t\t\t\tparseInt(td.attr('rowspan') || 1, 10) + 1\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ttd = $('');\n\t\t\t\t\ttr.append(td);\n\t\t\t\t}\n\t\t\t\tcellMatrix[i][col] = td;\n\t\t\t\tloneCellMatrix[i][col] = td;\n\t\t\t\tcol++;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0; i < levelCnt; i++) { // iterate through all levels\n\t\t\tlevelSegs = segLevels[i];\n\t\t\tcol = 0;\n\t\t\ttr = $('');\n\n\t\t\tsegMatrix.push([]);\n\t\t\tcellMatrix.push([]);\n\t\t\tloneCellMatrix.push([]);\n\n\t\t\t// levelCnt might be 1 even though there are no actual levels. protect against this.\n\t\t\t// this single empty row is useful for styling.\n\t\t\tif (levelSegs) {\n\t\t\t\tfor (j = 0; j < levelSegs.length; j++) { // iterate through segments in level\n\t\t\t\t\tseg = levelSegs[j];\n\n\t\t\t\t\temptyCellsUntil(seg.leftCol);\n\n\t\t\t\t\t// create a container that occupies or more columns. append the event element.\n\t\t\t\t\ttd = $('').append(seg.el);\n\t\t\t\t\tif (seg.leftCol != seg.rightCol) {\n\t\t\t\t\t\ttd.attr('colspan', seg.rightCol - seg.leftCol + 1);\n\t\t\t\t\t}\n\t\t\t\t\telse { // a single-column segment\n\t\t\t\t\t\tloneCellMatrix[i][col] = td;\n\t\t\t\t\t}\n\n\t\t\t\t\twhile (col <= seg.rightCol) {\n\t\t\t\t\t\tcellMatrix[i][col] = td;\n\t\t\t\t\t\tsegMatrix[i][col] = seg;\n\t\t\t\t\t\tcol++;\n\t\t\t\t\t}\n\n\t\t\t\t\ttr.append(td);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\temptyCellsUntil(colCnt); // finish off the row\n\t\t\tthis.bookendCells(tr);\n\t\t\ttbody.append(tr);\n\t\t}\n\n\t\treturn { // a \"rowStruct\"\n\t\t\trow: row, // the row number\n\t\t\ttbodyEl: tbody,\n\t\t\tcellMatrix: cellMatrix,\n\t\t\tsegMatrix: segMatrix,\n\t\t\tsegLevels: segLevels,\n\t\t\tsegs: rowSegs\n\t\t};\n\t},\n\n\n\t// Stacks a flat array of segments, which are all assumed to be in the same row, into subarrays of vertical levels.\n\t// NOTE: modifies segs\n\tbuildSegLevels: function(segs) {\n\t\tvar levels = [];\n\t\tvar i, seg;\n\t\tvar j;\n\n\t\t// Give preference to elements with certain criteria, so they have\n\t\t// a chance to be closer to the top.\n\t\tthis.sortEventSegs(segs);\n\t\t\n\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\tseg = segs[i];\n\n\t\t\t// loop through levels, starting with the topmost, until the segment doesn't collide with other segments\n\t\t\tfor (j = 0; j < levels.length; j++) {\n\t\t\t\tif (!isDaySegCollision(seg, levels[j])) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// `j` now holds the desired subrow index\n\t\t\tseg.level = j;\n\n\t\t\t// create new level array if needed and append segment\n\t\t\t(levels[j] || (levels[j] = [])).push(seg);\n\t\t}\n\n\t\t// order segments left-to-right. very important if calendar is RTL\n\t\tfor (j = 0; j < levels.length; j++) {\n\t\t\tlevels[j].sort(compareDaySegCols);\n\t\t}\n\n\t\treturn levels;\n\t},\n\n\n\t// Given a flat array of segments, return an array of sub-arrays, grouped by each segment's row\n\tgroupSegRows: function(segs) {\n\t\tvar segRows = [];\n\t\tvar i;\n\n\t\tfor (i = 0; i < this.rowCnt; i++) {\n\t\t\tsegRows.push([]);\n\t\t}\n\n\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\tsegRows[segs[i].row].push(segs[i]);\n\t\t}\n\n\t\treturn segRows;\n\t}\n\n});\n\n\n// Computes whether two segments' columns collide. They are assumed to be in the same row.\nfunction isDaySegCollision(seg, otherSegs) {\n\tvar i, otherSeg;\n\n\tfor (i = 0; i < otherSegs.length; i++) {\n\t\totherSeg = otherSegs[i];\n\n\t\tif (\n\t\t\totherSeg.leftCol <= seg.rightCol &&\n\t\t\totherSeg.rightCol >= seg.leftCol\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n\n// A cmp function for determining the leftmost event\nfunction compareDaySegCols(a, b) {\n\treturn a.leftCol - b.leftCol;\n}\n\n;;\n\n/* Methods relate to limiting the number events for a given day on a DayGrid\n----------------------------------------------------------------------------------------------------------------------*/\n// NOTE: all the segs being passed around in here are foreground segs\n\nDayGrid.mixin({\n\n\tsegPopover: null, // the Popover that holds events that can't fit in a cell. null when not visible\n\tpopoverSegs: null, // an array of segment objects that the segPopover holds. null when not visible\n\n\n\tremoveSegPopover: function() {\n\t\tif (this.segPopover) {\n\t\t\tthis.segPopover.hide(); // in handler, will call segPopover's removeElement\n\t\t}\n\t},\n\n\n\t// Limits the number of \"levels\" (vertically stacking layers of events) for each row of the grid.\n\t// `levelLimit` can be false (don't limit), a number, or true (should be computed).\n\tlimitRows: function(levelLimit) {\n\t\tvar rowStructs = this.rowStructs || [];\n\t\tvar row; // row #\n\t\tvar rowLevelLimit;\n\n\t\tfor (row = 0; row < rowStructs.length; row++) {\n\t\t\tthis.unlimitRow(row);\n\n\t\t\tif (!levelLimit) {\n\t\t\t\trowLevelLimit = false;\n\t\t\t}\n\t\t\telse if (typeof levelLimit === 'number') {\n\t\t\t\trowLevelLimit = levelLimit;\n\t\t\t}\n\t\t\telse {\n\t\t\t\trowLevelLimit = this.computeRowLevelLimit(row);\n\t\t\t}\n\n\t\t\tif (rowLevelLimit !== false) {\n\t\t\t\tthis.limitRow(row, rowLevelLimit);\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// Computes the number of levels a row will accomodate without going outside its bounds.\n\t// Assumes the row is \"rigid\" (maintains a constant height regardless of what is inside).\n\t// `row` is the row number.\n\tcomputeRowLevelLimit: function(row) {\n\t\tvar rowEl = this.rowEls.eq(row); // the containing \"fake\" row div\n\t\tvar rowHeight = rowEl.height(); // TODO: cache somehow?\n\t\tvar trEls = this.rowStructs[row].tbodyEl.children();\n\t\tvar i, trEl;\n\t\tvar trHeight;\n\n\t\tfunction iterInnerHeights(i, childNode) {\n\t\t\ttrHeight = Math.max(trHeight, $(childNode).outerHeight());\n\t\t}\n\n\t\t// Reveal one level at a time and stop when we find one out of bounds\n\t\tfor (i = 0; i < trEls.length; i++) {\n\t\t\ttrEl = trEls.eq(i).removeClass('fc-limited'); // reset to original state (reveal)\n\n\t\t\t// with rowspans>1 and IE8, trEl.outerHeight() would return the height of the largest cell,\n\t\t\t// so instead, find the tallest inner content element.\n\t\t\ttrHeight = 0;\n\t\t\ttrEl.find('> td > :first-child').each(iterInnerHeights);\n\n\t\t\tif (trEl.position().top + trHeight > rowHeight) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn false; // should not limit at all\n\t},\n\n\n\t// Limits the given grid row to the maximum number of levels and injects \"more\" links if necessary.\n\t// `row` is the row number.\n\t// `levelLimit` is a number for the maximum (inclusive) number of levels allowed.\n\tlimitRow: function(row, levelLimit) {\n\t\tvar _this = this;\n\t\tvar rowStruct = this.rowStructs[row];\n\t\tvar moreNodes = []; // array of \"more\" links and DOM nodes\n\t\tvar col = 0; // col #, left-to-right (not chronologically)\n\t\tvar levelSegs; // array of segment objects in the last allowable level, ordered left-to-right\n\t\tvar cellMatrix; // a matrix (by level, then column) of all jQuery elements in the row\n\t\tvar limitedNodes; // array of temporarily hidden level and segment DOM nodes\n\t\tvar i, seg;\n\t\tvar segsBelow; // array of segment objects below `seg` in the current `col`\n\t\tvar totalSegsBelow; // total number of segments below `seg` in any of the columns `seg` occupies\n\t\tvar colSegsBelow; // array of segment arrays, below seg, one for each column (offset from segs's first column)\n\t\tvar td, rowspan;\n\t\tvar segMoreNodes; // array of \"more\" cells that will stand-in for the current seg's cell\n\t\tvar j;\n\t\tvar moreTd, moreWrap, moreLink;\n\n\t\t// Iterates through empty level cells and places \"more\" links inside if need be\n\t\tfunction emptyCellsUntil(endCol) { // goes from current `col` to `endCol`\n\t\t\twhile (col < endCol) {\n\t\t\t\tsegsBelow = _this.getCellSegs(row, col, levelLimit);\n\t\t\t\tif (segsBelow.length) {\n\t\t\t\t\ttd = cellMatrix[levelLimit - 1][col];\n\t\t\t\t\tmoreLink = _this.renderMoreLink(row, col, segsBelow);\n\t\t\t\t\tmoreWrap = $('
    ').append(moreLink);\n\t\t\t\t\ttd.append(moreWrap);\n\t\t\t\t\tmoreNodes.push(moreWrap[0]);\n\t\t\t\t}\n\t\t\t\tcol++;\n\t\t\t}\n\t\t}\n\n\t\tif (levelLimit && levelLimit < rowStruct.segLevels.length) { // is it actually over the limit?\n\t\t\tlevelSegs = rowStruct.segLevels[levelLimit - 1];\n\t\t\tcellMatrix = rowStruct.cellMatrix;\n\n\t\t\tlimitedNodes = rowStruct.tbodyEl.children().slice(levelLimit) // get level elements past the limit\n\t\t\t\t.addClass('fc-limited').get(); // hide elements and get a simple DOM-nodes array\n\n\t\t\t// iterate though segments in the last allowable level\n\t\t\tfor (i = 0; i < levelSegs.length; i++) {\n\t\t\t\tseg = levelSegs[i];\n\t\t\t\temptyCellsUntil(seg.leftCol); // process empty cells before the segment\n\n\t\t\t\t// determine *all* segments below `seg` that occupy the same columns\n\t\t\t\tcolSegsBelow = [];\n\t\t\t\ttotalSegsBelow = 0;\n\t\t\t\twhile (col <= seg.rightCol) {\n\t\t\t\t\tsegsBelow = this.getCellSegs(row, col, levelLimit);\n\t\t\t\t\tcolSegsBelow.push(segsBelow);\n\t\t\t\t\ttotalSegsBelow += segsBelow.length;\n\t\t\t\t\tcol++;\n\t\t\t\t}\n\n\t\t\t\tif (totalSegsBelow) { // do we need to replace this segment with one or many \"more\" links?\n\t\t\t\t\ttd = cellMatrix[levelLimit - 1][seg.leftCol]; // the segment's parent cell\n\t\t\t\t\trowspan = td.attr('rowspan') || 1;\n\t\t\t\t\tsegMoreNodes = [];\n\n\t\t\t\t\t// make a replacement for each column the segment occupies. will be one for each colspan\n\t\t\t\t\tfor (j = 0; j < colSegsBelow.length; j++) {\n\t\t\t\t\t\tmoreTd = $('').attr('rowspan', rowspan);\n\t\t\t\t\t\tsegsBelow = colSegsBelow[j];\n\t\t\t\t\t\tmoreLink = this.renderMoreLink(\n\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\tseg.leftCol + j,\n\t\t\t\t\t\t\t[ seg ].concat(segsBelow) // count seg as hidden too\n\t\t\t\t\t\t);\n\t\t\t\t\t\tmoreWrap = $('
    ').append(moreLink);\n\t\t\t\t\t\tmoreTd.append(moreWrap);\n\t\t\t\t\t\tsegMoreNodes.push(moreTd[0]);\n\t\t\t\t\t\tmoreNodes.push(moreTd[0]);\n\t\t\t\t\t}\n\n\t\t\t\t\ttd.addClass('fc-limited').after($(segMoreNodes)); // hide original and inject replacements\n\t\t\t\t\tlimitedNodes.push(td[0]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\temptyCellsUntil(this.colCnt); // finish off the level\n\t\t\trowStruct.moreEls = $(moreNodes); // for easy undoing later\n\t\t\trowStruct.limitedEls = $(limitedNodes); // for easy undoing later\n\t\t}\n\t},\n\n\n\t// Reveals all levels and removes all \"more\"-related elements for a grid's row.\n\t// `row` is a row number.\n\tunlimitRow: function(row) {\n\t\tvar rowStruct = this.rowStructs[row];\n\n\t\tif (rowStruct.moreEls) {\n\t\t\trowStruct.moreEls.remove();\n\t\t\trowStruct.moreEls = null;\n\t\t}\n\n\t\tif (rowStruct.limitedEls) {\n\t\t\trowStruct.limitedEls.removeClass('fc-limited');\n\t\t\trowStruct.limitedEls = null;\n\t\t}\n\t},\n\n\n\t// Renders an element that represents hidden event element for a cell.\n\t// Responsible for attaching click handler as well.\n\trenderMoreLink: function(row, col, hiddenSegs) {\n\t\tvar _this = this;\n\t\tvar view = this.view;\n\n\t\treturn $('')\n\t\t\t.text(\n\t\t\t\tthis.getMoreLinkText(hiddenSegs.length)\n\t\t\t)\n\t\t\t.on('click', function(ev) {\n\t\t\t\tvar clickOption = view.opt('eventLimitClick');\n\t\t\t\tvar date = _this.getCellDate(row, col);\n\t\t\t\tvar moreEl = $(this);\n\t\t\t\tvar dayEl = _this.getCellEl(row, col);\n\t\t\t\tvar allSegs = _this.getCellSegs(row, col);\n\n\t\t\t\t// rescope the segments to be within the cell's date\n\t\t\t\tvar reslicedAllSegs = _this.resliceDaySegs(allSegs, date);\n\t\t\t\tvar reslicedHiddenSegs = _this.resliceDaySegs(hiddenSegs, date);\n\n\t\t\t\tif (typeof clickOption === 'function') {\n\t\t\t\t\t// the returned value can be an atomic option\n\t\t\t\t\tclickOption = view.publiclyTrigger('eventLimitClick', null, {\n\t\t\t\t\t\tdate: date,\n\t\t\t\t\t\tdayEl: dayEl,\n\t\t\t\t\t\tmoreEl: moreEl,\n\t\t\t\t\t\tsegs: reslicedAllSegs,\n\t\t\t\t\t\thiddenSegs: reslicedHiddenSegs\n\t\t\t\t\t}, ev);\n\t\t\t\t}\n\n\t\t\t\tif (clickOption === 'popover') {\n\t\t\t\t\t_this.showSegPopover(row, col, moreEl, reslicedAllSegs);\n\t\t\t\t}\n\t\t\t\telse if (typeof clickOption === 'string') { // a view name\n\t\t\t\t\tview.calendar.zoomTo(date, clickOption);\n\t\t\t\t}\n\t\t\t});\n\t},\n\n\n\t// Reveals the popover that displays all events within a cell\n\tshowSegPopover: function(row, col, moreLink, segs) {\n\t\tvar _this = this;\n\t\tvar view = this.view;\n\t\tvar moreWrap = moreLink.parent(); // the
    wrapper around the \n\t\tvar topEl; // the element we want to match the top coordinate of\n\t\tvar options;\n\n\t\tif (this.rowCnt == 1) {\n\t\t\ttopEl = view.el; // will cause the popover to cover any sort of header\n\t\t}\n\t\telse {\n\t\t\ttopEl = this.rowEls.eq(row); // will align with top of row\n\t\t}\n\n\t\toptions = {\n\t\t\tclassName: 'fc-more-popover',\n\t\t\tcontent: this.renderSegPopoverContent(row, col, segs),\n\t\t\tparentEl: this.view.el, // attach to root of view. guarantees outside of scrollbars.\n\t\t\ttop: topEl.offset().top,\n\t\t\tautoHide: true, // when the user clicks elsewhere, hide the popover\n\t\t\tviewportConstrain: view.opt('popoverViewportConstrain'),\n\t\t\thide: function() {\n\t\t\t\t// kill everything when the popover is hidden\n\t\t\t\t// notify events to be removed\n\t\t\t\tif (_this.popoverSegs) {\n\t\t\t\t\tvar seg;\n\t\t\t\t\tfor (var i = 0; i < _this.popoverSegs.length; ++i) {\n\t\t\t\t\t\tseg = _this.popoverSegs[i];\n\t\t\t\t\t\tview.publiclyTrigger('eventDestroy', seg.event, seg.event, seg.el);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t_this.segPopover.removeElement();\n\t\t\t\t_this.segPopover = null;\n\t\t\t\t_this.popoverSegs = null;\n\t\t\t}\n\t\t};\n\n\t\t// Determine horizontal coordinate.\n\t\t// We use the moreWrap instead of the to avoid border confusion.\n\t\tif (this.isRTL) {\n\t\t\toptions.right = moreWrap.offset().left + moreWrap.outerWidth() + 1; // +1 to be over cell border\n\t\t}\n\t\telse {\n\t\t\toptions.left = moreWrap.offset().left - 1; // -1 to be over cell border\n\t\t}\n\n\t\tthis.segPopover = new Popover(options);\n\t\tthis.segPopover.show();\n\n\t\t// the popover doesn't live within the grid's container element, and thus won't get the event\n\t\t// delegated-handlers for free. attach event-related handlers to the popover.\n\t\tthis.bindSegHandlersToEl(this.segPopover.el);\n\t},\n\n\n\t// Builds the inner DOM contents of the segment popover\n\trenderSegPopoverContent: function(row, col, segs) {\n\t\tvar view = this.view;\n\t\tvar isTheme = view.opt('theme');\n\t\tvar title = this.getCellDate(row, col).format(view.opt('dayPopoverFormat'));\n\t\tvar content = $(\n\t\t\t'
    ' +\n\t\t\t\t'' +\n\t\t\t\t'' +\n\t\t\t\t\thtmlEscape(title) +\n\t\t\t\t'' +\n\t\t\t\t'
    ' +\n\t\t\t'
    ' +\n\t\t\t'
    ' +\n\t\t\t\t'
    ' +\n\t\t\t'
    '\n\t\t);\n\t\tvar segContainer = content.find('.fc-event-container');\n\t\tvar i;\n\n\t\t// render each seg's `el` and only return the visible segs\n\t\tsegs = this.renderFgSegEls(segs, true); // disableResizing=true\n\t\tthis.popoverSegs = segs;\n\n\t\tfor (i = 0; i < segs.length; i++) {\n\n\t\t\t// because segments in the popover are not part of a grid coordinate system, provide a hint to any\n\t\t\t// grids that want to do drag-n-drop about which cell it came from\n\t\t\tthis.hitsNeeded();\n\t\t\tsegs[i].hit = this.getCellHit(row, col);\n\t\t\tthis.hitsNotNeeded();\n\n\t\t\tsegContainer.append(segs[i].el);\n\t\t}\n\n\t\treturn content;\n\t},\n\n\n\t// Given the events within an array of segment objects, reslice them to be in a single day\n\tresliceDaySegs: function(segs, dayDate) {\n\n\t\t// build an array of the original events\n\t\tvar events = $.map(segs, function(seg) {\n\t\t\treturn seg.event;\n\t\t});\n\n\t\tvar dayStart = dayDate.clone();\n\t\tvar dayEnd = dayStart.clone().add(1, 'days');\n\t\tvar dayRange = { start: dayStart, end: dayEnd };\n\n\t\t// slice the events with a custom slicing function\n\t\tsegs = this.eventsToSegs(\n\t\t\tevents,\n\t\t\tfunction(range) {\n\t\t\t\tvar seg = intersectRanges(range, dayRange); // undefind if no intersection\n\t\t\t\treturn seg ? [ seg ] : []; // must return an array of segments\n\t\t\t}\n\t\t);\n\n\t\t// force an order because eventsToSegs doesn't guarantee one\n\t\tthis.sortEventSegs(segs);\n\n\t\treturn segs;\n\t},\n\n\n\t// Generates the text that should be inside a \"more\" link, given the number of events it represents\n\tgetMoreLinkText: function(num) {\n\t\tvar opt = this.view.opt('eventLimitText');\n\n\t\tif (typeof opt === 'function') {\n\t\t\treturn opt(num);\n\t\t}\n\t\telse {\n\t\t\treturn '+' + num + ' ' + opt;\n\t\t}\n\t},\n\n\n\t// Returns segments within a given cell.\n\t// If `startLevel` is specified, returns only events including and below that level. Otherwise returns all segs.\n\tgetCellSegs: function(row, col, startLevel) {\n\t\tvar segMatrix = this.rowStructs[row].segMatrix;\n\t\tvar level = startLevel || 0;\n\t\tvar segs = [];\n\t\tvar seg;\n\n\t\twhile (level < segMatrix.length) {\n\t\t\tseg = segMatrix[level][col];\n\t\t\tif (seg) {\n\t\t\t\tsegs.push(seg);\n\t\t\t}\n\t\t\tlevel++;\n\t\t}\n\n\t\treturn segs;\n\t}\n\n});\n\n;;\n\n/* A component that renders one or more columns of vertical time slots\n----------------------------------------------------------------------------------------------------------------------*/\n// We mixin DayTable, even though there is only a single row of days\n\nvar TimeGrid = FC.TimeGrid = Grid.extend(DayTableMixin, {\n\n\tslotDuration: null, // duration of a \"slot\", a distinct time segment on given day, visualized by lines\n\tsnapDuration: null, // granularity of time for dragging and selecting\n\tsnapsPerSlot: null,\n\tminTime: null, // Duration object that denotes the first visible time of any given day\n\tmaxTime: null, // Duration object that denotes the exclusive visible end time of any given day\n\tlabelFormat: null, // formatting string for times running along vertical axis\n\tlabelInterval: null, // duration of how often a label should be displayed for a slot\n\n\tcolEls: null, // cells elements in the day-row background\n\tslatContainerEl: null, // div that wraps all the slat rows\n\tslatEls: null, // elements running horizontally across all columns\n\tnowIndicatorEls: null,\n\n\tcolCoordCache: null,\n\tslatCoordCache: null,\n\n\n\tconstructor: function() {\n\t\tGrid.apply(this, arguments); // call the super-constructor\n\n\t\tthis.processOptions();\n\t},\n\n\n\t// Renders the time grid into `this.el`, which should already be assigned.\n\t// Relies on the view's colCnt. In the future, this component should probably be self-sufficient.\n\trenderDates: function() {\n\t\tthis.el.html(this.renderHtml());\n\t\tthis.colEls = this.el.find('.fc-day');\n\t\tthis.slatContainerEl = this.el.find('.fc-slats');\n\t\tthis.slatEls = this.slatContainerEl.find('tr');\n\n\t\tthis.colCoordCache = new CoordCache({\n\t\t\tels: this.colEls,\n\t\t\tisHorizontal: true\n\t\t});\n\t\tthis.slatCoordCache = new CoordCache({\n\t\t\tels: this.slatEls,\n\t\t\tisVertical: true\n\t\t});\n\n\t\tthis.renderContentSkeleton();\n\t},\n\n\n\t// Renders the basic HTML skeleton for the grid\n\trenderHtml: function() {\n\t\treturn '' +\n\t\t\t'
    ' +\n\t\t\t\t'' +\n\t\t\t\t\tthis.renderBgTrHtml(0) + // row=0\n\t\t\t\t'
    ' +\n\t\t\t'
    ' +\n\t\t\t'
    ' +\n\t\t\t\t'' +\n\t\t\t\t\tthis.renderSlatRowHtml() +\n\t\t\t\t'
    ' +\n\t\t\t'
    ';\n\t},\n\n\n\t// Generates the HTML for the horizontal \"slats\" that run width-wise. Has a time axis on a side. Depends on RTL.\n\trenderSlatRowHtml: function() {\n\t\tvar view = this.view;\n\t\tvar isRTL = this.isRTL;\n\t\tvar html = '';\n\t\tvar slotTime = moment.duration(+this.minTime); // wish there was .clone() for durations\n\t\tvar slotDate; // will be on the view's first day, but we only care about its time\n\t\tvar isLabeled;\n\t\tvar axisHtml;\n\n\t\t// Calculate the time for each slot\n\t\twhile (slotTime < this.maxTime) {\n\t\t\tslotDate = this.start.clone().time(slotTime);\n\t\t\tisLabeled = isInt(divideDurationByDuration(slotTime, this.labelInterval));\n\n\t\t\taxisHtml =\n\t\t\t\t'' +\n\t\t\t\t\t(isLabeled ?\n\t\t\t\t\t\t'' + // for matchCellWidths\n\t\t\t\t\t\t\thtmlEscape(slotDate.format(this.labelFormat)) +\n\t\t\t\t\t\t'' :\n\t\t\t\t\t\t''\n\t\t\t\t\t\t) +\n\t\t\t\t'';\n\n\t\t\thtml +=\n\t\t\t\t'' +\n\t\t\t\t\t(!isRTL ? axisHtml : '') +\n\t\t\t\t\t'' +\n\t\t\t\t\t(isRTL ? axisHtml : '') +\n\t\t\t\t\"\";\n\n\t\t\tslotTime.add(this.slotDuration);\n\t\t}\n\n\t\treturn html;\n\t},\n\n\n\t/* Options\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Parses various options into properties of this object\n\tprocessOptions: function() {\n\t\tvar view = this.view;\n\t\tvar slotDuration = view.opt('slotDuration');\n\t\tvar snapDuration = view.opt('snapDuration');\n\t\tvar input;\n\n\t\tslotDuration = moment.duration(slotDuration);\n\t\tsnapDuration = snapDuration ? moment.duration(snapDuration) : slotDuration;\n\n\t\tthis.slotDuration = slotDuration;\n\t\tthis.snapDuration = snapDuration;\n\t\tthis.snapsPerSlot = slotDuration / snapDuration; // TODO: ensure an integer multiple?\n\n\t\tthis.minResizeDuration = snapDuration; // hack\n\n\t\tthis.minTime = moment.duration(view.opt('minTime'));\n\t\tthis.maxTime = moment.duration(view.opt('maxTime'));\n\n\t\t// might be an array value (for TimelineView).\n\t\t// if so, getting the most granular entry (the last one probably).\n\t\tinput = view.opt('slotLabelFormat');\n\t\tif ($.isArray(input)) {\n\t\t\tinput = input[input.length - 1];\n\t\t}\n\n\t\tthis.labelFormat =\n\t\t\tinput ||\n\t\t\tview.opt('smallTimeFormat'); // the computed default\n\n\t\tinput = view.opt('slotLabelInterval');\n\t\tthis.labelInterval = input ?\n\t\t\tmoment.duration(input) :\n\t\t\tthis.computeLabelInterval(slotDuration);\n\t},\n\n\n\t// Computes an automatic value for slotLabelInterval\n\tcomputeLabelInterval: function(slotDuration) {\n\t\tvar i;\n\t\tvar labelInterval;\n\t\tvar slotsPerLabel;\n\n\t\t// find the smallest stock label interval that results in more than one slots-per-label\n\t\tfor (i = AGENDA_STOCK_SUB_DURATIONS.length - 1; i >= 0; i--) {\n\t\t\tlabelInterval = moment.duration(AGENDA_STOCK_SUB_DURATIONS[i]);\n\t\t\tslotsPerLabel = divideDurationByDuration(labelInterval, slotDuration);\n\t\t\tif (isInt(slotsPerLabel) && slotsPerLabel > 1) {\n\t\t\t\treturn labelInterval;\n\t\t\t}\n\t\t}\n\n\t\treturn moment.duration(slotDuration); // fall back. clone\n\t},\n\n\n\t// Computes a default event time formatting string if `timeFormat` is not explicitly defined\n\tcomputeEventTimeFormat: function() {\n\t\treturn this.view.opt('noMeridiemTimeFormat'); // like \"6:30\" (no AM/PM)\n\t},\n\n\n\t// Computes a default `displayEventEnd` value if one is not expliclty defined\n\tcomputeDisplayEventEnd: function() {\n\t\treturn true;\n\t},\n\n\n\t/* Hit System\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\tprepareHits: function() {\n\t\tthis.colCoordCache.build();\n\t\tthis.slatCoordCache.build();\n\t},\n\n\n\treleaseHits: function() {\n\t\tthis.colCoordCache.clear();\n\t\t// NOTE: don't clear slatCoordCache because we rely on it for computeTimeTop\n\t},\n\n\n\tqueryHit: function(leftOffset, topOffset) {\n\t\tvar snapsPerSlot = this.snapsPerSlot;\n\t\tvar colCoordCache = this.colCoordCache;\n\t\tvar slatCoordCache = this.slatCoordCache;\n\n\t\tif (colCoordCache.isLeftInBounds(leftOffset) && slatCoordCache.isTopInBounds(topOffset)) {\n\t\t\tvar colIndex = colCoordCache.getHorizontalIndex(leftOffset);\n\t\t\tvar slatIndex = slatCoordCache.getVerticalIndex(topOffset);\n\n\t\t\tif (colIndex != null && slatIndex != null) {\n\t\t\t\tvar slatTop = slatCoordCache.getTopOffset(slatIndex);\n\t\t\t\tvar slatHeight = slatCoordCache.getHeight(slatIndex);\n\t\t\t\tvar partial = (topOffset - slatTop) / slatHeight; // floating point number between 0 and 1\n\t\t\t\tvar localSnapIndex = Math.floor(partial * snapsPerSlot); // the snap # relative to start of slat\n\t\t\t\tvar snapIndex = slatIndex * snapsPerSlot + localSnapIndex;\n\t\t\t\tvar snapTop = slatTop + (localSnapIndex / snapsPerSlot) * slatHeight;\n\t\t\t\tvar snapBottom = slatTop + ((localSnapIndex + 1) / snapsPerSlot) * slatHeight;\n\n\t\t\t\treturn {\n\t\t\t\t\tcol: colIndex,\n\t\t\t\t\tsnap: snapIndex,\n\t\t\t\t\tcomponent: this, // needed unfortunately :(\n\t\t\t\t\tleft: colCoordCache.getLeftOffset(colIndex),\n\t\t\t\t\tright: colCoordCache.getRightOffset(colIndex),\n\t\t\t\t\ttop: snapTop,\n\t\t\t\t\tbottom: snapBottom\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t},\n\n\n\tgetHitSpan: function(hit) {\n\t\tvar start = this.getCellDate(0, hit.col); // row=0\n\t\tvar time = this.computeSnapTime(hit.snap); // pass in the snap-index\n\t\tvar end;\n\n\t\tstart.time(time);\n\t\tend = start.clone().add(this.snapDuration);\n\n\t\treturn { start: start, end: end };\n\t},\n\n\n\tgetHitEl: function(hit) {\n\t\treturn this.colEls.eq(hit.col);\n\t},\n\n\n\t/* Dates\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trangeUpdated: function() {\n\t\tthis.updateDayTable();\n\t},\n\n\n\t// Given a row number of the grid, representing a \"snap\", returns a time (Duration) from its start-of-day\n\tcomputeSnapTime: function(snapIndex) {\n\t\treturn moment.duration(this.minTime + this.snapDuration * snapIndex);\n\t},\n\n\n\t// Slices up the given span (unzoned start/end with other misc data) into an array of segments\n\tspanToSegs: function(span) {\n\t\tvar segs = this.sliceRangeByTimes(span);\n\t\tvar i;\n\n\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\tif (this.isRTL) {\n\t\t\t\tsegs[i].col = this.daysPerRow - 1 - segs[i].dayIndex;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tsegs[i].col = segs[i].dayIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn segs;\n\t},\n\n\n\tsliceRangeByTimes: function(range) {\n\t\tvar segs = [];\n\t\tvar seg;\n\t\tvar dayIndex;\n\t\tvar dayDate;\n\t\tvar dayRange;\n\n\t\tfor (dayIndex = 0; dayIndex < this.daysPerRow; dayIndex++) {\n\t\t\tdayDate = this.dayDates[dayIndex].clone(); // TODO: better API for this?\n\t\t\tdayRange = {\n\t\t\t\tstart: dayDate.clone().time(this.minTime),\n\t\t\t\tend: dayDate.clone().time(this.maxTime)\n\t\t\t};\n\t\t\tseg = intersectRanges(range, dayRange); // both will be ambig timezone\n\t\t\tif (seg) {\n\t\t\t\tseg.dayIndex = dayIndex;\n\t\t\t\tsegs.push(seg);\n\t\t\t}\n\t\t}\n\n\t\treturn segs;\n\t},\n\n\n\t/* Coordinates\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\tupdateSize: function(isResize) { // NOT a standard Grid method\n\t\tthis.slatCoordCache.build();\n\n\t\tif (isResize) {\n\t\t\tthis.updateSegVerticals(\n\t\t\t\t[].concat(this.fgSegs || [], this.bgSegs || [], this.businessSegs || [])\n\t\t\t);\n\t\t}\n\t},\n\n\n\tgetTotalSlatHeight: function() {\n\t\treturn this.slatContainerEl.outerHeight();\n\t},\n\n\n\t// Computes the top coordinate, relative to the bounds of the grid, of the given date.\n\t// A `startOfDayDate` must be given for avoiding ambiguity over how to treat midnight.\n\tcomputeDateTop: function(date, startOfDayDate) {\n\t\treturn this.computeTimeTop(\n\t\t\tmoment.duration(\n\t\t\t\tdate - startOfDayDate.clone().stripTime()\n\t\t\t)\n\t\t);\n\t},\n\n\n\t// Computes the top coordinate, relative to the bounds of the grid, of the given time (a Duration).\n\tcomputeTimeTop: function(time) {\n\t\tvar len = this.slatEls.length;\n\t\tvar slatCoverage = (time - this.minTime) / this.slotDuration; // floating-point value of # of slots covered\n\t\tvar slatIndex;\n\t\tvar slatRemainder;\n\n\t\t// compute a floating-point number for how many slats should be progressed through.\n\t\t// from 0 to number of slats (inclusive)\n\t\t// constrained because minTime/maxTime might be customized.\n\t\tslatCoverage = Math.max(0, slatCoverage);\n\t\tslatCoverage = Math.min(len, slatCoverage);\n\n\t\t// an integer index of the furthest whole slat\n\t\t// from 0 to number slats (*exclusive*, so len-1)\n\t\tslatIndex = Math.floor(slatCoverage);\n\t\tslatIndex = Math.min(slatIndex, len - 1);\n\n\t\t// how much further through the slatIndex slat (from 0.0-1.0) must be covered in addition.\n\t\t// could be 1.0 if slatCoverage is covering *all* the slots\n\t\tslatRemainder = slatCoverage - slatIndex;\n\n\t\treturn this.slatCoordCache.getTopPosition(slatIndex) +\n\t\t\tthis.slatCoordCache.getHeight(slatIndex) * slatRemainder;\n\t},\n\n\n\n\t/* Event Drag Visualization\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders a visual indication of an event being dragged over the specified date(s).\n\t// A returned value of `true` signals that a mock \"helper\" event has been rendered.\n\trenderDrag: function(eventLocation, seg) {\n\n\t\tif (seg) { // if there is event information for this drag, render a helper event\n\n\t\t\t// returns mock event elements\n\t\t\t// signal that a helper has been rendered\n\t\t\treturn this.renderEventLocationHelper(eventLocation, seg);\n\t\t}\n\t\telse {\n\t\t\t// otherwise, just render a highlight\n\t\t\tthis.renderHighlight(this.eventToSpan(eventLocation));\n\t\t}\n\t},\n\n\n\t// Unrenders any visual indication of an event being dragged\n\tunrenderDrag: function() {\n\t\tthis.unrenderHelper();\n\t\tthis.unrenderHighlight();\n\t},\n\n\n\t/* Event Resize Visualization\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders a visual indication of an event being resized\n\trenderEventResize: function(eventLocation, seg) {\n\t\treturn this.renderEventLocationHelper(eventLocation, seg); // returns mock event elements\n\t},\n\n\n\t// Unrenders any visual indication of an event being resized\n\tunrenderEventResize: function() {\n\t\tthis.unrenderHelper();\n\t},\n\n\n\t/* Event Helper\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders a mock \"helper\" event. `sourceSeg` is the original segment object and might be null (an external drag)\n\trenderHelper: function(event, sourceSeg) {\n\t\treturn this.renderHelperSegs(this.eventToSegs(event), sourceSeg); // returns mock event elements\n\t},\n\n\n\t// Unrenders any mock helper event\n\tunrenderHelper: function() {\n\t\tthis.unrenderHelperSegs();\n\t},\n\n\n\t/* Business Hours\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trenderBusinessHours: function() {\n\t\tthis.renderBusinessSegs(\n\t\t\tthis.buildBusinessHourSegs()\n\t\t);\n\t},\n\n\n\tunrenderBusinessHours: function() {\n\t\tthis.unrenderBusinessSegs();\n\t},\n\n\n\t/* Now Indicator\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\tgetNowIndicatorUnit: function() {\n\t\treturn 'minute'; // will refresh on the minute\n\t},\n\n\n\trenderNowIndicator: function(date) {\n\t\t// seg system might be overkill, but it handles scenario where line needs to be rendered\n\t\t// more than once because of columns with the same date (resources columns for example)\n\t\tvar segs = this.spanToSegs({ start: date, end: date });\n\t\tvar top = this.computeDateTop(date, date);\n\t\tvar nodes = [];\n\t\tvar i;\n\n\t\t// render lines within the columns\n\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\tnodes.push($('
    ')\n\t\t\t\t.css('top', top)\n\t\t\t\t.appendTo(this.colContainerEls.eq(segs[i].col))[0]);\n\t\t}\n\n\t\t// render an arrow over the axis\n\t\tif (segs.length > 0) { // is the current time in view?\n\t\t\tnodes.push($('
    ')\n\t\t\t\t.css('top', top)\n\t\t\t\t.appendTo(this.el.find('.fc-content-skeleton'))[0]);\n\t\t}\n\n\t\tthis.nowIndicatorEls = $(nodes);\n\t},\n\n\n\tunrenderNowIndicator: function() {\n\t\tif (this.nowIndicatorEls) {\n\t\t\tthis.nowIndicatorEls.remove();\n\t\t\tthis.nowIndicatorEls = null;\n\t\t}\n\t},\n\n\n\t/* Selection\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders a visual indication of a selection. Overrides the default, which was to simply render a highlight.\n\trenderSelection: function(span) {\n\t\tif (this.view.opt('selectHelper')) { // this setting signals that a mock helper event should be rendered\n\n\t\t\t// normally acceps an eventLocation, span has a start/end, which is good enough\n\t\t\tthis.renderEventLocationHelper(span);\n\t\t}\n\t\telse {\n\t\t\tthis.renderHighlight(span);\n\t\t}\n\t},\n\n\n\t// Unrenders any visual indication of a selection\n\tunrenderSelection: function() {\n\t\tthis.unrenderHelper();\n\t\tthis.unrenderHighlight();\n\t},\n\n\n\t/* Highlight\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trenderHighlight: function(span) {\n\t\tthis.renderHighlightSegs(this.spanToSegs(span));\n\t},\n\n\n\tunrenderHighlight: function() {\n\t\tthis.unrenderHighlightSegs();\n\t}\n\n});\n\n;;\n\n/* Methods for rendering SEGMENTS, pieces of content that live on the view\n ( this file is no longer just for events )\n----------------------------------------------------------------------------------------------------------------------*/\n\nTimeGrid.mixin({\n\n\tcolContainerEls: null, // containers for each column\n\n\t// inner-containers for each column where different types of segs live\n\tfgContainerEls: null,\n\tbgContainerEls: null,\n\thelperContainerEls: null,\n\thighlightContainerEls: null,\n\tbusinessContainerEls: null,\n\n\t// arrays of different types of displayed segments\n\tfgSegs: null,\n\tbgSegs: null,\n\thelperSegs: null,\n\thighlightSegs: null,\n\tbusinessSegs: null,\n\n\n\t// Renders the DOM that the view's content will live in\n\trenderContentSkeleton: function() {\n\t\tvar cellHtml = '';\n\t\tvar i;\n\t\tvar skeletonEl;\n\n\t\tfor (i = 0; i < this.colCnt; i++) {\n\t\t\tcellHtml +=\n\t\t\t\t'' +\n\t\t\t\t\t'
    ' +\n\t\t\t\t\t\t'
    ' +\n\t\t\t\t\t\t'
    ' +\n\t\t\t\t\t\t'
    ' +\n\t\t\t\t\t\t'
    ' +\n\t\t\t\t\t\t'
    ' +\n\t\t\t\t\t'
    ' +\n\t\t\t\t'';\n\t\t}\n\n\t\tskeletonEl = $(\n\t\t\t'
    ' +\n\t\t\t\t'' +\n\t\t\t\t\t'' + cellHtml + '' +\n\t\t\t\t'
    ' +\n\t\t\t'
    '\n\t\t);\n\n\t\tthis.colContainerEls = skeletonEl.find('.fc-content-col');\n\t\tthis.helperContainerEls = skeletonEl.find('.fc-helper-container');\n\t\tthis.fgContainerEls = skeletonEl.find('.fc-event-container:not(.fc-helper-container)');\n\t\tthis.bgContainerEls = skeletonEl.find('.fc-bgevent-container');\n\t\tthis.highlightContainerEls = skeletonEl.find('.fc-highlight-container');\n\t\tthis.businessContainerEls = skeletonEl.find('.fc-business-container');\n\n\t\tthis.bookendCells(skeletonEl.find('tr')); // TODO: do this on string level\n\t\tthis.el.append(skeletonEl);\n\t},\n\n\n\t/* Foreground Events\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trenderFgSegs: function(segs) {\n\t\tsegs = this.renderFgSegsIntoContainers(segs, this.fgContainerEls);\n\t\tthis.fgSegs = segs;\n\t\treturn segs; // needed for Grid::renderEvents\n\t},\n\n\n\tunrenderFgSegs: function() {\n\t\tthis.unrenderNamedSegs('fgSegs');\n\t},\n\n\n\t/* Foreground Helper Events\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trenderHelperSegs: function(segs, sourceSeg) {\n\t\tvar helperEls = [];\n\t\tvar i, seg;\n\t\tvar sourceEl;\n\n\t\tsegs = this.renderFgSegsIntoContainers(segs, this.helperContainerEls);\n\n\t\t// Try to make the segment that is in the same row as sourceSeg look the same\n\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\tseg = segs[i];\n\t\t\tif (sourceSeg && sourceSeg.col === seg.col) {\n\t\t\t\tsourceEl = sourceSeg.el;\n\t\t\t\tseg.el.css({\n\t\t\t\t\tleft: sourceEl.css('left'),\n\t\t\t\t\tright: sourceEl.css('right'),\n\t\t\t\t\t'margin-left': sourceEl.css('margin-left'),\n\t\t\t\t\t'margin-right': sourceEl.css('margin-right')\n\t\t\t\t});\n\t\t\t}\n\t\t\thelperEls.push(seg.el[0]);\n\t\t}\n\n\t\tthis.helperSegs = segs;\n\n\t\treturn $(helperEls); // must return rendered helpers\n\t},\n\n\n\tunrenderHelperSegs: function() {\n\t\tthis.unrenderNamedSegs('helperSegs');\n\t},\n\n\n\t/* Background Events\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trenderBgSegs: function(segs) {\n\t\tsegs = this.renderFillSegEls('bgEvent', segs); // TODO: old fill system\n\t\tthis.updateSegVerticals(segs);\n\t\tthis.attachSegsByCol(this.groupSegsByCol(segs), this.bgContainerEls);\n\t\tthis.bgSegs = segs;\n\t\treturn segs; // needed for Grid::renderEvents\n\t},\n\n\n\tunrenderBgSegs: function() {\n\t\tthis.unrenderNamedSegs('bgSegs');\n\t},\n\n\n\t/* Highlight\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trenderHighlightSegs: function(segs) {\n\t\tsegs = this.renderFillSegEls('highlight', segs); // TODO: old fill system\n\t\tthis.updateSegVerticals(segs);\n\t\tthis.attachSegsByCol(this.groupSegsByCol(segs), this.highlightContainerEls);\n\t\tthis.highlightSegs = segs;\n\t},\n\n\n\tunrenderHighlightSegs: function() {\n\t\tthis.unrenderNamedSegs('highlightSegs');\n\t},\n\n\n\t/* Business Hours\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trenderBusinessSegs: function(segs) {\n\t\tsegs = this.renderFillSegEls('businessHours', segs); // TODO: old fill system\n\t\tthis.updateSegVerticals(segs);\n\t\tthis.attachSegsByCol(this.groupSegsByCol(segs), this.businessContainerEls);\n\t\tthis.businessSegs = segs;\n\t},\n\n\n\tunrenderBusinessSegs: function() {\n\t\tthis.unrenderNamedSegs('businessSegs');\n\t},\n\n\n\t/* Seg Rendering Utils\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Given a flat array of segments, return an array of sub-arrays, grouped by each segment's col\n\tgroupSegsByCol: function(segs) {\n\t\tvar segsByCol = [];\n\t\tvar i;\n\n\t\tfor (i = 0; i < this.colCnt; i++) {\n\t\t\tsegsByCol.push([]);\n\t\t}\n\n\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\tsegsByCol[segs[i].col].push(segs[i]);\n\t\t}\n\n\t\treturn segsByCol;\n\t},\n\n\n\t// Given segments grouped by column, insert the segments' elements into a parallel array of container\n\t// elements, each living within a column.\n\tattachSegsByCol: function(segsByCol, containerEls) {\n\t\tvar col;\n\t\tvar segs;\n\t\tvar i;\n\n\t\tfor (col = 0; col < this.colCnt; col++) { // iterate each column grouping\n\t\t\tsegs = segsByCol[col];\n\n\t\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\t\tcontainerEls.eq(col).append(segs[i].el);\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// Given the name of a property of `this` object, assumed to be an array of segments,\n\t// loops through each segment and removes from DOM. Will null-out the property afterwards.\n\tunrenderNamedSegs: function(propName) {\n\t\tvar segs = this[propName];\n\t\tvar i;\n\n\t\tif (segs) {\n\t\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\t\tsegs[i].el.remove();\n\t\t\t}\n\t\t\tthis[propName] = null;\n\t\t}\n\t},\n\n\n\n\t/* Foreground Event Rendering Utils\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Given an array of foreground segments, render a DOM element for each, computes position,\n\t// and attaches to the column inner-container elements.\n\trenderFgSegsIntoContainers: function(segs, containerEls) {\n\t\tvar segsByCol;\n\t\tvar col;\n\n\t\tsegs = this.renderFgSegEls(segs); // will call fgSegHtml\n\t\tsegsByCol = this.groupSegsByCol(segs);\n\n\t\tfor (col = 0; col < this.colCnt; col++) {\n\t\t\tthis.updateFgSegCoords(segsByCol[col]);\n\t\t}\n\n\t\tthis.attachSegsByCol(segsByCol, containerEls);\n\n\t\treturn segs;\n\t},\n\n\n\t// Renders the HTML for a single event segment's default rendering\n\tfgSegHtml: function(seg, disableResizing) {\n\t\tvar view = this.view;\n\t\tvar event = seg.event;\n\t\tvar isDraggable = view.isEventDraggable(event);\n\t\tvar isResizableFromStart = !disableResizing && seg.isStart && view.isEventResizableFromStart(event);\n\t\tvar isResizableFromEnd = !disableResizing && seg.isEnd && view.isEventResizableFromEnd(event);\n\t\tvar classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd);\n\t\tvar skinCss = cssToStr(this.getSegSkinCss(seg));\n\t\tvar timeText;\n\t\tvar fullTimeText; // more verbose time text. for the print stylesheet\n\t\tvar startTimeText; // just the start time text\n\n\t\tclasses.unshift('fc-time-grid-event', 'fc-v-event');\n\n\t\tif (view.isMultiDayEvent(event)) { // if the event appears to span more than one day...\n\t\t\t// Don't display time text on segments that run entirely through a day.\n\t\t\t// That would appear as midnight-midnight and would look dumb.\n\t\t\t// Otherwise, display the time text for the *segment's* times (like 6pm-midnight or midnight-10am)\n\t\t\tif (seg.isStart || seg.isEnd) {\n\t\t\t\ttimeText = this.getEventTimeText(seg);\n\t\t\t\tfullTimeText = this.getEventTimeText(seg, 'LT');\n\t\t\t\tstartTimeText = this.getEventTimeText(seg, null, false); // displayEnd=false\n\t\t\t}\n\t\t} else {\n\t\t\t// Display the normal time text for the *event's* times\n\t\t\ttimeText = this.getEventTimeText(event);\n\t\t\tfullTimeText = this.getEventTimeText(event, 'LT');\n\t\t\tstartTimeText = this.getEventTimeText(event, null, false); // displayEnd=false\n\t\t}\n\n\t\treturn '
    ' +\n\t\t\t\t'
    ' +\n\t\t\t\t\t(timeText ?\n\t\t\t\t\t\t'
    ' +\n\t\t\t\t\t\t\t'' + htmlEscape(timeText) + '' +\n\t\t\t\t\t\t'
    ' :\n\t\t\t\t\t\t''\n\t\t\t\t\t\t) +\n\t\t\t\t\t(event.title ?\n\t\t\t\t\t\t'
    ' +\n\t\t\t\t\t\t\thtmlEscape(event.title) +\n\t\t\t\t\t\t'
    ' :\n\t\t\t\t\t\t''\n\t\t\t\t\t\t) +\n\t\t\t\t'
    ' +\n\t\t\t\t'
    ' +\n\t\t\t\t/* TODO: write CSS for this\n\t\t\t\t(isResizableFromStart ?\n\t\t\t\t\t'
    ' :\n\t\t\t\t\t''\n\t\t\t\t\t) +\n\t\t\t\t*/\n\t\t\t\t(isResizableFromEnd ?\n\t\t\t\t\t'
    ' :\n\t\t\t\t\t''\n\t\t\t\t\t) +\n\t\t\t'';\n\t},\n\n\n\t/* Seg Position Utils\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Refreshes the CSS top/bottom coordinates for each segment element.\n\t// Works when called after initial render, after a window resize/zoom for example.\n\tupdateSegVerticals: function(segs) {\n\t\tthis.computeSegVerticals(segs);\n\t\tthis.assignSegVerticals(segs);\n\t},\n\n\n\t// For each segment in an array, computes and assigns its top and bottom properties\n\tcomputeSegVerticals: function(segs) {\n\t\tvar i, seg;\n\n\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\tseg = segs[i];\n\t\t\tseg.top = this.computeDateTop(seg.start, seg.start);\n\t\t\tseg.bottom = this.computeDateTop(seg.end, seg.start);\n\t\t}\n\t},\n\n\n\t// Given segments that already have their top/bottom properties computed, applies those values to\n\t// the segments' elements.\n\tassignSegVerticals: function(segs) {\n\t\tvar i, seg;\n\n\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\tseg = segs[i];\n\t\t\tseg.el.css(this.generateSegVerticalCss(seg));\n\t\t}\n\t},\n\n\n\t// Generates an object with CSS properties for the top/bottom coordinates of a segment element\n\tgenerateSegVerticalCss: function(seg) {\n\t\treturn {\n\t\t\ttop: seg.top,\n\t\t\tbottom: -seg.bottom // flipped because needs to be space beyond bottom edge of event container\n\t\t};\n\t},\n\n\n\t/* Foreground Event Positioning Utils\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Given segments that are assumed to all live in the *same column*,\n\t// compute their verical/horizontal coordinates and assign to their elements.\n\tupdateFgSegCoords: function(segs) {\n\t\tthis.computeSegVerticals(segs); // horizontals relies on this\n\t\tthis.computeFgSegHorizontals(segs); // compute horizontal coordinates, z-index's, and reorder the array\n\t\tthis.assignSegVerticals(segs);\n\t\tthis.assignFgSegHorizontals(segs);\n\t},\n\n\n\t// Given an array of segments that are all in the same column, sets the backwardCoord and forwardCoord on each.\n\t// NOTE: Also reorders the given array by date!\n\tcomputeFgSegHorizontals: function(segs) {\n\t\tvar levels;\n\t\tvar level0;\n\t\tvar i;\n\n\t\tthis.sortEventSegs(segs); // order by certain criteria\n\t\tlevels = buildSlotSegLevels(segs);\n\t\tcomputeForwardSlotSegs(levels);\n\n\t\tif ((level0 = levels[0])) {\n\n\t\t\tfor (i = 0; i < level0.length; i++) {\n\t\t\t\tcomputeSlotSegPressures(level0[i]);\n\t\t\t}\n\n\t\t\tfor (i = 0; i < level0.length; i++) {\n\t\t\t\tthis.computeFgSegForwardBack(level0[i], 0, 0);\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// Calculate seg.forwardCoord and seg.backwardCoord for the segment, where both values range\n\t// from 0 to 1. If the calendar is left-to-right, the seg.backwardCoord maps to \"left\" and\n\t// seg.forwardCoord maps to \"right\" (via percentage). Vice-versa if the calendar is right-to-left.\n\t//\n\t// The segment might be part of a \"series\", which means consecutive segments with the same pressure\n\t// who's width is unknown until an edge has been hit. `seriesBackwardPressure` is the number of\n\t// segments behind this one in the current series, and `seriesBackwardCoord` is the starting\n\t// coordinate of the first segment in the series.\n\tcomputeFgSegForwardBack: function(seg, seriesBackwardPressure, seriesBackwardCoord) {\n\t\tvar forwardSegs = seg.forwardSegs;\n\t\tvar i;\n\n\t\tif (seg.forwardCoord === undefined) { // not already computed\n\n\t\t\tif (!forwardSegs.length) {\n\n\t\t\t\t// if there are no forward segments, this segment should butt up against the edge\n\t\t\t\tseg.forwardCoord = 1;\n\t\t\t}\n\t\t\telse {\n\n\t\t\t\t// sort highest pressure first\n\t\t\t\tthis.sortForwardSegs(forwardSegs);\n\n\t\t\t\t// this segment's forwardCoord will be calculated from the backwardCoord of the\n\t\t\t\t// highest-pressure forward segment.\n\t\t\t\tthis.computeFgSegForwardBack(forwardSegs[0], seriesBackwardPressure + 1, seriesBackwardCoord);\n\t\t\t\tseg.forwardCoord = forwardSegs[0].backwardCoord;\n\t\t\t}\n\n\t\t\t// calculate the backwardCoord from the forwardCoord. consider the series\n\t\t\tseg.backwardCoord = seg.forwardCoord -\n\t\t\t\t(seg.forwardCoord - seriesBackwardCoord) / // available width for series\n\t\t\t\t(seriesBackwardPressure + 1); // # of segments in the series\n\n\t\t\t// use this segment's coordinates to computed the coordinates of the less-pressurized\n\t\t\t// forward segments\n\t\t\tfor (i=0; i seg2.top && seg1.top < seg2.bottom;\n}\n\n;;\n\n/* An abstract class from which other views inherit from\n----------------------------------------------------------------------------------------------------------------------*/\n\nvar View = FC.View = Class.extend(EmitterMixin, ListenerMixin, {\n\n\ttype: null, // subclass' view name (string)\n\tname: null, // deprecated. use `type` instead\n\ttitle: null, // the text that will be displayed in the header's title\n\n\tcalendar: null, // owner Calendar object\n\toptions: null, // hash containing all options. already merged with view-specific-options\n\tel: null, // the view's containing element. set by Calendar\n\n\tisDateSet: false,\n\tisDateRendered: false,\n\tdateRenderQueue: null,\n\n\tisEventsBound: false,\n\tisEventsSet: false,\n\tisEventsRendered: false,\n\teventRenderQueue: null,\n\n\t// range the view is actually displaying (moments)\n\tstart: null,\n\tend: null, // exclusive\n\n\t// range the view is formally responsible for (moments)\n\t// may be different from start/end. for example, a month view might have 1st-31st, excluding padded dates\n\tintervalStart: null,\n\tintervalEnd: null, // exclusive\n\tintervalDuration: null,\n\tintervalUnit: null, // name of largest unit being displayed, like \"month\" or \"week\"\n\n\tisRTL: false,\n\tisSelected: false, // boolean whether a range of time is user-selected or not\n\tselectedEvent: null,\n\n\teventOrderSpecs: null, // criteria for ordering events when they have same date/time\n\n\t// classNames styled by jqui themes\n\twidgetHeaderClass: null,\n\twidgetContentClass: null,\n\thighlightStateClass: null,\n\n\t// for date utils, computed from options\n\tnextDayThreshold: null,\n\tisHiddenDayHash: null,\n\n\t// now indicator\n\tisNowIndicatorRendered: null,\n\tinitialNowDate: null, // result first getNow call\n\tinitialNowQueriedMs: null, // ms time the getNow was called\n\tnowIndicatorTimeoutID: null, // for refresh timing of now indicator\n\tnowIndicatorIntervalID: null, // \"\n\n\n\tconstructor: function(calendar, type, options, intervalDuration) {\n\n\t\tthis.calendar = calendar;\n\t\tthis.type = this.name = type; // .name is deprecated\n\t\tthis.options = options;\n\t\tthis.intervalDuration = intervalDuration || moment.duration(1, 'day');\n\n\t\tthis.nextDayThreshold = moment.duration(this.opt('nextDayThreshold'));\n\t\tthis.initThemingProps();\n\t\tthis.initHiddenDays();\n\t\tthis.isRTL = this.opt('isRTL');\n\n\t\tthis.eventOrderSpecs = parseFieldSpecs(this.opt('eventOrder'));\n\n\t\tthis.dateRenderQueue = new TaskQueue();\n\t\tthis.eventRenderQueue = new TaskQueue(this.opt('eventRenderWait'));\n\n\t\tthis.initialize();\n\t},\n\n\n\t// A good place for subclasses to initialize member variables\n\tinitialize: function() {\n\t\t// subclasses can implement\n\t},\n\n\n\t// Retrieves an option with the given name\n\topt: function(name) {\n\t\treturn this.options[name];\n\t},\n\n\n\t// Triggers handlers that are view-related. Modifies args before passing to calendar.\n\tpubliclyTrigger: function(name, thisObj) { // arguments beyond thisObj are passed along\n\t\tvar calendar = this.calendar;\n\n\t\treturn calendar.publiclyTrigger.apply(\n\t\t\tcalendar,\n\t\t\t[name, thisObj || this].concat(\n\t\t\t\tArray.prototype.slice.call(arguments, 2), // arguments beyond thisObj\n\t\t\t\t[ this ] // always make the last argument a reference to the view. TODO: deprecate\n\t\t\t)\n\t\t);\n\t},\n\n\n\t// Returns a proxy of the given promise that will be rejected if the given event fires\n\t// before the promise resolves.\n\trejectOn: function(eventName, promise) {\n\t\tvar _this = this;\n\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\t_this.one(eventName, reject);\n\n\t\t\tfunction cleanup() {\n\t\t\t\t_this.off(eventName, reject);\n\t\t\t}\n\n\t\t\tpromise.then(function(res) { // success\n\t\t\t\tcleanup();\n\t\t\t\tresolve(res);\n\t\t\t}, function() { // failure\n\t\t\t\tcleanup();\n\t\t\t\treject();\n\t\t\t});\n\t\t});\n\t},\n\n\n\t/* Date Computation\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Updates all internal dates for displaying the given unzoned range.\n\tsetRange: function(range) {\n\t\t$.extend(this, range); // assigns every property to this object's member variables\n\t\tthis.updateTitle();\n\t},\n\n\n\t// Given a single current unzoned date, produce information about what range to display.\n\t// Subclasses can override. Must return all properties.\n\tcomputeRange: function(date) {\n\t\tvar intervalUnit = computeIntervalUnit(this.intervalDuration);\n\t\tvar intervalStart = date.clone().startOf(intervalUnit);\n\t\tvar intervalEnd = intervalStart.clone().add(this.intervalDuration);\n\t\tvar start, end;\n\n\t\t// normalize the range's time-ambiguity\n\t\tif (/year|month|week|day/.test(intervalUnit)) { // whole-days?\n\t\t\tintervalStart.stripTime();\n\t\t\tintervalEnd.stripTime();\n\t\t}\n\t\telse { // needs to have a time?\n\t\t\tif (!intervalStart.hasTime()) {\n\t\t\t\tintervalStart = this.calendar.time(0); // give 00:00 time\n\t\t\t}\n\t\t\tif (!intervalEnd.hasTime()) {\n\t\t\t\tintervalEnd = this.calendar.time(0); // give 00:00 time\n\t\t\t}\n\t\t}\n\n\t\tstart = intervalStart.clone();\n\t\tstart = this.skipHiddenDays(start);\n\t\tend = intervalEnd.clone();\n\t\tend = this.skipHiddenDays(end, -1, true); // exclusively move backwards\n\n\t\treturn {\n\t\t\tintervalUnit: intervalUnit,\n\t\t\tintervalStart: intervalStart,\n\t\t\tintervalEnd: intervalEnd,\n\t\t\tstart: start,\n\t\t\tend: end\n\t\t};\n\t},\n\n\n\t// Computes the new date when the user hits the prev button, given the current date\n\tcomputePrevDate: function(date) {\n\t\treturn this.massageCurrentDate(\n\t\t\tdate.clone().startOf(this.intervalUnit).subtract(this.intervalDuration), -1\n\t\t);\n\t},\n\n\n\t// Computes the new date when the user hits the next button, given the current date\n\tcomputeNextDate: function(date) {\n\t\treturn this.massageCurrentDate(\n\t\t\tdate.clone().startOf(this.intervalUnit).add(this.intervalDuration)\n\t\t);\n\t},\n\n\n\t// Given an arbitrarily calculated current date of the calendar, returns a date that is ensured to be completely\n\t// visible. `direction` is optional and indicates which direction the current date was being\n\t// incremented or decremented (1 or -1).\n\tmassageCurrentDate: function(date, direction) {\n\t\tif (this.intervalDuration.as('days') <= 1) { // if the view displays a single day or smaller\n\t\t\tif (this.isHiddenDay(date)) {\n\t\t\t\tdate = this.skipHiddenDays(date, direction);\n\t\t\t\tdate.startOf('day');\n\t\t\t}\n\t\t}\n\n\t\treturn date;\n\t},\n\n\n\t/* Title and Date Formatting\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Sets the view's title property to the most updated computed value\n\tupdateTitle: function() {\n\t\tthis.title = this.computeTitle();\n\t\tthis.calendar.setToolbarsTitle(this.title);\n\t},\n\n\n\t// Computes what the title at the top of the calendar should be for this view\n\tcomputeTitle: function() {\n\t\tvar start, end;\n\n\t\t// for views that span a large unit of time, show the proper interval, ignoring stray days before and after\n\t\tif (this.intervalUnit === 'year' || this.intervalUnit === 'month') {\n\t\t\tstart = this.intervalStart;\n\t\t\tend = this.intervalEnd;\n\t\t}\n\t\telse { // for day units or smaller, use the actual day range\n\t\t\tstart = this.start;\n\t\t\tend = this.end;\n\t\t}\n\n\t\treturn this.formatRange(\n\t\t\t{\n\t\t\t\t// in case intervalStart/End has a time, make sure timezone is correct\n\t\t\t\tstart: this.calendar.applyTimezone(start),\n\t\t\t\tend: this.calendar.applyTimezone(end)\n\t\t\t},\n\t\t\tthis.opt('titleFormat') || this.computeTitleFormat(),\n\t\t\tthis.opt('titleRangeSeparator')\n\t\t);\n\t},\n\n\n\t// Generates the format string that should be used to generate the title for the current date range.\n\t// Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`.\n\tcomputeTitleFormat: function() {\n\t\tif (this.intervalUnit == 'year') {\n\t\t\treturn 'YYYY';\n\t\t}\n\t\telse if (this.intervalUnit == 'month') {\n\t\t\treturn this.opt('monthYearFormat'); // like \"September 2014\"\n\t\t}\n\t\telse if (this.intervalDuration.as('days') > 1) {\n\t\t\treturn 'll'; // multi-day range. shorter, like \"Sep 9 - 10 2014\"\n\t\t}\n\t\telse {\n\t\t\treturn 'LL'; // one day. longer, like \"September 9 2014\"\n\t\t}\n\t},\n\n\n\t// Utility for formatting a range. Accepts a range object, formatting string, and optional separator.\n\t// Displays all-day ranges naturally, with an inclusive end. Takes the current isRTL into account.\n\t// The timezones of the dates within `range` will be respected.\n\tformatRange: function(range, formatStr, separator) {\n\t\tvar end = range.end;\n\n\t\tif (!end.hasTime()) { // all-day?\n\t\t\tend = end.clone().subtract(1); // convert to inclusive. last ms of previous day\n\t\t}\n\n\t\treturn formatRange(range.start, end, formatStr, separator, this.opt('isRTL'));\n\t},\n\n\n\tgetAllDayHtml: function() {\n\t\treturn this.opt('allDayHtml') || htmlEscape(this.opt('allDayText'));\n\t},\n\n\n\t/* Navigation\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Generates HTML for an anchor to another view into the calendar.\n\t// Will either generate an tag or a non-clickable tag, depending on enabled settings.\n\t// `gotoOptions` can either be a moment input, or an object with the form:\n\t// { date, type, forceOff }\n\t// `type` is a view-type like \"day\" or \"week\". default value is \"day\".\n\t// `attrs` and `innerHtml` are use to generate the rest of the HTML tag.\n\tbuildGotoAnchorHtml: function(gotoOptions, attrs, innerHtml) {\n\t\tvar date, type, forceOff;\n\t\tvar finalOptions;\n\n\t\tif ($.isPlainObject(gotoOptions)) {\n\t\t\tdate = gotoOptions.date;\n\t\t\ttype = gotoOptions.type;\n\t\t\tforceOff = gotoOptions.forceOff;\n\t\t}\n\t\telse {\n\t\t\tdate = gotoOptions; // a single moment input\n\t\t}\n\t\tdate = FC.moment(date); // if a string, parse it\n\n\t\tfinalOptions = { // for serialization into the link\n\t\t\tdate: date.format('YYYY-MM-DD'),\n\t\t\ttype: type || 'day'\n\t\t};\n\n\t\tif (typeof attrs === 'string') {\n\t\t\tinnerHtml = attrs;\n\t\t\tattrs = null;\n\t\t}\n\n\t\tattrs = attrs ? ' ' + attrsToStr(attrs) : ''; // will have a leading space\n\t\tinnerHtml = innerHtml || '';\n\n\t\tif (!forceOff && this.opt('navLinks')) {\n\t\t\treturn '' +\n\t\t\t\tinnerHtml +\n\t\t\t\t'';\n\t\t}\n\t\telse {\n\t\t\treturn '' +\n\t\t\t\tinnerHtml +\n\t\t\t\t'';\n\t\t}\n\t},\n\n\n\t// Rendering Non-date-related Content\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\t// Sets the container element that the view should render inside of, does global DOM-related initializations,\n\t// and renders all the non-date-related content inside.\n\tsetElement: function(el) {\n\t\tthis.el = el;\n\t\tthis.bindGlobalHandlers();\n\t\tthis.renderSkeleton();\n\t},\n\n\n\t// Removes the view's container element from the DOM, clearing any content beforehand.\n\t// Undoes any other DOM-related attachments.\n\tremoveElement: function() {\n\t\tthis.unsetDate();\n\t\tthis.unrenderSkeleton();\n\n\t\tthis.unbindGlobalHandlers();\n\n\t\tthis.el.remove();\n\t\t// NOTE: don't null-out this.el in case the View was destroyed within an API callback.\n\t\t// We don't null-out the View's other jQuery element references upon destroy,\n\t\t// so we shouldn't kill this.el either.\n\t},\n\n\n\t// Renders the basic structure of the view before any content is rendered\n\trenderSkeleton: function() {\n\t\t// subclasses should implement\n\t},\n\n\n\t// Unrenders the basic structure of the view\n\tunrenderSkeleton: function() {\n\t\t// subclasses should implement\n\t},\n\n\n\t// Date Setting/Unsetting\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\tsetDate: function(date) {\n\t\tvar isReset = this.isDateSet;\n\n\t\tthis.isDateSet = true;\n\t\tthis.handleDate(date, isReset);\n\t\tthis.trigger(isReset ? 'dateReset' : 'dateSet', date);\n\t},\n\n\n\tunsetDate: function() {\n\t\tif (this.isDateSet) {\n\t\t\tthis.isDateSet = false;\n\t\t\tthis.handleDateUnset();\n\t\t\tthis.trigger('dateUnset');\n\t\t}\n\t},\n\n\n\t// Date Handling\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\thandleDate: function(date, isReset) {\n\t\tvar _this = this;\n\n\t\tthis.unbindEvents(); // will do nothing if not already bound\n\t\tthis.requestDateRender(date).then(function() {\n\t\t\t// wish we could start earlier, but setRange/computeRange needs to execute first\n\t\t\t_this.bindEvents(); // will request events\n\t\t});\n\t},\n\n\n\thandleDateUnset: function() {\n\t\tthis.unbindEvents();\n\t\tthis.requestDateUnrender();\n\t},\n\n\n\t// Date Render Queuing\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\t// if date not specified, uses current\n\trequestDateRender: function(date) {\n\t\tvar _this = this;\n\n\t\treturn this.dateRenderQueue.add(function() {\n\t\t\treturn _this.executeDateRender(date);\n\t\t});\n\t},\n\n\n\trequestDateUnrender: function() {\n\t\tvar _this = this;\n\n\t\treturn this.dateRenderQueue.add(function() {\n\t\t\treturn _this.executeDateUnrender();\n\t\t});\n\t},\n\n\n\t// Date High-level Rendering\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\t// if date not specified, uses current\n\texecuteDateRender: function(date) {\n\t\tvar _this = this;\n\n\t\t// if rendering a new date, reset scroll to initial state (scrollTime)\n\t\tif (date) {\n\t\t\tthis.captureInitialScroll();\n\t\t}\n\t\telse {\n\t\t\tthis.captureScroll(); // a rerender of the current date\n\t\t}\n\n\t\tthis.freezeHeight();\n\n\t\treturn this.executeDateUnrender().then(function() {\n\n\t\t\tif (date) {\n\t\t\t\t_this.setRange(_this.computeRange(date));\n\t\t\t}\n\n\t\t\tif (_this.render) {\n\t\t\t\t_this.render(); // TODO: deprecate\n\t\t\t}\n\n\t\t\t_this.renderDates();\n\t\t\t_this.updateSize();\n\t\t\t_this.renderBusinessHours(); // might need coordinates, so should go after updateSize()\n\t\t\t_this.startNowIndicator();\n\n\t\t\t_this.thawHeight();\n\t\t\t_this.releaseScroll();\n\n\t\t\t_this.isDateRendered = true;\n\t\t\t_this.onDateRender();\n\t\t\t_this.trigger('dateRender');\n\t\t});\n\t},\n\n\n\texecuteDateUnrender: function() {\n\t\tvar _this = this;\n\n\t\tif (_this.isDateRendered) {\n\t\t\treturn this.requestEventsUnrender().then(function() {\n\n\t\t\t\t_this.unselect();\n\t\t\t\t_this.stopNowIndicator();\n\t\t\t\t_this.triggerUnrender();\n\t\t\t\t_this.unrenderBusinessHours();\n\t\t\t\t_this.unrenderDates();\n\n\t\t\t\tif (_this.destroy) {\n\t\t\t\t\t_this.destroy(); // TODO: deprecate\n\t\t\t\t}\n\n\t\t\t\t_this.isDateRendered = false;\n\t\t\t\t_this.trigger('dateUnrender');\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\treturn Promise.resolve();\n\t\t}\n\t},\n\n\n\t// Date Rendering Triggers\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\tonDateRender: function() {\n\t\tthis.triggerRender();\n\t},\n\n\n\t// Date Low-level Rendering\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\t// date-cell content only\n\trenderDates: function() {\n\t\t// subclasses should implement\n\t},\n\n\n\t// date-cell content only\n\tunrenderDates: function() {\n\t\t// subclasses should override\n\t},\n\n\n\t// Misc view rendering utils\n\t// -------------------------\n\n\n\t// Signals that the view's content has been rendered\n\ttriggerRender: function() {\n\t\tthis.publiclyTrigger('viewRender', this, this, this.el);\n\t},\n\n\n\t// Signals that the view's content is about to be unrendered\n\ttriggerUnrender: function() {\n\t\tthis.publiclyTrigger('viewDestroy', this, this, this.el);\n\t},\n\n\n\t// Binds DOM handlers to elements that reside outside the view container, such as the document\n\tbindGlobalHandlers: function() {\n\t\tthis.listenTo(GlobalEmitter.get(), {\n\t\t\ttouchstart: this.processUnselect,\n\t\t\tmousedown: this.handleDocumentMousedown\n\t\t});\n\t},\n\n\n\t// Unbinds DOM handlers from elements that reside outside the view container\n\tunbindGlobalHandlers: function() {\n\t\tthis.stopListeningTo(GlobalEmitter.get());\n\t},\n\n\n\t// Initializes internal variables related to theming\n\tinitThemingProps: function() {\n\t\tvar tm = this.opt('theme') ? 'ui' : 'fc';\n\n\t\tthis.widgetHeaderClass = tm + '-widget-header';\n\t\tthis.widgetContentClass = tm + '-widget-content';\n\t\tthis.highlightStateClass = tm + '-state-highlight';\n\t},\n\n\n\t/* Business Hours\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders business-hours onto the view. Assumes updateSize has already been called.\n\trenderBusinessHours: function() {\n\t\t// subclasses should implement\n\t},\n\n\n\t// Unrenders previously-rendered business-hours\n\tunrenderBusinessHours: function() {\n\t\t// subclasses should implement\n\t},\n\n\n\t/* Now Indicator\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Immediately render the current time indicator and begins re-rendering it at an interval,\n\t// which is defined by this.getNowIndicatorUnit().\n\t// TODO: somehow do this for the current whole day's background too\n\tstartNowIndicator: function() {\n\t\tvar _this = this;\n\t\tvar unit;\n\t\tvar update;\n\t\tvar delay; // ms wait value\n\n\t\tif (this.opt('nowIndicator')) {\n\t\t\tunit = this.getNowIndicatorUnit();\n\t\t\tif (unit) {\n\t\t\t\tupdate = proxy(this, 'updateNowIndicator'); // bind to `this`\n\n\t\t\t\tthis.initialNowDate = this.calendar.getNow();\n\t\t\t\tthis.initialNowQueriedMs = +new Date();\n\t\t\t\tthis.renderNowIndicator(this.initialNowDate);\n\t\t\t\tthis.isNowIndicatorRendered = true;\n\n\t\t\t\t// wait until the beginning of the next interval\n\t\t\t\tdelay = this.initialNowDate.clone().startOf(unit).add(1, unit) - this.initialNowDate;\n\t\t\t\tthis.nowIndicatorTimeoutID = setTimeout(function() {\n\t\t\t\t\t_this.nowIndicatorTimeoutID = null;\n\t\t\t\t\tupdate();\n\t\t\t\t\tdelay = +moment.duration(1, unit);\n\t\t\t\t\tdelay = Math.max(100, delay); // prevent too frequent\n\t\t\t\t\t_this.nowIndicatorIntervalID = setInterval(update, delay); // update every interval\n\t\t\t\t}, delay);\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// rerenders the now indicator, computing the new current time from the amount of time that has passed\n\t// since the initial getNow call.\n\tupdateNowIndicator: function() {\n\t\tif (this.isNowIndicatorRendered) {\n\t\t\tthis.unrenderNowIndicator();\n\t\t\tthis.renderNowIndicator(\n\t\t\t\tthis.initialNowDate.clone().add(new Date() - this.initialNowQueriedMs) // add ms\n\t\t\t);\n\t\t}\n\t},\n\n\n\t// Immediately unrenders the view's current time indicator and stops any re-rendering timers.\n\t// Won't cause side effects if indicator isn't rendered.\n\tstopNowIndicator: function() {\n\t\tif (this.isNowIndicatorRendered) {\n\n\t\t\tif (this.nowIndicatorTimeoutID) {\n\t\t\t\tclearTimeout(this.nowIndicatorTimeoutID);\n\t\t\t\tthis.nowIndicatorTimeoutID = null;\n\t\t\t}\n\t\t\tif (this.nowIndicatorIntervalID) {\n\t\t\t\tclearTimeout(this.nowIndicatorIntervalID);\n\t\t\t\tthis.nowIndicatorIntervalID = null;\n\t\t\t}\n\n\t\t\tthis.unrenderNowIndicator();\n\t\t\tthis.isNowIndicatorRendered = false;\n\t\t}\n\t},\n\n\n\t// Returns a string unit, like 'second' or 'minute' that defined how often the current time indicator\n\t// should be refreshed. If something falsy is returned, no time indicator is rendered at all.\n\tgetNowIndicatorUnit: function() {\n\t\t// subclasses should implement\n\t},\n\n\n\t// Renders a current time indicator at the given datetime\n\trenderNowIndicator: function(date) {\n\t\t// subclasses should implement\n\t},\n\n\n\t// Undoes the rendering actions from renderNowIndicator\n\tunrenderNowIndicator: function() {\n\t\t// subclasses should implement\n\t},\n\n\n\t/* Dimensions\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Refreshes anything dependant upon sizing of the container element of the grid\n\tupdateSize: function(isResize) {\n\n\t\tif (isResize) {\n\t\t\tthis.captureScroll();\n\t\t}\n\n\t\tthis.updateHeight(isResize);\n\t\tthis.updateWidth(isResize);\n\t\tthis.updateNowIndicator();\n\n\t\tif (isResize) {\n\t\t\tthis.releaseScroll();\n\t\t}\n\t},\n\n\n\t// Refreshes the horizontal dimensions of the calendar\n\tupdateWidth: function(isResize) {\n\t\t// subclasses should implement\n\t},\n\n\n\t// Refreshes the vertical dimensions of the calendar\n\tupdateHeight: function(isResize) {\n\t\tvar calendar = this.calendar; // we poll the calendar for height information\n\n\t\tthis.setHeight(\n\t\t\tcalendar.getSuggestedViewHeight(),\n\t\t\tcalendar.isHeightAuto()\n\t\t);\n\t},\n\n\n\t// Updates the vertical dimensions of the calendar to the specified height.\n\t// if `isAuto` is set to true, height becomes merely a suggestion and the view should use its \"natural\" height.\n\tsetHeight: function(height, isAuto) {\n\t\t// subclasses should implement\n\t},\n\n\n\t/* Scroller\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\tcapturedScroll: null,\n\tcapturedScrollDepth: 0,\n\n\n\tcaptureScroll: function() {\n\t\tif (!(this.capturedScrollDepth++)) {\n\t\t\tthis.capturedScroll = this.isDateRendered ? this.queryScroll() : {}; // require a render first\n\t\t\treturn true; // root?\n\t\t}\n\t\treturn false;\n\t},\n\n\n\tcaptureInitialScroll: function(forcedScroll) {\n\t\tif (this.captureScroll()) { // root?\n\t\t\tthis.capturedScroll.isInitial = true;\n\n\t\t\tif (forcedScroll) {\n\t\t\t\t$.extend(this.capturedScroll, forcedScroll);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.capturedScroll.isComputed = true;\n\t\t\t}\n\t\t}\n\t},\n\n\n\treleaseScroll: function() {\n\t\tvar scroll = this.capturedScroll;\n\t\tvar isRoot = this.discardScroll();\n\n\t\tif (scroll.isComputed) {\n\t\t\tif (isRoot) {\n\t\t\t\t// only compute initial scroll if it will actually be used (is the root capture)\n\t\t\t\t$.extend(scroll, this.computeInitialScroll());\n\t\t\t}\n\t\t\telse {\n\t\t\t\tscroll = null; // scroll couldn't be computed. don't apply it to the DOM\n\t\t\t}\n\t\t}\n\n\t\tif (scroll) {\n\t\t\t// we act immediately on a releaseScroll operation, as opposed to captureScroll.\n\t\t\t// if capture/release wraps a render operation that screws up the scroll,\n\t\t\t// we still want to restore it a good state after, regardless of depth.\n\n\t\t\tif (scroll.isInitial) {\n\t\t\t\tthis.hardSetScroll(scroll); // outsmart how browsers set scroll on initial DOM\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.setScroll(scroll);\n\t\t\t}\n\t\t}\n\t},\n\n\n\tdiscardScroll: function() {\n\t\tif (!(--this.capturedScrollDepth)) {\n\t\t\tthis.capturedScroll = null;\n\t\t\treturn true; // root?\n\t\t}\n\t\treturn false;\n\t},\n\n\n\tcomputeInitialScroll: function() {\n\t\treturn {};\n\t},\n\n\n\tqueryScroll: function() {\n\t\treturn {};\n\t},\n\n\n\thardSetScroll: function(scroll) {\n\t\tvar _this = this;\n\t\tvar exec = function() { _this.setScroll(scroll); };\n\t\texec();\n\t\tsetTimeout(exec, 0); // to surely clear the browser's initial scroll for the DOM\n\t},\n\n\n\tsetScroll: function(scroll) {\n\t},\n\n\n\t/* Height Freezing\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\tfreezeHeight: function() {\n\t\tthis.calendar.freezeContentHeight();\n\t},\n\n\n\tthawHeight: function() {\n\t\tthis.calendar.thawContentHeight();\n\t},\n\n\n\t// Event Binding/Unbinding\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\tbindEvents: function() {\n\t\tvar _this = this;\n\n\t\tif (!this.isEventsBound) {\n\t\t\tthis.isEventsBound = true;\n\t\t\tthis.rejectOn('eventsUnbind', this.requestEvents()).then(function(events) { // TODO: test rejection\n\t\t\t\t_this.listenTo(_this.calendar, 'eventsReset', _this.setEvents);\n\t\t\t\t_this.setEvents(events);\n\t\t\t});\n\t\t}\n\t},\n\n\n\tunbindEvents: function() {\n\t\tif (this.isEventsBound) {\n\t\t\tthis.isEventsBound = false;\n\t\t\tthis.stopListeningTo(this.calendar, 'eventsReset');\n\t\t\tthis.unsetEvents();\n\t\t\tthis.trigger('eventsUnbind');\n\t\t}\n\t},\n\n\n\t// Event Setting/Unsetting\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\tsetEvents: function(events) {\n\t\tvar isReset = this.isEventSet;\n\n\t\tthis.isEventsSet = true;\n\t\tthis.handleEvents(events, isReset);\n\t\tthis.trigger(isReset ? 'eventsReset' : 'eventsSet', events);\n\t},\n\n\n\tunsetEvents: function() {\n\t\tif (this.isEventsSet) {\n\t\t\tthis.isEventsSet = false;\n\t\t\tthis.handleEventsUnset();\n\t\t\tthis.trigger('eventsUnset');\n\t\t}\n\t},\n\n\n\twhenEventsSet: function() {\n\t\tvar _this = this;\n\n\t\tif (this.isEventsSet) {\n\t\t\treturn Promise.resolve(this.getCurrentEvents());\n\t\t}\n\t\telse {\n\t\t\treturn new Promise(function(resolve) {\n\t\t\t\t_this.one('eventsSet', resolve);\n\t\t\t});\n\t\t}\n\t},\n\n\n\t// Event Handling\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\thandleEvents: function(events, isReset) {\n\t\tthis.requestEventsRender(events);\n\t},\n\n\n\thandleEventsUnset: function() {\n\t\tthis.requestEventsUnrender();\n\t},\n\n\n\t// Event Render Queuing\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\t// assumes any previous event renders have been cleared already\n\trequestEventsRender: function(events) {\n\t\tvar _this = this;\n\n\t\treturn this.eventRenderQueue.add(function() { // might not return a promise if debounced!? bad\n\t\t\treturn _this.executeEventsRender(events);\n\t\t});\n\t},\n\n\n\trequestEventsUnrender: function() {\n\t\tvar _this = this;\n\n\t\tif (this.isEventsRendered) {\n\t\t\treturn this.eventRenderQueue.addQuickly(function() {\n\t\t\t\treturn _this.executeEventsUnrender();\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\treturn Promise.resolve();\n\t\t}\n\t},\n\n\n\trequestCurrentEventsRender: function() {\n\t\tif (this.isEventsSet) {\n\t\t\tthis.requestEventsRender(this.getCurrentEvents());\n\t\t}\n\t\telse {\n\t\t\treturn Promise.reject();\n\t\t}\n\t},\n\n\n\t// Event High-level Rendering\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\texecuteEventsRender: function(events) {\n\t\tvar _this = this;\n\n\t\tthis.captureScroll();\n\t\tthis.freezeHeight();\n\n\t\treturn this.executeEventsUnrender().then(function() {\n\t\t\t_this.renderEvents(events);\n\n\t\t\t_this.thawHeight();\n\t\t\t_this.releaseScroll();\n\n\t\t\t_this.isEventsRendered = true;\n\t\t\t_this.onEventsRender();\n\t\t\t_this.trigger('eventsRender');\n\t\t});\n\t},\n\n\n\texecuteEventsUnrender: function() {\n\t\tif (this.isEventsRendered) {\n\t\t\tthis.onBeforeEventsUnrender();\n\n\t\t\tthis.captureScroll();\n\t\t\tthis.freezeHeight();\n\n\t\t\tif (this.destroyEvents) {\n\t\t\t\tthis.destroyEvents(); // TODO: deprecate\n\t\t\t}\n\n\t\t\tthis.unrenderEvents();\n\n\t\t\tthis.thawHeight();\n\t\t\tthis.releaseScroll();\n\n\t\t\tthis.isEventsRendered = false;\n\t\t\tthis.trigger('eventsUnrender');\n\t\t}\n\n\t\treturn Promise.resolve(); // always synchronous\n\t},\n\n\n\t// Event Rendering Triggers\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\t// Signals that all events have been rendered\n\tonEventsRender: function() {\n\t\tthis.renderedEventSegEach(function(seg) {\n\t\t\tthis.publiclyTrigger('eventAfterRender', seg.event, seg.event, seg.el);\n\t\t});\n\t\tthis.publiclyTrigger('eventAfterAllRender');\n\t},\n\n\n\t// Signals that all event elements are about to be removed\n\tonBeforeEventsUnrender: function() {\n\t\tthis.renderedEventSegEach(function(seg) {\n\t\t\tthis.publiclyTrigger('eventDestroy', seg.event, seg.event, seg.el);\n\t\t});\n\t},\n\n\n\t// Event Low-level Rendering\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\t// Renders the events onto the view.\n\trenderEvents: function(events) {\n\t\t// subclasses should implement\n\t},\n\n\n\t// Removes event elements from the view.\n\tunrenderEvents: function() {\n\t\t// subclasses should implement\n\t},\n\n\n\t// Event Data Access\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\trequestEvents: function() {\n\t\treturn this.calendar.requestEvents(this.start, this.end);\n\t},\n\n\n\tgetCurrentEvents: function() {\n\t\treturn this.calendar.getPrunedEventCache();\n\t},\n\n\n\t// Event Rendering Utils\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\t// Given an event and the default element used for rendering, returns the element that should actually be used.\n\t// Basically runs events and elements through the eventRender hook.\n\tresolveEventEl: function(event, el) {\n\t\tvar custom = this.publiclyTrigger('eventRender', event, event, el);\n\n\t\tif (custom === false) { // means don't render at all\n\t\t\tel = null;\n\t\t}\n\t\telse if (custom && custom !== true) {\n\t\t\tel = $(custom);\n\t\t}\n\n\t\treturn el;\n\t},\n\n\n\t// Hides all rendered event segments linked to the given event\n\tshowEvent: function(event) {\n\t\tthis.renderedEventSegEach(function(seg) {\n\t\t\tseg.el.css('visibility', '');\n\t\t}, event);\n\t},\n\n\n\t// Shows all rendered event segments linked to the given event\n\thideEvent: function(event) {\n\t\tthis.renderedEventSegEach(function(seg) {\n\t\t\tseg.el.css('visibility', 'hidden');\n\t\t}, event);\n\t},\n\n\n\t// Iterates through event segments that have been rendered (have an el). Goes through all by default.\n\t// If the optional `event` argument is specified, only iterates through segments linked to that event.\n\t// The `this` value of the callback function will be the view.\n\trenderedEventSegEach: function(func, event) {\n\t\tvar segs = this.getEventSegs();\n\t\tvar i;\n\n\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\tif (!event || segs[i].event._id === event._id) {\n\t\t\t\tif (segs[i].el) {\n\t\t\t\t\tfunc.call(this, segs[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// Retrieves all the rendered segment objects for the view\n\tgetEventSegs: function() {\n\t\t// subclasses must implement\n\t\treturn [];\n\t},\n\n\n\t/* Event Drag-n-Drop\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Computes if the given event is allowed to be dragged by the user\n\tisEventDraggable: function(event) {\n\t\treturn this.isEventStartEditable(event);\n\t},\n\n\n\tisEventStartEditable: function(event) {\n\t\treturn firstDefined(\n\t\t\tevent.startEditable,\n\t\t\t(event.source || {}).startEditable,\n\t\t\tthis.opt('eventStartEditable'),\n\t\t\tthis.isEventGenerallyEditable(event)\n\t\t);\n\t},\n\n\n\tisEventGenerallyEditable: function(event) {\n\t\treturn firstDefined(\n\t\t\tevent.editable,\n\t\t\t(event.source || {}).editable,\n\t\t\tthis.opt('editable')\n\t\t);\n\t},\n\n\n\t// Must be called when an event in the view is dropped onto new location.\n\t// `dropLocation` is an object that contains the new zoned start/end/allDay values for the event.\n\treportSegDrop: function(seg, dropLocation, largeUnit, el, ev) {\n\t\tvar calendar = this.calendar;\n\t\tvar mutateResult = calendar.mutateSeg(seg, dropLocation, largeUnit);\n\t\tvar undoFunc = function() {\n\t\t\tmutateResult.undo();\n\t\t\tcalendar.reportEventChange();\n\t\t};\n\n\t\tthis.triggerEventDrop(seg.event, mutateResult.dateDelta, undoFunc, el, ev);\n\t\tcalendar.reportEventChange(); // will rerender events\n\t},\n\n\n\t// Triggers event-drop handlers that have subscribed via the API\n\ttriggerEventDrop: function(event, dateDelta, undoFunc, el, ev) {\n\t\tthis.publiclyTrigger('eventDrop', el[0], event, dateDelta, undoFunc, ev, {}); // {} = jqui dummy\n\t},\n\n\n\t/* External Element Drag-n-Drop\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Must be called when an external element, via jQuery UI, has been dropped onto the calendar.\n\t// `meta` is the parsed data that has been embedded into the dragging event.\n\t// `dropLocation` is an object that contains the new zoned start/end/allDay values for the event.\n\treportExternalDrop: function(meta, dropLocation, el, ev, ui) {\n\t\tvar eventProps = meta.eventProps;\n\t\tvar eventInput;\n\t\tvar event;\n\n\t\t// Try to build an event object and render it. TODO: decouple the two\n\t\tif (eventProps) {\n\t\t\teventInput = $.extend({}, eventProps, dropLocation);\n\t\t\tevent = this.calendar.renderEvent(eventInput, meta.stick)[0]; // renderEvent returns an array\n\t\t}\n\n\t\tthis.triggerExternalDrop(event, dropLocation, el, ev, ui);\n\t},\n\n\n\t// Triggers external-drop handlers that have subscribed via the API\n\ttriggerExternalDrop: function(event, dropLocation, el, ev, ui) {\n\n\t\t// trigger 'drop' regardless of whether element represents an event\n\t\tthis.publiclyTrigger('drop', el[0], dropLocation.start, ev, ui);\n\n\t\tif (event) {\n\t\t\tthis.publiclyTrigger('eventReceive', null, event); // signal an external event landed\n\t\t}\n\t},\n\n\n\t/* Drag-n-Drop Rendering (for both events and external elements)\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders a visual indication of a event or external-element drag over the given drop zone.\n\t// If an external-element, seg will be `null`.\n\t// Must return elements used for any mock events.\n\trenderDrag: function(dropLocation, seg) {\n\t\t// subclasses must implement\n\t},\n\n\n\t// Unrenders a visual indication of an event or external-element being dragged.\n\tunrenderDrag: function() {\n\t\t// subclasses must implement\n\t},\n\n\n\t/* Event Resizing\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Computes if the given event is allowed to be resized from its starting edge\n\tisEventResizableFromStart: function(event) {\n\t\treturn this.opt('eventResizableFromStart') && this.isEventResizable(event);\n\t},\n\n\n\t// Computes if the given event is allowed to be resized from its ending edge\n\tisEventResizableFromEnd: function(event) {\n\t\treturn this.isEventResizable(event);\n\t},\n\n\n\t// Computes if the given event is allowed to be resized by the user at all\n\tisEventResizable: function(event) {\n\t\tvar source = event.source || {};\n\n\t\treturn firstDefined(\n\t\t\tevent.durationEditable,\n\t\t\tsource.durationEditable,\n\t\t\tthis.opt('eventDurationEditable'),\n\t\t\tevent.editable,\n\t\t\tsource.editable,\n\t\t\tthis.opt('editable')\n\t\t);\n\t},\n\n\n\t// Must be called when an event in the view has been resized to a new length\n\treportSegResize: function(seg, resizeLocation, largeUnit, el, ev) {\n\t\tvar calendar = this.calendar;\n\t\tvar mutateResult = calendar.mutateSeg(seg, resizeLocation, largeUnit);\n\t\tvar undoFunc = function() {\n\t\t\tmutateResult.undo();\n\t\t\tcalendar.reportEventChange();\n\t\t};\n\n\t\tthis.triggerEventResize(seg.event, mutateResult.durationDelta, undoFunc, el, ev);\n\t\tcalendar.reportEventChange(); // will rerender events\n\t},\n\n\n\t// Triggers event-resize handlers that have subscribed via the API\n\ttriggerEventResize: function(event, durationDelta, undoFunc, el, ev) {\n\t\tthis.publiclyTrigger('eventResize', el[0], event, durationDelta, undoFunc, ev, {}); // {} = jqui dummy\n\t},\n\n\n\t/* Selection (time range)\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Selects a date span on the view. `start` and `end` are both Moments.\n\t// `ev` is the native mouse event that begin the interaction.\n\tselect: function(span, ev) {\n\t\tthis.unselect(ev);\n\t\tthis.renderSelection(span);\n\t\tthis.reportSelection(span, ev);\n\t},\n\n\n\t// Renders a visual indication of the selection\n\trenderSelection: function(span) {\n\t\t// subclasses should implement\n\t},\n\n\n\t// Called when a new selection is made. Updates internal state and triggers handlers.\n\treportSelection: function(span, ev) {\n\t\tthis.isSelected = true;\n\t\tthis.triggerSelect(span, ev);\n\t},\n\n\n\t// Triggers handlers to 'select'\n\ttriggerSelect: function(span, ev) {\n\t\tthis.publiclyTrigger(\n\t\t\t'select',\n\t\t\tnull,\n\t\t\tthis.calendar.applyTimezone(span.start), // convert to calendar's tz for external API\n\t\t\tthis.calendar.applyTimezone(span.end), // \"\n\t\t\tev\n\t\t);\n\t},\n\n\n\t// Undoes a selection. updates in the internal state and triggers handlers.\n\t// `ev` is the native mouse event that began the interaction.\n\tunselect: function(ev) {\n\t\tif (this.isSelected) {\n\t\t\tthis.isSelected = false;\n\t\t\tif (this.destroySelection) {\n\t\t\t\tthis.destroySelection(); // TODO: deprecate\n\t\t\t}\n\t\t\tthis.unrenderSelection();\n\t\t\tthis.publiclyTrigger('unselect', null, ev);\n\t\t}\n\t},\n\n\n\t// Unrenders a visual indication of selection\n\tunrenderSelection: function() {\n\t\t// subclasses should implement\n\t},\n\n\n\t/* Event Selection\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\tselectEvent: function(event) {\n\t\tif (!this.selectedEvent || this.selectedEvent !== event) {\n\t\t\tthis.unselectEvent();\n\t\t\tthis.renderedEventSegEach(function(seg) {\n\t\t\t\tseg.el.addClass('fc-selected');\n\t\t\t}, event);\n\t\t\tthis.selectedEvent = event;\n\t\t}\n\t},\n\n\n\tunselectEvent: function() {\n\t\tif (this.selectedEvent) {\n\t\t\tthis.renderedEventSegEach(function(seg) {\n\t\t\t\tseg.el.removeClass('fc-selected');\n\t\t\t}, this.selectedEvent);\n\t\t\tthis.selectedEvent = null;\n\t\t}\n\t},\n\n\n\tisEventSelected: function(event) {\n\t\t// event references might change on refetchEvents(), while selectedEvent doesn't,\n\t\t// so compare IDs\n\t\treturn this.selectedEvent && this.selectedEvent._id === event._id;\n\t},\n\n\n\t/* Mouse / Touch Unselecting (time range & event unselection)\n\t------------------------------------------------------------------------------------------------------------------*/\n\t// TODO: move consistently to down/start or up/end?\n\t// TODO: don't kill previous selection if touch scrolling\n\n\n\thandleDocumentMousedown: function(ev) {\n\t\tif (isPrimaryMouseButton(ev)) {\n\t\t\tthis.processUnselect(ev);\n\t\t}\n\t},\n\n\n\tprocessUnselect: function(ev) {\n\t\tthis.processRangeUnselect(ev);\n\t\tthis.processEventUnselect(ev);\n\t},\n\n\n\tprocessRangeUnselect: function(ev) {\n\t\tvar ignore;\n\n\t\t// is there a time-range selection?\n\t\tif (this.isSelected && this.opt('unselectAuto')) {\n\t\t\t// only unselect if the clicked element is not identical to or inside of an 'unselectCancel' element\n\t\t\tignore = this.opt('unselectCancel');\n\t\t\tif (!ignore || !$(ev.target).closest(ignore).length) {\n\t\t\t\tthis.unselect(ev);\n\t\t\t}\n\t\t}\n\t},\n\n\n\tprocessEventUnselect: function(ev) {\n\t\tif (this.selectedEvent) {\n\t\t\tif (!$(ev.target).closest('.fc-selected').length) {\n\t\t\t\tthis.unselectEvent();\n\t\t\t}\n\t\t}\n\t},\n\n\n\t/* Day Click\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Triggers handlers to 'dayClick'\n\t// Span has start/end of the clicked area. Only the start is useful.\n\ttriggerDayClick: function(span, dayEl, ev) {\n\t\tthis.publiclyTrigger(\n\t\t\t'dayClick',\n\t\t\tdayEl,\n\t\t\tthis.calendar.applyTimezone(span.start), // convert to calendar's timezone for external API\n\t\t\tev\n\t\t);\n\t},\n\n\n\t/* Date Utils\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Initializes internal variables related to calculating hidden days-of-week\n\tinitHiddenDays: function() {\n\t\tvar hiddenDays = this.opt('hiddenDays') || []; // array of day-of-week indices that are hidden\n\t\tvar isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool)\n\t\tvar dayCnt = 0;\n\t\tvar i;\n\n\t\tif (this.opt('weekends') === false) {\n\t\t\thiddenDays.push(0, 6); // 0=sunday, 6=saturday\n\t\t}\n\n\t\tfor (i = 0; i < 7; i++) {\n\t\t\tif (\n\t\t\t\t!(isHiddenDayHash[i] = $.inArray(i, hiddenDays) !== -1)\n\t\t\t) {\n\t\t\t\tdayCnt++;\n\t\t\t}\n\t\t}\n\n\t\tif (!dayCnt) {\n\t\t\tthrow 'invalid hiddenDays'; // all days were hidden? bad.\n\t\t}\n\n\t\tthis.isHiddenDayHash = isHiddenDayHash;\n\t},\n\n\n\t// Is the current day hidden?\n\t// `day` is a day-of-week index (0-6), or a Moment\n\tisHiddenDay: function(day) {\n\t\tif (moment.isMoment(day)) {\n\t\t\tday = day.day();\n\t\t}\n\t\treturn this.isHiddenDayHash[day];\n\t},\n\n\n\t// Incrementing the current day until it is no longer a hidden day, returning a copy.\n\t// If the initial value of `date` is not a hidden day, don't do anything.\n\t// Pass `isExclusive` as `true` if you are dealing with an end date.\n\t// `inc` defaults to `1` (increment one day forward each time)\n\tskipHiddenDays: function(date, inc, isExclusive) {\n\t\tvar out = date.clone();\n\t\tinc = inc || 1;\n\t\twhile (\n\t\t\tthis.isHiddenDayHash[(out.day() + (isExclusive ? inc : 0) + 7) % 7]\n\t\t) {\n\t\t\tout.add(inc, 'days');\n\t\t}\n\t\treturn out;\n\t},\n\n\n\t// Returns the date range of the full days the given range visually appears to occupy.\n\t// Returns a new range object.\n\tcomputeDayRange: function(range) {\n\t\tvar startDay = range.start.clone().stripTime(); // the beginning of the day the range starts\n\t\tvar end = range.end;\n\t\tvar endDay = null;\n\t\tvar endTimeMS;\n\n\t\tif (end) {\n\t\t\tendDay = end.clone().stripTime(); // the beginning of the day the range exclusively ends\n\t\t\tendTimeMS = +end.time(); // # of milliseconds into `endDay`\n\n\t\t\t// If the end time is actually inclusively part of the next day and is equal to or\n\t\t\t// beyond the next day threshold, adjust the end to be the exclusive end of `endDay`.\n\t\t\t// Otherwise, leaving it as inclusive will cause it to exclude `endDay`.\n\t\t\tif (endTimeMS && endTimeMS >= this.nextDayThreshold) {\n\t\t\t\tendDay.add(1, 'days');\n\t\t\t}\n\t\t}\n\n\t\t// If no end was specified, or if it is within `startDay` but not past nextDayThreshold,\n\t\t// assign the default duration of one day.\n\t\tif (!end || endDay <= startDay) {\n\t\t\tendDay = startDay.clone().add(1, 'days');\n\t\t}\n\n\t\treturn { start: startDay, end: endDay };\n\t},\n\n\n\t// Does the given event visually appear to occupy more than one day?\n\tisMultiDayEvent: function(event) {\n\t\tvar range = this.computeDayRange(event); // event is range-ish\n\n\t\treturn range.end.diff(range.start, 'days') > 1;\n\t}\n\n});\n\n;;\n\n/*\nEmbodies a div that has potential scrollbars\n*/\nvar Scroller = FC.Scroller = Class.extend({\n\n\tel: null, // the guaranteed outer element\n\tscrollEl: null, // the element with the scrollbars\n\toverflowX: null,\n\toverflowY: null,\n\n\n\tconstructor: function(options) {\n\t\toptions = options || {};\n\t\tthis.overflowX = options.overflowX || options.overflow || 'auto';\n\t\tthis.overflowY = options.overflowY || options.overflow || 'auto';\n\t},\n\n\n\trender: function() {\n\t\tthis.el = this.renderEl();\n\t\tthis.applyOverflow();\n\t},\n\n\n\trenderEl: function() {\n\t\treturn (this.scrollEl = $('
    '));\n\t},\n\n\n\t// sets to natural height, unlocks overflow\n\tclear: function() {\n\t\tthis.setHeight('auto');\n\t\tthis.applyOverflow();\n\t},\n\n\n\tdestroy: function() {\n\t\tthis.el.remove();\n\t},\n\n\n\t// Overflow\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\tapplyOverflow: function() {\n\t\tthis.scrollEl.css({\n\t\t\t'overflow-x': this.overflowX,\n\t\t\t'overflow-y': this.overflowY\n\t\t});\n\t},\n\n\n\t// Causes any 'auto' overflow values to resolves to 'scroll' or 'hidden'.\n\t// Useful for preserving scrollbar widths regardless of future resizes.\n\t// Can pass in scrollbarWidths for optimization.\n\tlockOverflow: function(scrollbarWidths) {\n\t\tvar overflowX = this.overflowX;\n\t\tvar overflowY = this.overflowY;\n\n\t\tscrollbarWidths = scrollbarWidths || this.getScrollbarWidths();\n\n\t\tif (overflowX === 'auto') {\n\t\t\toverflowX = (\n\t\t\t\t\tscrollbarWidths.top || scrollbarWidths.bottom || // horizontal scrollbars?\n\t\t\t\t\t// OR scrolling pane with massless scrollbars?\n\t\t\t\t\tthis.scrollEl[0].scrollWidth - 1 > this.scrollEl[0].clientWidth\n\t\t\t\t\t\t// subtract 1 because of IE off-by-one issue\n\t\t\t\t) ? 'scroll' : 'hidden';\n\t\t}\n\n\t\tif (overflowY === 'auto') {\n\t\t\toverflowY = (\n\t\t\t\t\tscrollbarWidths.left || scrollbarWidths.right || // vertical scrollbars?\n\t\t\t\t\t// OR scrolling pane with massless scrollbars?\n\t\t\t\t\tthis.scrollEl[0].scrollHeight - 1 > this.scrollEl[0].clientHeight\n\t\t\t\t\t\t// subtract 1 because of IE off-by-one issue\n\t\t\t\t) ? 'scroll' : 'hidden';\n\t\t}\n\n\t\tthis.scrollEl.css({ 'overflow-x': overflowX, 'overflow-y': overflowY });\n\t},\n\n\n\t// Getters / Setters\n\t// -----------------------------------------------------------------------------------------------------------------\n\n\n\tsetHeight: function(height) {\n\t\tthis.scrollEl.height(height);\n\t},\n\n\n\tgetScrollTop: function() {\n\t\treturn this.scrollEl.scrollTop();\n\t},\n\n\n\tsetScrollTop: function(top) {\n\t\tthis.scrollEl.scrollTop(top);\n\t},\n\n\n\tgetClientWidth: function() {\n\t\treturn this.scrollEl[0].clientWidth;\n\t},\n\n\n\tgetClientHeight: function() {\n\t\treturn this.scrollEl[0].clientHeight;\n\t},\n\n\n\tgetScrollbarWidths: function() {\n\t\treturn getScrollbarWidths(this.scrollEl);\n\t}\n\n});\n\n;;\nfunction Iterator(items) {\n this.items = items || [];\n}\n\n\n/* Calls a method on every item passing the arguments through */\nIterator.prototype.proxyCall = function(methodName) {\n var args = Array.prototype.slice.call(arguments, 1);\n var results = [];\n\n this.items.forEach(function(item) {\n results.push(item[methodName].apply(item, args));\n });\n\n return results;\n};\n\n;;\n\n/* Toolbar with buttons and title\n----------------------------------------------------------------------------------------------------------------------*/\n\nfunction Toolbar(calendar, toolbarOptions) {\n\tvar t = this;\n\n\t// exports\n\tt.setToolbarOptions = setToolbarOptions;\n\tt.render = render;\n\tt.removeElement = removeElement;\n\tt.updateTitle = updateTitle;\n\tt.activateButton = activateButton;\n\tt.deactivateButton = deactivateButton;\n\tt.disableButton = disableButton;\n\tt.enableButton = enableButton;\n\tt.getViewsWithButtons = getViewsWithButtons;\n\tt.el = null; // mirrors local `el`\n\n\t// locals\n\tvar el;\n\tvar viewsWithButtons = [];\n\tvar tm;\n\n\t// method to update toolbar-specific options, not calendar-wide options\n\tfunction setToolbarOptions(newToolbarOptions) {\n\t\ttoolbarOptions = newToolbarOptions;\n\t}\n\n\t// can be called repeatedly and will rerender\n\tfunction render() {\n\t\tvar sections = toolbarOptions.layout;\n\n\t\ttm = calendar.options.theme ? 'ui' : 'fc';\n\n\t\tif (sections) {\n\t\t\tif (!el) {\n\t\t\t\tel = this.el = $(\"
    \");\n\t\t\t}\n\t\t\telse {\n\t\t\t\tel.empty();\n\t\t\t}\n\t\t\tel.append(renderSection('left'))\n\t\t\t\t.append(renderSection('right'))\n\t\t\t\t.append(renderSection('center'))\n\t\t\t\t.append('
    ');\n\t\t}\n\t\telse {\n\t\t\tremoveElement();\n\t\t}\n\t}\n\n\n\tfunction removeElement() {\n\t\tif (el) {\n\t\t\tel.remove();\n\t\t\tel = t.el = null;\n\t\t}\n\t}\n\n\n\tfunction renderSection(position) {\n\t\tvar sectionEl = $('
    ');\n\t\tvar buttonStr = toolbarOptions.layout[position];\n\n\t\tif (buttonStr) {\n\t\t\t$.each(buttonStr.split(' '), function(i) {\n\t\t\t\tvar groupChildren = $();\n\t\t\t\tvar isOnlyButtons = true;\n\t\t\t\tvar groupEl;\n\n\t\t\t\t$.each(this.split(','), function(j, buttonName) {\n\t\t\t\t\tvar customButtonProps;\n\t\t\t\t\tvar viewSpec;\n\t\t\t\t\tvar buttonClick;\n\t\t\t\t\tvar overrideText; // text explicitly set by calendar's constructor options. overcomes icons\n\t\t\t\t\tvar defaultText;\n\t\t\t\t\tvar themeIcon;\n\t\t\t\t\tvar normalIcon;\n\t\t\t\t\tvar innerHtml;\n\t\t\t\t\tvar classes;\n\t\t\t\t\tvar button; // the element\n\n\t\t\t\t\tif (buttonName == 'title') {\n\t\t\t\t\t\tgroupChildren = groupChildren.add($('

     

    ')); // we always want it to take up height\n\t\t\t\t\t\tisOnlyButtons = false;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif ((customButtonProps = (calendar.options.customButtons || {})[buttonName])) {\n\t\t\t\t\t\t\tbuttonClick = function(ev) {\n\t\t\t\t\t\t\t\tif (customButtonProps.click) {\n\t\t\t\t\t\t\t\t\tcustomButtonProps.click.call(button[0], ev);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\toverrideText = ''; // icons will override text\n\t\t\t\t\t\t\tdefaultText = customButtonProps.text;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ((viewSpec = calendar.getViewSpec(buttonName))) {\n\t\t\t\t\t\t\tbuttonClick = function() {\n\t\t\t\t\t\t\t\tcalendar.changeView(buttonName);\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tviewsWithButtons.push(buttonName);\n\t\t\t\t\t\t\toverrideText = viewSpec.buttonTextOverride;\n\t\t\t\t\t\t\tdefaultText = viewSpec.buttonTextDefault;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (calendar[buttonName]) { // a calendar method\n\t\t\t\t\t\t\tbuttonClick = function() {\n\t\t\t\t\t\t\t\tcalendar[buttonName]();\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\toverrideText = (calendar.overrides.buttonText || {})[buttonName];\n\t\t\t\t\t\t\tdefaultText = calendar.options.buttonText[buttonName]; // everything else is considered default\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (buttonClick) {\n\n\t\t\t\t\t\t\tthemeIcon =\n\t\t\t\t\t\t\t\tcustomButtonProps ?\n\t\t\t\t\t\t\t\t\tcustomButtonProps.themeIcon :\n\t\t\t\t\t\t\t\t\tcalendar.options.themeButtonIcons[buttonName];\n\n\t\t\t\t\t\t\tnormalIcon =\n\t\t\t\t\t\t\t\tcustomButtonProps ?\n\t\t\t\t\t\t\t\t\tcustomButtonProps.icon :\n\t\t\t\t\t\t\t\t\tcalendar.options.buttonIcons[buttonName];\n\n\t\t\t\t\t\t\tif (overrideText) {\n\t\t\t\t\t\t\t\tinnerHtml = htmlEscape(overrideText);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (themeIcon && calendar.options.theme) {\n\t\t\t\t\t\t\t\tinnerHtml = \"\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (normalIcon && !calendar.options.theme) {\n\t\t\t\t\t\t\t\tinnerHtml = \"\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tinnerHtml = htmlEscape(defaultText);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tclasses = [\n\t\t\t\t\t\t\t\t'fc-' + buttonName + '-button',\n\t\t\t\t\t\t\t\ttm + '-button',\n\t\t\t\t\t\t\t\ttm + '-state-default'\n\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\tbutton = $( // type=\"button\" so that it doesn't submit a form\n\t\t\t\t\t\t\t\t''\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.click(function(ev) {\n\t\t\t\t\t\t\t\t\t// don't process clicks for disabled buttons\n\t\t\t\t\t\t\t\t\tif (!button.hasClass(tm + '-state-disabled')) {\n\n\t\t\t\t\t\t\t\t\t\tbuttonClick(ev);\n\n\t\t\t\t\t\t\t\t\t\t// after the click action, if the button becomes the \"active\" tab, or disabled,\n\t\t\t\t\t\t\t\t\t\t// it should never have a hover class, so remove it now.\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\tbutton.hasClass(tm + '-state-active') ||\n\t\t\t\t\t\t\t\t\t\t\tbutton.hasClass(tm + '-state-disabled')\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\tbutton.removeClass(tm + '-state-hover');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.mousedown(function() {\n\t\t\t\t\t\t\t\t\t// the *down* effect (mouse pressed in).\n\t\t\t\t\t\t\t\t\t// only on buttons that are not the \"active\" tab, or disabled\n\t\t\t\t\t\t\t\t\tbutton\n\t\t\t\t\t\t\t\t\t\t.not('.' + tm + '-state-active')\n\t\t\t\t\t\t\t\t\t\t.not('.' + tm + '-state-disabled')\n\t\t\t\t\t\t\t\t\t\t.addClass(tm + '-state-down');\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.mouseup(function() {\n\t\t\t\t\t\t\t\t\t// undo the *down* effect\n\t\t\t\t\t\t\t\t\tbutton.removeClass(tm + '-state-down');\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.hover(\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\t// the *hover* effect.\n\t\t\t\t\t\t\t\t\t\t// only on buttons that are not the \"active\" tab, or disabled\n\t\t\t\t\t\t\t\t\t\tbutton\n\t\t\t\t\t\t\t\t\t\t\t.not('.' + tm + '-state-active')\n\t\t\t\t\t\t\t\t\t\t\t.not('.' + tm + '-state-disabled')\n\t\t\t\t\t\t\t\t\t\t\t.addClass(tm + '-state-hover');\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\t// undo the *hover* effect\n\t\t\t\t\t\t\t\t\t\tbutton\n\t\t\t\t\t\t\t\t\t\t\t.removeClass(tm + '-state-hover')\n\t\t\t\t\t\t\t\t\t\t\t.removeClass(tm + '-state-down'); // if mouseleave happens before mouseup\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tgroupChildren = groupChildren.add(button);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (isOnlyButtons) {\n\t\t\t\t\tgroupChildren\n\t\t\t\t\t\t.first().addClass(tm + '-corner-left').end()\n\t\t\t\t\t\t.last().addClass(tm + '-corner-right').end();\n\t\t\t\t}\n\n\t\t\t\tif (groupChildren.length > 1) {\n\t\t\t\t\tgroupEl = $('
    ');\n\t\t\t\t\tif (isOnlyButtons) {\n\t\t\t\t\t\tgroupEl.addClass('fc-button-group');\n\t\t\t\t\t}\n\t\t\t\t\tgroupEl.append(groupChildren);\n\t\t\t\t\tsectionEl.append(groupEl);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tsectionEl.append(groupChildren); // 1 or 0 children\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn sectionEl;\n\t}\n\n\n\tfunction updateTitle(text) {\n\t\tif (el) {\n\t\t\tel.find('h2').text(text);\n\t\t}\n\t}\n\n\n\tfunction activateButton(buttonName) {\n\t\tif (el) {\n\t\t\tel.find('.fc-' + buttonName + '-button')\n\t\t\t\t.addClass(tm + '-state-active');\n\t\t}\n\t}\n\n\n\tfunction deactivateButton(buttonName) {\n\t\tif (el) {\n\t\t\tel.find('.fc-' + buttonName + '-button')\n\t\t\t\t.removeClass(tm + '-state-active');\n\t\t}\n\t}\n\n\n\tfunction disableButton(buttonName) {\n\t\tif (el) {\n\t\t\tel.find('.fc-' + buttonName + '-button')\n\t\t\t\t.prop('disabled', true)\n\t\t\t\t.addClass(tm + '-state-disabled');\n\t\t}\n\t}\n\n\n\tfunction enableButton(buttonName) {\n\t\tif (el) {\n\t\t\tel.find('.fc-' + buttonName + '-button')\n\t\t\t\t.prop('disabled', false)\n\t\t\t\t.removeClass(tm + '-state-disabled');\n\t\t}\n\t}\n\n\n\tfunction getViewsWithButtons() {\n\t\treturn viewsWithButtons;\n\t}\n\n}\n\n;;\n\nvar Calendar = FC.Calendar = Class.extend({\n\n\tdirDefaults: null, // option defaults related to LTR or RTL\n\tlocaleDefaults: null, // option defaults related to current locale\n\toverrides: null, // option overrides given to the fullCalendar constructor\n\tdynamicOverrides: null, // options set with dynamic setter method. higher precedence than view overrides.\n\toptions: null, // all defaults combined with overrides\n\tviewSpecCache: null, // cache of view definitions\n\tview: null, // current View object\n\theader: null,\n\tfooter: null,\n\tloadingLevel: 0, // number of simultaneous loading tasks\n\n\n\t// a lot of this class' OOP logic is scoped within this constructor function,\n\t// but in the future, write individual methods on the prototype.\n\tconstructor: Calendar_constructor,\n\n\n\t// Subclasses can override this for initialization logic after the constructor has been called\n\tinitialize: function() {\n\t},\n\n\n\t// Computes the flattened options hash for the calendar and assigns to `this.options`.\n\t// Assumes this.overrides and this.dynamicOverrides have already been initialized.\n\tpopulateOptionsHash: function() {\n\t\tvar locale, localeDefaults;\n\t\tvar isRTL, dirDefaults;\n\n\t\tlocale = firstDefined( // explicit locale option given?\n\t\t\tthis.dynamicOverrides.locale,\n\t\t\tthis.overrides.locale\n\t\t);\n\t\tlocaleDefaults = localeOptionHash[locale];\n\t\tif (!localeDefaults) { // explicit locale option not given or invalid?\n\t\t\tlocale = Calendar.defaults.locale;\n\t\t\tlocaleDefaults = localeOptionHash[locale] || {};\n\t\t}\n\n\t\tisRTL = firstDefined( // based on options computed so far, is direction RTL?\n\t\t\tthis.dynamicOverrides.isRTL,\n\t\t\tthis.overrides.isRTL,\n\t\t\tlocaleDefaults.isRTL,\n\t\t\tCalendar.defaults.isRTL\n\t\t);\n\t\tdirDefaults = isRTL ? Calendar.rtlDefaults : {};\n\n\t\tthis.dirDefaults = dirDefaults;\n\t\tthis.localeDefaults = localeDefaults;\n\t\tthis.options = mergeOptions([ // merge defaults and overrides. lowest to highest precedence\n\t\t\tCalendar.defaults, // global defaults\n\t\t\tdirDefaults,\n\t\t\tlocaleDefaults,\n\t\t\tthis.overrides,\n\t\t\tthis.dynamicOverrides\n\t\t]);\n\t\tpopulateInstanceComputableOptions(this.options); // fill in gaps with computed options\n\t},\n\n\n\t// Gets information about how to create a view. Will use a cache.\n\tgetViewSpec: function(viewType) {\n\t\tvar cache = this.viewSpecCache;\n\n\t\treturn cache[viewType] || (cache[viewType] = this.buildViewSpec(viewType));\n\t},\n\n\n\t// Given a duration singular unit, like \"week\" or \"day\", finds a matching view spec.\n\t// Preference is given to views that have corresponding buttons.\n\tgetUnitViewSpec: function(unit) {\n\t\tvar viewTypes;\n\t\tvar i;\n\t\tvar spec;\n\n\t\tif ($.inArray(unit, intervalUnits) != -1) {\n\n\t\t\t// put views that have buttons first. there will be duplicates, but oh well\n\t\t\tviewTypes = this.header.getViewsWithButtons(); // TODO: include footer as well?\n\t\t\t$.each(FC.views, function(viewType) { // all views\n\t\t\t\tviewTypes.push(viewType);\n\t\t\t});\n\n\t\t\tfor (i = 0; i < viewTypes.length; i++) {\n\t\t\t\tspec = this.getViewSpec(viewTypes[i]);\n\t\t\t\tif (spec) {\n\t\t\t\t\tif (spec.singleUnit == unit) {\n\t\t\t\t\t\treturn spec;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// Builds an object with information on how to create a given view\n\tbuildViewSpec: function(requestedViewType) {\n\t\tvar viewOverrides = this.overrides.views || {};\n\t\tvar specChain = []; // for the view. lowest to highest priority\n\t\tvar defaultsChain = []; // for the view. lowest to highest priority\n\t\tvar overridesChain = []; // for the view. lowest to highest priority\n\t\tvar viewType = requestedViewType;\n\t\tvar spec; // for the view\n\t\tvar overrides; // for the view\n\t\tvar duration;\n\t\tvar unit;\n\n\t\t// iterate from the specific view definition to a more general one until we hit an actual View class\n\t\twhile (viewType) {\n\t\t\tspec = fcViews[viewType];\n\t\t\toverrides = viewOverrides[viewType];\n\t\t\tviewType = null; // clear. might repopulate for another iteration\n\n\t\t\tif (typeof spec === 'function') { // TODO: deprecate\n\t\t\t\tspec = { 'class': spec };\n\t\t\t}\n\n\t\t\tif (spec) {\n\t\t\t\tspecChain.unshift(spec);\n\t\t\t\tdefaultsChain.unshift(spec.defaults || {});\n\t\t\t\tduration = duration || spec.duration;\n\t\t\t\tviewType = viewType || spec.type;\n\t\t\t}\n\n\t\t\tif (overrides) {\n\t\t\t\toverridesChain.unshift(overrides); // view-specific option hashes have options at zero-level\n\t\t\t\tduration = duration || overrides.duration;\n\t\t\t\tviewType = viewType || overrides.type;\n\t\t\t}\n\t\t}\n\n\t\tspec = mergeProps(specChain);\n\t\tspec.type = requestedViewType;\n\t\tif (!spec['class']) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (duration) {\n\t\t\tduration = moment.duration(duration);\n\t\t\tif (duration.valueOf()) { // valid?\n\t\t\t\tspec.duration = duration;\n\t\t\t\tunit = computeIntervalUnit(duration);\n\n\t\t\t\t// view is a single-unit duration, like \"week\" or \"day\"\n\t\t\t\t// incorporate options for this. lowest priority\n\t\t\t\tif (duration.as(unit) === 1) {\n\t\t\t\t\tspec.singleUnit = unit;\n\t\t\t\t\toverridesChain.unshift(viewOverrides[unit] || {});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tspec.defaults = mergeOptions(defaultsChain);\n\t\tspec.overrides = mergeOptions(overridesChain);\n\n\t\tthis.buildViewSpecOptions(spec);\n\t\tthis.buildViewSpecButtonText(spec, requestedViewType);\n\n\t\treturn spec;\n\t},\n\n\n\t// Builds and assigns a view spec's options object from its already-assigned defaults and overrides\n\tbuildViewSpecOptions: function(spec) {\n\t\tspec.options = mergeOptions([ // lowest to highest priority\n\t\t\tCalendar.defaults, // global defaults\n\t\t\tspec.defaults, // view's defaults (from ViewSubclass.defaults)\n\t\t\tthis.dirDefaults,\n\t\t\tthis.localeDefaults, // locale and dir take precedence over view's defaults!\n\t\t\tthis.overrides, // calendar's overrides (options given to constructor)\n\t\t\tspec.overrides, // view's overrides (view-specific options)\n\t\t\tthis.dynamicOverrides // dynamically set via setter. highest precedence\n\t\t]);\n\t\tpopulateInstanceComputableOptions(spec.options);\n\t},\n\n\n\t// Computes and assigns a view spec's buttonText-related options\n\tbuildViewSpecButtonText: function(spec, requestedViewType) {\n\n\t\t// given an options object with a possible `buttonText` hash, lookup the buttonText for the\n\t\t// requested view, falling back to a generic unit entry like \"week\" or \"day\"\n\t\tfunction queryButtonText(options) {\n\t\t\tvar buttonText = options.buttonText || {};\n\t\t\treturn buttonText[requestedViewType] ||\n\t\t\t\t// view can decide to look up a certain key\n\t\t\t\t(spec.buttonTextKey ? buttonText[spec.buttonTextKey] : null) ||\n\t\t\t\t// a key like \"month\"\n\t\t\t\t(spec.singleUnit ? buttonText[spec.singleUnit] : null);\n\t\t}\n\n\t\t// highest to lowest priority\n\t\tspec.buttonTextOverride =\n\t\t\tqueryButtonText(this.dynamicOverrides) ||\n\t\t\tqueryButtonText(this.overrides) || // constructor-specified buttonText lookup hash takes precedence\n\t\t\tspec.overrides.buttonText; // `buttonText` for view-specific options is a string\n\n\t\t// highest to lowest priority. mirrors buildViewSpecOptions\n\t\tspec.buttonTextDefault =\n\t\t\tqueryButtonText(this.localeDefaults) ||\n\t\t\tqueryButtonText(this.dirDefaults) ||\n\t\t\tspec.defaults.buttonText || // a single string. from ViewSubclass.defaults\n\t\t\tqueryButtonText(Calendar.defaults) ||\n\t\t\t(spec.duration ? this.humanizeDuration(spec.duration) : null) || // like \"3 days\"\n\t\t\trequestedViewType; // fall back to given view name\n\t},\n\n\n\t// Given a view name for a custom view or a standard view, creates a ready-to-go View object\n\tinstantiateView: function(viewType) {\n\t\tvar spec = this.getViewSpec(viewType);\n\n\t\treturn new spec['class'](this, viewType, spec.options, spec.duration);\n\t},\n\n\n\t// Returns a boolean about whether the view is okay to instantiate at some point\n\tisValidViewType: function(viewType) {\n\t\treturn Boolean(this.getViewSpec(viewType));\n\t},\n\n\n\t// Should be called when any type of async data fetching begins\n\tpushLoading: function() {\n\t\tif (!(this.loadingLevel++)) {\n\t\t\tthis.publiclyTrigger('loading', null, true, this.view);\n\t\t}\n\t},\n\n\n\t// Should be called when any type of async data fetching completes\n\tpopLoading: function() {\n\t\tif (!(--this.loadingLevel)) {\n\t\t\tthis.publiclyTrigger('loading', null, false, this.view);\n\t\t}\n\t},\n\n\n\t// Given arguments to the select method in the API, returns a span (unzoned start/end and other info)\n\tbuildSelectSpan: function(zonedStartInput, zonedEndInput) {\n\t\tvar start = this.moment(zonedStartInput).stripZone();\n\t\tvar end;\n\n\t\tif (zonedEndInput) {\n\t\t\tend = this.moment(zonedEndInput).stripZone();\n\t\t}\n\t\telse if (start.hasTime()) {\n\t\t\tend = start.clone().add(this.defaultTimedEventDuration);\n\t\t}\n\t\telse {\n\t\t\tend = start.clone().add(this.defaultAllDayEventDuration);\n\t\t}\n\n\t\treturn { start: start, end: end };\n\t}\n\n});\n\n\nCalendar.mixin(EmitterMixin);\n\n\nfunction Calendar_constructor(element, overrides) {\n\tvar t = this;\n\n\t// declare the current calendar instance relies on GlobalEmitter. needed for garbage collection.\n\tGlobalEmitter.needed();\n\n\n\t// Exports\n\t// -----------------------------------------------------------------------------------\n\n\tt.render = render;\n\tt.destroy = destroy;\n\tt.rerenderEvents = rerenderEvents;\n\tt.changeView = renderView; // `renderView` will switch to another view\n\tt.select = select;\n\tt.unselect = unselect;\n\tt.prev = prev;\n\tt.next = next;\n\tt.prevYear = prevYear;\n\tt.nextYear = nextYear;\n\tt.today = today;\n\tt.gotoDate = gotoDate;\n\tt.incrementDate = incrementDate;\n\tt.zoomTo = zoomTo;\n\tt.getDate = getDate;\n\tt.getCalendar = getCalendar;\n\tt.getView = getView;\n\tt.option = option; // getter/setter method\n\tt.publiclyTrigger = publiclyTrigger;\n\n\n\t// Options\n\t// -----------------------------------------------------------------------------------\n\n\tt.dynamicOverrides = {};\n\tt.viewSpecCache = {};\n\tt.optionHandlers = {}; // for Calendar.options.js\n\tt.overrides = $.extend({}, overrides); // make a copy\n\n\tt.populateOptionsHash(); // sets this.options\n\n\n\n\t// Locale-data Internals\n\t// -----------------------------------------------------------------------------------\n\t// Apply overrides to the current locale's data\n\n\tvar localeData;\n\n\t// Called immediately, and when any of the options change.\n\t// Happens before any internal objects rebuild or rerender, because this is very core.\n\tt.bindOptions([\n\t\t'locale', 'monthNames', 'monthNamesShort', 'dayNames', 'dayNamesShort', 'firstDay', 'weekNumberCalculation'\n\t], function(locale, monthNames, monthNamesShort, dayNames, dayNamesShort, firstDay, weekNumberCalculation) {\n\n\t\t// normalize\n\t\tif (weekNumberCalculation === 'iso') {\n\t\t\tweekNumberCalculation = 'ISO'; // normalize\n\t\t}\n\n\t\tlocaleData = createObject( // make a cheap copy\n\t\t\tgetMomentLocaleData(locale) // will fall back to en\n\t\t);\n\n\t\tif (monthNames) {\n\t\t\tlocaleData._months = monthNames;\n\t\t}\n\t\tif (monthNamesShort) {\n\t\t\tlocaleData._monthsShort = monthNamesShort;\n\t\t}\n\t\tif (dayNames) {\n\t\t\tlocaleData._weekdays = dayNames;\n\t\t}\n\t\tif (dayNamesShort) {\n\t\t\tlocaleData._weekdaysShort = dayNamesShort;\n\t\t}\n\n\t\tif (firstDay == null && weekNumberCalculation === 'ISO') {\n\t\t\tfirstDay = 1;\n\t\t}\n\t\tif (firstDay != null) {\n\t\t\tvar _week = createObject(localeData._week); // _week: { dow: # }\n\t\t\t_week.dow = firstDay;\n\t\t\tlocaleData._week = _week;\n\t\t}\n\n\t\tif ( // whitelist certain kinds of input\n\t\t\tweekNumberCalculation === 'ISO' ||\n\t\t\tweekNumberCalculation === 'local' ||\n\t\t\ttypeof weekNumberCalculation === 'function'\n\t\t) {\n\t\t\tlocaleData._fullCalendar_weekCalc = weekNumberCalculation; // moment-ext will know what to do with it\n\t\t}\n\n\t\t// If the internal current date object already exists, move to new locale.\n\t\t// We do NOT need to do this technique for event dates, because this happens when converting to \"segments\".\n\t\tif (date) {\n\t\t\tlocalizeMoment(date); // sets to localeData\n\t\t}\n\t});\n\n\n\t// Calendar-specific Date Utilities\n\t// -----------------------------------------------------------------------------------\n\n\n\tt.defaultAllDayEventDuration = moment.duration(t.options.defaultAllDayEventDuration);\n\tt.defaultTimedEventDuration = moment.duration(t.options.defaultTimedEventDuration);\n\n\n\t// Builds a moment using the settings of the current calendar: timezone and locale.\n\t// Accepts anything the vanilla moment() constructor accepts.\n\tt.moment = function() {\n\t\tvar mom;\n\n\t\tif (t.options.timezone === 'local') {\n\t\t\tmom = FC.moment.apply(null, arguments);\n\n\t\t\t// Force the moment to be local, because FC.moment doesn't guarantee it.\n\t\t\tif (mom.hasTime()) { // don't give ambiguously-timed moments a local zone\n\t\t\t\tmom.local();\n\t\t\t}\n\t\t}\n\t\telse if (t.options.timezone === 'UTC') {\n\t\t\tmom = FC.moment.utc.apply(null, arguments); // process as UTC\n\t\t}\n\t\telse {\n\t\t\tmom = FC.moment.parseZone.apply(null, arguments); // let the input decide the zone\n\t\t}\n\n\t\tlocalizeMoment(mom);\n\n\t\treturn mom;\n\t};\n\n\n\t// Updates the given moment's locale settings to the current calendar locale settings.\n\tfunction localizeMoment(mom) {\n\t\tmom._locale = localeData;\n\t}\n\tt.localizeMoment = localizeMoment;\n\n\n\t// Returns a boolean about whether or not the calendar knows how to calculate\n\t// the timezone offset of arbitrary dates in the current timezone.\n\tt.getIsAmbigTimezone = function() {\n\t\treturn t.options.timezone !== 'local' && t.options.timezone !== 'UTC';\n\t};\n\n\n\t// Returns a copy of the given date in the current timezone. Has no effect on dates without times.\n\tt.applyTimezone = function(date) {\n\t\tif (!date.hasTime()) {\n\t\t\treturn date.clone();\n\t\t}\n\n\t\tvar zonedDate = t.moment(date.toArray());\n\t\tvar timeAdjust = date.time() - zonedDate.time();\n\t\tvar adjustedZonedDate;\n\n\t\t// Safari sometimes has problems with this coersion when near DST. Adjust if necessary. (bug #2396)\n\t\tif (timeAdjust) { // is the time result different than expected?\n\t\t\tadjustedZonedDate = zonedDate.clone().add(timeAdjust); // add milliseconds\n\t\t\tif (date.time() - adjustedZonedDate.time() === 0) { // does it match perfectly now?\n\t\t\t\tzonedDate = adjustedZonedDate;\n\t\t\t}\n\t\t}\n\n\t\treturn zonedDate;\n\t};\n\n\n\t// Returns a moment for the current date, as defined by the client's computer or from the `now` option.\n\t// Will return an moment with an ambiguous timezone.\n\tt.getNow = function() {\n\t\tvar now = t.options.now;\n\t\tif (typeof now === 'function') {\n\t\t\tnow = now();\n\t\t}\n\t\treturn t.moment(now).stripZone();\n\t};\n\n\n\t// Get an event's normalized end date. If not present, calculate it from the defaults.\n\tt.getEventEnd = function(event) {\n\t\tif (event.end) {\n\t\t\treturn event.end.clone();\n\t\t}\n\t\telse {\n\t\t\treturn t.getDefaultEventEnd(event.allDay, event.start);\n\t\t}\n\t};\n\n\n\t// Given an event's allDay status and start date, return what its fallback end date should be.\n\t// TODO: rename to computeDefaultEventEnd\n\tt.getDefaultEventEnd = function(allDay, zonedStart) {\n\t\tvar end = zonedStart.clone();\n\n\t\tif (allDay) {\n\t\t\tend.stripTime().add(t.defaultAllDayEventDuration);\n\t\t}\n\t\telse {\n\t\t\tend.add(t.defaultTimedEventDuration);\n\t\t}\n\n\t\tif (t.getIsAmbigTimezone()) {\n\t\t\tend.stripZone(); // we don't know what the tzo should be\n\t\t}\n\n\t\treturn end;\n\t};\n\n\n\t// Produces a human-readable string for the given duration.\n\t// Side-effect: changes the locale of the given duration.\n\tt.humanizeDuration = function(duration) {\n\t\treturn duration.locale(t.options.locale).humanize();\n\t};\n\n\n\n\t// Imports\n\t// -----------------------------------------------------------------------------------\n\n\n\tEventManager.call(t);\n\n\n\n\t// Locals\n\t// -----------------------------------------------------------------------------------\n\n\n\tvar _element = element[0];\n\tvar toolbarsManager;\n\tvar header;\n\tvar footer;\n\tvar content;\n\tvar tm; // for making theme classes\n\tvar currentView; // NOTE: keep this in sync with this.view\n\tvar viewsByType = {}; // holds all instantiated view instances, current or not\n\tvar suggestedViewHeight;\n\tvar windowResizeProxy; // wraps the windowResize function\n\tvar ignoreWindowResize = 0;\n\tvar date; // unzoned\n\n\n\n\t// Main Rendering\n\t// -----------------------------------------------------------------------------------\n\n\n\t// compute the initial ambig-timezone date\n\tif (t.options.defaultDate != null) {\n\t\tdate = t.moment(t.options.defaultDate).stripZone();\n\t}\n\telse {\n\t\tdate = t.getNow(); // getNow already returns unzoned\n\t}\n\n\n\tfunction render() {\n\t\tif (!content) {\n\t\t\tinitialRender();\n\t\t}\n\t\telse if (elementVisible()) {\n\t\t\t// mainly for the public API\n\t\t\tcalcSize();\n\t\t\trenderView();\n\t\t}\n\t}\n\n\n\tfunction initialRender() {\n\t\telement.addClass('fc');\n\n\t\t// event delegation for nav links\n\t\telement.on('click.fc', 'a[data-goto]', function(ev) {\n\t\t\tvar anchorEl = $(this);\n\t\t\tvar gotoOptions = anchorEl.data('goto'); // will automatically parse JSON\n\t\t\tvar date = t.moment(gotoOptions.date);\n\t\t\tvar viewType = gotoOptions.type;\n\n\t\t\t// property like \"navLinkDayClick\". might be a string or a function\n\t\t\tvar customAction = currentView.opt('navLink' + capitaliseFirstLetter(viewType) + 'Click');\n\n\t\t\tif (typeof customAction === 'function') {\n\t\t\t\tcustomAction(date, ev);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (typeof customAction === 'string') {\n\t\t\t\t\tviewType = customAction;\n\t\t\t\t}\n\t\t\t\tzoomTo(date, viewType);\n\t\t\t}\n\t\t});\n\n\t\t// called immediately, and upon option change\n\t\tt.bindOption('theme', function(theme) {\n\t\t\ttm = theme ? 'ui' : 'fc'; // affects a larger scope\n\t\t\telement.toggleClass('ui-widget', theme);\n\t\t\telement.toggleClass('fc-unthemed', !theme);\n\t\t});\n\n\t\t// called immediately, and upon option change.\n\t\t// HACK: locale often affects isRTL, so we explicitly listen to that too.\n\t\tt.bindOptions([ 'isRTL', 'locale' ], function(isRTL) {\n\t\t\telement.toggleClass('fc-ltr', !isRTL);\n\t\t\telement.toggleClass('fc-rtl', isRTL);\n\t\t});\n\n\t\tcontent = $(\"
    \").prependTo(element);\n\n\t\tvar toolbars = buildToolbars();\n\t\ttoolbarsManager = new Iterator(toolbars);\n\n\t\theader = t.header = toolbars[0];\n\t\tfooter = t.footer = toolbars[1];\n\n\t\trenderHeader();\n\t\trenderFooter();\n\t\trenderView(t.options.defaultView);\n\n\t\tif (t.options.handleWindowResize) {\n\t\t\twindowResizeProxy = debounce(windowResize, t.options.windowResizeDelay); // prevents rapid calls\n\t\t\t$(window).resize(windowResizeProxy);\n\t\t}\n\t}\n\n\n\tfunction destroy() {\n\n\t\tif (currentView) {\n\t\t\tcurrentView.removeElement();\n\n\t\t\t// NOTE: don't null-out currentView/t.view in case API methods are called after destroy.\n\t\t\t// It is still the \"current\" view, just not rendered.\n\t\t}\n\n\t\ttoolbarsManager.proxyCall('removeElement');\n\t\tcontent.remove();\n\t\telement.removeClass('fc fc-ltr fc-rtl fc-unthemed ui-widget');\n\n\t\telement.off('.fc'); // unbind nav link handlers\n\n\t\tif (windowResizeProxy) {\n\t\t\t$(window).unbind('resize', windowResizeProxy);\n\t\t}\n\n\t\tGlobalEmitter.unneeded();\n\t}\n\n\n\tfunction elementVisible() {\n\t\treturn element.is(':visible');\n\t}\n\n\n\n\t// View Rendering\n\t// -----------------------------------------------------------------------------------\n\n\n\t// Renders a view because of a date change, view-type change, or for the first time.\n\t// If not given a viewType, keep the current view but render different dates.\n\t// Accepts an optional scroll state to restore to.\n\tfunction renderView(viewType, forcedScroll) {\n\t\tignoreWindowResize++;\n\n\t\tvar needsClearView = currentView && viewType && currentView.type !== viewType;\n\n\t\t// if viewType is changing, remove the old view's rendering\n\t\tif (needsClearView) {\n\t\t\tfreezeContentHeight(); // prevent a scroll jump when view element is removed\n\t\t\tclearView();\n\t\t}\n\n\t\t// if viewType changed, or the view was never created, create a fresh view\n\t\tif (!currentView && viewType) {\n\t\t\tcurrentView = t.view =\n\t\t\t\tviewsByType[viewType] ||\n\t\t\t\t(viewsByType[viewType] = t.instantiateView(viewType));\n\n\t\t\tcurrentView.setElement(\n\t\t\t\t$(\"
    \").appendTo(content)\n\t\t\t);\n\t\t\ttoolbarsManager.proxyCall('activateButton', viewType);\n\t\t}\n\n\t\tif (currentView) {\n\n\t\t\t// in case the view should render a period of time that is completely hidden\n\t\t\tdate = currentView.massageCurrentDate(date);\n\n\t\t\t// render or rerender the view\n\t\t\tif (\n\t\t\t\t!currentView.isDateSet ||\n\t\t\t\t!( // NOT within interval range signals an implicit date window change\n\t\t\t\t\tdate >= currentView.intervalStart &&\n\t\t\t\t\tdate < currentView.intervalEnd\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tif (elementVisible()) {\n\n\t\t\t\t\tif (forcedScroll) {\n\t\t\t\t\t\tcurrentView.captureInitialScroll(forcedScroll);\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentView.setDate(date, forcedScroll);\n\n\t\t\t\t\tif (forcedScroll) {\n\t\t\t\t\t\tcurrentView.releaseScroll();\n\t\t\t\t\t}\n\n\t\t\t\t\t// need to do this after View::render, so dates are calculated\n\t\t\t\t\t// NOTE: view updates title text proactively\n\t\t\t\t\tupdateToolbarsTodayButton();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (needsClearView) {\n\t\t\tthawContentHeight();\n\t\t}\n\n\t\tignoreWindowResize--;\n\t}\n\n\n\t// Unrenders the current view and reflects this change in the Header.\n\t// Unregsiters the `currentView`, but does not remove from viewByType hash.\n\tfunction clearView() {\n\t\ttoolbarsManager.proxyCall('deactivateButton', currentView.type);\n\t\tcurrentView.removeElement();\n\t\tcurrentView = t.view = null;\n\t}\n\n\n\t// Destroys the view, including the view object. Then, re-instantiates it and renders it.\n\t// Maintains the same scroll state.\n\t// TODO: maintain any other user-manipulated state.\n\tfunction reinitView() {\n\t\tignoreWindowResize++;\n\t\tfreezeContentHeight();\n\n\t\tvar viewType = currentView.type;\n\t\tvar scrollState = currentView.queryScroll();\n\t\tclearView();\n\t\tcalcSize();\n\t\trenderView(viewType, scrollState);\n\n\t\tthawContentHeight();\n\t\tignoreWindowResize--;\n\t}\n\n\n\n\t// Resizing\n\t// -----------------------------------------------------------------------------------\n\n\n\tt.getSuggestedViewHeight = function() {\n\t\tif (suggestedViewHeight === undefined) {\n\t\t\tcalcSize();\n\t\t}\n\t\treturn suggestedViewHeight;\n\t};\n\n\n\tt.isHeightAuto = function() {\n\t\treturn t.options.contentHeight === 'auto' || t.options.height === 'auto';\n\t};\n\n\n\tfunction updateSize(shouldRecalc) {\n\t\tif (elementVisible()) {\n\n\t\t\tif (shouldRecalc) {\n\t\t\t\t_calcSize();\n\t\t\t}\n\n\t\t\tignoreWindowResize++;\n\t\t\tcurrentView.updateSize(true); // isResize=true. will poll getSuggestedViewHeight() and isHeightAuto()\n\t\t\tignoreWindowResize--;\n\n\t\t\treturn true; // signal success\n\t\t}\n\t}\n\n\n\tfunction calcSize() {\n\t\tif (elementVisible()) {\n\t\t\t_calcSize();\n\t\t}\n\t}\n\n\n\tfunction _calcSize() { // assumes elementVisible\n\t\tvar contentHeightInput = t.options.contentHeight;\n\t\tvar heightInput = t.options.height;\n\n\t\tif (typeof contentHeightInput === 'number') { // exists and not 'auto'\n\t\t\tsuggestedViewHeight = contentHeightInput;\n\t\t}\n\t\telse if (typeof contentHeightInput === 'function') { // exists and is a function\n\t\t\tsuggestedViewHeight = contentHeightInput();\n\t\t}\n\t\telse if (typeof heightInput === 'number') { // exists and not 'auto'\n\t\t\tsuggestedViewHeight = heightInput - queryToolbarsHeight();\n\t\t}\n\t\telse if (typeof heightInput === 'function') { // exists and is a function\n\t\t\tsuggestedViewHeight = heightInput() - queryToolbarsHeight();\n\t\t}\n\t\telse if (heightInput === 'parent') { // set to height of parent element\n\t\t\tsuggestedViewHeight = element.parent().height() - queryToolbarsHeight();\n\t\t}\n\t\telse {\n\t\t\tsuggestedViewHeight = Math.round(content.width() / Math.max(t.options.aspectRatio, .5));\n\t\t}\n\t}\n\n\n\tfunction queryToolbarsHeight() {\n\t\treturn toolbarsManager.items.reduce(function(accumulator, toolbar) {\n\t\t\tvar toolbarHeight = toolbar.el ? toolbar.el.outerHeight(true) : 0; // includes margin\n\t\t\treturn accumulator + toolbarHeight;\n\t\t}, 0);\n\t}\n\n\n\tfunction windowResize(ev) {\n\t\tif (\n\t\t\t!ignoreWindowResize &&\n\t\t\tev.target === window && // so we don't process jqui \"resize\" events that have bubbled up\n\t\t\tcurrentView.start // view has already been rendered\n\t\t) {\n\t\t\tif (updateSize(true)) {\n\t\t\t\tcurrentView.publiclyTrigger('windowResize', _element);\n\t\t\t}\n\t\t}\n\t}\n\n\n\n\t/* Event Rendering\n\t-----------------------------------------------------------------------------*/\n\n\n\tfunction rerenderEvents() { // API method. destroys old events if previously rendered.\n\t\tif (elementVisible()) {\n\t\t\tt.reportEventChange(); // will re-trasmit events to the view, causing a rerender\n\t\t}\n\t}\n\n\n\n\t/* Toolbars\n\t-----------------------------------------------------------------------------*/\n\n\n\tfunction buildToolbars() {\n\t\treturn [\n\t\t\tnew Toolbar(t, computeHeaderOptions()),\n\t\t\tnew Toolbar(t, computeFooterOptions())\n\t\t];\n\t}\n\n\n\tfunction computeHeaderOptions() {\n\t\treturn {\n\t\t\textraClasses: 'fc-header-toolbar',\n\t\t\tlayout: t.options.header\n\t\t};\n\t}\n\n\n\tfunction computeFooterOptions() {\n\t\treturn {\n\t\t\textraClasses: 'fc-footer-toolbar',\n\t\t\tlayout: t.options.footer\n\t\t};\n\t}\n\n\n\t// can be called repeatedly and Header will rerender\n\tfunction renderHeader() {\n\t\theader.setToolbarOptions(computeHeaderOptions());\n\t\theader.render();\n\t\tif (header.el) {\n\t\t\telement.prepend(header.el);\n\t\t}\n\t}\n\n\n\t// can be called repeatedly and Footer will rerender\n\tfunction renderFooter() {\n\t\tfooter.setToolbarOptions(computeFooterOptions());\n\t\tfooter.render();\n\t\tif (footer.el) {\n\t\t\telement.append(footer.el);\n\t\t}\n\t}\n\n\n\tt.setToolbarsTitle = function(title) {\n\t\ttoolbarsManager.proxyCall('updateTitle', title);\n\t};\n\n\n\tfunction updateToolbarsTodayButton() {\n\t\tvar now = t.getNow();\n\t\tif (now >= currentView.intervalStart && now < currentView.intervalEnd) {\n\t\t\ttoolbarsManager.proxyCall('disableButton', 'today');\n\t\t}\n\t\telse {\n\t\t\ttoolbarsManager.proxyCall('enableButton', 'today');\n\t\t}\n\t}\n\n\n\n\t/* Selection\n\t-----------------------------------------------------------------------------*/\n\n\n\t// this public method receives start/end dates in any format, with any timezone\n\tfunction select(zonedStartInput, zonedEndInput) {\n\t\tcurrentView.select(\n\t\t\tt.buildSelectSpan.apply(t, arguments)\n\t\t);\n\t}\n\n\n\tfunction unselect() { // safe to be called before renderView\n\t\tif (currentView) {\n\t\t\tcurrentView.unselect();\n\t\t}\n\t}\n\n\n\n\t/* Date\n\t-----------------------------------------------------------------------------*/\n\n\n\tfunction prev() {\n\t\tdate = currentView.computePrevDate(date);\n\t\trenderView();\n\t}\n\n\n\tfunction next() {\n\t\tdate = currentView.computeNextDate(date);\n\t\trenderView();\n\t}\n\n\n\tfunction prevYear() {\n\t\tdate.add(-1, 'years');\n\t\trenderView();\n\t}\n\n\n\tfunction nextYear() {\n\t\tdate.add(1, 'years');\n\t\trenderView();\n\t}\n\n\n\tfunction today() {\n\t\tdate = t.getNow();\n\t\trenderView();\n\t}\n\n\n\tfunction gotoDate(zonedDateInput) {\n\t\tdate = t.moment(zonedDateInput).stripZone();\n\t\trenderView();\n\t}\n\n\n\tfunction incrementDate(delta) {\n\t\tdate.add(moment.duration(delta));\n\t\trenderView();\n\t}\n\n\n\t// Forces navigation to a view for the given date.\n\t// `viewType` can be a specific view name or a generic one like \"week\" or \"day\".\n\tfunction zoomTo(newDate, viewType) {\n\t\tvar spec;\n\n\t\tviewType = viewType || 'day'; // day is default zoom\n\t\tspec = t.getViewSpec(viewType) || t.getUnitViewSpec(viewType);\n\n\t\tdate = newDate.clone();\n\t\trenderView(spec ? spec.type : null);\n\t}\n\n\n\t// for external API\n\tfunction getDate() {\n\t\treturn t.applyTimezone(date); // infuse the calendar's timezone\n\t}\n\n\n\n\t/* Height \"Freezing\"\n\t-----------------------------------------------------------------------------*/\n\n\n\tt.freezeContentHeight = freezeContentHeight;\n\tt.thawContentHeight = thawContentHeight;\n\n\tvar freezeContentHeightDepth = 0;\n\n\n\tfunction freezeContentHeight() {\n\t\tif (!(freezeContentHeightDepth++)) {\n\t\t\tcontent.css({\n\t\t\t\twidth: '100%',\n\t\t\t\theight: content.height(),\n\t\t\t\toverflow: 'hidden'\n\t\t\t});\n\t\t}\n\t}\n\n\n\tfunction thawContentHeight() {\n\t\tif (!(--freezeContentHeightDepth)) {\n\t\t\tcontent.css({\n\t\t\t\twidth: '',\n\t\t\t\theight: '',\n\t\t\t\toverflow: ''\n\t\t\t});\n\t\t}\n\t}\n\n\n\n\t/* Misc\n\t-----------------------------------------------------------------------------*/\n\n\n\tfunction getCalendar() {\n\t\treturn t;\n\t}\n\n\n\tfunction getView() {\n\t\treturn currentView;\n\t}\n\n\n\tfunction option(name, value) {\n\t\tvar newOptionHash;\n\n\t\tif (typeof name === 'string') {\n\t\t\tif (value === undefined) { // getter\n\t\t\t\treturn t.options[name];\n\t\t\t}\n\t\t\telse { // setter for individual option\n\t\t\t\tnewOptionHash = {};\n\t\t\t\tnewOptionHash[name] = value;\n\t\t\t\tsetOptions(newOptionHash);\n\t\t\t}\n\t\t}\n\t\telse if (typeof name === 'object') { // compound setter with object input\n\t\t\tsetOptions(name);\n\t\t}\n\t}\n\n\n\tfunction setOptions(newOptionHash) {\n\t\tvar optionCnt = 0;\n\t\tvar optionName;\n\n\t\tfor (optionName in newOptionHash) {\n\t\t\tt.dynamicOverrides[optionName] = newOptionHash[optionName];\n\t\t}\n\n\t\tt.viewSpecCache = {}; // the dynamic override invalidates the options in this cache, so just clear it\n\t\tt.populateOptionsHash(); // this.options needs to be recomputed after the dynamic override\n\n\t\t// trigger handlers after this.options has been updated\n\t\tfor (optionName in newOptionHash) {\n\t\t\tt.triggerOptionHandlers(optionName); // recall bindOption/bindOptions\n\t\t\toptionCnt++;\n\t\t}\n\n\t\t// special-case handling of single option change.\n\t\t// if only one option change, `optionName` will be its name.\n\t\tif (optionCnt === 1) {\n\t\t\tif (optionName === 'height' || optionName === 'contentHeight' || optionName === 'aspectRatio') {\n\t\t\t\tupdateSize(true); // true = allow recalculation of height\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if (optionName === 'defaultDate') {\n\t\t\t\treturn; // can't change date this way. use gotoDate instead\n\t\t\t}\n\t\t\telse if (optionName === 'businessHours') {\n\t\t\t\tif (currentView) {\n\t\t\t\t\tcurrentView.unrenderBusinessHours();\n\t\t\t\t\tcurrentView.renderBusinessHours();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse if (optionName === 'timezone') {\n\t\t\t\tt.rezoneArrayEventSources();\n\t\t\t\tt.refetchEvents();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// catch-all. rerender the header and footer and rebuild/rerender the current view\n\t\trenderHeader();\n\t\trenderFooter();\n\t\tviewsByType = {}; // even non-current views will be affected by this option change. do before rerender\n\t\treinitView();\n\t}\n\n\n\tfunction publiclyTrigger(name, thisObj) {\n\t\tvar args = Array.prototype.slice.call(arguments, 2);\n\n\t\tthisObj = thisObj || _element;\n\t\tthis.triggerWith(name, thisObj, args); // Emitter's method\n\n\t\tif (t.options[name]) {\n\t\t\treturn t.options[name].apply(thisObj, args);\n\t\t}\n\t}\n\n\tt.initialize();\n}\n\n;;\n/*\nOptions binding/triggering system.\n*/\nCalendar.mixin({\n\n\t// A map of option names to arrays of handler objects. Initialized to {} in Calendar.\n\t// Format for a handler object:\n\t// {\n\t// func // callback function to be called upon change\n\t// names // option names whose values should be given to func\n\t// }\n\toptionHandlers: null, \n\n\t// Calls handlerFunc immediately, and when the given option has changed.\n\t// handlerFunc will be given the option value.\n\tbindOption: function(optionName, handlerFunc) {\n\t\tthis.bindOptions([ optionName ], handlerFunc);\n\t},\n\n\t// Calls handlerFunc immediately, and when any of the given options change.\n\t// handlerFunc will be given each option value as ordered function arguments.\n\tbindOptions: function(optionNames, handlerFunc) {\n\t\tvar handlerObj = { func: handlerFunc, names: optionNames };\n\t\tvar i;\n\n\t\tfor (i = 0; i < optionNames.length; i++) {\n\t\t\tthis.registerOptionHandlerObj(optionNames[i], handlerObj);\n\t\t}\n\n\t\tthis.triggerOptionHandlerObj(handlerObj);\n\t},\n\n\t// Puts the given handler object into the internal hash\n\tregisterOptionHandlerObj: function(optionName, handlerObj) {\n\t\t(this.optionHandlers[optionName] || (this.optionHandlers[optionName] = []))\n\t\t\t.push(handlerObj);\n\t},\n\n\t// Reports that the given option has changed, and calls all appropriate handlers.\n\ttriggerOptionHandlers: function(optionName) {\n\t\tvar handlerObjs = this.optionHandlers[optionName] || [];\n\t\tvar i;\n\n\t\tfor (i = 0; i < handlerObjs.length; i++) {\n\t\t\tthis.triggerOptionHandlerObj(handlerObjs[i]);\n\t\t}\n\t},\n\n\t// Calls the callback for a specific handler object, passing in the appropriate arguments.\n\ttriggerOptionHandlerObj: function(handlerObj) {\n\t\tvar optionNames = handlerObj.names;\n\t\tvar optionValues = [];\n\t\tvar i;\n\n\t\tfor (i = 0; i < optionNames.length; i++) {\n\t\t\toptionValues.push(this.options[optionNames[i]]);\n\t\t}\n\n\t\thandlerObj.func.apply(this, optionValues); // maintain the Calendar's `this` context\n\t}\n\n});\n\n;;\n\nCalendar.defaults = {\n\n\ttitleRangeSeparator: ' \\u2013 ', // en dash\n\tmonthYearFormat: 'MMMM YYYY', // required for en. other locales rely on datepicker computable option\n\n\tdefaultTimedEventDuration: '02:00:00',\n\tdefaultAllDayEventDuration: { days: 1 },\n\tforceEventDuration: false,\n\tnextDayThreshold: '09:00:00', // 9am\n\n\t// display\n\tdefaultView: 'month',\n\taspectRatio: 1.35,\n\theader: {\n\t\tleft: 'title',\n\t\tcenter: '',\n\t\tright: 'today prev,next'\n\t},\n\tweekends: true,\n\tweekNumbers: false,\n\n\tweekNumberTitle: 'W',\n\tweekNumberCalculation: 'local',\n\t\n\t//editable: false,\n\n\t//nowIndicator: false,\n\n\tscrollTime: '06:00:00',\n\t\n\t// event ajax\n\tlazyFetching: true,\n\tstartParam: 'start',\n\tendParam: 'end',\n\ttimezoneParam: 'timezone',\n\n\ttimezone: false,\n\n\t//allDayDefault: undefined,\n\n\t// locale\n\tisRTL: false,\n\tbuttonText: {\n\t\tprev: \"prev\",\n\t\tnext: \"next\",\n\t\tprevYear: \"prev year\",\n\t\tnextYear: \"next year\",\n\t\tyear: 'year', // TODO: locale files need to specify this\n\t\ttoday: 'today',\n\t\tmonth: 'month',\n\t\tweek: 'week',\n\t\tday: 'day'\n\t},\n\n\tbuttonIcons: {\n\t\tprev: 'left-single-arrow',\n\t\tnext: 'right-single-arrow',\n\t\tprevYear: 'left-double-arrow',\n\t\tnextYear: 'right-double-arrow'\n\t},\n\n\tallDayText: 'all-day',\n\t\n\t// jquery-ui theming\n\ttheme: false,\n\tthemeButtonIcons: {\n\t\tprev: 'circle-triangle-w',\n\t\tnext: 'circle-triangle-e',\n\t\tprevYear: 'seek-prev',\n\t\tnextYear: 'seek-next'\n\t},\n\n\t//eventResizableFromStart: false,\n\tdragOpacity: .75,\n\tdragRevertDuration: 500,\n\tdragScroll: true,\n\t\n\t//selectable: false,\n\tunselectAuto: true,\n\t//selectMinDistance: 0,\n\t\n\tdropAccept: '*',\n\n\teventOrder: 'title',\n\t//eventRenderWait: null,\n\n\teventLimit: false,\n\teventLimitText: 'more',\n\teventLimitClick: 'popover',\n\tdayPopoverFormat: 'LL',\n\t\n\thandleWindowResize: true,\n\twindowResizeDelay: 100, // milliseconds before an updateSize happens\n\n\tlongPressDelay: 1000\n\t\n};\n\n\nCalendar.englishDefaults = { // used by locale.js\n\tdayPopoverFormat: 'dddd, MMMM D'\n};\n\n\nCalendar.rtlDefaults = { // right-to-left defaults\n\theader: { // TODO: smarter solution (first/center/last ?)\n\t\tleft: 'next,prev today',\n\t\tcenter: '',\n\t\tright: 'title'\n\t},\n\tbuttonIcons: {\n\t\tprev: 'right-single-arrow',\n\t\tnext: 'left-single-arrow',\n\t\tprevYear: 'right-double-arrow',\n\t\tnextYear: 'left-double-arrow'\n\t},\n\tthemeButtonIcons: {\n\t\tprev: 'circle-triangle-e',\n\t\tnext: 'circle-triangle-w',\n\t\tnextYear: 'seek-prev',\n\t\tprevYear: 'seek-next'\n\t}\n};\n\n;;\n\nvar localeOptionHash = FC.locales = {}; // initialize and expose\n\n\n// TODO: document the structure and ordering of a FullCalendar locale file\n\n\n// Initialize jQuery UI datepicker translations while using some of the translations\n// Will set this as the default locales for datepicker.\nFC.datepickerLocale = function(localeCode, dpLocaleCode, dpOptions) {\n\n\t// get the FullCalendar internal option hash for this locale. create if necessary\n\tvar fcOptions = localeOptionHash[localeCode] || (localeOptionHash[localeCode] = {});\n\n\t// transfer some simple options from datepicker to fc\n\tfcOptions.isRTL = dpOptions.isRTL;\n\tfcOptions.weekNumberTitle = dpOptions.weekHeader;\n\n\t// compute some more complex options from datepicker\n\t$.each(dpComputableOptions, function(name, func) {\n\t\tfcOptions[name] = func(dpOptions);\n\t});\n\n\t// is jQuery UI Datepicker is on the page?\n\tif ($.datepicker) {\n\n\t\t// Register the locale data.\n\t\t// FullCalendar and MomentJS use locale codes like \"pt-br\" but Datepicker\n\t\t// does it like \"pt-BR\" or if it doesn't have the locale, maybe just \"pt\".\n\t\t// Make an alias so the locale can be referenced either way.\n\t\t$.datepicker.regional[dpLocaleCode] =\n\t\t\t$.datepicker.regional[localeCode] = // alias\n\t\t\t\tdpOptions;\n\n\t\t// Alias 'en' to the default locale data. Do this every time.\n\t\t$.datepicker.regional.en = $.datepicker.regional[''];\n\n\t\t// Set as Datepicker's global defaults.\n\t\t$.datepicker.setDefaults(dpOptions);\n\t}\n};\n\n\n// Sets FullCalendar-specific translations. Will set the locales as the global default.\nFC.locale = function(localeCode, newFcOptions) {\n\tvar fcOptions;\n\tvar momOptions;\n\n\t// get the FullCalendar internal option hash for this locale. create if necessary\n\tfcOptions = localeOptionHash[localeCode] || (localeOptionHash[localeCode] = {});\n\n\t// provided new options for this locales? merge them in\n\tif (newFcOptions) {\n\t\tfcOptions = localeOptionHash[localeCode] = mergeOptions([ fcOptions, newFcOptions ]);\n\t}\n\n\t// compute locale options that weren't defined.\n\t// always do this. newFcOptions can be undefined when initializing from i18n file,\n\t// so no way to tell if this is an initialization or a default-setting.\n\tmomOptions = getMomentLocaleData(localeCode); // will fall back to en\n\t$.each(momComputableOptions, function(name, func) {\n\t\tif (fcOptions[name] == null) {\n\t\t\tfcOptions[name] = func(momOptions, fcOptions);\n\t\t}\n\t});\n\n\t// set it as the default locale for FullCalendar\n\tCalendar.defaults.locale = localeCode;\n};\n\n\n// NOTE: can't guarantee any of these computations will run because not every locale has datepicker\n// configs, so make sure there are English fallbacks for these in the defaults file.\nvar dpComputableOptions = {\n\n\tbuttonText: function(dpOptions) {\n\t\treturn {\n\t\t\t// the translations sometimes wrongly contain HTML entities\n\t\t\tprev: stripHtmlEntities(dpOptions.prevText),\n\t\t\tnext: stripHtmlEntities(dpOptions.nextText),\n\t\t\ttoday: stripHtmlEntities(dpOptions.currentText)\n\t\t};\n\t},\n\n\t// Produces format strings like \"MMMM YYYY\" -> \"September 2014\"\n\tmonthYearFormat: function(dpOptions) {\n\t\treturn dpOptions.showMonthAfterYear ?\n\t\t\t'YYYY[' + dpOptions.yearSuffix + '] MMMM' :\n\t\t\t'MMMM YYYY[' + dpOptions.yearSuffix + ']';\n\t}\n\n};\n\nvar momComputableOptions = {\n\n\t// Produces format strings like \"ddd M/D\" -> \"Fri 9/15\"\n\tdayOfMonthFormat: function(momOptions, fcOptions) {\n\t\tvar format = momOptions.longDateFormat('l'); // for the format like \"M/D/YYYY\"\n\n\t\t// strip the year off the edge, as well as other misc non-whitespace chars\n\t\tformat = format.replace(/^Y+[^\\w\\s]*|[^\\w\\s]*Y+$/g, '');\n\n\t\tif (fcOptions.isRTL) {\n\t\t\tformat += ' ddd'; // for RTL, add day-of-week to end\n\t\t}\n\t\telse {\n\t\t\tformat = 'ddd ' + format; // for LTR, add day-of-week to beginning\n\t\t}\n\t\treturn format;\n\t},\n\n\t// Produces format strings like \"h:mma\" -> \"6:00pm\"\n\tmediumTimeFormat: function(momOptions) { // can't be called `timeFormat` because collides with option\n\t\treturn momOptions.longDateFormat('LT')\n\t\t\t.replace(/\\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand\n\t},\n\n\t// Produces format strings like \"h(:mm)a\" -> \"6pm\" / \"6:30pm\"\n\tsmallTimeFormat: function(momOptions) {\n\t\treturn momOptions.longDateFormat('LT')\n\t\t\t.replace(':mm', '(:mm)')\n\t\t\t.replace(/(\\Wmm)$/, '($1)') // like above, but for foreign locales\n\t\t\t.replace(/\\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand\n\t},\n\n\t// Produces format strings like \"h(:mm)t\" -> \"6p\" / \"6:30p\"\n\textraSmallTimeFormat: function(momOptions) {\n\t\treturn momOptions.longDateFormat('LT')\n\t\t\t.replace(':mm', '(:mm)')\n\t\t\t.replace(/(\\Wmm)$/, '($1)') // like above, but for foreign locales\n\t\t\t.replace(/\\s*a$/i, 't'); // convert to AM/PM/am/pm to lowercase one-letter. remove any spaces beforehand\n\t},\n\n\t// Produces format strings like \"ha\" / \"H\" -> \"6pm\" / \"18\"\n\thourFormat: function(momOptions) {\n\t\treturn momOptions.longDateFormat('LT')\n\t\t\t.replace(':mm', '')\n\t\t\t.replace(/(\\Wmm)$/, '') // like above, but for foreign locales\n\t\t\t.replace(/\\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand\n\t},\n\n\t// Produces format strings like \"h:mm\" -> \"6:30\" (with no AM/PM)\n\tnoMeridiemTimeFormat: function(momOptions) {\n\t\treturn momOptions.longDateFormat('LT')\n\t\t\t.replace(/\\s*a$/i, ''); // remove trailing AM/PM\n\t}\n\n};\n\n\n// options that should be computed off live calendar options (considers override options)\n// TODO: best place for this? related to locale?\n// TODO: flipping text based on isRTL is a bad idea because the CSS `direction` might want to handle it\nvar instanceComputableOptions = {\n\n\t// Produces format strings for results like \"Mo 16\"\n\tsmallDayDateFormat: function(options) {\n\t\treturn options.isRTL ?\n\t\t\t'D dd' :\n\t\t\t'dd D';\n\t},\n\n\t// Produces format strings for results like \"Wk 5\"\n\tweekFormat: function(options) {\n\t\treturn options.isRTL ?\n\t\t\t'w[ ' + options.weekNumberTitle + ']' :\n\t\t\t'[' + options.weekNumberTitle + ' ]w';\n\t},\n\n\t// Produces format strings for results like \"Wk5\"\n\tsmallWeekFormat: function(options) {\n\t\treturn options.isRTL ?\n\t\t\t'w[' + options.weekNumberTitle + ']' :\n\t\t\t'[' + options.weekNumberTitle + ']w';\n\t}\n\n};\n\nfunction populateInstanceComputableOptions(options) {\n\t$.each(instanceComputableOptions, function(name, func) {\n\t\tif (options[name] == null) {\n\t\t\toptions[name] = func(options);\n\t\t}\n\t});\n}\n\n\n// Returns moment's internal locale data. If doesn't exist, returns English.\nfunction getMomentLocaleData(localeCode) {\n\treturn moment.localeData(localeCode) || moment.localeData('en');\n}\n\n\n// Initialize English by forcing computation of moment-derived options.\n// Also, sets it as the default.\nFC.locale('en', Calendar.englishDefaults);\n\n;;\n\nFC.sourceNormalizers = [];\nFC.sourceFetchers = [];\n\nvar ajaxDefaults = {\n\tdataType: 'json',\n\tcache: false\n};\n\nvar eventGUID = 1;\n\n\nfunction EventManager() { // assumed to be a calendar\n\tvar t = this;\n\n\n\t// exports\n\tt.requestEvents = requestEvents;\n\tt.reportEventChange = reportEventChange;\n\tt.isFetchNeeded = isFetchNeeded;\n\tt.fetchEvents = fetchEvents;\n\tt.fetchEventSources = fetchEventSources;\n\tt.refetchEvents = refetchEvents;\n\tt.refetchEventSources = refetchEventSources;\n\tt.getEventSources = getEventSources;\n\tt.getEventSourceById = getEventSourceById;\n\tt.addEventSource = addEventSource;\n\tt.removeEventSource = removeEventSource;\n\tt.removeEventSources = removeEventSources;\n\tt.updateEvent = updateEvent;\n\tt.updateEvents = updateEvents;\n\tt.renderEvent = renderEvent;\n\tt.renderEvents = renderEvents;\n\tt.removeEvents = removeEvents;\n\tt.clientEvents = clientEvents;\n\tt.mutateEvent = mutateEvent;\n\tt.normalizeEventDates = normalizeEventDates;\n\tt.normalizeEventTimes = normalizeEventTimes;\n\n\n\t// locals\n\tvar stickySource = { events: [] };\n\tvar sources = [ stickySource ];\n\tvar rangeStart, rangeEnd;\n\tvar pendingSourceCnt = 0; // outstanding fetch requests, max one per source\n\tvar cache = []; // holds events that have already been expanded\n\tvar prunedCache; // like cache, but only events that intersect with rangeStart/rangeEnd\n\n\n\t$.each(\n\t\t(t.options.events ? [ t.options.events ] : []).concat(t.options.eventSources || []),\n\t\tfunction(i, sourceInput) {\n\t\t\tvar source = buildEventSource(sourceInput);\n\t\t\tif (source) {\n\t\t\t\tsources.push(source);\n\t\t\t}\n\t\t}\n\t);\n\n\n\n\tfunction requestEvents(start, end) {\n\t\tif (!t.options.lazyFetching || isFetchNeeded(start, end)) {\n\t\t\treturn fetchEvents(start, end);\n\t\t}\n\t\telse {\n\t\t\treturn Promise.resolve(prunedCache);\n\t\t}\n\t}\n\n\n\tfunction reportEventChange() {\n\t\tprunedCache = filterEventsWithinRange(cache);\n\t\tt.trigger('eventsReset', prunedCache);\n\t}\n\n\n\tfunction filterEventsWithinRange(events) {\n\t\tvar filteredEvents = [];\n\t\tvar i, event;\n\n\t\tfor (i = 0; i < events.length; i++) {\n\t\t\tevent = events[i];\n\n\t\t\tif (\n\t\t\t\tevent.start.clone().stripZone() < rangeEnd &&\n\t\t\t\tt.getEventEnd(event).stripZone() > rangeStart\n\t\t\t) {\n\t\t\t\tfilteredEvents.push(event);\n\t\t\t}\n\t\t}\n\n\t\treturn filteredEvents;\n\t}\n\n\n\tt.getEventCache = function() {\n\t\treturn cache;\n\t};\n\n\n\tt.getPrunedEventCache = function() {\n\t\treturn prunedCache;\n\t};\n\n\n\n\t/* Fetching\n\t-----------------------------------------------------------------------------*/\n\n\n\t// start and end are assumed to be unzoned\n\tfunction isFetchNeeded(start, end) {\n\t\treturn !rangeStart || // nothing has been fetched yet?\n\t\t\tstart < rangeStart || end > rangeEnd; // is part of the new range outside of the old range?\n\t}\n\n\n\tfunction fetchEvents(start, end) {\n\t\trangeStart = start;\n\t\trangeEnd = end;\n\t\treturn refetchEvents();\n\t}\n\n\n\t// poorly named. fetches all sources with current `rangeStart` and `rangeEnd`.\n\tfunction refetchEvents() {\n\t\treturn fetchEventSources(sources, 'reset');\n\t}\n\n\n\t// poorly named. fetches a subset of event sources.\n\tfunction refetchEventSources(matchInputs) {\n\t\treturn fetchEventSources(getEventSourcesByMatchArray(matchInputs));\n\t}\n\n\n\t// expects an array of event source objects (the originals, not copies)\n\t// `specialFetchType` is an optimization parameter that affects purging of the event cache.\n\tfunction fetchEventSources(specificSources, specialFetchType) {\n\t\tvar i, source;\n\n\t\tif (specialFetchType === 'reset') {\n\t\t\tcache = [];\n\t\t}\n\t\telse if (specialFetchType !== 'add') {\n\t\t\tcache = excludeEventsBySources(cache, specificSources);\n\t\t}\n\n\t\tfor (i = 0; i < specificSources.length; i++) {\n\t\t\tsource = specificSources[i];\n\n\t\t\t// already-pending sources have already been accounted for in pendingSourceCnt\n\t\t\tif (source._status !== 'pending') {\n\t\t\t\tpendingSourceCnt++;\n\t\t\t}\n\n\t\t\tsource._fetchId = (source._fetchId || 0) + 1;\n\t\t\tsource._status = 'pending';\n\t\t}\n\n\t\tfor (i = 0; i < specificSources.length; i++) {\n\t\t\tsource = specificSources[i];\n\t\t\ttryFetchEventSource(source, source._fetchId);\n\t\t}\n\n\t\tif (pendingSourceCnt) {\n\t\t\treturn new Promise(function(resolve) {\n\t\t\t\tt.one('eventsReceived', resolve); // will send prunedCache\n\t\t\t});\n\t\t}\n\t\telse { // executed all synchronously, or no sources at all\n\t\t\treturn Promise.resolve(prunedCache);\n\t\t}\n\t}\n\n\n\t// fetches an event source and processes its result ONLY if it is still the current fetch.\n\t// caller is responsible for incrementing pendingSourceCnt first.\n\tfunction tryFetchEventSource(source, fetchId) {\n\t\t_fetchEventSource(source, function(eventInputs) {\n\t\t\tvar isArraySource = $.isArray(source.events);\n\t\t\tvar i, eventInput;\n\t\t\tvar abstractEvent;\n\n\t\t\tif (\n\t\t\t\t// is this the source's most recent fetch?\n\t\t\t\t// if not, rely on an upcoming fetch of this source to decrement pendingSourceCnt\n\t\t\t\tfetchId === source._fetchId &&\n\t\t\t\t// event source no longer valid?\n\t\t\t\tsource._status !== 'rejected'\n\t\t\t) {\n\t\t\t\tsource._status = 'resolved';\n\n\t\t\t\tif (eventInputs) {\n\t\t\t\t\tfor (i = 0; i < eventInputs.length; i++) {\n\t\t\t\t\t\teventInput = eventInputs[i];\n\n\t\t\t\t\t\tif (isArraySource) { // array sources have already been convert to Event Objects\n\t\t\t\t\t\t\tabstractEvent = eventInput;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tabstractEvent = buildEventFromInput(eventInput, source);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (abstractEvent) { // not false (an invalid event)\n\t\t\t\t\t\t\tcache.push.apply( // append\n\t\t\t\t\t\t\t\tcache,\n\t\t\t\t\t\t\t\texpandEvent(abstractEvent) // add individual expanded events to the cache\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdecrementPendingSourceCnt();\n\t\t\t}\n\t\t});\n\t}\n\n\n\tfunction rejectEventSource(source) {\n\t\tvar wasPending = source._status === 'pending';\n\n\t\tsource._status = 'rejected';\n\n\t\tif (wasPending) {\n\t\t\tdecrementPendingSourceCnt();\n\t\t}\n\t}\n\n\n\tfunction decrementPendingSourceCnt() {\n\t\tpendingSourceCnt--;\n\t\tif (!pendingSourceCnt) {\n\t\t\treportEventChange(cache); // updates prunedCache\n\t\t\tt.trigger('eventsReceived', prunedCache);\n\t\t}\n\t}\n\n\n\tfunction _fetchEventSource(source, callback) {\n\t\tvar i;\n\t\tvar fetchers = FC.sourceFetchers;\n\t\tvar res;\n\n\t\tfor (i=0; i= eventStart && innerSpan.end <= eventEnd;\n};\n\n\n// Returns a list of events that the given event should be compared against when being considered for a move to\n// the specified span. Attached to the Calendar's prototype because EventManager is a mixin for a Calendar.\nCalendar.prototype.getPeerEvents = function(span, event) {\n\tvar cache = this.getEventCache();\n\tvar peerEvents = [];\n\tvar i, otherEvent;\n\n\tfor (i = 0; i < cache.length; i++) {\n\t\totherEvent = cache[i];\n\t\tif (\n\t\t\t!event ||\n\t\t\tevent._id !== otherEvent._id // don't compare the event to itself or other related [repeating] events\n\t\t) {\n\t\t\tpeerEvents.push(otherEvent);\n\t\t}\n\t}\n\n\treturn peerEvents;\n};\n\n\n// updates the \"backup\" properties, which are preserved in order to compute diffs later on.\nfunction backupEventDates(event) {\n\tevent._allDay = event.allDay;\n\tevent._start = event.start.clone();\n\tevent._end = event.end ? event.end.clone() : null;\n}\n\n\n/* Overlapping / Constraining\n-----------------------------------------------------------------------------------------*/\n\n\n// Determines if the given event can be relocated to the given span (unzoned start/end with other misc data)\nCalendar.prototype.isEventSpanAllowed = function(span, event) {\n\tvar source = event.source || {};\n\n\tvar constraint = firstDefined(\n\t\tevent.constraint,\n\t\tsource.constraint,\n\t\tthis.options.eventConstraint\n\t);\n\n\tvar overlap = firstDefined(\n\t\tevent.overlap,\n\t\tsource.overlap,\n\t\tthis.options.eventOverlap\n\t);\n\n\treturn this.isSpanAllowed(span, constraint, overlap, event) &&\n\t\t(!this.options.eventAllow || this.options.eventAllow(span, event) !== false);\n};\n\n\n// Determines if an external event can be relocated to the given span (unzoned start/end with other misc data)\nCalendar.prototype.isExternalSpanAllowed = function(eventSpan, eventLocation, eventProps) {\n\tvar eventInput;\n\tvar event;\n\n\t// note: very similar logic is in View's reportExternalDrop\n\tif (eventProps) {\n\t\teventInput = $.extend({}, eventProps, eventLocation);\n\t\tevent = this.expandEvent(\n\t\t\tthis.buildEventFromInput(eventInput)\n\t\t)[0];\n\t}\n\n\tif (event) {\n\t\treturn this.isEventSpanAllowed(eventSpan, event);\n\t}\n\telse { // treat it as a selection\n\n\t\treturn this.isSelectionSpanAllowed(eventSpan);\n\t}\n};\n\n\n// Determines the given span (unzoned start/end with other misc data) can be selected.\nCalendar.prototype.isSelectionSpanAllowed = function(span) {\n\treturn this.isSpanAllowed(span, this.options.selectConstraint, this.options.selectOverlap) &&\n\t\t(!this.options.selectAllow || this.options.selectAllow(span) !== false);\n};\n\n\n// Returns true if the given span (caused by an event drop/resize or a selection) is allowed to exist\n// according to the constraint/overlap settings.\n// `event` is not required if checking a selection.\nCalendar.prototype.isSpanAllowed = function(span, constraint, overlap, event) {\n\tvar constraintEvents;\n\tvar anyContainment;\n\tvar peerEvents;\n\tvar i, peerEvent;\n\tvar peerOverlap;\n\n\t// the range must be fully contained by at least one of produced constraint events\n\tif (constraint != null) {\n\n\t\t// not treated as an event! intermediate data structure\n\t\t// TODO: use ranges in the future\n\t\tconstraintEvents = this.constraintToEvents(constraint);\n\t\tif (constraintEvents) { // not invalid\n\n\t\t\tanyContainment = false;\n\t\t\tfor (i = 0; i < constraintEvents.length; i++) {\n\t\t\t\tif (this.spanContainsSpan(constraintEvents[i], span)) {\n\t\t\t\t\tanyContainment = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!anyContainment) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\tpeerEvents = this.getPeerEvents(span, event);\n\n\tfor (i = 0; i < peerEvents.length; i++) {\n\t\tpeerEvent = peerEvents[i];\n\n\t\t// there needs to be an actual intersection before disallowing anything\n\t\tif (this.eventIntersectsRange(peerEvent, span)) {\n\n\t\t\t// evaluate overlap for the given range and short-circuit if necessary\n\t\t\tif (overlap === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// if the event's overlap is a test function, pass the peer event in question as the first param\n\t\t\telse if (typeof overlap === 'function' && !overlap(peerEvent, event)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// if we are computing if the given range is allowable for an event, consider the other event's\n\t\t\t// EventObject-specific or Source-specific `overlap` property\n\t\t\tif (event) {\n\t\t\t\tpeerOverlap = firstDefined(\n\t\t\t\t\tpeerEvent.overlap,\n\t\t\t\t\t(peerEvent.source || {}).overlap\n\t\t\t\t\t// we already considered the global `eventOverlap`\n\t\t\t\t);\n\t\t\t\tif (peerOverlap === false) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// if the peer event's overlap is a test function, pass the subject event as the first param\n\t\t\t\tif (typeof peerOverlap === 'function' && !peerOverlap(event, peerEvent)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true;\n};\n\n\n// Given an event input from the API, produces an array of event objects. Possible event inputs:\n// 'businessHours'\n// An event ID (number or string)\n// An object with specific start/end dates or a recurring event (like what businessHours accepts)\nCalendar.prototype.constraintToEvents = function(constraintInput) {\n\n\tif (constraintInput === 'businessHours') {\n\t\treturn this.getCurrentBusinessHourEvents();\n\t}\n\n\tif (typeof constraintInput === 'object') {\n\t\tif (constraintInput.start != null) { // needs to be event-like input\n\t\t\treturn this.expandEvent(this.buildEventFromInput(constraintInput));\n\t\t}\n\t\telse {\n\t\t\treturn null; // invalid\n\t\t}\n\t}\n\n\treturn this.clientEvents(constraintInput); // probably an ID\n};\n\n\n// Does the event's date range intersect with the given range?\n// start/end already assumed to have stripped zones :(\nCalendar.prototype.eventIntersectsRange = function(event, range) {\n\tvar eventStart = event.start.clone().stripZone();\n\tvar eventEnd = this.getEventEnd(event).stripZone();\n\n\treturn range.start < eventEnd && range.end > eventStart;\n};\n\n\n/* Business Hours\n-----------------------------------------------------------------------------------------*/\n\nvar BUSINESS_HOUR_EVENT_DEFAULTS = {\n\tid: '_fcBusinessHours', // will relate events from different calls to expandEvent\n\tstart: '09:00',\n\tend: '17:00',\n\tdow: [ 1, 2, 3, 4, 5 ], // monday - friday\n\trendering: 'inverse-background'\n\t// classNames are defined in businessHoursSegClasses\n};\n\n// Return events objects for business hours within the current view.\n// Abuse of our event system :(\nCalendar.prototype.getCurrentBusinessHourEvents = function(wholeDay) {\n\treturn this.computeBusinessHourEvents(wholeDay, this.options.businessHours);\n};\n\n// Given a raw input value from options, return events objects for business hours within the current view.\nCalendar.prototype.computeBusinessHourEvents = function(wholeDay, input) {\n\tif (input === true) {\n\t\treturn this.expandBusinessHourEvents(wholeDay, [ {} ]);\n\t}\n\telse if ($.isPlainObject(input)) {\n\t\treturn this.expandBusinessHourEvents(wholeDay, [ input ]);\n\t}\n\telse if ($.isArray(input)) {\n\t\treturn this.expandBusinessHourEvents(wholeDay, input, true);\n\t}\n\telse {\n\t\treturn [];\n\t}\n};\n\n// inputs expected to be an array of objects.\n// if ignoreNoDow is true, will ignore entries that don't specify a day-of-week (dow) key.\nCalendar.prototype.expandBusinessHourEvents = function(wholeDay, inputs, ignoreNoDow) {\n\tvar view = this.getView();\n\tvar events = [];\n\tvar i, input;\n\n\tfor (i = 0; i < inputs.length; i++) {\n\t\tinput = inputs[i];\n\n\t\tif (ignoreNoDow && !input.dow) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// give defaults. will make a copy\n\t\tinput = $.extend({}, BUSINESS_HOUR_EVENT_DEFAULTS, input);\n\n\t\t// if a whole-day series is requested, clear the start/end times\n\t\tif (wholeDay) {\n\t\t\tinput.start = null;\n\t\t\tinput.end = null;\n\t\t}\n\n\t\tevents.push.apply(events, // append\n\t\t\tthis.expandEvent(\n\t\t\t\tthis.buildEventFromInput(input),\n\t\t\t\tview.start,\n\t\t\t\tview.end\n\t\t\t)\n\t\t);\n\t}\n\n\treturn events;\n};\n\n;;\n\n/* An abstract class for the \"basic\" views, as well as month view. Renders one or more rows of day cells.\n----------------------------------------------------------------------------------------------------------------------*/\n// It is a manager for a DayGrid subcomponent, which does most of the heavy lifting.\n// It is responsible for managing width/height.\n\nvar BasicView = FC.BasicView = View.extend({\n\n\tscroller: null,\n\n\tdayGridClass: DayGrid, // class the dayGrid will be instantiated from (overridable by subclasses)\n\tdayGrid: null, // the main subcomponent that does most of the heavy lifting\n\n\tdayNumbersVisible: false, // display day numbers on each day cell?\n\tcolWeekNumbersVisible: false, // display week numbers along the side?\n\tcellWeekNumbersVisible: false, // display week numbers in day cell?\n\n\tweekNumberWidth: null, // width of all the week-number cells running down the side\n\n\theadContainerEl: null, // div that hold's the dayGrid's rendered date header\n\theadRowEl: null, // the fake row element of the day-of-week header\n\n\n\tinitialize: function() {\n\t\tthis.dayGrid = this.instantiateDayGrid();\n\n\t\tthis.scroller = new Scroller({\n\t\t\toverflowX: 'hidden',\n\t\t\toverflowY: 'auto'\n\t\t});\n\t},\n\n\n\t// Generates the DayGrid object this view needs. Draws from this.dayGridClass\n\tinstantiateDayGrid: function() {\n\t\t// generate a subclass on the fly with BasicView-specific behavior\n\t\t// TODO: cache this subclass\n\t\tvar subclass = this.dayGridClass.extend(basicDayGridMethods);\n\n\t\treturn new subclass(this);\n\t},\n\n\n\t// Sets the display range and computes all necessary dates\n\tsetRange: function(range) {\n\t\tView.prototype.setRange.call(this, range); // call the super-method\n\n\t\tthis.dayGrid.breakOnWeeks = /year|month|week/.test(this.intervalUnit); // do before setRange\n\t\tthis.dayGrid.setRange(range);\n\t},\n\n\n\t// Compute the value to feed into setRange. Overrides superclass.\n\tcomputeRange: function(date) {\n\t\tvar range = View.prototype.computeRange.call(this, date); // get value from the super-method\n\n\t\t// year and month views should be aligned with weeks. this is already done for week\n\t\tif (/year|month/.test(range.intervalUnit)) {\n\t\t\trange.start.startOf('week');\n\t\t\trange.start = this.skipHiddenDays(range.start);\n\n\t\t\t// make end-of-week if not already\n\t\t\tif (range.end.weekday()) {\n\t\t\t\trange.end.add(1, 'week').startOf('week');\n\t\t\t\trange.end = this.skipHiddenDays(range.end, -1, true); // exclusively move backwards\n\t\t\t}\n\t\t}\n\n\t\treturn range;\n\t},\n\n\n\t// Renders the view into `this.el`, which should already be assigned\n\trenderDates: function() {\n\n\t\tthis.dayNumbersVisible = this.dayGrid.rowCnt > 1; // TODO: make grid responsible\n\t\tif (this.opt('weekNumbers')) {\n\t\t\tif (this.opt('weekNumbersWithinDays')) {\n\t\t\t\tthis.cellWeekNumbersVisible = true;\n\t\t\t\tthis.colWeekNumbersVisible = false;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.cellWeekNumbersVisible = false;\n\t\t\t\tthis.colWeekNumbersVisible = true;\n\t\t\t};\n\t\t}\n\t\tthis.dayGrid.numbersVisible = this.dayNumbersVisible ||\n\t\t\tthis.cellWeekNumbersVisible || this.colWeekNumbersVisible;\n\n\t\tthis.el.addClass('fc-basic-view').html(this.renderSkeletonHtml());\n\t\tthis.renderHead();\n\n\t\tthis.scroller.render();\n\t\tvar dayGridContainerEl = this.scroller.el.addClass('fc-day-grid-container');\n\t\tvar dayGridEl = $('
    ').appendTo(dayGridContainerEl);\n\t\tthis.el.find('.fc-body > tr > td').append(dayGridContainerEl);\n\n\t\tthis.dayGrid.setElement(dayGridEl);\n\t\tthis.dayGrid.renderDates(this.hasRigidRows());\n\t},\n\n\n\t// render the day-of-week headers\n\trenderHead: function() {\n\t\tthis.headContainerEl =\n\t\t\tthis.el.find('.fc-head-container')\n\t\t\t\t.html(this.dayGrid.renderHeadHtml());\n\t\tthis.headRowEl = this.headContainerEl.find('.fc-row');\n\t},\n\n\n\t// Unrenders the content of the view. Since we haven't separated skeleton rendering from date rendering,\n\t// always completely kill the dayGrid's rendering.\n\tunrenderDates: function() {\n\t\tthis.dayGrid.unrenderDates();\n\t\tthis.dayGrid.removeElement();\n\t\tthis.scroller.destroy();\n\t},\n\n\n\trenderBusinessHours: function() {\n\t\tthis.dayGrid.renderBusinessHours();\n\t},\n\n\n\tunrenderBusinessHours: function() {\n\t\tthis.dayGrid.unrenderBusinessHours();\n\t},\n\n\n\t// Builds the HTML skeleton for the view.\n\t// The day-grid component will render inside of a container defined by this HTML.\n\trenderSkeletonHtml: function() {\n\t\treturn '' +\n\t\t\t'' +\n\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t'' +\n\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t'' +\n\t\t\t'
    ';\n\t},\n\n\n\t// Generates an HTML attribute string for setting the width of the week number column, if it is known\n\tweekNumberStyleAttr: function() {\n\t\tif (this.weekNumberWidth !== null) {\n\t\t\treturn 'style=\"width:' + this.weekNumberWidth + 'px\"';\n\t\t}\n\t\treturn '';\n\t},\n\n\n\t// Determines whether each row should have a constant height\n\thasRigidRows: function() {\n\t\tvar eventLimit = this.opt('eventLimit');\n\t\treturn eventLimit && typeof eventLimit !== 'number';\n\t},\n\n\n\t/* Dimensions\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Refreshes the horizontal dimensions of the view\n\tupdateWidth: function() {\n\t\tif (this.colWeekNumbersVisible) {\n\t\t\t// Make sure all week number cells running down the side have the same width.\n\t\t\t// Record the width for cells created later.\n\t\t\tthis.weekNumberWidth = matchCellWidths(\n\t\t\t\tthis.el.find('.fc-week-number')\n\t\t\t);\n\t\t}\n\t},\n\n\n\t// Adjusts the vertical dimensions of the view to the specified values\n\tsetHeight: function(totalHeight, isAuto) {\n\t\tvar eventLimit = this.opt('eventLimit');\n\t\tvar scrollerHeight;\n\t\tvar scrollbarWidths;\n\n\t\t// reset all heights to be natural\n\t\tthis.scroller.clear();\n\t\tuncompensateScroll(this.headRowEl);\n\n\t\tthis.dayGrid.removeSegPopover(); // kill the \"more\" popover if displayed\n\n\t\t// is the event limit a constant level number?\n\t\tif (eventLimit && typeof eventLimit === 'number') {\n\t\t\tthis.dayGrid.limitRows(eventLimit); // limit the levels first so the height can redistribute after\n\t\t}\n\n\t\t// distribute the height to the rows\n\t\t// (totalHeight is a \"recommended\" value if isAuto)\n\t\tscrollerHeight = this.computeScrollerHeight(totalHeight);\n\t\tthis.setGridHeight(scrollerHeight, isAuto);\n\n\t\t// is the event limit dynamically calculated?\n\t\tif (eventLimit && typeof eventLimit !== 'number') {\n\t\t\tthis.dayGrid.limitRows(eventLimit); // limit the levels after the grid's row heights have been set\n\t\t}\n\n\t\tif (!isAuto) { // should we force dimensions of the scroll container?\n\n\t\t\tthis.scroller.setHeight(scrollerHeight);\n\t\t\tscrollbarWidths = this.scroller.getScrollbarWidths();\n\n\t\t\tif (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars?\n\n\t\t\t\tcompensateScroll(this.headRowEl, scrollbarWidths);\n\n\t\t\t\t// doing the scrollbar compensation might have created text overflow which created more height. redo\n\t\t\t\tscrollerHeight = this.computeScrollerHeight(totalHeight);\n\t\t\t\tthis.scroller.setHeight(scrollerHeight);\n\t\t\t}\n\n\t\t\t// guarantees the same scrollbar widths\n\t\t\tthis.scroller.lockOverflow(scrollbarWidths);\n\t\t}\n\t},\n\n\n\t// given a desired total height of the view, returns what the height of the scroller should be\n\tcomputeScrollerHeight: function(totalHeight) {\n\t\treturn totalHeight -\n\t\t\tsubtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller\n\t},\n\n\n\t// Sets the height of just the DayGrid component in this view\n\tsetGridHeight: function(height, isAuto) {\n\t\tif (isAuto) {\n\t\t\tundistributeHeight(this.dayGrid.rowEls); // let the rows be their natural height with no expanding\n\t\t}\n\t\telse {\n\t\t\tdistributeHeight(this.dayGrid.rowEls, height, true); // true = compensate for height-hogging rows\n\t\t}\n\t},\n\n\n\t/* Scroll\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\tcomputeInitialScroll: function() {\n\t\treturn { top: 0 };\n\t},\n\n\n\tqueryScroll: function() {\n\t\treturn { top: this.scroller.getScrollTop() };\n\t},\n\n\n\tsetScroll: function(scroll) {\n\t\tthis.scroller.setScrollTop(scroll.top);\n\t},\n\n\n\t/* Hit Areas\n\t------------------------------------------------------------------------------------------------------------------*/\n\t// forward all hit-related method calls to dayGrid\n\n\n\thitsNeeded: function() {\n\t\tthis.dayGrid.hitsNeeded();\n\t},\n\n\n\thitsNotNeeded: function() {\n\t\tthis.dayGrid.hitsNotNeeded();\n\t},\n\n\n\tprepareHits: function() {\n\t\tthis.dayGrid.prepareHits();\n\t},\n\n\n\treleaseHits: function() {\n\t\tthis.dayGrid.releaseHits();\n\t},\n\n\n\tqueryHit: function(left, top) {\n\t\treturn this.dayGrid.queryHit(left, top);\n\t},\n\n\n\tgetHitSpan: function(hit) {\n\t\treturn this.dayGrid.getHitSpan(hit);\n\t},\n\n\n\tgetHitEl: function(hit) {\n\t\treturn this.dayGrid.getHitEl(hit);\n\t},\n\n\n\t/* Events\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders the given events onto the view and populates the segments array\n\trenderEvents: function(events) {\n\t\tthis.dayGrid.renderEvents(events);\n\n\t\tthis.updateHeight(); // must compensate for events that overflow the row\n\t},\n\n\n\t// Retrieves all segment objects that are rendered in the view\n\tgetEventSegs: function() {\n\t\treturn this.dayGrid.getEventSegs();\n\t},\n\n\n\t// Unrenders all event elements and clears internal segment data\n\tunrenderEvents: function() {\n\t\tthis.dayGrid.unrenderEvents();\n\n\t\t// we DON'T need to call updateHeight() because\n\t\t// a renderEvents() call always happens after this, which will eventually call updateHeight()\n\t},\n\n\n\t/* Dragging (for both events and external elements)\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// A returned value of `true` signals that a mock \"helper\" event has been rendered.\n\trenderDrag: function(dropLocation, seg) {\n\t\treturn this.dayGrid.renderDrag(dropLocation, seg);\n\t},\n\n\n\tunrenderDrag: function() {\n\t\tthis.dayGrid.unrenderDrag();\n\t},\n\n\n\t/* Selection\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders a visual indication of a selection\n\trenderSelection: function(span) {\n\t\tthis.dayGrid.renderSelection(span);\n\t},\n\n\n\t// Unrenders a visual indications of a selection\n\tunrenderSelection: function() {\n\t\tthis.dayGrid.unrenderSelection();\n\t}\n\n});\n\n\n// Methods that will customize the rendering behavior of the BasicView's dayGrid\nvar basicDayGridMethods = {\n\n\n\t// Generates the HTML that will go before the day-of week header cells\n\trenderHeadIntroHtml: function() {\n\t\tvar view = this.view;\n\n\t\tif (view.colWeekNumbersVisible) {\n\t\t\treturn '' +\n\t\t\t\t'' +\n\t\t\t\t\t'' + // needed for matchCellWidths\n\t\t\t\t\t\thtmlEscape(view.opt('weekNumberTitle')) +\n\t\t\t\t\t'' +\n\t\t\t\t'';\n\t\t}\n\n\t\treturn '';\n\t},\n\n\n\t// Generates the HTML that will go before content-skeleton cells that display the day/week numbers\n\trenderNumberIntroHtml: function(row) {\n\t\tvar view = this.view;\n\t\tvar weekStart = this.getCellDate(row, 0);\n\n\t\tif (view.colWeekNumbersVisible) {\n\t\t\treturn '' +\n\t\t\t\t'' +\n\t\t\t\t\tview.buildGotoAnchorHtml( // aside from link, important for matchCellWidths\n\t\t\t\t\t\t{ date: weekStart, type: 'week', forceOff: this.colCnt === 1 },\n\t\t\t\t\t\tweekStart.format('w') // inner HTML\n\t\t\t\t\t) +\n\t\t\t\t'';\n\t\t}\n\n\t\treturn '';\n\t},\n\n\n\t// Generates the HTML that goes before the day bg cells for each day-row\n\trenderBgIntroHtml: function() {\n\t\tvar view = this.view;\n\n\t\tif (view.colWeekNumbersVisible) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn '';\n\t},\n\n\n\t// Generates the HTML that goes before every other type of row generated by DayGrid.\n\t// Affects helper-skeleton and highlight-skeleton rows.\n\trenderIntroHtml: function() {\n\t\tvar view = this.view;\n\n\t\tif (view.colWeekNumbersVisible) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn '';\n\t}\n\n};\n\n;;\n\n/* A month view with day cells running in rows (one-per-week) and columns\n----------------------------------------------------------------------------------------------------------------------*/\n\nvar MonthView = FC.MonthView = BasicView.extend({\n\n\t// Produces information about what range to display\n\tcomputeRange: function(date) {\n\t\tvar range = BasicView.prototype.computeRange.call(this, date); // get value from super-method\n\t\tvar rowCnt;\n\n\t\t// ensure 6 weeks\n\t\tif (this.isFixedWeeks()) {\n\t\t\trowCnt = Math.ceil(range.end.diff(range.start, 'weeks', true)); // could be partial weeks due to hiddenDays\n\t\t\trange.end.add(6 - rowCnt, 'weeks');\n\t\t}\n\n\t\treturn range;\n\t},\n\n\n\t// Overrides the default BasicView behavior to have special multi-week auto-height logic\n\tsetGridHeight: function(height, isAuto) {\n\n\t\t// if auto, make the height of each row the height that it would be if there were 6 weeks\n\t\tif (isAuto) {\n\t\t\theight *= this.rowCnt / 6;\n\t\t}\n\n\t\tdistributeHeight(this.dayGrid.rowEls, height, !isAuto); // if auto, don't compensate for height-hogging rows\n\t},\n\n\n\tisFixedWeeks: function() {\n\t\treturn this.opt('fixedWeekCount');\n\t}\n\n});\n\n;;\n\nfcViews.basic = {\n\t'class': BasicView\n};\n\nfcViews.basicDay = {\n\ttype: 'basic',\n\tduration: { days: 1 }\n};\n\nfcViews.basicWeek = {\n\ttype: 'basic',\n\tduration: { weeks: 1 }\n};\n\nfcViews.month = {\n\t'class': MonthView,\n\tduration: { months: 1 }, // important for prev/next\n\tdefaults: {\n\t\tfixedWeekCount: true\n\t}\n};\n;;\n\n/* An abstract class for all agenda-related views. Displays one more columns with time slots running vertically.\n----------------------------------------------------------------------------------------------------------------------*/\n// Is a manager for the TimeGrid subcomponent and possibly the DayGrid subcomponent (if allDaySlot is on).\n// Responsible for managing width/height.\n\nvar AgendaView = FC.AgendaView = View.extend({\n\n\tscroller: null,\n\n\ttimeGridClass: TimeGrid, // class used to instantiate the timeGrid. subclasses can override\n\ttimeGrid: null, // the main time-grid subcomponent of this view\n\n\tdayGridClass: DayGrid, // class used to instantiate the dayGrid. subclasses can override\n\tdayGrid: null, // the \"all-day\" subcomponent. if all-day is turned off, this will be null\n\n\taxisWidth: null, // the width of the time axis running down the side\n\n\theadContainerEl: null, // div that hold's the timeGrid's rendered date header\n\tnoScrollRowEls: null, // set of fake row elements that must compensate when scroller has scrollbars\n\n\t// when the time-grid isn't tall enough to occupy the given height, we render an
    underneath\n\tbottomRuleEl: null,\n\n\n\tinitialize: function() {\n\t\tthis.timeGrid = this.instantiateTimeGrid();\n\n\t\tif (this.opt('allDaySlot')) { // should we display the \"all-day\" area?\n\t\t\tthis.dayGrid = this.instantiateDayGrid(); // the all-day subcomponent of this view\n\t\t}\n\n\t\tthis.scroller = new Scroller({\n\t\t\toverflowX: 'hidden',\n\t\t\toverflowY: 'auto'\n\t\t});\n\t},\n\n\n\t// Instantiates the TimeGrid object this view needs. Draws from this.timeGridClass\n\tinstantiateTimeGrid: function() {\n\t\tvar subclass = this.timeGridClass.extend(agendaTimeGridMethods);\n\n\t\treturn new subclass(this);\n\t},\n\n\n\t// Instantiates the DayGrid object this view might need. Draws from this.dayGridClass\n\tinstantiateDayGrid: function() {\n\t\tvar subclass = this.dayGridClass.extend(agendaDayGridMethods);\n\n\t\treturn new subclass(this);\n\t},\n\n\n\t/* Rendering\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Sets the display range and computes all necessary dates\n\tsetRange: function(range) {\n\t\tView.prototype.setRange.call(this, range); // call the super-method\n\n\t\tthis.timeGrid.setRange(range);\n\t\tif (this.dayGrid) {\n\t\t\tthis.dayGrid.setRange(range);\n\t\t}\n\t},\n\n\n\t// Renders the view into `this.el`, which has already been assigned\n\trenderDates: function() {\n\n\t\tthis.el.addClass('fc-agenda-view').html(this.renderSkeletonHtml());\n\t\tthis.renderHead();\n\n\t\tthis.scroller.render();\n\t\tvar timeGridWrapEl = this.scroller.el.addClass('fc-time-grid-container');\n\t\tvar timeGridEl = $('
    ').appendTo(timeGridWrapEl);\n\t\tthis.el.find('.fc-body > tr > td').append(timeGridWrapEl);\n\n\t\tthis.timeGrid.setElement(timeGridEl);\n\t\tthis.timeGrid.renderDates();\n\n\t\t// the
    that sometimes displays under the time-grid\n\t\tthis.bottomRuleEl = $('
    ')\n\t\t\t.appendTo(this.timeGrid.el); // inject it into the time-grid\n\n\t\tif (this.dayGrid) {\n\t\t\tthis.dayGrid.setElement(this.el.find('.fc-day-grid'));\n\t\t\tthis.dayGrid.renderDates();\n\n\t\t\t// have the day-grid extend it's coordinate area over the
    dividing the two grids\n\t\t\tthis.dayGrid.bottomCoordPadding = this.dayGrid.el.next('hr').outerHeight();\n\t\t}\n\n\t\tthis.noScrollRowEls = this.el.find('.fc-row:not(.fc-scroller *)'); // fake rows not within the scroller\n\t},\n\n\n\t// render the day-of-week headers\n\trenderHead: function() {\n\t\tthis.headContainerEl =\n\t\t\tthis.el.find('.fc-head-container')\n\t\t\t\t.html(this.timeGrid.renderHeadHtml());\n\t},\n\n\n\t// Unrenders the content of the view. Since we haven't separated skeleton rendering from date rendering,\n\t// always completely kill each grid's rendering.\n\tunrenderDates: function() {\n\t\tthis.timeGrid.unrenderDates();\n\t\tthis.timeGrid.removeElement();\n\n\t\tif (this.dayGrid) {\n\t\t\tthis.dayGrid.unrenderDates();\n\t\t\tthis.dayGrid.removeElement();\n\t\t}\n\n\t\tthis.scroller.destroy();\n\t},\n\n\n\t// Builds the HTML skeleton for the view.\n\t// The day-grid and time-grid components will render inside containers defined by this HTML.\n\trenderSkeletonHtml: function() {\n\t\treturn '' +\n\t\t\t'' +\n\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t'' +\n\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t\t\t'' +\n\t\t\t\t\t'' +\n\t\t\t\t'' +\n\t\t\t'
    ' +\n\t\t\t\t\t\t\t(this.dayGrid ?\n\t\t\t\t\t\t\t\t'
    ' +\n\t\t\t\t\t\t\t\t'
    ' :\n\t\t\t\t\t\t\t\t''\n\t\t\t\t\t\t\t\t) +\n\t\t\t\t\t\t'
    ';\n\t},\n\n\n\t// Generates an HTML attribute string for setting the width of the axis, if it is known\n\taxisStyleAttr: function() {\n\t\tif (this.axisWidth !== null) {\n\t\t\t return 'style=\"width:' + this.axisWidth + 'px\"';\n\t\t}\n\t\treturn '';\n\t},\n\n\n\t/* Business Hours\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\trenderBusinessHours: function() {\n\t\tthis.timeGrid.renderBusinessHours();\n\n\t\tif (this.dayGrid) {\n\t\t\tthis.dayGrid.renderBusinessHours();\n\t\t}\n\t},\n\n\n\tunrenderBusinessHours: function() {\n\t\tthis.timeGrid.unrenderBusinessHours();\n\n\t\tif (this.dayGrid) {\n\t\t\tthis.dayGrid.unrenderBusinessHours();\n\t\t}\n\t},\n\n\n\t/* Now Indicator\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\tgetNowIndicatorUnit: function() {\n\t\treturn this.timeGrid.getNowIndicatorUnit();\n\t},\n\n\n\trenderNowIndicator: function(date) {\n\t\tthis.timeGrid.renderNowIndicator(date);\n\t},\n\n\n\tunrenderNowIndicator: function() {\n\t\tthis.timeGrid.unrenderNowIndicator();\n\t},\n\n\n\t/* Dimensions\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\tupdateSize: function(isResize) {\n\t\tthis.timeGrid.updateSize(isResize);\n\n\t\tView.prototype.updateSize.call(this, isResize); // call the super-method\n\t},\n\n\n\t// Refreshes the horizontal dimensions of the view\n\tupdateWidth: function() {\n\t\t// make all axis cells line up, and record the width so newly created axis cells will have it\n\t\tthis.axisWidth = matchCellWidths(this.el.find('.fc-axis'));\n\t},\n\n\n\t// Adjusts the vertical dimensions of the view to the specified values\n\tsetHeight: function(totalHeight, isAuto) {\n\t\tvar eventLimit;\n\t\tvar scrollerHeight;\n\t\tvar scrollbarWidths;\n\n\t\t// reset all dimensions back to the original state\n\t\tthis.bottomRuleEl.hide(); // .show() will be called later if this
    is necessary\n\t\tthis.scroller.clear(); // sets height to 'auto' and clears overflow\n\t\tuncompensateScroll(this.noScrollRowEls);\n\n\t\t// limit number of events in the all-day area\n\t\tif (this.dayGrid) {\n\t\t\tthis.dayGrid.removeSegPopover(); // kill the \"more\" popover if displayed\n\n\t\t\teventLimit = this.opt('eventLimit');\n\t\t\tif (eventLimit && typeof eventLimit !== 'number') {\n\t\t\t\teventLimit = AGENDA_ALL_DAY_EVENT_LIMIT; // make sure \"auto\" goes to a real number\n\t\t\t}\n\t\t\tif (eventLimit) {\n\t\t\t\tthis.dayGrid.limitRows(eventLimit);\n\t\t\t}\n\t\t}\n\n\t\tif (!isAuto) { // should we force dimensions of the scroll container?\n\n\t\t\tscrollerHeight = this.computeScrollerHeight(totalHeight);\n\t\t\tthis.scroller.setHeight(scrollerHeight);\n\t\t\tscrollbarWidths = this.scroller.getScrollbarWidths();\n\n\t\t\tif (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars?\n\n\t\t\t\t// make the all-day and header rows lines up\n\t\t\t\tcompensateScroll(this.noScrollRowEls, scrollbarWidths);\n\n\t\t\t\t// the scrollbar compensation might have changed text flow, which might affect height, so recalculate\n\t\t\t\t// and reapply the desired height to the scroller.\n\t\t\t\tscrollerHeight = this.computeScrollerHeight(totalHeight);\n\t\t\t\tthis.scroller.setHeight(scrollerHeight);\n\t\t\t}\n\n\t\t\t// guarantees the same scrollbar widths\n\t\t\tthis.scroller.lockOverflow(scrollbarWidths);\n\n\t\t\t// if there's any space below the slats, show the horizontal rule.\n\t\t\t// this won't cause any new overflow, because lockOverflow already called.\n\t\t\tif (this.timeGrid.getTotalSlatHeight() < scrollerHeight) {\n\t\t\t\tthis.bottomRuleEl.show();\n\t\t\t}\n\t\t}\n\t},\n\n\n\t// given a desired total height of the view, returns what the height of the scroller should be\n\tcomputeScrollerHeight: function(totalHeight) {\n\t\treturn totalHeight -\n\t\t\tsubtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller\n\t},\n\n\n\t/* Scroll\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Computes the initial pre-configured scroll state prior to allowing the user to change it\n\tcomputeInitialScroll: function() {\n\t\tvar scrollTime = moment.duration(this.opt('scrollTime'));\n\t\tvar top = this.timeGrid.computeTimeTop(scrollTime);\n\n\t\t// zoom can give weird floating-point values. rather scroll a little bit further\n\t\ttop = Math.ceil(top);\n\n\t\tif (top) {\n\t\t\ttop++; // to overcome top border that slots beyond the first have. looks better\n\t\t}\n\n\t\treturn { top: top };\n\t},\n\n\n\tqueryScroll: function() {\n\t\treturn { top: this.scroller.getScrollTop() };\n\t},\n\n\n\tsetScroll: function(scroll) {\n\t\tthis.scroller.setScrollTop(scroll.top);\n\t},\n\n\n\t/* Hit Areas\n\t------------------------------------------------------------------------------------------------------------------*/\n\t// forward all hit-related method calls to the grids (dayGrid might not be defined)\n\n\n\thitsNeeded: function() {\n\t\tthis.timeGrid.hitsNeeded();\n\t\tif (this.dayGrid) {\n\t\t\tthis.dayGrid.hitsNeeded();\n\t\t}\n\t},\n\n\n\thitsNotNeeded: function() {\n\t\tthis.timeGrid.hitsNotNeeded();\n\t\tif (this.dayGrid) {\n\t\t\tthis.dayGrid.hitsNotNeeded();\n\t\t}\n\t},\n\n\n\tprepareHits: function() {\n\t\tthis.timeGrid.prepareHits();\n\t\tif (this.dayGrid) {\n\t\t\tthis.dayGrid.prepareHits();\n\t\t}\n\t},\n\n\n\treleaseHits: function() {\n\t\tthis.timeGrid.releaseHits();\n\t\tif (this.dayGrid) {\n\t\t\tthis.dayGrid.releaseHits();\n\t\t}\n\t},\n\n\n\tqueryHit: function(left, top) {\n\t\tvar hit = this.timeGrid.queryHit(left, top);\n\n\t\tif (!hit && this.dayGrid) {\n\t\t\thit = this.dayGrid.queryHit(left, top);\n\t\t}\n\n\t\treturn hit;\n\t},\n\n\n\tgetHitSpan: function(hit) {\n\t\t// TODO: hit.component is set as a hack to identify where the hit came from\n\t\treturn hit.component.getHitSpan(hit);\n\t},\n\n\n\tgetHitEl: function(hit) {\n\t\t// TODO: hit.component is set as a hack to identify where the hit came from\n\t\treturn hit.component.getHitEl(hit);\n\t},\n\n\n\t/* Events\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders events onto the view and populates the View's segment array\n\trenderEvents: function(events) {\n\t\tvar dayEvents = [];\n\t\tvar timedEvents = [];\n\t\tvar daySegs = [];\n\t\tvar timedSegs;\n\t\tvar i;\n\n\t\t// separate the events into all-day and timed\n\t\tfor (i = 0; i < events.length; i++) {\n\t\t\tif (events[i].allDay) {\n\t\t\t\tdayEvents.push(events[i]);\n\t\t\t}\n\t\t\telse {\n\t\t\t\ttimedEvents.push(events[i]);\n\t\t\t}\n\t\t}\n\n\t\t// render the events in the subcomponents\n\t\ttimedSegs = this.timeGrid.renderEvents(timedEvents);\n\t\tif (this.dayGrid) {\n\t\t\tdaySegs = this.dayGrid.renderEvents(dayEvents);\n\t\t}\n\n\t\t// the all-day area is flexible and might have a lot of events, so shift the height\n\t\tthis.updateHeight();\n\t},\n\n\n\t// Retrieves all segment objects that are rendered in the view\n\tgetEventSegs: function() {\n\t\treturn this.timeGrid.getEventSegs().concat(\n\t\t\tthis.dayGrid ? this.dayGrid.getEventSegs() : []\n\t\t);\n\t},\n\n\n\t// Unrenders all event elements and clears internal segment data\n\tunrenderEvents: function() {\n\n\t\t// unrender the events in the subcomponents\n\t\tthis.timeGrid.unrenderEvents();\n\t\tif (this.dayGrid) {\n\t\t\tthis.dayGrid.unrenderEvents();\n\t\t}\n\n\t\t// we DON'T need to call updateHeight() because\n\t\t// a renderEvents() call always happens after this, which will eventually call updateHeight()\n\t},\n\n\n\t/* Dragging (for events and external elements)\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// A returned value of `true` signals that a mock \"helper\" event has been rendered.\n\trenderDrag: function(dropLocation, seg) {\n\t\tif (dropLocation.start.hasTime()) {\n\t\t\treturn this.timeGrid.renderDrag(dropLocation, seg);\n\t\t}\n\t\telse if (this.dayGrid) {\n\t\t\treturn this.dayGrid.renderDrag(dropLocation, seg);\n\t\t}\n\t},\n\n\n\tunrenderDrag: function() {\n\t\tthis.timeGrid.unrenderDrag();\n\t\tif (this.dayGrid) {\n\t\t\tthis.dayGrid.unrenderDrag();\n\t\t}\n\t},\n\n\n\t/* Selection\n\t------------------------------------------------------------------------------------------------------------------*/\n\n\n\t// Renders a visual indication of a selection\n\trenderSelection: function(span) {\n\t\tif (span.start.hasTime() || span.end.hasTime()) {\n\t\t\tthis.timeGrid.renderSelection(span);\n\t\t}\n\t\telse if (this.dayGrid) {\n\t\t\tthis.dayGrid.renderSelection(span);\n\t\t}\n\t},\n\n\n\t// Unrenders a visual indications of a selection\n\tunrenderSelection: function() {\n\t\tthis.timeGrid.unrenderSelection();\n\t\tif (this.dayGrid) {\n\t\t\tthis.dayGrid.unrenderSelection();\n\t\t}\n\t}\n\n});\n\n\n// Methods that will customize the rendering behavior of the AgendaView's timeGrid\n// TODO: move into TimeGrid\nvar agendaTimeGridMethods = {\n\n\n\t// Generates the HTML that will go before the day-of week header cells\n\trenderHeadIntroHtml: function() {\n\t\tvar view = this.view;\n\t\tvar weekText;\n\n\t\tif (view.opt('weekNumbers')) {\n\t\t\tweekText = this.start.format(view.opt('smallWeekFormat'));\n\n\t\t\treturn '' +\n\t\t\t\t'' +\n\t\t\t\t\tview.buildGotoAnchorHtml( // aside from link, important for matchCellWidths\n\t\t\t\t\t\t{ date: this.start, type: 'week', forceOff: this.colCnt > 1 },\n\t\t\t\t\t\thtmlEscape(weekText) // inner HTML\n\t\t\t\t\t) +\n\t\t\t\t'';\n\t\t}\n\t\telse {\n\t\t\treturn '';\n\t\t}\n\t},\n\n\n\t// Generates the HTML that goes before the bg of the TimeGrid slot area. Long vertical column.\n\trenderBgIntroHtml: function() {\n\t\tvar view = this.view;\n\n\t\treturn '';\n\t},\n\n\n\t// Generates the HTML that goes before all other types of cells.\n\t// Affects content-skeleton, helper-skeleton, highlight-skeleton for both the time-grid and day-grid.\n\trenderIntroHtml: function() {\n\t\tvar view = this.view;\n\n\t\treturn '';\n\t}\n\n};\n\n\n// Methods that will customize the rendering behavior of the AgendaView's dayGrid\nvar agendaDayGridMethods = {\n\n\n\t// Generates the HTML that goes before the all-day cells\n\trenderBgIntroHtml: function() {\n\t\tvar view = this.view;\n\n\t\treturn '' +\n\t\t\t'' +\n\t\t\t\t'' + // needed for matchCellWidths\n\t\t\t\t\tview.getAllDayHtml() +\n\t\t\t\t'' +\n\t\t\t'';\n\t},\n\n\n\t// Generates the HTML that goes before all other types of cells.\n\t// Affects content-skeleton, helper-skeleton, highlight-skeleton for both the time-grid and day-grid.\n\trenderIntroHtml: function() {\n\t\tvar view = this.view;\n\n\t\treturn '';\n\t}\n\n};\n\n;;\n\nvar AGENDA_ALL_DAY_EVENT_LIMIT = 5;\n\n// potential nice values for the slot-duration and interval-duration\n// from largest to smallest\nvar AGENDA_STOCK_SUB_DURATIONS = [\n\t{ hours: 1 },\n\t{ minutes: 30 },\n\t{ minutes: 15 },\n\t{ seconds: 30 },\n\t{ seconds: 15 }\n];\n\nfcViews.agenda = {\n\t'class': AgendaView,\n\tdefaults: {\n\t\tallDaySlot: true,\n\t\tslotDuration: '00:30:00',\n\t\tminTime: '00:00:00',\n\t\tmaxTime: '24:00:00',\n\t\tslotEventOverlap: true // a bad name. confused with overlap/constraint system\n\t}\n};\n\nfcViews.agendaDay = {\n\ttype: 'agenda',\n\tduration: { days: 1 }\n};\n\nfcViews.agendaWeek = {\n\ttype: 'agenda',\n\tduration: { weeks: 1 }\n};\n;;\n\n/*\nResponsible for the scroller, and forwarding event-related actions into the \"grid\"\n*/\nvar ListView = View.extend({\n\n\tgrid: null,\n\tscroller: null,\n\n\tinitialize: function() {\n\t\tthis.grid = new ListViewGrid(this);\n\t\tthis.scroller = new Scroller({\n\t\t\toverflowX: 'hidden',\n\t\t\toverflowY: 'auto'\n\t\t});\n\t},\n\n\tsetRange: function(range) {\n\t\tView.prototype.setRange.call(this, range); // super\n\n\t\tthis.grid.setRange(range); // needs to process range-related options\n\t},\n\n\trenderSkeleton: function() {\n\t\tthis.el.addClass(\n\t\t\t'fc-list-view ' +\n\t\t\tthis.widgetContentClass\n\t\t);\n\n\t\tthis.scroller.render();\n\t\tthis.scroller.el.appendTo(this.el);\n\n\t\tthis.grid.setElement(this.scroller.scrollEl);\n\t},\n\n\tunrenderSkeleton: function() {\n\t\tthis.scroller.destroy(); // will remove the Grid too\n\t},\n\n\tsetHeight: function(totalHeight, isAuto) {\n\t\tthis.scroller.setHeight(this.computeScrollerHeight(totalHeight));\n\t},\n\n\tcomputeScrollerHeight: function(totalHeight) {\n\t\treturn totalHeight -\n\t\t\tsubtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller\n\t},\n\n\trenderEvents: function(events) {\n\t\tthis.grid.renderEvents(events);\n\t},\n\n\tunrenderEvents: function() {\n\t\tthis.grid.unrenderEvents();\n\t},\n\n\tisEventResizable: function(event) {\n\t\treturn false;\n\t},\n\n\tisEventDraggable: function(event) {\n\t\treturn false;\n\t}\n\n});\n\n/*\nResponsible for event rendering and user-interaction.\nIts \"el\" is the inner-content of the above view's scroller.\n*/\nvar ListViewGrid = Grid.extend({\n\n\tsegSelector: '.fc-list-item', // which elements accept event actions\n\thasDayInteractions: false, // no day selection or day clicking\n\n\t// slices by day\n\tspanToSegs: function(span) {\n\t\tvar view = this.view;\n\t\tvar dayStart = view.start.clone().time(0); // timed, so segs get times!\n\t\tvar dayIndex = 0;\n\t\tvar seg;\n\t\tvar segs = [];\n\n\t\twhile (dayStart < view.end) {\n\n\t\t\tseg = intersectRanges(span, {\n\t\t\t\tstart: dayStart,\n\t\t\t\tend: dayStart.clone().add(1, 'day')\n\t\t\t});\n\n\t\t\tif (seg) {\n\t\t\t\tseg.dayIndex = dayIndex;\n\t\t\t\tsegs.push(seg);\n\t\t\t}\n\n\t\t\tdayStart.add(1, 'day');\n\t\t\tdayIndex++;\n\n\t\t\t// detect when span won't go fully into the next day,\n\t\t\t// and mutate the latest seg to the be the end.\n\t\t\tif (\n\t\t\t\tseg && !seg.isEnd && span.end.hasTime() &&\n\t\t\t\tspan.end < dayStart.clone().add(this.view.nextDayThreshold)\n\t\t\t) {\n\t\t\t\tseg.end = span.end.clone();\n\t\t\t\tseg.isEnd = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn segs;\n\t},\n\n\t// like \"4:00am\"\n\tcomputeEventTimeFormat: function() {\n\t\treturn this.view.opt('mediumTimeFormat');\n\t},\n\n\t// for events with a url, the whole should be clickable,\n\t// but it's impossible to wrap with an tag. simulate this.\n\thandleSegClick: function(seg, ev) {\n\t\tvar url;\n\n\t\tGrid.prototype.handleSegClick.apply(this, arguments); // super. might prevent the default action\n\n\t\t// not clicking on or within an with an href\n\t\tif (!$(ev.target).closest('a[href]').length) {\n\t\t\turl = seg.event.url;\n\t\t\tif (url && !ev.isDefaultPrevented()) { // jsEvent not cancelled in handler\n\t\t\t\twindow.location.href = url; // simulate link click\n\t\t\t}\n\t\t}\n\t},\n\n\t// returns list of foreground segs that were actually rendered\n\trenderFgSegs: function(segs) {\n\t\tsegs = this.renderFgSegEls(segs); // might filter away hidden events\n\n\t\tif (!segs.length) {\n\t\t\tthis.renderEmptyMessage();\n\t\t}\n\t\telse {\n\t\t\tthis.renderSegList(segs);\n\t\t}\n\n\t\treturn segs;\n\t},\n\n\trenderEmptyMessage: function() {\n\t\tthis.el.html(\n\t\t\t'
    ' + // TODO: try less wraps\n\t\t\t'
    ' +\n\t\t\t'
    ' +\n\t\t\t\thtmlEscape(this.view.opt('noEventsMessage')) +\n\t\t\t'
    ' +\n\t\t\t'
    ' +\n\t\t\t'
    '\n\t\t);\n\t},\n\n\t// render the event segments in the view\n\trenderSegList: function(allSegs) {\n\t\tvar segsByDay = this.groupSegsByDay(allSegs); // sparse array\n\t\tvar dayIndex;\n\t\tvar daySegs;\n\t\tvar i;\n\t\tvar tableEl = $('
    ');\n\t\tvar tbodyEl = tableEl.find('tbody');\n\n\t\tfor (dayIndex = 0; dayIndex < segsByDay.length; dayIndex++) {\n\t\t\tdaySegs = segsByDay[dayIndex];\n\t\t\tif (daySegs) { // sparse array, so might be undefined\n\n\t\t\t\t// append a day header\n\t\t\t\ttbodyEl.append(this.dayHeaderHtml(\n\t\t\t\t\tthis.view.start.clone().add(dayIndex, 'days')\n\t\t\t\t));\n\n\t\t\t\tthis.sortEventSegs(daySegs);\n\n\t\t\t\tfor (i = 0; i < daySegs.length; i++) {\n\t\t\t\t\ttbodyEl.append(daySegs[i].el); // append event row\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.el.empty().append(tableEl);\n\t},\n\n\t// Returns a sparse array of arrays, segs grouped by their dayIndex\n\tgroupSegsByDay: function(segs) {\n\t\tvar segsByDay = []; // sparse array\n\t\tvar i, seg;\n\n\t\tfor (i = 0; i < segs.length; i++) {\n\t\t\tseg = segs[i];\n\t\t\t(segsByDay[seg.dayIndex] || (segsByDay[seg.dayIndex] = []))\n\t\t\t\t.push(seg);\n\t\t}\n\n\t\treturn segsByDay;\n\t},\n\n\t// generates the HTML for the day headers that live amongst the event rows\n\tdayHeaderHtml: function(dayDate) {\n\t\tvar view = this.view;\n\t\tvar mainFormat = view.opt('listDayFormat');\n\t\tvar altFormat = view.opt('listDayAltFormat');\n\n\t\treturn '' +\n\t\t\t'' +\n\t\t\t\t(mainFormat ?\n\t\t\t\t\tview.buildGotoAnchorHtml(\n\t\t\t\t\t\tdayDate,\n\t\t\t\t\t\t{ 'class': 'fc-list-heading-main' },\n\t\t\t\t\t\thtmlEscape(dayDate.format(mainFormat)) // inner HTML\n\t\t\t\t\t) :\n\t\t\t\t\t'') +\n\t\t\t\t(altFormat ?\n\t\t\t\t\tview.buildGotoAnchorHtml(\n\t\t\t\t\t\tdayDate,\n\t\t\t\t\t\t{ 'class': 'fc-list-heading-alt' },\n\t\t\t\t\t\thtmlEscape(dayDate.format(altFormat)) // inner HTML\n\t\t\t\t\t) :\n\t\t\t\t\t'') +\n\t\t\t'' +\n\t\t'';\n\t},\n\n\t// generates the HTML for a single event row\n\tfgSegHtml: function(seg) {\n\t\tvar view = this.view;\n\t\tvar classes = [ 'fc-list-item' ].concat(this.getSegCustomClasses(seg));\n\t\tvar bgColor = this.getSegBackgroundColor(seg);\n\t\tvar event = seg.event;\n\t\tvar url = event.url;\n\t\tvar timeHtml;\n\n\t\tif (event.allDay) {\n\t\t\ttimeHtml = view.getAllDayHtml();\n\t\t}\n\t\telse if (view.isMultiDayEvent(event)) { // if the event appears to span more than one day\n\t\t\tif (seg.isStart || seg.isEnd) { // outer segment that probably lasts part of the day\n\t\t\t\ttimeHtml = htmlEscape(this.getEventTimeText(seg));\n\t\t\t}\n\t\t\telse { // inner segment that lasts the whole day\n\t\t\t\ttimeHtml = view.getAllDayHtml();\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// Display the normal time text for the *event's* times\n\t\t\ttimeHtml = htmlEscape(this.getEventTimeText(event));\n\t\t}\n\n\t\tif (url) {\n\t\t\tclasses.push('fc-has-url');\n\t\t}\n\n\t\treturn '' +\n\t\t\t(this.displayEventTime ?\n\t\t\t\t'' +\n\t\t\t\t\t(timeHtml || '') +\n\t\t\t\t'' :\n\t\t\t\t'') +\n\t\t\t'' +\n\t\t\t\t'' +\n\t\t\t'' +\n\t\t\t'' +\n\t\t\t\t'' +\n\t\t\t\t\thtmlEscape(seg.event.title || '') +\n\t\t\t\t'
    ' +\n\t\t\t'' +\n\t\t'';\n\t}\n\n});\n\n;;\n\nfcViews.list = {\n\t'class': ListView,\n\tbuttonTextKey: 'list', // what to lookup in locale files\n\tdefaults: {\n\t\tbuttonText: 'list', // text to display for English\n\t\tlistDayFormat: 'LL', // like \"January 1, 2016\"\n\t\tnoEventsMessage: 'No events to display'\n\t}\n};\n\nfcViews.listDay = {\n\ttype: 'list',\n\tduration: { days: 1 },\n\tdefaults: {\n\t\tlistDayFormat: 'dddd' // day-of-week is all we need. full date is probably in header\n\t}\n};\n\nfcViews.listWeek = {\n\ttype: 'list',\n\tduration: { weeks: 1 },\n\tdefaults: {\n\t\tlistDayFormat: 'dddd', // day-of-week is more important\n\t\tlistDayAltFormat: 'LL'\n\t}\n};\n\nfcViews.listMonth = {\n\ttype: 'list',\n\tduration: { month: 1 },\n\tdefaults: {\n\t\tlistDayAltFormat: 'dddd' // day-of-week is nice-to-have\n\t}\n};\n\nfcViews.listYear = {\n\ttype: 'list',\n\tduration: { year: 1 },\n\tdefaults: {\n\t\tlistDayAltFormat: 'dddd' // day-of-week is nice-to-have\n\t}\n};\n\n;;\n\r\nreturn FC; // export for Node/CommonJS\r\n});","/*!\n * jQuery Validation Plugin v1.13.0\n *\n * http://jqueryvalidation.org/\n *\n * Copyright (c) 2014 Jörn Zaefferer\n * Released under the MIT license\n */\n(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\"], factory );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n$.extend($.fn, {\n\t// http://jqueryvalidation.org/validate/\n\tvalidate: function( options ) {\n\n\t\t// if nothing is selected, return nothing; can't chain anyway\n\t\tif ( !this.length ) {\n\t\t\tif ( options && options.debug && window.console ) {\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// check if a validator for this form was already created\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\n\n\t\tvalidator = new $.validator( options, this[ 0 ] );\n\t\t$.data( this[ 0 ], \"validator\", validator );\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.validateDelegate( \":submit\", \"click\", function( event ) {\n\t\t\t\tif ( validator.settings.submitHandler ) {\n\t\t\t\t\tvalidator.submitButton = event.target;\n\t\t\t\t}\n\t\t\t\t// allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $( event.target ).hasClass( \"cancel\" ) ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\n\t\t\t\t// allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n\t\t\t\tif ( $( event.target ).attr( \"formnovalidate\" ) !== undefined ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// validate the form on submit\n\t\t\tthis.submit( function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\t\t\t\t\t// prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden;\n\t\t\t\t\tif ( validator.settings.submitHandler ) {\n\t\t\t\t\t\tif ( validator.submitButton ) {\n\t\t\t\t\t\t\t// insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t\t\thidden = $( \"\" )\n\t\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\n\t\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\n\t\t\t\t\t\t\t\t.appendTo( validator.currentForm );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalidator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif ( validator.submitButton ) {\n\t\t\t\t\t\t\t// and clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn validator;\n\t},\n\t// http://jqueryvalidation.org/valid/\n\tvalid: function() {\n\t\tvar valid, validator;\n\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\n\t\t\tvalid = this.validate().form();\n\t\t} else {\n\t\t\tvalid = true;\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\n\t\t\tthis.each( function() {\n\t\t\t\tvalid = validator.element( this ) && valid;\n\t\t\t});\n\t\t}\n\t\treturn valid;\n\t},\n\t// attributes: space separated list of attributes to retrieve and remove\n\tremoveAttrs: function( attributes ) {\n\t\tvar result = {},\n\t\t\t$element = this;\n\t\t$.each( attributes.split( /\\s/ ), function( index, value ) {\n\t\t\tresult[ value ] = $element.attr( value );\n\t\t\t$element.removeAttr( value );\n\t\t});\n\t\treturn result;\n\t},\n\t// http://jqueryvalidation.org/rules/\n\trules: function( command, argument ) {\n\t\tvar element = this[ 0 ],\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\n\n\t\tif ( command ) {\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\n\t\t\tstaticRules = settings.rules;\n\t\t\texistingRules = $.validator.staticRules( element );\n\t\t\tswitch ( command ) {\n\t\t\tcase \"add\":\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\n\t\t\t\t// remove messages from rules, but allow them to be set separately\n\t\t\t\tdelete existingRules.messages;\n\t\t\t\tstaticRules[ element.name ] = existingRules;\n\t\t\t\tif ( argument.messages ) {\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"remove\":\n\t\t\t\tif ( !argument ) {\n\t\t\t\t\tdelete staticRules[ element.name ];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tfiltered = {};\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\n\t\t\t\t\tdelete existingRules[ method ];\n\t\t\t\t\tif ( method === \"required\" ) {\n\t\t\t\t\t\t$( element ).removeAttr( \"aria-required\" );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tdata = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.classRules( element ),\n\t\t\t$.validator.attributeRules( element ),\n\t\t\t$.validator.dataRules( element ),\n\t\t\t$.validator.staticRules( element )\n\t\t), element );\n\n\t\t// make sure required is at front\n\t\tif ( data.required ) {\n\t\t\tparam = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend( { required: param }, data );\n\t\t\t$( element ).attr( \"aria-required\", \"true\" );\n\t\t}\n\n\t\t// make sure remote is at back\n\t\tif ( data.remote ) {\n\t\t\tparam = data.remote;\n\t\t\tdelete data.remote;\n\t\t\tdata = $.extend( data, { remote: param });\n\t\t}\n\n\t\treturn data;\n\t}\n});\n\n// Custom selectors\n$.extend( $.expr[ \":\" ], {\n\t// http://jqueryvalidation.org/blank-selector/\n\tblank: function( a ) {\n\t\treturn !$.trim( \"\" + $( a ).val() );\n\t},\n\t// http://jqueryvalidation.org/filled-selector/\n\tfilled: function( a ) {\n\t\treturn !!$.trim( \"\" + $( a ).val() );\n\t},\n\t// http://jqueryvalidation.org/unchecked-selector/\n\tunchecked: function( a ) {\n\t\treturn !$( a ).prop( \"checked\" );\n\t}\n});\n\n// constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n// http://jqueryvalidation.org/jQuery.validator.format/\n$.validator.format = function( source, params ) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray( arguments );\n\t\t\targs.unshift( source );\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array ) {\n\t\tparams = $.makeArray( arguments ).slice( 1 );\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each( params, function( i, n ) {\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\n\t\t\treturn n;\n\t\t});\n\t});\n\treturn source;\n};\n\n$.extend( $.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: \"error\",\n\t\tvalidClass: \"valid\",\n\t\terrorElement: \"label\",\n\t\tfocusInvalid: true,\n\t\terrorContainer: $( [] ),\n\t\terrorLabelContainer: $( [] ),\n\t\tonsubmit: true,\n\t\tignore: \":hidden\",\n\t\tignoreTitle: false,\n\t\tonfocusin: function( element ) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup && !this.blockFocusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\n\t\t\t}\n\t\t},\n\t\tonfocusout: function( element ) {\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonkeyup: function( element, event ) {\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element === this.lastElement ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonclick: function( element ) {\n\t\t\t// click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element( element );\n\n\t\t\t// or option elements, check parent select in that case\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\n\t\t\t\tthis.element( element.parentNode );\n\t\t\t}\n\t\t},\n\t\thighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\n\t\t\t}\n\t\t},\n\t\tunhighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\n\t\t\t}\n\t\t}\n\t},\n\n\t// http://jqueryvalidation.org/jQuery.validator.setDefaults/\n\tsetDefaults: function( settings ) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: \"This field is required.\",\n\t\tremote: \"Please fix this field.\",\n\t\temail: \"Please enter a valid email address.\",\n\t\turl: \"Please enter a valid URL.\",\n\t\tdate: \"Please enter a valid date.\",\n\t\tdateISO: \"Please enter a valid date ( ISO ).\",\n\t\tnumber: \"Please enter a valid number.\",\n\t\tdigits: \"Please enter only digits.\",\n\t\tcreditcard: \"Please enter a valid credit card number.\",\n\t\tequalTo: \"Please enter the same value again.\",\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" )\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar groups = ( this.groups = {} ),\n\t\t\t\trules;\n\t\t\t$.each( this.settings.groups, function( key, value ) {\n\t\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t\tvalue = value.split( /\\s/ );\n\t\t\t\t}\n\t\t\t\t$.each( value, function( index, name ) {\n\t\t\t\t\tgroups[ name ] = key;\n\t\t\t\t});\n\t\t\t});\n\t\t\trules = this.settings.rules;\n\t\t\t$.each( rules, function( key, value ) {\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\n\t\t\t});\n\n\t\t\tfunction delegate( event ) {\n\t\t\t\tvar validator = $.data( this[ 0 ].form, \"validator\" ),\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\n\t\t\t\t\tsettings = validator.settings;\n\t\t\t\tif ( settings[ eventType ] && !this.is( settings.ignore ) ) {\n\t\t\t\t\tsettings[ eventType ].call( validator, this[ 0 ], event );\n\t\t\t\t}\n\t\t\t}\n\t\t\t$( this.currentForm )\n\t\t\t\t.validateDelegate( \":text, [type='password'], [type='file'], select, textarea, \" +\n\t\t\t\t\t\"[type='number'], [type='search'] ,[type='tel'], [type='url'], \" +\n\t\t\t\t\t\"[type='email'], [type='datetime'], [type='date'], [type='month'], \" +\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], \" +\n\t\t\t\t\t\"[type='range'], [type='color'], [type='radio'], [type='checkbox']\",\n\t\t\t\t\t\"focusin focusout keyup\", delegate)\n\t\t\t\t// Support: Chrome, oldIE\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\n\t\t\t\t.validateDelegate(\"select, option, [type='radio'], [type='checkbox']\", \"click\", delegate);\n\n\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t$( this.currentForm ).bind( \"invalid-form.validate\", this.settings.invalidHandler );\n\t\t\t}\n\n\t\t\t// Add aria-required to any Static/Data/Class required fields before first validation\n\t\t\t// Screen readers require this attribute to be present before the initial submission http://www.w3.org/TR/WCAG-TECHS/ARIA2.html\n\t\t\t$( this.currentForm ).find( \"[required], [data-rule-required], .required\" ).attr( \"aria-required\", \"true\" );\n\t\t},\n\n\t\t// http://jqueryvalidation.org/Validator.form/\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend( this.submitted, this.errorMap );\n\t\t\tthis.invalid = $.extend({}, this.errorMap );\n\t\t\tif ( !this.valid() ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ]);\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\n\t\t\t\tthis.check( elements[ i ] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// http://jqueryvalidation.org/Validator.element/\n\t\telement: function( element ) {\n\t\t\tvar cleanElement = this.clean( element ),\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\n\t\t\t\tresult = true;\n\n\t\t\tthis.lastElement = checkElement;\n\n\t\t\tif ( checkElement === undefined ) {\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\n\t\t\t} else {\n\t\t\t\tthis.prepareElement( checkElement );\n\t\t\t\tthis.currentElements = $( checkElement );\n\n\t\t\t\tresult = this.check( checkElement ) !== false;\n\t\t\t\tif ( result ) {\n\t\t\t\t\tdelete this.invalid[ checkElement.name ];\n\t\t\t\t} else {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Add aria-invalid status for screen readers\n\t\t\t$( element ).attr( \"aria-invalid\", !result );\n\n\t\t\tif ( !this.numberOfInvalids() ) {\n\t\t\t\t// Hide error containers on last error\n\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn result;\n\t\t},\n\n\t\t// http://jqueryvalidation.org/Validator.showErrors/\n\t\tshowErrors: function( errors ) {\n\t\t\tif ( errors ) {\n\t\t\t\t// add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = [];\n\t\t\t\tfor ( var name in errors ) {\n\t\t\t\t\tthis.errorList.push({\n\t\t\t\t\t\tmessage: errors[ name ],\n\t\t\t\t\t\telement: this.findByName( name )[ 0 ]\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t// remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\n\t\t\t\t\treturn !( element.name in errors );\n\t\t\t\t});\n\t\t\t}\n\t\t\tif ( this.settings.showErrors ) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// http://jqueryvalidation.org/Validator.resetForm/\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$( this.currentForm ).resetForm();\n\t\t\t}\n\t\t\tthis.submitted = {};\n\t\t\tthis.lastElement = null;\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tthis.elements()\n\t\t\t\t\t.removeClass( this.settings.errorClass )\n\t\t\t\t\t.removeData( \"previousValue\" )\n\t\t\t\t\t.removeAttr( \"aria-invalid\" );\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength( this.invalid );\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\t/* jshint unused: false */\n\t\t\tvar count = 0,\n\t\t\t\ti;\n\t\t\tfor ( i in obj ) {\n\t\t\t\tcount++;\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.hideThese( this.toHide );\n\t\t},\n\n\t\thideThese: function( errors ) {\n\t\t\terrors.not( this.containers ).text( \"\" );\n\t\t\tthis.addWrapper( errors ).hide();\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif ( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [])\n\t\t\t\t\t.filter( \":visible\" )\n\t\t\t\t\t.focus()\n\t\t\t\t\t// manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t.trigger( \"focusin\" );\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\t// ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t}).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {};\n\n\t\t\t// select all valid inputs inside the form (no submit or reset buttons)\n\t\t\treturn $( this.currentForm )\n\t\t\t.find( \"input, select, textarea\" )\n\t\t\t.not( \":submit, :reset, :image, [disabled]\" )\n\t\t\t.not( this.settings.ignore )\n\t\t\t.filter( function() {\n\t\t\t\tif ( !this.name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\n\t\t\t\t}\n\n\t\t\t\t// select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( this.name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[ this.name ] = true;\n\t\t\t\treturn true;\n\t\t\t});\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $( selector )[ 0 ];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $( [] );\n\t\t\tthis.toHide = $( [] );\n\t\t\tthis.currentElements = $( [] );\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor( element );\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar val,\n\t\t\t\t$element = $( element ),\n\t\t\t\ttype = element.type;\n\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\t\treturn $( \"input[name='\" + element.name + \"']:checked\" ).val();\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\n\t\t\t\treturn element.validity.badInput ? false : $element.val();\n\t\t\t}\n\n\t\t\tval = $element.val();\n\t\t\tif ( typeof val === \"string\" ) {\n\t\t\t\treturn val.replace(/\\r/g, \"\" );\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $( element ).rules(),\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}).length,\n\t\t\t\tdependencyMismatch = false,\n\t\t\t\tval = this.elementValue( element ),\n\t\t\t\tresult, method, rule;\n\n\t\t\tfor ( method in rules ) {\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\n\t\t\t\ttry {\n\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// if a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\n\t\t\t\t\t}\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( dependencyMismatch ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength( rules ) ) {\n\t\t\t\tthis.successList.push( element );\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// return the custom message for the given element and validation method\n\t\t// specified in the element's HTML5 data attribute\n\t\t// return the generic message if present and no method specific message is present\n\t\tcustomDataMessage: function( element, method ) {\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\n\t\t},\n\n\t\t// return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[ name ];\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ]);\n\t\t},\n\n\t\t// return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor ( var i = 0; i < arguments.length; i++) {\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\n\t\t\t\t\treturn arguments[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\tdefaultMessage: function( element, method ) {\n\t\t\treturn this.findDefined(\n\t\t\t\tthis.customMessage( element.name, method ),\n\t\t\t\tthis.customDataMessage( element, method ),\n\t\t\t\t// title is never undefined, so handle empty string as undefined\n\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t$.validator.messages[ method ],\n\t\t\t\t\"Warning: No message defined for \" + element.name + \"\"\n\t\t\t);\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule.method ),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\n\t\t\t} else if ( theregex.test( message ) ) {\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\n\t\t\t}\n\t\t\tthis.errorList.push({\n\t\t\t\tmessage: message,\n\t\t\t\telement: element,\n\t\t\t\tmethod: rule.method\n\t\t\t});\n\n\t\t\tthis.errorMap[ element.name ] = message;\n\t\t\tthis.submitted[ element.name ] = message;\n\t\t},\n\n\t\taddWrapper: function( toToggle ) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements, error;\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\n\t\t\t\terror = this.errorList[ i ];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\t\t\tif ( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\t\t\tif ( this.settings.success ) {\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not( this.invalidElements() );\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $( this.errorList ).map(function() {\n\t\t\t\treturn this.element;\n\t\t\t});\n\t\t},\n\n\t\tshowLabel: function( element, message ) {\n\t\t\tvar place, group, errorID,\n\t\t\t\terror = this.errorsFor( element ),\n\t\t\t\telementID = this.idOrName( element ),\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\n\t\t\tif ( error.length ) {\n\t\t\t\t// refresh error/success class\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\t\t\t\t// replace message on existing label\n\t\t\t\terror.html( message );\n\t\t\t} else {\n\t\t\t\t// create error element\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\n\t\t\t\t\t.addClass( this.settings.errorClass )\n\t\t\t\t\t.html( message || \"\" );\n\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\n\t\t\t\tplace = error;\n\t\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\t\t// make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\n\t\t\t\t}\n\t\t\t\tif ( this.labelContainer.length ) {\n\t\t\t\t\tthis.labelContainer.append( place );\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\n\t\t\t\t\tthis.settings.errorPlacement( place, $( element ) );\n\t\t\t\t} else {\n\t\t\t\t\tplace.insertAfter( element );\n\t\t\t\t}\n\n\t\t\t\t// Link error back to the element\n\t\t\t\tif ( error.is( \"label\" ) ) {\n\t\t\t\t\t// If the error is a label, then associate using 'for'\n\t\t\t\t\terror.attr( \"for\", elementID );\n\t\t\t\t} else if ( error.parents( \"label[for='\" + elementID + \"']\" ).length === 0 ) {\n\t\t\t\t\t// If the element is not a child of an associated label, then it's necessary\n\t\t\t\t\t// to explicitly apply aria-describedby\n\n\t\t\t\t\terrorID = error.attr( \"id\" );\n\t\t\t\t\t// Respect existing non-error aria-describedby\n\t\t\t\t\tif ( !describedBy ) {\n\t\t\t\t\t\tdescribedBy = errorID;\n\t\t\t\t\t} else if ( !describedBy.match( new RegExp( \"\\b\" + errorID + \"\\b\" ) ) ) {\n\t\t\t\t\t\t// Add to end of list if not already present\n\t\t\t\t\t\tdescribedBy += \" \" + errorID;\n\t\t\t\t\t}\n\t\t\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\n\n\t\t\t\t\t// If this element is grouped, then assign to all elements in the same group\n\t\t\t\t\tgroup = this.groups[ element.name ];\n\t\t\t\t\tif ( group ) {\n\t\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\n\t\t\t\t\t\t\tif ( testgroup === group ) {\n\t\t\t\t\t\t\t\t$( \"[name='\" + name + \"']\", this.currentForm )\n\t\t\t\t\t\t\t\t\t.attr( \"aria-describedby\", error.attr( \"id\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !message && this.settings.success ) {\n\t\t\t\terror.text( \"\" );\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\terror.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( error, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add( error );\n\t\t},\n\n\t\terrorsFor: function( element ) {\n\t\t\tvar name = this.idOrName( element ),\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\n\t\t\t// aria-describedby should directly reference the error element\n\t\t\tif ( describer ) {\n\t\t\t\tselector = selector + \", #\" + describer.replace( /\\s+/g, \", #\" );\n\t\t\t}\n\t\t\treturn this\n\t\t\t\t.errors()\n\t\t\t\t.filter( selector );\n\t\t},\n\n\t\tidOrName: function( element ) {\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\n\t\t},\n\n\t\tvalidationTargetFor: function( element ) {\n\t\t\t// if radio/checkbox, validate first element in group instead\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\telement = this.findByName( element.name ).not( this.settings.ignore )[ 0 ];\n\t\t\t}\n\t\t\treturn element;\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\treturn $( this.currentForm ).find( \"[name='\" + name + \"']\" );\n\t\t},\n\n\t\tgetLength: function( value, element ) {\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\n\t\t\tcase \"select\":\n\t\t\t\treturn $( \"option:selected\", element ).length;\n\t\t\tcase \"input\":\n\t\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function( param, element ) {\n\t\t\treturn this.dependTypes[typeof param] ? this.dependTypes[typeof param]( param, element ) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t\"boolean\": function( param ) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t\"string\": function( param, element ) {\n\t\t\t\treturn !!$( param, element.form ).length;\n\t\t\t},\n\t\t\t\"function\": function( param, element ) {\n\t\t\t\treturn param( element );\n\t\t\t}\n\t\t},\n\n\t\toptional: function( element ) {\n\t\t\tvar val = this.elementValue( element );\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\n\t\t},\n\n\t\tstartRequest: function( element ) {\n\t\t\tif ( !this.pending[ element.name ] ) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\tthis.pending[ element.name ] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function( element, valid ) {\n\t\t\tthis.pendingRequest--;\n\t\t\t// sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[ element.name ];\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {\n\t\t\t\t$( this.currentForm ).submit();\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if (!valid && this.pendingRequest === 0 && this.formSubmitted ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ]);\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function( element ) {\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, \"remote\" )\n\t\t\t});\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: { required: true },\n\t\temail: { email: true },\n\t\turl: { url: true },\n\t\tdate: { date: true },\n\t\tdateISO: { dateISO: true },\n\t\tnumber: { number: true },\n\t\tdigits: { digits: true },\n\t\tcreditcard: { creditcard: true }\n\t},\n\n\taddClassRules: function( className, rules ) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[ className ] = rules;\n\t\t} else {\n\t\t\t$.extend( this.classRuleSettings, className );\n\t\t}\n\t},\n\n\tclassRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tclasses = $( element ).attr( \"class\" );\n\n\t\tif ( classes ) {\n\t\t\t$.each( classes.split( \" \" ), function() {\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ]);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn rules;\n\t},\n\n\tattributeRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\n\t\t\t// support for in both html5 and older browsers\n\t\t\tif ( method === \"required\" ) {\n\t\t\t\tvalue = element.getAttribute( method );\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\t\t\t\t// force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr( method );\n\t\t\t}\n\n\t\t\t// convert the value to a number for number inputs, and for text for backwards compability\n\t\t\t// allows type=\"date\" and others to be compared as strings\n\t\t\tif ( /min|max/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\n\t\t\t\tvalue = Number( value );\n\t\t\t}\n\n\t\t\tif ( value || value === 0 ) {\n\t\t\t\trules[ method ] = value;\n\t\t\t} else if ( type === method && type !== \"range\" ) {\n\t\t\t\t// exception: the jquery validate 'range' method\n\t\t\t\t// does not test for the html5 'range' type\n\t\t\t\trules[ method ] = true;\n\t\t\t}\n\t\t}\n\n\t\t// maxlength may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tdataRules: function( element ) {\n\t\tvar method, value,\n\t\t\trules = {}, $element = $( element );\n\t\tfor ( method in $.validator.methods ) {\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\n\t\t\tif ( value !== undefined ) {\n\t\t\t\trules[ method ] = value;\n\t\t\t}\n\t\t}\n\t\treturn rules;\n\t},\n\n\tstaticRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tvalidator = $.data( element.form, \"validator\" );\n\n\t\tif ( validator.settings.rules ) {\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function( rules, element ) {\n\t\t// handle dependency check\n\t\t$.each( rules, function( prop, val ) {\n\t\t\t// ignore rule when param is explicitly false, eg. required:false\n\t\t\tif ( val === false ) {\n\t\t\t\tdelete rules[ prop ];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( val.param || val.depends ) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch ( typeof val.depends ) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( keepRule ) {\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\tdelete rules[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// evaluate parameters\n\t\t$.each( rules, function( rule, parameter ) {\n\t\t\trules[ rule ] = $.isFunction( parameter ) ? parameter( element ) : parameter;\n\t\t});\n\n\t\t// clean number parameters\n\t\t$.each([ \"minlength\", \"maxlength\" ], function() {\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\trules[ this ] = Number( rules[ this ] );\n\t\t\t}\n\t\t});\n\t\t$.each([ \"rangelength\", \"range\" ], function() {\n\t\t\tvar parts;\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\tif ( $.isArray( rules[ this ] ) ) {\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ]), Number( rules[ this ][ 1 ] ) ];\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\n\t\t\t\t\tparts = rules[ this ].replace(/[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ]), Number( parts[ 1 ] ) ];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif ( $.validator.autoCreateRanges ) {\n\t\t\t// auto-create ranges\n\t\t\tif ( rules.min && rules.max ) {\n\t\t\t\trules.range = [ rules.min, rules.max ];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif ( rules.minlength && rules.maxlength ) {\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\tnormalizeRule: function( data ) {\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each( data.split( /\\s/ ), function() {\n\t\t\t\ttransformed[ this ] = true;\n\t\t\t});\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// http://jqueryvalidation.org/jQuery.validator.addMethod/\n\taddMethod: function( name, method, message ) {\n\t\t$.validator.methods[ name ] = method;\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\n\t\tif ( method.length < 3 ) {\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\n\t\t}\n\t},\n\n\tmethods: {\n\n\t\t// http://jqueryvalidation.org/required-method/\n\t\trequired: function( value, element, param ) {\n\t\t\t// check if dependency is met\n\t\t\tif ( !this.depend( param, element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\t\t\t\t// could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $( element ).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\treturn this.getLength( value, element ) > 0;\n\t\t\t}\n\t\t\treturn $.trim( value ).length > 0;\n\t\t},\n\n\t\t// http://jqueryvalidation.org/email-method/\n\t\temail: function( value, element ) {\n\t\t\t// From http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#e-mail-state-%28type=email%29\n\t\t\t// Retrieved 2014-01-14\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\n\t\t\t// Or use custom methods to implement your own email validation\n\t\t\treturn this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );\n\t\t},\n\n\t\t// http://jqueryvalidation.org/url-method/\n\t\turl: function( value, element ) {\n\t\t\t// contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/\n\t\t\treturn this.optional( element ) || /^(https?|s?ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i.test( value );\n\t\t},\n\n\t\t// http://jqueryvalidation.org/date-method/\n\t\tdate: function( value, element ) {\n\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\n\t\t},\n\n\t\t// http://jqueryvalidation.org/dateISO-method/\n\t\tdateISO: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\n\t\t},\n\n\t\t// http://jqueryvalidation.org/number-method/\n\t\tnumber: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^-?(?:\\d+|\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\n\t\t},\n\n\t\t// http://jqueryvalidation.org/digits-method/\n\t\tdigits: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\n\t\t},\n\n\t\t// http://jqueryvalidation.org/creditcard-method/\n\t\t// based on http://en.wikipedia.org/wiki/Luhn/\n\t\tcreditcard: function( value, element ) {\n\t\t\tif ( this.optional( element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\t// accept only spaces, digits and dashes\n\t\t\tif ( /[^0-9 \\-]+/.test( value ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar nCheck = 0,\n\t\t\t\tnDigit = 0,\n\t\t\t\tbEven = false,\n\t\t\t\tn, cDigit;\n\n\t\t\tvalue = value.replace( /\\D/g, \"\" );\n\n\t\t\t// Basing min and max length on\n\t\t\t// http://developer.ean.com/general_info/Valid_Credit_Card_Types\n\t\t\tif ( value.length < 13 || value.length > 19 ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor ( n = value.length - 1; n >= 0; n--) {\n\t\t\t\tcDigit = value.charAt( n );\n\t\t\t\tnDigit = parseInt( cDigit, 10 );\n\t\t\t\tif ( bEven ) {\n\t\t\t\t\tif ( ( nDigit *= 2 ) > 9 ) {\n\t\t\t\t\t\tnDigit -= 9;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tnCheck += nDigit;\n\t\t\t\tbEven = !bEven;\n\t\t\t}\n\n\t\t\treturn ( nCheck % 10 ) === 0;\n\t\t},\n\n\t\t// http://jqueryvalidation.org/minlength-method/\n\t\tminlength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( $.trim( value ), element );\n\t\t\treturn this.optional( element ) || length >= param;\n\t\t},\n\n\t\t// http://jqueryvalidation.org/maxlength-method/\n\t\tmaxlength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( $.trim( value ), element );\n\t\t\treturn this.optional( element ) || length <= param;\n\t\t},\n\n\t\t// http://jqueryvalidation.org/rangelength-method/\n\t\trangelength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( $.trim( value ), element );\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\n\t\t},\n\n\t\t// http://jqueryvalidation.org/min-method/\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value >= param;\n\t\t},\n\n\t\t// http://jqueryvalidation.org/max-method/\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value <= param;\n\t\t},\n\n\t\t// http://jqueryvalidation.org/range-method/\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\n\t\t},\n\n\t\t// http://jqueryvalidation.org/equalTo-method/\n\t\tequalTo: function( value, element, param ) {\n\t\t\t// bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\t// TODO find a way to bind the event just once, avoiding the unbind-rebind overhead\n\t\t\tvar target = $( param );\n\t\t\tif ( this.settings.onfocusout ) {\n\t\t\t\ttarget.unbind( \".validate-equalTo\" ).bind( \"blur.validate-equalTo\", function() {\n\t\t\t\t\t$( element ).valid();\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t},\n\n\t\t// http://jqueryvalidation.org/remote-method/\n\t\tremote: function( value, element, param ) {\n\t\t\tif ( this.optional( element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tvar previous = this.previousValue( element ),\n\t\t\t\tvalidator, data;\n\n\t\t\tif (!this.settings.messages[ element.name ] ) {\n\t\t\t\tthis.settings.messages[ element.name ] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = this.settings.messages[ element.name ].remote;\n\t\t\tthis.settings.messages[ element.name ].remote = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\n\n\t\t\tif ( previous.old === value ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = value;\n\t\t\tvalidator = this;\n\t\t\tthis.startRequest( element );\n\t\t\tdata = {};\n\t\t\tdata[ element.name ] = value;\n\t\t\t$.ajax( $.extend( true, {\n\t\t\t\turl: param,\n\t\t\t\tmode: \"abort\",\n\t\t\t\tport: \"validate\" + element.name,\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: data,\n\t\t\t\tcontext: validator.currentForm,\n\t\t\t\tsuccess: function( response ) {\n\t\t\t\t\tvar valid = response === true || response === \"true\",\n\t\t\t\t\t\terrors, message, submitted;\n\n\t\t\t\t\tvalidator.settings.messages[ element.name ].remote = previous.originalMessage;\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.prepareElement( element );\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push( element );\n\t\t\t\t\t\tdelete validator.invalid[ element.name ];\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors = {};\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, \"remote\" );\n\t\t\t\t\t\terrors[ element.name ] = previous.message = $.isFunction( message ) ? message( value ) : message;\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\n\t\t\t\t\t\tvalidator.showErrors( errors );\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest( element, valid );\n\t\t\t\t}\n\t\t\t}, param ) );\n\t\t\treturn \"pending\";\n\t\t}\n\n\t}\n\n});\n\n$.format = function deprecated() {\n\tthrow \"$.format has been deprecated. Please use $.validator.format instead.\";\n};\n\n// ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n\nvar pendingRequests = {},\n\tajax;\n// Use a prefilter if available (1.5+)\nif ( $.ajaxPrefilter ) {\n\t$.ajaxPrefilter(function( settings, _, xhr ) {\n\t\tvar port = settings.port;\n\t\tif ( settings.mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[port] ) {\n\t\t\t\tpendingRequests[port].abort();\n\t\t\t}\n\t\t\tpendingRequests[port] = xhr;\n\t\t}\n\t});\n} else {\n\t// Proxy ajax\n\tajax = $.ajax;\n\t$.ajax = function( settings ) {\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\tif ( mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[port] ) {\n\t\t\t\tpendingRequests[port].abort();\n\t\t\t}\n\t\t\tpendingRequests[port] = ajax.apply(this, arguments);\n\t\t\treturn pendingRequests[port];\n\t\t}\n\t\treturn ajax.apply(this, arguments);\n\t};\n}\n\n// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation\n// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target\n\n$.extend($.fn, {\n\tvalidateDelegate: function( delegate, type, handler ) {\n\t\treturn this.bind(type, function( event ) {\n\t\t\tvar target = $(event.target);\n\t\t\tif ( target.is(delegate) ) {\n\t\t\t\treturn handler.apply(target, arguments);\n\t\t\t}\n\t\t});\n\t}\n});\n\n}));","/*!\n** Unobtrusive validation support library for jQuery and jQuery Validate\n** Copyright (C) Microsoft Corporation. All rights reserved.\n*/\n\n/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */\n/*global document: false, jQuery: false */\n\n(function ($) {\n var $jQval = $.validator,\n adapters,\n data_validation = \"unobtrusiveValidation\";\n\n function setValidationValues(options, ruleName, value) {\n options.rules[ruleName] = value;\n if (options.message) {\n options.messages[ruleName] = options.message;\n }\n }\n\n function splitAndTrim(value) {\n return value.replace(/^\\s+|\\s+$/g, \"\").split(/\\s*,\\s*/g);\n }\n\n function escapeAttributeValue(value) {\n // As mentioned on http://api.jquery.com/category/selectors/\n return value.replace(/([!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^`{|}~])/g, \"\\\\$1\");\n }\n\n function getModelPrefix(fieldName) {\n return fieldName.substr(0, fieldName.lastIndexOf(\".\") + 1);\n }\n\n function appendModelPrefix(value, prefix) {\n if (value.indexOf(\"*.\") === 0) {\n value = value.replace(\"*.\", prefix);\n }\n return value;\n }\n\n function onError(error, inputElement) { // 'this' is the form element\n var container = $(this).find(\"[data-valmsg-for='\" + escapeAttributeValue(inputElement[0].name) + \"']\"),\n replaceAttrValue = container.attr(\"data-valmsg-replace\"),\n replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null;\n\n container.removeClass(\"field-validation-valid\").addClass(\"field-validation-error\");\n error.data(\"unobtrusiveContainer\", container);\n\n if (replace) {\n container.empty();\n error.removeClass(\"input-validation-error\").appendTo(container);\n }\n else {\n error.hide();\n }\n }\n\n function onErrors(event, validator) { // 'this' is the form element\n var container = $(this).find(\"[data-valmsg-summary=true]\"),\n list = container.find(\"ul\");\n\n if (list && list.length && validator.errorList.length) {\n list.empty();\n container.addClass(\"validation-summary-errors\").removeClass(\"validation-summary-valid\");\n\n $.each(validator.errorList, function () {\n $(\"
  15. \").html(this.message).appendTo(list);\n });\n }\n }\n\n function onSuccess(error) { // 'this' is the form element\n var container = error.data(\"unobtrusiveContainer\");\n\n if (container) {\n var replaceAttrValue = container.attr(\"data-valmsg-replace\"),\n replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) : null;\n\n container.addClass(\"field-validation-valid\").removeClass(\"field-validation-error\");\n error.removeData(\"unobtrusiveContainer\");\n\n if (replace) {\n container.empty();\n }\n }\n }\n\n function onReset(event) { // 'this' is the form element\n var $form = $(this),\n key = '__jquery_unobtrusive_validation_form_reset';\n if ($form.data(key)) {\n return;\n }\n // Set a flag that indicates we're currently resetting the form.\n $form.data(key, true);\n try {\n $form.data(\"validator\").resetForm();\n } finally {\n $form.removeData(key);\n }\n\n $form.find(\".validation-summary-errors\")\n .addClass(\"validation-summary-valid\")\n .removeClass(\"validation-summary-errors\");\n $form.find(\".field-validation-error\")\n .addClass(\"field-validation-valid\")\n .removeClass(\"field-validation-error\")\n .removeData(\"unobtrusiveContainer\")\n .find(\">*\") // If we were using valmsg-replace, get the underlying error\n .removeData(\"unobtrusiveContainer\");\n }\n\n function validationInfo(form) {\n var $form = $(form),\n result = $form.data(data_validation),\n onResetProxy = $.proxy(onReset, form),\n defaultOptions = $jQval.unobtrusive.options || {},\n execInContext = function (name, args) {\n var func = defaultOptions[name];\n func && $.isFunction(func) && func.apply(form, args);\n }\n\n if (!result) {\n result = {\n options: { // options structure passed to jQuery Validate's validate() method\n errorClass: defaultOptions.errorClass || \"input-validation-error\",\n errorElement: defaultOptions.errorElement || \"span\",\n errorPlacement: function () {\n onError.apply(form, arguments);\n execInContext(\"errorPlacement\", arguments);\n },\n invalidHandler: function () {\n onErrors.apply(form, arguments);\n execInContext(\"invalidHandler\", arguments);\n },\n messages: {},\n rules: {},\n success: function () {\n onSuccess.apply(form, arguments);\n execInContext(\"success\", arguments);\n }\n },\n attachValidation: function () {\n $form\n .off(\"reset.\" + data_validation, onResetProxy)\n .on(\"reset.\" + data_validation, onResetProxy)\n .validate(this.options);\n },\n validate: function () { // a validation function that is called by unobtrusive Ajax\n $form.validate();\n return $form.valid();\n }\n };\n $form.data(data_validation, result);\n }\n\n return result;\n }\n\n $jQval.unobtrusive = {\n adapters: [],\n\n parseElement: function (element, skipAttach) {\n /// \n /// Parses a single HTML element for unobtrusive validation attributes.\n /// \n /// The HTML element to be parsed.\n /// [Optional] true to skip attaching the\n /// validation to the form. If parsing just this single element, you should specify true.\n /// If parsing several elements, you should specify false, and manually attach the validation\n /// to the form when you are finished. The default is false.\n var $element = $(element),\n form = $element.parents(\"form\")[0],\n valInfo, rules, messages;\n\n if (!form) { // Cannot do client-side validation without a form\n return;\n }\n\n valInfo = validationInfo(form);\n valInfo.options.rules[element.name] = rules = {};\n valInfo.options.messages[element.name] = messages = {};\n\n $.each(this.adapters, function () {\n var prefix = \"data-val-\" + this.name,\n message = $element.attr(prefix),\n paramValues = {};\n\n if (message !== undefined) { // Compare against undefined, because an empty message is legal (and falsy)\n prefix += \"-\";\n\n $.each(this.params, function () {\n paramValues[this] = $element.attr(prefix + this);\n });\n\n this.adapt({\n element: element,\n form: form,\n message: message,\n params: paramValues,\n rules: rules,\n messages: messages\n });\n }\n });\n\n $.extend(rules, { \"__dummy__\": true });\n\n if (!skipAttach) {\n valInfo.attachValidation();\n }\n },\n\n parse: function (selector) {\n /// \n /// Parses all the HTML elements in the specified selector. It looks for input elements decorated\n /// with the [data-val=true] attribute value and enables validation according to the data-val-*\n /// attribute values.\n /// \n /// Any valid jQuery selector.\n\n // $forms includes all forms in selector's DOM hierarchy (parent, children and self) that have at least one\n // element with data-val=true\n var $selector = $(selector),\n $forms = $selector.parents()\n .addBack()\n .filter(\"form\")\n .add($selector.find(\"form\"))\n .has(\"[data-val=true]\");\n\n $selector.find(\"[data-val=true]\").each(function () {\n $jQval.unobtrusive.parseElement(this, true);\n });\n\n $forms.each(function () {\n var info = validationInfo(this);\n if (info) {\n info.attachValidation();\n }\n });\n }\n };\n\n adapters = $jQval.unobtrusive.adapters;\n\n adapters.add = function (adapterName, params, fn) {\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation.\n /// The name of the adapter to be added. This matches the name used\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).\n /// [Optional] An array of parameter names (strings) that will\n /// be extracted from the data-val-nnnn-mmmm HTML attributes (where nnnn is the adapter name, and\n /// mmmm is the parameter name).\n /// The function to call, which adapts the values from the HTML\n /// attributes into jQuery Validate rules and/or messages.\n /// \n if (!fn) { // Called with no params, just a function\n fn = params;\n params = [];\n }\n this.push({ name: adapterName, params: params, adapt: fn });\n return this;\n };\n\n adapters.addBool = function (adapterName, ruleName) {\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\n /// the jQuery Validate validation rule has no parameter values.\n /// The name of the adapter to be added. This matches the name used\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).\n /// [Optional] The name of the jQuery Validate rule. If not provided, the value\n /// of adapterName will be used instead.\n /// \n return this.add(adapterName, function (options) {\n setValidationValues(options, ruleName || adapterName, true);\n });\n };\n\n adapters.addMinMax = function (adapterName, minRuleName, maxRuleName, minMaxRuleName, minAttribute, maxAttribute) {\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\n /// the jQuery Validate validation has three potential rules (one for min-only, one for max-only, and\n /// one for min-and-max). The HTML parameters are expected to be named -min and -max.\n /// The name of the adapter to be added. This matches the name used\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).\n /// The name of the jQuery Validate rule to be used when you only\n /// have a minimum value.\n /// The name of the jQuery Validate rule to be used when you only\n /// have a maximum value.\n /// The name of the jQuery Validate rule to be used when you\n /// have both a minimum and maximum value.\n /// [Optional] The name of the HTML attribute that\n /// contains the minimum value. The default is \"min\".\n /// [Optional] The name of the HTML attribute that\n /// contains the maximum value. The default is \"max\".\n /// \n return this.add(adapterName, [minAttribute || \"min\", maxAttribute || \"max\"], function (options) {\n var min = options.params.min,\n max = options.params.max;\n\n if (min && max) {\n setValidationValues(options, minMaxRuleName, [min, max]);\n }\n else if (min) {\n setValidationValues(options, minRuleName, min);\n }\n else if (max) {\n setValidationValues(options, maxRuleName, max);\n }\n });\n };\n\n adapters.addSingleVal = function (adapterName, attribute, ruleName) {\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\n /// the jQuery Validate validation rule has a single value.\n /// The name of the adapter to be added. This matches the name used\n /// in the data-val-nnnn HTML attribute(where nnnn is the adapter name).\n /// [Optional] The name of the HTML attribute that contains the value.\n /// The default is \"val\".\n /// [Optional] The name of the jQuery Validate rule. If not provided, the value\n /// of adapterName will be used instead.\n /// \n return this.add(adapterName, [attribute || \"val\"], function (options) {\n setValidationValues(options, ruleName || adapterName, options.params[attribute]);\n });\n };\n\n $jQval.addMethod(\"__dummy__\", function (value, element, params) {\n return true;\n });\n\n $jQval.addMethod(\"regex\", function (value, element, params) {\n var match;\n if (this.optional(element)) {\n return true;\n }\n\n match = new RegExp(params).exec(value);\n return (match && (match.index === 0) && (match[0].length === value.length));\n });\n\n $jQval.addMethod(\"nonalphamin\", function (value, element, nonalphamin) {\n var match;\n if (nonalphamin) {\n match = value.match(/\\W/g);\n match = match && match.length >= nonalphamin;\n }\n return match;\n });\n\n if ($jQval.methods.extension) {\n adapters.addSingleVal(\"accept\", \"mimtype\");\n adapters.addSingleVal(\"extension\", \"extension\");\n } else {\n // for backward compatibility, when the 'extension' validation method does not exist, such as with versions\n // of JQuery Validation plugin prior to 1.10, we should use the 'accept' method for\n // validating the extension, and ignore mime-type validations as they are not supported.\n adapters.addSingleVal(\"extension\", \"extension\", \"accept\");\n }\n\n adapters.addSingleVal(\"regex\", \"pattern\");\n adapters.addBool(\"creditcard\").addBool(\"date\").addBool(\"digits\").addBool(\"email\").addBool(\"number\").addBool(\"url\");\n adapters.addMinMax(\"length\", \"minlength\", \"maxlength\", \"rangelength\").addMinMax(\"range\", \"min\", \"max\", \"range\");\n adapters.addMinMax(\"minlength\", \"minlength\").addMinMax(\"maxlength\", \"minlength\", \"maxlength\");\n adapters.add(\"equalto\", [\"other\"], function (options) {\n var prefix = getModelPrefix(options.element.name),\n other = options.params.other,\n fullOtherName = appendModelPrefix(other, prefix),\n element = $(options.form).find(\":input\").filter(\"[name='\" + escapeAttributeValue(fullOtherName) + \"']\")[0];\n\n setValidationValues(options, \"equalTo\", element);\n });\n adapters.add(\"required\", function (options) {\n // jQuery Validate equates \"required\" with \"mandatory\" for checkbox elements\n if (options.element.tagName.toUpperCase() !== \"INPUT\" || options.element.type.toUpperCase() !== \"CHECKBOX\") {\n setValidationValues(options, \"required\", true);\n }\n });\n adapters.add(\"remote\", [\"url\", \"type\", \"additionalfields\"], function (options) {\n var value = {\n url: options.params.url,\n type: options.params.type || \"GET\",\n data: {}\n },\n prefix = getModelPrefix(options.element.name);\n\n $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) {\n var paramName = appendModelPrefix(fieldName, prefix);\n value.data[paramName] = function () {\n var field = $(options.form).find(\":input\").filter(\"[name='\" + escapeAttributeValue(paramName) + \"']\");\n // For checkboxes and radio buttons, only pick up values from checked fields.\n if (field.is(\":checkbox\")) {\n return field.filter(\":checked\").val() || field.filter(\":hidden\").val() || '';\n }\n else if (field.is(\":radio\")) {\n return field.filter(\":checked\").val() || '';\n }\n return field.val();\n };\n });\n\n setValidationValues(options, \"remote\", value);\n });\n adapters.add(\"password\", [\"min\", \"nonalphamin\", \"regex\"], function (options) {\n if (options.params.min) {\n setValidationValues(options, \"minlength\", options.params.min);\n }\n if (options.params.nonalphamin) {\n setValidationValues(options, \"nonalphamin\", options.params.nonalphamin);\n }\n if (options.params.regex) {\n setValidationValues(options, \"regex\", options.params.regex);\n }\n });\n\n $(function () {\n $jQval.unobtrusive.parse(document);\n });\n}(jQuery));",";(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\nvar hookCallback;\n\nfunction hooks () {\n return hookCallback.apply(null, arguments);\n}\n\n// This is done to register the method called with moment()\n// without creating circular dependencies.\nfunction setHookCallback (callback) {\n hookCallback = callback;\n}\n\nfunction isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n}\n\nfunction isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n}\n\nfunction isObjectEmpty(obj) {\n var k;\n for (k in obj) {\n // even if its not own property I'd still call it non-empty\n return false;\n }\n return true;\n}\n\nfunction isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n}\n\nfunction isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n}\n\nfunction map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n}\n\nfunction hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n}\n\nfunction extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n}\n\nfunction createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n}\n\nfunction defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null\n };\n}\n\nfunction getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n}\n\nvar some;\nif (Array.prototype.some) {\n some = Array.prototype.some;\n} else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n}\n\nvar some$1 = some;\n\nfunction isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some$1.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n}\n\nfunction createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n}\n\nfunction isUndefined(input) {\n return input === void 0;\n}\n\n// Plugins that add properties should also add the key here (null value),\n// so we can properly clone ourselves.\nvar momentProperties = hooks.momentProperties = [];\n\nfunction copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i in momentProperties) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n}\n\nvar updateInProgress = false;\n\n// Moment prototype object\nfunction Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n}\n\nfunction isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n}\n\nfunction absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n}\n\nfunction toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n}\n\n// compare two arrays, return the number of differences\nfunction compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n}\n\nfunction warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n}\n\nfunction deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n}\n\nvar deprecations = {};\n\nfunction deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n}\n\nhooks.suppressDeprecationWarnings = false;\nhooks.deprecationHandler = null;\n\nfunction isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n}\n\nfunction set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _ordinalParseLenient.\n this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\\d{1,2}/).source);\n}\n\nfunction mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n}\n\nfunction Locale(config) {\n if (config != null) {\n this.set(config);\n }\n}\n\nvar keys;\n\nif (Object.keys) {\n keys = Object.keys;\n} else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n}\n\nvar keys$1 = keys;\n\nvar defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n};\n\nfunction calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n}\n\nvar defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n};\n\nfunction longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n}\n\nvar defaultInvalidDate = 'Invalid date';\n\nfunction invalidDate () {\n return this._invalidDate;\n}\n\nvar defaultOrdinal = '%d';\nvar defaultOrdinalParse = /\\d{1,2}/;\n\nfunction ordinal (number) {\n return this._ordinal.replace('%d', number);\n}\n\nvar defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n};\n\nfunction relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n}\n\nfunction pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n}\n\nvar aliases = {};\n\nfunction addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n}\n\nfunction normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n}\n\nfunction normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n}\n\nvar priorities = {};\n\nfunction addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n}\n\nfunction getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n}\n\nfunction makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n}\n\nfunction get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n}\n\nfunction set$1 (mom, unit, value) {\n if (mom.isValid()) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n}\n\n// MOMENTS\n\nfunction stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n}\n\n\nfunction stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n}\n\nfunction zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n}\n\nvar formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\nvar localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\nvar formatFunctions = {};\n\nvar formatTokenFunctions = {};\n\n// token: 'M'\n// padded: ['MM', 2]\n// ordinal: 'Mo'\n// callback: function () { this.month() + 1 }\nfunction addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n}\n\nfunction removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n}\n\nfunction makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n}\n\n// format date using native date object\nfunction formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n}\n\nfunction expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n}\n\nvar match1 = /\\d/; // 0 - 9\nvar match2 = /\\d\\d/; // 00 - 99\nvar match3 = /\\d{3}/; // 000 - 999\nvar match4 = /\\d{4}/; // 0000 - 9999\nvar match6 = /[+-]?\\d{6}/; // -999999 - 999999\nvar match1to2 = /\\d\\d?/; // 0 - 99\nvar match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\nvar match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\nvar match1to3 = /\\d{1,3}/; // 0 - 999\nvar match1to4 = /\\d{1,4}/; // 0 - 9999\nvar match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\nvar matchUnsigned = /\\d+/; // 0 - inf\nvar matchSigned = /[+-]?\\d+/; // -inf - inf\n\nvar matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\nvar matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\nvar matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n// any word (or two) characters or numbers including two/three word month in arabic.\n// includes scottish gaelic two word and hyphenated months\nvar matchWord = /[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF\\/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i;\n\n\nvar regexes = {};\n\nfunction addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n}\n\nfunction getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n}\n\n// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\nfunction unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n}\n\nfunction regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nvar tokens = {};\n\nfunction addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n}\n\nfunction addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n}\n\nfunction addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n}\n\nvar YEAR = 0;\nvar MONTH = 1;\nvar DATE = 2;\nvar HOUR = 3;\nvar MINUTE = 4;\nvar SECOND = 5;\nvar MILLISECOND = 6;\nvar WEEK = 7;\nvar WEEKDAY = 8;\n\nvar indexOf;\n\nif (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n} else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n}\n\nvar indexOf$1 = indexOf;\n\nfunction daysInMonth(year, month) {\n return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();\n}\n\n// FORMATTING\n\naddFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n});\n\naddFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n});\n\naddFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n});\n\n// ALIASES\n\naddUnitAlias('month', 'M');\n\n// PRIORITY\n\naddUnitPriority('month', 8);\n\n// PARSING\n\naddRegexToken('M', match1to2);\naddRegexToken('MM', match1to2, match2);\naddRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n});\naddRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n});\n\naddParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n});\n\naddParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n});\n\n// LOCALES\n\nvar MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\nvar defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\nfunction localeMonths (m, format) {\n if (!m) {\n return this._months;\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n}\n\nvar defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\nfunction localeMonthsShort (m, format) {\n if (!m) {\n return this._monthsShort;\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n}\n\nfunction handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n}\n\nfunction localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n}\n\n// MOMENTS\n\nfunction setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n}\n\nfunction getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n}\n\nfunction getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n}\n\nvar defaultMonthsShortRegex = matchWord;\nfunction monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n}\n\nvar defaultMonthsRegex = matchWord;\nfunction monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n}\n\nfunction computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n}\n\n// FORMATTING\n\naddFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n});\n\naddFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n});\n\naddFormatToken(0, ['YYYY', 4], 0, 'year');\naddFormatToken(0, ['YYYYY', 5], 0, 'year');\naddFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n// ALIASES\n\naddUnitAlias('year', 'y');\n\n// PRIORITIES\n\naddUnitPriority('year', 1);\n\n// PARSING\n\naddRegexToken('Y', matchSigned);\naddRegexToken('YY', match1to2, match2);\naddRegexToken('YYYY', match1to4, match4);\naddRegexToken('YYYYY', match1to6, match6);\naddRegexToken('YYYYYY', match1to6, match6);\n\naddParseToken(['YYYYY', 'YYYYYY'], YEAR);\naddParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n});\naddParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n});\naddParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n});\n\n// HELPERS\n\nfunction daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\nfunction isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\n\n// HOOKS\n\nhooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n};\n\n// MOMENTS\n\nvar getSetYear = makeGetSet('FullYear', true);\n\nfunction getIsLeapYear () {\n return isLeapYear(this.year());\n}\n\nfunction createDate (y, m, d, h, M, s, ms) {\n //can't just apply() to create a date:\n //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply\n var date = new Date(y, m, d, h, M, s, ms);\n\n //the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n return date;\n}\n\nfunction createUTCDate (y) {\n var date = new Date(Date.UTC.apply(null, arguments));\n\n //the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n return date;\n}\n\n// start-of-first-week - start-of-year\nfunction firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n}\n\n//http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\nfunction dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n}\n\nfunction weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n}\n\nfunction weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n}\n\n// FORMATTING\n\naddFormatToken('w', ['ww', 2], 'wo', 'week');\naddFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n// ALIASES\n\naddUnitAlias('week', 'w');\naddUnitAlias('isoWeek', 'W');\n\n// PRIORITIES\n\naddUnitPriority('week', 5);\naddUnitPriority('isoWeek', 5);\n\n// PARSING\n\naddRegexToken('w', match1to2);\naddRegexToken('ww', match1to2, match2);\naddRegexToken('W', match1to2);\naddRegexToken('WW', match1to2, match2);\n\naddWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n});\n\n// HELPERS\n\n// LOCALES\n\nfunction localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n}\n\nvar defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n};\n\nfunction localeFirstDayOfWeek () {\n return this._week.dow;\n}\n\nfunction localeFirstDayOfYear () {\n return this._week.doy;\n}\n\n// MOMENTS\n\nfunction getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\nfunction getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\n// FORMATTING\n\naddFormatToken('d', 0, 'do', 'day');\n\naddFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n});\n\naddFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n});\n\naddFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n});\n\naddFormatToken('e', 0, 0, 'weekday');\naddFormatToken('E', 0, 0, 'isoWeekday');\n\n// ALIASES\n\naddUnitAlias('day', 'd');\naddUnitAlias('weekday', 'e');\naddUnitAlias('isoWeekday', 'E');\n\n// PRIORITY\naddUnitPriority('day', 11);\naddUnitPriority('weekday', 11);\naddUnitPriority('isoWeekday', 11);\n\n// PARSING\n\naddRegexToken('d', match1to2);\naddRegexToken('e', match1to2);\naddRegexToken('E', match1to2);\naddRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n});\naddRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n});\naddRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n});\n\naddWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n});\n\naddWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n});\n\n// HELPERS\n\nfunction parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n}\n\nfunction parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n}\n\n// LOCALES\n\nvar defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\nfunction localeWeekdays (m, format) {\n if (!m) {\n return this._weekdays;\n }\n return isArray(this._weekdays) ? this._weekdays[m.day()] :\n this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];\n}\n\nvar defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\nfunction localeWeekdaysShort (m) {\n return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n}\n\nvar defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\nfunction localeWeekdaysMin (m) {\n return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n}\n\nfunction handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf$1.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n}\n\nfunction localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n}\n\n// MOMENTS\n\nfunction getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n}\n\nfunction getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n}\n\nfunction getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n}\n\nvar defaultWeekdaysRegex = matchWord;\nfunction weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n}\n\nvar defaultWeekdaysShortRegex = matchWord;\nfunction weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n}\n\nvar defaultWeekdaysMinRegex = matchWord;\nfunction weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n}\n\n\nfunction computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n}\n\n// FORMATTING\n\nfunction hFormat() {\n return this.hours() % 12 || 12;\n}\n\nfunction kFormat() {\n return this.hours() || 24;\n}\n\naddFormatToken('H', ['HH', 2], 0, 'hour');\naddFormatToken('h', ['hh', 2], 0, hFormat);\naddFormatToken('k', ['kk', 2], 0, kFormat);\n\naddFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n});\n\naddFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n});\n\nfunction meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n}\n\nmeridiem('a', true);\nmeridiem('A', false);\n\n// ALIASES\n\naddUnitAlias('hour', 'h');\n\n// PRIORITY\naddUnitPriority('hour', 13);\n\n// PARSING\n\nfunction matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n}\n\naddRegexToken('a', matchMeridiem);\naddRegexToken('A', matchMeridiem);\naddRegexToken('H', match1to2);\naddRegexToken('h', match1to2);\naddRegexToken('HH', match1to2, match2);\naddRegexToken('hh', match1to2, match2);\n\naddRegexToken('hmm', match3to4);\naddRegexToken('hmmss', match5to6);\naddRegexToken('Hmm', match3to4);\naddRegexToken('Hmmss', match5to6);\n\naddParseToken(['H', 'HH'], HOUR);\naddParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n});\naddParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n});\naddParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n});\n\n// LOCALES\n\nfunction localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n}\n\nvar defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\nfunction localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n}\n\n\n// MOMENTS\n\n// Setting the hour should keep the time, because the user explicitly\n// specified which hour he wants. So trying to maintain the same hour (in\n// a new timezone) makes sense. Adding/subtracting hours does not follow\n// this rule.\nvar getSetHour = makeGetSet('Hours', true);\n\n// months\n// week\n// weekdays\n// meridiem\nvar baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n ordinalParse: defaultOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n};\n\n// internal storage for locale config files\nvar locales = {};\nvar localeFamilies = {};\nvar globalLocale;\n\nfunction normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n}\n\n// pick the locale from the array\n// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\nfunction chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return null;\n}\n\nfunction loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n require('./locale/' + name);\n // because defineLocale currently also sets the global locale, we\n // want to undo that for lazy loaded locales\n getSetGlobalLocale(oldLocale);\n } catch (e) { }\n }\n return locales[name];\n}\n\n// This function will load locale and then set the global locale. If\n// no arguments are passed in, it will simply return the current global\n// locale key.\nfunction getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n }\n\n return globalLocale._abbr;\n}\n\nfunction defineLocale (name, config) {\n if (config !== null) {\n var parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n}\n\nfunction updateLocale(name, config) {\n if (config != null) {\n var locale, parentConfig = baseConfig;\n // MERGE\n if (locales[name] != null) {\n parentConfig = locales[name]._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n}\n\n// returns locale data\nfunction getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n}\n\nfunction listLocales() {\n return keys$1(locales);\n}\n\nfunction checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n}\n\n// iso 8601 regex\n// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\nvar extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\nvar basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\nvar tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\nvar isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n];\n\n// iso time formats and regexes\nvar isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n];\n\nvar aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n// date from iso format\nfunction configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n}\n\n// date from iso format or fallback\nfunction configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n hooks.createFromInputFallback(config);\n }\n}\n\nhooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n);\n\n// Pick the first defined of two or three arguments.\nfunction defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n}\n\nfunction currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n}\n\n// convert an array to a date.\n// the array should mirror the parameters below\n// note: all values past the year are optional and will default to the lowest possible value.\n// [year, month, day , hour, minute, second, millisecond]\nfunction configFromArray (config) {\n var i, date, input = [], currentDate, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse)) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n}\n\nfunction dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from begining of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to begining of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n}\n\n// constant that refers to the ISO standard\nhooks.ISO_8601 = function () {};\n\n// date from string and format string\nfunction configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n}\n\n\nfunction meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n}\n\n// date from string and array of format strings\nfunction configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n}\n\nfunction configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n}\n\nfunction createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n}\n\nfunction prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n}\n\nfunction configFromInput(config) {\n var input = config._i;\n if (input === undefined) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (typeof(input) === 'object') {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n}\n\nfunction createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n}\n\nfunction createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n}\n\nvar prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n);\n\nvar prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n);\n\n// Pick a moment m from moments so that m[fn](other) is true for all\n// other. This relies on the function fn to be transitive.\n//\n// moments should either be an array of moment objects or an array, whose\n// first element is an array of moment objects.\nfunction pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n}\n\n// TODO: Use [].sort instead?\nfunction min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n}\n\nfunction max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n}\n\nvar now = function () {\n return Date.now ? Date.now() : +(new Date());\n};\n\nfunction Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n}\n\nfunction isDuration (obj) {\n return obj instanceof Duration;\n}\n\nfunction absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n}\n\n// FORMATTING\n\nfunction offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n}\n\noffset('Z', ':');\noffset('ZZ', '');\n\n// PARSING\n\naddRegexToken('Z', matchShortOffset);\naddRegexToken('ZZ', matchShortOffset);\naddParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n});\n\n// HELPERS\n\n// timezone chunker\n// '+10:00' > ['10', '00']\n// '-1530' > ['-15', '30']\nvar chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\nfunction offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n}\n\n// Return a moment from input, that is local/utc/zone equivalent to model.\nfunction cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n}\n\nfunction getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n}\n\n// HOOKS\n\n// This function will be called whenever a moment is mutated.\n// It is intended to keep the offset in sync with the timezone.\nhooks.updateOffset = function () {};\n\n// MOMENTS\n\n// keepLocalTime = true means only change the timezone, without\n// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n// +0200, so we adjust the time as needed, to be valid.\n//\n// Keeping the time actually adds/subtracts (one hour)\n// from the actual represented time. That is why we call updateOffset\n// a second time. In case it wants us to change the offset again\n// _changeInProgress == true case, then we have to adjust, because\n// there is no such time in the given timezone.\nfunction getSetOffset (input, keepLocalTime) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n}\n\nfunction getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n}\n\nfunction setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n}\n\nfunction setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n}\n\nfunction setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n}\n\nfunction hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n}\n\nfunction isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n}\n\nfunction isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n}\n\nfunction isLocal () {\n return this.isValid() ? !this._isUTC : false;\n}\n\nfunction isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n}\n\nfunction isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n}\n\n// ASP.NET json date format regex\nvar aspNetRegex = /^(\\-)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n// and further modified to allow for strings containing both week and day\nvar isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;\n\nfunction createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n}\n\ncreateDuration.fn = Duration.prototype;\n\nfunction parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n}\n\nfunction positiveMomentsDifference(base, other) {\n var res = {milliseconds: 0, months: 0};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n}\n\nfunction momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n}\n\n// TODO: remove 'name' arg after deprecation is removed\nfunction createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n}\n\nfunction addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n}\n\nvar add = createAdder(1, 'add');\nvar subtract = createAdder(-1, 'subtract');\n\nfunction getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n}\n\nfunction calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n}\n\nfunction clone () {\n return new Moment(this);\n}\n\nfunction isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n}\n\nfunction isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n}\n\nfunction isBetween (from, to, units, inclusivity) {\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));\n}\n\nfunction isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units || 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n}\n\nfunction isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input,units);\n}\n\nfunction isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input,units);\n}\n\nfunction diff (input, units, asFloat) {\n var that,\n zoneDelta,\n delta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n if (units === 'year' || units === 'month' || units === 'quarter') {\n output = monthDiff(this, that);\n if (units === 'quarter') {\n output = output / 3;\n } else if (units === 'year') {\n output = output / 12;\n }\n } else {\n delta = this - that;\n output = units === 'second' ? delta / 1e3 : // 1000\n units === 'minute' ? delta / 6e4 : // 1000 * 60\n units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60\n units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst\n units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst\n delta;\n }\n return asFloat ? output : absFloor(output);\n}\n\nfunction monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n}\n\nhooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\nhooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\nfunction toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n}\n\nfunction toISOString () {\n var m = this.clone().utc();\n if (0 < m.year() && m.year() <= 9999) {\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n return this.toDate().toISOString();\n } else {\n return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n } else {\n return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n}\n\n/**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\nfunction inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 < this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n}\n\nfunction format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n}\n\nfunction from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n}\n\nfunction fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n}\n\nfunction to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n}\n\nfunction toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n}\n\n// If passed a locale key, it will set the locale for this\n// instance. Otherwise, it will return the locale configuration\n// variables for this instance.\nfunction locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n}\n\nvar lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n);\n\nfunction localeData () {\n return this._locale;\n}\n\nfunction startOf (units) {\n units = normalizeUnits(units);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (units) {\n case 'year':\n this.month(0);\n /* falls through */\n case 'quarter':\n case 'month':\n this.date(1);\n /* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n case 'date':\n this.hours(0);\n /* falls through */\n case 'hour':\n this.minutes(0);\n /* falls through */\n case 'minute':\n this.seconds(0);\n /* falls through */\n case 'second':\n this.milliseconds(0);\n }\n\n // weeks are a special case\n if (units === 'week') {\n this.weekday(0);\n }\n if (units === 'isoWeek') {\n this.isoWeekday(1);\n }\n\n // quarters are also special\n if (units === 'quarter') {\n this.month(Math.floor(this.month() / 3) * 3);\n }\n\n return this;\n}\n\nfunction endOf (units) {\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond') {\n return this;\n }\n\n // 'date' is an alias for 'day', so it should be considered as such.\n if (units === 'date') {\n units = 'day';\n }\n\n return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n}\n\nfunction valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n}\n\nfunction unix () {\n return Math.floor(this.valueOf() / 1000);\n}\n\nfunction toDate () {\n return new Date(this.valueOf());\n}\n\nfunction toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n}\n\nfunction toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n}\n\nfunction toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n}\n\nfunction isValid$1 () {\n return isValid(this);\n}\n\nfunction parsingFlags () {\n return extend({}, getParsingFlags(this));\n}\n\nfunction invalidAt () {\n return getParsingFlags(this).overflow;\n}\n\nfunction creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n}\n\n// FORMATTING\n\naddFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n});\n\naddFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n});\n\nfunction addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n}\n\naddWeekYearFormatToken('gggg', 'weekYear');\naddWeekYearFormatToken('ggggg', 'weekYear');\naddWeekYearFormatToken('GGGG', 'isoWeekYear');\naddWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n// ALIASES\n\naddUnitAlias('weekYear', 'gg');\naddUnitAlias('isoWeekYear', 'GG');\n\n// PRIORITY\n\naddUnitPriority('weekYear', 1);\naddUnitPriority('isoWeekYear', 1);\n\n\n// PARSING\n\naddRegexToken('G', matchSigned);\naddRegexToken('g', matchSigned);\naddRegexToken('GG', match1to2, match2);\naddRegexToken('gg', match1to2, match2);\naddRegexToken('GGGG', match1to4, match4);\naddRegexToken('gggg', match1to4, match4);\naddRegexToken('GGGGG', match1to6, match6);\naddRegexToken('ggggg', match1to6, match6);\n\naddWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n});\n\naddWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n});\n\n// MOMENTS\n\nfunction getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n}\n\nfunction getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n}\n\nfunction getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n}\n\nfunction getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n}\n\nfunction getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n}\n\nfunction setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n}\n\n// FORMATTING\n\naddFormatToken('Q', 0, 'Qo', 'quarter');\n\n// ALIASES\n\naddUnitAlias('quarter', 'Q');\n\n// PRIORITY\n\naddUnitPriority('quarter', 7);\n\n// PARSING\n\naddRegexToken('Q', match1);\naddParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n});\n\n// MOMENTS\n\nfunction getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n}\n\n// FORMATTING\n\naddFormatToken('D', ['DD', 2], 'Do', 'date');\n\n// ALIASES\n\naddUnitAlias('date', 'D');\n\n// PRIOROITY\naddUnitPriority('date', 9);\n\n// PARSING\n\naddRegexToken('D', match1to2);\naddRegexToken('DD', match1to2, match2);\naddRegexToken('Do', function (isStrict, locale) {\n return isStrict ? locale._ordinalParse : locale._ordinalParseLenient;\n});\n\naddParseToken(['D', 'DD'], DATE);\naddParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0], 10);\n});\n\n// MOMENTS\n\nvar getSetDayOfMonth = makeGetSet('Date', true);\n\n// FORMATTING\n\naddFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n// ALIASES\n\naddUnitAlias('dayOfYear', 'DDD');\n\n// PRIORITY\naddUnitPriority('dayOfYear', 4);\n\n// PARSING\n\naddRegexToken('DDD', match1to3);\naddRegexToken('DDDD', match3);\naddParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n});\n\n// HELPERS\n\n// MOMENTS\n\nfunction getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n}\n\n// FORMATTING\n\naddFormatToken('m', ['mm', 2], 0, 'minute');\n\n// ALIASES\n\naddUnitAlias('minute', 'm');\n\n// PRIORITY\n\naddUnitPriority('minute', 14);\n\n// PARSING\n\naddRegexToken('m', match1to2);\naddRegexToken('mm', match1to2, match2);\naddParseToken(['m', 'mm'], MINUTE);\n\n// MOMENTS\n\nvar getSetMinute = makeGetSet('Minutes', false);\n\n// FORMATTING\n\naddFormatToken('s', ['ss', 2], 0, 'second');\n\n// ALIASES\n\naddUnitAlias('second', 's');\n\n// PRIORITY\n\naddUnitPriority('second', 15);\n\n// PARSING\n\naddRegexToken('s', match1to2);\naddRegexToken('ss', match1to2, match2);\naddParseToken(['s', 'ss'], SECOND);\n\n// MOMENTS\n\nvar getSetSecond = makeGetSet('Seconds', false);\n\n// FORMATTING\n\naddFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n});\n\naddFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n});\n\naddFormatToken(0, ['SSS', 3], 0, 'millisecond');\naddFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n});\naddFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n});\naddFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n});\naddFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n});\naddFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n});\naddFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n});\n\n\n// ALIASES\n\naddUnitAlias('millisecond', 'ms');\n\n// PRIORITY\n\naddUnitPriority('millisecond', 16);\n\n// PARSING\n\naddRegexToken('S', match1to3, match1);\naddRegexToken('SS', match1to3, match2);\naddRegexToken('SSS', match1to3, match3);\n\nvar token;\nfor (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n}\n\nfunction parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n}\n\nfor (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n}\n// MOMENTS\n\nvar getSetMillisecond = makeGetSet('Milliseconds', false);\n\n// FORMATTING\n\naddFormatToken('z', 0, 0, 'zoneAbbr');\naddFormatToken('zz', 0, 0, 'zoneName');\n\n// MOMENTS\n\nfunction getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n}\n\nfunction getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n}\n\nvar proto = Moment.prototype;\n\nproto.add = add;\nproto.calendar = calendar$1;\nproto.clone = clone;\nproto.diff = diff;\nproto.endOf = endOf;\nproto.format = format;\nproto.from = from;\nproto.fromNow = fromNow;\nproto.to = to;\nproto.toNow = toNow;\nproto.get = stringGet;\nproto.invalidAt = invalidAt;\nproto.isAfter = isAfter;\nproto.isBefore = isBefore;\nproto.isBetween = isBetween;\nproto.isSame = isSame;\nproto.isSameOrAfter = isSameOrAfter;\nproto.isSameOrBefore = isSameOrBefore;\nproto.isValid = isValid$1;\nproto.lang = lang;\nproto.locale = locale;\nproto.localeData = localeData;\nproto.max = prototypeMax;\nproto.min = prototypeMin;\nproto.parsingFlags = parsingFlags;\nproto.set = stringSet;\nproto.startOf = startOf;\nproto.subtract = subtract;\nproto.toArray = toArray;\nproto.toObject = toObject;\nproto.toDate = toDate;\nproto.toISOString = toISOString;\nproto.inspect = inspect;\nproto.toJSON = toJSON;\nproto.toString = toString;\nproto.unix = unix;\nproto.valueOf = valueOf;\nproto.creationData = creationData;\n\n// Year\nproto.year = getSetYear;\nproto.isLeapYear = getIsLeapYear;\n\n// Week Year\nproto.weekYear = getSetWeekYear;\nproto.isoWeekYear = getSetISOWeekYear;\n\n// Quarter\nproto.quarter = proto.quarters = getSetQuarter;\n\n// Month\nproto.month = getSetMonth;\nproto.daysInMonth = getDaysInMonth;\n\n// Week\nproto.week = proto.weeks = getSetWeek;\nproto.isoWeek = proto.isoWeeks = getSetISOWeek;\nproto.weeksInYear = getWeeksInYear;\nproto.isoWeeksInYear = getISOWeeksInYear;\n\n// Day\nproto.date = getSetDayOfMonth;\nproto.day = proto.days = getSetDayOfWeek;\nproto.weekday = getSetLocaleDayOfWeek;\nproto.isoWeekday = getSetISODayOfWeek;\nproto.dayOfYear = getSetDayOfYear;\n\n// Hour\nproto.hour = proto.hours = getSetHour;\n\n// Minute\nproto.minute = proto.minutes = getSetMinute;\n\n// Second\nproto.second = proto.seconds = getSetSecond;\n\n// Millisecond\nproto.millisecond = proto.milliseconds = getSetMillisecond;\n\n// Offset\nproto.utcOffset = getSetOffset;\nproto.utc = setOffsetToUTC;\nproto.local = setOffsetToLocal;\nproto.parseZone = setOffsetToParsedOffset;\nproto.hasAlignedHourOffset = hasAlignedHourOffset;\nproto.isDST = isDaylightSavingTime;\nproto.isLocal = isLocal;\nproto.isUtcOffset = isUtcOffset;\nproto.isUtc = isUtc;\nproto.isUTC = isUtc;\n\n// Timezone\nproto.zoneAbbr = getZoneAbbr;\nproto.zoneName = getZoneName;\n\n// Deprecations\nproto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\nproto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\nproto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\nproto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\nproto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\nfunction createUnix (input) {\n return createLocal(input * 1000);\n}\n\nfunction createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n}\n\nfunction preParsePostFormat (string) {\n return string;\n}\n\nvar proto$1 = Locale.prototype;\n\nproto$1.calendar = calendar;\nproto$1.longDateFormat = longDateFormat;\nproto$1.invalidDate = invalidDate;\nproto$1.ordinal = ordinal;\nproto$1.preparse = preParsePostFormat;\nproto$1.postformat = preParsePostFormat;\nproto$1.relativeTime = relativeTime;\nproto$1.pastFuture = pastFuture;\nproto$1.set = set;\n\n// Month\nproto$1.months = localeMonths;\nproto$1.monthsShort = localeMonthsShort;\nproto$1.monthsParse = localeMonthsParse;\nproto$1.monthsRegex = monthsRegex;\nproto$1.monthsShortRegex = monthsShortRegex;\n\n// Week\nproto$1.week = localeWeek;\nproto$1.firstDayOfYear = localeFirstDayOfYear;\nproto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n// Day of Week\nproto$1.weekdays = localeWeekdays;\nproto$1.weekdaysMin = localeWeekdaysMin;\nproto$1.weekdaysShort = localeWeekdaysShort;\nproto$1.weekdaysParse = localeWeekdaysParse;\n\nproto$1.weekdaysRegex = weekdaysRegex;\nproto$1.weekdaysShortRegex = weekdaysShortRegex;\nproto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n// Hours\nproto$1.isPM = localeIsPM;\nproto$1.meridiem = localeMeridiem;\n\nfunction get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n}\n\nfunction listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n}\n\n// ()\n// (5)\n// (fmt, 5)\n// (fmt)\n// (true)\n// (true, 5)\n// (true, fmt, 5)\n// (true, fmt)\nfunction listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n}\n\nfunction listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n}\n\nfunction listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n}\n\nfunction listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n}\n\nfunction listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n}\n\nfunction listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n}\n\ngetSetGlobalLocale('en', {\n ordinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n});\n\n// Side effect imports\nhooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\nhooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\nvar mathAbs = Math.abs;\n\nfunction abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n}\n\nfunction addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n}\n\n// supports only 2.0-style add(1, 's') or add(duration)\nfunction add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n}\n\n// supports only 2.0-style subtract(1, 's') or subtract(duration)\nfunction subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n}\n\nfunction absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n}\n\nfunction bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n}\n\nfunction daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n}\n\nfunction monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n}\n\nfunction as (units) {\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n return units === 'month' ? months : months / 12;\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n}\n\n// TODO: Use this.as('ms')?\nfunction valueOf$1 () {\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n}\n\nfunction makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n}\n\nvar asMilliseconds = makeAs('ms');\nvar asSeconds = makeAs('s');\nvar asMinutes = makeAs('m');\nvar asHours = makeAs('h');\nvar asDays = makeAs('d');\nvar asWeeks = makeAs('w');\nvar asMonths = makeAs('M');\nvar asYears = makeAs('y');\n\nfunction get$2 (units) {\n units = normalizeUnits(units);\n return this[units + 's']();\n}\n\nfunction makeGetter(name) {\n return function () {\n return this._data[name];\n };\n}\n\nvar milliseconds = makeGetter('milliseconds');\nvar seconds = makeGetter('seconds');\nvar minutes = makeGetter('minutes');\nvar hours = makeGetter('hours');\nvar days = makeGetter('days');\nvar months = makeGetter('months');\nvar years = makeGetter('years');\n\nfunction weeks () {\n return absFloor(this.days() / 7);\n}\n\nvar round = Math.round;\nvar thresholds = {\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month\n M: 11 // months to year\n};\n\n// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\nfunction substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n}\n\nfunction relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds < thresholds.s && ['s', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n}\n\n// This function allows you to set the rounding function for relative time strings\nfunction getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n}\n\n// This function allows you to set a threshold for relative time strings\nfunction getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n return true;\n}\n\nfunction humanize (withSuffix) {\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n}\n\nvar abs$1 = Math.abs;\n\nfunction toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds;\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n return (total < 0 ? '-' : '') +\n 'P' +\n (Y ? Y + 'Y' : '') +\n (M ? M + 'M' : '') +\n (D ? D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? h + 'H' : '') +\n (m ? m + 'M' : '') +\n (s ? s + 'S' : '');\n}\n\nvar proto$2 = Duration.prototype;\n\nproto$2.abs = abs;\nproto$2.add = add$1;\nproto$2.subtract = subtract$1;\nproto$2.as = as;\nproto$2.asMilliseconds = asMilliseconds;\nproto$2.asSeconds = asSeconds;\nproto$2.asMinutes = asMinutes;\nproto$2.asHours = asHours;\nproto$2.asDays = asDays;\nproto$2.asWeeks = asWeeks;\nproto$2.asMonths = asMonths;\nproto$2.asYears = asYears;\nproto$2.valueOf = valueOf$1;\nproto$2._bubble = bubble;\nproto$2.get = get$2;\nproto$2.milliseconds = milliseconds;\nproto$2.seconds = seconds;\nproto$2.minutes = minutes;\nproto$2.hours = hours;\nproto$2.days = days;\nproto$2.weeks = weeks;\nproto$2.months = months;\nproto$2.years = years;\nproto$2.humanize = humanize;\nproto$2.toISOString = toISOString$1;\nproto$2.toString = toISOString$1;\nproto$2.toJSON = toISOString$1;\nproto$2.locale = locale;\nproto$2.localeData = localeData;\n\n// Deprecations\nproto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\nproto$2.lang = lang;\n\n// Side effect imports\n\n// FORMATTING\n\naddFormatToken('X', 0, 0, 'unix');\naddFormatToken('x', 0, 0, 'valueOf');\n\n// PARSING\n\naddRegexToken('x', matchSigned);\naddRegexToken('X', matchTimestamp);\naddParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n});\naddParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n});\n\n// Side effect imports\n\n//! moment.js\n//! version : 2.17.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\nhooks.version = '2.17.1';\n\nsetHookCallback(createLocal);\n\nhooks.fn = proto;\nhooks.min = min;\nhooks.max = max;\nhooks.now = now;\nhooks.utc = createUTC;\nhooks.unix = createUnix;\nhooks.months = listMonths;\nhooks.isDate = isDate;\nhooks.locale = getSetGlobalLocale;\nhooks.invalid = createInvalid;\nhooks.duration = createDuration;\nhooks.isMoment = isMoment;\nhooks.weekdays = listWeekdays;\nhooks.parseZone = createInZone;\nhooks.localeData = getLocale;\nhooks.isDuration = isDuration;\nhooks.monthsShort = listMonthsShort;\nhooks.weekdaysMin = listWeekdaysMin;\nhooks.defineLocale = defineLocale;\nhooks.updateLocale = updateLocale;\nhooks.locales = listLocales;\nhooks.weekdaysShort = listWeekdaysShort;\nhooks.normalizeUnits = normalizeUnits;\nhooks.relativeTimeRounding = getSetRelativeTimeRounding;\nhooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\nhooks.calendarFormat = getCalendarFormat;\nhooks.prototype = proto;\n\n//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\nhooks.defineLocale('af', {\n months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),\n monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),\n weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM : function (input) {\n return /^nm$/i.test(input);\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Vandag om] LT',\n nextDay : '[Môre om] LT',\n nextWeek : 'dddd [om] LT',\n lastDay : '[Gister om] LT',\n lastWeek : '[Laas] dddd [om] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'oor %s',\n past : '%s gelede',\n s : '\\'n paar sekondes',\n m : '\\'n minuut',\n mm : '%d minute',\n h : '\\'n uur',\n hh : '%d ure',\n d : '\\'n dag',\n dd : '%d dae',\n M : '\\'n maand',\n MM : '%d maande',\n y : '\\'n jaar',\n yy : '%d jaar'\n },\n ordinalParse: /\\d{1,2}(ste|de)/,\n ordinal : function (number) {\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week : {\n dow : 1, // Maandag is die eerste dag van die week.\n doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddineme\n\nhooks.defineLocale('ar-dz', {\n months : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n monthsShort : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'في %s',\n past : 'منذ %s',\n s : 'ثوان',\n m : 'دقيقة',\n mm : '%d دقائق',\n h : 'ساعة',\n hh : '%d ساعات',\n d : 'يوم',\n dd : '%d أيام',\n M : 'شهر',\n MM : '%d أشهر',\n y : 'سنة',\n yy : '%d سنوات'\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 4 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\nvar symbolMap = {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '0': '0'\n};\nvar pluralForm = function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n};\nvar plurals = {\n s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n};\nvar pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n};\nvar months$1 = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر'\n];\n\nhooks.defineLocale('ar-ly', {\n months : months$1,\n monthsShort : months$1,\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'D/\\u200FM/\\u200FYYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM : function (input) {\n return 'م' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar : {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'بعد %s',\n past : 'منذ %s',\n s : pluralize('s'),\n m : pluralize('m'),\n mm : pluralize('m'),\n h : pluralize('h'),\n hh : pluralize('h'),\n d : pluralize('d'),\n dd : pluralize('d'),\n M : pluralize('M'),\n MM : pluralize('M'),\n y : pluralize('y'),\n yy : pluralize('y')\n },\n preparse: function (string) {\n return string.replace(/\\u200f/g, '').replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\nhooks.defineLocale('ar-ma', {\n months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'في %s',\n past : 'منذ %s',\n s : 'ثوان',\n m : 'دقيقة',\n mm : '%d دقائق',\n h : 'ساعة',\n hh : '%d ساعات',\n d : 'يوم',\n dd : '%d أيام',\n M : 'شهر',\n MM : '%d أشهر',\n y : 'سنة',\n yy : '%d سنوات'\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\nvar symbolMap$1 = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠'\n};\nvar numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0'\n};\n\nhooks.defineLocale('ar-sa', {\n months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM : function (input) {\n return 'م' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar : {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'في %s',\n past : 'منذ %s',\n s : 'ثوان',\n m : 'دقيقة',\n mm : '%d دقائق',\n h : 'ساعة',\n hh : '%d ساعات',\n d : 'يوم',\n dd : '%d أيام',\n M : 'شهر',\n MM : '%d أشهر',\n y : 'سنة',\n yy : '%d سنوات'\n },\n preparse: function (string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$1[match];\n }).replace(/,/g, '،');\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\nhooks.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\nvar symbolMap$2 = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠'\n};\nvar numberMap$1 = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0'\n};\nvar pluralForm$1 = function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n};\nvar plurals$1 = {\n s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n};\nvar pluralize$1 = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm$1(number),\n str = plurals$1[u][pluralForm$1(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n};\nvar months$2 = [\n 'كانون الثاني يناير',\n 'شباط فبراير',\n 'آذار مارس',\n 'نيسان أبريل',\n 'أيار مايو',\n 'حزيران يونيو',\n 'تموز يوليو',\n 'آب أغسطس',\n 'أيلول سبتمبر',\n 'تشرين الأول أكتوبر',\n 'تشرين الثاني نوفمبر',\n 'كانون الأول ديسمبر'\n];\n\nhooks.defineLocale('ar', {\n months : months$2,\n monthsShort : months$2,\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'D/\\u200FM/\\u200FYYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM : function (input) {\n return 'م' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar : {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'بعد %s',\n past : 'منذ %s',\n s : pluralize$1('s'),\n m : pluralize$1('m'),\n mm : pluralize$1('m'),\n h : pluralize$1('h'),\n hh : pluralize$1('h'),\n d : pluralize$1('d'),\n dd : pluralize$1('d'),\n M : pluralize$1('M'),\n MM : pluralize$1('M'),\n y : pluralize$1('y'),\n yy : pluralize$1('y')\n },\n preparse: function (string) {\n return string.replace(/\\u200f/g, '').replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap$1[match];\n }).replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$2[match];\n }).replace(/,/g, '،');\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\nvar suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı'\n};\n\nhooks.defineLocale('az', {\n months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),\n monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),\n weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[bugün saat] LT',\n nextDay : '[sabah saat] LT',\n nextWeek : '[gələn həftə] dddd [saat] LT',\n lastDay : '[dünən] LT',\n lastWeek : '[keçən həftə] dddd [saat] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s sonra',\n past : '%s əvvəl',\n s : 'birneçə saniyyə',\n m : 'bir dəqiqə',\n mm : '%d dəqiqə',\n h : 'bir saat',\n hh : '%d saat',\n d : 'bir gün',\n dd : '%d gün',\n M : 'bir ay',\n MM : '%d ay',\n y : 'bir il',\n yy : '%d il'\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM : function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n ordinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal : function (number) {\n if (number === 0) { // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\nfunction plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n}\nfunction relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n 'dd': 'дзень_дні_дзён',\n 'MM': 'месяц_месяцы_месяцаў',\n 'yy': 'год_гады_гадоў'\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n }\n else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n }\n else {\n return number + ' ' + plural(format[key], +number);\n }\n}\n\nhooks.defineLocale('be', {\n months : {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),\n standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')\n },\n monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n weekdays : {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),\n standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),\n isFormat: /\\[ ?[Вв] ?(?:мінулую|наступную)? ?\\] ?dddd/\n },\n weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY г.',\n LLL : 'D MMMM YYYY г., HH:mm',\n LLLL : 'dddd, D MMMM YYYY г., HH:mm'\n },\n calendar : {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'праз %s',\n past : '%s таму',\n s : 'некалькі секунд',\n m : relativeTimeWithPlural,\n mm : relativeTimeWithPlural,\n h : relativeTimeWithPlural,\n hh : relativeTimeWithPlural,\n d : 'дзень',\n dd : relativeTimeWithPlural,\n M : 'месяц',\n MM : relativeTimeWithPlural,\n y : 'год',\n yy : relativeTimeWithPlural\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM : function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n ordinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\nhooks.defineLocale('bg', {\n months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),\n monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),\n weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'D.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY H:mm',\n LLLL : 'dddd, D MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[Днес в] LT',\n nextDay : '[Утре в] LT',\n nextWeek : 'dddd [в] LT',\n lastDay : '[Вчера в] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[В изминалата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[В изминалия] dddd [в] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'след %s',\n past : 'преди %s',\n s : 'няколко секунди',\n m : 'минута',\n mm : '%d минути',\n h : 'час',\n hh : '%d часа',\n d : 'ден',\n dd : '%d дни',\n M : 'месец',\n MM : '%d месеца',\n y : 'година',\n yy : '%d години'\n },\n ordinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal : function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\nvar symbolMap$3 = {\n '1': '১',\n '2': '২',\n '3': '৩',\n '4': '৪',\n '5': '৫',\n '6': '৬',\n '7': '৭',\n '8': '৮',\n '9': '৯',\n '0': '০'\n};\nvar numberMap$2 = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0'\n};\n\nhooks.defineLocale('bn', {\n months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),\n monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),\n weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),\n weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),\n longDateFormat : {\n LT : 'A h:mm সময়',\n LTS : 'A h:mm:ss সময়',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm সময়',\n LLLL : 'dddd, D MMMM YYYY, A h:mm সময়'\n },\n calendar : {\n sameDay : '[আজ] LT',\n nextDay : '[আগামীকাল] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[গতকাল] LT',\n lastWeek : '[গত] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s পরে',\n past : '%s আগে',\n s : 'কয়েক সেকেন্ড',\n m : 'এক মিনিট',\n mm : '%d মিনিট',\n h : 'এক ঘন্টা',\n hh : '%d ঘন্টা',\n d : 'এক দিন',\n dd : '%d দিন',\n M : 'এক মাস',\n MM : '%d মাস',\n y : 'এক বছর',\n yy : '%d বছর'\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap$2[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$3[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if ((meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\nvar symbolMap$4 = {\n '1': '༡',\n '2': '༢',\n '3': '༣',\n '4': '༤',\n '5': '༥',\n '6': '༦',\n '7': '༧',\n '8': '༨',\n '9': '༩',\n '0': '༠'\n};\nvar numberMap$3 = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0'\n};\n\nhooks.defineLocale('bo', {\n months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),\n weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n longDateFormat : {\n LT : 'A h:mm',\n LTS : 'A h:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm',\n LLLL : 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar : {\n sameDay : '[དི་རིང] LT',\n nextDay : '[སང་ཉིན] LT',\n nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay : '[ཁ་སང] LT',\n lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ལ་',\n past : '%s སྔན་ལ',\n s : 'ལམ་སང',\n m : 'སྐར་མ་གཅིག',\n mm : '%d སྐར་མ',\n h : 'ཆུ་ཚོད་གཅིག',\n hh : '%d ཆུ་ཚོད',\n d : 'ཉིན་གཅིག',\n dd : '%d ཉིན་',\n M : 'ཟླ་བ་གཅིག',\n MM : '%d ཟླ་བ',\n y : 'ལོ་གཅིག',\n yy : '%d ལོ'\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap$3[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$4[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if ((meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\nfunction relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n 'mm': 'munutenn',\n 'MM': 'miz',\n 'dd': 'devezh'\n };\n return number + ' ' + mutation(format[key], number);\n}\nfunction specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n}\nfunction lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n}\nfunction mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n}\nfunction softMutation(text) {\n var mutationTable = {\n 'm': 'v',\n 'b': 'v',\n 'd': 'z'\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n}\n\nhooks.defineLocale('br', {\n months : 'Genver_C\\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),\n monthsShort : 'Gen_C\\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays : 'Sul_Lun_Meurzh_Merc\\'her_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'h[e]mm A',\n LTS : 'h[e]mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D [a viz] MMMM YYYY',\n LLL : 'D [a viz] MMMM YYYY h[e]mm A',\n LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A'\n },\n calendar : {\n sameDay : '[Hiziv da] LT',\n nextDay : '[Warc\\'hoazh da] LT',\n nextWeek : 'dddd [da] LT',\n lastDay : '[Dec\\'h da] LT',\n lastWeek : 'dddd [paset da] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'a-benn %s',\n past : '%s \\'zo',\n s : 'un nebeud segondennoù',\n m : 'ur vunutenn',\n mm : relativeTimeWithMutation,\n h : 'un eur',\n hh : '%d eur',\n d : 'un devezh',\n dd : relativeTimeWithMutation,\n M : 'ur miz',\n MM : relativeTimeWithMutation,\n y : 'ur bloaz',\n yy : specialMutationForYears\n },\n ordinalParse: /\\d{1,2}(añ|vet)/,\n ordinal : function (number) {\n var output = (number === 1) ? 'añ' : 'vet';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\nfunction translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n}\n\nhooks.defineLocale('bs', {\n months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd, D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[danas u] LT',\n nextDay : '[sutra u] LT',\n nextWeek : function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay : '[jučer u] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'prije %s',\n s : 'par sekundi',\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : 'dan',\n dd : translate,\n M : 'mjesec',\n MM : translate,\n y : 'godinu',\n yy : translate\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\nhooks.defineLocale('ca', {\n months : 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),\n monthsShort : 'gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.'.split('_'),\n monthsParseExact : true,\n weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),\n weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin : 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY H:mm',\n LLLL : 'dddd D MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : function () {\n return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n nextDay : function () {\n return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n lastDay : function () {\n return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n lastWeek : function () {\n return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'd\\'aquí %s',\n past : 'fa %s',\n s : 'uns segons',\n m : 'un minut',\n mm : '%d minuts',\n h : 'una hora',\n hh : '%d hores',\n d : 'un dia',\n dd : '%d dies',\n M : 'un mes',\n MM : '%d mesos',\n y : 'un any',\n yy : '%d anys'\n },\n ordinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal : function (number, period) {\n var output = (number === 1) ? 'r' :\n (number === 2) ? 'n' :\n (number === 3) ? 'r' :\n (number === 4) ? 't' : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\nvar months$3 = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_');\nvar monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');\nfunction plural$1(n) {\n return (n > 1) && (n < 5) && (~~(n / 10) !== 1);\n}\nfunction translate$1(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n break;\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n break;\n case 'd': // a day / in a day / a day ago\n return (withoutSuffix || isFuture) ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n break;\n case 'M': // a month / in a month / a month ago\n return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n break;\n case 'y': // a year / in a year / a year ago\n return (withoutSuffix || isFuture) ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n break;\n }\n}\n\nhooks.defineLocale('cs', {\n months : months$3,\n monthsShort : monthsShort,\n monthsParse : (function (months, monthsShort) {\n var i, _monthsParse = [];\n for (i = 0; i < 12; i++) {\n // use custom parser to solve problem with July (červenec)\n _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');\n }\n return _monthsParse;\n }(months$3, monthsShort)),\n shortMonthsParse : (function (monthsShort) {\n var i, _shortMonthsParse = [];\n for (i = 0; i < 12; i++) {\n _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i');\n }\n return _shortMonthsParse;\n }(monthsShort)),\n longMonthsParse : (function (months) {\n var i, _longMonthsParse = [];\n for (i = 0; i < 12; i++) {\n _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i');\n }\n return _longMonthsParse;\n }(months$3)),\n weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat : {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd D. MMMM YYYY H:mm',\n l : 'D. M. YYYY'\n },\n calendar : {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'před %s',\n s : translate$1,\n m : translate$1,\n mm : translate$1,\n h : translate$1,\n hh : translate$1,\n d : translate$1,\n dd : translate$1,\n M : translate$1,\n MM : translate$1,\n y : translate$1,\n yy : translate$1\n },\n ordinalParse : /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\nhooks.defineLocale('cv', {\n months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),\n monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),\n weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD-MM-YYYY',\n LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'\n },\n calendar : {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L'\n },\n relativeTime : {\n future : function (output) {\n var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';\n return output + affix;\n },\n past : '%s каялла',\n s : 'пӗр-ик ҫеккунт',\n m : 'пӗр минут',\n mm : '%d минут',\n h : 'пӗр сехет',\n hh : '%d сехет',\n d : 'пӗр кун',\n dd : '%d кун',\n M : 'пӗр уйӑх',\n MM : '%d уйӑх',\n y : 'пӗр ҫул',\n yy : '%d ҫул'\n },\n ordinalParse: /\\d{1,2}-мӗш/,\n ordinal : '%d-мӗш',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\nhooks.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact : true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS : 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd'\n },\n ordinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed\n 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\nhooks.defineLocale('da', {\n months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),\n monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd [d.] D. MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[I dag kl.] LT',\n nextDay : '[I morgen kl.] LT',\n nextWeek : 'dddd [kl.] LT',\n lastDay : '[I går kl.] LT',\n lastWeek : '[sidste] dddd [kl] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : '%s siden',\n s : 'få sekunder',\n m : 'et minut',\n mm : '%d minutter',\n h : 'en time',\n hh : '%d timer',\n d : 'en dag',\n dd : '%d dage',\n M : 'en måned',\n MM : '%d måneder',\n y : 'et år',\n yy : '%d år'\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 'm': ['eine Minute', 'einer Minute'],\n 'h': ['eine Stunde', 'einer Stunde'],\n 'd': ['ein Tag', 'einem Tag'],\n 'dd': [number + ' Tage', number + ' Tagen'],\n 'M': ['ein Monat', 'einem Monat'],\n 'MM': [number + ' Monate', number + ' Monaten'],\n 'y': ['ein Jahr', 'einem Jahr'],\n 'yy': [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n}\n\nhooks.defineLocale('de-at', {\n months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime : {\n future : 'in %s',\n past : 'vor %s',\n s : 'ein paar Sekunden',\n m : processRelativeTime,\n mm : '%d Minuten',\n h : processRelativeTime,\n hh : '%d Stunden',\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\nfunction processRelativeTime$1(number, withoutSuffix, key, isFuture) {\n var format = {\n 'm': ['eine Minute', 'einer Minute'],\n 'h': ['eine Stunde', 'einer Stunde'],\n 'd': ['ein Tag', 'einem Tag'],\n 'dd': [number + ' Tage', number + ' Tagen'],\n 'M': ['ein Monat', 'einem Monat'],\n 'MM': [number + ' Monate', number + ' Monaten'],\n 'y': ['ein Jahr', 'einem Jahr'],\n 'yy': [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n}\n\nhooks.defineLocale('de', {\n months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime : {\n future : 'in %s',\n past : 'vor %s',\n s : 'ein paar Sekunden',\n m : processRelativeTime$1,\n mm : '%d Minuten',\n h : processRelativeTime$1,\n hh : '%d Stunden',\n d : processRelativeTime$1,\n dd : processRelativeTime$1,\n M : processRelativeTime$1,\n MM : processRelativeTime$1,\n y : processRelativeTime$1,\n yy : processRelativeTime$1\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\nvar months$4 = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު'\n];\nvar weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު'\n];\n\nhooks.defineLocale('dv', {\n months : months$4,\n monthsShort : months$4,\n weekdays : weekdays,\n weekdaysShort : weekdays,\n weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat : {\n\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'D/M/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /މކ|މފ/,\n isPM : function (input) {\n return 'މފ' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar : {\n sameDay : '[މިއަދު] LT',\n nextDay : '[މާދަމާ] LT',\n nextWeek : 'dddd LT',\n lastDay : '[އިއްޔެ] LT',\n lastWeek : '[ފާއިތުވި] dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'ތެރޭގައި %s',\n past : 'ކުރިން %s',\n s : 'ސިކުންތުކޮޅެއް',\n m : 'މިނިޓެއް',\n mm : 'މިނިޓު %d',\n h : 'ގަޑިއިރެއް',\n hh : 'ގަޑިއިރު %d',\n d : 'ދުވަހެއް',\n dd : 'ދުވަސް %d',\n M : 'މަހެއް',\n MM : 'މަސް %d',\n y : 'އަހަރެއް',\n yy : 'އަހަރު %d'\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week : {\n dow : 7, // Sunday is the first day of the week.\n doy : 12 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\nhooks.defineLocale('el', {\n monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),\n monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),\n months : function (momentToFormat, format) {\n if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),\n weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem : function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM : function (input) {\n return ((input + '').toLowerCase()[0] === 'μ');\n },\n meridiemParse : /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendarEl : {\n sameDay : '[Σήμερα {}] LT',\n nextDay : '[Αύριο {}] LT',\n nextWeek : 'dddd [{}] LT',\n lastDay : '[Χθες {}] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse : 'L'\n },\n calendar : function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις'));\n },\n relativeTime : {\n future : 'σε %s',\n past : '%s πριν',\n s : 'λίγα δευτερόλεπτα',\n m : 'ένα λεπτό',\n mm : '%d λεπτά',\n h : 'μία ώρα',\n hh : '%d ώρες',\n d : 'μία μέρα',\n dd : '%d μέρες',\n M : 'ένας μήνας',\n MM : '%d μήνες',\n y : 'ένας χρόνος',\n yy : '%d χρόνια'\n },\n ordinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\nhooks.defineLocale('en-au', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n ordinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\nhooks.defineLocale('en-ca', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'YYYY-MM-DD',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n ordinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n});\n\n//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\nhooks.defineLocale('en-gb', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n ordinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\nhooks.defineLocale('en-ie', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD-MM-YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n ordinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\nhooks.defineLocale('en-nz', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n ordinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko.\n//! Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni!\n\nhooks.defineLocale('eo', {\n months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'),\n monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'),\n weekdays : 'Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato'.split('_'),\n weekdaysShort : 'Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab'.split('_'),\n weekdaysMin : 'Di_Lu_Ma_Me_Ĵa_Ve_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'D[-an de] MMMM, YYYY',\n LLL : 'D[-an de] MMMM, YYYY HH:mm',\n LLLL : 'dddd, [la] D[-an de] MMMM, YYYY HH:mm'\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar : {\n sameDay : '[Hodiaŭ je] LT',\n nextDay : '[Morgaŭ je] LT',\n nextWeek : 'dddd [je] LT',\n lastDay : '[Hieraŭ je] LT',\n lastWeek : '[pasinta] dddd [je] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'je %s',\n past : 'antaŭ %s',\n s : 'sekundoj',\n m : 'minuto',\n mm : '%d minutoj',\n h : 'horo',\n hh : '%d horoj',\n d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo\n dd : '%d tagoj',\n M : 'monato',\n MM : '%d monatoj',\n y : 'jaro',\n yy : '%d jaroj'\n },\n ordinalParse: /\\d{1,2}a/,\n ordinal : '%da',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\nvar monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');\nvar monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\nhooks.defineLocale('es-do', {\n months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort : function (m, format) {\n if (/-MMM-/.test(format)) {\n return monthsShort$1[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsParseExact : true,\n weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY h:mm A',\n LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'\n },\n calendar : {\n sameDay : function () {\n return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextDay : function () {\n return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastDay : function () {\n return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastWeek : function () {\n return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'en %s',\n past : 'hace %s',\n s : 'unos segundos',\n m : 'un minuto',\n mm : '%d minutos',\n h : 'una hora',\n hh : '%d horas',\n d : 'un día',\n dd : '%d días',\n M : 'un mes',\n MM : '%d meses',\n y : 'un año',\n yy : '%d años'\n },\n ordinalParse : /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\nvar monthsShortDot$1 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');\nvar monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\nhooks.defineLocale('es', {\n months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort : function (m, format) {\n if (/-MMM-/.test(format)) {\n return monthsShort$2[m.month()];\n } else {\n return monthsShortDot$1[m.month()];\n }\n },\n monthsParseExact : true,\n weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY H:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar : {\n sameDay : function () {\n return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextDay : function () {\n return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastDay : function () {\n return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastWeek : function () {\n return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'en %s',\n past : 'hace %s',\n s : 'unos segundos',\n m : 'un minuto',\n mm : '%d minutos',\n h : 'una hora',\n hh : '%d horas',\n d : 'un día',\n dd : '%d días',\n M : 'un mes',\n MM : '%d meses',\n y : 'un año',\n yy : '%d años'\n },\n ordinalParse : /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\nfunction processRelativeTime$2(number, withoutSuffix, key, isFuture) {\n var format = {\n 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n 'm' : ['ühe minuti', 'üks minut'],\n 'mm': [number + ' minuti', number + ' minutit'],\n 'h' : ['ühe tunni', 'tund aega', 'üks tund'],\n 'hh': [number + ' tunni', number + ' tundi'],\n 'd' : ['ühe päeva', 'üks päev'],\n 'M' : ['kuu aja', 'kuu aega', 'üks kuu'],\n 'MM': [number + ' kuu', number + ' kuud'],\n 'y' : ['ühe aasta', 'aasta', 'üks aasta'],\n 'yy': [number + ' aasta', number + ' aastat']\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n}\n\nhooks.defineLocale('et', {\n months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),\n monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),\n weekdaysShort : 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin : 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd, D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[Täna,] LT',\n nextDay : '[Homme,] LT',\n nextWeek : '[Järgmine] dddd LT',\n lastDay : '[Eile,] LT',\n lastWeek : '[Eelmine] dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s pärast',\n past : '%s tagasi',\n s : processRelativeTime$2,\n m : processRelativeTime$2,\n mm : processRelativeTime$2,\n h : processRelativeTime$2,\n hh : processRelativeTime$2,\n d : processRelativeTime$2,\n dd : '%d päeva',\n M : processRelativeTime$2,\n MM : processRelativeTime$2,\n y : processRelativeTime$2,\n yy : processRelativeTime$2\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\nhooks.defineLocale('eu', {\n months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),\n monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),\n monthsParseExact : true,\n weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),\n weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'YYYY[ko] MMMM[ren] D[a]',\n LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l : 'YYYY-M-D',\n ll : 'YYYY[ko] MMM D[a]',\n lll : 'YYYY[ko] MMM D[a] HH:mm',\n llll : 'ddd, YYYY[ko] MMM D[a] HH:mm'\n },\n calendar : {\n sameDay : '[gaur] LT[etan]',\n nextDay : '[bihar] LT[etan]',\n nextWeek : 'dddd LT[etan]',\n lastDay : '[atzo] LT[etan]',\n lastWeek : '[aurreko] dddd LT[etan]',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s barru',\n past : 'duela %s',\n s : 'segundo batzuk',\n m : 'minutu bat',\n mm : '%d minutu',\n h : 'ordu bat',\n hh : '%d ordu',\n d : 'egun bat',\n dd : '%d egun',\n M : 'hilabete bat',\n MM : '%d hilabete',\n y : 'urte bat',\n yy : '%d urte'\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\nvar symbolMap$5 = {\n '1': '۱',\n '2': '۲',\n '3': '۳',\n '4': '۴',\n '5': '۵',\n '6': '۶',\n '7': '۷',\n '8': '۸',\n '9': '۹',\n '0': '۰'\n};\nvar numberMap$4 = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0'\n};\n\nhooks.defineLocale('fa', {\n months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n weekdays : 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n weekdaysShort : 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar : {\n sameDay : '[امروز ساعت] LT',\n nextDay : '[فردا ساعت] LT',\n nextWeek : 'dddd [ساعت] LT',\n lastDay : '[دیروز ساعت] LT',\n lastWeek : 'dddd [پیش] [ساعت] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'در %s',\n past : '%s پیش',\n s : 'چندین ثانیه',\n m : 'یک دقیقه',\n mm : '%d دقیقه',\n h : 'یک ساعت',\n hh : '%d ساعت',\n d : 'یک روز',\n dd : '%d روز',\n M : 'یک ماه',\n MM : '%d ماه',\n y : 'یک سال',\n yy : '%d سال'\n },\n preparse: function (string) {\n return string.replace(/[۰-۹]/g, function (match) {\n return numberMap$4[match];\n }).replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$5[match];\n }).replace(/,/g, '،');\n },\n ordinalParse: /\\d{1,2}م/,\n ordinal : '%dم',\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\nvar numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' ');\nvar numbersFuture = [\n 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',\n numbersPast[7], numbersPast[8], numbersPast[9]\n ];\nfunction translate$2(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n}\nfunction verbalNumber(number, isFuture) {\n return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;\n}\n\nhooks.defineLocale('fi', {\n months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),\n monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),\n weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),\n weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD.MM.YYYY',\n LL : 'Do MMMM[ta] YYYY',\n LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l : 'D.M.YYYY',\n ll : 'Do MMM YYYY',\n lll : 'Do MMM YYYY, [klo] HH.mm',\n llll : 'ddd, Do MMM YYYY, [klo] HH.mm'\n },\n calendar : {\n sameDay : '[tänään] [klo] LT',\n nextDay : '[huomenna] [klo] LT',\n nextWeek : 'dddd [klo] LT',\n lastDay : '[eilen] [klo] LT',\n lastWeek : '[viime] dddd[na] [klo] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s päästä',\n past : '%s sitten',\n s : translate$2,\n m : translate$2,\n mm : translate$2,\n h : translate$2,\n hh : translate$2,\n d : translate$2,\n dd : translate$2,\n M : translate$2,\n MM : translate$2,\n y : translate$2,\n yy : translate$2\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n\nhooks.defineLocale('fo', {\n months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),\n weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D. MMMM, YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Í dag kl.] LT',\n nextDay : '[Í morgin kl.] LT',\n nextWeek : 'dddd [kl.] LT',\n lastDay : '[Í gjár kl.] LT',\n lastWeek : '[síðstu] dddd [kl] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'um %s',\n past : '%s síðani',\n s : 'fá sekund',\n m : 'ein minutt',\n mm : '%d minuttir',\n h : 'ein tími',\n hh : '%d tímar',\n d : 'ein dagur',\n dd : '%d dagar',\n M : 'ein mánaði',\n MM : '%d mánaðir',\n y : 'eitt ár',\n yy : '%d ár'\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\nhooks.defineLocale('fr-ca', {\n months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact : true,\n weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Aujourd\\'hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'dans %s',\n past : 'il y a %s',\n s : 'quelques secondes',\n m : 'une minute',\n mm : '%d minutes',\n h : 'une heure',\n hh : '%d heures',\n d : 'un jour',\n dd : '%d jours',\n M : 'un mois',\n MM : '%d mois',\n y : 'un an',\n yy : '%d ans'\n },\n ordinalParse: /\\d{1,2}(er|e)/,\n ordinal : function (number) {\n return number + (number === 1 ? 'er' : 'e');\n }\n});\n\n//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\nhooks.defineLocale('fr-ch', {\n months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact : true,\n weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Aujourd\\'hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'dans %s',\n past : 'il y a %s',\n s : 'quelques secondes',\n m : 'une minute',\n mm : '%d minutes',\n h : 'une heure',\n hh : '%d heures',\n d : 'un jour',\n dd : '%d jours',\n M : 'un mois',\n MM : '%d mois',\n y : 'un an',\n yy : '%d ans'\n },\n ordinalParse: /\\d{1,2}(er|e)/,\n ordinal : function (number) {\n return number + (number === 1 ? 'er' : 'e');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\nhooks.defineLocale('fr', {\n months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact : true,\n weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Aujourd\\'hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'dans %s',\n past : 'il y a %s',\n s : 'quelques secondes',\n m : 'une minute',\n mm : '%d minutes',\n h : 'une heure',\n hh : '%d heures',\n d : 'un jour',\n dd : '%d jours',\n M : 'un mois',\n MM : '%d mois',\n y : 'un an',\n yy : '%d ans'\n },\n ordinalParse: /\\d{1,2}(er|)/,\n ordinal : function (number) {\n return number + (number === 1 ? 'er' : '');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\nvar monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_');\nvar monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\nhooks.defineLocale('fy', {\n months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),\n monthsShort : function (m, format) {\n if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact : true,\n weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),\n weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD-MM-YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'oer %s',\n past : '%s lyn',\n s : 'in pear sekonden',\n m : 'ien minút',\n mm : '%d minuten',\n h : 'ien oere',\n hh : '%d oeren',\n d : 'ien dei',\n dd : '%d dagen',\n M : 'ien moanne',\n MM : '%d moannen',\n y : 'ien jier',\n yy : '%d jierren'\n },\n ordinalParse: /\\d{1,2}(ste|de)/,\n ordinal : function (number) {\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\nvar months$5 = [\n 'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd'\n];\n\nvar monthsShort$3 = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'];\n\nvar weekdays$1 = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'];\n\nvar weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'];\n\nvar weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\nhooks.defineLocale('gd', {\n months : months$5,\n monthsShort : monthsShort$3,\n monthsParseExact : true,\n weekdays : weekdays$1,\n weekdaysShort : weekdaysShort,\n weekdaysMin : weekdaysMin,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[An-diugh aig] LT',\n nextDay : '[A-màireach aig] LT',\n nextWeek : 'dddd [aig] LT',\n lastDay : '[An-dè aig] LT',\n lastWeek : 'dddd [seo chaidh] [aig] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'ann an %s',\n past : 'bho chionn %s',\n s : 'beagan diogan',\n m : 'mionaid',\n mm : '%d mionaidean',\n h : 'uair',\n hh : '%d uairean',\n d : 'latha',\n dd : '%d latha',\n M : 'mìos',\n MM : '%d mìosan',\n y : 'bliadhna',\n yy : '%d bliadhna'\n },\n ordinalParse : /\\d{1,2}(d|na|mh)/,\n ordinal : function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\nhooks.defineLocale('gl', {\n months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),\n monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY H:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar : {\n sameDay : function () {\n return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';\n },\n nextDay : function () {\n return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';\n },\n lastDay : function () {\n return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';\n },\n lastWeek : function () {\n return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past : 'hai %s',\n s : 'uns segundos',\n m : 'un minuto',\n mm : '%d minutos',\n h : 'unha hora',\n hh : '%d horas',\n d : 'un día',\n dd : '%d días',\n M : 'un mes',\n MM : '%d meses',\n y : 'un ano',\n yy : '%d anos'\n },\n ordinalParse : /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\nhooks.defineLocale('he', {\n months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),\n monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [ב]MMMM YYYY',\n LLL : 'D [ב]MMMM YYYY HH:mm',\n LLLL : 'dddd, D [ב]MMMM YYYY HH:mm',\n l : 'D/M/YYYY',\n ll : 'D MMM YYYY',\n lll : 'D MMM YYYY HH:mm',\n llll : 'ddd, D MMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[היום ב־]LT',\n nextDay : '[מחר ב־]LT',\n nextWeek : 'dddd [בשעה] LT',\n lastDay : '[אתמול ב־]LT',\n lastWeek : '[ביום] dddd [האחרון בשעה] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'בעוד %s',\n past : 'לפני %s',\n s : 'מספר שניות',\n m : 'דקה',\n mm : '%d דקות',\n h : 'שעה',\n hh : function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d : 'יום',\n dd : function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M : 'חודש',\n MM : function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y : 'שנה',\n yy : function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n }\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM : function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n }\n});\n\n//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\nvar symbolMap$6 = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०'\n};\nvar numberMap$5 = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n};\n\nhooks.defineLocale('hi', {\n months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),\n monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n monthsParseExact: true,\n weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat : {\n LT : 'A h:mm बजे',\n LTS : 'A h:mm:ss बजे',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm बजे',\n LLLL : 'dddd, D MMMM YYYY, A h:mm बजे'\n },\n calendar : {\n sameDay : '[आज] LT',\n nextDay : '[कल] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[कल] LT',\n lastWeek : '[पिछले] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s में',\n past : '%s पहले',\n s : 'कुछ ही क्षण',\n m : 'एक मिनट',\n mm : '%d मिनट',\n h : 'एक घंटा',\n hh : '%d घंटे',\n d : 'एक दिन',\n dd : '%d दिन',\n M : 'एक महीने',\n MM : '%d महीने',\n y : 'एक वर्ष',\n yy : '%d वर्ष'\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap$5[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$6[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\nfunction translate$3(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n}\n\nhooks.defineLocale('hr', {\n months : {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),\n standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')\n },\n monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),\n monthsParseExact: true,\n weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd, D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[danas u] LT',\n nextDay : '[sutra u] LT',\n nextWeek : function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay : '[jučer u] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'prije %s',\n s : 'par sekundi',\n m : translate$3,\n mm : translate$3,\n h : translate$3,\n hh : translate$3,\n d : 'dan',\n dd : translate$3,\n M : 'mjesec',\n MM : translate$3,\n y : 'godinu',\n yy : translate$3\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n\nvar weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\nfunction translate$4(number, withoutSuffix, key, isFuture) {\n var num = number,\n suffix;\n switch (key) {\n case 's':\n return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n}\nfunction week(isFuture) {\n return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';\n}\n\nhooks.defineLocale('hu', {\n months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),\n monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),\n weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'YYYY.MM.DD.',\n LL : 'YYYY. MMMM D.',\n LLL : 'YYYY. MMMM D. H:mm',\n LLLL : 'YYYY. MMMM D., dddd H:mm'\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar : {\n sameDay : '[ma] LT[-kor]',\n nextDay : '[holnap] LT[-kor]',\n nextWeek : function () {\n return week.call(this, true);\n },\n lastDay : '[tegnap] LT[-kor]',\n lastWeek : function () {\n return week.call(this, false);\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s múlva',\n past : '%s',\n s : translate$4,\n m : translate$4,\n mm : translate$4,\n h : translate$4,\n hh : translate$4,\n d : translate$4,\n dd : translate$4,\n M : translate$4,\n MM : translate$4,\n y : translate$4,\n yy : translate$4\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\nhooks.defineLocale('hy-am', {\n months : {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),\n standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_')\n },\n monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),\n weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY թ.',\n LLL : 'D MMMM YYYY թ., HH:mm',\n LLLL : 'dddd, D MMMM YYYY թ., HH:mm'\n },\n calendar : {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s հետո',\n past : '%s առաջ',\n s : 'մի քանի վայրկյան',\n m : 'րոպե',\n mm : '%d րոպե',\n h : 'ժամ',\n hh : '%d ժամ',\n d : 'օր',\n dd : '%d օր',\n M : 'ամիս',\n MM : '%d ամիս',\n y : 'տարի',\n yy : '%d տարի'\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem : function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n ordinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\nhooks.defineLocale('id', {\n months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'),\n weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar : {\n sameDay : '[Hari ini pukul] LT',\n nextDay : '[Besok pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kemarin pukul] LT',\n lastWeek : 'dddd [lalu pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dalam %s',\n past : '%s yang lalu',\n s : 'beberapa detik',\n m : 'semenit',\n mm : '%d menit',\n h : 'sejam',\n hh : '%d jam',\n d : 'sehari',\n dd : '%d hari',\n M : 'sebulan',\n MM : '%d bulan',\n y : 'setahun',\n yy : '%d tahun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\nfunction plural$2(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n}\nfunction translate$5(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural$2(number)) {\n return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural$2(number)) {\n return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural$2(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural$2(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural$2(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n}\n\nhooks.defineLocale('is', {\n months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),\n monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),\n weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY [kl.] H:mm',\n LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm'\n },\n calendar : {\n sameDay : '[í dag kl.] LT',\n nextDay : '[á morgun kl.] LT',\n nextWeek : 'dddd [kl.] LT',\n lastDay : '[í gær kl.] LT',\n lastWeek : '[síðasta] dddd [kl.] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'eftir %s',\n past : 'fyrir %s síðan',\n s : translate$5,\n m : translate$5,\n mm : translate$5,\n h : 'klukkustund',\n hh : translate$5,\n d : translate$5,\n dd : translate$5,\n M : translate$5,\n MM : translate$5,\n y : translate$5,\n yy : translate$5\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n\nhooks.defineLocale('it', {\n months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays : 'Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato'.split('_'),\n weekdaysShort : 'Dom_Lun_Mar_Mer_Gio_Ven_Sab'.split('_'),\n weekdaysMin : 'Do_Lu_Ma_Me_Gi_Ve_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : function (s) {\n return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past : '%s fa',\n s : 'alcuni secondi',\n m : 'un minuto',\n mm : '%d minuti',\n h : 'un\\'ora',\n hh : '%d ore',\n d : 'un giorno',\n dd : '%d giorni',\n M : 'un mese',\n MM : '%d mesi',\n y : 'un anno',\n yy : '%d anni'\n },\n ordinalParse : /\\d{1,2}º/,\n ordinal: '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\nhooks.defineLocale('ja', {\n months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort : '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin : '日_月_火_水_木_金_土'.split('_'),\n longDateFormat : {\n LT : 'Ah時m分',\n LTS : 'Ah時m分s秒',\n L : 'YYYY/MM/DD',\n LL : 'YYYY年M月D日',\n LLL : 'YYYY年M月D日Ah時m分',\n LLLL : 'YYYY年M月D日Ah時m分 dddd'\n },\n meridiemParse: /午前|午後/i,\n isPM : function (input) {\n return input === '午後';\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar : {\n sameDay : '[今日] LT',\n nextDay : '[明日] LT',\n nextWeek : '[来週]dddd LT',\n lastDay : '[昨日] LT',\n lastWeek : '[前週]dddd LT',\n sameElse : 'L'\n },\n ordinalParse : /\\d{1,2}日/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime : {\n future : '%s後',\n past : '%s前',\n s : '数秒',\n m : '1分',\n mm : '%d分',\n h : '1時間',\n hh : '%d時間',\n d : '1日',\n dd : '%d日',\n M : '1ヶ月',\n MM : '%dヶ月',\n y : '1年',\n yy : '%d年'\n }\n});\n\n//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\nhooks.defineLocale('jv', {\n months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar : {\n sameDay : '[Dinten puniko pukul] LT',\n nextDay : '[Mbenjang pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kala wingi pukul] LT',\n lastWeek : 'dddd [kepengker pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'wonten ing %s',\n past : '%s ingkang kepengker',\n s : 'sawetawis detik',\n m : 'setunggal menit',\n mm : '%d menit',\n h : 'setunggal jam',\n hh : '%d jam',\n d : 'sedinten',\n dd : '%d dinten',\n M : 'sewulan',\n MM : '%d wulan',\n y : 'setaun',\n yy : '%d taun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili\n\nhooks.defineLocale('ka', {\n months : {\n standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),\n format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')\n },\n monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays : {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),\n isFormat: /(წინა|შემდეგ)/\n },\n weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[დღეს] LT[-ზე]',\n nextDay : '[ხვალ] LT[-ზე]',\n lastDay : '[გუშინ] LT[-ზე]',\n nextWeek : '[შემდეგ] dddd LT[-ზე]',\n lastWeek : '[წინა] dddd LT-ზე',\n sameElse : 'L'\n },\n relativeTime : {\n future : function (s) {\n return (/(წამი|წუთი|საათი|წელი)/).test(s) ?\n s.replace(/ი$/, 'ში') :\n s + 'ში';\n },\n past : function (s) {\n if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if ((/წელი/).test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n },\n s : 'რამდენიმე წამი',\n m : 'წუთი',\n mm : '%d წუთი',\n h : 'საათი',\n hh : '%d საათი',\n d : 'დღე',\n dd : '%d დღე',\n M : 'თვე',\n MM : '%d თვე',\n y : 'წელი',\n yy : '%d წელი'\n },\n ordinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal : function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week : {\n dow : 1,\n doy : 7\n }\n});\n\n//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\nvar suffixes$1 = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші'\n};\n\nhooks.defineLocale('kk', {\n months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),\n monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),\n weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Бүгін сағат] LT',\n nextDay : '[Ертең сағат] LT',\n nextWeek : 'dddd [сағат] LT',\n lastDay : '[Кеше сағат] LT',\n lastWeek : '[Өткен аптаның] dddd [сағат] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ішінде',\n past : '%s бұрын',\n s : 'бірнеше секунд',\n m : 'бір минут',\n mm : '%d минут',\n h : 'бір сағат',\n hh : '%d сағат',\n d : 'бір күн',\n dd : '%d күн',\n M : 'бір ай',\n MM : '%d ай',\n y : 'бір жыл',\n yy : '%d жыл'\n },\n ordinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal : function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\nhooks.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS : 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ'\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \n\nhooks.defineLocale('ko', {\n months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort : '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin : '일_월_화_수_목_금_토'.split('_'),\n longDateFormat : {\n LT : 'A h시 m분',\n LTS : 'A h시 m분 s초',\n L : 'YYYY.MM.DD',\n LL : 'YYYY년 MMMM D일',\n LLL : 'YYYY년 MMMM D일 A h시 m분',\n LLLL : 'YYYY년 MMMM D일 dddd A h시 m분'\n },\n calendar : {\n sameDay : '오늘 LT',\n nextDay : '내일 LT',\n nextWeek : 'dddd LT',\n lastDay : '어제 LT',\n lastWeek : '지난주 dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s 후',\n past : '%s 전',\n s : '몇 초',\n ss : '%d초',\n m : '일분',\n mm : '%d분',\n h : '한 시간',\n hh : '%d시간',\n d : '하루',\n dd : '%d일',\n M : '한 달',\n MM : '%d달',\n y : '일 년',\n yy : '%d년'\n },\n ordinalParse : /\\d{1,2}일/,\n ordinal : '%d일',\n meridiemParse : /오전|오후/,\n isPM : function (token) {\n return token === '오후';\n },\n meridiem : function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n }\n});\n\n//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n\nvar suffixes$2 = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү'\n};\n\nhooks.defineLocale('ky', {\n months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),\n monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),\n weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),\n weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Бүгүн саат] LT',\n nextDay : '[Эртең саат] LT',\n nextWeek : 'dddd [саат] LT',\n lastDay : '[Кече саат] LT',\n lastWeek : '[Өткен аптанын] dddd [күнү] [саат] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ичинде',\n past : '%s мурун',\n s : 'бирнече секунд',\n m : 'бир мүнөт',\n mm : '%d мүнөт',\n h : 'бир саат',\n hh : '%d саат',\n d : 'бир күн',\n dd : '%d күн',\n M : 'бир ай',\n MM : '%d ай',\n y : 'бир жыл',\n yy : '%d жыл'\n },\n ordinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal : function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\nfunction processRelativeTime$3(number, withoutSuffix, key, isFuture) {\n var format = {\n 'm': ['eng Minutt', 'enger Minutt'],\n 'h': ['eng Stonn', 'enger Stonn'],\n 'd': ['een Dag', 'engem Dag'],\n 'M': ['ee Mount', 'engem Mount'],\n 'y': ['ee Joer', 'engem Joer']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n}\nfunction processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n}\nfunction processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n}\n/**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\nfunction eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10, firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n}\n\nhooks.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n }\n },\n relativeTime : {\n future : processFutureTime,\n past : processPastTime,\n s : 'e puer Sekonnen',\n m : processRelativeTime$3,\n mm : '%d Minutten',\n h : processRelativeTime$3,\n hh : '%d Stonnen',\n d : processRelativeTime$3,\n dd : '%d Deeg',\n M : processRelativeTime$3,\n MM : '%d Méint',\n y : processRelativeTime$3,\n yy : '%d Joer'\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\nhooks.defineLocale('lo', {\n months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'ວັນdddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar : {\n sameDay : '[ມື້ນີ້ເວລາ] LT',\n nextDay : '[ມື້ອື່ນເວລາ] LT',\n nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay : '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'ອີກ %s',\n past : '%sຜ່ານມາ',\n s : 'ບໍ່ເທົ່າໃດວິນາທີ',\n m : '1 ນາທີ',\n mm : '%d ນາທີ',\n h : '1 ຊົ່ວໂມງ',\n hh : '%d ຊົ່ວໂມງ',\n d : '1 ມື້',\n dd : '%d ມື້',\n M : '1 ເດືອນ',\n MM : '%d ເດືອນ',\n y : '1 ປີ',\n yy : '%d ປີ'\n },\n ordinalParse: /(ທີ່)\\d{1,2}/,\n ordinal : function (number) {\n return 'ທີ່' + number;\n }\n});\n\n//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\nvar units = {\n 'm' : 'minutė_minutės_minutę',\n 'mm': 'minutės_minučių_minutes',\n 'h' : 'valanda_valandos_valandą',\n 'hh': 'valandos_valandų_valandas',\n 'd' : 'diena_dienos_dieną',\n 'dd': 'dienos_dienų_dienas',\n 'M' : 'mėnuo_mėnesio_mėnesį',\n 'MM': 'mėnesiai_mėnesių_mėnesius',\n 'y' : 'metai_metų_metus',\n 'yy': 'metai_metų_metus'\n};\nfunction translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n}\nfunction translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);\n}\nfunction special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n}\nfunction forms(key) {\n return units[key].split('_');\n}\nfunction translate$6(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return result + translateSingular(number, withoutSuffix, key[0], isFuture);\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n}\nhooks.defineLocale('lt', {\n months : {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/\n },\n monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays : {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),\n isFormat: /dddd HH:mm/\n },\n weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'YYYY [m.] MMMM D [d.]',\n LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l : 'YYYY-MM-DD',\n ll : 'YYYY [m.] MMMM D [d.]',\n lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'\n },\n calendar : {\n sameDay : '[Šiandien] LT',\n nextDay : '[Rytoj] LT',\n nextWeek : 'dddd LT',\n lastDay : '[Vakar] LT',\n lastWeek : '[Praėjusį] dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'po %s',\n past : 'prieš %s',\n s : translateSeconds,\n m : translateSingular,\n mm : translate$6,\n h : translateSingular,\n hh : translate$6,\n d : translateSingular,\n dd : translate$6,\n M : translateSingular,\n MM : translate$6,\n y : translateSingular,\n yy : translate$6\n },\n ordinalParse: /\\d{1,2}-oji/,\n ordinal : function (number) {\n return number + '-oji';\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\nvar units$1 = {\n 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n 'h': 'stundas_stundām_stunda_stundas'.split('_'),\n 'hh': 'stundas_stundām_stunda_stundas'.split('_'),\n 'd': 'dienas_dienām_diena_dienas'.split('_'),\n 'dd': 'dienas_dienām_diena_dienas'.split('_'),\n 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n 'y': 'gada_gadiem_gads_gadi'.split('_'),\n 'yy': 'gada_gadiem_gads_gadi'.split('_')\n};\n/**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\nfunction format$1(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n}\nfunction relativeTimeWithPlural$1(number, withoutSuffix, key) {\n return number + ' ' + format$1(units$1[key], number, withoutSuffix);\n}\nfunction relativeTimeWithSingular(number, withoutSuffix, key) {\n return format$1(units$1[key], number, withoutSuffix);\n}\nfunction relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n}\n\nhooks.defineLocale('lv', {\n months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),\n monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),\n weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY.',\n LL : 'YYYY. [gada] D. MMMM',\n LLL : 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm'\n },\n calendar : {\n sameDay : '[Šodien pulksten] LT',\n nextDay : '[Rīt pulksten] LT',\n nextWeek : 'dddd [pulksten] LT',\n lastDay : '[Vakar pulksten] LT',\n lastWeek : '[Pagājušā] dddd [pulksten] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'pēc %s',\n past : 'pirms %s',\n s : relativeSeconds,\n m : relativeTimeWithSingular,\n mm : relativeTimeWithPlural$1,\n h : relativeTimeWithSingular,\n hh : relativeTimeWithPlural$1,\n d : relativeTimeWithSingular,\n dd : relativeTimeWithPlural$1,\n M : relativeTimeWithSingular,\n MM : relativeTimeWithPlural$1,\n y : relativeTimeWithSingular,\n yy : relativeTimeWithPlural$1\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač : https://github.com/miodragnikac\n\nvar translator = {\n words: { //Different grammatical cases\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina']\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n }\n }\n};\n\nhooks.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact : true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay : '[juče u] LT',\n lastWeek : function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT'\n ];\n return lastWeekDays[this.day()];\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'prije %s',\n s : 'nekoliko sekundi',\n m : translator.translate,\n mm : translator.translate,\n h : translator.translate,\n hh : translator.translate,\n d : 'dan',\n dd : translator.translate,\n M : 'mjesec',\n MM : translator.translate,\n y : 'godinu',\n yy : translator.translate\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\n\nhooks.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm'\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau'\n },\n ordinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n\nhooks.defineLocale('mk', {\n months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),\n monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),\n weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'D.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY H:mm',\n LLLL : 'dddd, D MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[Денес во] LT',\n nextDay : '[Утре во] LT',\n nextWeek : '[Во] dddd [во] LT',\n lastDay : '[Вчера во] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'после %s',\n past : 'пред %s',\n s : 'неколку секунди',\n m : 'минута',\n mm : '%d минути',\n h : 'час',\n hh : '%d часа',\n d : 'ден',\n dd : '%d дена',\n M : 'месец',\n MM : '%d месеци',\n y : 'година',\n yy : '%d години'\n },\n ordinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal : function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\nhooks.defineLocale('ml', {\n months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),\n monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),\n monthsParseExact : true,\n weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),\n weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat : {\n LT : 'A h:mm -നു',\n LTS : 'A h:mm:ss -നു',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm -നു',\n LLLL : 'dddd, D MMMM YYYY, A h:mm -നു'\n },\n calendar : {\n sameDay : '[ഇന്ന്] LT',\n nextDay : '[നാളെ] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[ഇന്നലെ] LT',\n lastWeek : '[കഴിഞ്ഞ] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s കഴിഞ്ഞ്',\n past : '%s മുൻപ്',\n s : 'അൽപ നിമിഷങ്ങൾ',\n m : 'ഒരു മിനിറ്റ്',\n mm : '%d മിനിറ്റ്',\n h : 'ഒരു മണിക്കൂർ',\n hh : '%d മണിക്കൂർ',\n d : 'ഒരു ദിവസം',\n dd : '%d ദിവസം',\n M : 'ഒരു മാസം',\n MM : '%d മാസം',\n y : 'ഒരു വർഷം',\n yy : '%d വർഷം'\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if ((meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n }\n});\n\n//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\nvar symbolMap$7 = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०'\n};\nvar numberMap$6 = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n};\n\nfunction relativeTimeMr(number, withoutSuffix, string, isFuture)\n{\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's': output = 'काही सेकंद'; break;\n case 'm': output = 'एक मिनिट'; break;\n case 'mm': output = '%d मिनिटे'; break;\n case 'h': output = 'एक तास'; break;\n case 'hh': output = '%d तास'; break;\n case 'd': output = 'एक दिवस'; break;\n case 'dd': output = '%d दिवस'; break;\n case 'M': output = 'एक महिना'; break;\n case 'MM': output = '%d महिने'; break;\n case 'y': output = 'एक वर्ष'; break;\n case 'yy': output = '%d वर्षे'; break;\n }\n }\n else {\n switch (string) {\n case 's': output = 'काही सेकंदां'; break;\n case 'm': output = 'एका मिनिटा'; break;\n case 'mm': output = '%d मिनिटां'; break;\n case 'h': output = 'एका तासा'; break;\n case 'hh': output = '%d तासां'; break;\n case 'd': output = 'एका दिवसा'; break;\n case 'dd': output = '%d दिवसां'; break;\n case 'M': output = 'एका महिन्या'; break;\n case 'MM': output = '%d महिन्यां'; break;\n case 'y': output = 'एका वर्षा'; break;\n case 'yy': output = '%d वर्षां'; break;\n }\n }\n return output.replace(/%d/i, number);\n}\n\nhooks.defineLocale('mr', {\n months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),\n monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),\n monthsParseExact : true,\n weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat : {\n LT : 'A h:mm वाजता',\n LTS : 'A h:mm:ss वाजता',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm वाजता',\n LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता'\n },\n calendar : {\n sameDay : '[आज] LT',\n nextDay : '[उद्या] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap$6[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$7[match];\n });\n },\n meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात्री') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळी') {\n return hour;\n } else if (meridiem === 'दुपारी') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'सायंकाळी') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात्री';\n } else if (hour < 10) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\nhooks.defineLocale('ms-my', {\n months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar : {\n sameDay : '[Hari ini pukul] LT',\n nextDay : '[Esok pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kelmarin pukul] LT',\n lastWeek : 'dddd [lepas pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dalam %s',\n past : '%s yang lepas',\n s : 'beberapa saat',\n m : 'seminit',\n mm : '%d minit',\n h : 'sejam',\n hh : '%d jam',\n d : 'sehari',\n dd : '%d hari',\n M : 'sebulan',\n MM : '%d bulan',\n y : 'setahun',\n yy : '%d tahun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\nhooks.defineLocale('ms', {\n months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar : {\n sameDay : '[Hari ini pukul] LT',\n nextDay : '[Esok pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kelmarin pukul] LT',\n lastWeek : 'dddd [lepas pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dalam %s',\n past : '%s yang lepas',\n s : 'beberapa saat',\n m : 'seminit',\n mm : '%d minit',\n h : 'sejam',\n hh : '%d jam',\n d : 'sehari',\n dd : '%d hari',\n M : 'sebulan',\n MM : '%d bulan',\n y : 'setahun',\n yy : '%d tahun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\nvar symbolMap$8 = {\n '1': '၁',\n '2': '၂',\n '3': '၃',\n '4': '၄',\n '5': '၅',\n '6': '၆',\n '7': '၇',\n '8': '၈',\n '9': '၉',\n '0': '၀'\n};\nvar numberMap$7 = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0'\n};\n\nhooks.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်'\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap$7[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$8[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n\nhooks.defineLocale('nb', {\n months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact : true,\n weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY [kl.] HH:mm',\n LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'\n },\n calendar : {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : '%s siden',\n s : 'noen sekunder',\n m : 'ett minutt',\n mm : '%d minutter',\n h : 'en time',\n hh : '%d timer',\n d : 'en dag',\n dd : '%d dager',\n M : 'en måned',\n MM : '%d måneder',\n y : 'ett år',\n yy : '%d år'\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\nvar symbolMap$9 = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०'\n};\nvar numberMap$8 = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n};\n\nhooks.defineLocale('ne', {\n months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),\n monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),\n monthsParseExact : true,\n weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),\n weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'Aको h:mm बजे',\n LTS : 'Aको h:mm:ss बजे',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, Aको h:mm बजे',\n LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे'\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap$8[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$9[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar : {\n sameDay : '[आज] LT',\n nextDay : '[भोलि] LT',\n nextWeek : '[आउँदो] dddd[,] LT',\n lastDay : '[हिजो] LT',\n lastWeek : '[गएको] dddd[,] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%sमा',\n past : '%s अगाडि',\n s : 'केही क्षण',\n m : 'एक मिनेट',\n mm : '%d मिनेट',\n h : 'एक घण्टा',\n hh : '%d घण्टा',\n d : 'एक दिन',\n dd : '%d दिन',\n M : 'एक महिना',\n MM : '%d महिना',\n y : 'एक बर्ष',\n yy : '%d बर्ष'\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\nvar monthsShortWithDots$1 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_');\nvar monthsShortWithoutDots$1 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\n\nvar monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\nvar monthsRegex$1 = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\nhooks.defineLocale('nl-be', {\n months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort : function (m, format) {\n if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots$1[m.month()];\n } else {\n return monthsShortWithDots$1[m.month()];\n }\n },\n\n monthsRegex: monthsRegex$1,\n monthsShortRegex: monthsRegex$1,\n monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse : monthsParse,\n longMonthsParse : monthsParse,\n shortMonthsParse : monthsParse,\n\n weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'over %s',\n past : '%s geleden',\n s : 'een paar seconden',\n m : 'één minuut',\n mm : '%d minuten',\n h : 'één uur',\n hh : '%d uur',\n d : 'één dag',\n dd : '%d dagen',\n M : 'één maand',\n MM : '%d maanden',\n y : 'één jaar',\n yy : '%d jaar'\n },\n ordinalParse: /\\d{1,2}(ste|de)/,\n ordinal : function (number) {\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\nvar monthsShortWithDots$2 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_');\nvar monthsShortWithoutDots$2 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\n\nvar monthsParse$1 = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\nvar monthsRegex$2 = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\nhooks.defineLocale('nl', {\n months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort : function (m, format) {\n if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots$2[m.month()];\n } else {\n return monthsShortWithDots$2[m.month()];\n }\n },\n\n monthsRegex: monthsRegex$2,\n monthsShortRegex: monthsRegex$2,\n monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse : monthsParse$1,\n longMonthsParse : monthsParse$1,\n shortMonthsParse : monthsParse$1,\n\n weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD-MM-YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'over %s',\n past : '%s geleden',\n s : 'een paar seconden',\n m : 'één minuut',\n mm : '%d minuten',\n h : 'één uur',\n hh : '%d uur',\n d : 'één dag',\n dd : '%d dagen',\n M : 'één maand',\n MM : '%d maanden',\n y : 'één jaar',\n yy : '%d jaar'\n },\n ordinalParse: /\\d{1,2}(ste|de)/,\n ordinal : function (number) {\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! author : https://github.com/mechuwind\n\nhooks.defineLocale('nn', {\n months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'),\n weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY [kl.] H:mm',\n LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'\n },\n calendar : {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : '%s sidan',\n s : 'nokre sekund',\n m : 'eit minutt',\n mm : '%d minutt',\n h : 'ein time',\n hh : '%d timar',\n d : 'ein dag',\n dd : '%d dagar',\n M : 'ein månad',\n MM : '%d månader',\n y : 'eit år',\n yy : '%d år'\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\nvar symbolMap$10 = {\n '1': '੧',\n '2': '੨',\n '3': '੩',\n '4': '੪',\n '5': '੫',\n '6': '੬',\n '7': '੭',\n '8': '੮',\n '9': '੯',\n '0': '੦'\n};\nvar numberMap$9 = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0'\n};\n\nhooks.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calender but they are not used as rigidly in modern Punjabi.\n months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),\n weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat : {\n LT : 'A h:mm ਵਜੇ',\n LTS : 'A h:mm:ss ਵਜੇ',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'\n },\n calendar : {\n sameDay : '[ਅਜ] LT',\n nextDay : '[ਕਲ] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[ਕਲ] LT',\n lastWeek : '[ਪਿਛਲੇ] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ਵਿੱਚ',\n past : '%s ਪਿਛਲੇ',\n s : 'ਕੁਝ ਸਕਿੰਟ',\n m : 'ਇਕ ਮਿੰਟ',\n mm : '%d ਮਿੰਟ',\n h : 'ਇੱਕ ਘੰਟਾ',\n hh : '%d ਘੰਟੇ',\n d : 'ਇੱਕ ਦਿਨ',\n dd : '%d ਦਿਨ',\n M : 'ਇੱਕ ਮਹੀਨਾ',\n MM : '%d ਮਹੀਨੇ',\n y : 'ਇੱਕ ਸਾਲ',\n yy : '%d ਸਾਲ'\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap$9[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$10[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\nvar monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_');\nvar monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');\nfunction plural$3(n) {\n return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);\n}\nfunction translate$7(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural$3(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural$3(number) ? 'godziny' : 'godzin');\n case 'MM':\n return result + (plural$3(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural$3(number) ? 'lata' : 'lat');\n }\n}\n\nhooks.defineLocale('pl', {\n months : function (momentToFormat, format) {\n if (format === '') {\n // Hack: if format empty we know this is used to generate\n // RegExp by moment. Give then back both valid forms of months\n // in RegExp ready format.\n return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n weekdaysShort : 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: '[W] dddd [o] LT',\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : '%s temu',\n s : 'kilka sekund',\n m : translate$7,\n mm : translate$7,\n h : translate$7,\n hh : translate$7,\n d : '1 dzień',\n dd : '%d dni',\n M : 'miesiąc',\n MM : translate$7,\n y : 'rok',\n yy : translate$7\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\nhooks.defineLocale('pt-br', {\n months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'\n },\n calendar : {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return (this.day() === 0 || this.day() === 6) ?\n '[Último] dddd [às] LT' : // Saturday + Sunday\n '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'em %s',\n past : '%s atrás',\n s : 'poucos segundos',\n m : 'um minuto',\n mm : '%d minutos',\n h : 'uma hora',\n hh : '%d horas',\n d : 'um dia',\n dd : '%d dias',\n M : 'um mês',\n MM : '%d meses',\n y : 'um ano',\n yy : '%d anos'\n },\n ordinalParse: /\\d{1,2}º/,\n ordinal : '%dº'\n});\n\n//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\nhooks.defineLocale('pt', {\n months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'),\n weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY HH:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return (this.day() === 0 || this.day() === 6) ?\n '[Último] dddd [às] LT' : // Saturday + Sunday\n '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'em %s',\n past : 'há %s',\n s : 'segundos',\n m : 'um minuto',\n mm : '%d minutos',\n h : 'uma hora',\n hh : '%d horas',\n d : 'um dia',\n dd : '%d dias',\n M : 'um mês',\n MM : '%d meses',\n y : 'um ano',\n yy : '%d anos'\n },\n ordinalParse: /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n\nfunction relativeTimeWithPlural$2(number, withoutSuffix, key) {\n var format = {\n 'mm': 'minute',\n 'hh': 'ore',\n 'dd': 'zile',\n 'MM': 'luni',\n 'yy': 'ani'\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n}\n\nhooks.defineLocale('ro', {\n months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),\n monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY H:mm',\n LLLL : 'dddd, D MMMM YYYY H:mm'\n },\n calendar : {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'peste %s',\n past : '%s în urmă',\n s : 'câteva secunde',\n m : 'un minut',\n mm : relativeTimeWithPlural$2,\n h : 'o oră',\n hh : relativeTimeWithPlural$2,\n d : 'o zi',\n dd : relativeTimeWithPlural$2,\n M : 'o lună',\n MM : relativeTimeWithPlural$2,\n y : 'un an',\n yy : relativeTimeWithPlural$2\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! Author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\nfunction plural$4(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n}\nfunction relativeTimeWithPlural$3(number, withoutSuffix, key) {\n var format = {\n 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n 'hh': 'час_часа_часов',\n 'dd': 'день_дня_дней',\n 'MM': 'месяц_месяца_месяцев',\n 'yy': 'год_года_лет'\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n }\n else {\n return number + ' ' + plural$4(format[key], +number);\n }\n}\nvar monthsParse$2 = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];\n\n// http://new.gramota.ru/spravka/rules/139-prop : § 103\n// Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n// CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\nhooks.defineLocale('ru', {\n months : {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')\n },\n monthsShort : {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку ?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')\n },\n weekdays : {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\\] ?dddd/\n },\n weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse : monthsParse$2,\n longMonthsParse : monthsParse$2,\n shortMonthsParse : monthsParse$2,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соотвествует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY г.',\n LLL : 'D MMMM YYYY г., HH:mm',\n LLLL : 'dddd, D MMMM YYYY г., HH:mm'\n },\n calendar : {\n sameDay: '[Сегодня в] LT',\n nextDay: '[Завтра в] LT',\n lastDay: '[Вчера в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd [в] LT';\n } else {\n return '[В] dddd [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd [в] LT';\n } else {\n return '[В] dddd [в] LT';\n }\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'через %s',\n past : '%s назад',\n s : 'несколько секунд',\n m : relativeTimeWithPlural$3,\n mm : relativeTimeWithPlural$3,\n h : 'час',\n hh : relativeTimeWithPlural$3,\n d : 'день',\n dd : relativeTimeWithPlural$3,\n M : 'месяц',\n MM : relativeTimeWithPlural$3,\n y : 'год',\n yy : relativeTimeWithPlural$3\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM : function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n ordinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n\nhooks.defineLocale('se', {\n months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),\n monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),\n weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin : 's_v_m_g_d_b_L'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'MMMM D. [b.] YYYY',\n LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'\n },\n calendar : {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s geažes',\n past : 'maŋit %s',\n s : 'moadde sekunddat',\n m : 'okta minuhta',\n mm : '%d minuhtat',\n h : 'okta diimmu',\n hh : '%d diimmut',\n d : 'okta beaivi',\n dd : '%d beaivvit',\n M : 'okta mánnu',\n MM : '%d mánut',\n y : 'okta jahki',\n yy : '%d jagit'\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n/*jshint -W100*/\nhooks.defineLocale('si', {\n months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),\n monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),\n weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),\n weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'a h:mm',\n LTS : 'a h:mm:ss',\n L : 'YYYY/MM/DD',\n LL : 'YYYY MMMM D',\n LLL : 'YYYY MMMM D, a h:mm',\n LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'\n },\n calendar : {\n sameDay : '[අද] LT[ට]',\n nextDay : '[හෙට] LT[ට]',\n nextWeek : 'dddd LT[ට]',\n lastDay : '[ඊයේ] LT[ට]',\n lastWeek : '[පසුගිය] dddd LT[ට]',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%sකින්',\n past : '%sකට පෙර',\n s : 'තත්පර කිහිපය',\n m : 'මිනිත්තුව',\n mm : 'මිනිත්තු %d',\n h : 'පැය',\n hh : 'පැය %d',\n d : 'දිනය',\n dd : 'දින %d',\n M : 'මාසය',\n MM : 'මාස %d',\n y : 'වසර',\n yy : 'වසර %d'\n },\n ordinalParse: /\\d{1,2} වැනි/,\n ordinal : function (number) {\n return number + ' වැනි';\n },\n meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM : function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n }\n});\n\n//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\nvar months$6 = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_');\nvar monthsShort$4 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\nfunction plural$5(n) {\n return (n > 1) && (n < 5);\n}\nfunction translate$8(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural$5(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n break;\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural$5(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n break;\n case 'd': // a day / in a day / a day ago\n return (withoutSuffix || isFuture) ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural$5(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n break;\n case 'M': // a month / in a month / a month ago\n return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural$5(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n break;\n case 'y': // a year / in a year / a year ago\n return (withoutSuffix || isFuture) ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural$5(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n break;\n }\n}\n\nhooks.defineLocale('sk', {\n months : months$6,\n monthsShort : monthsShort$4,\n weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat : {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'pred %s',\n s : translate$8,\n m : translate$8,\n mm : translate$8,\n h : translate$8,\n hh : translate$8,\n d : translate$8,\n dd : translate$8,\n M : translate$8,\n MM : translate$8,\n y : translate$8,\n yy : translate$8\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\nfunction processRelativeTime$4(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n}\n\nhooks.defineLocale('sl', {\n months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),\n monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd, D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[danes ob] LT',\n nextDay : '[jutri ob] LT',\n\n nextWeek : function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay : '[včeraj ob] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'čez %s',\n past : 'pred %s',\n s : processRelativeTime$4,\n m : processRelativeTime$4,\n mm : processRelativeTime$4,\n h : processRelativeTime$4,\n hh : processRelativeTime$4,\n d : processRelativeTime$4,\n dd : processRelativeTime$4,\n M : processRelativeTime$4,\n MM : processRelativeTime$4,\n y : processRelativeTime$4,\n yy : processRelativeTime$4\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\nhooks.defineLocale('sq', {\n months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),\n monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),\n weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact : true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem : function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Sot në] LT',\n nextDay : '[Nesër në] LT',\n nextWeek : 'dddd [në] LT',\n lastDay : '[Dje në] LT',\n lastWeek : 'dddd [e kaluar në] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'në %s',\n past : '%s më parë',\n s : 'disa sekonda',\n m : 'një minutë',\n mm : '%d minuta',\n h : 'një orë',\n hh : '%d orë',\n d : 'një ditë',\n dd : '%d ditë',\n M : 'një muaj',\n MM : '%d muaj',\n y : 'një vit',\n yy : '%d vite'\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković : https://github.com/milan-j\n\nvar translator$1 = {\n words: { //Different grammatical cases\n m: ['један минут', 'једне минуте'],\n mm: ['минут', 'минуте', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n dd: ['дан', 'дана', 'дана'],\n MM: ['месец', 'месеца', 'месеци'],\n yy: ['година', 'године', 'година']\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator$1.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator$1.correctGrammaticalCase(number, wordKey);\n }\n }\n};\n\nhooks.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay : '[јуче у] LT',\n lastWeek : function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT'\n ];\n return lastWeekDays[this.day()];\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'за %s',\n past : 'пре %s',\n s : 'неколико секунди',\n m : translator$1.translate,\n mm : translator$1.translate,\n h : translator$1.translate,\n hh : translator$1.translate,\n d : 'дан',\n dd : translator$1.translate,\n M : 'месец',\n MM : translator$1.translate,\n y : 'годину',\n yy : translator$1.translate\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković : https://github.com/milan-j\n\nvar translator$2 = {\n words: { //Different grammatical cases\n m: ['jedan minut', 'jedne minute'],\n mm: ['minut', 'minute', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mesec', 'meseca', 'meseci'],\n yy: ['godina', 'godine', 'godina']\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator$2.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator$2.correctGrammaticalCase(number, wordKey);\n }\n }\n};\n\nhooks.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay : '[juče u] LT',\n lastWeek : function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT'\n ];\n return lastWeekDays[this.day()];\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'pre %s',\n s : 'nekoliko sekundi',\n m : translator$2.translate,\n mm : translator$2.translate,\n h : translator$2.translate,\n hh : translator$2.translate,\n d : 'dan',\n dd : translator$2.translate,\n M : 'mesec',\n MM : translator$2.translate,\n y : 'godinu',\n yy : translator$2.translate\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\n\n\nhooks.defineLocale('ss', {\n months : \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split('_'),\n monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),\n weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Namuhla nga] LT',\n nextDay : '[Kusasa nga] LT',\n nextWeek : 'dddd [nga] LT',\n lastDay : '[Itolo nga] LT',\n lastWeek : 'dddd [leliphelile] [nga] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'nga %s',\n past : 'wenteka nga %s',\n s : 'emizuzwana lomcane',\n m : 'umzuzu',\n mm : '%d emizuzu',\n h : 'lihora',\n hh : '%d emahora',\n d : 'lilanga',\n dd : '%d emalanga',\n M : 'inyanga',\n MM : '%d tinyanga',\n y : 'umnyaka',\n yy : '%d iminyaka'\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n ordinalParse: /\\d{1,2}/,\n ordinal : '%d',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\nhooks.defineLocale('sv', {\n months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\n monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [kl.] HH:mm',\n LLLL : 'dddd D MMMM YYYY [kl.] HH:mm',\n lll : 'D MMM YYYY HH:mm',\n llll : 'ddd D MMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : 'för %s sedan',\n s : 'några sekunder',\n m : 'en minut',\n mm : '%d minuter',\n h : 'en timme',\n hh : '%d timmar',\n d : 'en dag',\n dd : '%d dagar',\n M : 'en månad',\n MM : '%d månader',\n y : 'ett år',\n yy : '%d år'\n },\n ordinalParse: /\\d{1,2}(e|a)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'e' :\n (b === 1) ? 'a' :\n (b === 2) ? 'a' :\n (b === 3) ? 'e' : 'e';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\nhooks.defineLocale('sw', {\n months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),\n monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),\n weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[leo saa] LT',\n nextDay : '[kesho saa] LT',\n nextWeek : '[wiki ijayo] dddd [saat] LT',\n lastDay : '[jana] LT',\n lastWeek : '[wiki iliyopita] dddd [saat] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s baadaye',\n past : 'tokea %s',\n s : 'hivi punde',\n m : 'dakika moja',\n mm : 'dakika %d',\n h : 'saa limoja',\n hh : 'masaa %d',\n d : 'siku moja',\n dd : 'masiku %d',\n M : 'mwezi mmoja',\n MM : 'miezi %d',\n y : 'mwaka mmoja',\n yy : 'miaka %d'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\nvar symbolMap$11 = {\n '1': '௧',\n '2': '௨',\n '3': '௩',\n '4': '௪',\n '5': '௫',\n '6': '௬',\n '7': '௭',\n '8': '௮',\n '9': '௯',\n '0': '௦'\n};\nvar numberMap$10 = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0'\n};\n\nhooks.defineLocale('ta', {\n months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),\n weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),\n weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, HH:mm',\n LLLL : 'dddd, D MMMM YYYY, HH:mm'\n },\n calendar : {\n sameDay : '[இன்று] LT',\n nextDay : '[நாளை] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[நேற்று] LT',\n lastWeek : '[கடந்த வாரம்] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s இல்',\n past : '%s முன்',\n s : 'ஒரு சில விநாடிகள்',\n m : 'ஒரு நிமிடம்',\n mm : '%d நிமிடங்கள்',\n h : 'ஒரு மணி நேரம்',\n hh : '%d மணி நேரம்',\n d : 'ஒரு நாள்',\n dd : '%d நாட்கள்',\n M : 'ஒரு மாதம்',\n MM : '%d மாதங்கள்',\n y : 'ஒரு வருடம்',\n yy : '%d ஆண்டுகள்'\n },\n ordinalParse: /\\d{1,2}வது/,\n ordinal : function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap$10[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$11[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem : function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\nhooks.defineLocale('te', {\n months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),\n monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),\n monthsParseExact : true,\n weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),\n weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat : {\n LT : 'A h:mm',\n LTS : 'A h:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm',\n LLLL : 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar : {\n sameDay : '[నేడు] LT',\n nextDay : '[రేపు] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[నిన్న] LT',\n lastWeek : '[గత] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s లో',\n past : '%s క్రితం',\n s : 'కొన్ని క్షణాలు',\n m : 'ఒక నిమిషం',\n mm : '%d నిమిషాలు',\n h : 'ఒక గంట',\n hh : '%d గంటలు',\n d : 'ఒక రోజు',\n dd : '%d రోజులు',\n M : 'ఒక నెల',\n MM : '%d నెలలు',\n y : 'ఒక సంవత్సరం',\n yy : '%d సంవత్సరాలు'\n },\n ordinalParse : /\\d{1,2}వ/,\n ordinal : '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n\nhooks.defineLocale('tet', {\n months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juniu_Juliu_Augustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Aug_Set_Out_Nov_Dez'.split('_'),\n weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sexta_Sabadu'.split('_'),\n weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sext_Sab'.split('_'),\n weekdaysMin : 'Do_Seg_Te_Ku_Ki_Sex_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'iha %s',\n past : '%s liuba',\n s : 'minutu balun',\n m : 'minutu ida',\n mm : 'minutus %d',\n h : 'horas ida',\n hh : 'horas %d',\n d : 'loron ida',\n dd : 'loron %d',\n M : 'fulan ida',\n MM : 'fulan %d',\n y : 'tinan ida',\n yy : 'tinan %d'\n },\n ordinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\nhooks.defineLocale('th', {\n months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\n monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\n monthsParseExact: true,\n weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'YYYY/MM/DD',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY เวลา H:mm',\n LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm'\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar : {\n sameDay : '[วันนี้ เวลา] LT',\n nextDay : '[พรุ่งนี้ เวลา] LT',\n nextWeek : 'dddd[หน้า เวลา] LT',\n lastDay : '[เมื่อวานนี้ เวลา] LT',\n lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'อีก %s',\n past : '%sที่แล้ว',\n s : 'ไม่กี่วินาที',\n m : '1 นาที',\n mm : '%d นาที',\n h : '1 ชั่วโมง',\n hh : '%d ชั่วโมง',\n d : '1 วัน',\n dd : '%d วัน',\n M : '1 เดือน',\n MM : '%d เดือน',\n y : '1 ปี',\n yy : '%d ปี'\n }\n});\n\n//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\nhooks.defineLocale('tl-ph', {\n months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),\n monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),\n weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'MM/D/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY HH:mm',\n LLLL : 'dddd, MMMM DD, YYYY HH:mm'\n },\n calendar : {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'sa loob ng %s',\n past : '%s ang nakalipas',\n s : 'ilang segundo',\n m : 'isang minuto',\n mm : '%d minuto',\n h : 'isang oras',\n hh : '%d oras',\n d : 'isang araw',\n dd : '%d araw',\n M : 'isang buwan',\n MM : '%d buwan',\n y : 'isang taon',\n yy : '%d taon'\n },\n ordinalParse: /\\d{1,2}/,\n ordinal : function (number) {\n return number;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\nvar numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\nfunction translateFuture(output) {\n var time = output;\n time = (output.indexOf('jaj') !== -1) ?\n time.slice(0, -3) + 'leS' :\n (output.indexOf('jar') !== -1) ?\n time.slice(0, -3) + 'waQ' :\n (output.indexOf('DIS') !== -1) ?\n time.slice(0, -3) + 'nem' :\n time + ' pIq';\n return time;\n}\n\nfunction translatePast(output) {\n var time = output;\n time = (output.indexOf('jaj') !== -1) ?\n time.slice(0, -3) + 'Hu’' :\n (output.indexOf('jar') !== -1) ?\n time.slice(0, -3) + 'wen' :\n (output.indexOf('DIS') !== -1) ?\n time.slice(0, -3) + 'ben' :\n time + ' ret';\n return time;\n}\n\nfunction translate$9(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n}\n\nfunction numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += ((word !== '') ? ' ' : '') + numbersNouns[one];\n }\n return (word === '') ? 'pagh' : word;\n}\n\nhooks.defineLocale('tlh', {\n months : 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'),\n monthsShort : 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'),\n monthsParseExact : true,\n weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L'\n },\n relativeTime : {\n future : translateFuture,\n past : translatePast,\n s : 'puS lup',\n m : 'wa’ tup',\n mm : translate$9,\n h : 'wa’ rep',\n hh : translate$9,\n d : 'wa’ jaj',\n dd : translate$9,\n M : 'wa’ jar',\n MM : translate$9,\n y : 'wa’ DIS',\n yy : translate$9\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\nvar suffixes$3 = {\n 1: '\\'inci',\n 5: '\\'inci',\n 8: '\\'inci',\n 70: '\\'inci',\n 80: '\\'inci',\n 2: '\\'nci',\n 7: '\\'nci',\n 20: '\\'nci',\n 50: '\\'nci',\n 3: '\\'üncü',\n 4: '\\'üncü',\n 100: '\\'üncü',\n 6: '\\'ncı',\n 9: '\\'uncu',\n 10: '\\'uncu',\n 30: '\\'uncu',\n 60: '\\'ıncı',\n 90: '\\'ıncı'\n};\n\nhooks.defineLocale('tr', {\n months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),\n monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),\n weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[bugün saat] LT',\n nextDay : '[yarın saat] LT',\n nextWeek : '[haftaya] dddd [saat] LT',\n lastDay : '[dün] LT',\n lastWeek : '[geçen hafta] dddd [saat] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s sonra',\n past : '%s önce',\n s : 'birkaç saniye',\n m : 'bir dakika',\n mm : '%d dakika',\n h : 'bir saat',\n hh : '%d saat',\n d : 'bir gün',\n dd : '%d gün',\n M : 'bir ay',\n MM : '%d ay',\n y : 'bir yıl',\n yy : '%d yıl'\n },\n ordinalParse: /\\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,\n ordinal : function (number) {\n if (number === 0) { // special case for zero\n return number + '\\'ıncı';\n }\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes$3[a] || suffixes$3[b] || suffixes$3[c]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n// After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n// This is currently too difficult (maybe even impossible) to add.\nhooks.defineLocale('tzl', {\n months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM [dallas] YYYY',\n LLL : 'D. MMMM [dallas] YYYY HH.mm',\n LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM : function (input) {\n return 'd\\'o' === input.toLowerCase();\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'd\\'o' : 'D\\'O';\n } else {\n return isLower ? 'd\\'a' : 'D\\'A';\n }\n },\n calendar : {\n sameDay : '[oxhi à] LT',\n nextDay : '[demà à] LT',\n nextWeek : 'dddd [à] LT',\n lastDay : '[ieiri à] LT',\n lastWeek : '[sür el] dddd [lasteu à] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'osprei %s',\n past : 'ja%s',\n s : processRelativeTime$5,\n m : processRelativeTime$5,\n mm : processRelativeTime$5,\n h : processRelativeTime$5,\n hh : processRelativeTime$5,\n d : processRelativeTime$5,\n dd : processRelativeTime$5,\n M : processRelativeTime$5,\n MM : processRelativeTime$5,\n y : processRelativeTime$5,\n yy : processRelativeTime$5\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nfunction processRelativeTime$5(number, withoutSuffix, key, isFuture) {\n var format = {\n 's': ['viensas secunds', '\\'iensas secunds'],\n 'm': ['\\'n míut', '\\'iens míut'],\n 'mm': [number + ' míuts', '' + number + ' míuts'],\n 'h': ['\\'n þora', '\\'iensa þora'],\n 'hh': [number + ' þoras', '' + number + ' þoras'],\n 'd': ['\\'n ziua', '\\'iensa ziua'],\n 'dd': [number + ' ziuas', '' + number + ' ziuas'],\n 'M': ['\\'n mes', '\\'iens mes'],\n 'MM': [number + ' mesen', '' + number + ' mesen'],\n 'y': ['\\'n ar', '\\'iens ar'],\n 'yy': [number + ' ars', '' + number + ' ars']\n };\n return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]);\n}\n\n//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\nhooks.defineLocale('tzm-latn', {\n months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'dadkh s yan %s',\n past : 'yan %s',\n s : 'imik',\n m : 'minuḍ',\n mm : '%d minuḍ',\n h : 'saɛa',\n hh : '%d tassaɛin',\n d : 'ass',\n dd : '%d ossan',\n M : 'ayowr',\n MM : '%d iyyirn',\n y : 'asgas',\n yy : '%d isgasn'\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\nhooks.defineLocale('tzm', {\n months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS: 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past : 'ⵢⴰⵏ %s',\n s : 'ⵉⵎⵉⴽ',\n m : 'ⵎⵉⵏⵓⴺ',\n mm : '%d ⵎⵉⵏⵓⴺ',\n h : 'ⵙⴰⵄⴰ',\n hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d : 'ⴰⵙⵙ',\n dd : '%d oⵙⵙⴰⵏ',\n M : 'ⴰⵢoⵓⵔ',\n MM : '%d ⵉⵢⵢⵉⵔⵏ',\n y : 'ⴰⵙⴳⴰⵙ',\n yy : '%d ⵉⵙⴳⴰⵙⵏ'\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\nfunction plural$6(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n}\nfunction relativeTimeWithPlural$4(number, withoutSuffix, key) {\n var format = {\n 'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n 'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n 'dd': 'день_дні_днів',\n 'MM': 'місяць_місяці_місяців',\n 'yy': 'рік_роки_років'\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n }\n else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n }\n else {\n return number + ' ' + plural$6(format[key], +number);\n }\n}\nfunction weekdaysCaseReplace(m, format) {\n var weekdays = {\n 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),\n 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),\n 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')\n },\n nounCase = (/(\\[[ВвУу]\\]) ?dddd/).test(format) ?\n 'accusative' :\n ((/\\[?(?:минулої|наступної)? ?\\] ?dddd/).test(format) ?\n 'genitive' :\n 'nominative');\n return weekdays[nounCase][m.day()];\n}\nfunction processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n}\n\nhooks.defineLocale('uk', {\n months : {\n 'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),\n 'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')\n },\n monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),\n weekdays : weekdaysCaseReplace,\n weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY р.',\n LLL : 'D MMMM YYYY р., HH:mm',\n LLLL : 'dddd, D MMMM YYYY р., HH:mm'\n },\n calendar : {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'за %s',\n past : '%s тому',\n s : 'декілька секунд',\n m : relativeTimeWithPlural$4,\n mm : relativeTimeWithPlural$4,\n h : 'годину',\n hh : relativeTimeWithPlural$4,\n d : 'день',\n dd : relativeTimeWithPlural$4,\n M : 'місяць',\n MM : relativeTimeWithPlural$4,\n y : 'рік',\n yy : relativeTimeWithPlural$4\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n ordinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\nhooks.defineLocale('uz', {\n months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),\n monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'D MMMM YYYY, dddd HH:mm'\n },\n calendar : {\n sameDay : '[Бугун соат] LT [да]',\n nextDay : '[Эртага] LT [да]',\n nextWeek : 'dddd [куни соат] LT [да]',\n lastDay : '[Кеча соат] LT [да]',\n lastWeek : '[Утган] dddd [куни соат] LT [да]',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'Якин %s ичида',\n past : 'Бир неча %s олдин',\n s : 'фурсат',\n m : 'бир дакика',\n mm : '%d дакика',\n h : 'бир соат',\n hh : '%d соат',\n d : 'бир кун',\n dd : '%d кун',\n M : 'бир ой',\n MM : '%d ой',\n y : 'бир йил',\n yy : '%d йил'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n\nhooks.defineLocale('vi', {\n months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),\n monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),\n monthsParseExact : true,\n weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),\n weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact : true,\n meridiemParse: /sa|ch/i,\n isPM : function (input) {\n return /^ch$/i.test(input);\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM [năm] YYYY',\n LLL : 'D MMMM [năm] YYYY HH:mm',\n LLLL : 'dddd, D MMMM [năm] YYYY HH:mm',\n l : 'DD/M/YYYY',\n ll : 'D MMM YYYY',\n lll : 'D MMM YYYY HH:mm',\n llll : 'ddd, D MMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần rồi lúc] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s tới',\n past : '%s trước',\n s : 'vài giây',\n m : 'một phút',\n mm : '%d phút',\n h : 'một giờ',\n hh : '%d giờ',\n d : 'một ngày',\n dd : '%d ngày',\n M : 'một tháng',\n MM : '%d tháng',\n y : 'một năm',\n yy : '%d năm'\n },\n ordinalParse: /\\d{1,2}/,\n ordinal : function (number) {\n return number;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\nhooks.defineLocale('x-pseudo', {\n months : 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'),\n monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),\n monthsParseExact : true,\n weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),\n weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[T~ódá~ý át] LT',\n nextDay : '[T~ómó~rró~w át] LT',\n nextWeek : 'dddd [át] LT',\n lastDay : '[Ý~ést~érdá~ý át] LT',\n lastWeek : '[L~ást] dddd [át] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'í~ñ %s',\n past : '%s á~gó',\n s : 'á ~féw ~sécó~ñds',\n m : 'á ~míñ~úté',\n mm : '%d m~íñú~tés',\n h : 'á~ñ hó~úr',\n hh : '%d h~óúrs',\n d : 'á ~dáý',\n dd : '%d d~áýs',\n M : 'á ~móñ~th',\n MM : '%d m~óñt~hs',\n y : 'á ~ýéár',\n yy : '%d ý~éárs'\n },\n ordinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\nhooks.defineLocale('yo', {\n months : 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'),\n monthsShort : 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays : 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort : 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin : 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Ònì ni] LT',\n nextDay : '[Ọ̀la ni] LT',\n nextWeek : 'dddd [Ọsẹ̀ tón\\'bọ] [ni] LT',\n lastDay : '[Àna ni] LT',\n lastWeek : 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'ní %s',\n past : '%s kọjá',\n s : 'ìsẹjú aayá die',\n m : 'ìsẹjú kan',\n mm : 'ìsẹjú %d',\n h : 'wákati kan',\n hh : 'wákati %d',\n d : 'ọjọ́ kan',\n dd : 'ọjọ́ %d',\n M : 'osù kan',\n MM : 'osù %d',\n y : 'ọdún kan',\n yy : 'ọdún %d'\n },\n ordinalParse : /ọjọ́\\s\\d{1,2}/,\n ordinal : 'ọjọ́ %d',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n\nhooks.defineLocale('zh-cn', {\n months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n longDateFormat : {\n LT : 'Ah点mm分',\n LTS : 'Ah点m分s秒',\n L : 'YYYY-MM-DD',\n LL : 'YYYY年MMMD日',\n LLL : 'YYYY年MMMD日Ah点mm分',\n LLLL : 'YYYY年MMMD日ddddAh点mm分',\n l : 'YYYY-MM-DD',\n ll : 'YYYY年MMMD日',\n lll : 'YYYY年MMMD日Ah点mm分',\n llll : 'YYYY年MMMD日ddddAh点mm分'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' ||\n meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar : {\n sameDay : function () {\n return this.minutes() === 0 ? '[今天]Ah[点整]' : '[今天]LT';\n },\n nextDay : function () {\n return this.minutes() === 0 ? '[明天]Ah[点整]' : '[明天]LT';\n },\n lastDay : function () {\n return this.minutes() === 0 ? '[昨天]Ah[点整]' : '[昨天]LT';\n },\n nextWeek : function () {\n var startOfWeek, prefix;\n startOfWeek = hooks().startOf('week');\n prefix = this.diff(startOfWeek, 'days') >= 7 ? '[下]' : '[本]';\n return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';\n },\n lastWeek : function () {\n var startOfWeek, prefix;\n startOfWeek = hooks().startOf('week');\n prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]';\n return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';\n },\n sameElse : 'LL'\n },\n ordinalParse: /\\d{1,2}(日|月|周)/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime : {\n future : '%s内',\n past : '%s前',\n s : '几秒',\n m : '1 分钟',\n mm : '%d 分钟',\n h : '1 小时',\n hh : '%d 小时',\n d : '1 天',\n dd : '%d 天',\n M : '1 个月',\n MM : '%d 个月',\n y : '1 年',\n yy : '%d 年'\n },\n week : {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\n//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n\nhooks.defineLocale('zh-hk', {\n months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n longDateFormat : {\n LT : 'Ah點mm分',\n LTS : 'Ah點m分s秒',\n L : 'YYYY年MMMD日',\n LL : 'YYYY年MMMD日',\n LLL : 'YYYY年MMMD日Ah點mm分',\n LLLL : 'YYYY年MMMD日ddddAh點mm分',\n l : 'YYYY年MMMD日',\n ll : 'YYYY年MMMD日',\n lll : 'YYYY年MMMD日Ah點mm分',\n llll : 'YYYY年MMMD日ddddAh點mm分'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar : {\n sameDay : '[今天]LT',\n nextDay : '[明天]LT',\n nextWeek : '[下]ddddLT',\n lastDay : '[昨天]LT',\n lastWeek : '[上]ddddLT',\n sameElse : 'L'\n },\n ordinalParse: /\\d{1,2}(日|月|週)/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd' :\n case 'D' :\n case 'DDD' :\n return number + '日';\n case 'M' :\n return number + '月';\n case 'w' :\n case 'W' :\n return number + '週';\n default :\n return number;\n }\n },\n relativeTime : {\n future : '%s內',\n past : '%s前',\n s : '幾秒',\n m : '1 分鐘',\n mm : '%d 分鐘',\n h : '1 小時',\n hh : '%d 小時',\n d : '1 天',\n dd : '%d 天',\n M : '1 個月',\n MM : '%d 個月',\n y : '1 年',\n yy : '%d 年'\n }\n});\n\n//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\nhooks.defineLocale('zh-tw', {\n months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n longDateFormat : {\n LT : 'Ah點mm分',\n LTS : 'Ah點m分s秒',\n L : 'YYYY年MMMD日',\n LL : 'YYYY年MMMD日',\n LLL : 'YYYY年MMMD日Ah點mm分',\n LLLL : 'YYYY年MMMD日ddddAh點mm分',\n l : 'YYYY年MMMD日',\n ll : 'YYYY年MMMD日',\n lll : 'YYYY年MMMD日Ah點mm分',\n llll : 'YYYY年MMMD日ddddAh點mm分'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar : {\n sameDay : '[今天]LT',\n nextDay : '[明天]LT',\n nextWeek : '[下]ddddLT',\n lastDay : '[昨天]LT',\n lastWeek : '[上]ddddLT',\n sameElse : 'L'\n },\n ordinalParse: /\\d{1,2}(日|月|週)/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd' :\n case 'D' :\n case 'DDD' :\n return number + '日';\n case 'M' :\n return number + '月';\n case 'w' :\n case 'W' :\n return number + '週';\n default :\n return number;\n }\n },\n relativeTime : {\n future : '%s內',\n past : '%s前',\n s : '幾秒',\n m : '1 分鐘',\n mm : '%d 分鐘',\n h : '1 小時',\n hh : '%d 小時',\n d : '1 天',\n dd : '%d 天',\n M : '1 個月',\n MM : '%d 個月',\n y : '1 年',\n yy : '%d 年'\n }\n});\n\nhooks.locale('en');\n\nreturn hooks;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar da = moment.defineLocale('da', {\n months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),\n monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd [d.] D. MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[I dag kl.] LT',\n nextDay : '[I morgen kl.] LT',\n nextWeek : 'dddd [kl.] LT',\n lastDay : '[I går kl.] LT',\n lastWeek : '[sidste] dddd [kl] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : '%s siden',\n s : 'få sekunder',\n m : 'et minut',\n mm : '%d minutter',\n h : 'en time',\n hh : '%d timer',\n d : 'en dag',\n dd : '%d dage',\n M : 'en måned',\n MM : '%d måneder',\n y : 'et år',\n yy : '%d år'\n },\n ordinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn da;\n\n})));\n","/*! version : 4.17.37\n =========================================================\n bootstrap-datetimejs\n https://github.com/Eonasdan/bootstrap-datetimepicker\n Copyright (c) 2015 Jonathan Peterson\n =========================================================\n */\n!function(a){\"use strict\";if(\"function\"==typeof define&&define.amd)define([\"jquery\",\"moment\"],a);else if(\"object\"==typeof exports)a(require(\"jquery\"),require(\"moment\"));else{if(\"undefined\"==typeof jQuery)throw\"bootstrap-datetimepicker requires jQuery to be loaded first\";if(\"undefined\"==typeof moment)throw\"bootstrap-datetimepicker requires Moment.js to be loaded first\";a(jQuery,moment)}}(function(a,b){\"use strict\";if(!b)throw new Error(\"bootstrap-datetimepicker requires Moment.js to be loaded first\");var c=function(c,d){var e,f,g,h,i,j,k,l={},m=!0,n=!1,o=!1,p=0,q=[{clsName:\"days\",navFnc:\"M\",navStep:1},{clsName:\"months\",navFnc:\"y\",navStep:1},{clsName:\"years\",navFnc:\"y\",navStep:10},{clsName:\"decades\",navFnc:\"y\",navStep:100}],r=[\"days\",\"months\",\"years\",\"decades\"],s=[\"top\",\"bottom\",\"auto\"],t=[\"left\",\"right\",\"auto\"],u=[\"default\",\"top\",\"bottom\"],v={up:38,38:\"up\",down:40,40:\"down\",left:37,37:\"left\",right:39,39:\"right\",tab:9,9:\"tab\",escape:27,27:\"escape\",enter:13,13:\"enter\",pageUp:33,33:\"pageUp\",pageDown:34,34:\"pageDown\",shift:16,16:\"shift\",control:17,17:\"control\",space:32,32:\"space\",t:84,84:\"t\",\"delete\":46,46:\"delete\"},w={},x=function(a){var c,e,f,g,h,i=!1;return void 0!==b.tz&&void 0!==d.timeZone&&null!==d.timeZone&&\"\"!==d.timeZone&&(i=!0),void 0===a||null===a?c=i?b().tz(d.timeZone).startOf(\"d\"):b().startOf(\"d\"):i?(e=b().tz(d.timeZone).utcOffset(),f=b(a,j,d.useStrict).utcOffset(),f!==e?(g=b().tz(d.timeZone).format(\"Z\"),h=b(a,j,d.useStrict).format(\"YYYY-MM-DD[T]HH:mm:ss\")+g,c=b(h,j,d.useStrict).tz(d.timeZone)):c=b(a,j,d.useStrict).tz(d.timeZone)):c=b(a,j,d.useStrict),c},y=function(a){if(\"string\"!=typeof a||a.length>1)throw new TypeError(\"isEnabled expects a single character string parameter\");switch(a){case\"y\":return-1!==i.indexOf(\"Y\");case\"M\":return-1!==i.indexOf(\"M\");case\"d\":return-1!==i.toLowerCase().indexOf(\"d\");case\"h\":case\"H\":return-1!==i.toLowerCase().indexOf(\"h\");case\"m\":return-1!==i.indexOf(\"m\");case\"s\":return-1!==i.indexOf(\"s\");default:return!1}},z=function(){return y(\"h\")||y(\"m\")||y(\"s\")},A=function(){return y(\"y\")||y(\"M\")||y(\"d\")},B=function(){var b=a(\"\").append(a(\"\").append(a(\"\").addClass(\"prev\").attr(\"data-action\",\"previous\").append(a(\"\").addClass(d.icons.previous))).append(a(\"\").addClass(\"picker-switch\").attr(\"data-action\",\"pickerSwitch\").attr(\"colspan\",d.calendarWeeks?\"6\":\"5\")).append(a(\"\").addClass(\"next\").attr(\"data-action\",\"next\").append(a(\"\").addClass(d.icons.next)))),c=a(\"\").append(a(\"\").append(a(\"\").attr(\"colspan\",d.calendarWeeks?\"8\":\"7\")));return[a(\"
    \").addClass(\"datepicker-days\").append(a(\"\").addClass(\"table-condensed\").append(b).append(a(\"\"))),a(\"
    \").addClass(\"datepicker-months\").append(a(\"
    \").addClass(\"table-condensed\").append(b.clone()).append(c.clone())),a(\"
    \").addClass(\"datepicker-years\").append(a(\"
    \").addClass(\"table-condensed\").append(b.clone()).append(c.clone())),a(\"
    \").addClass(\"datepicker-decades\").append(a(\"
    \").addClass(\"table-condensed\").append(b.clone()).append(c.clone()))]},C=function(){var b=a(\"\"),c=a(\"\"),e=a(\"\");return y(\"h\")&&(b.append(a(\"
    \").append(a(\"\").attr({href:\"#\",tabindex:\"-1\",title:d.tooltips.incrementHour}).addClass(\"btn\").attr(\"data-action\",\"incrementHours\").append(a(\"\").addClass(d.icons.up)))),c.append(a(\"\").append(a(\"\").addClass(\"timepicker-hour\").attr({\"data-time-component\":\"hours\",title:d.tooltips.pickHour}).attr(\"data-action\",\"showHours\"))),e.append(a(\"\").append(a(\"\").attr({href:\"#\",tabindex:\"-1\",title:d.tooltips.decrementHour}).addClass(\"btn\").attr(\"data-action\",\"decrementHours\").append(a(\"\").addClass(d.icons.down))))),y(\"m\")&&(y(\"h\")&&(b.append(a(\"\").addClass(\"separator\")),c.append(a(\"\").addClass(\"separator\").html(\":\")),e.append(a(\"\").addClass(\"separator\"))),b.append(a(\"\").append(a(\"\").attr({href:\"#\",tabindex:\"-1\",title:d.tooltips.incrementMinute}).addClass(\"btn\").attr(\"data-action\",\"incrementMinutes\").append(a(\"\").addClass(d.icons.up)))),c.append(a(\"\").append(a(\"\").addClass(\"timepicker-minute\").attr({\"data-time-component\":\"minutes\",title:d.tooltips.pickMinute}).attr(\"data-action\",\"showMinutes\"))),e.append(a(\"\").append(a(\"\").attr({href:\"#\",tabindex:\"-1\",title:d.tooltips.decrementMinute}).addClass(\"btn\").attr(\"data-action\",\"decrementMinutes\").append(a(\"\").addClass(d.icons.down))))),y(\"s\")&&(y(\"m\")&&(b.append(a(\"\").addClass(\"separator\")),c.append(a(\"\").addClass(\"separator\").html(\":\")),e.append(a(\"\").addClass(\"separator\"))),b.append(a(\"\").append(a(\"\").attr({href:\"#\",tabindex:\"-1\",title:d.tooltips.incrementSecond}).addClass(\"btn\").attr(\"data-action\",\"incrementSeconds\").append(a(\"\").addClass(d.icons.up)))),c.append(a(\"\").append(a(\"\").addClass(\"timepicker-second\").attr({\"data-time-component\":\"seconds\",title:d.tooltips.pickSecond}).attr(\"data-action\",\"showSeconds\"))),e.append(a(\"\").append(a(\"\").attr({href:\"#\",tabindex:\"-1\",title:d.tooltips.decrementSecond}).addClass(\"btn\").attr(\"data-action\",\"decrementSeconds\").append(a(\"\").addClass(d.icons.down))))),h||(b.append(a(\"\").addClass(\"separator\")),c.append(a(\"\").append(a(\"\").addClass(\"separator\"))),a(\"
    \").addClass(\"timepicker-picker\").append(a(\"\").addClass(\"table-condensed\").append([b,c,e]))},D=function(){var b=a(\"
    \").addClass(\"timepicker-hours\").append(a(\"
    \").addClass(\"table-condensed\")),c=a(\"
    \").addClass(\"timepicker-minutes\").append(a(\"
    \").addClass(\"table-condensed\")),d=a(\"
    \").addClass(\"timepicker-seconds\").append(a(\"
    \").addClass(\"table-condensed\")),e=[C()];return y(\"h\")&&e.push(b),y(\"m\")&&e.push(c),y(\"s\")&&e.push(d),e},E=function(){var b=[];return d.showTodayButton&&b.push(a(\"
    \").append(a(\"\").attr({\"data-action\":\"today\",title:d.tooltips.today}).append(a(\"\").addClass(d.icons.today)))),!d.sideBySide&&A()&&z()&&b.push(a(\"\").append(a(\"\").attr({\"data-action\":\"togglePicker\",title:d.tooltips.selectTime}).append(a(\"\").addClass(d.icons.time)))),d.showClear&&b.push(a(\"\").append(a(\"\").attr({\"data-action\":\"clear\",title:d.tooltips.clear}).append(a(\"\").addClass(d.icons.clear)))),d.showClose&&b.push(a(\"\").append(a(\"\").attr({\"data-action\":\"close\",title:d.tooltips.close}).append(a(\"\").addClass(d.icons.close)))),a(\"\").addClass(\"table-condensed\").append(a(\"\").append(a(\"\").append(b)))},F=function(){var b=a(\"
    \").addClass(\"bootstrap-datetimepicker-widget dropdown-menu\"),c=a(\"
    \").addClass(\"datepicker\").append(B()),e=a(\"
    \").addClass(\"timepicker\").append(D()),f=a(\"
      \").addClass(\"list-unstyled\"),g=a(\"
    • \").addClass(\"picker-switch\"+(d.collapse?\" accordion-toggle\":\"\")).append(E());return d.inline&&b.removeClass(\"dropdown-menu\"),h&&b.addClass(\"usetwentyfour\"),y(\"s\")&&!h&&b.addClass(\"wider\"),d.sideBySide&&A()&&z()?(b.addClass(\"timepicker-sbs\"),\"top\"===d.toolbarPlacement&&b.append(g),b.append(a(\"
      \").addClass(\"row\").append(c.addClass(\"col-md-6\")).append(e.addClass(\"col-md-6\"))),\"bottom\"===d.toolbarPlacement&&b.append(g),b):(\"top\"===d.toolbarPlacement&&f.append(g),A()&&f.append(a(\"
    • \").addClass(d.collapse&&z()?\"collapse in\":\"\").append(c)),\"default\"===d.toolbarPlacement&&f.append(g),z()&&f.append(a(\"
    • \").addClass(d.collapse&&A()?\"collapse\":\"\").append(e)),\"bottom\"===d.toolbarPlacement&&f.append(g),b.append(f))},G=function(){var b,e={};return b=c.is(\"input\")||d.inline?c.data():c.find(\"input\").data(),b.dateOptions&&b.dateOptions instanceof Object&&(e=a.extend(!0,e,b.dateOptions)),a.each(d,function(a){var c=\"date\"+a.charAt(0).toUpperCase()+a.slice(1);void 0!==b[c]&&(e[a]=b[c])}),e},H=function(){var b,e=(n||c).position(),f=(n||c).offset(),g=d.widgetPositioning.vertical,h=d.widgetPositioning.horizontal;if(d.widgetParent)b=d.widgetParent.append(o);else if(c.is(\"input\"))b=c.after(o).parent();else{if(d.inline)return void(b=c.append(o));b=c,c.children().first().after(o)}if(\"auto\"===g&&(g=f.top+1.5*o.height()>=a(window).height()+a(window).scrollTop()&&o.height()+c.outerHeight()a(window).width()?\"right\":\"left\"),\"top\"===g?o.addClass(\"top\").removeClass(\"bottom\"):o.addClass(\"bottom\").removeClass(\"top\"),\"right\"===h?o.addClass(\"pull-right\"):o.removeClass(\"pull-right\"),\"relative\"!==b.css(\"position\")&&(b=b.parents().filter(function(){return\"relative\"===a(this).css(\"position\")}).first()),0===b.length)throw new Error(\"datetimepicker component should be placed within a relative positioned container\");o.css({top:\"top\"===g?\"auto\":e.top+c.outerHeight(),bottom:\"top\"===g?e.top+c.outerHeight():\"auto\",left:\"left\"===h?b===c?0:e.left:\"auto\",right:\"left\"===h?\"auto\":b.outerWidth()-c.outerWidth()-(b===c?0:e.left)})},I=function(a){\"dp.change\"===a.type&&(a.date&&a.date.isSame(a.oldDate)||!a.date&&!a.oldDate)||c.trigger(a)},J=function(a){\"y\"===a&&(a=\"YYYY\"),I({type:\"dp.update\",change:a,viewDate:f.clone()})},K=function(a){o&&(a&&(k=Math.max(p,Math.min(3,k+a))),o.find(\".datepicker > div\").hide().filter(\".datepicker-\"+q[k].clsName).show())},L=function(){var b=a(\"
    \"),c=f.clone().startOf(\"w\").startOf(\"d\");for(d.calendarWeeks===!0&&b.append(a(\"\"),d.calendarWeeks&&c.append('\"),k.push(c)),g=\"\",b.isBefore(f,\"M\")&&(g+=\" old\"),b.isAfter(f,\"M\")&&(g+=\" new\"),b.isSame(e,\"d\")&&!m&&(g+=\" active\"),Q(b,\"d\")||(g+=\" disabled\"),b.isSame(x(),\"d\")&&(g+=\" today\"),(0===b.day()||6===b.day())&&(g+=\" weekend\"),c.append('\"),b.add(1,\"d\");i.find(\"tbody\").empty().append(k),S(),T(),U()}},W=function(){var b=o.find(\".timepicker-hours table\"),c=f.clone().startOf(\"d\"),d=[],e=a(\"\");for(f.hour()>11&&!h&&c.hour(12);c.isSame(f,\"d\")&&(h||f.hour()<12&&c.hour()<12||f.hour()>11);)c.hour()%4===0&&(e=a(\"\"),d.push(e)),e.append('\"),c.add(1,\"h\");b.empty().append(d)},X=function(){for(var b=o.find(\".timepicker-minutes table\"),c=f.clone().startOf(\"h\"),e=[],g=a(\"\"),h=1===d.stepping?5:d.stepping;f.isSame(c,\"h\");)c.minute()%(4*h)===0&&(g=a(\"\"),e.push(g)),g.append('\"),c.add(h,\"m\");b.empty().append(e)},Y=function(){for(var b=o.find(\".timepicker-seconds table\"),c=f.clone().startOf(\"m\"),d=[],e=a(\"\");f.isSame(c,\"m\");)c.second()%20===0&&(e=a(\"\"),d.push(e)),e.append('\"),c.add(5,\"s\");b.empty().append(d)},Z=function(){var a,b,c=o.find(\".timepicker span[data-time-component]\");h||(a=o.find(\".timepicker [data-action=togglePeriod]\"),b=e.clone().add(e.hours()>=12?-12:12,\"h\"),a.text(e.format(\"A\")),Q(b,\"h\")?a.removeClass(\"disabled\"):a.addClass(\"disabled\")),c.filter(\"[data-time-component=hours]\").text(e.format(h?\"HH\":\"hh\")),c.filter(\"[data-time-component=minutes]\").text(e.format(\"mm\")),c.filter(\"[data-time-component=seconds]\").text(e.format(\"ss\")),W(),X(),Y()},$=function(){o&&(V(),Z())},_=function(a){var b=m?null:e;return a?(a=a.clone().locale(d.locale),1!==d.stepping&&a.minutes(Math.round(a.minutes()/d.stepping)*d.stepping%60).seconds(0),void(Q(a)?(e=a,f=e.clone(),g.val(e.format(i)),c.data(\"date\",e.format(i)),m=!1,$(),I({type:\"dp.change\",date:e.clone(),oldDate:b})):(d.keepInvalid||g.val(m?\"\":e.format(i)),I({type:\"dp.error\",date:a})))):(m=!0,g.val(\"\"),c.data(\"date\",\"\"),I({type:\"dp.change\",date:!1,oldDate:b}),void $())},aa=function(){var b=!1;return o?(o.find(\".collapse\").each(function(){var c=a(this).data(\"collapse\");return c&&c.transitioning?(b=!0,!1):!0}),b?l:(n&&n.hasClass(\"btn\")&&n.toggleClass(\"active\"),o.hide(),a(window).off(\"resize\",H),o.off(\"click\",\"[data-action]\"),o.off(\"mousedown\",!1),o.remove(),o=!1,I({type:\"dp.hide\",date:e.clone()}),g.blur(),l)):l},ba=function(){_(null)},ca={next:function(){var a=q[k].navFnc;f.add(q[k].navStep,a),V(),J(a)},previous:function(){var a=q[k].navFnc;f.subtract(q[k].navStep,a),V(),J(a)},pickerSwitch:function(){K(1)},selectMonth:function(b){var c=a(b.target).closest(\"tbody\").find(\"span\").index(a(b.target));f.month(c),k===p?(_(e.clone().year(f.year()).month(f.month())),d.inline||aa()):(K(-1),V()),J(\"M\")},selectYear:function(b){var c=parseInt(a(b.target).text(),10)||0;f.year(c),k===p?(_(e.clone().year(f.year())),d.inline||aa()):(K(-1),V()),J(\"YYYY\")},selectDecade:function(b){var c=parseInt(a(b.target).data(\"selection\"),10)||0;f.year(c),k===p?(_(e.clone().year(f.year())),d.inline||aa()):(K(-1),V()),J(\"YYYY\")},selectDay:function(b){var c=f.clone();a(b.target).is(\".old\")&&c.subtract(1,\"M\"),a(b.target).is(\".new\")&&c.add(1,\"M\"),_(c.date(parseInt(a(b.target).text(),10))),z()||d.keepOpen||d.inline||aa()},incrementHours:function(){var a=e.clone().add(1,\"h\");Q(a,\"h\")&&_(a)},incrementMinutes:function(){var a=e.clone().add(d.stepping,\"m\");Q(a,\"m\")&&_(a)},incrementSeconds:function(){var a=e.clone().add(1,\"s\");Q(a,\"s\")&&_(a)},decrementHours:function(){var a=e.clone().subtract(1,\"h\");Q(a,\"h\")&&_(a)},decrementMinutes:function(){var a=e.clone().subtract(d.stepping,\"m\");Q(a,\"m\")&&_(a)},decrementSeconds:function(){var a=e.clone().subtract(1,\"s\");Q(a,\"s\")&&_(a)},togglePeriod:function(){_(e.clone().add(e.hours()>=12?-12:12,\"h\"))},togglePicker:function(b){var c,e=a(b.target),f=e.closest(\"ul\"),g=f.find(\".in\"),h=f.find(\".collapse:not(.in)\");if(g&&g.length){if(c=g.data(\"collapse\"),c&&c.transitioning)return;g.collapse?(g.collapse(\"hide\"),h.collapse(\"show\")):(g.removeClass(\"in\"),h.addClass(\"in\")),e.is(\"span\")?e.toggleClass(d.icons.time+\" \"+d.icons.date):e.find(\"span\").toggleClass(d.icons.time+\" \"+d.icons.date)}},showPicker:function(){o.find(\".timepicker > div:not(.timepicker-picker)\").hide(),o.find(\".timepicker .timepicker-picker\").show()},showHours:function(){o.find(\".timepicker .timepicker-picker\").hide(),o.find(\".timepicker .timepicker-hours\").show()},showMinutes:function(){o.find(\".timepicker .timepicker-picker\").hide(),o.find(\".timepicker .timepicker-minutes\").show()},showSeconds:function(){o.find(\".timepicker .timepicker-picker\").hide(),o.find(\".timepicker .timepicker-seconds\").show()},selectHour:function(b){var c=parseInt(a(b.target).text(),10);h||(e.hours()>=12?12!==c&&(c+=12):12===c&&(c=0)),_(e.clone().hours(c)),ca.showPicker.call(l)},selectMinute:function(b){_(e.clone().minutes(parseInt(a(b.target).text(),10))),ca.showPicker.call(l)},selectSecond:function(b){_(e.clone().seconds(parseInt(a(b.target).text(),10))),ca.showPicker.call(l)},clear:ba,today:function(){var a=x();Q(a,\"d\")&&_(a)},close:aa},da=function(b){return a(b.currentTarget).is(\".disabled\")?!1:(ca[a(b.currentTarget).data(\"action\")].apply(l,arguments),!1)},ea=function(){var b,c={year:function(a){return a.month(0).date(1).hours(0).seconds(0).minutes(0)},month:function(a){return a.date(1).hours(0).seconds(0).minutes(0)},day:function(a){return a.hours(0).seconds(0).minutes(0)},hour:function(a){return a.seconds(0).minutes(0)},minute:function(a){return a.seconds(0)}};return g.prop(\"disabled\")||!d.ignoreReadonly&&g.prop(\"readonly\")||o?l:(void 0!==g.val()&&0!==g.val().trim().length?_(ga(g.val().trim())):d.useCurrent&&m&&(g.is(\"input\")&&0===g.val().trim().length||d.inline)&&(b=x(),\"string\"==typeof d.useCurrent&&(b=c[d.useCurrent](b)),_(b)),o=F(),L(),R(),o.find(\".timepicker-hours\").hide(),o.find(\".timepicker-minutes\").hide(),o.find(\".timepicker-seconds\").hide(),$(),K(),a(window).on(\"resize\",H),o.on(\"click\",\"[data-action]\",da),o.on(\"mousedown\",!1),n&&n.hasClass(\"btn\")&&n.toggleClass(\"active\"),o.show(),H(),d.focusOnShow&&!g.is(\":focus\")&&g.focus(),I({type:\"dp.show\"}),l)},fa=function(){return o?aa():ea()},ga=function(a){return a=void 0===d.parseInputDate?b.isMoment(a)||a instanceof Date?b(a):x(a):d.parseInputDate(a),a.locale(d.locale),a},ha=function(a){var b,c,e,f,g=null,h=[],i={},j=a.which,k=\"p\";w[j]=k;for(b in w)w.hasOwnProperty(b)&&w[b]===k&&(h.push(b),parseInt(b,10)!==j&&(i[b]=!0));for(b in d.keyBinds)if(d.keyBinds.hasOwnProperty(b)&&\"function\"==typeof d.keyBinds[b]&&(e=b.split(\" \"),e.length===h.length&&v[j]===e[e.length-1])){for(f=!0,c=e.length-2;c>=0;c--)if(!(v[e[c]]in i)){f=!1;break}if(f){g=d.keyBinds[b];break}}g&&(g.call(l,o),a.stopPropagation(),a.preventDefault())},ia=function(a){w[a.which]=\"r\",a.stopPropagation(),a.preventDefault()},ja=function(b){var c=a(b.target).val().trim(),d=c?ga(c):null;return _(d),b.stopImmediatePropagation(),!1},ka=function(){g.on({change:ja,blur:d.debug?\"\":aa,keydown:ha,keyup:ia,focus:d.allowInputToggle?ea:\"\"}),c.is(\"input\")?g.on({focus:ea}):n&&(n.on(\"click\",fa),n.on(\"mousedown\",!1))},la=function(){g.off({change:ja,blur:blur,keydown:ha,keyup:ia,focus:d.allowInputToggle?aa:\"\"}),c.is(\"input\")?g.off({focus:ea}):n&&(n.off(\"click\",fa),n.off(\"mousedown\",!1))},ma=function(b){var c={};return a.each(b,function(){var a=ga(this);a.isValid()&&(c[a.format(\"YYYY-MM-DD\")]=!0)}),Object.keys(c).length?c:!1},na=function(b){var c={};return a.each(b,function(){c[this]=!0}),Object.keys(c).length?c:!1},oa=function(){var a=d.format||\"L LT\";i=a.replace(/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){var b=e.localeData().longDateFormat(a)||a;return b.replace(/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){return e.localeData().longDateFormat(a)||a})}),j=d.extraFormats?d.extraFormats.slice():[],j.indexOf(a)<0&&j.indexOf(i)<0&&j.push(i),h=i.toLowerCase().indexOf(\"a\")<1&&i.replace(/\\[.*?\\]/g,\"\").indexOf(\"h\")<1,y(\"y\")&&(p=2),y(\"M\")&&(p=1),y(\"d\")&&(p=0),k=Math.max(p,k),m||_(e)};if(l.destroy=function(){aa(),la(),c.removeData(\"DateTimePicker\"),c.removeData(\"date\")},l.toggle=fa,l.show=ea,l.hide=aa,l.disable=function(){return aa(),n&&n.hasClass(\"btn\")&&n.addClass(\"disabled\"),g.prop(\"disabled\",!0),l},l.enable=function(){return n&&n.hasClass(\"btn\")&&n.removeClass(\"disabled\"),g.prop(\"disabled\",!1),l},l.ignoreReadonly=function(a){if(0===arguments.length)return d.ignoreReadonly;if(\"boolean\"!=typeof a)throw new TypeError(\"ignoreReadonly () expects a boolean parameter\");return d.ignoreReadonly=a,l},l.options=function(b){if(0===arguments.length)return a.extend(!0,{},d);if(!(b instanceof Object))throw new TypeError(\"options() options parameter should be an object\");return a.extend(!0,d,b),a.each(d,function(a,b){if(void 0===l[a])throw new TypeError(\"option \"+a+\" is not recognized!\");l[a](b)}),l},l.date=function(a){if(0===arguments.length)return m?null:e.clone();if(!(null===a||\"string\"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError(\"date() parameter must be one of [null, string, moment or Date]\");return _(null===a?null:ga(a)),l},l.format=function(a){if(0===arguments.length)return d.format;if(\"string\"!=typeof a&&(\"boolean\"!=typeof a||a!==!1))throw new TypeError(\"format() expects a sting or boolean:false parameter \"+a);return d.format=a,i&&oa(),l},l.timeZone=function(a){return 0===arguments.length?d.timeZone:(d.timeZone=a,l)},l.dayViewHeaderFormat=function(a){if(0===arguments.length)return d.dayViewHeaderFormat;if(\"string\"!=typeof a)throw new TypeError(\"dayViewHeaderFormat() expects a string parameter\");return d.dayViewHeaderFormat=a,l},l.extraFormats=function(a){if(0===arguments.length)return d.extraFormats;if(a!==!1&&!(a instanceof Array))throw new TypeError(\"extraFormats() expects an array or false parameter\");return d.extraFormats=a,j&&oa(),l},l.disabledDates=function(b){if(0===arguments.length)return d.disabledDates?a.extend({},d.disabledDates):d.disabledDates;if(!b)return d.disabledDates=!1,$(),l;if(!(b instanceof Array))throw new TypeError(\"disabledDates() expects an array parameter\");return d.disabledDates=ma(b),d.enabledDates=!1,$(),l},l.enabledDates=function(b){if(0===arguments.length)return d.enabledDates?a.extend({},d.enabledDates):d.enabledDates;if(!b)return d.enabledDates=!1,$(),l;if(!(b instanceof Array))throw new TypeError(\"enabledDates() expects an array parameter\");return d.enabledDates=ma(b),d.disabledDates=!1,$(),l},l.daysOfWeekDisabled=function(a){if(0===arguments.length)return d.daysOfWeekDisabled.splice(0);if(\"boolean\"==typeof a&&!a)return d.daysOfWeekDisabled=!1,$(),l;if(!(a instanceof Array))throw new TypeError(\"daysOfWeekDisabled() expects an array parameter\");if(d.daysOfWeekDisabled=a.reduce(function(a,b){return b=parseInt(b,10),b>6||0>b||isNaN(b)?a:(-1===a.indexOf(b)&&a.push(b),a)},[]).sort(),d.useCurrent&&!d.keepInvalid){for(var b=0;!Q(e,\"d\");){if(e.add(1,\"d\"),7===b)throw\"Tried 7 times to find a valid date\";b++}_(e)}return $(),l},l.maxDate=function(a){if(0===arguments.length)return d.maxDate?d.maxDate.clone():d.maxDate;if(\"boolean\"==typeof a&&a===!1)return d.maxDate=!1,$(),l;\"string\"==typeof a&&(\"now\"===a||\"moment\"===a)&&(a=x());var b=ga(a);if(!b.isValid())throw new TypeError(\"maxDate() Could not parse date parameter: \"+a);if(d.minDate&&b.isBefore(d.minDate))throw new TypeError(\"maxDate() date parameter is before options.minDate: \"+b.format(i));return d.maxDate=b,d.useCurrent&&!d.keepInvalid&&e.isAfter(a)&&_(d.maxDate),f.isAfter(b)&&(f=b.clone().subtract(d.stepping,\"m\")),$(),l},l.minDate=function(a){if(0===arguments.length)return d.minDate?d.minDate.clone():d.minDate;if(\"boolean\"==typeof a&&a===!1)return d.minDate=!1,$(),l;\"string\"==typeof a&&(\"now\"===a||\"moment\"===a)&&(a=x());var b=ga(a);if(!b.isValid())throw new TypeError(\"minDate() Could not parse date parameter: \"+a);if(d.maxDate&&b.isAfter(d.maxDate))throw new TypeError(\"minDate() date parameter is after options.maxDate: \"+b.format(i));return d.minDate=b,d.useCurrent&&!d.keepInvalid&&e.isBefore(a)&&_(d.minDate),f.isBefore(b)&&(f=b.clone().add(d.stepping,\"m\")),$(),l},l.defaultDate=function(a){if(0===arguments.length)return d.defaultDate?d.defaultDate.clone():d.defaultDate;if(!a)return d.defaultDate=!1,l;\"string\"==typeof a&&(\"now\"===a||\"moment\"===a)&&(a=x());var b=ga(a);if(!b.isValid())throw new TypeError(\"defaultDate() Could not parse date parameter: \"+a);if(!Q(b))throw new TypeError(\"defaultDate() date passed is invalid according to component setup validations\");return d.defaultDate=b,(d.defaultDate&&d.inline||\"\"===g.val().trim())&&_(d.defaultDate),l},l.locale=function(a){if(0===arguments.length)return d.locale;if(!b.localeData(a))throw new TypeError(\"locale() locale \"+a+\" is not loaded from moment locales!\");return d.locale=a,e.locale(d.locale),f.locale(d.locale),i&&oa(),o&&(aa(),ea()),l},l.stepping=function(a){return 0===arguments.length?d.stepping:(a=parseInt(a,10),(isNaN(a)||1>a)&&(a=1),d.stepping=a,l)},l.useCurrent=function(a){var b=[\"year\",\"month\",\"day\",\"hour\",\"minute\"];if(0===arguments.length)return d.useCurrent;if(\"boolean\"!=typeof a&&\"string\"!=typeof a)throw new TypeError(\"useCurrent() expects a boolean or string parameter\");if(\"string\"==typeof a&&-1===b.indexOf(a.toLowerCase()))throw new TypeError(\"useCurrent() expects a string parameter of \"+b.join(\", \"));return d.useCurrent=a,l},l.collapse=function(a){if(0===arguments.length)return d.collapse;if(\"boolean\"!=typeof a)throw new TypeError(\"collapse() expects a boolean parameter\");return d.collapse===a?l:(d.collapse=a,o&&(aa(),ea()),l)},l.icons=function(b){if(0===arguments.length)return a.extend({},d.icons);if(!(b instanceof Object))throw new TypeError(\"icons() expects parameter to be an Object\");return a.extend(d.icons,b),o&&(aa(),ea()),l},l.tooltips=function(b){if(0===arguments.length)return a.extend({},d.tooltips);if(!(b instanceof Object))throw new TypeError(\"tooltips() expects parameter to be an Object\");return a.extend(d.tooltips,b),o&&(aa(),ea()),l},l.useStrict=function(a){if(0===arguments.length)return d.useStrict;if(\"boolean\"!=typeof a)throw new TypeError(\"useStrict() expects a boolean parameter\");return d.useStrict=a,l},l.sideBySide=function(a){if(0===arguments.length)return d.sideBySide;if(\"boolean\"!=typeof a)throw new TypeError(\"sideBySide() expects a boolean parameter\");return d.sideBySide=a,o&&(aa(),ea()),l},l.viewMode=function(a){if(0===arguments.length)return d.viewMode;if(\"string\"!=typeof a)throw new TypeError(\"viewMode() expects a string parameter\");if(-1===r.indexOf(a))throw new TypeError(\"viewMode() parameter must be one of (\"+r.join(\", \")+\") value\");return d.viewMode=a,k=Math.max(r.indexOf(a),p),K(),l},l.toolbarPlacement=function(a){if(0===arguments.length)return d.toolbarPlacement;if(\"string\"!=typeof a)throw new TypeError(\"toolbarPlacement() expects a string parameter\");if(-1===u.indexOf(a))throw new TypeError(\"toolbarPlacement() parameter must be one of (\"+u.join(\", \")+\") value\");return d.toolbarPlacement=a,o&&(aa(),ea()),l},l.widgetPositioning=function(b){if(0===arguments.length)return a.extend({},d.widgetPositioning);if(\"[object Object]\"!=={}.toString.call(b))throw new TypeError(\"widgetPositioning() expects an object variable\");if(b.horizontal){if(\"string\"!=typeof b.horizontal)throw new TypeError(\"widgetPositioning() horizontal variable must be a string\");if(b.horizontal=b.horizontal.toLowerCase(),-1===t.indexOf(b.horizontal))throw new TypeError(\"widgetPositioning() expects horizontal parameter to be one of (\"+t.join(\", \")+\")\");d.widgetPositioning.horizontal=b.horizontal}if(b.vertical){if(\"string\"!=typeof b.vertical)throw new TypeError(\"widgetPositioning() vertical variable must be a string\");if(b.vertical=b.vertical.toLowerCase(),-1===s.indexOf(b.vertical))throw new TypeError(\"widgetPositioning() expects vertical parameter to be one of (\"+s.join(\", \")+\")\");d.widgetPositioning.vertical=b.vertical}return $(),l},l.calendarWeeks=function(a){if(0===arguments.length)return d.calendarWeeks;if(\"boolean\"!=typeof a)throw new TypeError(\"calendarWeeks() expects parameter to be a boolean value\");return d.calendarWeeks=a,$(),l},l.showTodayButton=function(a){if(0===arguments.length)return d.showTodayButton;if(\"boolean\"!=typeof a)throw new TypeError(\"showTodayButton() expects a boolean parameter\");return d.showTodayButton=a,o&&(aa(),ea()),l},l.showClear=function(a){if(0===arguments.length)return d.showClear;if(\"boolean\"!=typeof a)throw new TypeError(\"showClear() expects a boolean parameter\");return d.showClear=a,o&&(aa(),ea()),l},l.widgetParent=function(b){if(0===arguments.length)return d.widgetParent;if(\"string\"==typeof b&&(b=a(b)),null!==b&&\"string\"!=typeof b&&!(b instanceof a))throw new TypeError(\"widgetParent() expects a string or a jQuery object parameter\");return d.widgetParent=b,o&&(aa(),ea()),l},l.keepOpen=function(a){if(0===arguments.length)return d.keepOpen;if(\"boolean\"!=typeof a)throw new TypeError(\"keepOpen() expects a boolean parameter\");return d.keepOpen=a,l},l.focusOnShow=function(a){if(0===arguments.length)return d.focusOnShow;if(\"boolean\"!=typeof a)throw new TypeError(\"focusOnShow() expects a boolean parameter\");return d.focusOnShow=a,l},l.inline=function(a){if(0===arguments.length)return d.inline;if(\"boolean\"!=typeof a)throw new TypeError(\"inline() expects a boolean parameter\");return d.inline=a,l},l.clear=function(){return ba(),l},l.keyBinds=function(a){return d.keyBinds=a,l},l.getMoment=function(a){return x(a)},l.debug=function(a){if(\"boolean\"!=typeof a)throw new TypeError(\"debug() expects a boolean parameter\");return d.debug=a,l},l.allowInputToggle=function(a){if(0===arguments.length)return d.allowInputToggle;if(\"boolean\"!=typeof a)throw new TypeError(\"allowInputToggle() expects a boolean parameter\");return d.allowInputToggle=a,l},l.showClose=function(a){if(0===arguments.length)return d.showClose;if(\"boolean\"!=typeof a)throw new TypeError(\"showClose() expects a boolean parameter\");return d.showClose=a,l},l.keepInvalid=function(a){if(0===arguments.length)return d.keepInvalid;if(\"boolean\"!=typeof a)throw new TypeError(\"keepInvalid() expects a boolean parameter\");return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length)return d.datepickerInput;if(\"string\"!=typeof a)throw new TypeError(\"datepickerInput() expects a string parameter\");return d.datepickerInput=a,l},l.parseInputDate=function(a){if(0===arguments.length)return d.parseInputDate;\nif(\"function\"!=typeof a)throw new TypeError(\"parseInputDate() sholud be as function\");return d.parseInputDate=a,l},l.disabledTimeIntervals=function(b){if(0===arguments.length)return d.disabledTimeIntervals?a.extend({},d.disabledTimeIntervals):d.disabledTimeIntervals;if(!b)return d.disabledTimeIntervals=!1,$(),l;if(!(b instanceof Array))throw new TypeError(\"disabledTimeIntervals() expects an array parameter\");return d.disabledTimeIntervals=b,$(),l},l.disabledHours=function(b){if(0===arguments.length)return d.disabledHours?a.extend({},d.disabledHours):d.disabledHours;if(!b)return d.disabledHours=!1,$(),l;if(!(b instanceof Array))throw new TypeError(\"disabledHours() expects an array parameter\");if(d.disabledHours=na(b),d.enabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!Q(e,\"h\");){if(e.add(1,\"h\"),24===c)throw\"Tried 24 times to find a valid date\";c++}_(e)}return $(),l},l.enabledHours=function(b){if(0===arguments.length)return d.enabledHours?a.extend({},d.enabledHours):d.enabledHours;if(!b)return d.enabledHours=!1,$(),l;if(!(b instanceof Array))throw new TypeError(\"enabledHours() expects an array parameter\");if(d.enabledHours=na(b),d.disabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!Q(e,\"h\");){if(e.add(1,\"h\"),24===c)throw\"Tried 24 times to find a valid date\";c++}_(e)}return $(),l},l.viewDate=function(a){if(0===arguments.length)return f.clone();if(!a)return f=e.clone(),l;if(!(\"string\"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError(\"viewDate() parameter must be one of [string, moment or Date]\");return f=ga(a),J(),l},c.is(\"input\"))g=c;else if(g=c.find(d.datepickerInput),0===g.size())g=c.find(\"input\");else if(!g.is(\"input\"))throw new Error('CSS class \"'+d.datepickerInput+'\" cannot be applied to non input element');if(c.hasClass(\"input-group\")&&(n=0===c.find(\".datepickerbutton\").size()?c.find(\".input-group-addon\"):c.find(\".datepickerbutton\")),!d.inline&&!g.is(\"input\"))throw new Error(\"Could not initialize DateTimePicker without an input element\");return e=x(),f=e.clone(),a.extend(!0,d,G()),l.options(d),oa(),ka(),g.prop(\"disabled\")&&l.disable(),g.is(\"input\")&&0!==g.val().trim().length?_(ga(g.val().trim())):d.defaultDate&&void 0===g.attr(\"placeholder\")&&_(d.defaultDate),d.inline&&ea(),l};a.fn.datetimepicker=function(b){return this.each(function(){var d=a(this);d.data(\"DateTimePicker\")||(b=a.extend(!0,{},a.fn.datetimepicker.defaults,b),d.data(\"DateTimePicker\",c(d,b)))})},a.fn.datetimepicker.defaults={timeZone:\"Etc/UTC\",format:!1,dayViewHeaderFormat:\"MMMM YYYY\",extraFormats:!1,stepping:1,minDate:!1,maxDate:!1,useCurrent:!0,collapse:!0,locale:b.locale(),defaultDate:!1,disabledDates:!1,enabledDates:!1,icons:{time:\"glyphicon glyphicon-time\",date:\"glyphicon glyphicon-calendar\",up:\"glyphicon glyphicon-chevron-up\",down:\"glyphicon glyphicon-chevron-down\",previous:\"glyphicon glyphicon-chevron-left\",next:\"glyphicon glyphicon-chevron-right\",today:\"glyphicon glyphicon-screenshot\",clear:\"glyphicon glyphicon-trash\",close:\"glyphicon glyphicon-remove\"},tooltips:{today:\"Go to today\",clear:\"Clear selection\",close:\"Close the picker\",selectMonth:\"Select Month\",prevMonth:\"Previous Month\",nextMonth:\"Next Month\",selectYear:\"Select Year\",prevYear:\"Previous Year\",nextYear:\"Next Year\",selectDecade:\"Select Decade\",prevDecade:\"Previous Decade\",nextDecade:\"Next Decade\",prevCentury:\"Previous Century\",nextCentury:\"Next Century\",pickHour:\"Pick Hour\",incrementHour:\"Increment Hour\",decrementHour:\"Decrement Hour\",pickMinute:\"Pick Minute\",incrementMinute:\"Increment Minute\",decrementMinute:\"Decrement Minute\",pickSecond:\"Pick Second\",incrementSecond:\"Increment Second\",decrementSecond:\"Decrement Second\",togglePeriod:\"Toggle Period\",selectTime:\"Select Time\"},useStrict:!1,sideBySide:!1,daysOfWeekDisabled:!1,calendarWeeks:!1,viewMode:\"days\",toolbarPlacement:\"default\",showTodayButton:!1,showClear:!1,showClose:!1,widgetPositioning:{horizontal:\"auto\",vertical:\"auto\"},widgetParent:null,ignoreReadonly:!1,keepOpen:!1,focusOnShow:!0,inline:!1,keepInvalid:!1,datepickerInput:\".datepickerinput\",keyBinds:{up:function(a){if(a){var b=this.date()||this.getMoment();a.find(\".datepicker\").is(\":visible\")?this.date(b.clone().subtract(7,\"d\")):this.date(b.clone().add(this.stepping(),\"m\"))}},down:function(a){if(!a)return void this.show();var b=this.date()||this.getMoment();a.find(\".datepicker\").is(\":visible\")?this.date(b.clone().add(7,\"d\")):this.date(b.clone().subtract(this.stepping(),\"m\"))},\"control up\":function(a){if(a){var b=this.date()||this.getMoment();a.find(\".datepicker\").is(\":visible\")?this.date(b.clone().subtract(1,\"y\")):this.date(b.clone().add(1,\"h\"))}},\"control down\":function(a){if(a){var b=this.date()||this.getMoment();a.find(\".datepicker\").is(\":visible\")?this.date(b.clone().add(1,\"y\")):this.date(b.clone().subtract(1,\"h\"))}},left:function(a){if(a){var b=this.date()||this.getMoment();a.find(\".datepicker\").is(\":visible\")&&this.date(b.clone().subtract(1,\"d\"))}},right:function(a){if(a){var b=this.date()||this.getMoment();a.find(\".datepicker\").is(\":visible\")&&this.date(b.clone().add(1,\"d\"))}},pageUp:function(a){if(a){var b=this.date()||this.getMoment();a.find(\".datepicker\").is(\":visible\")&&this.date(b.clone().subtract(1,\"M\"))}},pageDown:function(a){if(a){var b=this.date()||this.getMoment();a.find(\".datepicker\").is(\":visible\")&&this.date(b.clone().add(1,\"M\"))}},enter:function(){this.hide()},escape:function(){this.hide()},\"control space\":function(a){a.find(\".timepicker\").is(\":visible\")&&a.find('.btn[data-action=\"togglePeriod\"]').click()},t:function(){this.date(this.getMoment())},\"delete\":function(){this.clear()}},debug:!1,allowInputToggle:!1,disabledTimeIntervals:!1,disabledHours:!1,enabledHours:!1,viewDate:!1}});","/*!\r\n * Pikaday\r\n *\r\n * Copyright © 2014 David Bushell | BSD & MIT license | https://github.com/dbushell/Pikaday\r\n */\r\n\r\n(function (root, factory) {\r\n 'use strict';\r\n\r\n var moment;\r\n if (typeof exports === 'object') {\r\n // CommonJS module\r\n // Load moment.js as an optional dependency\r\n try { moment = require('moment'); } catch (e) { }\r\n module.exports = factory(moment);\r\n } else if (typeof define === 'function' && define.amd) {\r\n // AMD. Register as an anonymous module.\r\n define(function (req) {\r\n // Load moment.js as an optional dependency\r\n var id = 'moment';\r\n moment = req.defined && req.defined(id) ? req(id) : undefined;\r\n return factory(moment);\r\n });\r\n } else {\r\n root.Pikaday = factory(root.moment);\r\n }\r\n}(this, function (moment) {\r\n 'use strict';\r\n\r\n /**\r\n * feature detection and helper functions\r\n */\r\n var hasMoment = typeof moment === 'function',\r\n\r\n hasEventListeners = !!window.addEventListener,\r\n\r\n document = window.document,\r\n\r\n sto = window.setTimeout,\r\n\r\n addEvent = function (el, e, callback, capture) {\r\n if (hasEventListeners) {\r\n el.addEventListener(e, callback, !!capture);\r\n } else {\r\n el.attachEvent('on' + e, callback);\r\n }\r\n },\r\n\r\n removeEvent = function (el, e, callback, capture) {\r\n if (hasEventListeners) {\r\n el.removeEventListener(e, callback, !!capture);\r\n } else {\r\n el.detachEvent('on' + e, callback);\r\n }\r\n },\r\n\r\n fireEvent = function (el, eventName, data) {\r\n var ev;\r\n\r\n if (document.createEvent) {\r\n ev = document.createEvent('HTMLEvents');\r\n ev.initEvent(eventName, true, false);\r\n ev = extend(ev, data);\r\n el.dispatchEvent(ev);\r\n } else if (document.createEventObject) {\r\n ev = document.createEventObject();\r\n ev = extend(ev, data);\r\n el.fireEvent('on' + eventName, ev);\r\n }\r\n },\r\n\r\n trim = function (str) {\r\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\r\n },\r\n\r\n hasClass = function (el, cn) {\r\n return (' ' + el.className + ' ').indexOf(' ' + cn + ' ') !== -1;\r\n },\r\n\r\n addClass = function (el, cn) {\r\n if (!hasClass(el, cn)) {\r\n el.className = (el.className === '') ? cn : el.className + ' ' + cn;\r\n }\r\n },\r\n\r\n removeClass = function (el, cn) {\r\n el.className = trim((' ' + el.className + ' ').replace(' ' + cn + ' ', ' '));\r\n },\r\n\r\n isArray = function (obj) {\r\n return (/Array/).test(Object.prototype.toString.call(obj));\r\n },\r\n\r\n isDate = function (obj) {\r\n return (/Date/).test(Object.prototype.toString.call(obj)) && !isNaN(obj.getTime());\r\n },\r\n\r\n isLeapYear = function (year) {\r\n // solution by Matti Virkkunen: http://stackoverflow.com/a/4881951\r\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\r\n },\r\n\r\n getDaysInMonth = function (year, month) {\r\n return [31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];\r\n },\r\n\r\n setToStartOfDay = function (date) {\r\n if (isDate(date)) date.setHours(0, 0, 0, 0);\r\n },\r\n\r\n compareDates = function (a, b) {\r\n // weak date comparison (use setToStartOfDay(date) to ensure correct result)\r\n return a.getTime() === b.getTime();\r\n },\r\n\r\n extend = function (to, from, overwrite) {\r\n var prop, hasProp;\r\n for (prop in from) {\r\n hasProp = to[prop] !== undefined;\r\n if (hasProp && typeof from[prop] === 'object' && from[prop].nodeName === undefined) {\r\n if (isDate(from[prop])) {\r\n if (overwrite) {\r\n to[prop] = new Date(from[prop].getTime());\r\n }\r\n }\r\n else if (isArray(from[prop])) {\r\n if (overwrite) {\r\n to[prop] = from[prop].slice(0);\r\n }\r\n } else {\r\n to[prop] = extend({}, from[prop], overwrite);\r\n }\r\n } else if (overwrite || !hasProp) {\r\n to[prop] = from[prop];\r\n }\r\n }\r\n return to;\r\n },\r\n\r\n adjustCalendar = function (calendar) {\r\n if (calendar.month < 0) {\r\n calendar.year -= Math.ceil(Math.abs(calendar.month) / 12);\r\n calendar.month += 12;\r\n }\r\n if (calendar.month > 11) {\r\n calendar.year += Math.floor(Math.abs(calendar.month) / 12);\r\n calendar.month -= 12;\r\n }\r\n return calendar;\r\n },\r\n\r\n /**\r\n * defaults and localisation\r\n */\r\n defaults = {\r\n\r\n // bind the picker to a form field\r\n field: null,\r\n\r\n // automatically show/hide the picker on `field` focus (default `true` if `field` is set)\r\n bound: undefined,\r\n\r\n // position of the datepicker, relative to the field (default to bottom & left)\r\n // ('bottom' & 'left' keywords are not used, 'top' & 'right' are modifier on the bottom/left position)\r\n position: 'bottom left',\r\n\r\n // the default output format for `.toString()` and `field` value\r\n format: 'YYYY-MM-DD',\r\n\r\n // the initial date to view when first opened\r\n defaultDate: null,\r\n\r\n // make the `defaultDate` the initial selected value\r\n setDefaultDate: false,\r\n\r\n // first day of week (0: Sunday, 1: Monday etc)\r\n firstDay: 0,\r\n\r\n // the minimum/earliest date that can be selected\r\n minDate: null,\r\n // the maximum/latest date that can be selected\r\n maxDate: null,\r\n\r\n // number of years either side, or array of upper/lower range\r\n yearRange: 10,\r\n\r\n // show week numbers at head of row\r\n showWeekNumber: false,\r\n\r\n // used internally (don't config outside)\r\n minYear: 0,\r\n maxYear: 9999,\r\n minMonth: undefined,\r\n maxMonth: undefined,\r\n\r\n isRTL: false,\r\n\r\n // Additional text to append to the year in the calendar title\r\n yearSuffix: '',\r\n\r\n // Render the month after year in the calendar title\r\n showMonthAfterYear: false,\r\n\r\n // how many months are visible\r\n numberOfMonths: 1,\r\n\r\n // when numberOfMonths is used, this will help you to choose where the main calendar will be (default `left`, can be set to `right`)\r\n // only used for the first display or when a selected date is not visible\r\n mainCalendar: 'left',\r\n\r\n // Specify a DOM element to render the calendar in\r\n container: undefined,\r\n\r\n // internationalization\r\n i18n: {\r\n previousMonth: 'Previous Month',\r\n nextMonth: 'Next Month',\r\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\r\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\r\n weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\r\n },\r\n\r\n // callback function\r\n onSelect: null,\r\n onOpen: null,\r\n onClose: null,\r\n onDraw: null\r\n },\r\n\r\n\r\n /**\r\n * templating functions to abstract HTML rendering\r\n */\r\n renderDayName = function (opts, day, abbr) {\r\n day += opts.firstDay;\r\n while (day >= 7) {\r\n day -= 7;\r\n }\r\n return abbr ? opts.i18n.weekdaysShort[day] : opts.i18n.weekdays[day];\r\n },\r\n\r\n renderDay = function (d, m, y, isSelected, isToday, isDisabled, isEmpty) {\r\n if (isEmpty) {\r\n return '';\r\n }\r\n var arr = [];\r\n if (isDisabled) {\r\n arr.push('is-disabled');\r\n }\r\n if (isToday) {\r\n arr.push('is-today');\r\n }\r\n if (isSelected) {\r\n arr.push('is-selected');\r\n }\r\n return '';\r\n },\r\n\r\n renderWeek = function (d, m, y) {\r\n // Lifted from http://javascript.about.com/library/blweekyear.htm, lightly modified.\r\n var onejan = new Date(y, 0, 1),\r\n weekNum = Math.ceil((((new Date(y, m, d) - onejan) / 86400000) + onejan.getDay() + 1) / 7);\r\n return '';\r\n },\r\n\r\n renderRow = function (days, isRTL) {\r\n return '' + (isRTL ? days.reverse() : days).join('') + '';\r\n },\r\n\r\n renderBody = function (rows) {\r\n return '' + rows.join('') + '';\r\n },\r\n\r\n renderHead = function (opts) {\r\n var i, arr = [];\r\n if (opts.showWeekNumber) {\r\n arr.push('');\r\n }\r\n for (i = 0; i < 7; i++) {\r\n arr.push('');\r\n }\r\n return '' + (opts.isRTL ? arr.reverse() : arr).join('') + '';\r\n },\r\n\r\n renderTitle = function (instance, c, year, month, refYear) {\r\n var i, j, arr,\r\n opts = instance._o,\r\n isMinYear = year === opts.minYear,\r\n isMaxYear = year === opts.maxYear,\r\n html = '
    ',\r\n monthHtml,\r\n yearHtml,\r\n prev = true,\r\n next = true;\r\n\r\n for (arr = [], i = 0; i < 12; i++) {\r\n arr.push('');\r\n }\r\n monthHtml = '
    ' + opts.i18n.months[month] + '
    ';\r\n\r\n if (isArray(opts.yearRange)) {\r\n i = opts.yearRange[0];\r\n j = opts.yearRange[1] + 1;\r\n } else {\r\n i = year - opts.yearRange;\r\n j = 1 + year + opts.yearRange;\r\n }\r\n\r\n for (arr = []; i < j && i <= opts.maxYear; i++) {\r\n if (i >= opts.minYear) {\r\n arr.push('');\r\n }\r\n }\r\n yearHtml = '
    ' + year + opts.yearSuffix + '
    ';\r\n\r\n if (opts.showMonthAfterYear) {\r\n html += yearHtml + monthHtml;\r\n } else {\r\n html += monthHtml + yearHtml;\r\n }\r\n\r\n if (isMinYear && (month === 0 || opts.minMonth >= month)) {\r\n prev = false;\r\n }\r\n\r\n if (isMaxYear && (month === 11 || opts.maxMonth <= month)) {\r\n next = false;\r\n }\r\n\r\n if (c === 0) {\r\n html += '';\r\n }\r\n if (c === (instance._o.numberOfMonths - 1)) {\r\n html += '';\r\n }\r\n\r\n return html += '
    ';\r\n },\r\n\r\n renderTable = function (opts, data) {\r\n return '
    \").addClass(\"cw\").text(\"#\"));c.isBefore(f.clone().endOf(\"w\"));)b.append(a(\"\").addClass(\"dow\").text(c.format(\"dd\"))),c.add(1,\"d\");o.find(\".datepicker-days thead\").append(b)},M=function(a){return d.disabledDates[a.format(\"YYYY-MM-DD\")]===!0},N=function(a){return d.enabledDates[a.format(\"YYYY-MM-DD\")]===!0},O=function(a){return d.disabledHours[a.format(\"H\")]===!0},P=function(a){return d.enabledHours[a.format(\"H\")]===!0},Q=function(b,c){if(!b.isValid())return!1;if(d.disabledDates&&\"d\"===c&&M(b))return!1;if(d.enabledDates&&\"d\"===c&&!N(b))return!1;if(d.minDate&&b.isBefore(d.minDate,c))return!1;if(d.maxDate&&b.isAfter(d.maxDate,c))return!1;if(d.daysOfWeekDisabled&&\"d\"===c&&-1!==d.daysOfWeekDisabled.indexOf(b.day()))return!1;if(d.disabledHours&&(\"h\"===c||\"m\"===c||\"s\"===c)&&O(b))return!1;if(d.enabledHours&&(\"h\"===c||\"m\"===c||\"s\"===c)&&!P(b))return!1;if(d.disabledTimeIntervals&&(\"h\"===c||\"m\"===c||\"s\"===c)){var e=!1;if(a.each(d.disabledTimeIntervals,function(){return b.isBetween(this[0],this[1])?(e=!0,!1):void 0}),e)return!1}return!0},R=function(){for(var b=[],c=f.clone().startOf(\"y\").startOf(\"d\");c.isSame(f,\"y\");)b.push(a(\"\").attr(\"data-action\",\"selectMonth\").addClass(\"month\").text(c.format(\"MMM\"))),c.add(1,\"M\");o.find(\".datepicker-months td\").empty().append(b)},S=function(){var b=o.find(\".datepicker-months\"),c=b.find(\"th\"),g=b.find(\"tbody\").find(\"span\");c.eq(0).find(\"span\").attr(\"title\",d.tooltips.prevYear),c.eq(1).attr(\"title\",d.tooltips.selectYear),c.eq(2).find(\"span\").attr(\"title\",d.tooltips.nextYear),b.find(\".disabled\").removeClass(\"disabled\"),Q(f.clone().subtract(1,\"y\"),\"y\")||c.eq(0).addClass(\"disabled\"),c.eq(1).text(f.year()),Q(f.clone().add(1,\"y\"),\"y\")||c.eq(2).addClass(\"disabled\"),g.removeClass(\"active\"),e.isSame(f,\"y\")&&!m&&g.eq(e.month()).addClass(\"active\"),g.each(function(b){Q(f.clone().month(b),\"M\")||a(this).addClass(\"disabled\")})},T=function(){var a=o.find(\".datepicker-years\"),b=a.find(\"th\"),c=f.clone().subtract(5,\"y\"),g=f.clone().add(6,\"y\"),h=\"\";for(b.eq(0).find(\"span\").attr(\"title\",d.tooltips.prevDecade),b.eq(1).attr(\"title\",d.tooltips.selectDecade),b.eq(2).find(\"span\").attr(\"title\",d.tooltips.nextDecade),a.find(\".disabled\").removeClass(\"disabled\"),d.minDate&&d.minDate.isAfter(c,\"y\")&&b.eq(0).addClass(\"disabled\"),b.eq(1).text(c.year()+\"-\"+g.year()),d.maxDate&&d.maxDate.isBefore(g,\"y\")&&b.eq(2).addClass(\"disabled\");!c.isAfter(g,\"y\");)h+=''+c.year()+\"\",c.add(1,\"y\");a.find(\"td\").html(h)},U=function(){var a=o.find(\".datepicker-decades\"),c=a.find(\"th\"),g=b({y:f.year()-f.year()%100-1}),h=g.clone().add(100,\"y\"),i=g.clone(),j=\"\";for(c.eq(0).find(\"span\").attr(\"title\",d.tooltips.prevCentury),c.eq(2).find(\"span\").attr(\"title\",d.tooltips.nextCentury),a.find(\".disabled\").removeClass(\"disabled\"),(g.isSame(b({y:1900}))||d.minDate&&d.minDate.isAfter(g,\"y\"))&&c.eq(0).addClass(\"disabled\"),c.eq(1).text(g.year()+\"-\"+h.year()),(g.isSame(b({y:2e3}))||d.maxDate&&d.maxDate.isBefore(h,\"y\"))&&c.eq(2).addClass(\"disabled\");!g.isAfter(h,\"y\");)j+=''+(g.year()+1)+\" - \"+(g.year()+12)+\"\",g.add(12,\"y\");j+=\"\",a.find(\"td\").html(j),c.eq(1).text(i.year()+1+\"-\"+g.year())},V=function(){var b,c,g,h,i=o.find(\".datepicker-days\"),j=i.find(\"th\"),k=[];if(A()){for(j.eq(0).find(\"span\").attr(\"title\",d.tooltips.prevMonth),j.eq(1).attr(\"title\",d.tooltips.selectMonth),j.eq(2).find(\"span\").attr(\"title\",d.tooltips.nextMonth),i.find(\".disabled\").removeClass(\"disabled\"),j.eq(1).text(f.format(d.dayViewHeaderFormat)),Q(f.clone().subtract(1,\"M\"),\"M\")||j.eq(0).addClass(\"disabled\"),Q(f.clone().add(1,\"M\"),\"M\")||j.eq(2).addClass(\"disabled\"),b=f.clone().startOf(\"M\").startOf(\"w\").startOf(\"d\"),h=0;42>h;h++)0===b.weekday()&&(c=a(\"
    '+b.week()+\"'+b.date()+\"
    '+c.format(h?\"HH\":\"hh\")+\"
    '+c.format(\"mm\")+\"
    '+c.format(\"ss\")+\"' +\r\n '' +\r\n '' + weekNum + '
    ' + renderDayName(opts, i, true) + '
    ' + renderHead(opts) + renderBody(data) + '
    ';\r\n },\r\n\r\n\r\n /**\r\n * Pikaday constructor\r\n */\r\n Pikaday = function (options) {\r\n var self = this,\r\n opts = self.config(options);\r\n\r\n self._onMouseDown = function (e) {\r\n if (!self._v) {\r\n return;\r\n }\r\n e = e || window.event;\r\n var target = e.target || e.srcElement;\r\n if (!target) {\r\n return;\r\n }\r\n\r\n if (!hasClass(target, 'is-disabled')) {\r\n if (hasClass(target, 'pika-button') && !hasClass(target, 'is-empty')) {\r\n self.setDate(new Date(target.getAttribute('data-pika-year'), target.getAttribute('data-pika-month'), target.getAttribute('data-pika-day')));\r\n if (opts.bound) {\r\n sto(function () {\r\n self.hide();\r\n if (opts.field) {\r\n opts.field.blur();\r\n }\r\n }, 100);\r\n }\r\n return;\r\n }\r\n else if (hasClass(target, 'pika-prev')) {\r\n self.prevMonth();\r\n }\r\n else if (hasClass(target, 'pika-next')) {\r\n self.nextMonth();\r\n }\r\n }\r\n if (!hasClass(target, 'pika-select')) {\r\n if (e.preventDefault) {\r\n e.preventDefault();\r\n } else {\r\n e.returnValue = false;\r\n return false;\r\n }\r\n } else {\r\n self._c = true;\r\n }\r\n };\r\n\r\n self._onChange = function (e) {\r\n e = e || window.event;\r\n var target = e.target || e.srcElement;\r\n if (!target) {\r\n return;\r\n }\r\n if (hasClass(target, 'pika-select-month')) {\r\n self.gotoMonth(target.value);\r\n }\r\n else if (hasClass(target, 'pika-select-year')) {\r\n self.gotoYear(target.value);\r\n }\r\n };\r\n\r\n self._onInputChange = function (e) {\r\n var date;\r\n\r\n if (e.firedBy === self) {\r\n return;\r\n }\r\n if (hasMoment) {\r\n date = moment(opts.field.value, opts.format);\r\n date = (date && date.isValid()) ? date.toDate() : null;\r\n }\r\n else {\r\n date = new Date(Date.parse(opts.field.value));\r\n }\r\n self.setDate(isDate(date) ? date : null);\r\n if (!self._v) {\r\n self.show();\r\n }\r\n };\r\n\r\n self._onInputFocus = function () {\r\n self.show();\r\n };\r\n\r\n self._onInputClick = function () {\r\n self.show();\r\n };\r\n\r\n self._onInputBlur = function () {\r\n if (!self._c) {\r\n self._b = sto(function () {\r\n self.hide();\r\n }, 50);\r\n }\r\n self._c = false;\r\n };\r\n\r\n self._onClick = function (e) {\r\n e = e || window.event;\r\n var target = e.target || e.srcElement,\r\n pEl = target;\r\n if (!target) {\r\n return;\r\n }\r\n if (!hasEventListeners && hasClass(target, 'pika-select')) {\r\n if (!target.onchange) {\r\n target.setAttribute('onchange', 'return;');\r\n addEvent(target, 'change', self._onChange);\r\n }\r\n }\r\n do {\r\n if (hasClass(pEl, 'pika-single')) {\r\n return;\r\n }\r\n }\r\n while ((pEl = pEl.parentNode));\r\n if (self._v && target !== opts.trigger) {\r\n self.hide();\r\n }\r\n };\r\n\r\n self.el = document.createElement('div');\r\n self.el.className = 'pika-single' + (opts.isRTL ? ' is-rtl' : '');\r\n\r\n addEvent(self.el, 'mousedown', self._onMouseDown, true);\r\n addEvent(self.el, 'change', self._onChange);\r\n\r\n if (opts.field) {\r\n if (opts.container) {\r\n opts.container.appendChild(self.el);\r\n } else if (opts.bound) {\r\n document.body.appendChild(self.el);\r\n } else {\r\n opts.field.parentNode.insertBefore(self.el, opts.field.nextSibling);\r\n }\r\n addEvent(opts.field, 'change', self._onInputChange);\r\n\r\n if (!opts.defaultDate) {\r\n if (hasMoment && opts.field.value) {\r\n opts.defaultDate = moment(opts.field.value, opts.format).toDate();\r\n } else {\r\n opts.defaultDate = new Date(Date.parse(opts.field.value));\r\n }\r\n opts.setDefaultDate = true;\r\n }\r\n }\r\n\r\n var defDate = opts.defaultDate;\r\n\r\n if (isDate(defDate)) {\r\n if (opts.setDefaultDate) {\r\n self.setDate(defDate, true);\r\n } else {\r\n self.gotoDate(defDate);\r\n }\r\n } else {\r\n self.gotoDate(new Date());\r\n }\r\n\r\n if (opts.bound) {\r\n this.hide();\r\n self.el.className += ' is-bound';\r\n addEvent(opts.trigger, 'click', self._onInputClick);\r\n addEvent(opts.trigger, 'focus', self._onInputFocus);\r\n addEvent(opts.trigger, 'blur', self._onInputBlur);\r\n } else {\r\n this.show();\r\n }\r\n };\r\n\r\n\r\n /**\r\n * public Pikaday API\r\n */\r\n Pikaday.prototype = {\r\n\r\n\r\n /**\r\n * configure functionality\r\n */\r\n config: function (options) {\r\n if (!this._o) {\r\n this._o = extend({}, defaults, true);\r\n }\r\n\r\n var opts = extend(this._o, options, true);\r\n\r\n opts.isRTL = !!opts.isRTL;\r\n\r\n opts.field = (opts.field && opts.field.nodeName) ? opts.field : null;\r\n\r\n opts.bound = !!(opts.bound !== undefined ? opts.field && opts.bound : opts.field);\r\n\r\n opts.trigger = (opts.trigger && opts.trigger.nodeName) ? opts.trigger : opts.field;\r\n\r\n var nom = parseInt(opts.numberOfMonths, 10) || 1;\r\n opts.numberOfMonths = nom > 4 ? 4 : nom;\r\n\r\n if (!isDate(opts.minDate)) {\r\n opts.minDate = false;\r\n }\r\n if (!isDate(opts.maxDate)) {\r\n opts.maxDate = false;\r\n }\r\n if ((opts.minDate && opts.maxDate) && opts.maxDate < opts.minDate) {\r\n opts.maxDate = opts.minDate = false;\r\n }\r\n if (opts.minDate) {\r\n setToStartOfDay(opts.minDate);\r\n opts.minYear = opts.minDate.getFullYear();\r\n opts.minMonth = opts.minDate.getMonth();\r\n }\r\n if (opts.maxDate) {\r\n setToStartOfDay(opts.maxDate);\r\n opts.maxYear = opts.maxDate.getFullYear();\r\n opts.maxMonth = opts.maxDate.getMonth();\r\n }\r\n\r\n if (isArray(opts.yearRange)) {\r\n var fallback = new Date().getFullYear() - 10;\r\n opts.yearRange[0] = parseInt(opts.yearRange[0], 10) || fallback;\r\n opts.yearRange[1] = parseInt(opts.yearRange[1], 10) || fallback;\r\n } else {\r\n opts.yearRange = Math.abs(parseInt(opts.yearRange, 10)) || defaults.yearRange;\r\n if (opts.yearRange > 100) {\r\n opts.yearRange = 100;\r\n }\r\n }\r\n\r\n return opts;\r\n },\r\n\r\n /**\r\n * return a formatted string of the current selection (using Moment.js if available)\r\n */\r\n toString: function (format) {\r\n return !isDate(this._d) ? '' : hasMoment ? moment(this._d).format(format || this._o.format) : this._d.toDateString();\r\n },\r\n\r\n /**\r\n * return a Moment.js object of the current selection (if available)\r\n */\r\n getMoment: function () {\r\n return hasMoment ? moment(this._d) : null;\r\n },\r\n\r\n /**\r\n * set the current selection from a Moment.js object (if available)\r\n */\r\n setMoment: function (date, preventOnSelect) {\r\n if (hasMoment && moment.isMoment(date)) {\r\n this.setDate(date.toDate(), preventOnSelect);\r\n }\r\n },\r\n\r\n /**\r\n * return a Date object of the current selection\r\n */\r\n getDate: function () {\r\n return isDate(this._d) ? new Date(this._d.getTime()) : null;\r\n },\r\n\r\n /**\r\n * set the current selection\r\n */\r\n setDate: function (date, preventOnSelect) {\r\n if (!date) {\r\n this._d = null;\r\n return this.draw();\r\n }\r\n if (typeof date === 'string') {\r\n date = new Date(Date.parse(date));\r\n }\r\n if (!isDate(date)) {\r\n return;\r\n }\r\n\r\n var min = this._o.minDate,\r\n max = this._o.maxDate;\r\n\r\n if (isDate(min) && date < min) {\r\n date = min;\r\n } else if (isDate(max) && date > max) {\r\n date = max;\r\n }\r\n\r\n this._d = new Date(date.getTime());\r\n setToStartOfDay(this._d);\r\n this.gotoDate(this._d);\r\n\r\n if (this._o.field) {\r\n this._o.field.value = this.toString();\r\n fireEvent(this._o.field, 'change', { firedBy: this });\r\n }\r\n if (!preventOnSelect && typeof this._o.onSelect === 'function') {\r\n this._o.onSelect.call(this, this.getDate());\r\n }\r\n },\r\n\r\n /**\r\n * change view to a specific date\r\n */\r\n gotoDate: function (date) {\r\n var newCalendar = true;\r\n\r\n if (!isDate(date)) {\r\n return;\r\n }\r\n\r\n if (this.calendars) {\r\n var firstVisibleDate = new Date(this.calendars[0].year, this.calendars[0].month, 1),\r\n lastVisibleDate = new Date(this.calendars[this.calendars.length - 1].year, this.calendars[this.calendars.length - 1].month, 1),\r\n visibleDate = date.getTime();\r\n // get the end of the month\r\n lastVisibleDate.setMonth(lastVisibleDate.getMonth() + 1);\r\n lastVisibleDate.setDate(lastVisibleDate.getDate() - 1);\r\n newCalendar = (visibleDate < firstVisibleDate.getTime() || lastVisibleDate.getTime() < visibleDate);\r\n }\r\n\r\n if (newCalendar) {\r\n this.calendars = [{\r\n month: date.getMonth(),\r\n year: date.getFullYear()\r\n }];\r\n if (this._o.mainCalendar === 'right') {\r\n this.calendars[0].month += 1 - this._o.numberOfMonths;\r\n }\r\n }\r\n\r\n this.adjustCalendars();\r\n },\r\n\r\n adjustCalendars: function () {\r\n this.calendars[0] = adjustCalendar(this.calendars[0]);\r\n for (var c = 1; c < this._o.numberOfMonths; c++) {\r\n this.calendars[c] = adjustCalendar({\r\n month: this.calendars[0].month + c,\r\n year: this.calendars[0].year\r\n });\r\n }\r\n this.draw();\r\n },\r\n\r\n gotoToday: function () {\r\n this.gotoDate(new Date());\r\n },\r\n\r\n /**\r\n * change view to a specific month (zero-index, e.g. 0: January)\r\n */\r\n gotoMonth: function (month) {\r\n if (!isNaN(month)) {\r\n this.calendars[0].month = parseInt(month, 10);\r\n this.adjustCalendars();\r\n }\r\n },\r\n\r\n nextMonth: function () {\r\n this.calendars[0].month++;\r\n this.adjustCalendars();\r\n },\r\n\r\n prevMonth: function () {\r\n this.calendars[0].month--;\r\n this.adjustCalendars();\r\n },\r\n\r\n /**\r\n * change view to a specific full year (e.g. \"2012\")\r\n */\r\n gotoYear: function (year) {\r\n if (!isNaN(year)) {\r\n this.calendars[0].year = parseInt(year, 10);\r\n this.adjustCalendars();\r\n }\r\n },\r\n\r\n /**\r\n * change the minDate\r\n */\r\n setMinDate: function (value) {\r\n this._o.minDate = value;\r\n },\r\n\r\n /**\r\n * change the maxDate\r\n */\r\n setMaxDate: function (value) {\r\n this._o.maxDate = value;\r\n },\r\n\r\n /**\r\n * refresh the HTML\r\n */\r\n draw: function (force) {\r\n if (!this._v && !force) {\r\n return;\r\n }\r\n var opts = this._o,\r\n minYear = opts.minYear,\r\n maxYear = opts.maxYear,\r\n minMonth = opts.minMonth,\r\n maxMonth = opts.maxMonth,\r\n html = '';\r\n\r\n if (this._y <= minYear) {\r\n this._y = minYear;\r\n if (!isNaN(minMonth) && this._m < minMonth) {\r\n this._m = minMonth;\r\n }\r\n }\r\n if (this._y >= maxYear) {\r\n this._y = maxYear;\r\n if (!isNaN(maxMonth) && this._m > maxMonth) {\r\n this._m = maxMonth;\r\n }\r\n }\r\n\r\n for (var c = 0; c < opts.numberOfMonths; c++) {\r\n html += '
    ' + renderTitle(this, c, this.calendars[c].year, this.calendars[c].month, this.calendars[0].year) + this.render(this.calendars[c].year, this.calendars[c].month) + '
    ';\r\n }\r\n\r\n this.el.innerHTML = html;\r\n\r\n if (opts.bound) {\r\n if (opts.field.type !== 'hidden') {\r\n sto(function () {\r\n opts.trigger.focus();\r\n }, 1);\r\n }\r\n }\r\n\r\n if (typeof this._o.onDraw === 'function') {\r\n var self = this;\r\n sto(function () {\r\n self._o.onDraw.call(self);\r\n }, 0);\r\n }\r\n },\r\n\r\n adjustPosition: function () {\r\n if (this._o.container) return;\r\n var field = this._o.trigger, pEl = field,\r\n width = this.el.offsetWidth, height = this.el.offsetHeight,\r\n viewportWidth = window.innerWidth || document.documentElement.clientWidth,\r\n viewportHeight = window.innerHeight || document.documentElement.clientHeight,\r\n scrollTop = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop,\r\n left, top, clientRect;\r\n\r\n if (typeof field.getBoundingClientRect === 'function') {\r\n clientRect = field.getBoundingClientRect();\r\n left = clientRect.left + window.pageXOffset;\r\n top = clientRect.bottom + window.pageYOffset;\r\n } else {\r\n left = pEl.offsetLeft;\r\n top = pEl.offsetTop + pEl.offsetHeight;\r\n while ((pEl = pEl.offsetParent)) {\r\n left += pEl.offsetLeft;\r\n top += pEl.offsetTop;\r\n }\r\n }\r\n\r\n // default position is bottom & left\r\n if (left + width > viewportWidth ||\r\n (\r\n this._o.position.indexOf('right') > -1 &&\r\n left - width + field.offsetWidth > 0\r\n )\r\n ) {\r\n left = left - width + field.offsetWidth;\r\n }\r\n if (top + height > viewportHeight + scrollTop ||\r\n (\r\n this._o.position.indexOf('top') > -1 &&\r\n top - height - field.offsetHeight > 0\r\n )\r\n ) {\r\n top = top - height - field.offsetHeight;\r\n }\r\n this.el.style.cssText = [\r\n 'position: absolute',\r\n 'left: ' + left + 'px',\r\n 'top: ' + top + 'px'\r\n ].join(';');\r\n },\r\n\r\n /**\r\n * render HTML for a particular month\r\n */\r\n render: function (year, month) {\r\n var opts = this._o,\r\n now = new Date(),\r\n days = getDaysInMonth(year, month),\r\n before = new Date(year, month, 1).getDay(),\r\n data = [],\r\n row = [];\r\n setToStartOfDay(now);\r\n if (opts.firstDay > 0) {\r\n before -= opts.firstDay;\r\n if (before < 0) {\r\n before += 7;\r\n }\r\n }\r\n var cells = days + before,\r\n after = cells;\r\n while (after > 7) {\r\n after -= 7;\r\n }\r\n cells += 7 - after;\r\n for (var i = 0, r = 0; i < cells; i++) {\r\n var day = new Date(year, month, 1 + (i - before)),\r\n isDisabled = (opts.minDate && day < opts.minDate) || (opts.maxDate && day > opts.maxDate),\r\n isSelected = isDate(this._d) ? compareDates(day, this._d) : false,\r\n isToday = compareDates(day, now),\r\n isEmpty = i < before || i >= (days + before);\r\n\r\n row.push(renderDay(1 + (i - before), month, year, isSelected, isToday, isDisabled, isEmpty));\r\n\r\n if (++r === 7) {\r\n if (opts.showWeekNumber) {\r\n row.unshift(renderWeek(i - before, month, year));\r\n }\r\n data.push(renderRow(row, opts.isRTL));\r\n row = [];\r\n r = 0;\r\n }\r\n }\r\n return renderTable(opts, data);\r\n },\r\n\r\n isVisible: function () {\r\n return this._v;\r\n },\r\n\r\n show: function () {\r\n if (!this._v) {\r\n removeClass(this.el, 'is-hidden');\r\n this._v = true;\r\n this.draw();\r\n if (this._o.bound) {\r\n addEvent(document, 'click', this._onClick);\r\n this.adjustPosition();\r\n }\r\n if (typeof this._o.onOpen === 'function') {\r\n this._o.onOpen.call(this);\r\n }\r\n }\r\n },\r\n\r\n hide: function () {\r\n var v = this._v;\r\n if (v !== false) {\r\n if (this._o.bound) {\r\n removeEvent(document, 'click', this._onClick);\r\n }\r\n this.el.style.cssText = '';\r\n addClass(this.el, 'is-hidden');\r\n this._v = false;\r\n if (v !== undefined && typeof this._o.onClose === 'function') {\r\n this._o.onClose.call(this);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * GAME OVER\r\n */\r\n destroy: function () {\r\n this.hide();\r\n removeEvent(this.el, 'mousedown', this._onMouseDown, true);\r\n removeEvent(this.el, 'change', this._onChange);\r\n if (this._o.field) {\r\n removeEvent(this._o.field, 'change', this._onInputChange);\r\n if (this._o.bound) {\r\n removeEvent(this._o.trigger, 'click', this._onInputClick);\r\n removeEvent(this._o.trigger, 'focus', this._onInputFocus);\r\n removeEvent(this._o.trigger, 'blur', this._onInputBlur);\r\n }\r\n }\r\n if (this.el.parentNode) {\r\n this.el.parentNode.removeChild(this.el);\r\n }\r\n }\r\n\r\n };\r\n\r\n return Pikaday;\r\n\r\n}));"]}