{"version":3,"sources":["App/js/plugins/ie10fix.js","App/js/plugins/bootstrap-select.js","App/js/plugins/clipboard.js","App/js/plugins/dropzone.js","App/js/plugins/format.js","App/js/plugins/hoverintent.min.js","App/js/plugins/pointer_events_polyfill.js","App/js/directives/directive.owl-carousel.js","App/js/plugins/jquery.equal-heights.js","App/js/plugins/jquery.nicescroll.js","App/js/plugins/jquery.pplayer.js","App/js/plugins/jquery.zoom.js","App/js/plugins/load-image.js","App/js/plugins/lodash.custom.min.js","App/js/plugins/md5.min.js","App/js/plugins/owl.carousel.js","App/js/plugins/spin.js","App/js/lib/angular/angular-animate.js","App/js/lib/angular/angular-route.js","App/gulp/gulp-routes.js","App/gulp/gulp-dependencies.js","App/gulp/gulp-templates.js","App/gulp/gulp-client.js","App/js/app.js","App/js/components/component.addtocart-quantity.js","App/js/components/component.addtocart.js","App/js/components/component.addtowishlist.js","App/js/components/component.delete-cart-item.js","App/js/components/component.input-quantity.js","App/js/components/component.modify-cart-item.js","App/js/directives/directive.back-top-top.js","App/js/directives/directive.bootstrap-select.js","App/js/directives/directive.cdn.js","App/js/directives/directive.clear-uib-tab.js","App/js/directives/directive.collapse-menu.js","App/js/directives/directive.debug.js","App/js/directives/directive.flip.js","App/js/directives/directive.page-head.js","App/js/directives/directive.responsive-img.js","App/js/directives/directive.video-player.js","App/js/directives/directives.breadcrumb.js","App/js/directives/directives.form.js","App/js/filters/filter.discount.js","App/js/filters/filter.format.js","App/js/filters/filter.phone.js","App/js/filters/filter.price.js","App/js/filters/filter.truncate-date.js","App/js/lib/angular-dropzone.js","App/js/lib/angular-gm.js","App/js/lib/angular-smooth-scroll.js","App/js/lib/angular-sticky.js","App/js/lib/angular-toastr/angular-toastr.js","App/js/lib/angular/angular-cookies.js","App/js/lib/angular/angular-locale_fr.js","App/js/lib/angular/angular-sanitize.js","App/js/lib/bootstrap-angular-validation/app.js","App/js/lib/bootstrap-angular-validation/app.provider.js","App/js/lib/bootstrap-angular-validation/directives/form.directive.js","App/js/lib/bootstrap-angular-validation/directives/validation.directive.js","App/js/lib/bootstrap-angular-validation/services/simple.message.service.js","App/js/lib/bootstrap-angular-validation/services/tooltip.message.service.js","App/js/lib/bootstrap-angular-validation/services/validation.service.js","App/js/lib/bootstrap-angular-validation/utils.js","App/js/lib/module.lazy-img.js","App/js/lib/module.spinner.js","App/js/lib/ngclipboard.js","App/js/lib/rzslider.js","App/js/lib/ui-bootstrap-custom-tpls-2.5.0.js","App/js/modules/controllers.modal.js","App/js/modules/module.modal.js","App/js/modules/module.products-grid.js","App/js/routing-listeners.js","App/js/routing.js","App/js/services/service.account.js","App/js/services/service.app.js","App/js/services/service.cdn.js","App/js/services/service.date.js","App/js/services/service.gmap.js","App/js/services/service.http.js","App/js/services/service.responsive.js","App/js/services/service.window-events.js","App/Modules/Account/js/account-claim.js","App/Modules/Account/js/account-create.js","App/Modules/Account/js/account-credits.js","App/Modules/Account/js/account-gift-card.js","App/Modules/Account/js/account-home.js","App/Modules/Account/js/account-invoices.js","App/Modules/Account/js/account-loyalty-points.js","App/Modules/Account/js/account-numeric-files.js","App/Modules/Account/js/account-numeric-products.js","App/Modules/Account/js/account-order-tracking.js","App/Modules/Account/js/account-password-recovery.js","App/Modules/Account/js/account-quotation.js","App/Modules/Account/js/account-returns.js","App/Modules/Account/js/account-saved-carts.js","App/Modules/Account/js/account-sponsorship.js","App/Modules/Account/js/account-use-delegation.js","App/Modules/Account/js/account-user.js","App/Modules/Account/js/account-whishlist.js","App/Modules/Account/js/directive.account-activities.js","App/Modules/Account/js/directive.account.js","App/Modules/Authentication/js/authentication.js","App/Modules/Authentication/js/directive.account-activities.js","App/Modules/Authentication/js/mini-login.js","App/Modules/Authentication/js/service.authentication.js","App/Modules/Autocomplete/js/autocomplete.js","App/Modules/Autocomplete/js/searchfinder.js","App/Modules/Cart/js/confirmation.js","App/Modules/Cart/js/directive.mini-cart.js","App/Modules/Cart/js/directive.steps.js","App/Modules/Cart/js/display.js","App/Modules/Cart/js/identification.js","App/Modules/Cart/js/payment-error.js","App/Modules/Cart/js/payment.js","App/Modules/Cart/js/quick-order.js","App/Modules/Cart/js/services.cart.js","App/Modules/Cart/js/shipping.js","App/Modules/Cart/js/testoon-code-verification.js","App/Modules/Cart/js/testoon-partial-shipping.js","App/Modules/Cart/js/validation.js","App/Modules/Category/js/directive.filters.js","App/Modules/Category/js/directive.infinite-scroll.js","App/Modules/Category/js/directive.vente.privee.js","App/Modules/Category/js/module.category.js","App/Modules/Category/js/service.category.js","App/Modules/Form/js/form.js","App/Modules/Home/js/directive.from.vente.privee.js","App/Modules/Product/js/component.customization.js","App/Modules/Product/js/directive.kit.js","App/Modules/Product/js/directive.price.js","App/Modules/Product/js/directive.product-gallery.js","App/Modules/Product/js/directive.share.js","App/Modules/Product/js/directive.show-hide.js","App/Modules/Product/js/module.product.js","App/Modules/Product/js/service.product.js","App/Modules/Reviews/js/module.reviews.js","App/Modules/Search/js/search.js","App/Modules/Shared/Autocomplete/js/angucomplete-alt.js","App/Modules/Shared/Autocomplete/js/autocomplete-select.js","App/Modules/Shared/Comparator/js/component.comparator.js","App/Modules/Shared/Comparator/js/directive.compare.checkbox.js","App/Modules/Shared/Comparator/js/service.compare.js","App/Modules/Shared/Footer/js/newsletter.js","App/Modules/Shared/Menu1/js/nav-mini-login.js","App/Modules/Shared/Menu1/js/nav.directive.js","App/Modules/Stores/js/store-detail.js","App/Modules/Stores/js/stores-service.js","App/Modules/Stores/js/stores.js"],"names":["root","factory","define","amd","a0","module","exports","require","this","jQuery","$","toString","defineProperty","indexOf","includes","startsWith","String","prototype","object","$defineProperty","Object","result","error","search","TypeError","string","call","stringLength","length","searchString","searchLength","position","arguments","undefined","pos","Number","Math","min","max","value","configurable","writable","start","index","charCodeAt","keys","o","k","r","hasOwnProperty","push","valHooks","useDefault","_set","select","set","elem","data","apply","changed_arguments","EventIsSupported","Event","e","normalizeToBase","text","each","re","ch","replace","fn","triggerNative","eventName","event","el","dispatchEvent","bubbles","document","createEvent","initEvent","fireEvent","createEventObject","eventType","trigger","expr","pseudos","icontains","obj","meta","$obj","find","toUpperCase","ibegins","aicontains","aibegins","createEscaper","map","escaper","match","source","join","testRegexp","RegExp","replaceRegexp","test","htmlEscape","&","<",">","\"","'","`","htmlUnescape","&","<",">",""","'","`","Selectpicker","element","options","$element","$newElement","$button","$menu","$lis","title","attr","winPad","windowPadding","val","render","refresh","setStyle","selectAll","deselectAll","destroy","remove","show","hide","init","Plugin","option","args","_option","shift","chain","$this","is","i","config","extend","DEFAULTS","selectpicker","defaults","template","Function","VERSION","noneSelectedText","noneResultsText","countSelectedText","numSelected","numTotal","maxOptionsText","numAll","numGroup","selectAllText","deselectAllText","doneButton","doneButtonText","multipleSeparator","styleBase","style","caret","size","selectedTextFormat","width","container","hideDisabled","showSubtext","showIcon","showContent","dropupAuto","header","liveSearch","liveSearchPlaceholder","liveSearchNormalize","liveSearchStyle","actionsBox","iconBase","tickIcon","showTick","maxOptions","mobile","selectOnTab","dropdownAlignRight","constructor","that","id","addClass","liObj","multiple","prop","autofocus","createView","after","appendTo","children","$menuInner","$searchbox","removeClass","click","preventDefault","focus","checkDisabled","clickListener","liveSearchListener","setWidth","selectPosition","on","hide.bs.dropdown","hidden.bs.dropdown","show.bs.dropdown","shown.bs.dropdown","hasAttribute","focus.bs.select","off","shown.bs.select","rendered.bs.select","validity","valid","blur","setTimeout","createDropdown","inputGroup","parent","hasClass","searchbox","actionsbox","donebutton","drop","$drop","li","createLi","innerHTML","reloadLi","_li","optID","titleOption","createElement","liIndex","generateLI","content","classes","optgroup","generateA","inline","tokens","html","className","insertBefore","firstChild","selectedIndex","selected","$selectOptions","prevHiddenIndex","optionClass","cssText","subtext","icon","$parent","isOptgroup","tagName","isOptgroupDisabled","disabled","isDisabled","next","$options","filter","optGroupClass","label","labelSubtext","showDivider","previousElementSibling","prevHidden","eq","findLis","updateLi","notDisabled","setDisabled","parentNode","setSelected","togglePlaceholder","tabIndex","selectedItems","toArray","split","totalCount","not","trim","status","buttonClass","liHeight","sizeInfo","newElement","menu","menuInner","divider","a","cloneNode","actions","appendChild","createTextNode","input","body","offsetHeight","headerHeight","searchHeight","actionsHeight","doneButtonHeight","dividerHeight","outerHeight","menuStyle","getComputedStyle","menuPadding","vert","parseInt","paddingTop","css","paddingBottom","borderTopWidth","borderBottomWidth","horiz","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","menuExtras","marginTop","marginBottom","marginLeft","marginRight","removeChild","setSize","menuHeight","menuWidth","getHeight","getWidth","selectOffsetTop","selectOffsetBot","selectOffsetLeft","selectOffsetRight","$window","window","selectHeight","selectWidth","offsetWidth","divHeight","getPos","containerPos","offset","$container","top","left","scrollTop","height","scrollLeft","getSize","minHeight","include","classList","contains","lis","getElementsByTagName","lisVisible","Array","optGroup","toggleClass","max-height","overflow","min-height","menuInnerHeight","overflow-y","optIndex","slice","last","divLength","$selectClone","clone","$selectClone2","ulWidth","outerWidth","btnWidth","$bsContainer","actualHeight","getPlacement","append","detach","removeAttr","$document","keyCode","offsetTop","clickedIndex","prevValue","prevIndex","triggerChange","stopPropagation","$option","state","$optgroup","maxOptionsGrp","maxReached","maxReachedGrp","optgroupID","maxOptionsArr","maxTxt","maxTxtGrp","$notify","delay","fadeOut","currentTarget","target","change","$no_results","$hideItems","$searchBase","_searchStyle","$foundDiv","$lisVisible","first","begins","changeAll","lisVisLen","selectedOptions","origIndex","getAttribute","toggle","keydown","$items","isActive","selector","keyCodeMap","32","48","49","50","51","52","53","54","55","56","57","59","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","96","97","98","99","100","101","102","103","104","105","count","keyIndex","toLowerCase","substring","before","removeData","old","Constructor","noConflict","$selectpicker","Dropdown","getParent","clearMenus","which","relatedTarget","type","isDefaultPrevented","documentElement","closest","insertAfter","dropdown","f","global","self","Clipboard","t","n","s","u","Error","code","l","1","Element","matches","proto","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","nodeType","2","callback","useCapture","listenerFn","delegateTarget","addEventListener","removeEventListener","./closest","3","node","HTMLElement","nodeList","4","delegate","forEach","./is","5","selectedText","nodeName","isReadOnly","setAttribute","setSelectionRange","removeAttribute","selection","getSelection","range","createRange","selectNodeContents","removeAllRanges","addRange","6","E","name","ctx","once","listener","_","emit","evtArr","len","evts","liveEvents","7","mod","clipboardAction","_select","_select2","__esModule","default","_typeof","Symbol","iterator","_createClass","defineProperties","props","descriptor","enumerable","key","protoProps","staticProps","ClipboardAction","instance","_classCallCheck","resolveOptions","initSelection","action","emitter","selectFake","selectTarget","_this","isRTL","removeFake","fakeHandlerCallback","fakeHandler","fakeElem","fontSize","border","padding","margin","yPosition","pageYOffset","copyText","succeeded","execCommand","err","handleResult","clearSelection","bind","_action","get","_target","8","tinyEmitter","goodListener","clipboard","_clipboardAction","_tinyEmitter","_goodListener","_clipboardAction2","_interopRequireDefault","_tinyEmitter2","_goodListener2","_Emitter","ReferenceError","_possibleConstructorReturn","__proto__","getPrototypeOf","listenClick","subClass","superClass","create","setPrototypeOf","_inherits","defaultAction","defaultTarget","defaultText","_this2","onClick","getAttributeValue","querySelector","support","queryCommandSupported","suffix","attribute","./clipboard-action","good-listener","tiny-emitter","Dropzone","Emitter","camelize","contentLoaded","detectVerticalSquash","drawImageIOSFix","noop","without","__slice","__hasProp","_callbacks","callbacks","_i","_len","removeListener","removeAllListeners","splice","_super","resolveOption","elementOptions","fallback","_ref","version","defaultOptions","previewTemplate","clickableElements","listeners","files","dropzone","instances","optionsForElement","forceFallback","isBrowserSupported","url","acceptedFiles","acceptedMimeTypes","method","getExistingFallback","previewsContainer","getElement","clickable","getElements","child","ctor","__super__","__extends","events","withCredentials","parallelUploads","uploadMultiple","maxFilesize","paramName","createImageThumbnails","maxThumbnailFilesize","thumbnailWidth","thumbnailHeight","filesizeBase","maxFiles","params","ignoreHiddenFiles","autoProcessQueue","autoQueue","addRemoveLinks","hiddenInputContainer","capture","renameFilename","dictDefaultMessage","dictFallbackMessage","dictFallbackText","dictFileTooBig","dictInvalidFileType","dictResponseError","dictCancelUpload","dictCancelUploadConfirmation","dictRemoveFile","dictRemoveFileConfirmation","dictMaxFilesExceeded","accept","file","done","messageElement","span","textContent","innerText","getFallbackForm","resize","info","srcRatio","trgRatio","srcX","srcY","srcWidth","srcHeight","optWidth","optHeight","trgHeight","trgWidth","dragstart","dragend","dragenter","add","dragover","dragleave","paste","reset","addedfile","removeFileEvent","removeLink","_j","_k","_len1","_len2","_ref1","_ref2","_results","previewElement","querySelectorAll","filesize","_removeLink","UPLOADING","confirm","removeFile","removedfile","_updateMaxFilesReachedClass","thumbnail","dataUrl","thumbnailElement","alt","src","message","errormultiple","processing","processingmultiple","uploadprogress","progress","bytesSent","totaluploadprogress","sending","sendingmultiple","success","successmultiple","canceled","canceledmultiple","complete","completemultiple","maxfilesexceeded","maxfilesreached","queuecomplete","addedfiles","objects","getAcceptedFiles","accepted","getRejectedFiles","getFilesWithStatus","getQueuedFiles","QUEUED","getUploadingFiles","getAddedFiles","ADDED","getActiveFiles","noPropagation","setupHiddenFileInput","hiddenFileInput","visibility","addFile","URL","webkitURL","updateTotalUploadProgress","returnValue","efct","dataTransfer","effectAllowed","_error","dropEffect","clickableElement","evt","elementInside","enable","disable","removeAllFiles","totalBytes","totalBytesSent","totalUploadProgress","upload","total","_getParamName","_renameFilename","existingFallback","fields","fieldsString","form","getFallback","elements","setupEventListeners","elementListeners","_results1","removeEventListeners","cancelUpload","selectedSize","selectedUnit","unit","units","pow","round","items","webkitGetAsEntry","_addFilesFromItems","handleFiles","clipboardData","entry","item","isFile","getAsFile","isDirectory","_addFilesFromDirectory","kind","directory","path","dirReader","errorHandler","readEntries","createReader","console","log","entries","fullPath","isValidFile","serverName","_enqueueThumbnail","_errorProcessing","enqueueFile","enqueueFiles","processQueue","_thumbnailQueue","_processingThumbnail","_processThumbnailQueue","createThumbnail","cancelIfNecessary","fileReader","FileReader","onload","createThumbnailFromUrl","readAsDataURL","imageUrl","crossOrigin","img","canvas","resizeInfo","_ref3","getContext","trgX","trgY","toDataURL","onerror","processingLength","queuedFiles","processFiles","processFile","uploadFiles","_getFilesWithXhr","xhr","groupedFile","groupedFiles","CANCELED","abort","uploadFile","formData","handleError","headerName","headerValue","headers","inputName","inputType","response","updateProgress","_l","_len3","_m","_ref4","_ref5","XMLHttpRequest","open","allFilesFinished","loaded","readyState","responseText","getResponseHeader","JSON","parse","_finished","onprogress","Accept","Cache-Control","X-Requested-With","setRequestHeader","FormData","checked","submitRequest","send","SUCCESS","ERROR","forElement","autoDiscover","discover","checkElements","dropzones","blacklistedBrowsers","capableBrowser","File","FileList","Blob","navigator","userAgent","list","rejectedItem","str","charAt","div","childNodes","els","question","rejected","baseMimeType","mimeType","validType","ACCEPTED","PROCESSING","ey","ih","py","ratio","sy","naturalWidth","naturalHeight","drawImage","getImageData","sx","sw","sh","dx","dy","dw","dh","vertSquashRatio","win","doc","poll","pre","rem","doScroll","frameElement","_autoDiscoverFunction","format","mask","isNaN","isNegative","decimal","group","posLeadZero","posTrailZero","posSeparator","part","szSep","integer","prefix","reverse","end","substr","indx","toFixed","lastIndexOf","hoverintent","c","clientX","clientY","p","clearTimeout","v","m","abs","y","sensitivity","interval","timeout","d","xtend","msViewportStyle","PointerEventsPolyfill","mouseEvents","usePolyfillIf","appName","parseFloat","$1","register_mouse_events","resizeProductGallery","active","owl","_width","onResize","resizeProductsCarousels","$targ","equalHeights","h","domfocus","mousefocus","tabindexcounter","ascrailcounter","globalmaxzindex","_doc","_win","delegatevents","setAnimationFrame","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","clearAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","anilasttime","currTime","Date","getTime","timeToCall","scripts","ClsMutationObserver","MutationObserver","WebKitMutationObserver","now","_globaloptions","zindex","cursoropacitymin","cursoropacitymax","cursorcolor","cursorwidth","cursorborder","cursorborderradius","scrollspeed","mousescrollstep","touchbehavior","emulatetouch","hwacceleration","usetransition","boxzoom","dblclickzoom","gesturezoom","grabcursorenabled","autohidemode","background","iframeautoresize","cursorminheight","preservenativescrolling","railoffset","railhoffset","bouncescroll","spacebarenabled","railpadding","right","bottom","disableoutline","horizrailenabled","railalign","railvalign","enabletranslate3d","enablemousewheel","enablekeyboard","smoothscroll","sensitiverail","enablemouselockapi","cursorfixedheight","directionlockdeadzone","hidecursordelay","nativeparentscrolling","enablescrollonselection","overflowx","overflowy","cursordragspeed","rtlmode","cursordragontouch","oneaxismousemode","scriptpath","currentScript","preventmultitouchscrolling","disablemutationobserver","enableobserver","scrollbarid","browserdetected","NiceScrollClass","myopt","me","$body","opt","snapbackspeed","iddoc","ispage","haswrapper","docscroll","viewport","isfixed","iframe","isiframe","istextarea","forcescreen","canshowonmouseevent","onmousedown","onmouseup","onmousemove","onmousewheel","onkeypress","ongesturezoom","onclick","onscrollstart","onscrollend","onscrollcancel","onzoomin","onzoomout","view","page","scroll","x","scrollratio","cursorheight","scrollvaluemax","writingMode","isrtlmode","isvertical","scrollrunning","scrollmom","observer","observerremover","observerbody","getElementById","rail","cursor","cursorfreezed","selectiondrag","zoom","zoomactive","hasfocus","hasmousefocus","railslocked","locked","hidden","cursoractive","wheelprevented","nativescrollingarea","checkarea","saved","delaylist","synclist","lastdeltax","lastdeltay","detected","_el","_style","_agent","_platform","platform","haspointerlock","isopera","isopera12","isoperamini","operamini","isie","isieold","isie7","documentMode","isie8","isie9","isie10","isie11","ismsedge","ismozilla","iswebkit","ischrome","ischrome38","ischrome22","ischrome26","cantouch","hasw3ctouch","PointerEvent","maxTouchPoints","msMaxTouchPoints","hasmstouch","MSPointerEvent","ismac","isios","isios4","isios7","isios8","isios10","Proxy","isandroid","haseventlistener","trstyle","hastransform","hastranslate3d","transitionstyle","hastransition","transitionend","check","prefixstyle","evs","cursorgrabvalue","lst","detectCursorGrab","hasmousecapture","hasMutationObserver","getBrowserDetection","cap","canhwscroll","ishwscroll","hasreversehr","istouchcapable","debounced","tm","synched","unsynched","pars","getScrollTop","setScrollTop","getScrollLeft","setScrollLeft","BezierClass","st","ed","spd","p1","p2","p3","p4","ts","df","getMatrixValues","tr","B2","B3","B4","getNow","pc","bz","update","translate","tx","ty","mtx","timerscroll","bh","notifyScrollEvent","initUIEvent","niceevent","cxscrollleft","silent","maxw","getTarget","srcElement","hasParent","_convertBorderWidth","thin","medium","thick","getWidthToPixel","dom","chkheight","wd","px","brd","innerHeight","innerWidth","getDocumentScrollOffset","pageXOffset","getOffset","ofs","scrl","ww","vp","updateScrollBar","railh","wpos","align","doRailClick","dbl","hr","pg","cur","cancelEvent","pageX","pageY","doScrollLeft","doScrollTop","doScrollLeftBy","doScrollBy","w","newscrolly","newscrollx","hasanimationframe","hascancelanimationframe","hasborderbox","_scrollyhidden","onScrollTransitionEnd","zIndex","zi","getZIndex","cont","-webkit-overflow-scrolling","float","background-color","background-clip","-webkit-border-radius","-moz-border-radius","border-radius","kp","scrollable","drag","doZoom","backgroundImage","backgroundPosition","scale","doZoomIn","doZoomOut","overflowX","backgroundColor","backgroundClip","cursorh","bd","margin-right","rlpos","getViewport","-webkit-tap-highlight-color","-webkit-touch-callout","autohidedom","opacity","ScrollMomentumClass2D","ontouchstart","pointerType","MSPOINTER_TYPE_MOUSE","hasmoving","timer","triggerScrollEnd","stop","tg","ismouse","changedTouches","le","original","screenX","screenY","sl","pt","dl","getContentSize","maxh","ck","wp","lastmouseup","setCapture","_onclick","preventclick","ontouchend","doMomentum","hideCursor","releaseCapture","moveneedoffset","locktollerance","ontouchmove","byiframe","targetTouches","ofy","ofx","fy","my","fx","mx","ny","nx","ay","ax","dz","triggerScrollStart","onpreventclick","prepareTransition","resetTransition","showCursor","clear","ontouchstartCursor","hronly","cancelScroll","touches","csspointerevents","pointer-events","ontouchendCursor","ontouchmoveCursor","mw","scrollvaluemaxw","checkSelectionScroll","rt","hasTextSelected","rangeCount","onselectionstart","onselectionend","onselectiondrag","touch-action","-ms-touch-action","jqbind","mousewheel","onmousewheelhr","tabindex","noticeCursor","ctrl","ctrlKey","shiftKey","ret","doScrollPos","doScrollTo","onscreenresize","lazyResize","tmp","onAttributeChange","mutations","mut","clientWidth","clientHeight","observe","childList","subtree","characterData","attributes","attributeFilter","_dom","mo","removedNodes","dd","attachEvent","resizeZoom","oniframeload","iframexd","contentDocument","contentWindow","domain","contents","scrollWidth","scrollHeight","hh","-webkit-transform","onscroll","cursortimeout","lx","showonmouseevent","animate","premaxh","premaxw","previewh","previeww","lastposition","hideRail","hideRailHr","showRail","showRailHr","hlazyresize","_modernWheelEvent","bubble","_bind","deltaMode","deltaX","deltaZ","stopImmediatePropagation","cancelBubble","wheelDeltaX","wheelDeltaY","deltaY","wheelDelta","detail","hiderails","hideRails","showRails","q","passiveSupported","wname","cancelable","preventManipulation","detachEvent","cancel","de","concat","undelegate","_unbind","b","passive","bub","unbindAll","unbind","disconnect","nicescroll","scrollstart","scrollend","scrollcancel","zoomin","zoomout","isScrollable","ov","getNiceScroll","cx","cy","rx","ry","ms","current","request","speed","scrolldiry","scrolldirx","scrolltmr","scrollspd","doScrollRelative","chkscroll","iswheel","gap","dty","dtx","hasparentscrollingphase","execScrollWheel","nw","chk","scrollmon","getTransitionSpeed","dif","lasttransitionstyle","istime","ex","trans","cursorupdate","running","loop","lft","dst","sqrt","scrollendtrapped","clearInterval","clipped","bzscroll","stp","relative","checkContentSize","zoomrestore","pp","bkg","z-index","nc","lastx","lasty","speedx","speedy","lasttime","steptime","snapx","snapy","demulx","demuly","lastscrollx","lastscrolly","chkx","chky","newy","newx","doSnapy","snap","gp","pageh","pagew","xm","demulxy","floor","_scrollTop","cssHooks","computed","extra","nice","_scrollLeft","NiceScrollArray","doms","idx","mplex","niceScroll","wrapper","_opt","wrp","NiceScroll","getjQuery","_isLoadRequested","_instanceCounter","YoutubeApi","loadAsynchronously","tag","firstScriptTag","isLoadRequested","isReady","YT","Player","ready","timerFn","ApiAdapter","Youtube","settings","handlers","_player","api","videoElId","boundingBox","videoId","youtubeVideoId","playerVars","controls","autoplay","showinfo","hd","html5","wmode","rel","origin","onReady","onStateChange","UNSTARTED","ENDED","PLAYING","PAUSED","BUFFERING","CUED","play","playVideo","stopVideo","pause","pauseVideo","mute","flag","currentTime","curTime","seekTo","getCurrentTime","duration","getDuration","VideoElement","onloadstart","onplay","onpause","mue","pPlayer","adapter","$pauseBtn","$playBtn","$overBtn","$muteBtn","$unmuteBtn","$enterFullscreenBtn","$leaveFullscreenBtn","$timer","$progressBar","$progressBarCursor","$quality","playingTrigger","tpls","playpause","quality","fullscreen","$boundingBox","features","resizeVideo","afterInit","getPlayerHtml","inx","feature","hasPlayerVideoElements","hasBrowserVideoElementSupport","hasDivXWebPlayerOn","divx","fallbackOnDivX","renderUI","apapterClass","display","startTimer","onPlayerReady","onPlaying","syncUI","proxy","muteVideo","unmuteVideo","handleProgressBar","enterFullscreen","leaveFullscreen","handleFullscreenChange","renderQualityOptions","siblings","setPlaybackQuality","qLevelMap","small","large","hd720","hd1080","highres","getAvailableQualityLevels","level","getPlaybackQuality","getTimeByFloat","ctFloat","hours","sec","minFloat","hourFloat","fullScreenElement","mozFullScreen","webkitIsFullScreen","requestFullScreen","mozRequestFullScreen","webkitRequestFullScreen","cancelFullScreen","mozCancelFullScreen","webkitCancelFullScreen","percent","newCurTime","updateProgressBarCursor","updateTimer","line","progressPercents","timerOut","sprintf02d","player","touch","onZoomIn","onZoomOut","magnify","targetHeight","targetWidth","sourceHeight","sourceWidth","xRatio","yRatio","$target","$source","maxWidth","maxHeight","move","$img","touched","currentSrc","one","fadeTo","isFunction","originalEvent","fetchBlob","createObjectURL","isInstanceOf","_objectURL","readFile","noRevoke","revokeObjectURL","transform","loadImage","transformCoordinates","getTransformedOptions","aspectRatio","crop","renderImageToCanvas","hasCanvasOption","P","g","S","minWidth","contain","cover","pixelRatio","downsamplingRatio","webkitSlice","mozSlice","blobSlice","metaDataParsers","jpeg","65505","parseMetaData","maxMetaDataSize","DataView","byteLength","getUint16","disableImageHead","imageHead","Uint8Array","subarray","hasMetaOption","fetch","Request","then","blob","catch","ExifMap","Orientation","getExifThumbnail","getUint8","exifTagTypes","getValue","fromCharCode","ascii","getUint32","9","getInt32","10","getExifValue","parseExifTag","exif","parseExifTags","parseExifData","disableExif","disableExifThumbnail","Thumbnail","disableExifSub","disableExifGps","tags","256","257","34665","34853","40965","258","259","262","274","277","284","530","531","282","283","296","273","278","279","513","514","301","318","319","529","532","306","270","271","272","305","315","33432","36864","40960","40961","40962","40963","42240","37121","37122","37500","37510","40964","36867","36868","37520","37521","37522","33434","33437","34850","34852","34855","34856","34864","34865","34866","34867","34868","34869","37377","37378","37379","37380","37381","37382","37383","37384","37385","37396","37386","41483","41484","41486","41487","41488","41492","41493","41495","41728","41729","41730","41985","41986","41987","41988","41989","41990","41991","41992","41993","41994","41995","41996","42016","42032","42033","42034","42035","42036","42037","0","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","stringValues","ExposureProgram","MeteringMode","255","LightSource","Flash","93","95","SensingMethod","SceneCaptureType","SceneType","CustomRendered","WhiteBalance","GainControl","Contrast","Saturation","Sharpness","SubjectDistanceRange","FileSource","ComponentsConfiguration","getText","getAll","orientation","rotate","PI","ne","ri","T","L","U","ni","lastIndex","C","di","N","F","G","K","en","__data__","cn","pn","Oo","Ao","zo","j","Dt","vn","dr","jn","gn","yn","bn","ao","Bi","xn","oe","ce","fe","zr","vo","Oe","tt","Ie","be","$t","ht","Fr","po","Nr","ho","ii","De","je","xe","Ne","buffer","byteOffset","Fe","Pe","Be","Ze","Me","We","Ge","qe","Ve","ft","Ae","ze","Ue","Le","uu","exec","ke","$e","oo","Ct","zt","At","wn","An","Xn","Kt","zn","En","Ce","Ee","Pi","Ii","Lt","In","Tn","Er","Ln","wt","Ui","we","ae","delete","mt","Ot","kn","$n","Ei","mr","Ti","cu","Qt","Rn","Yr","Ft","Mt","Wt","Rr","Dr","St","Un","Kr","Dn","Zt","Wi","Nn","qt","Fn","_r","Zn","lo","jr","Ir","$r","Mn","Wn","Et","sort","at","lt","qn","Ni","Hn","go","Gi","Yn","Jn","Kn","Tr","co","pe","yo","Cr","nt","$i","copy","jt","Vr","Mr","Qu","has","iteratee","Jr","It","Tt","fo","Ci","Rt","Fi","ve","au","Nt","Ke","Je","mi","Ai","Xt","kr","nr","ir","pr","wo","qi","ee","Ur","leading","maxWait","trailing","flush","vr","cache","Cache","gr","Ar","_e","Te","Si","Sr","Lr","ge","ye","valueOf","tu","ou","fu","fi","iu","kt","Pr","Zr","To","lu","Xu","ei","ti","ru","Hr","Qr","Xr","ue","NaN","Se","Re","He","Ye","Qe","Xe","eu","su","gu","hu","yu","bu","wu","mu","Ou","du","Au","zu","Eu","Iu","Su","Tu","Lu","ku","Uu","Cu","Ru","Du","Nu","Fu","Pu","Bu","Zu","Mu","Wu","Gu","Yu","Ju","Ku","ui","ai","si","hi","pi","vi","gi","process","yi","binding","bi","isTypedArray","À","Á","Â","Ã","Ä","Å","à","á","â","ã","ä","å","Ç","ç","Ð","ð","È","É","Ê","Ë","è","é","ê","ë","Ì","Í","Î","Ï","ì","í","î","ï","Ñ","ñ","Ò","Ó","Ô","Õ","Ö","Ø","ò","ó","ô","õ","ö","ø","Ù","Ú","Û","Ü","ù","ú","û","ü","Ý","ý","ÿ","Æ","æ","Þ","þ","ß","Ā","Ă","Ą","ā","ă","ą","Ć","Ĉ","Ċ","Č","ć","ĉ","ċ","č","Ď","Đ","ď","đ","Ē","Ĕ","Ė","Ę","Ě","ē","ĕ","ė","ę","ě","Ĝ","Ğ","Ġ","Ģ","ĝ","ğ","ġ","ģ","Ĥ","Ħ","ĥ","ħ","Ĩ","Ī","Ĭ","Į","İ","ĩ","ī","ĭ","į","ı","Ĵ","ĵ","Ķ","ķ","ĸ","Ĺ","Ļ","Ľ","Ŀ","Ł","ĺ","ļ","ľ","ŀ","ł","Ń","Ņ","Ň","Ŋ","ń","ņ","ň","ŋ","Ō","Ŏ","Ő","ō","ŏ","ő","Ŕ","Ŗ","Ř","ŕ","ŗ","ř","Ś","Ŝ","Ş","Š","ś","ŝ","ş","š","Ţ","Ť","Ŧ","ţ","ť","ŧ","Ũ","Ū","Ŭ","Ů","Ű","Ų","ũ","ū","ŭ","ů","ű","ų","Ŵ","ŵ","Ŷ","ŷ","Ÿ","Ź","Ż","Ž","ź","ż","ž","IJ","ij","Œ","œ","ʼn","ſ","ji","'","xi","wi","Oi","IE_PROTO","Li","Buffer","ki","allocUnsafe","Ri","Di","propertyIsEnumerable","isConcatSpreadable","toStringTag","Zi","getOwnPropertySymbols","Mi","isBuffer","Vi","Hi","Yi","Ji","Ki","Qi","Xi","no","to","ro","eo","uo","io","pop","hash","so","ArrayBuffer","resolve","bo","_o","jo","xo","mn","isArray","Eo","Io","So","constant","debounce","keyBy","keysIn","memoize","merge","negate","orderBy","property","pull","pullAll","pullAllBy","reject","Vn","sortBy","throttle","toPlainObject","values","words","camelCase","capitalize","cloneDeep","deburr","findIndex","hasIn","identity","inRange","isArguments","isArrayLike","isArrayLikeObject","isEmpty","isEqual","isInteger","isLength","isObject","isObjectLike","isPlainObject","isString","isSymbol","kebabCase","stubArray","stubFalse","reduce","some","toFinite","toInteger","toNumber","O","A","unescape","upperFirst","Int32Array","I","md5","Owl","Defaults","_handlers","_plugins","_supress","_current","_speed","_coordinates","_breakpoint","_items","_clones","_mergers","_widths","_invalidated","_pipe","_drag","time","pointer","stage","direction","_states","initializing","animating","dragging","handler","Plugins","plugin","Workers","priority","worker","run","setup","initialize","center","rewind","checkVisibility","mouseDrag","touchDrag","pullDrag","freeDrag","stagePadding","mergeFit","autoWidth","startPosition","rtl","smartSpeed","fluidSpeed","dragEndSpeed","responsive","responsiveRefreshRate","responsiveBaseElement","fallbackEasing","slideTransition","nestedItemSelector","itemElement","stageElement","refreshClass","loadedClass","loadingClass","rtlClass","responsiveClass","dragClass","itemClass","stageClass","stageOuterClass","grabClass","Width","Default","Inner","Outer","Type","State","$stage","grid","margin-left","widths","clones","ceil","repeat","prepend","normalize","outerHTML","prependTo","previous","coordinates","padding-left","padding-right","minimum","maximum","inner","outer","begin","op","initializeStage","class","wrap","initializeItems","isVisible","invalidate","imgs","nestedSelector","enter","preloadAutoWidthImages","registerEventHandlers","leave","overwrites","breakpoint","optionsLogic","prepare","all","grep","dimension","onThrottledResize","resizeTimer","transition","onTransitionEnd","onDragStart","onDragEnd","delta","difference","onDragMove","coordinate","transform3d","suppress","release","isNumeric","reciprocalItemsWidth","elementWidth","mergers","odd","even","multiplier","newPosition","from","factor","revert","distance","prev","originalTarget","empty","addBack","images","Image","unwrap","namespace","onTrigger","register","special","_default","inArray","number","second","owlCarousel","Zepto","AutoRefresh","carousel","_core","_interval","_visible","initialized.owl.carousel","autoRefresh","watch","autoRefreshInterval","setInterval","getOwnPropertyNames","Lazy","_loaded","initialized.owl.carousel change.owl.carousel resized.owl.carousel","lazyLoad","load","lazyLoadEager","intersectionObserverSupport","IntersectionObserverEntry","addOberver","_observer","IntersectionObserver","isIntersecting","intersectionRatio","unobserve","parentElement","setElementSrc","image","$item","$elements","devicePixelRatio","background-image","AutoHeight","_previousHeight","initialized.owl.carousel refreshed.owl.carousel","autoHeight","changed.owl.carousel","loaded.owl.lazy","_intervalId","refThis","autoHeightClass","lazyLoadEnabled","visible","heights","maxheight","Video","_videos","_playing","resize.owl.carousel","video","isInFullScreen","refreshed.owl.carousel","prepared.owl.carousel","videoHeight","videoWidth","tnLink","dimensions","customTn","srcType","lazyClass","ajax","jsonp","dataType","thumbnail_large","framegrab_url","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","Animate","scope","core","swapping","change.owl.carousel","drag.owl.carousel dragged.owl.carousel translated.owl.carousel","translate.owl.carousel","animateOut","animateIn","swap","animation","incoming","outgoing","Autoplay","_call","_time","_timeout","_paused","play.owl.autoplay","stop.owl.autoplay","mouseover.owl.autoplay","autoplayHoverPause","mouseleave.owl.autoplay","touchstart.owl.core","touchend.owl.core","autoplayTimeout","autoplaySpeed","_next","read","elapsed","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","lower","upper","getPosition","successor","standard","prefixes","WebkitTransition","MozTransition","OTransition","WebkitAnimation","MozAnimation","OAnimation","tests","prefixed","singleton","origDisplayAttribute","underneathElem","elementFromPoint","Spinner","useCssAnimations","sheet","animations","createEl","ins","vendor","def","getColor","color","lines","radius","corners","trail","fps","shadow","hwaccel","opts","spin","alpha","ostep","astep","anim","seg","z","fill","boxShadow","transformOrigin","borderRadius","insertRule","cssRules","head","styleSheet","probe","behavior","adj","vml","addRule","grp","coordsize","coordorigin","rotation","arcsize","initVML","angular","TRANSITION_PROP","TRANSITIONEND_EVENT","ANIMATION_PROP","ANIMATIONEND_EVENT","ELEMENT_NODE","ADD_CLASS_SUFFIX","REMOVE_CLASS_SUFFIX","EVENT_CLASS_PREFIX","NG_ANIMATE_CLASSNAME","NG_ANIMATE_CHILDREN_DATA","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","DURATION_KEY","TIMING_KEY","ANIMATION_PLAYSTATE_KEY","ANIMATION_DELAY_PROP","ANIMATION_DURATION_PROP","TRANSITION_DELAY_PROP","TRANSITION_DURATION_PROP","ngMinErr","$$minErr","assertArg","arg","reason","mergeClasses","pendClasses","fix","isPrefix","klass","stripCommentsFromElement","jqLite","extractElementNode","elm","applyAnimationClassesFactory","$$jqLite","prepareAnimationOptions","$$prepared","domOperation","$$domOperationFired","applyAnimationStyles","applyAnimationFromStyles","applyAnimationToStyles","mergeAnimationDetails","oldAnimation","newAnimation","newOptions","toAdd","toRemove","existing","flags","splitClassesToLookup","allow","resolveElementClasses","preparationClasses","concatWithSpace","realDomOperation","getDomNode","blockTransitions","applyInlineStyle","blockKeyframeAnimations","applyBlock","styleTuple","$$AnimateChildrenDirective","$interpolate","link","attrs","ngAnimateChildren","setData","$observe","ANIMATE_TIMER_KEY","DETECT_CSS_PROPERTIES","transitionDuration","transitionDelay","transitionProperty","animationDuration","animationDelay","animationIterationCount","DETECT_STAGGER_CSS_PROPERTIES","getCssDelayStyle","isKeyframeAnimation","computeCssStyles","properties","styles","detectedStyles","formalStyleName","actualStyleName","maxValue","truthyTimingValue","getCssTransitionDurationStyle","applyOnlyDuration","createLocalCacheLookup","put","registerRestorableStyles","backup","isDefined","getPropertyValue","isElement","isUndefined","$AnimateCssProvider","$animateProvider","gcsLookup","gcsStaggerLookup","$get","$$AnimateRunner","$timeout","$$forceReflow","$sniffer","$$rAFScheduler","$$animateQueue","applyAnimationClasses","parentCounter","gcsHashFn","extraClasses","KEY","rafWaitQueue","waitUntilQuiet","pageWidth","computeTimings","cacheKey","timings","aD","tD","maxDelay","maxDuration","initialOptions","restoreStyles","enabled","closeAndReturnNoopAnimator","animationClosed","animationPaused","animationCompleted","runner","runnerHost","maxDelayTime","maxDurationTime","startTime","temporaryStyles","transitions","structuralClassName","addRemoveClassName","structural","applyClassesEarly","stagger","fullClassName","activeClasses","hasToStyles","keyframeStyle","staggerVal","staggerClassName","computeCachedCssStaggerStyles","$$skipPreparationClasses","transitionStyle","durationStyle","itemIndex","staggerIndex","isFirst","skipBlocking","relativeDelay","delayStyle","hasTransitions","hasAnimations","hasTransitionAll","applyTransitionDuration","applyAnimationDuration","applyTransitionDelay","applyAnimationDelay","recalculateTimingStyles","blockTransition","blockKeyframeAnimation","cleanupStyles","applyBlocking","$$willAnimate","endFn","cancelFn","resume","close","setProperty","removeProperty","onDone","onAnimationProgress","animationTimerData","ev","timeStamp","$manualTimeStamp","elapsedTime","playPause","playAnimation","arr","maxStagger","triggerAnimationStart","easing","easeProp","easeVal","timerTime","endTime","animationsData","setupFallbackTimer","currentTimerData","expectedEndTime","onAnimationExpired","$$AnimateCssDriverProvider","$$animationProvider","drivers","NG_ANIMATE_SHIM_CLASS_NAME","NG_OUT_ANCHOR_CLASS_NAME","$animateCss","$rootScope","$rootElement","bodyNode","rootNode","rootBodyElement","animationDetails","anchors","fromAnimation","prepareRegularAnimation","toAnimation","anchorAnimations","anchor","animator","outAnchor","inAnchor","startingClasses","filterCssClasses","getClassVal","animatorIn","animatorOut","calculateAnchorStyles","prepareInAnimation","startingAnimator","currentAnimation","coords","getBoundingClientRect","endingClasses","getUniqueValues","NG_IN_ANCHOR_CLASS_NAME","prepareAnchoredAnimation","animationRunners","prepareFromToAnchorAnimation","$$AnimateJsProvider","$injector","afterFn","beforeFn","classesToAdd","classesToRemove","flagMap","animationFactory","$$registeredAnimations","lookupAnimations","packageAnimations","closeActiveAnimations","applyOptions","setHost","endAnimations","onComplete","cancelled","groupEventedAnimations","fnName","operations","ani","endProgressCb","resolved","onAnimationComplete","executeAnimationFn","runners","animateFn","$$AnimateJsDriverProvider","$$animateJs","prepareAnimation","endFnFactory","NG_ANIMATE_ATTR_NAME","NG_ANIMATE_PIN_DATA","$$AnimateQueueProvider","ONE_SPACE","rules","skip","hasMatchingClasses","newClassString","currentClassString","currentClassMap","classString","makeTruthyCssClassMap","isAllowed","ruleType","previousAnimation","hasAnimationClasses","and","nA","nR","cA","cR","$$rAF","$$Map","$$animation","$templateRequest","$$isDocumentHidden","activeAnimationsLookup","disabledElementsLookup","animationsEnabled","deregisterWatch","$watch","totalPendingRequests","$$postDigest","callbackRegistry","customFilter","classNameFilter","returnTrue","isAnimatableByFilter","isAnimatableClassName","normalizeAnimationDetails","Node","compareDocumentPosition","filterFromRegistry","matchContainer","matchCallback","containerNode","cleanupEventListeners","phase","$animate","pin","originalElement","runInNextPostDigestOrNow","postDigestCalled","isStructural","documentHidden","skipAnimations","existingAnimation","hasExistingAnimation","animateChildren","bodyNodeDetected","rootNodeDetected","parentAnimationDetected","elementDisabled","parentHost","details","parentNodeDisabled","areAnimationsAllowed","notifyProgress","skipAnimationFlag","cancelAnimationFlag","joinAnimationFlag","isValidAnimation","clearElementAnimationState","counter","markElementAnimationState","animationCancelled","realRunner","targetParentNode","targetNode","queueAnimation","bool","argCount","oldValue","newValue","$$AnimationProvider","NG_ANIMATE_REF_ATTR","RUNNER_STORAGE_KEY","getRunner","animationQueue","prepareClassName","tempClasses","beforeStart","handleDestroyedElement","groupedAnimations","preparedAnimations","refLookup","enterOrMove","anchorNodes","animationID","usedIndicesLookup","anchorGroups","lookupKey","aa","cssClassesIntersection","out","in","indexKey","groupAnimations","toBeSortedAnimations","animationEntry","domNode","startAnimationFn","closeFn","operation","driverName","driver","invokeFirstDriver","animationRunner","newRunner","updateAnimationRunners","tree","lookup","processNode","queue","remainingLevelEntries","nextLevelEntries","row","childEntry","flatten","processed","parentEntry","elementNode","sortAnimations","angularVersion","directive","restrict","transclude","terminal","$transclude","previousElement","previousScope","$watchCollection","ngAnimateSwap","$destroy","$new","scheduler","tasks","nextTick","provider","isEagerInstantiationEnabled","ngRouteModule","inherit","routes","pathRegExp","insensitive","caseInsensitiveMatch","originalPath","regexp","slash","optional","star","when","route","routeCopy","shallowCopy","reloadOnSearch","redirectPath","redirectTo","otherwise","eagerInstantiationEnabled","$location","$routeParams","$q","$sce","$browser","preparedRoute","preparedRouteIsUpdateOnly","forceReload","$route","reload","fakeLocationEvent","defaultPrevented","$evalAsync","prepareRoute","commitRoute","updateParams","newParams","$$route","$routeMinErr","interpolate","$on","$locationEvent","lastRoute","switchRouteMatcher","pathParams","equals","$broadcast","nextRoute","nextRoutePromise","$$incOutstandingRequestCount","getRedirectionData","handlePossibleRedirection","keepProcessingRoute","resolveLocals","locals","finally","$$completeOutstandingRequest","hasRedirection","oldPath","oldSearch","newUrl","resolveRedirectTo","invoke","oldUrl","templateUrl","loadedTemplateUrl","getTemplateFor","segment","segmentMatch","instantiateRoute","ngViewFactory","$anchorScroll","currentScope","currentElement","previousLeaveAnimation","autoScrollExp","autoscroll","onloadExp","cleanupLastView","$template","newScope","$eval","$emit","ngViewFillContentFactory","$compile","$controller","controller","$scope","controllerAs","resolveAs","$inject","Name","Controller","Action","fr","NGRoute","ng","$templateCache","DeviceService","HttpService","checkout","showPageLoader","device","xxs","onChange","xs","sm","md","lg","xl","desktop","tablet","isTouch","isIe","isIE","ieVersion","isFF","$compileProvider","Environment","commentDirectivesEnabled","cssClassDirectivesEnabled","debugInfoEnabled","lazyImgConfigProvider","setOptions","errorClass","successClass","usSpinnerConfigProvider","setDefaults","setTheme","setDelay","toastrConfig","timeOut","closeButton","closeHtml","iconClasses","warning","templates","toast","progressbar","bsValidationConfigProvider","setValidateFieldsOn","setDisplayErrorsAs","tooltipAppendToBody","errorMessagePrefix","dropzoneOpsProvider","AppService","bsValidationConfig","getParams","getTranslate","forms","setMessages","onunload","bootstrap","strictDi","component","productCtrl","bindings","isProductButton","isCartButton","isModalButton","modalItem","btnClass","idLine","commentLine","isPrimary","addToCartActive","allowAddToCart","productQuantity","price","designation","titleAdd","titleAlert","titleDetail","titleDeleteOk","titleResultOk","titleModifyOk","tooltip","modalCtrl","toastr","ModalService","RoutesService","addTimeout","blurTimeout","showTTCPrice","unwatch","getItemQuantityInCart","itemQuantityInCart","setItemQuantity","cartQuantity","quantity","isInCart","showLoader","setInputQuantity","setValue","watchValue","isChanged","changedValue","qty","inc","addToCart","Comment","idProduct","Price","getProductPrice","costTTC","costHT","products","posLoader","getUrlByName","mess","allowHtml","extraData","cartLink","results","errors","TryLater","ErrorHasOccurred","$onInit","defaultTooltip","Visitor","CardType","ShowTTCPrice","$onDestroy","openQuickView","windowClass","deleteLine","minus","plus","changed","blurred","fromClassicBtn","comparatorCtrl","isKit","btnTooltip","quantities","titleRemove","tooltipAdd","tooltipYet","tooltipChoice","whishListService","isLogged","IsLogged","manageWishList","Account","IsManagementWishlistTracking","updateTooltip","wishListConnect","addToWishList","redirect","isInWishList","decodeURI","loading","post","Products","location","assign","redirectUrl","modalTitle","Product","IDProduct","promise","$$state","titleBtn","step","fieldTabindex","keyEnter","groupClass","keypress","newval","getProductsToAdd","WindowEventsService","lastPos","listen","sc","$apply","ngModel","CdnService","cdnResponsiveSize","cdnSizes","cdnId","cdnSize","cdnDesignation","cdnExtension","cdnQuality","cdnAbsolute","deregister","res","lazyImg","$set","removeParentIfEmpty","onBodyClick","isOpen","clickMenu","showMenu","hideMenu","altKey","isMenuCollapse","toggleMenuCollapse","flip","flipped","direct","inter","ntime","CarouselService","thisScope","onInitialize","onInitialized","owlLoaded","$tab","onLoadedLazy","onRefreshed","eval","onResized","lazy","cClass","sizes","youtubeUrl","getYouTubeIdFromUrl","$mainVideo","addActive","noZoomDirective","changeViewport","theme","ngRequired","$wrapper","optRequired","inputClass","$label","onInputChange","required","placeholder","$parse","ngModelInit","discountFilter","loc","Localization","DiscountHTMLFormat","DiscountDecimalSeparator","DiscountThousandSeparator","$stateful","reg","num","priceFilter","prices","ttc","PriceHTMLFormatVATincluded","PriceHTMLFormatVATexcluded","TTCAmount","HTAmount","TTCDiscountedPriceByQuantity","HTDiscountedPriceByQuantity","TTCDiscountedPrice","HTDiscountedPrice","TTCPrice","HTPrice","PriceFormat","PriceDecimalSeparator","PriceThousandSeparator","Currency","ISOCode","getPriceFilter","defOps","newOps","dropzoneOps","methods","iElem","iAttr","initOps","getDropzone","getAllFiles","methodName","$$phase","$root","precision","markerConstructor","google","maps","Marker","polylineConstructor","Polyline","circleConstructor","Circle","mapOptions","lat","lng","mapTypeId","MapTypeId","ROADMAP","angulargmUtils","getEventHandlers","gmInfoWindowOptions","model","gmInfoWindow","infoWindow","InfoWindow","addListener","validateLatLng","latLngLiteralEqual","gmCenter","gmZoom","gmBounds","gmMapTypeId","gmMapOptions","gmMapId","bounds","hasCenter","hasZoom","hasBounds","hasMapTypeId","updateScope","addMapListener","getMap","mapTrigger","addMapListenerOnce","$log","angulargmShape","gmObjects","gmId","gmPosition","gmMarkerOptions","gmEvents","createShapeDirective","latLngObj","markerOptions","defers","markers","mapId","addMap","Map","getMaps","getMapPromise","defer","setMarker","newMarker","getMarkers","clearMarkers","removeMap","_formatEventName","uppercasePluralType","checkRequiredAttributes","updateElements","objectCache","optionsFn","orphaned","$id","updateElement","addElement","context","major","minor","forEachElementInScope","removeElement","eventObj","ids","objectsName","floatEqual","f1","f2","latLngEqual","l1","l2","LatLng","boundsEqual","b1","b2","LatLngBounds","sw1","getSouthWest","sw2","ne1","getNorthEast","ne2","latLngToObj","latLng","objToLatLng","hasNaN","isNull","isNotaN","lowercase","assertDefined","func","wait","immediate","callNow","angulargmDefaults","angulargmContainer","_getConfig","_createMap","getDiv","replaceWith","_map","_initDragListeners","_destroy","_listeners","types","_elements","scopeIds","_getElements","scopeId","streetView","getStreetView","getVisible","setVisible","addListenerOnce","_newElement","hasElement","setMap","removed","forEachElement","allElements","accumulator","mapDiv","writeable","getCenter","panTo","getZoom","setZoom","getBounds","fitBounds","getMapTypeId","setMapTypeId","smoothScroll","callbackBefore","callbackAfter","containerId","containerPresent","getScrollLocation","percentage","internalHeight","currentLocation","startLocation","endLocation","offsetParent","getEndLocation","timeLapsed","runAnimation","getEasingPattern","scrollTo","scrollheight","$elem","$attrs","scrollIf","exprHandler","targetElement","query","matchMedia","DefaultStickyStackName","documentEl","stacks","stackName","stickyZIndex","stack","$stack","sticky","removeTop","computedHeight","heightAt","stick","atAdjusted","sticksAtPosition","stickyAnchor","heightCurrent","hlStickyStack","mediaQuery","stickyLineTop","stickyLineBottom","_isSticking","bodyEl","nativeEl","stickyMediaQuery","stickyClass","usePlaceholder","offsetBottom","globalOffset","initialCSS","stickyLinePositionTop","_getTopOffset","_stackOffset","stickyLinePositionBottom","isEnabled","scrolledDistance","clientTop","shouldStick","alwaysSticky","elementHeight","rect","stickElement","unstickElement","containerBoundsBottom","containerBoundsTop","pixels","extraOffset","stickIndex","isSticky","hasScrollDistance","containerRect","containerBottom","$api","stackItem","drawOptions","force","$$count","$stickyElement","collections","checkDelay","elementsDefaults","hlStickyElement","throttledResize","windowEl","drawEvent","collection","warn","collectionName","stickyStackFactory","trackedElements","$sticky","stickyOptions","stickyElement","toDelete","deletedElement","_drawOptions","parentStack","hlStickyElementCollection","collectionParent","stickyElementCollection","hlSticky","toasts","previousToastMessage","openToasts","containerDefer","toastId","optionsOverride","_getOptions","_buildNotification","refreshTimer","newTime","isOpened","wasClicked","findToast","deleting","onHidden","maxOpened","isDuplicateOfLast","preventDuplicates","isDuplicateOpen","preventOpenDuplicates","shouldExit","newToast","iconClass","cleanOptionsOverride","typeClass","generateEvent","trustAsHtml","toastType","toastIcon","extendedTimeOut","messageClass","onShown","onTap","progressBar","tapToDismiss","titleClass","toastClass","createScope","angularDomEl","badOptions","createToast","autoDismiss","oldToasts","positionClass","_createOrGetContainer","newestOnTop","sibling","lastChild","_notify","toastCtrl","intervalId","currentTimeOut","hideTime","startProgressBar","stopProgressBar","$interval","button","createTimeout","tapToast","$event","$$CookieWriter","cookiePath","baseHref","rawDocument","cookie","expires","encodeURIComponent","toUTCString","cookieLength","secure","buildCookieString","calcOptions","$$cookieReader","$$cookieWriter","getObject","fromJson","putObject","toJson","$cookies","$provide","PLURAL_CATEGORY","DATETIME_FORMATS","AMPMS","DAY","ERANAMES","ERAS","FIRSTDAYOFWEEK","MONTH","SHORTDAY","SHORTMONTH","STANDALONEMONTH","WEEKENDRANGE","fullDate","longDate","mediumDate","mediumTime","short","shortDate","shortTime","NUMBER_FORMATS","CURRENCY_SYM","DECIMAL_SEP","GROUP_SEP","PATTERNS","gSize","lgSize","maxFrac","minFrac","minInt","negPre","negSuf","posPre","posSuf","localeID","pluralCat","opt_precision","nodeContains","htmlParser","htmlSanitizeWriter","$sanitizeMinErr","svgEnabled","$$sanitizeUri","validElements","svgElements","buf","uri","isImage","enableSvg","inertBodyElement","getInertBodyElement","mXSSAttempts","attrToMap","chars","nextNode","getNonDescendant","uriValidator","ignoreCurrentElement","blockedElements","lkey","validAttrs","uriAttrs","encodeEntities","voidElements","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","toMap","optionalEndTagBlockElements","optionalEndTagInlineElements","optionalEndTagElements","blockElements","inlineElements","htmlAttrs","svgAttrs","lowercaseKeys","inertDocument","implementation","createHTMLDocument","getDocumentElement","DOMParser","parseFromString","stripCustomNsAttrs","attrNode","attrName","removeAttributeNode","encodeURI","responseType","propName","outerText","$sanitize","LINKY_URL_REGEXP","MAILTO_REGEXP","linkyMinErr","attributesFn","raw","addText","addLink","linkAttributes","validateFieldsOn","displayErrorsAs","messageFilters","shouldValidateOn","addSuccessClass","tooltipPlacement","suppressWarnings","messages","useMessageFilters","filters","getDisplayErrorsAs","getErrorMessagePrefix","getMessageFilters","getTooltipPlacement","shouldAddSuccessClass","validationService","compile","$formElement","$formAttributes","isValidationDisabled","addDirective","ngSubmit","formElement","$attr","formController","$showValidation","$setSubmitted","showValidationState","$hideValidation","$setPristine","$resetValidation","markPristineAfterSubmit","$invalid","submitHandler","$commitViewValue","controllers","ngModelController","ngFormController","$formGroupElement","getFormGroupElement","displayValidationState","shouldValidateOnBlur","shouldValidateOnDisplay","shouldValidateOnSubmit","displayErrorAs","displayErrorPreference","validationMessageService","getValidationMessageService","getValidators","validator","attrValue","addValidator","watchBlur","$submitted","submitted","displayOrHideValidationState","showValidation","$valid","$$attr","hideSuccess","hideError","$setUntouched","destroyMessage","displayError","addErrorClass","showErrorMessage","hideErrorMessage","displaySuccess","removeSuccessClass","pattern","toggleErrorKeyClasses","$error","dewatcher","$touched","lostFocus","errorElementClass","getErrorContainer","$errorContainer","groupElement","errorContainerHTML","removeErrorClass","getErrorMessage","validationConfig","getErrorTooltip","tooltipID","random","tooltipElement","$errorTooltip","placement","attributeName","parentForm","parents","appendToBody","$position","ttPosition","positionElements","positionArrow","$filter","_genericValidators","validateFn","equalto","getTrigger","triggerEvent","selectors","getMetaInformation","metaInformation","camelCaseToDash","validateableElements","$validators","modelValue","viewValue","$isEmpty","addGenericValidator","genericValidationObject","$parentForm","firstErrorKey","resolveMessage","formGroupElement","displayType","matchers","validValue","regx","lazyImgConfig","lazyImgHelpers","winDimensions","$win","isListening","checkImagesT","saveWinOffsetT","containers","checkImages","isElementInView","stopListening","param","startListening","photo","addClassToParent","spinner","onError","onSuccess","onLoading","Photo","getOptions","getWinDimensions","setAddClassToParent","setSpinner","setSource","unshift","removeImage","addContainer","removeContainer","bottomline","threshhold","deferTimer","LazyImgMagic","usSpinnerConfig","lazyIf","lazyImage","parentLoadedClass","newSource","noSpinner","spinnerTheme","themes","_config","_themes","_delay","SpinJSSpinner","spinnerOn","ngclipboardSuccess","ngclipboardError","minRange","maxRange","pushRange","minLimit","maxLimit","getLegend","stepsArray","bindIndexForStepsArray","draggableRange","draggableRangeOnly","showSelectionBar","showSelectionBarEnd","showSelectionBarFromValue","hidePointerLabels","hideLimitLabels","autoHideLimitLabels","readOnly","showTicks","showTicksValues","ticksArray","ticksTooltip","ticksValuesTooltip","vertical","getTickColor","keyboardSupport","enforceStep","enforceRange","noSwitching","onlyBindHandles","onStart","onEnd","rightToLeft","boundPointerLabels","mergeRangeLabelsIfSame","customTemplateScope","logScale","customValueToPosition","customPositionToValue","ariaLabel","ariaLabelledBy","ariaLabelHigh","ariaLabelledByHigh","globalOptions","later","remaining","RzSliderOptions","rzThrottle","Slider","sliderElem","lowValue","highValue","rzSliderModel","rzSliderHigh","lowLimit","highLimit","positionProperty","dimensionProperty","handleHalfDim","maxPos","tracking","minValue","valueRange","intermediateTicks","initHasRun","firstKeyDown","internalChange","cmbLabelShown","currentFocusElement","fullBar","selBar","minH","maxH","flrLab","ceilLab","minLab","maxLab","cmbLab","ticks","thrLow","thrHigh","calcDimFn","calcViewDimensions","syncLowValue","syncHighValue","initElemHandles","manageElementsStyle","setDisabledState","setMinAndMax","addAccessibility","updateCeilLab","updateFloorLab","initHandles","manageEventsBindings","onLowHandleChange","onHighHandleChange","resetLabelsValue","resetSlider","unbindEvents","findStepIndex","isDate","getStepValue","sliderValue","applyLowValue","applyHighValue","updateLowHandle","valueToPosition","updateSelectionBar","updateTicksScale","updateAriaAttributes","updateCmbLabel","updateHighHandle","sliderOptions","rzSliderOptions","isNumber","parseStepsArray","customTrFn","custom","legend","refocusPointerIfNeeded","onPointerFocus","ref","focusElement","jElem","rzsp","alwaysHide","hideLabelsForTicks","rzAlwaysHide","hideEl","showEl","bindEvents","rzsv","translateFn","useCustomTr","valStr","getDimension","noLabelInjection","rzsd","roundStep","sanitizeValue","aria-valuenow","aria-valuetext","aria-valuemin","aria-valuemax","handleWidth","barDimension","getTicksArray","translation","tick","isTickSelected","-moz-transform","-o-transform","-ms-transform","getDisplayValue","valueTooltip","valueTooltipPlacement","setPosition","updateHandles","newPos","getHandleLabelPos","labelName","labelRzsd","nearHandlePos","endOfBarPos","shFloorCeil","flHidden","clHidden","isMinLabAtFloor","isLabelBelowFloorLab","isMinLabAtCeil","isLabelAboveCeilLab","isMaxLabAtCeil","isCmbLabAtFloor","isCmbLabAtCeil","hideCeil","hideFloor","dim","floorPos","floorDim","ceilPos","ceilDim","isSelectionBarFromRight","positionForRange","centerPosition","setDimension","lowTr","highTr","labelVal","customStep","steppedDifference","toPrecision","linearValueToPosition","logValueToPosition","minVal","maxVal","positionToValue","linearPositionToValue","logPositionToValue","exp","getEventXY","clientXY","getEventPosition","sliderPos","getEventNames","eventNames","moveEvent","endEvent","getNearestHandle","distanceMin","distanceMax","barTracking","barStart","barMove","onMove","onTickClick","ehMove","ehEnd","callOnStart","fromTick","ceilValue","flrValue","positionTrackingHandle","moveEventName","callOnEnd","onPointerBlur","onKeyboardEvent","onKeyUp","getKeyActions","currentValue","increaseStep","decreaseStep","UP","DOWN","LEFT","RIGHT","PAGEUP","PAGEDOWN","HOME","END","38","40","37","39","33","34","36","35","newMinValue","newMaxValue","positionTrackingBar","outOfBounds","isAbove","ceilLimit","flrLimit","isUnderFlrLimit","isOverCeilLimit","flrH","ceilH","applyModel","valueChanged","applyMinMaxLimit","applyPushRange","applyMinMaxRange","oppositeValue","callOnChange","RzSlider","rzSliderTplUrl","slider","expandingExpr","expanding","expandedExpr","expanded","collapsingExpr","collapsing","collapsedExpr","collapsed","horizontal","cssTo","getScrollFromElement","expandDone","collapseDone","uibCollapse","shouldCollapse","collapse","closeOthers","accordionConfig","groups","openGroup","addGroup","groupScope","removeGroup","heading","panelClass","setHeading","accordionCtrl","openClass","toggleOpen","headingId","panelId","accordionGroupCtrl","uibAccordionTransclude","closeable","dismissOnTimeout","activeClass","toggleEvent","buttonConfig","ctrls","buttonsCtrl","ngModelCtrl","uncheckableExpr","uibUncheckable","$render","$modelValue","uibBtnRadio","uncheckable","$setViewValue","getTrueValue","getCheckboxValue","btnCheckboxTrue","defaultValue","btnCheckboxFalse","service","$locale","dateFilter","orderByFilter","filterFilter","localeId","formatCodeToRegex","SPECIAL_CHARACTERS_REGEXP","getFormatCodeToRegex","constructLiteralFormatter","literalIdx","endIdx","constructFormatterFromIdx","currentPosStr","parser","formatter","toInt","timezoneToOffset","timezone","requestedTimezoneOffset","addDateMinutes","date","minutes","setMinutes","getMinutes","convertTimezoneToLocal","dateTimezoneOffset","getTimezoneOffset","parsers","formatters","regex","year","_date","setFullYear","getFullYear","month","getMonth","getDate","milliseconds","seconds","sign","getParser","overrideParser","createFormatter","baseDate","quoteIndex","inLiteral","matcher","createParser","tzOffset","dt","getHours","getSeconds","getMilliseconds","mapper","datesetter","setUTCFullYear","timesetter","setUTCHours","setHours","isValid","toTimezone","fromTimezone","datepickerMode","formatDay","formatMonth","formatYear","formatDayHeader","formatDayTitle","formatMonthTitle","maxDate","maxMode","minDate","minMode","monthColumns","ngModelOptions","shortcutPropagation","showWeeks","yearColumns","yearRows","datepickerConfig","$datepickerLiteralWarning","$datepickerSuppressError","dateParser","watchListeners","datepickerOptions","modes","startingDay","getOption","refreshView","uniqueId","ngDisabled","dateObject","compare","activeDate","activeDateId","uid","ngModelCtrl_","createChild","extractOptions","initDate","$viewValue","selectedDt","_refreshView","activeDt","$setValidity","createDateObject","today","past","future","customClass","dateDisabled","mode","arrays","setMode","years","months","toggleMode","handleKeyDown","DAYS_IN_MONTH","getDaysInMonth","getISO8601WeekNumber","checkDate","setDate","getDay","setMonth","getDates","startDate","dates","firstDayOfMonth","numDisplayedFromPreviousMonth","firstDate","days","secondary","labels","abbr","full","rows","weekNumbers","thursdayIndex","numWeeks","curWeek","date1","date2","_date1","_date2","yearHeaderColspan","columns","getStartingYear","yearpickerInit","datepickerCtrl","ON_REGEXP","IS_REGEXP","tElement","tAttrs","linkedScopes","expToData","onExpMatches","uibIsClass","onExp","exps","clazz","compareWithExp","watchFn","compareWithVal","newActivated","thisVal","lastActivated","watcher","addForExp","removeScope","removedScope","targetScope","newWatchScope","SCROLLBAR_WIDTH","BODY_SCROLLBAR_WIDTH","OVERFLOW_REGEX","normal","PLACEMENT_REGEX","auto","primary","BODY_REGEX","getRawNode","parseStyle","isFinite","scrollbarWidth","isBody","bodyElem","scrollElem","scrollbarPadding","elemStyle","scrollParent","widthOverflow","originalRight","heightOverflow","originalBottom","includeHidden","overflowRegex","overflowY","includeSelf","excludeStatic","spStyle","includeMagins","elemOffset","parentOffset","clientLeft","elemBCR","viewportOffset","useDocument","includePadding","offsetBCR","offsetParentBCR","offsetParentStyle","parsePlacement","autoPlace","hostElem","targetElem","hostElemPos","targetElemPos","targetElemStyle","adjustedSize","xOverflow","yOverflow","adjustTop","placementClasses","containerPosition","initialHeight","currentHeight","innerElem","isTooltip","arrowElem","arrowCss","borderProp","borderWidth","borderRadiusProp","createNew","hasKey","resolver","setResolver","invocables","promises","resolves","resolveObj","resolveIter","$modalStack","backdropClass","linkFn","modalInClass","NOW_CLOSING_EVENT","setIsAsync","modalOptions","windowTopClass","modal","getTop","backdrop","dismiss","$isRendered","modalRenderDeferObj","animationPromise","modalRendered","activeElement","inputWithAutofocus","modalAnimation","uibModalAnimationClass","$$multiMap","$$stackedMap","$uibPosition","backdropDomEl","backdropScope","OPENED_MODAL_CLASS","openedWindows","openedClasses","topModalIndex","previousTopOpenedModal","ARIA_HIDDEN_ATTRIBUTE_NAME","SNAKE_CASE_REGEXP","backdropIndex","topBackdropIndex","opened","removeModalWindow","modalInstance","elementToReceiveFocus","modalWindow","appendToElement","modalDomEl","removeAfterAnimate","modalScope","modalBodyClass","openedClass","areAnyOpen","toggleTopWindowClass","closedDeferred","checkRemoveBackdrop","toggleSwitch","domEl","asyncDeferred","asyncPromise","afterAnimating","keydownListener","keyboard","loadFocusElementList","focusChanged","isFocusInFirstItem","isModalFocused","focusLastFocusableElement","isFocusInLastItem","focusFirstFocusableElement","broadcastClosing","resultOrReason","closing","unhideBackgroundElements","hiddenEl","newHiddenCount","newBackdropIndex","modalOpener","deferred","renderDeferred","currBackdropIndex","ng-style","uib-modal-animation-class","modal-in-class","letter","modal-instance","template-url","windowTemplateUrl","window-top-class","role","aria-labelledby","aria-describedby","ariaDescribedBy","$$topModalIndex","applyAriaHidden","getSiblings","elemIsAlreadyHidden","ariaHiddenCount","$$uibDestructionScheduled","dismissAll","topModal","modalDomE1","getClientRects","$modalProvider","$uibResolve","$modal","promiseChain","getPromiseChain","templateAndResolvePromise","samePromise","modalResultDeferred","modalOpenedDeferred","modalClosedDeferred","modalRenderDeferred","closed","rendered","resolveWithTemplate","tplAndVars","providedScope","$close","$dismiss","ctrlInstance","ctrlInstantiate","ctrlLocals","constructLocals","instanceOnScope","injectable","$resolve","$uibModalInstance","bindToController","setNumPages","numPages","_watchers","itemsPerPage","totalPages","calculateTotalPages","updatePage","newTotal","oldTotal","totalItems","selectPage","noPrevious","noNext","uibPaging","uibPaginationConfig","maxSize","forceEllipses","boundaryLinkNumbers","pageLabel","$page","makePage","boundaryLinks","directionLinks","originalRender","pages","currentPage","startPage","endPage","isMaxSized","previousPageSet","secondPageLink","firstPageLink","nextPageSet","secondToLastPageLink","lastPageLink","getPages","firstText","previousText","nextText","lastText","paginationCtrl","placementClassPrefix","popupDelay","popupCloseDelay","useContentExp","triggerMap","mouseenter","outsideClick","none","setTriggers","triggers","openedTooltips","keypressListener","ttType","defaultTriggerShow","getTriggers","directiveName","startSym","startSymbol","endSym","endSymbol","tElem","tooltipLinker","tooltipCtrl","tooltipLinkedScope","transitionTimeout","showTimeout","hideTimeout","positionTimeout","adjustmentTimeout","lastPlacement","hasEnableExp","ttScope","repositionScheduled","isOpenParse","contentParse","observers","positionTooltip","elementPos","adjustment","toggleTooltipBind","hideTooltipBind","showTooltipBind","cancelHide","popupClass","closeDelay","prepareTooltip","cancelShow","prepObservers","createTooltip","assignIsOpen","removeTooltip","bodyHideTooltipBind","hideOnEscapeKey","origScope","contentExp","showTriggers","hideTriggers","unregisterTriggers","appendToBodyVal","appendKey","tooltipTemplateTranscludeScope","changeCounter","cleanupLastIncludeContent","parseAsResourceUrl","uibTooltipTemplateTransclude","thisChangeId","tooltipAnimationClass","$uibTooltip","originScope","uibTitle","oldIndex","destroyed","findTabIndex","tabs","previousIndex","previousSelected","tab","onDeselect","$selectedIndex","onSelect","addTab","t1","t2","newActiveIndex","removeTab","newActiveTabIndex","justified","centered","tabsetCtrl","$transcludeFn","uibTabContentTransclude","headingElement","stateOn","stateOff","enableReset","titles","ratingConfig","$formatters","tmpTitles","ratingStates","buildTemplateObjects","states","getTitle","rate","readonly","newViewValue","onHover","onLeave","onKeydown","ratingCtrl","appendToOpenClass","openScope","openedContainers","isOnlyOpen","dropdownScope","openedDropdowns","toClose","closeDropdown","keybindFilter","dropdownToClose","getAutoClose","toggleElement","getToggleElement","dropdownElement","getDropdownElement","focusToggleElement","dropdownElementTargeted","toggleElementTargeted","isKeynavEnabled","focusDropdownEntry","dropdownConfig","uibDropdownService","templateScope","getIsOpen","setIsOpen","toggleInvoker","onToggle","keynavEnabled","removeDropdownMenu","dropdownMenu","keyboardNav","autoClose","elems","selectedOption","wasOpen","dropdownAppendTo","appendToEl","dropdownAppendToBody","rightalign","appendOffset","openContainer","dropdownOpenClass","hasOpenClass","dropdownMenuTemplateUrl","tplContent","newEl","dropdownCtrl","dropdownNested","tplUrl","toggleDropdown","aria-haspopup","aria-expanded","altInputFormats","clearText","closeOnDateSelection","closeText","currentText","datepickerPopup","datepickerPopupTemplateUrl","datepickerTemplateUrl","html5Types","datetime-local","onOpenFocus","showButtonBar","datepickerPopupConfig","$datepickerPopupLiteralWarning","dateFormat","popupEl","datepickerEl","scrollParentEl","$popup","isHtml5DateInput","parseDateString","parseDate","documentClickBind","popup","dpContainsTarget","popupContainsTarget","inputKeydownBind","positionPopup","dpElement","popupPlacement","_ngModel_","datepickerAppendToBody","uibDatepickerPopup","newDateFormat","ng-model","ng-change","$$parserName","$parsers","$viewChangeListeners","dateSelection","onLoad","Message","Recipients","addRecipient","removeRecipient","Email","FirstName","LastName","submit","resultMessage","suggestionsUrl","cropper","initCropper","Cropper","tmpId","movable","cropBoxResizable","rotatable","save","ctrlFrom","dzMethods","croppedFile","dataURI","byteString","atob","ab","ia","dataURItoBlob","getCroppedCanvas","fillColor","imageSmoothingEnabled","imageSmoothingQuality","tmpFileName","deleteTmpFile","$uibModal","ctrlAs","onClosed","onOpened","openModal","openCmsModal","autoScroll","modalAutoScroll","$modalDialog","$scrollContainer","overflow-x","productsGridService","getId","resizeGrid","elemId","$divs","col","nb","targ","RoutingService","isBot","isCache","noreplace","routeToKeep","unsubscribe","rooter","cart","_routes","stepTo","stepFrom","rejection","UseLogs","Key","href","routing","scrollCache","getPath","ngRouter","ngRoute","categoryId","backToStore","windowScroll","dataLayer","initRooter","routingService","$routeProvider","$locationProvider","$httpProvider","Routes","DefaultLocalization","useApplyAsync","common","interceptors","authorize","authService","AccountService","getReturnFolders","getShippingAddresses","getLocation","html5Mode","requireBase","rewriteLinks","routesService","getRoute","pathname","getScrollPos","isCart","HasCart","responseError","Cart","CartIdentification","CartShipping","CartPayment","CartValidation","CartOnePageCheckout","getLinks","links","initAccount","logout","setManagement","setVisitor","hasServices","IsManagementGiftCards","IsManagementCredits","IsManagementLoyaltyPoints","IsManagementInvoicesAndCreditsTracking","hasOrders","IsManagementOrderTracking","IsManagementWebCartTracking","IsManagementReturns","IsManagementComplaint","IsManagementNumericProducts","Delegation","getOrders","getOrder","getEligibleReturnFolders","$http","appPromise","cartRequests","Content-type","VisitorContext","isPro","WebsiteVisitorContext","VisitorIsPro","noevent","getCart","productsToCart","product","IDLine","Reference","Quantity","Elements","Customization","fromCart","checkAvailability","priceObj","HasDiscount","Discount","DegressivePrice","extension","absolute","split1","UrlImages","split2","URLSite","stringToDate","tomorrow","nextYear","dateDay","getDefer","getClustererDefer","GMAPKey","gMapsInit","script","getClusterer","MarkerClusterer","getGeoCode","address","Geocoder","geocode","country","address_components","long_name","Latitude","geometry","Longitude","Country","getGeoCodeByGps","gps","CountryCode","short_name","formatted_address","isOpera","isIE9","isIE10","isIE11","isIEEdge","safeApply","assureList","getCurrentMatch","currentStyle","fontFamily","listenerFunc","currentMatch","previousMatch","wasPreviousMatch","doesCurrentMatch","throttleTime","isOn","debounceTime","listenerType","AccountClaim","Attachments","Global","CustomerPro","IDCompanyTitle","Company","dzOptions","dzCallbacks","ServerName","messageSent","messageSentOK","Errors","ErrorMessage","LogService","RememberMe","returnUrl","Address","AddressApartment","AddressBuilding","AddressLocality","Phone","MobilePhone","ProfilePicture","ConfirmEmail","Properties","Values","testoon_type","testoon_fonction","testoon_domaine","userMail","Siret","IDActivity","IDActivityDomain","toggleCustomerPro","AccountCredits","credits","AccountHome","AccountGiftCards","giftCards","IDPicture","userPicture","Title","IDTitle","orders","Orders","order","IDState","ordersCount","visitor","AccountInvoices","invoices","Invoices","invoice","AccountLoyaltyPoints","getPrice","noDecimal","priceFormat","LoyaltyPointsAcquired","endDate","DateEndValidity","soon","expiresSoon","LoyaltyProgram","AmountForOnePoint","TriggerValue","ValuePerPoint","TriggerPointNumber","AccountNumericFiles","AccountNumericProducts","MaxDownloadDate","disableDownload","AccountOrderTracking","DateService","CreationDate","timestamp","orderHistory","IDFolder","Order","pendingLines","canceledLines","Items","Group","Field","Code","Value","Fields","field","tradeActions","actionsCo","TradeActions","tradeAction","TradeActionKey","Shipping","free","ActionsCo","FoldersShipping","folderShipping","setFilterOptions","filterOptions","setFilterHistory","orderHistoryFiltered","filterSelected","limit","token","isTokenValid","Token","PasswordModified","AccountQuotations","quotations","quotation","addAllEnabled","WebFolderLines","AllowAddToCart","quotationPayment","AccountReturns","activeTab","requests","ordersLoading","ordersList","tplTranslate","refreshSelects","unfocusSelects","checkReturnDisabled","submitReturnDisabled","Reason","ReturnAction","removeReturn","cancelRequest","idFolder","selectLine","idOrderSelected","ReturnQuantity","quantityChange","backToOrders","refreshSelect","getQuantities","reasons","reasonChange","InputComment","ReturnReason","IDReturnReason","actionChange","ReturnActionKey","ActionValue","IDExchangeProduct","IDGroupingProduct","selectPrimary","idGroupingProduct","originalId","productExchange","closeProductExchange","submitReturnProducts","DemandOk","choiceButton","IsTheSame","ChooseElementary","AccountSavedCarts","carts","idWebFolder","IDWebFolder","removeOK","addAllToCart","Designation","AccountSponsorShip","IsManagementSponsorShip","Sponsors","addSponsor","removeSponsor","getSponsors","IDCampaign","idCampaign","sponsors","multiCallOK","singleCallOK","Error_GODSON_ALREADY_CUSTOMER","Error_ONE_PAID_ORDER_REQUIRED","diff","AccountUseDelegation","delegations","Delegations","DelegationID","DelegationModified","AccountUpdate","initUserPicture","setShippingAddresses","initBirthDate","day","birthDate","EUTVANumber","formProfile","submitProfil","loadingProfile","AccountModified","BirthYear","BirthMonth","BirthDay","submitAddress","updateAddress","IDCard","PostCode","City","IDCountry","submitShippingAddress","FullName","selectTitle","selectCountry","removeAddress","shippingAddresses","addAddress","countries","updateShippingAddresses","resizeShippingAddresses","addresses","IDCardType","messageTitle","successMessage","AccountPasswordReset","AccountWishList","commentPopover","getProducts","Total","PublicLink","hasComment","removeProduct","SavedChanges","saveRate","rateLoading","Rate","satus","editComment","editedComment","commentIsOpen","saveComment","commentLoading","addProduct","IsGroupingProduct","addPrimary","addedToList","loadingProducts","addAllProducts","activitiesJson","initActivity","activities","Activities","domainSelected","accountOrderTrackingCtrl","accountReturnsCtrl","caption","newClient","templateCreate","createOpen","loadedAccountCreate","toggleAccountCreate","activeIn","ReturnUrl","login","openForgotPassword","email","Login","mailRecognized","linkCreate","redirect2","authCtrl","showCreate","titleLogin","titleLogout","textAdvices","searchFinderService","goSearch","Search","inputChangeHandler","setCtrl","submitSearch","searchStr","canceler","getCtrl","nbPerPage","categories","facets","brands","reviews","category","FieldName","FieldValue","IDCategory","QueryFullText","NbFrom","NbSize","FiltersSelected","FacetsSelected","BrandsSelected","ReviewsSelected","ProductTypesSelected","PriceRangeSelected","withCatalogs","withFacets","Sort","advices","busy","PriceRange","CategoriesSelected","getSearch","nextPage","maxPage","KeyWebAspect","isWithoutPrice","Themes","KeyTheme","Id","setDataFilters","setSelectedFilters","searchCtrl","searching","updateSearchApi","Selected","facet","sel","itemValue","selectPrices","selectedMinPrice","minPrice","selectedMaxPrice","maxPrice","Gte","Lte","startMin","startMax","pricesActive","sliderId","checkValue","selectedValue","isColor","colorImg","No","Yes","Colon","SearchFinderApi","selectFilter","isReview","updateSearch","clearResults","setCategory","setFacet","setBrand","setReview","setType","openItem","word","hasCart","emptyCart","CartService","setStepsCartCtrl","steps","stepsActive","stepStyle","loadedCart","NextEnabled","toggleUpdate","submitCode","formCode","cancelCode","addLoyaltyPoint","cancelLoyaltyPoint","useCredit","cancelCredit","isGiftEnabled","cancelGiftCard","cartTooltip","NextTooltip","isUpdating","suggestions","keyTheme","available","updateStepsCart","nextStep","isNumericCart","RestToPay","setNextLink","ProduitOffert","Attributes","att","checkGiftProductsValid","checkResponse","DeleteQuantityLines","deleteQuantityLine","alertAvailability","ChooseGiftMessage","cartCtrl","restoreCart","saveCartConnect","saveCart","SaveCartOK","SaveCartMessage","openModify","Hash","setGiftMessage","GiftComment","saveGift","CommentSaved","CommentDeleted","addSuggestion","TitleModifyOk","changeGiftAttribute","SelectedProduct","getProduct","ShippingService","getList","shipping","shippingList","imgSrc","FinalPrice","SendCartOK","updateFromCart","ClearCartOK","linkPayment","PaymentService","itemSelected","payment","paymentList","PaymentMethod","IDPaymentMethod","selectItem","toggleCart","autoSelect","selectPayment","showPopover","setQuantity","keyAddToCart","openPopover","ReferenceAjoutee","inputChanged","searchCallback","CategoryId","getResponse","searchAPI","userInputString","timeoutPromise","addToCartActiveDisabled","UrlProduct","commentCanceler","giftCanceler","imgSrcSm","PortOffert","PortOffertPrix","LoyaltyCoupon","AmountLoyaltyCouponValue","AmountLoyaltyCoupon","showCart","showCartProducts","codeLoading","PromoCode","openCode","CodeOK","CodePersonal","CodeAlreadyUsed","CodeInvalid","cancelCodeLoading","CancelCodeOK","loyaltyLoading","AddCouponOK","cancelLoyaltyLoading","CancelCouponOK","creditsLoading","IDCredit","AddCreditOK","cancelCreditLoading","CancelCreditOK","cancelGiftCardLoading","comment","IsGift","stepsCartCtrl","stepLogHide","IsNumeric","$cacheFactory","ShippingCacheService","getPickUpPoints","shippingCoordinate","cancelGetPickUpPoints","selectShipping","pickup","idShippingGridValue","idPickUpPoint","paymentMethod","Description","GMaps","mapListerner","markerClusterer","checkAddressOnClose","getShippingList","IDShippingGridValue","updateCart","searchPickUpPoints","card","searchGpsPickUpPoints","$autocomplete","autocomplete","places","Autocomplete","componentRestrictions","addressSearch","newSearch","hostname","protocol","geolocation","getGeolocation","latitude","longitude","getCurrentPosition","resultsPickUpPoints","pickUpPoints","point","Distance","km","DistanceKm","Coordinate","pickUpPointsSelected","markerSelected","showPickUpPoint","showMap","stylers","saturation","lightness","gmap","gridSize","maxZoom","textColor","userMarker","updateMobilePhone","userShippingCard","checkEnabled","PickUp","mobileForm","MobilePhoneRequired","NoPickupAdress","ShippingChoice","originalComment","openComment","showDriveMap","showMobilePhone","ShowPointsList","ShowPointsMap","pointInfos","btnAction","ChoisirUnAutrePoint","fullAddress","selectPickUpPoint","$input","ChoisirUneAutreAdresse","setShowPointsList","marker","$list","$point","OpeningHours","Monday","AM","hasSchedule","OpeningAM","ClosingAM","OpeningPM","ClosingPM","Ferme","PM","panBy","closePointInfo","getMarkerOpts","driveMarker","labelOrigin","Point","fontWeight","AddressLine1","AddressLine2","Apartment","Building","Complement","changeShippingAddress","IDShippingCard","toggleMobilePhone","editMobile","focusMobilePhone","targetMobilePhone","blurMobilePhone","changeMobilePhone","submitMobilePhone","submitPickUpPoint","convertToQuotation","ConvertToQuotationOK","connect","showCreateAddress","codeFormat","validCode","codeVerification","CheckBox1","CartPaymentAction","linkShipping","getValidationInfos","loadCart","invoiceAddress","BillingCard","shippingAddress","titleShippingAddress","PointRetrait","AdresseLivraison","EnlevementMagasin","invoiceAddressIsEqual","changeInvoiceAddress","openCgv","gotoPaymentPage","AcceptCgv","idCategory","CategoryFiltersCacheService","CategoryService","addWord","removeWord","updateUrl","openDropdown","initCheck","selectId","removeFilter","removeFilters","isPrices","fs","getGridCtrl","filtered","noScroll","getResults","getFilters","selectedCount","locSearch","gridCtrl","noresult","removeAllEnabled","nbProducts","totalProducts","filteredActive","nbCols","nbColsActive","nbColsActiveXL","nbColsActiveLG","nbColsActiveMD","setNbColsActive","THROTTLE_MILLISECONDS","windowElement","scrollDistance","scrollEnabled","checkWhenEnabled","immediateCheck","useDocumentBottom","unregisterEventListener","checkInterval","ownerDocument","defaultView","defaultHandler","elementBottom","containerTopOffset","shouldScroll","infiniteScroll","throttled","handleInfiniteScrollDistance","handleInfiniteScrollDisabled","handleInfiniteScrollUseDocumentBottom","changeContainer","newContainer","infiniteScrollDistance","infiniteScrollDisabled","infiniteScrollUseDocumentBottom","infiniteScrollListenForEvent","handleInfiniteScrollContainer","newerContainer","infiniteScrollContainer","infiniteScrollParent","infiniteScrollImmediateCheck","isVentePriveeLogged","fromVentePrivee","CategoryCacheService","preProcess","iScrollMaxPages","postProcess","nextSearchPage","routeUrl","sortTitle","InfiniteScrollApi","SearchRoutingService","setGridCtrl","paginationEnabled","iScrollPage","iScrollNbPerPage","setSort","gotoPage","categoryName","showPagination","showBtnMore","removeAll","setProducts","sortParam","SortType","Text1","MainPicture","ReviewsInfo","Count","Average","HTMLShortDescription","Availability","AvailabilityMessage","IsCustomizable","Brand","Date1","th","isComparable","isWithOutPrice","emailChanged","fieldName","FormService","FolderTypeKey","CustomizationType","reqPlaceholder","Required","AdditionalCostTTC","AdditionalCostHT","dateOptions","successfile","setCustomization","idKit","productService","updateComponent","setKitElement","Components","customGroups","firstOptional","groupTitle","groupFirstElement","productDefault","IDProductDefault","selectCustomComponent","KitQuantity","currentModel","attrValueSelected","initComponent","changeAttribute","AdditionalCost","hasTheme","jsonPrice","txtFirstRange","txtRange","txtLastRange","setPricesData","EcoContribution","$main","$sub","$video","openLightGallery","dynamicEl","thumb","lightGallery","nextHtml","prevHtml","fullscreenHtml","dynamic","galleryImgLoader","zoomId","zoomSize","socialshare","socialshareUrl","socialshareText","socialshareMedia","socialshareHashtags","socialshareEmail","appId","urlString","facebookShare","ViewEmail","Url","isActiveDiv","isActiveDivLarge","activeDiv","activeDivLarge","idGroup","urlGroup","showComponents","zoomLoaded","productsData","lengthDescriptionActive","lengthDescription","heightDescription","lineDescription","setProduct","getActive","showEcoContribution","setPrice","nbReviews","eco","productData","setProductPrice","initZoom","galleryZoomInit","btnEnabled","IDCustomizationListItem","setProductCustomization","setProductQuantity","getProductsData","openCmsLivraison","setActiveTab","wishlist","IdProduct","giftlist","logged","openCmsLoyalty","openModalReviews","dataTmp","resp","MessageSent","messageText","customization","ProductPrices","idKitComponent","IDKitComponent","getProductCustomisation","kitHasComponentRequired","reviewsCache","capacity","addReview","getReviews","note","setRelevance","positive","clearReviewsCache","ReviewsService","ReviewsConfig","setPage","Reviews","CurrentSort","CurrentFilter","setShowForm","showForm","formAdd","score","getAveragePercent","clip","getGradePercent","cookies","CurrentPageReviews","review","Response","IDReview","inactive","setFilter","openReview","messageOK","FiltersExcluded","hideTimer","inputField","minlength","searchTimer","httpCanceller","httpCallInProgress","callOrAssign","selectedObject","handleOverrideSuggestions","overrideSuggestions","matchField","cancelHttpRequest","originalObject","clearSelected","updateInputField","currentIndex","httpSuccessCallbackGen","responseData","remoteUrlResponseFormatter","showDropdown","httpErrorCallback","errorRes","getRemoteResults","searchStrEs","remoteApiHandler","initResults","searchTimerComplete","elementId","onFocusHandler","focusIn","hideResults","focusOut","hoverRow","selectResult","maxlength","$digest","txtAddToList","txtViewAndChoose","designationHtml","findMatchString","IsElementary","CompareService","updateProductsData","resized","maxItems","tmpProducts","len2","IsInTable","PropertyType","TextValue","NumericValue","resizeProducts","wItem","getNbProducts","titleFull","unwatchEvent","getChecked","updateCookie","cancelPromises","canceller","NewsletterOK","newsletterConnect","lang","setMenuActive","isMenuActive","cookieSwitch","cookieLanguage","language","setLanguage","getDefaultUrl","setSwitch","navMenuContext","navMenuMetier","dataColor","getTestoonContext","HasAccessPrivateShop","HasAccessPrivateSale","KeyCatalogue","setIsScroll","isDeviceTouch","menuColor","isMenuProductActive","menuProductActiveClass","isMenuMetierActive","menuMetierActiveClass","isMenuShopActive","menuShopActiveClass","isMenuBackActive","checkbox","hasSons","updateClass","categoryClass","liClassActive","isBackActive","liClass","initMenu","menuQuit","menuClick","menuBackClick","daysModel","strOneTime","strTwoTimes","strClosed","StoresService","getOpeningHours","CustomEvent","setAddress","getAddress","amStart","amEnd","pmStart","pmEnd","IsOpen","Date1Start","Date1End","Date2Start","Date2End","Exception","getSearchGps","postCode","city","searchLocation","addSearchLocation","showMapResults","initMap","nearPoint","minDist","stores","spherical","computeDistanceBetween","showStore","linkStore","openDetail","storeSelected"],"mappings":"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,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KACAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,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","file":"master.min.js","sourcesContent":["//Windows Phone 8 and Internet Explorer 10 FIX\r\nif (navigator.userAgent.match(/IEMobile\\/10\\.0/)) {\r\n var msViewportStyle = document.createElement(\"style\");\r\n msViewportStyle.appendChild(\r\n document.createTextNode(\r\n \"@-ms-viewport{width:auto!important}\"\r\n )\r\n );\r\n\r\n document.getElementsByTagName(\"head\")[0].appendChild(msViewportStyle);\r\n}","/*!\r\n * Bootstrap-select v1.12.4 (http://silviomoreto.github.io/bootstrap-select)\r\n *\r\n * Copyright 2013-2017 bootstrap-select\r\n * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)\r\n */\r\n\r\n(function (root, factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n // AMD. Register as an anonymous module unless amdModuleId is set\r\n define([\"jquery\"], function (a0) {\r\n return (factory(a0));\r\n });\r\n } else if (typeof module === 'object' && module.exports) {\r\n // Node. Does not work with strict CommonJS, but\r\n // only CommonJS-like environments that support module.exports,\r\n // like Node.\r\n module.exports = factory(require(\"jquery\"));\r\n } else {\r\n factory(root[\"jQuery\"]);\r\n }\r\n}(this, function (jQuery) {\r\n\r\n(function ($) {\r\n 'use strict';\r\n\r\n //\r\n if (!String.prototype.includes) {\r\n (function () {\r\n 'use strict'; // needed to support `apply`/`call` with `undefined`/`null`\r\n var toString = {}.toString;\r\n var defineProperty = (function () {\r\n // IE 8 only supports `Object.defineProperty` on DOM elements\r\n try {\r\n var object = {};\r\n var $defineProperty = Object.defineProperty;\r\n var result = $defineProperty(object, object, object) && $defineProperty;\r\n } catch (error) {\r\n }\r\n return result;\r\n }());\r\n var indexOf = ''.indexOf;\r\n var includes = function (search) {\r\n if (this == null) {\r\n throw new TypeError();\r\n }\r\n var string = String(this);\r\n if (search && toString.call(search) == '[object RegExp]') {\r\n throw new TypeError();\r\n }\r\n var stringLength = string.length;\r\n var searchString = String(search);\r\n var searchLength = searchString.length;\r\n var position = arguments.length > 1 ? arguments[1] : undefined;\r\n // `ToInteger`\r\n var pos = position ? Number(position) : 0;\r\n if (pos != pos) { // better `isNaN`\r\n pos = 0;\r\n }\r\n var start = Math.min(Math.max(pos, 0), stringLength);\r\n // Avoid the `indexOf` call if no match is possible\r\n if (searchLength + start > stringLength) {\r\n return false;\r\n }\r\n return indexOf.call(string, searchString, pos) != -1;\r\n };\r\n if (defineProperty) {\r\n defineProperty(String.prototype, 'includes', {\r\n 'value': includes,\r\n 'configurable': true,\r\n 'writable': true\r\n });\r\n } else {\r\n String.prototype.includes = includes;\r\n }\r\n }());\r\n }\r\n\r\n if (!String.prototype.startsWith) {\r\n (function () {\r\n 'use strict'; // needed to support `apply`/`call` with `undefined`/`null`\r\n var defineProperty = (function () {\r\n // IE 8 only supports `Object.defineProperty` on DOM elements\r\n try {\r\n var object = {};\r\n var $defineProperty = Object.defineProperty;\r\n var result = $defineProperty(object, object, object) && $defineProperty;\r\n } catch (error) {\r\n }\r\n return result;\r\n }());\r\n var toString = {}.toString;\r\n var startsWith = function (search) {\r\n if (this == null) {\r\n throw new TypeError();\r\n }\r\n var string = String(this);\r\n if (search && toString.call(search) == '[object RegExp]') {\r\n throw new TypeError();\r\n }\r\n var stringLength = string.length;\r\n var searchString = String(search);\r\n var searchLength = searchString.length;\r\n var position = arguments.length > 1 ? arguments[1] : undefined;\r\n // `ToInteger`\r\n var pos = position ? Number(position) : 0;\r\n if (pos != pos) { // better `isNaN`\r\n pos = 0;\r\n }\r\n var start = Math.min(Math.max(pos, 0), stringLength);\r\n // Avoid the `indexOf` call if no match is possible\r\n if (searchLength + start > stringLength) {\r\n return false;\r\n }\r\n var index = -1;\r\n while (++index < searchLength) {\r\n if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n if (defineProperty) {\r\n defineProperty(String.prototype, 'startsWith', {\r\n 'value': startsWith,\r\n 'configurable': true,\r\n 'writable': true\r\n });\r\n } else {\r\n String.prototype.startsWith = startsWith;\r\n }\r\n }());\r\n }\r\n\r\n if (!Object.keys) {\r\n Object.keys = function (\r\n o, // object\r\n k, // key\r\n r // result array\r\n ){\r\n // initialize object and result\r\n r=[];\r\n // iterate over object keys\r\n for (k in o)\r\n // fill result array with non-prototypical keys\r\n r.hasOwnProperty.call(o, k) && r.push(k);\r\n // return result\r\n return r;\r\n };\r\n }\r\n\r\n // set data-selected on select element if the value has been programmatically selected\r\n // prior to initialization of bootstrap-select\r\n // * consider removing or replacing an alternative method *\r\n var valHooks = {\r\n useDefault: false,\r\n _set: $.valHooks.select.set\r\n };\r\n\r\n $.valHooks.select.set = function(elem, value) {\r\n if (value && !valHooks.useDefault) $(elem).data('selected', true);\r\n\r\n return valHooks._set.apply(this, arguments);\r\n };\r\n\r\n var changed_arguments = null;\r\n\r\n var EventIsSupported = (function() {\r\n try {\r\n new Event('change');\r\n return true;\r\n } catch (e) {\r\n return false;\r\n }\r\n })();\r\n\r\n $.fn.triggerNative = function (eventName) {\r\n var el = this[0],\r\n event;\r\n\r\n if (el.dispatchEvent) { // for modern browsers & IE9+\r\n if (EventIsSupported) {\r\n // For modern browsers\r\n event = new Event(eventName, {\r\n bubbles: true\r\n });\r\n } else {\r\n // For IE since it doesn't support Event constructor\r\n event = document.createEvent('Event');\r\n event.initEvent(eventName, true, false);\r\n }\r\n\r\n el.dispatchEvent(event);\r\n } else if (el.fireEvent) { // for IE8\r\n event = document.createEventObject();\r\n event.eventType = eventName;\r\n el.fireEvent('on' + eventName, event);\r\n } else {\r\n // fall back to jQuery.trigger\r\n this.trigger(eventName);\r\n }\r\n };\r\n //\r\n\r\n // Case insensitive contains search\r\n $.expr.pseudos.icontains = function (obj, index, meta) {\r\n var $obj = $(obj).find('a');\r\n var haystack = ($obj.data('tokens') || $obj.text()).toString().toUpperCase();\r\n return haystack.includes(meta[3].toUpperCase());\r\n };\r\n\r\n // Case insensitive begins search\r\n $.expr.pseudos.ibegins = function (obj, index, meta) {\r\n var $obj = $(obj).find('a');\r\n var haystack = ($obj.data('tokens') || $obj.text()).toString().toUpperCase();\r\n return haystack.startsWith(meta[3].toUpperCase());\r\n };\r\n\r\n // Case and accent insensitive contains search\r\n $.expr.pseudos.aicontains = function (obj, index, meta) {\r\n var $obj = $(obj).find('a');\r\n var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toString().toUpperCase();\r\n return haystack.includes(meta[3].toUpperCase());\r\n };\r\n\r\n // Case and accent insensitive begins search\r\n $.expr.pseudos.aibegins = function (obj, index, meta) {\r\n var $obj = $(obj).find('a');\r\n var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toString().toUpperCase();\r\n return haystack.startsWith(meta[3].toUpperCase());\r\n };\r\n\r\n /**\r\n * Remove all diatrics from the given text.\r\n * @access private\r\n * @param {String} text\r\n * @returns {String}\r\n */\r\n function normalizeToBase(text) {\r\n var rExps = [\r\n {re: /[\\xC0-\\xC6]/g, ch: \"A\"},\r\n {re: /[\\xE0-\\xE6]/g, ch: \"a\"},\r\n {re: /[\\xC8-\\xCB]/g, ch: \"E\"},\r\n {re: /[\\xE8-\\xEB]/g, ch: \"e\"},\r\n {re: /[\\xCC-\\xCF]/g, ch: \"I\"},\r\n {re: /[\\xEC-\\xEF]/g, ch: \"i\"},\r\n {re: /[\\xD2-\\xD6]/g, ch: \"O\"},\r\n {re: /[\\xF2-\\xF6]/g, ch: \"o\"},\r\n {re: /[\\xD9-\\xDC]/g, ch: \"U\"},\r\n {re: /[\\xF9-\\xFC]/g, ch: \"u\"},\r\n {re: /[\\xC7-\\xE7]/g, ch: \"c\"},\r\n {re: /[\\xD1]/g, ch: \"N\"},\r\n {re: /[\\xF1]/g, ch: \"n\"}\r\n ];\r\n $.each(rExps, function () {\r\n text = text ? text.replace(this.re, this.ch) : '';\r\n });\r\n return text;\r\n }\r\n\r\n\r\n // List of HTML entities for escaping.\r\n var escapeMap = {\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n '\"': '"',\r\n \"'\": ''',\r\n '`': '`'\r\n };\r\n\r\n var unescapeMap = {\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n '"': '\"',\r\n ''': \"'\",\r\n '`': '`'\r\n };\r\n\r\n // Functions for escaping and unescaping strings to/from HTML interpolation.\r\n var createEscaper = function(map) {\r\n var escaper = function(match) {\r\n return map[match];\r\n };\r\n // Regexes for identifying a key that needs to be escaped.\r\n var source = '(?:' + Object.keys(map).join('|') + ')';\r\n var testRegexp = RegExp(source);\r\n var replaceRegexp = RegExp(source, 'g');\r\n return function(string) {\r\n string = string == null ? '' : '' + string;\r\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\r\n };\r\n };\r\n\r\n var htmlEscape = createEscaper(escapeMap);\r\n var htmlUnescape = createEscaper(unescapeMap);\r\n\r\n var Selectpicker = function (element, options) {\r\n // bootstrap-select has been initialized - revert valHooks.select.set back to its original function\r\n if (!valHooks.useDefault) {\r\n $.valHooks.select.set = valHooks._set;\r\n valHooks.useDefault = true;\r\n }\r\n\r\n this.$element = $(element);\r\n this.$newElement = null;\r\n this.$button = null;\r\n this.$menu = null;\r\n this.$lis = null;\r\n this.options = options;\r\n\r\n // If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a\r\n // data-attribute)\r\n if (this.options.title === null) {\r\n this.options.title = this.$element.attr('title');\r\n }\r\n\r\n // Format window padding\r\n var winPad = this.options.windowPadding;\r\n if (typeof winPad === 'number') {\r\n this.options.windowPadding = [winPad, winPad, winPad, winPad];\r\n }\r\n\r\n //Expose public methods\r\n this.val = Selectpicker.prototype.val;\r\n this.render = Selectpicker.prototype.render;\r\n this.refresh = Selectpicker.prototype.refresh;\r\n this.setStyle = Selectpicker.prototype.setStyle;\r\n this.selectAll = Selectpicker.prototype.selectAll;\r\n this.deselectAll = Selectpicker.prototype.deselectAll;\r\n this.destroy = Selectpicker.prototype.destroy;\r\n this.remove = Selectpicker.prototype.remove;\r\n this.show = Selectpicker.prototype.show;\r\n this.hide = Selectpicker.prototype.hide;\r\n\r\n this.init();\r\n };\r\n\r\n Selectpicker.VERSION = '1.12.4';\r\n\r\n // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both.\r\n Selectpicker.DEFAULTS = {\r\n noneSelectedText: 'Nothing selected',\r\n noneResultsText: 'No results matched {0}',\r\n countSelectedText: function (numSelected, numTotal) {\r\n return (numSelected == 1) ? \"{0} item selected\" : \"{0} items selected\";\r\n },\r\n maxOptionsText: function (numAll, numGroup) {\r\n return [\r\n (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)',\r\n (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)'\r\n ];\r\n },\r\n selectAllText: 'Select All',\r\n deselectAllText: 'Deselect All',\r\n doneButton: false,\r\n doneButtonText: 'Close',\r\n multipleSeparator: ', ',\r\n styleBase: 'btn',\r\n style: 'btn-default',\r\n caret: 'caret',\r\n size: 'auto',\r\n title: null,\r\n selectedTextFormat: 'values',\r\n width: false,\r\n container: false,\r\n hideDisabled: false,\r\n showSubtext: false,\r\n showIcon: true,\r\n showContent: true,\r\n dropupAuto: true,\r\n header: false,\r\n liveSearch: false,\r\n liveSearchPlaceholder: null,\r\n liveSearchNormalize: false,\r\n liveSearchStyle: 'contains',\r\n actionsBox: false,\r\n iconBase: 'glyphicon',\r\n tickIcon: 'glyphicon-ok',\r\n showTick: false,\r\n template: {\r\n caret: ''\r\n },\r\n maxOptions: false,\r\n mobile: false,\r\n selectOnTab: false,\r\n dropdownAlignRight: false,\r\n windowPadding: 0\r\n };\r\n\r\n Selectpicker.prototype = {\r\n\r\n constructor: Selectpicker,\r\n\r\n init: function () {\r\n var that = this,\r\n id = this.$element.attr('id');\r\n\r\n this.$element.addClass('bs-select-hidden');\r\n\r\n // store originalIndex (key) and newIndex (value) in this.liObj for fast accessibility\r\n // allows us to do this.$lis.eq(that.liObj[index]) instead of this.$lis.filter('[data-original-index=\"' + index + '\"]')\r\n this.liObj = {};\r\n this.multiple = this.$element.prop('multiple');\r\n this.autofocus = this.$element.prop('autofocus');\r\n this.$newElement = this.createView();\r\n this.$element\r\n .after(this.$newElement)\r\n .appendTo(this.$newElement);\r\n this.$button = this.$newElement.children('button');\r\n this.$menu = this.$newElement.children('.dropdown-menu');\r\n this.$menuInner = this.$menu.children('.inner');\r\n this.$searchbox = this.$menu.find('input');\r\n\r\n this.$element.removeClass('bs-select-hidden');\r\n\r\n if (this.options.dropdownAlignRight === true) this.$menu.addClass('dropdown-menu-right');\r\n\r\n if (typeof id !== 'undefined') {\r\n this.$button.attr('data-id', id);\r\n $('label[for=\"' + id + '\"]').click(function (e) {\r\n e.preventDefault();\r\n that.$button.focus();\r\n });\r\n }\r\n\r\n this.checkDisabled();\r\n this.clickListener();\r\n if (this.options.liveSearch) this.liveSearchListener();\r\n this.render();\r\n this.setStyle();\r\n this.setWidth();\r\n if (this.options.container) this.selectPosition();\r\n this.$menu.data('this', this);\r\n this.$newElement.data('this', this);\r\n if (this.options.mobile) this.mobile();\r\n\r\n this.$newElement.on({\r\n 'hide.bs.dropdown': function (e) {\r\n that.$menuInner.attr('aria-expanded', false);\r\n that.$element.trigger('hide.bs.select', e);\r\n },\r\n 'hidden.bs.dropdown': function (e) {\r\n that.$element.trigger('hidden.bs.select', e);\r\n },\r\n 'show.bs.dropdown': function (e) {\r\n that.$menuInner.attr('aria-expanded', true);\r\n that.$element.trigger('show.bs.select', e);\r\n },\r\n 'shown.bs.dropdown': function (e) {\r\n that.$element.trigger('shown.bs.select', e);\r\n }\r\n });\r\n\r\n if (that.$element[0].hasAttribute('required')) {\r\n this.$element.on('invalid', function () {\r\n that.$button.addClass('bs-invalid');\r\n\r\n that.$element.on({\r\n 'focus.bs.select': function () {\r\n that.$button.focus();\r\n that.$element.off('focus.bs.select');\r\n },\r\n 'shown.bs.select': function () {\r\n that.$element\r\n .val(that.$element.val()) // set the value to hide the validation message in Chrome when menu is opened\r\n .off('shown.bs.select');\r\n },\r\n 'rendered.bs.select': function () {\r\n // if select is no longer invalid, remove the bs-invalid class\r\n if (this.validity.valid) that.$button.removeClass('bs-invalid');\r\n that.$element.off('rendered.bs.select');\r\n }\r\n });\r\n\r\n that.$button.on('blur.bs.select', function() {\r\n that.$element.focus().blur();\r\n that.$button.off('blur.bs.select');\r\n });\r\n });\r\n }\r\n\r\n setTimeout(function () {\r\n that.$element.trigger('loaded.bs.select');\r\n });\r\n },\r\n\r\n createDropdown: function () {\r\n // Options\r\n // If we are multiple or showTick option is set, then add the show-tick class\r\n var showTick = (this.multiple || this.options.showTick) ? ' show-tick' : '',\r\n inputGroup = this.$element.parent().hasClass('input-group') ? ' input-group-btn' : '',\r\n autofocus = this.autofocus ? ' autofocus' : '';\r\n // Elements\r\n var header = this.options.header ? '
' + this.options.header + '
' : '';\r\n var searchbox = this.options.liveSearch ?\r\n '
' +\r\n '' +\r\n '
'\r\n : '';\r\n var actionsbox = this.multiple && this.options.actionsBox ?\r\n '
' +\r\n '
' +\r\n '' +\r\n '' +\r\n '
' +\r\n '
'\r\n : '';\r\n var donebutton = this.multiple && this.options.doneButton ?\r\n '
' +\r\n '
' +\r\n '' +\r\n '
' +\r\n '
'\r\n : '';\r\n var drop =\r\n '
' +\r\n '' +\r\n '' +\r\n '' +\r\n '
' +\r\n header +\r\n searchbox +\r\n actionsbox +\r\n '' +\r\n donebutton +\r\n '
' +\r\n '
';\r\n\r\n return $(drop);\r\n },\r\n\r\n createView: function () {\r\n var $drop = this.createDropdown(),\r\n li = this.createLi();\r\n\r\n $drop.find('ul')[0].innerHTML = li;\r\n return $drop;\r\n },\r\n\r\n reloadLi: function () {\r\n // rebuild\r\n var li = this.createLi();\r\n this.$menuInner[0].innerHTML = li;\r\n },\r\n\r\n createLi: function () {\r\n var that = this,\r\n _li = [],\r\n optID = 0,\r\n titleOption = document.createElement('option'),\r\n liIndex = -1; // increment liIndex whenever a new
  • element is created to ensure liObj is correct\r\n\r\n // Helper functions\r\n /**\r\n * @param content\r\n * @param [index]\r\n * @param [classes]\r\n * @param [optgroup]\r\n * @returns {string}\r\n */\r\n var generateLI = function (content, index, classes, optgroup) {\r\n return '' + content + '
  • ';\r\n };\r\n\r\n /**\r\n * @param text\r\n * @param [classes]\r\n * @param [inline]\r\n * @param [tokens]\r\n * @returns {string}\r\n */\r\n var generateA = function (text, classes, inline, tokens) {\r\n return '' + text +\r\n '' +\r\n '';\r\n };\r\n\r\n if (this.options.title && !this.multiple) {\r\n // this option doesn't create a new
  • element, but does add a new option, so liIndex is decreased\r\n // since liObj is recalculated on every refresh, liIndex needs to be decreased even if the titleOption is already appended\r\n liIndex--;\r\n\r\n if (!this.$element.find('.bs-title-option').length) {\r\n // Use native JS to prepend option (faster)\r\n var element = this.$element[0];\r\n titleOption.className = 'bs-title-option';\r\n titleOption.innerHTML = this.options.title;\r\n titleOption.value = '';\r\n element.insertBefore(titleOption, element.firstChild);\r\n // Check if selected or data-selected attribute is already set on an option. If not, select the titleOption option.\r\n // the selected item may have been changed by user or programmatically before the bootstrap select plugin runs,\r\n // if so, the select will have the data-selected attribute\r\n var $opt = $(element.options[element.selectedIndex]);\r\n if ($opt.attr('selected') === undefined && this.$element.data('selected') === undefined) {\r\n titleOption.selected = true;\r\n }\r\n }\r\n }\r\n\r\n var $selectOptions = this.$element.find('option');\r\n\r\n $selectOptions.each(function (index) {\r\n var $this = $(this);\r\n\r\n liIndex++;\r\n\r\n if ($this.hasClass('bs-title-option')) return;\r\n\r\n // Get the class and text for the option\r\n var optionClass = this.className || '',\r\n inline = htmlEscape(this.style.cssText),\r\n text = $this.data('content') ? $this.data('content') : $this.html(),\r\n tokens = $this.data('tokens') ? $this.data('tokens') : null,\r\n subtext = typeof $this.data('subtext') !== 'undefined' ? '' + $this.data('subtext') + '' : '',\r\n icon = typeof $this.data('icon') !== 'undefined' ? ' ' : '',\r\n $parent = $this.parent(),\r\n isOptgroup = $parent[0].tagName === 'OPTGROUP',\r\n isOptgroupDisabled = isOptgroup && $parent[0].disabled,\r\n isDisabled = this.disabled || isOptgroupDisabled,\r\n prevHiddenIndex;\r\n\r\n if (icon !== '' && isDisabled) {\r\n icon = '' + icon + '';\r\n }\r\n\r\n if (that.options.hideDisabled && (isDisabled && !isOptgroup || isOptgroupDisabled)) {\r\n // set prevHiddenIndex - the index of the first hidden option in a group of hidden options\r\n // used to determine whether or not a divider should be placed after an optgroup if there are\r\n // hidden options between the optgroup and the first visible option\r\n prevHiddenIndex = $this.data('prevHiddenIndex');\r\n $this.next().data('prevHiddenIndex', (prevHiddenIndex !== undefined ? prevHiddenIndex : index));\r\n\r\n liIndex--;\r\n return;\r\n }\r\n\r\n if (!$this.data('content')) {\r\n // Prepend any icon and append any subtext to the main text.\r\n text = icon + '' + text + subtext + '';\r\n }\r\n\r\n if (isOptgroup && $this.data('divider') !== true) {\r\n if (that.options.hideDisabled && isDisabled) {\r\n if ($parent.data('allOptionsDisabled') === undefined) {\r\n var $options = $parent.children();\r\n $parent.data('allOptionsDisabled', $options.filter(':disabled').length === $options.length);\r\n }\r\n\r\n if ($parent.data('allOptionsDisabled')) {\r\n liIndex--;\r\n return;\r\n }\r\n }\r\n\r\n var optGroupClass = ' ' + $parent[0].className || '';\r\n\r\n if ($this.index() === 0) { // Is it the first option of the optgroup?\r\n optID += 1;\r\n\r\n // Get the opt group label\r\n var label = $parent[0].label,\r\n labelSubtext = typeof $parent.data('subtext') !== 'undefined' ? '' + $parent.data('subtext') + '' : '',\r\n labelIcon = $parent.data('icon') ? ' ' : '';\r\n\r\n label = labelIcon + '' + htmlEscape(label) + labelSubtext + '';\r\n\r\n if (index !== 0 && _li.length > 0) { // Is it NOT the first option of the select && are there elements in the dropdown?\r\n liIndex++;\r\n _li.push(generateLI('', null, 'divider', optID + 'div'));\r\n }\r\n liIndex++;\r\n _li.push(generateLI(label, null, 'dropdown-header' + optGroupClass, optID));\r\n }\r\n\r\n if (that.options.hideDisabled && isDisabled) {\r\n liIndex--;\r\n return;\r\n }\r\n\r\n _li.push(generateLI(generateA(text, 'opt ' + optionClass + optGroupClass, inline, tokens), index, '', optID));\r\n } else if ($this.data('divider') === true) {\r\n _li.push(generateLI('', index, 'divider'));\r\n } else if ($this.data('hidden') === true) {\r\n // set prevHiddenIndex - the index of the first hidden option in a group of hidden options\r\n // used to determine whether or not a divider should be placed after an optgroup if there are\r\n // hidden options between the optgroup and the first visible option\r\n prevHiddenIndex = $this.data('prevHiddenIndex');\r\n $this.next().data('prevHiddenIndex', (prevHiddenIndex !== undefined ? prevHiddenIndex : index));\r\n\r\n _li.push(generateLI(generateA(text, optionClass, inline, tokens), index, 'hidden is-hidden'));\r\n } else {\r\n var showDivider = this.previousElementSibling && this.previousElementSibling.tagName === 'OPTGROUP';\r\n\r\n // if previous element is not an optgroup and hideDisabled is true\r\n if (!showDivider && that.options.hideDisabled) {\r\n prevHiddenIndex = $this.data('prevHiddenIndex');\r\n\r\n if (prevHiddenIndex !== undefined) {\r\n // select the element **before** the first hidden element in the group\r\n var prevHidden = $selectOptions.eq(prevHiddenIndex)[0].previousElementSibling;\r\n\r\n if (prevHidden && prevHidden.tagName === 'OPTGROUP' && !prevHidden.disabled) {\r\n showDivider = true;\r\n }\r\n }\r\n }\r\n\r\n if (showDivider) {\r\n liIndex++;\r\n _li.push(generateLI('', null, 'divider', optID + 'div'));\r\n }\r\n _li.push(generateLI(generateA(text, optionClass, inline, tokens), index));\r\n }\r\n\r\n that.liObj[index] = liIndex;\r\n });\r\n\r\n //If we are not multiple, we don't have a selected item, and we don't have a title, select the first element so something is set in the button\r\n if (!this.multiple && this.$element.find('option:selected').length === 0 && !this.options.title) {\r\n this.$element.find('option').eq(0).prop('selected', true).attr('selected', 'selected');\r\n }\r\n\r\n return _li.join('');\r\n },\r\n\r\n findLis: function () {\r\n if (this.$lis == null) this.$lis = this.$menu.find('li');\r\n return this.$lis;\r\n },\r\n\r\n /**\r\n * @param [updateLi] defaults to true\r\n */\r\n render: function (updateLi) {\r\n var that = this,\r\n notDisabled,\r\n $selectOptions = this.$element.find('option');\r\n\r\n //Update the LI to match the SELECT\r\n if (updateLi !== false) {\r\n $selectOptions.each(function (index) {\r\n var $lis = that.findLis().eq(that.liObj[index]);\r\n\r\n that.setDisabled(index, this.disabled || this.parentNode.tagName === 'OPTGROUP' && this.parentNode.disabled, $lis);\r\n that.setSelected(index, this.selected, $lis);\r\n });\r\n }\r\n\r\n this.togglePlaceholder();\r\n\r\n this.tabIndex();\r\n\r\n var selectedItems = $selectOptions.map(function () {\r\n if (this.selected) {\r\n if (that.options.hideDisabled && (this.disabled || this.parentNode.tagName === 'OPTGROUP' && this.parentNode.disabled)) return;\r\n\r\n var $this = $(this),\r\n icon = $this.data('icon') && that.options.showIcon ? ' ' : '',\r\n subtext;\r\n\r\n if (that.options.showSubtext && $this.data('subtext') && !that.multiple) {\r\n subtext = ' ' + $this.data('subtext') + '';\r\n } else {\r\n subtext = '';\r\n }\r\n if (typeof $this.attr('title') !== 'undefined') {\r\n return $this.attr('title');\r\n } else if ($this.data('content') && that.options.showContent) {\r\n return $this.data('content').toString();\r\n } else {\r\n return icon + $this.html() + subtext;\r\n }\r\n }\r\n }).toArray();\r\n\r\n //Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled\r\n //Convert all the values into a comma delimited string\r\n var title = !this.multiple ? selectedItems[0] : selectedItems.join(this.options.multipleSeparator);\r\n\r\n //If this is multi select, and the selectText type is count, the show 1 of 2 selected etc..\r\n if (this.multiple && this.options.selectedTextFormat.indexOf('count') > -1) {\r\n var max = this.options.selectedTextFormat.split('>');\r\n if ((max.length > 1 && selectedItems.length > max[1]) || (max.length == 1 && selectedItems.length >= 2)) {\r\n notDisabled = this.options.hideDisabled ? ', [disabled]' : '';\r\n var totalCount = $selectOptions.not('[data-divider=\"true\"], [data-hidden=\"true\"]' + notDisabled).length,\r\n tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedItems.length, totalCount) : this.options.countSelectedText;\r\n title = tr8nText.replace('{0}', selectedItems.length.toString()).replace('{1}', totalCount.toString());\r\n }\r\n }\r\n\r\n if (this.options.title == undefined) {\r\n this.options.title = this.$element.attr('title');\r\n }\r\n\r\n if (this.options.selectedTextFormat == 'static') {\r\n title = this.options.title;\r\n }\r\n\r\n //If we dont have a title, then use the default, or if nothing is set at all, use the not selected text\r\n if (!title) {\r\n title = typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText;\r\n }\r\n\r\n //strip all HTML tags and trim the result, then unescape any escaped tags\r\n this.$button.attr('title', htmlUnescape($.trim(title.replace(/<[^>]*>?/g, ''))));\r\n this.$button.children('.filter-option').html(title);\r\n\r\n this.$element.trigger('rendered.bs.select');\r\n },\r\n\r\n /**\r\n * @param [style]\r\n * @param [status]\r\n */\r\n setStyle: function (style, status) {\r\n if (this.$element.attr('class')) {\r\n this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|bs-select-hidden|validate\\[.*\\]/gi, ''));\r\n }\r\n\r\n var buttonClass = style ? style : this.options.style;\r\n\r\n if (status == 'add') {\r\n this.$button.addClass(buttonClass);\r\n } else if (status == 'remove') {\r\n this.$button.removeClass(buttonClass);\r\n } else {\r\n this.$button.removeClass(this.options.style);\r\n this.$button.addClass(buttonClass);\r\n }\r\n },\r\n\r\n liHeight: function (refresh) {\r\n if (!refresh && (this.options.size === false || this.sizeInfo)) return;\r\n\r\n var newElement = document.createElement('div'),\r\n menu = document.createElement('div'),\r\n menuInner = document.createElement('ul'),\r\n divider = document.createElement('li'),\r\n li = document.createElement('li'),\r\n a = document.createElement('a'),\r\n text = document.createElement('span'),\r\n header = this.options.header && this.$menu.find('.popover-title').length > 0 ? this.$menu.find('.popover-title')[0].cloneNode(true) : null,\r\n search = this.options.liveSearch ? document.createElement('div') : null,\r\n actions = this.options.actionsBox && this.multiple && this.$menu.find('.bs-actionsbox').length > 0 ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null,\r\n doneButton = this.options.doneButton && this.multiple && this.$menu.find('.bs-donebutton').length > 0 ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null;\r\n\r\n text.className = 'text';\r\n newElement.className = this.$menu[0].parentNode.className + ' open';\r\n menu.className = 'dropdown-menu open';\r\n menuInner.className = 'dropdown-menu inner';\r\n divider.className = 'divider';\r\n\r\n text.appendChild(document.createTextNode('Inner text'));\r\n a.appendChild(text);\r\n li.appendChild(a);\r\n menuInner.appendChild(li);\r\n menuInner.appendChild(divider);\r\n if (header) menu.appendChild(header);\r\n if (search) {\r\n var input = document.createElement('input');\r\n search.className = 'bs-searchbox';\r\n input.className = 'form-control';\r\n search.appendChild(input);\r\n menu.appendChild(search);\r\n }\r\n if (actions) menu.appendChild(actions);\r\n menu.appendChild(menuInner);\r\n if (doneButton) menu.appendChild(doneButton);\r\n newElement.appendChild(menu);\r\n\r\n document.body.appendChild(newElement);\r\n\r\n var liHeight = a.offsetHeight,\r\n headerHeight = header ? header.offsetHeight : 0,\r\n searchHeight = search ? search.offsetHeight : 0,\r\n actionsHeight = actions ? actions.offsetHeight : 0,\r\n doneButtonHeight = doneButton ? doneButton.offsetHeight : 0,\r\n dividerHeight = $(divider).outerHeight(true),\r\n // fall back to jQuery if getComputedStyle is not supported\r\n menuStyle = typeof getComputedStyle === 'function' ? getComputedStyle(menu) : false,\r\n $menu = menuStyle ? null : $(menu),\r\n menuPadding = {\r\n vert: parseInt(menuStyle ? menuStyle.paddingTop : $menu.css('paddingTop')) +\r\n parseInt(menuStyle ? menuStyle.paddingBottom : $menu.css('paddingBottom')) +\r\n parseInt(menuStyle ? menuStyle.borderTopWidth : $menu.css('borderTopWidth')) +\r\n parseInt(menuStyle ? menuStyle.borderBottomWidth : $menu.css('borderBottomWidth')),\r\n horiz: parseInt(menuStyle ? menuStyle.paddingLeft : $menu.css('paddingLeft')) +\r\n parseInt(menuStyle ? menuStyle.paddingRight : $menu.css('paddingRight')) +\r\n parseInt(menuStyle ? menuStyle.borderLeftWidth : $menu.css('borderLeftWidth')) +\r\n parseInt(menuStyle ? menuStyle.borderRightWidth : $menu.css('borderRightWidth'))\r\n },\r\n menuExtras = {\r\n vert: menuPadding.vert +\r\n parseInt(menuStyle ? menuStyle.marginTop : $menu.css('marginTop')) +\r\n parseInt(menuStyle ? menuStyle.marginBottom : $menu.css('marginBottom')) + 2,\r\n horiz: menuPadding.horiz +\r\n parseInt(menuStyle ? menuStyle.marginLeft : $menu.css('marginLeft')) +\r\n parseInt(menuStyle ? menuStyle.marginRight : $menu.css('marginRight')) + 2\r\n }\r\n\r\n document.body.removeChild(newElement);\r\n\r\n this.sizeInfo = {\r\n liHeight: liHeight,\r\n headerHeight: headerHeight,\r\n searchHeight: searchHeight,\r\n actionsHeight: actionsHeight,\r\n doneButtonHeight: doneButtonHeight,\r\n dividerHeight: dividerHeight,\r\n menuPadding: menuPadding,\r\n menuExtras: menuExtras\r\n };\r\n },\r\n\r\n setSize: function () {\r\n this.findLis();\r\n this.liHeight();\r\n\r\n if (this.options.header) this.$menu.css('padding-top', 0);\r\n if (this.options.size === false) return;\r\n\r\n var that = this,\r\n $menu = this.$menu,\r\n $menuInner = this.$menuInner,\r\n $window = $(window),\r\n selectHeight = this.$newElement[0].offsetHeight,\r\n selectWidth = this.$newElement[0].offsetWidth,\r\n liHeight = this.sizeInfo['liHeight'],\r\n headerHeight = this.sizeInfo['headerHeight'],\r\n searchHeight = this.sizeInfo['searchHeight'],\r\n actionsHeight = this.sizeInfo['actionsHeight'],\r\n doneButtonHeight = this.sizeInfo['doneButtonHeight'],\r\n divHeight = this.sizeInfo['dividerHeight'],\r\n menuPadding = this.sizeInfo['menuPadding'],\r\n menuExtras = this.sizeInfo['menuExtras'],\r\n notDisabled = this.options.hideDisabled ? '.disabled' : '',\r\n menuHeight,\r\n menuWidth,\r\n getHeight,\r\n getWidth,\r\n selectOffsetTop,\r\n selectOffsetBot,\r\n selectOffsetLeft,\r\n selectOffsetRight,\r\n getPos = function() {\r\n var pos = that.$newElement.offset(),\r\n $container = $(that.options.container),\r\n containerPos;\r\n\r\n if (that.options.container && !$container.is('body')) {\r\n containerPos = $container.offset();\r\n containerPos.top += parseInt($container.css('borderTopWidth'));\r\n containerPos.left += parseInt($container.css('borderLeftWidth'));\r\n } else {\r\n containerPos = { top: 0, left: 0 };\r\n }\r\n\r\n var winPad = that.options.windowPadding;\r\n selectOffsetTop = pos.top - containerPos.top - $window.scrollTop();\r\n selectOffsetBot = $window.height() - selectOffsetTop - selectHeight - containerPos.top - winPad[2];\r\n selectOffsetLeft = pos.left - containerPos.left - $window.scrollLeft();\r\n selectOffsetRight = $window.width() - selectOffsetLeft - selectWidth - containerPos.left - winPad[1];\r\n selectOffsetTop -= winPad[0];\r\n selectOffsetLeft -= winPad[3];\r\n };\r\n\r\n getPos();\r\n\r\n if (this.options.size === 'auto') {\r\n var getSize = function () {\r\n var minHeight,\r\n hasClass = function (className, include) {\r\n return function (element) {\r\n if (include) {\r\n return (element.classList ? element.classList.contains(className) : $(element).hasClass(className));\r\n } else {\r\n return !(element.classList ? element.classList.contains(className) : $(element).hasClass(className));\r\n }\r\n };\r\n },\r\n lis = that.$menuInner[0].getElementsByTagName('li'),\r\n lisVisible = Array.prototype.filter ? Array.prototype.filter.call(lis, hasClass('hidden', false)) : that.$lis.not('.hidden'),\r\n optGroup = Array.prototype.filter ? Array.prototype.filter.call(lisVisible, hasClass('dropdown-header', true)) : lisVisible.filter('.dropdown-header');\r\n\r\n getPos();\r\n menuHeight = selectOffsetBot - menuExtras.vert;\r\n menuWidth = selectOffsetRight - menuExtras.horiz;\r\n\r\n if (that.options.container) {\r\n if (!$menu.data('height')) $menu.data('height', $menu.height());\r\n getHeight = $menu.data('height');\r\n\r\n if (!$menu.data('width')) $menu.data('width', $menu.width());\r\n getWidth = $menu.data('width');\r\n } else {\r\n getHeight = $menu.height();\r\n getWidth = $menu.width();\r\n }\r\n\r\n if (that.options.dropupAuto) {\r\n that.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras.vert) < getHeight);\r\n }\r\n\r\n if (that.$newElement.hasClass('dropup')) {\r\n menuHeight = selectOffsetTop - menuExtras.vert - 40;\r\n }\r\n\r\n if (selectOffsetTop < 45) {\r\n $(document).trigger('click.bs.dropdown.data-api');\r\n }\r\n\r\n if (that.options.dropdownAlignRight === 'auto') {\r\n $menu.toggleClass('dropdown-menu-right', selectOffsetLeft > selectOffsetRight && (menuWidth - menuExtras.horiz) < (getWidth - selectWidth));\r\n }\r\n\r\n if ((lisVisible.length + optGroup.length) > 3) {\r\n minHeight = liHeight * 3 + menuExtras.vert - 2;\r\n } else {\r\n minHeight = 0;\r\n }\r\n\r\n $menu.css({\r\n 'max-height': menuHeight + 'px',\r\n 'overflow': 'hidden',\r\n 'min-height': minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px'\r\n });\r\n var menuInnerHeight = menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding.vert;\r\n menuInnerHeight = menuInnerHeight > 500 ? 500 : menuInnerHeight;\r\n $menuInner.css({\r\n 'max-height': menuInnerHeight + 'px',\r\n 'overflow-y': 'auto',\r\n 'min-height': Math.max(minHeight - menuPadding.vert, 0) + 'px'\r\n });\r\n };\r\n getSize();\r\n this.$searchbox.off('input.getSize propertychange.getSize').on('input.getSize propertychange.getSize', getSize);\r\n $window.off('resize.getSize scroll.getSize').on('resize.getSize scroll.getSize', getSize);\r\n } else if (this.options.size && this.options.size != 'auto' && this.$lis.not(notDisabled).length > this.options.size) {\r\n var optIndex = this.$lis.not('.divider').not(notDisabled).children().slice(0, this.options.size).last().parent().index(),\r\n divLength = this.$lis.slice(0, optIndex + 1).filter('.divider').length;\r\n menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding.vert;\r\n\r\n if (that.options.container) {\r\n if (!$menu.data('height')) $menu.data('height', $menu.height());\r\n getHeight = $menu.data('height');\r\n } else {\r\n getHeight = $menu.height();\r\n }\r\n\r\n if (that.options.dropupAuto) {\r\n //noinspection JSUnusedAssignment\r\n this.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras.vert) < getHeight);\r\n }\r\n $menu.css({\r\n 'max-height': menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px',\r\n 'overflow': 'hidden',\r\n 'min-height': ''\r\n });\r\n $menuInner.css({\r\n 'max-height': menuHeight - menuPadding.vert + 'px',\r\n 'overflow-y': 'auto',\r\n 'min-height': ''\r\n });\r\n }\r\n },\r\n\r\n setWidth: function () {\r\n if (this.options.width === 'auto') {\r\n this.$menu.css('min-width', '0');\r\n\r\n // Get correct width if element is hidden\r\n var $selectClone = this.$menu.parent().clone().appendTo('body'),\r\n $selectClone2 = this.options.container ? this.$newElement.clone().appendTo('body') : $selectClone,\r\n ulWidth = $selectClone.children('.dropdown-menu').outerWidth(),\r\n btnWidth = $selectClone2.css('width', 'auto').children('button').outerWidth();\r\n\r\n $selectClone.remove();\r\n $selectClone2.remove();\r\n\r\n // Set width to whatever's larger, button title or longest option\r\n this.$newElement.css('width', Math.max(ulWidth, btnWidth) + 'px');\r\n } else if (this.options.width === 'fit') {\r\n // Remove inline min-width so width can be changed from 'auto'\r\n this.$menu.css('min-width', '');\r\n this.$newElement.css('width', '').addClass('fit-width');\r\n } else if (this.options.width) {\r\n // Remove inline min-width so width can be changed from 'auto'\r\n this.$menu.css('min-width', '');\r\n this.$newElement.css('width', this.options.width);\r\n } else {\r\n // Remove inline min-width/width so width can be changed\r\n this.$menu.css('min-width', '');\r\n this.$newElement.css('width', '');\r\n }\r\n // Remove fit-width class if width is changed programmatically\r\n if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') {\r\n this.$newElement.removeClass('fit-width');\r\n }\r\n },\r\n\r\n selectPosition: function () {\r\n this.$bsContainer = $('
    ');\r\n\r\n var that = this,\r\n $container = $(this.options.container),\r\n pos,\r\n containerPos,\r\n actualHeight,\r\n getPlacement = function ($element) {\r\n that.$bsContainer.addClass($element.attr('class').replace(/form-control|fit-width/gi, '')).toggleClass('dropup', $element.hasClass('dropup'));\r\n pos = $element.offset();\r\n\r\n if (!$container.is('body')) {\r\n containerPos = $container.offset();\r\n containerPos.top += parseInt($container.css('borderTopWidth')) - $container.scrollTop();\r\n containerPos.left += parseInt($container.css('borderLeftWidth')) - $container.scrollLeft();\r\n } else {\r\n containerPos = { top: 0, left: 0 };\r\n }\r\n\r\n actualHeight = $element.hasClass('dropup') ? 0 : $element[0].offsetHeight;\r\n\r\n that.$bsContainer.css({\r\n 'top': pos.top - containerPos.top + actualHeight,\r\n 'left': pos.left - containerPos.left,\r\n 'width': $element[0].offsetWidth\r\n });\r\n };\r\n\r\n this.$button.on('click', function () {\r\n var $this = $(this);\r\n\r\n if (that.isDisabled()) {\r\n return;\r\n }\r\n\r\n getPlacement(that.$newElement);\r\n\r\n that.$bsContainer\r\n .appendTo(that.options.container)\r\n .toggleClass('open', !$this.hasClass('open'))\r\n .append(that.$menu);\r\n });\r\n\r\n\r\n this.$element.on('show.bs.select', function () {\r\n $(window).on('resize.bs.select scroll.bs.select', function () {\r\n getPlacement(that.$newElement);\r\n });\r\n });\r\n\r\n this.$element.on('hide.bs.select', function () {\r\n $(window).off('resize.bs.select scroll.bs.select');\r\n that.$menu.data('height', that.$menu.height());\r\n that.$bsContainer.detach();\r\n });\r\n },\r\n\r\n /**\r\n * @param {number} index - the index of the option that is being changed\r\n * @param {boolean} selected - true if the option is being selected, false if being deselected\r\n * @param {JQuery} $lis - the 'li' element that is being modified\r\n */\r\n setSelected: function (index, selected, $lis) {\r\n if (!$lis) {\r\n this.togglePlaceholder(); // check if setSelected is being called by changing the value of the select\r\n $lis = this.findLis().eq(this.liObj[index]);\r\n }\r\n\r\n $lis.toggleClass('selected', selected).find('a').attr('aria-selected', selected);\r\n },\r\n\r\n /**\r\n * @param {number} index - the index of the option that is being disabled\r\n * @param {boolean} disabled - true if the option is being disabled, false if being enabled\r\n * @param {JQuery} $lis - the 'li' element that is being modified\r\n */\r\n setDisabled: function (index, disabled, $lis) {\r\n if (!$lis) {\r\n $lis = this.findLis().eq(this.liObj[index]);\r\n }\r\n\r\n if (disabled) {\r\n $lis.addClass('disabled').children('a').attr('href', '#').attr('tabindex', -1).attr('aria-disabled', true);\r\n } else {\r\n $lis.removeClass('disabled').children('a').removeAttr('href').attr('tabindex', 0).attr('aria-disabled', false);\r\n }\r\n },\r\n\r\n isDisabled: function () {\r\n return this.$element[0].disabled;\r\n },\r\n\r\n checkDisabled: function () {\r\n var that = this;\r\n\r\n if (this.isDisabled()) {\r\n this.$newElement.addClass('disabled');\r\n this.$button.addClass('disabled').attr('tabindex', -1).attr('aria-disabled', true);\r\n } else {\r\n if (this.$button.hasClass('disabled')) {\r\n this.$newElement.removeClass('disabled');\r\n this.$button.removeClass('disabled').attr('aria-disabled', false);\r\n }\r\n\r\n if (this.$button.attr('tabindex') == -1 && !this.$element.data('tabindex')) {\r\n this.$button.removeAttr('tabindex');\r\n }\r\n }\r\n\r\n this.$button.click(function () {\r\n return !that.isDisabled();\r\n });\r\n },\r\n\r\n togglePlaceholder: function () {\r\n var value = this.$element.val();\r\n this.$button.toggleClass('bs-placeholder', value === null || value === '' || (value.constructor === Array && value.length === 0));\r\n },\r\n\r\n tabIndex: function () {\r\n if (this.$element.data('tabindex') !== this.$element.attr('tabindex') &&\r\n (this.$element.attr('tabindex') !== -98 && this.$element.attr('tabindex') !== '-98')) {\r\n this.$element.data('tabindex', this.$element.attr('tabindex'));\r\n this.$button.attr('tabindex', this.$element.data('tabindex'));\r\n }\r\n\r\n this.$element.attr('tabindex', -98);\r\n },\r\n\r\n clickListener: function () {\r\n var that = this,\r\n $document = $(document);\r\n\r\n $document.data('spaceSelect', false);\r\n\r\n this.$button.on('keyup', function (e) {\r\n if (/(32)/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) {\r\n e.preventDefault();\r\n $document.data('spaceSelect', false);\r\n }\r\n });\r\n\r\n this.$button.on('click', function () {\r\n that.setSize();\r\n });\r\n\r\n this.$element.on('shown.bs.select', function () {\r\n if (!that.options.liveSearch && !that.multiple) {\r\n that.$menuInner.find('.selected a').focus();\r\n } else if (!that.multiple) {\r\n var selectedIndex = that.liObj[that.$element[0].selectedIndex];\r\n\r\n if (typeof selectedIndex !== 'number' || that.options.size === false) return;\r\n\r\n // scroll to selected option\r\n var offset = that.$lis.eq(selectedIndex)[0].offsetTop - that.$menuInner[0].offsetTop;\r\n offset = offset - that.$menuInner[0].offsetHeight/2 + that.sizeInfo.liHeight/2;\r\n that.$menuInner[0].scrollTop = offset;\r\n }\r\n });\r\n\r\n this.$menuInner.on('click', 'li a', function (e) {\r\n var $this = $(this),\r\n clickedIndex = $this.parent().data('originalIndex'),\r\n prevValue = that.$element.val(),\r\n prevIndex = that.$element.prop('selectedIndex'),\r\n triggerChange = true;\r\n\r\n // Don't close on multi choice menu\r\n if (that.multiple && that.options.maxOptions !== 1) {\r\n e.stopPropagation();\r\n }\r\n\r\n e.preventDefault();\r\n\r\n //Don't run if we have been disabled\r\n if (!that.isDisabled() && !$this.parent().hasClass('disabled')) {\r\n var $options = that.$element.find('option'),\r\n $option = $options.eq(clickedIndex),\r\n state = $option.prop('selected'),\r\n $optgroup = $option.parent('optgroup'),\r\n maxOptions = that.options.maxOptions,\r\n maxOptionsGrp = $optgroup.data('maxOptions') || false;\r\n\r\n if (!that.multiple) { // Deselect all others if not multi select box\r\n $options.prop('selected', false);\r\n $option.prop('selected', true);\r\n that.$menuInner.find('.selected').removeClass('selected').find('a').attr('aria-selected', false);\r\n that.setSelected(clickedIndex, true);\r\n } else { // Toggle the one we have chosen if we are multi select.\r\n $option.prop('selected', !state);\r\n that.setSelected(clickedIndex, !state);\r\n $this.blur();\r\n\r\n if (maxOptions !== false || maxOptionsGrp !== false) {\r\n var maxReached = maxOptions < $options.filter(':selected').length,\r\n maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length;\r\n\r\n if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) {\r\n if (maxOptions && maxOptions == 1) {\r\n $options.prop('selected', false);\r\n $option.prop('selected', true);\r\n that.$menuInner.find('.selected').removeClass('selected');\r\n that.setSelected(clickedIndex, true);\r\n } else if (maxOptionsGrp && maxOptionsGrp == 1) {\r\n $optgroup.find('option:selected').prop('selected', false);\r\n $option.prop('selected', true);\r\n var optgroupID = $this.parent().data('optgroup');\r\n that.$menuInner.find('[data-optgroup=\"' + optgroupID + '\"]').removeClass('selected');\r\n that.setSelected(clickedIndex, true);\r\n } else {\r\n var maxOptionsText = typeof that.options.maxOptionsText === 'string' ? [that.options.maxOptionsText, that.options.maxOptionsText] : that.options.maxOptionsText,\r\n maxOptionsArr = typeof maxOptionsText === 'function' ? maxOptionsText(maxOptions, maxOptionsGrp) : maxOptionsText,\r\n maxTxt = maxOptionsArr[0].replace('{n}', maxOptions),\r\n maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp),\r\n $notify = $('
    ');\r\n // If {var} is set in array, replace it\r\n /** @deprecated */\r\n if (maxOptionsArr[2]) {\r\n maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]);\r\n maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]);\r\n }\r\n\r\n $option.prop('selected', false);\r\n\r\n that.$menu.append($notify);\r\n\r\n if (maxOptions && maxReached) {\r\n $notify.append($('
    ' + maxTxt + '
    '));\r\n triggerChange = false;\r\n that.$element.trigger('maxReached.bs.select');\r\n }\r\n\r\n if (maxOptionsGrp && maxReachedGrp) {\r\n $notify.append($('
    ' + maxTxtGrp + '
    '));\r\n triggerChange = false;\r\n that.$element.trigger('maxReachedGrp.bs.select');\r\n }\r\n\r\n setTimeout(function () {\r\n that.setSelected(clickedIndex, false);\r\n }, 10);\r\n\r\n $notify.delay(750).fadeOut(300, function () {\r\n $(this).remove();\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (!that.multiple || (that.multiple && that.options.maxOptions === 1)) {\r\n that.$button.focus();\r\n } else if (that.options.liveSearch) {\r\n that.$searchbox.focus();\r\n }\r\n\r\n // Trigger select 'change'\r\n if (triggerChange) {\r\n if ((prevValue != that.$element.val() && that.multiple) || (prevIndex != that.$element.prop('selectedIndex') && !that.multiple)) {\r\n // $option.prop('selected') is current option state (selected/unselected). state is previous option state.\r\n changed_arguments = [clickedIndex, $option.prop('selected'), state];\r\n that.$element\r\n .triggerNative('change');\r\n }\r\n }\r\n }\r\n });\r\n\r\n this.$menu.on('click', 'li.disabled a, .popover-title, .popover-title :not(.close)', function (e) {\r\n if (e.currentTarget == this) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (that.options.liveSearch && !$(e.target).hasClass('close')) {\r\n that.$searchbox.focus();\r\n } else {\r\n that.$button.focus();\r\n }\r\n }\r\n });\r\n\r\n this.$menuInner.on('click', '.divider, .dropdown-header', function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (that.options.liveSearch) {\r\n that.$searchbox.focus();\r\n } else {\r\n that.$button.focus();\r\n }\r\n });\r\n\r\n this.$menu.on('click', '.popover-title .close', function () {\r\n that.$button.click();\r\n });\r\n\r\n this.$searchbox.on('click', function (e) {\r\n e.stopPropagation();\r\n });\r\n\r\n this.$menu.on('click', '.actions-btn', function (e) {\r\n if (that.options.liveSearch) {\r\n that.$searchbox.focus();\r\n } else {\r\n that.$button.focus();\r\n }\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if ($(this).hasClass('bs-select-all')) {\r\n that.selectAll();\r\n } else {\r\n that.deselectAll();\r\n }\r\n });\r\n\r\n this.$element.change(function () {\r\n that.render(false);\r\n that.$element.trigger('changed.bs.select', changed_arguments);\r\n changed_arguments = null;\r\n });\r\n },\r\n\r\n liveSearchListener: function () {\r\n var that = this,\r\n $no_results = $('
  • ');\r\n\r\n this.$button.on('click.dropdown.data-api', function () {\r\n that.$menuInner.find('.active').removeClass('active');\r\n if (!!that.$searchbox.val()) {\r\n that.$searchbox.val('');\r\n that.$lis.not('.is-hidden').removeClass('hidden');\r\n if (!!$no_results.parent().length) $no_results.remove();\r\n }\r\n if (!that.multiple) that.$menuInner.find('.selected').addClass('active');\r\n setTimeout(function () {\r\n that.$searchbox.focus();\r\n }, 10);\r\n });\r\n\r\n this.$searchbox.on('click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api', function (e) {\r\n e.stopPropagation();\r\n });\r\n\r\n this.$searchbox.on('input propertychange', function () {\r\n that.$lis.not('.is-hidden').removeClass('hidden');\r\n that.$lis.filter('.active').removeClass('active');\r\n $no_results.remove();\r\n\r\n if (that.$searchbox.val()) {\r\n var $searchBase = that.$lis.not('.is-hidden, .divider, .dropdown-header'),\r\n $hideItems;\r\n if (that.options.liveSearchNormalize) {\r\n $hideItems = $searchBase.not(':a' + that._searchStyle() + '(\"' + normalizeToBase(that.$searchbox.val()) + '\")');\r\n } else {\r\n $hideItems = $searchBase.not(':' + that._searchStyle() + '(\"' + that.$searchbox.val() + '\")');\r\n }\r\n\r\n if ($hideItems.length === $searchBase.length) {\r\n $no_results.html(that.options.noneResultsText.replace('{0}', '\"' + htmlEscape(that.$searchbox.val()) + '\"'));\r\n that.$menuInner.append($no_results);\r\n that.$lis.addClass('hidden');\r\n } else {\r\n $hideItems.addClass('hidden');\r\n\r\n var $lisVisible = that.$lis.not('.hidden'),\r\n $foundDiv;\r\n\r\n // hide divider if first or last visible, or if followed by another divider\r\n $lisVisible.each(function (index) {\r\n var $this = $(this);\r\n\r\n if ($this.hasClass('divider')) {\r\n if ($foundDiv === undefined) {\r\n $this.addClass('hidden');\r\n } else {\r\n if ($foundDiv) $foundDiv.addClass('hidden');\r\n $foundDiv = $this;\r\n }\r\n } else if ($this.hasClass('dropdown-header') && $lisVisible.eq(index + 1).data('optgroup') !== $this.data('optgroup')) {\r\n $this.addClass('hidden');\r\n } else {\r\n $foundDiv = null;\r\n }\r\n });\r\n if ($foundDiv) $foundDiv.addClass('hidden');\r\n\r\n $searchBase.not('.hidden').first().addClass('active');\r\n that.$menuInner.scrollTop(0);\r\n }\r\n }\r\n });\r\n },\r\n\r\n _searchStyle: function () {\r\n var styles = {\r\n begins: 'ibegins',\r\n startsWith: 'ibegins'\r\n };\r\n\r\n return styles[this.options.liveSearchStyle] || 'icontains';\r\n },\r\n\r\n val: function (value) {\r\n if (typeof value !== 'undefined') {\r\n this.$element.val(value);\r\n this.render();\r\n\r\n return this.$element;\r\n } else {\r\n return this.$element.val();\r\n }\r\n },\r\n\r\n changeAll: function (status) {\r\n if (!this.multiple) return;\r\n if (typeof status === 'undefined') status = true;\r\n\r\n this.findLis();\r\n\r\n var $options = this.$element.find('option'),\r\n $lisVisible = this.$lis.not('.divider, .dropdown-header, .disabled, .hidden'),\r\n lisVisLen = $lisVisible.length,\r\n selectedOptions = [];\r\n\r\n if (status) {\r\n if ($lisVisible.filter('.selected').length === $lisVisible.length) return;\r\n } else {\r\n if ($lisVisible.filter('.selected').length === 0) return;\r\n }\r\n\r\n $lisVisible.toggleClass('selected', status);\r\n\r\n for (var i = 0; i < lisVisLen; i++) {\r\n var origIndex = $lisVisible[i].getAttribute('data-original-index');\r\n selectedOptions[selectedOptions.length] = $options.eq(origIndex)[0];\r\n }\r\n\r\n $(selectedOptions).prop('selected', status);\r\n\r\n this.render(false);\r\n\r\n this.togglePlaceholder();\r\n\r\n this.$element\r\n .triggerNative('change');\r\n },\r\n\r\n selectAll: function () {\r\n return this.changeAll(true);\r\n },\r\n\r\n deselectAll: function () {\r\n return this.changeAll(false);\r\n },\r\n\r\n toggle: function (e) {\r\n e = e || window.event;\r\n\r\n if (e) e.stopPropagation();\r\n\r\n this.$button.trigger('click');\r\n },\r\n\r\n keydown: function (e) {\r\n var $this = $(this),\r\n $parent = $this.is('input') ? $this.parent().parent() : $this.parent(),\r\n $items,\r\n that = $parent.data('this'),\r\n index,\r\n prevIndex,\r\n isActive,\r\n selector = ':not(.disabled, .hidden, .dropdown-header, .divider)',\r\n keyCodeMap = {\r\n 32: ' ',\r\n 48: '0',\r\n 49: '1',\r\n 50: '2',\r\n 51: '3',\r\n 52: '4',\r\n 53: '5',\r\n 54: '6',\r\n 55: '7',\r\n 56: '8',\r\n 57: '9',\r\n 59: ';',\r\n 65: 'a',\r\n 66: 'b',\r\n 67: 'c',\r\n 68: 'd',\r\n 69: 'e',\r\n 70: 'f',\r\n 71: 'g',\r\n 72: 'h',\r\n 73: 'i',\r\n 74: 'j',\r\n 75: 'k',\r\n 76: 'l',\r\n 77: 'm',\r\n 78: 'n',\r\n 79: 'o',\r\n 80: 'p',\r\n 81: 'q',\r\n 82: 'r',\r\n 83: 's',\r\n 84: 't',\r\n 85: 'u',\r\n 86: 'v',\r\n 87: 'w',\r\n 88: 'x',\r\n 89: 'y',\r\n 90: 'z',\r\n 96: '0',\r\n 97: '1',\r\n 98: '2',\r\n 99: '3',\r\n 100: '4',\r\n 101: '5',\r\n 102: '6',\r\n 103: '7',\r\n 104: '8',\r\n 105: '9'\r\n };\r\n\r\n\r\n isActive = that.$newElement.hasClass('open');\r\n\r\n if (!isActive && (e.keyCode >= 48 && e.keyCode <= 57 || e.keyCode >= 96 && e.keyCode <= 105 || e.keyCode >= 65 && e.keyCode <= 90)) {\r\n if (!that.options.container) {\r\n that.setSize();\r\n that.$menu.parent().addClass('open');\r\n isActive = true;\r\n } else {\r\n that.$button.trigger('click');\r\n }\r\n that.$searchbox.focus();\r\n return;\r\n }\r\n\r\n if (that.options.liveSearch) {\r\n if (/(^9$|27)/.test(e.keyCode.toString(10)) && isActive) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n that.$menuInner.click();\r\n that.$button.focus();\r\n }\r\n }\r\n\r\n if (/(38|40)/.test(e.keyCode.toString(10))) {\r\n $items = that.$lis.filter(selector);\r\n if (!$items.length) return;\r\n\r\n if (!that.options.liveSearch) {\r\n index = $items.index($items.find('a').filter(':focus').parent());\r\n\t } else {\r\n index = $items.index($items.filter('.active'));\r\n }\r\n\r\n prevIndex = that.$menuInner.data('prevIndex');\r\n\r\n if (e.keyCode == 38) {\r\n if ((that.options.liveSearch || index == prevIndex) && index != -1) index--;\r\n if (index < 0) index += $items.length;\r\n } else if (e.keyCode == 40) {\r\n if (that.options.liveSearch || index == prevIndex) index++;\r\n index = index % $items.length;\r\n }\r\n\r\n that.$menuInner.data('prevIndex', index);\r\n\r\n if (!that.options.liveSearch) {\r\n $items.eq(index).children('a').focus();\r\n } else {\r\n e.preventDefault();\r\n if (!$this.hasClass('dropdown-toggle')) {\r\n $items.removeClass('active').eq(index).addClass('active').children('a').focus();\r\n $this.focus();\r\n }\r\n }\r\n\r\n } else if (!$this.is('input')) {\r\n var keyIndex = [],\r\n count,\r\n prevKey;\r\n\r\n $items = that.$lis.filter(selector);\r\n $items.each(function (i) {\r\n if ($.trim($(this).children('a').text().toLowerCase()).substring(0, 1) == keyCodeMap[e.keyCode]) {\r\n keyIndex.push(i);\r\n }\r\n });\r\n\r\n count = $(document).data('keycount');\r\n count++;\r\n $(document).data('keycount', count);\r\n\r\n prevKey = $.trim($(':focus').text().toLowerCase()).substring(0, 1);\r\n\r\n if (prevKey != keyCodeMap[e.keyCode]) {\r\n count = 1;\r\n $(document).data('keycount', count);\r\n } else if (count >= keyIndex.length) {\r\n $(document).data('keycount', 0);\r\n if (count > keyIndex.length) count = 1;\r\n }\r\n\r\n $items.eq(keyIndex[count - 1]).children('a').focus();\r\n }\r\n\r\n // Select focused option if \"Enter\", \"Spacebar\" or \"Tab\" (when selectOnTab is true) are pressed inside the menu.\r\n if ((/(13|32)/.test(e.keyCode.toString(10)) || (/(^9$)/.test(e.keyCode.toString(10)) && that.options.selectOnTab)) && isActive) {\r\n if (!/(32)/.test(e.keyCode.toString(10))) e.preventDefault();\r\n if (!that.options.liveSearch) {\r\n var elem = $(':focus');\r\n elem.click();\r\n // Bring back focus for multiselects\r\n elem.focus();\r\n // Prevent screen from scrolling if the user hit the spacebar\r\n e.preventDefault();\r\n // Fixes spacebar selection of dropdown items in FF & IE\r\n $(document).data('spaceSelect', true);\r\n } else if (!/(32)/.test(e.keyCode.toString(10))) {\r\n that.$menuInner.find('.active a').click();\r\n $this.focus();\r\n }\r\n $(document).data('keycount', 0);\r\n }\r\n\r\n if ((/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && (that.multiple || that.options.liveSearch)) || (/(27)/.test(e.keyCode.toString(10)) && !isActive)) {\r\n that.$menu.parent().removeClass('open');\r\n if (that.options.container) that.$newElement.removeClass('open');\r\n that.$button.focus();\r\n }\r\n },\r\n\r\n mobile: function () {\r\n this.$element.addClass('mobile-device');\r\n },\r\n\r\n refresh: function () {\r\n this.$lis = null;\r\n this.liObj = {};\r\n this.reloadLi();\r\n this.render();\r\n this.checkDisabled();\r\n this.liHeight(true);\r\n this.setStyle();\r\n this.setWidth();\r\n if (this.$lis) this.$searchbox.trigger('propertychange');\r\n\r\n this.$element.trigger('refreshed.bs.select');\r\n },\r\n\r\n hide: function () {\r\n this.$newElement.hide();\r\n },\r\n\r\n show: function () {\r\n this.$newElement.show();\r\n },\r\n\r\n remove: function () {\r\n this.$newElement.remove();\r\n this.$element.remove();\r\n },\r\n\r\n destroy: function () {\r\n this.$newElement.before(this.$element).remove();\r\n\r\n if (this.$bsContainer) {\r\n this.$bsContainer.remove();\r\n } else {\r\n this.$menu.remove();\r\n }\r\n\r\n this.$element\r\n .off('.bs.select')\r\n .removeData('selectpicker')\r\n .removeClass('bs-select-hidden selectpicker');\r\n }\r\n };\r\n\r\n // SELECTPICKER PLUGIN DEFINITION\r\n // ==============================\r\n function Plugin(option) {\r\n // get the args of the outer function..\r\n var args = arguments;\r\n // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them\r\n // to get lost/corrupted in android 2.3 and IE9 #715 #775\r\n var _option = option;\r\n\r\n [].shift.apply(args);\r\n\r\n var value;\r\n var chain = this.each(function () {\r\n var $this = $(this);\r\n if ($this.is('select')) {\r\n var data = $this.data('selectpicker'),\r\n options = typeof _option == 'object' && _option;\r\n\r\n if (!data) {\r\n var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, $this.data(), options);\r\n config.template = $.extend({}, Selectpicker.DEFAULTS.template, ($.fn.selectpicker.defaults ? $.fn.selectpicker.defaults.template : {}), $this.data().template, options.template);\r\n $this.data('selectpicker', (data = new Selectpicker(this, config)));\r\n } else if (options) {\r\n for (var i in options) {\r\n if (options.hasOwnProperty(i)) {\r\n data.options[i] = options[i];\r\n }\r\n }\r\n }\r\n\r\n if (typeof _option == 'string') {\r\n if (data[_option] instanceof Function) {\r\n value = data[_option].apply(data, args);\r\n } else {\r\n value = data.options[_option];\r\n }\r\n }\r\n }\r\n });\r\n\r\n if (typeof value !== 'undefined') {\r\n //noinspection JSUnusedAssignment\r\n return value;\r\n } else {\r\n return chain;\r\n }\r\n }\r\n\r\n var old = $.fn.selectpicker;\r\n $.fn.selectpicker = Plugin;\r\n $.fn.selectpicker.Constructor = Selectpicker;\r\n\r\n // SELECTPICKER NO CONFLICT\r\n // ========================\r\n $.fn.selectpicker.noConflict = function () {\r\n $.fn.selectpicker = old;\r\n return this;\r\n };\r\n\r\n $(document)\r\n .data('keycount', 0)\r\n .on('keydown.bs.select', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=\"listbox\"], .bs-searchbox input', Selectpicker.prototype.keydown)\r\n .on('focusin.modal', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=\"listbox\"], .bs-searchbox input', function (e) {\r\n e.stopPropagation();\r\n });\r\n\r\n // SELECTPICKER DATA-API\r\n // =====================\r\n $(window).on('load.bs.select.data-api', function () {\r\n $('.selectpicker').each(function () {\r\n var $selectpicker = $(this);\r\n Plugin.call($selectpicker, $selectpicker.data());\r\n })\r\n });\r\n})(jQuery);\r\n\r\n\r\n}));\r\n\r\n/* ========================================================================\r\n * Bootstrap: dropdown.js v3.3.6\r\n * http://getbootstrap.com/javascript/#dropdowns\r\n * ========================================================================\r\n * Copyright 2011-2015 Twitter, Inc.\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\r\n * ======================================================================== */\r\n\r\n+function ($) {\r\n 'use strict';\r\n\r\n // DROPDOWN CLASS DEFINITION\r\n // =========================\r\n\r\n var backdrop = '.dropdown-backdrop'\r\n var toggle = '[data-toggle=\"dropdown\"]'\r\n var Dropdown = function (element) {\r\n $(element).on('click.bs.dropdown', this.toggle)\r\n }\r\n\r\n Dropdown.VERSION = '3.3.6'\r\n\r\n function getParent($this) {\r\n var selector = $this.attr('data-target')\r\n\r\n if (!selector) {\r\n selector = $this.attr('href')\r\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\r\n }\r\n\r\n var $parent = selector && $(selector)\r\n\r\n return $parent && $parent.length ? $parent : $this.parent()\r\n }\r\n\r\n function clearMenus(e) {\r\n if (e && e.which === 3) return\r\n $(backdrop).remove()\r\n $(toggle).each(function () {\r\n var $this = $(this)\r\n var $parent = getParent($this)\r\n var relatedTarget = { relatedTarget: this }\r\n\r\n if (!$parent.hasClass('open')) return\r\n\r\n if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\r\n\r\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\r\n\r\n if (e.isDefaultPrevented()) return\r\n\r\n $this.attr('aria-expanded', 'false')\r\n $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\r\n })\r\n }\r\n\r\n Dropdown.prototype.toggle = function (e) {\r\n var $this = $(this)\r\n\r\n if ($this.is('.disabled, :disabled')) return\r\n\r\n var $parent = getParent($this)\r\n var isActive = $parent.hasClass('open')\r\n\r\n clearMenus()\r\n\r\n if (!isActive) {\r\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\r\n // if mobile we use a backdrop because click events don't delegate\r\n $(document.createElement('div'))\r\n .addClass('dropdown-backdrop')\r\n .insertAfter($(this))\r\n .on('click', clearMenus)\r\n }\r\n\r\n var relatedTarget = { relatedTarget: this }\r\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\r\n\r\n if (e.isDefaultPrevented()) return\r\n\r\n $this\r\n .trigger('focus')\r\n .attr('aria-expanded', 'true')\r\n\r\n $parent\r\n .toggleClass('open')\r\n .trigger($.Event('shown.bs.dropdown', relatedTarget))\r\n }\r\n\r\n return false\r\n }\r\n\r\n Dropdown.prototype.keydown = function (e) {\r\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\r\n\r\n var $this = $(this)\r\n\r\n e.preventDefault()\r\n e.stopPropagation()\r\n\r\n if ($this.is('.disabled, :disabled')) return\r\n\r\n var $parent = getParent($this)\r\n var isActive = $parent.hasClass('open')\r\n\r\n if (!isActive && e.which != 27 || isActive && e.which == 27) {\r\n if (e.which == 27) $parent.find(toggle).trigger('focus')\r\n return $this.trigger('click')\r\n }\r\n\r\n var desc = ' li:not(.disabled):visible a'\r\n var $items = $parent.find('.dropdown-menu' + desc)\r\n\r\n if (!$items.length) return\r\n\r\n var index = $items.index(e.target)\r\n\r\n if (e.which == 38 && index > 0) index-- // up\r\n if (e.which == 40 && index < $items.length - 1) index++ // down\r\n if (!~index) index = 0\r\n\r\n $items.eq(index).trigger('focus')\r\n }\r\n\r\n\r\n // DROPDOWN PLUGIN DEFINITION\r\n // ==========================\r\n\r\n function Plugin(option) {\r\n return this.each(function () {\r\n var $this = $(this)\r\n var data = $this.data('bs.dropdown')\r\n\r\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\r\n if (typeof option == 'string') data[option].call($this)\r\n })\r\n }\r\n\r\n var old = $.fn.dropdown\r\n\r\n $.fn.dropdown = Plugin\r\n $.fn.dropdown.Constructor = Dropdown\r\n\r\n\r\n // DROPDOWN NO CONFLICT\r\n // ====================\r\n\r\n $.fn.dropdown.noConflict = function () {\r\n $.fn.dropdown = old\r\n return this\r\n }\r\n\r\n\r\n // APPLY TO STANDARD DROPDOWN ELEMENTS\r\n // ===================================\r\n\r\n $(document)\r\n .on('click.bs.dropdown.data-api', clearMenus)\r\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\r\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\r\n .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\r\n .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\r\n\r\n}(jQuery);","/*!\r\n * clipboard.js v1.6.0\r\n * https://zenorocha.github.io/clipboard.js\r\n *\r\n * Licensed MIT © Zeno Rocha\r\n */\r\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Clipboard = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o 0 && arguments[0] !== undefined ? arguments[0] : {};\r\n\r\n this.action = options.action;\r\n this.emitter = options.emitter;\r\n this.target = options.target;\r\n this.text = options.text;\r\n this.trigger = options.trigger;\r\n\r\n this.selectedText = '';\r\n }\r\n }, {\r\n key: 'initSelection',\r\n value: function initSelection() {\r\n if (this.text) {\r\n this.selectFake();\r\n } else if (this.target) {\r\n this.selectTarget();\r\n }\r\n }\r\n }, {\r\n key: 'selectFake',\r\n value: function selectFake() {\r\n var _this = this;\r\n\r\n var isRTL = document.documentElement.getAttribute('dir') == 'rtl';\r\n\r\n this.removeFake();\r\n\r\n this.fakeHandlerCallback = function () {\r\n return _this.removeFake();\r\n };\r\n this.fakeHandler = document.body.addEventListener('click', this.fakeHandlerCallback) || true;\r\n\r\n this.fakeElem = document.createElement('textarea');\r\n // Prevent zooming on iOS\r\n this.fakeElem.style.fontSize = '12pt';\r\n // Reset box model\r\n this.fakeElem.style.border = '0';\r\n this.fakeElem.style.padding = '0';\r\n this.fakeElem.style.margin = '0';\r\n // Move element out of screen horizontally\r\n this.fakeElem.style.position = 'absolute';\r\n this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px';\r\n // Move element to the same position vertically\r\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\r\n this.fakeElem.style.top = yPosition + 'px';\r\n\r\n this.fakeElem.setAttribute('readonly', '');\r\n this.fakeElem.value = this.text;\r\n\r\n document.body.appendChild(this.fakeElem);\r\n\r\n this.selectedText = (0, _select2.default)(this.fakeElem);\r\n this.copyText();\r\n }\r\n }, {\r\n key: 'removeFake',\r\n value: function removeFake() {\r\n if (this.fakeHandler) {\r\n document.body.removeEventListener('click', this.fakeHandlerCallback);\r\n this.fakeHandler = null;\r\n this.fakeHandlerCallback = null;\r\n }\r\n\r\n if (this.fakeElem) {\r\n document.body.removeChild(this.fakeElem);\r\n this.fakeElem = null;\r\n }\r\n }\r\n }, {\r\n key: 'selectTarget',\r\n value: function selectTarget() {\r\n this.selectedText = (0, _select2.default)(this.target);\r\n this.copyText();\r\n }\r\n }, {\r\n key: 'copyText',\r\n value: function copyText() {\r\n var succeeded = void 0;\r\n\r\n try {\r\n succeeded = document.execCommand(this.action);\r\n } catch (err) {\r\n succeeded = false;\r\n }\r\n\r\n this.handleResult(succeeded);\r\n }\r\n }, {\r\n key: 'handleResult',\r\n value: function handleResult(succeeded) {\r\n this.emitter.emit(succeeded ? 'success' : 'error', {\r\n action: this.action,\r\n text: this.selectedText,\r\n trigger: this.trigger,\r\n clearSelection: this.clearSelection.bind(this)\r\n });\r\n }\r\n }, {\r\n key: 'clearSelection',\r\n value: function clearSelection() {\r\n if (this.target) {\r\n this.target.blur();\r\n }\r\n\r\n window.getSelection().removeAllRanges();\r\n }\r\n }, {\r\n key: 'destroy',\r\n value: function destroy() {\r\n this.removeFake();\r\n }\r\n }, {\r\n key: 'action',\r\n set: function set() {\r\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy';\r\n\r\n this._action = action;\r\n\r\n if (this._action !== 'copy' && this._action !== 'cut') {\r\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\r\n }\r\n },\r\n get: function get() {\r\n return this._action;\r\n }\r\n }, {\r\n key: 'target',\r\n set: function set(target) {\r\n if (target !== undefined) {\r\n if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) {\r\n if (this.action === 'copy' && target.hasAttribute('disabled')) {\r\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\r\n }\r\n\r\n if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\r\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\r\n }\r\n\r\n this._target = target;\r\n } else {\r\n throw new Error('Invalid \"target\" value, use a valid Element');\r\n }\r\n }\r\n },\r\n get: function get() {\r\n return this._target;\r\n }\r\n }]);\r\n\r\n return ClipboardAction;\r\n }();\r\n\r\n module.exports = ClipboardAction;\r\n});\r\n\r\n},{\"select\":5}],8:[function(require,module,exports){\r\n(function (global, factory) {\r\n if (typeof define === \"function\" && define.amd) {\r\n define(['module', './clipboard-action', 'tiny-emitter', 'good-listener'], factory);\r\n } else if (typeof exports !== \"undefined\") {\r\n factory(module, require('./clipboard-action'), require('tiny-emitter'), require('good-listener'));\r\n } else {\r\n var mod = {\r\n exports: {}\r\n };\r\n factory(mod, global.clipboardAction, global.tinyEmitter, global.goodListener);\r\n global.clipboard = mod.exports;\r\n }\r\n})(this, function (module, _clipboardAction, _tinyEmitter, _goodListener) {\r\n 'use strict';\r\n\r\n var _clipboardAction2 = _interopRequireDefault(_clipboardAction);\r\n\r\n var _tinyEmitter2 = _interopRequireDefault(_tinyEmitter);\r\n\r\n var _goodListener2 = _interopRequireDefault(_goodListener);\r\n\r\n function _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n default: obj\r\n };\r\n }\r\n\r\n function _classCallCheck(instance, Constructor) {\r\n if (!(instance instanceof Constructor)) {\r\n throw new TypeError(\"Cannot call a class as a function\");\r\n }\r\n }\r\n\r\n var _createClass = function () {\r\n function defineProperties(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) descriptor.writable = true;\r\n Object.defineProperty(target, descriptor.key, descriptor);\r\n }\r\n }\r\n\r\n return function (Constructor, protoProps, staticProps) {\r\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\r\n if (staticProps) defineProperties(Constructor, staticProps);\r\n return Constructor;\r\n };\r\n }();\r\n\r\n function _possibleConstructorReturn(self, call) {\r\n if (!self) {\r\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\r\n }\r\n\r\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\r\n }\r\n\r\n function _inherits(subClass, superClass) {\r\n if (typeof superClass !== \"function\" && superClass !== null) {\r\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\r\n }\r\n\r\n subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n constructor: {\r\n value: subClass,\r\n enumerable: false,\r\n writable: true,\r\n configurable: true\r\n }\r\n });\r\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\r\n }\r\n\r\n var Clipboard = function (_Emitter) {\r\n _inherits(Clipboard, _Emitter);\r\n\r\n /**\r\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\r\n * @param {Object} options\r\n */\r\n function Clipboard(trigger, options) {\r\n _classCallCheck(this, Clipboard);\r\n\r\n var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this));\r\n\r\n _this.resolveOptions(options);\r\n _this.listenClick(trigger);\r\n return _this;\r\n }\r\n\r\n /**\r\n * Defines if attributes would be resolved using internal setter functions\r\n * or custom functions that were passed in the constructor.\r\n * @param {Object} options\r\n */\r\n\r\n\r\n _createClass(Clipboard, [{\r\n key: 'resolveOptions',\r\n value: function resolveOptions() {\r\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\r\n\r\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\r\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\r\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\r\n }\r\n }, {\r\n key: 'listenClick',\r\n value: function listenClick(trigger) {\r\n var _this2 = this;\r\n\r\n this.listener = (0, _goodListener2.default)(trigger, 'click', function (e) {\r\n return _this2.onClick(e);\r\n });\r\n }\r\n }, {\r\n key: 'onClick',\r\n value: function onClick(e) {\r\n var trigger = e.delegateTarget || e.currentTarget;\r\n\r\n if (this.clipboardAction) {\r\n this.clipboardAction = null;\r\n }\r\n\r\n this.clipboardAction = new _clipboardAction2.default({\r\n action: this.action(trigger),\r\n target: this.target(trigger),\r\n text: this.text(trigger),\r\n trigger: trigger,\r\n emitter: this\r\n });\r\n }\r\n }, {\r\n key: 'defaultAction',\r\n value: function defaultAction(trigger) {\r\n return getAttributeValue('action', trigger);\r\n }\r\n }, {\r\n key: 'defaultTarget',\r\n value: function defaultTarget(trigger) {\r\n var selector = getAttributeValue('target', trigger);\r\n\r\n if (selector) {\r\n return document.querySelector(selector);\r\n }\r\n }\r\n }, {\r\n key: 'defaultText',\r\n value: function defaultText(trigger) {\r\n return getAttributeValue('text', trigger);\r\n }\r\n }, {\r\n key: 'destroy',\r\n value: function destroy() {\r\n this.listener.destroy();\r\n\r\n if (this.clipboardAction) {\r\n this.clipboardAction.destroy();\r\n this.clipboardAction = null;\r\n }\r\n }\r\n }], [{\r\n key: 'isSupported',\r\n value: function isSupported() {\r\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\r\n\r\n var actions = typeof action === 'string' ? [action] : action;\r\n var support = !!document.queryCommandSupported;\r\n\r\n actions.forEach(function (action) {\r\n support = support && !!document.queryCommandSupported(action);\r\n });\r\n\r\n return support;\r\n }\r\n }]);\r\n\r\n return Clipboard;\r\n }(_tinyEmitter2.default);\r\n\r\n /**\r\n * Helper function to retrieve attribute value.\r\n * @param {String} suffix\r\n * @param {Element} element\r\n */\r\n function getAttributeValue(suffix, element) {\r\n var attribute = 'data-clipboard-' + suffix;\r\n\r\n if (!element.hasAttribute(attribute)) {\r\n return;\r\n }\r\n\r\n return element.getAttribute(attribute);\r\n }\r\n\r\n module.exports = Clipboard;\r\n});\r\n\r\n},{\"./clipboard-action\":7,\"good-listener\":4,\"tiny-emitter\":6}]},{},[8])(8)\r\n});","\r\n/*\r\n *\r\n * More info at [www.dropzonejs.com](http://www.dropzonejs.com)\r\n *\r\n * Copyright (c) 2012, Matias Meno\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"Software\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in\r\n * all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n *\r\n */\r\n\r\n(function() {\r\n var Dropzone, Emitter, camelize, contentLoaded, detectVerticalSquash, drawImageIOSFix, noop, without,\r\n __slice = [].slice,\r\n __hasProp = {}.hasOwnProperty,\r\n __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };\r\n\r\n noop = function() {};\r\n\r\n Emitter = (function() {\r\n function Emitter() {}\r\n\r\n Emitter.prototype.addEventListener = Emitter.prototype.on;\r\n\r\n Emitter.prototype.on = function(event, fn) {\r\n this._callbacks = this._callbacks || {};\r\n if (!this._callbacks[event]) {\r\n this._callbacks[event] = [];\r\n }\r\n this._callbacks[event].push(fn);\r\n return this;\r\n };\r\n\r\n Emitter.prototype.emit = function() {\r\n var args, callback, callbacks, event, _i, _len;\r\n event = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\r\n this._callbacks = this._callbacks || {};\r\n callbacks = this._callbacks[event];\r\n if (callbacks) {\r\n for (_i = 0, _len = callbacks.length; _i < _len; _i++) {\r\n callback = callbacks[_i];\r\n callback.apply(this, args);\r\n }\r\n }\r\n return this;\r\n };\r\n\r\n Emitter.prototype.removeListener = Emitter.prototype.off;\r\n\r\n Emitter.prototype.removeAllListeners = Emitter.prototype.off;\r\n\r\n Emitter.prototype.removeEventListener = Emitter.prototype.off;\r\n\r\n Emitter.prototype.off = function(event, fn) {\r\n var callback, callbacks, i, _i, _len;\r\n if (!this._callbacks || arguments.length === 0) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n callbacks = this._callbacks[event];\r\n if (!callbacks) {\r\n return this;\r\n }\r\n if (arguments.length === 1) {\r\n delete this._callbacks[event];\r\n return this;\r\n }\r\n for (i = _i = 0, _len = callbacks.length; _i < _len; i = ++_i) {\r\n callback = callbacks[i];\r\n if (callback === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n return this;\r\n };\r\n\r\n return Emitter;\r\n\r\n })();\r\n\r\n Dropzone = (function(_super) {\r\n var extend, resolveOption;\r\n\r\n __extends(Dropzone, _super);\r\n\r\n Dropzone.prototype.Emitter = Emitter;\r\n\r\n\r\n /*\r\n This is a list of all available events you can register on a dropzone object.\r\n\r\n You can register an event handler like this:\r\n\r\n dropzone.on(\"dragEnter\", function() { });\r\n */\r\n\r\n Dropzone.prototype.events = [\"drop\", \"dragstart\", \"dragend\", \"dragenter\", \"dragover\", \"dragleave\", \"addedfile\", \"addedfiles\", \"removedfile\", \"thumbnail\", \"error\", \"errormultiple\", \"processing\", \"processingmultiple\", \"uploadprogress\", \"totaluploadprogress\", \"sending\", \"sendingmultiple\", \"success\", \"successmultiple\", \"canceled\", \"canceledmultiple\", \"complete\", \"completemultiple\", \"reset\", \"maxfilesexceeded\", \"maxfilesreached\", \"queuecomplete\"];\r\n\r\n Dropzone.prototype.defaultOptions = {\r\n url: null,\r\n method: \"post\",\r\n withCredentials: false,\r\n parallelUploads: 2,\r\n uploadMultiple: false,\r\n maxFilesize: 256,\r\n paramName: \"file\",\r\n createImageThumbnails: true,\r\n maxThumbnailFilesize: 10,\r\n thumbnailWidth: 120,\r\n thumbnailHeight: 120,\r\n filesizeBase: 1000,\r\n maxFiles: null,\r\n params: {},\r\n clickable: true,\r\n ignoreHiddenFiles: true,\r\n acceptedFiles: null,\r\n acceptedMimeTypes: null,\r\n autoProcessQueue: true,\r\n autoQueue: true,\r\n addRemoveLinks: false,\r\n previewsContainer: null,\r\n hiddenInputContainer: \"body\",\r\n capture: null,\r\n renameFilename: null,\r\n dictDefaultMessage: \"Drop files here to upload\",\r\n dictFallbackMessage: \"Your browser does not support drag'n'drop file uploads.\",\r\n dictFallbackText: \"Please use the fallback form below to upload your files like in the olden days.\",\r\n dictFileTooBig: \"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.\",\r\n dictInvalidFileType: \"You can't upload files of this type.\",\r\n dictResponseError: \"Server responded with {{statusCode}} code.\",\r\n dictCancelUpload: \"Cancel upload\",\r\n dictCancelUploadConfirmation: \"Are you sure you want to cancel this upload?\",\r\n dictRemoveFile: \"Remove file\",\r\n dictRemoveFileConfirmation: null,\r\n dictMaxFilesExceeded: \"You can not upload any more files.\",\r\n accept: function(file, done) {\r\n return done();\r\n },\r\n init: function() {\r\n return noop;\r\n },\r\n forceFallback: false,\r\n fallback: function() {\r\n var child, messageElement, span, _i, _len, _ref;\r\n this.element.className = \"\" + this.element.className + \" dz-browser-not-supported\";\r\n _ref = this.element.getElementsByTagName(\"div\");\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n child = _ref[_i];\r\n if (/(^| )dz-message($| )/.test(child.className)) {\r\n messageElement = child;\r\n child.className = \"dz-message\";\r\n continue;\r\n }\r\n }\r\n if (!messageElement) {\r\n messageElement = Dropzone.createElement(\"
    \");\r\n this.element.appendChild(messageElement);\r\n }\r\n span = messageElement.getElementsByTagName(\"span\")[0];\r\n if (span) {\r\n if (span.textContent != null) {\r\n span.textContent = this.options.dictFallbackMessage;\r\n } else if (span.innerText != null) {\r\n span.innerText = this.options.dictFallbackMessage;\r\n }\r\n }\r\n return this.element.appendChild(this.getFallbackForm());\r\n },\r\n resize: function(file) {\r\n var info, srcRatio, trgRatio;\r\n info = {\r\n srcX: 0,\r\n srcY: 0,\r\n srcWidth: file.width,\r\n srcHeight: file.height\r\n };\r\n srcRatio = file.width / file.height;\r\n info.optWidth = this.options.thumbnailWidth;\r\n info.optHeight = this.options.thumbnailHeight;\r\n if ((info.optWidth == null) && (info.optHeight == null)) {\r\n info.optWidth = info.srcWidth;\r\n info.optHeight = info.srcHeight;\r\n } else if (info.optWidth == null) {\r\n info.optWidth = srcRatio * info.optHeight;\r\n } else if (info.optHeight == null) {\r\n info.optHeight = (1 / srcRatio) * info.optWidth;\r\n }\r\n trgRatio = info.optWidth / info.optHeight;\r\n if (file.height < info.optHeight || file.width < info.optWidth) {\r\n info.trgHeight = info.srcHeight;\r\n info.trgWidth = info.srcWidth;\r\n } else {\r\n if (srcRatio > trgRatio) {\r\n info.srcHeight = file.height;\r\n info.srcWidth = info.srcHeight * trgRatio;\r\n } else {\r\n info.srcWidth = file.width;\r\n info.srcHeight = info.srcWidth / trgRatio;\r\n }\r\n }\r\n info.srcX = (file.width - info.srcWidth) / 2;\r\n info.srcY = (file.height - info.srcHeight) / 2;\r\n return info;\r\n },\r\n\r\n /*\r\n Those functions register themselves to the events on init and handle all\r\n the user interface specific stuff. Overwriting them won't break the upload\r\n but can break the way it's displayed.\r\n You can overwrite them if you don't like the default behavior. If you just\r\n want to add an additional event handler, register it on the dropzone object\r\n and don't overwrite those options.\r\n */\r\n drop: function(e) {\r\n return this.element.classList.remove(\"dz-drag-hover\");\r\n },\r\n dragstart: noop,\r\n dragend: function(e) {\r\n return this.element.classList.remove(\"dz-drag-hover\");\r\n },\r\n dragenter: function(e) {\r\n return this.element.classList.add(\"dz-drag-hover\");\r\n },\r\n dragover: function(e) {\r\n return this.element.classList.add(\"dz-drag-hover\");\r\n },\r\n dragleave: function(e) {\r\n return this.element.classList.remove(\"dz-drag-hover\");\r\n },\r\n paste: noop,\r\n reset: function() {\r\n return this.element.classList.remove(\"dz-started\");\r\n },\r\n addedfile: function(file) {\r\n var node, removeFileEvent, removeLink, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _results;\r\n if (this.element === this.previewsContainer) {\r\n this.element.classList.add(\"dz-started\");\r\n }\r\n if (this.previewsContainer) {\r\n file.previewElement = Dropzone.createElement(this.options.previewTemplate.trim());\r\n file.previewTemplate = file.previewElement;\r\n this.previewsContainer.appendChild(file.previewElement);\r\n _ref = file.previewElement.querySelectorAll(\"[data-dz-name]\");\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n node = _ref[_i];\r\n /*node.textContent = this._renameFilename(file.name); hack*/\r\n node.textContent = file.name;\r\n }\r\n _ref1 = file.previewElement.querySelectorAll(\"[data-dz-size]\");\r\n for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {\r\n node = _ref1[_j];\r\n node.innerHTML = this.filesize(file.size);\r\n }\r\n if (this.options.addRemoveLinks) {\r\n file._removeLink = Dropzone.createElement(\"\" + this.options.dictRemoveFile + \"\");\r\n file.previewElement.appendChild(file._removeLink);\r\n }\r\n removeFileEvent = (function(_this) {\r\n return function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (file.status === Dropzone.UPLOADING) {\r\n return Dropzone.confirm(_this.options.dictCancelUploadConfirmation, function() {\r\n return _this.removeFile(file);\r\n });\r\n } else {\r\n if (_this.options.dictRemoveFileConfirmation) {\r\n return Dropzone.confirm(_this.options.dictRemoveFileConfirmation, function() {\r\n return _this.removeFile(file);\r\n });\r\n } else {\r\n return _this.removeFile(file);\r\n }\r\n }\r\n };\r\n })(this);\r\n _ref2 = file.previewElement.querySelectorAll(\"[data-dz-remove]\");\r\n _results = [];\r\n for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {\r\n removeLink = _ref2[_k];\r\n _results.push(removeLink.addEventListener(\"click\", removeFileEvent));\r\n }\r\n return _results;\r\n }\r\n },\r\n removedfile: function(file) {\r\n var _ref;\r\n if (file.previewElement) {\r\n if ((_ref = file.previewElement) != null) {\r\n _ref.parentNode.removeChild(file.previewElement);\r\n }\r\n }\r\n return this._updateMaxFilesReachedClass();\r\n },\r\n thumbnail: function(file, dataUrl) {\r\n var thumbnailElement, _i, _len, _ref;\r\n if (file.previewElement) {\r\n file.previewElement.classList.remove(\"dz-file-preview\");\r\n _ref = file.previewElement.querySelectorAll(\"[data-dz-thumbnail]\");\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n thumbnailElement = _ref[_i];\r\n thumbnailElement.alt = file.name;\r\n thumbnailElement.src = dataUrl;\r\n }\r\n return setTimeout(((function(_this) {\r\n return function() {\r\n return file.previewElement.classList.add(\"dz-image-preview\");\r\n };\r\n })(this)), 1);\r\n }\r\n },\r\n error: function(file, message) {\r\n var node, _i, _len, _ref, _results;\r\n if (file.previewElement) {\r\n file.previewElement.classList.add(\"dz-error\");\r\n if (typeof message !== \"String\" && message.error) {\r\n message = message.error;\r\n }\r\n _ref = file.previewElement.querySelectorAll(\"[data-dz-errormessage]\");\r\n _results = [];\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n node = _ref[_i];\r\n _results.push(node.textContent = message);\r\n }\r\n return _results;\r\n }\r\n },\r\n errormultiple: noop,\r\n processing: function(file) {\r\n if (file.previewElement) {\r\n file.previewElement.classList.add(\"dz-processing\");\r\n if (file._removeLink) {\r\n return file._removeLink.innerHTML = this.options.dictCancelUpload;\r\n }\r\n }\r\n },\r\n processingmultiple: noop,\r\n uploadprogress: function(file, progress, bytesSent) {\r\n var node, _i, _len, _ref, _results;\r\n if (file.previewElement) {\r\n _ref = file.previewElement.querySelectorAll(\"[data-dz-uploadprogress]\");\r\n _results = [];\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n node = _ref[_i];\r\n if (node.nodeName === 'PROGRESS') {\r\n _results.push(node.value = progress);\r\n } else {\r\n _results.push(node.style.width = \"\" + progress + \"%\");\r\n }\r\n }\r\n return _results;\r\n }\r\n },\r\n totaluploadprogress: noop,\r\n sending: noop,\r\n sendingmultiple: noop,\r\n success: function(file) {\r\n if (file.previewElement) {\r\n return file.previewElement.classList.add(\"dz-success\");\r\n }\r\n },\r\n successmultiple: noop,\r\n canceled: function(file) {\r\n return this.emit(\"error\", file, \"Upload canceled.\");\r\n },\r\n canceledmultiple: noop,\r\n complete: function(file) {\r\n if (file._removeLink) {\r\n file._removeLink.innerHTML = this.options.dictRemoveFile;\r\n }\r\n if (file.previewElement) {\r\n return file.previewElement.classList.add(\"dz-complete\");\r\n }\r\n },\r\n completemultiple: noop,\r\n maxfilesexceeded: noop,\r\n maxfilesreached: noop,\r\n queuecomplete: noop,\r\n addedfiles: noop,\r\n previewTemplate: \"
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\n Check\\n \\n \\n \\n \\n \\n
    \\n
    \\n \\n Error\\n \\n \\n \\n \\n \\n \\n \\n
    \\n
    \"\r\n };\r\n\r\n extend = function() {\r\n var key, object, objects, target, val, _i, _len;\r\n target = arguments[0], objects = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\r\n for (_i = 0, _len = objects.length; _i < _len; _i++) {\r\n object = objects[_i];\r\n for (key in object) {\r\n val = object[key];\r\n target[key] = val;\r\n }\r\n }\r\n return target;\r\n };\r\n\r\n function Dropzone(element, options) {\r\n var elementOptions, fallback, _ref;\r\n this.element = element;\r\n this.version = Dropzone.version;\r\n this.defaultOptions.previewTemplate = this.defaultOptions.previewTemplate.replace(/\\n*/g, \"\");\r\n this.clickableElements = [];\r\n this.listeners = [];\r\n this.files = [];\r\n if (typeof this.element === \"string\") {\r\n this.element = document.querySelector(this.element);\r\n }\r\n if (!(this.element && (this.element.nodeType != null))) {\r\n throw new Error(\"Invalid dropzone element.\");\r\n }\r\n if (this.element.dropzone) {\r\n throw new Error(\"Dropzone already attached.\");\r\n }\r\n Dropzone.instances.push(this);\r\n this.element.dropzone = this;\r\n elementOptions = (_ref = Dropzone.optionsForElement(this.element)) != null ? _ref : {};\r\n this.options = extend({}, this.defaultOptions, elementOptions, options != null ? options : {});\r\n if (this.options.forceFallback || !Dropzone.isBrowserSupported()) {\r\n return this.options.fallback.call(this);\r\n }\r\n if (this.options.url == null) {\r\n this.options.url = this.element.getAttribute(\"action\");\r\n }\r\n if (!this.options.url) {\r\n throw new Error(\"No URL provided.\");\r\n }\r\n if (this.options.acceptedFiles && this.options.acceptedMimeTypes) {\r\n throw new Error(\"You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.\");\r\n }\r\n if (this.options.acceptedMimeTypes) {\r\n this.options.acceptedFiles = this.options.acceptedMimeTypes;\r\n delete this.options.acceptedMimeTypes;\r\n }\r\n this.options.method = this.options.method.toUpperCase();\r\n if ((fallback = this.getExistingFallback()) && fallback.parentNode) {\r\n fallback.parentNode.removeChild(fallback);\r\n }\r\n if (this.options.previewsContainer !== false) {\r\n if (this.options.previewsContainer) {\r\n this.previewsContainer = Dropzone.getElement(this.options.previewsContainer, \"previewsContainer\");\r\n } else {\r\n this.previewsContainer = this.element;\r\n }\r\n }\r\n if (this.options.clickable) {\r\n if (this.options.clickable === true) {\r\n this.clickableElements = [this.element];\r\n } else {\r\n this.clickableElements = Dropzone.getElements(this.options.clickable, \"clickable\");\r\n }\r\n }\r\n this.init();\r\n }\r\n\r\n Dropzone.prototype.getAcceptedFiles = function() {\r\n var file, _i, _len, _ref, _results;\r\n _ref = this.files;\r\n _results = [];\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n file = _ref[_i];\r\n if (file.accepted) {\r\n _results.push(file);\r\n }\r\n }\r\n return _results;\r\n };\r\n\r\n Dropzone.prototype.getRejectedFiles = function() {\r\n var file, _i, _len, _ref, _results;\r\n _ref = this.files;\r\n _results = [];\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n file = _ref[_i];\r\n if (!file.accepted) {\r\n _results.push(file);\r\n }\r\n }\r\n return _results;\r\n };\r\n\r\n Dropzone.prototype.getFilesWithStatus = function(status) {\r\n var file, _i, _len, _ref, _results;\r\n _ref = this.files;\r\n _results = [];\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n file = _ref[_i];\r\n if (file.status === status) {\r\n _results.push(file);\r\n }\r\n }\r\n return _results;\r\n };\r\n\r\n Dropzone.prototype.getQueuedFiles = function() {\r\n return this.getFilesWithStatus(Dropzone.QUEUED);\r\n };\r\n\r\n Dropzone.prototype.getUploadingFiles = function() {\r\n return this.getFilesWithStatus(Dropzone.UPLOADING);\r\n };\r\n\r\n Dropzone.prototype.getAddedFiles = function() {\r\n return this.getFilesWithStatus(Dropzone.ADDED);\r\n };\r\n\r\n Dropzone.prototype.getActiveFiles = function() {\r\n var file, _i, _len, _ref, _results;\r\n _ref = this.files;\r\n _results = [];\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n file = _ref[_i];\r\n if (file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED) {\r\n _results.push(file);\r\n }\r\n }\r\n return _results;\r\n };\r\n\r\n Dropzone.prototype.init = function() {\r\n var eventName, noPropagation, setupHiddenFileInput, _i, _len, _ref, _ref1;\r\n if (this.element.tagName === \"form\") {\r\n this.element.setAttribute(\"enctype\", \"multipart/form-data\");\r\n }\r\n if (this.element.classList.contains(\"dropzone\") && !this.element.querySelector(\".dz-message\")) {\r\n this.element.appendChild(Dropzone.createElement(\"
    \" + this.options.dictDefaultMessage + \"
    \"));\r\n }\r\n if (this.clickableElements.length) {\r\n setupHiddenFileInput = (function(_this) {\r\n return function() {\r\n if (_this.hiddenFileInput) {\r\n _this.hiddenFileInput.parentNode.removeChild(_this.hiddenFileInput);\r\n }\r\n _this.hiddenFileInput = document.createElement(\"input\");\r\n _this.hiddenFileInput.setAttribute(\"type\", \"file\");\r\n if ((_this.options.maxFiles == null) || _this.options.maxFiles > 1) {\r\n _this.hiddenFileInput.setAttribute(\"multiple\", \"multiple\");\r\n }\r\n _this.hiddenFileInput.className = \"dz-hidden-input\";\r\n if (_this.options.acceptedFiles != null) {\r\n _this.hiddenFileInput.setAttribute(\"accept\", _this.options.acceptedFiles);\r\n }\r\n if (_this.options.capture != null) {\r\n _this.hiddenFileInput.setAttribute(\"capture\", _this.options.capture);\r\n }\r\n _this.hiddenFileInput.style.visibility = \"hidden\";\r\n _this.hiddenFileInput.style.position = \"absolute\";\r\n _this.hiddenFileInput.style.top = \"0\";\r\n _this.hiddenFileInput.style.left = \"0\";\r\n _this.hiddenFileInput.style.height = \"0\";\r\n _this.hiddenFileInput.style.width = \"0\";\r\n document.querySelector(_this.options.hiddenInputContainer).appendChild(_this.hiddenFileInput);\r\n return _this.hiddenFileInput.addEventListener(\"change\", function() {\r\n var file, files, _i, _len;\r\n files = _this.hiddenFileInput.files;\r\n if (files.length) {\r\n for (_i = 0, _len = files.length; _i < _len; _i++) {\r\n file = files[_i];\r\n _this.addFile(file);\r\n }\r\n }\r\n _this.emit(\"addedfiles\", files);\r\n return setupHiddenFileInput();\r\n });\r\n };\r\n })(this);\r\n setupHiddenFileInput();\r\n }\r\n this.URL = (_ref = window.URL) != null ? _ref : window.webkitURL;\r\n _ref1 = this.events;\r\n for (_i = 0, _len = _ref1.length; _i < _len; _i++) {\r\n eventName = _ref1[_i];\r\n this.on(eventName, this.options[eventName]);\r\n }\r\n this.on(\"uploadprogress\", (function(_this) {\r\n return function() {\r\n return _this.updateTotalUploadProgress();\r\n };\r\n })(this));\r\n this.on(\"removedfile\", (function(_this) {\r\n return function() {\r\n return _this.updateTotalUploadProgress();\r\n };\r\n })(this));\r\n this.on(\"canceled\", (function(_this) {\r\n return function(file) {\r\n return _this.emit(\"complete\", file);\r\n };\r\n })(this));\r\n this.on(\"complete\", (function(_this) {\r\n return function(file) {\r\n if (_this.getAddedFiles().length === 0 && _this.getUploadingFiles().length === 0 && _this.getQueuedFiles().length === 0) {\r\n return setTimeout((function() {\r\n return _this.emit(\"queuecomplete\");\r\n }), 0);\r\n }\r\n };\r\n })(this));\r\n noPropagation = function(e) {\r\n e.stopPropagation();\r\n if (e.preventDefault) {\r\n return e.preventDefault();\r\n } else {\r\n return e.returnValue = false;\r\n }\r\n };\r\n this.listeners = [\r\n {\r\n element: this.element,\r\n events: {\r\n \"dragstart\": (function(_this) {\r\n return function(e) {\r\n return _this.emit(\"dragstart\", e);\r\n };\r\n })(this),\r\n \"dragenter\": (function(_this) {\r\n return function(e) {\r\n noPropagation(e);\r\n return _this.emit(\"dragenter\", e);\r\n };\r\n })(this),\r\n \"dragover\": (function(_this) {\r\n return function(e) {\r\n var efct;\r\n try {\r\n efct = e.dataTransfer.effectAllowed;\r\n } catch (_error) {}\r\n e.dataTransfer.dropEffect = 'move' === efct || 'linkMove' === efct ? 'move' : 'copy';\r\n noPropagation(e);\r\n return _this.emit(\"dragover\", e);\r\n };\r\n })(this),\r\n \"dragleave\": (function(_this) {\r\n return function(e) {\r\n return _this.emit(\"dragleave\", e);\r\n };\r\n })(this),\r\n \"drop\": (function(_this) {\r\n return function(e) {\r\n noPropagation(e);\r\n return _this.drop(e);\r\n };\r\n })(this),\r\n \"dragend\": (function(_this) {\r\n return function(e) {\r\n return _this.emit(\"dragend\", e);\r\n };\r\n })(this)\r\n }\r\n }\r\n ];\r\n this.clickableElements.forEach((function(_this) {\r\n return function(clickableElement) {\r\n return _this.listeners.push({\r\n element: clickableElement,\r\n events: {\r\n \"click\": function(evt) {\r\n if ((clickableElement !== _this.element) || (evt.target === _this.element || Dropzone.elementInside(evt.target, _this.element.querySelector(\".dz-message\")))) {\r\n _this.hiddenFileInput.click();\r\n }\r\n return true;\r\n }\r\n }\r\n });\r\n };\r\n })(this));\r\n this.enable();\r\n return this.options.init.call(this);\r\n };\r\n\r\n Dropzone.prototype.destroy = function() {\r\n var _ref;\r\n this.disable();\r\n this.removeAllFiles(true);\r\n if ((_ref = this.hiddenFileInput) != null ? _ref.parentNode : void 0) {\r\n this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\r\n this.hiddenFileInput = null;\r\n }\r\n delete this.element.dropzone;\r\n return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1);\r\n };\r\n\r\n Dropzone.prototype.updateTotalUploadProgress = function() {\r\n var activeFiles, file, totalBytes, totalBytesSent, totalUploadProgress, _i, _len, _ref;\r\n totalBytesSent = 0;\r\n totalBytes = 0;\r\n activeFiles = this.getActiveFiles();\r\n if (activeFiles.length) {\r\n _ref = this.getActiveFiles();\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n file = _ref[_i];\r\n totalBytesSent += file.upload.bytesSent;\r\n totalBytes += file.upload.total;\r\n }\r\n totalUploadProgress = 100 * totalBytesSent / totalBytes;\r\n } else {\r\n totalUploadProgress = 100;\r\n }\r\n return this.emit(\"totaluploadprogress\", totalUploadProgress, totalBytes, totalBytesSent);\r\n };\r\n\r\n Dropzone.prototype._getParamName = function(n) {\r\n if (typeof this.options.paramName === \"function\") {\r\n return this.options.paramName(n);\r\n } else {\r\n return \"\" + this.options.paramName + (this.options.uploadMultiple ? \"[\" + n + \"]\" : \"\");\r\n }\r\n };\r\n\r\n Dropzone.prototype._renameFilename = function(name) {\r\n if (typeof this.options.renameFilename !== \"function\") {\r\n return name;\r\n }\r\n return this.options.renameFilename(name);\r\n };\r\n\r\n Dropzone.prototype.getFallbackForm = function() {\r\n var existingFallback, fields, fieldsString, form;\r\n if (existingFallback = this.getExistingFallback()) {\r\n return existingFallback;\r\n }\r\n fieldsString = \"
    \";\r\n if (this.options.dictFallbackText) {\r\n fieldsString += \"

    \" + this.options.dictFallbackText + \"

    \";\r\n }\r\n fieldsString += \"
    \";\r\n fields = Dropzone.createElement(fieldsString);\r\n if (this.element.tagName !== \"FORM\") {\r\n form = Dropzone.createElement(\"
    \");\r\n form.appendChild(fields);\r\n } else {\r\n this.element.setAttribute(\"enctype\", \"multipart/form-data\");\r\n this.element.setAttribute(\"method\", this.options.method);\r\n }\r\n return form != null ? form : fields;\r\n };\r\n\r\n Dropzone.prototype.getExistingFallback = function() {\r\n var fallback, getFallback, tagName, _i, _len, _ref;\r\n getFallback = function(elements) {\r\n var el, _i, _len;\r\n for (_i = 0, _len = elements.length; _i < _len; _i++) {\r\n el = elements[_i];\r\n if (/(^| )fallback($| )/.test(el.className)) {\r\n return el;\r\n }\r\n }\r\n };\r\n _ref = [\"div\", \"form\"];\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n tagName = _ref[_i];\r\n if (fallback = getFallback(this.element.getElementsByTagName(tagName))) {\r\n return fallback;\r\n }\r\n }\r\n };\r\n\r\n Dropzone.prototype.setupEventListeners = function() {\r\n var elementListeners, event, listener, _i, _len, _ref, _results;\r\n _ref = this.listeners;\r\n _results = [];\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n elementListeners = _ref[_i];\r\n _results.push((function() {\r\n var _ref1, _results1;\r\n _ref1 = elementListeners.events;\r\n _results1 = [];\r\n for (event in _ref1) {\r\n listener = _ref1[event];\r\n _results1.push(elementListeners.element.addEventListener(event, listener, false));\r\n }\r\n return _results1;\r\n })());\r\n }\r\n return _results;\r\n };\r\n\r\n Dropzone.prototype.removeEventListeners = function() {\r\n var elementListeners, event, listener, _i, _len, _ref, _results;\r\n _ref = this.listeners;\r\n _results = [];\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n elementListeners = _ref[_i];\r\n _results.push((function() {\r\n var _ref1, _results1;\r\n _ref1 = elementListeners.events;\r\n _results1 = [];\r\n for (event in _ref1) {\r\n listener = _ref1[event];\r\n _results1.push(elementListeners.element.removeEventListener(event, listener, false));\r\n }\r\n return _results1;\r\n })());\r\n }\r\n return _results;\r\n };\r\n\r\n Dropzone.prototype.disable = function() {\r\n var file, _i, _len, _ref, _results;\r\n this.clickableElements.forEach(function(element) {\r\n return element.classList.remove(\"dz-clickable\");\r\n });\r\n this.removeEventListeners();\r\n _ref = this.files;\r\n _results = [];\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n file = _ref[_i];\r\n _results.push(this.cancelUpload(file));\r\n }\r\n return _results;\r\n };\r\n\r\n Dropzone.prototype.enable = function() {\r\n this.clickableElements.forEach(function(element) {\r\n return element.classList.add(\"dz-clickable\");\r\n });\r\n return this.setupEventListeners();\r\n };\r\n\r\n Dropzone.prototype.filesize = function(size) {\r\n var cutoff, i, selectedSize, selectedUnit, unit, units, _i, _len;\r\n selectedSize = 0;\r\n selectedUnit = \"b\";\r\n if (size > 0) {\r\n units = ['TB', 'GB', 'MB', 'KB', 'b'];\r\n for (i = _i = 0, _len = units.length; _i < _len; i = ++_i) {\r\n unit = units[i];\r\n cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;\r\n if (size >= cutoff) {\r\n selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);\r\n selectedUnit = unit;\r\n break;\r\n }\r\n }\r\n selectedSize = Math.round(10 * selectedSize) / 10;\r\n }\r\n return \"\" + selectedSize + \" \" + selectedUnit;\r\n };\r\n\r\n Dropzone.prototype._updateMaxFilesReachedClass = function() {\r\n if ((this.options.maxFiles != null) && this.getAcceptedFiles().length >= this.options.maxFiles) {\r\n if (this.getAcceptedFiles().length === this.options.maxFiles) {\r\n this.emit('maxfilesreached', this.files);\r\n }\r\n return this.element.classList.add(\"dz-max-files-reached\");\r\n } else {\r\n return this.element.classList.remove(\"dz-max-files-reached\");\r\n }\r\n };\r\n\r\n Dropzone.prototype.drop = function(e) {\r\n var files, items;\r\n if (!e.dataTransfer) {\r\n return;\r\n }\r\n this.emit(\"drop\", e);\r\n files = e.dataTransfer.files;\r\n this.emit(\"addedfiles\", files);\r\n if (files.length) {\r\n items = e.dataTransfer.items;\r\n if (items && items.length && (items[0].webkitGetAsEntry != null)) {\r\n this._addFilesFromItems(items);\r\n } else {\r\n this.handleFiles(files);\r\n }\r\n }\r\n };\r\n\r\n Dropzone.prototype.paste = function(e) {\r\n var items, _ref;\r\n if ((e != null ? (_ref = e.clipboardData) != null ? _ref.items : void 0 : void 0) == null) {\r\n return;\r\n }\r\n this.emit(\"paste\", e);\r\n items = e.clipboardData.items;\r\n if (items.length) {\r\n return this._addFilesFromItems(items);\r\n }\r\n };\r\n\r\n Dropzone.prototype.handleFiles = function(files) {\r\n var file, _i, _len, _results;\r\n _results = [];\r\n for (_i = 0, _len = files.length; _i < _len; _i++) {\r\n file = files[_i];\r\n _results.push(this.addFile(file));\r\n }\r\n return _results;\r\n };\r\n\r\n Dropzone.prototype._addFilesFromItems = function(items) {\r\n var entry, item, _i, _len, _results;\r\n _results = [];\r\n for (_i = 0, _len = items.length; _i < _len; _i++) {\r\n item = items[_i];\r\n if ((item.webkitGetAsEntry != null) && (entry = item.webkitGetAsEntry())) {\r\n if (entry.isFile) {\r\n _results.push(this.addFile(item.getAsFile()));\r\n } else if (entry.isDirectory) {\r\n _results.push(this._addFilesFromDirectory(entry, entry.name));\r\n } else {\r\n _results.push(void 0);\r\n }\r\n } else if (item.getAsFile != null) {\r\n if ((item.kind == null) || item.kind === \"file\") {\r\n _results.push(this.addFile(item.getAsFile()));\r\n } else {\r\n _results.push(void 0);\r\n }\r\n } else {\r\n _results.push(void 0);\r\n }\r\n }\r\n return _results;\r\n };\r\n\r\n Dropzone.prototype._addFilesFromDirectory = function(directory, path) {\r\n var dirReader, errorHandler, readEntries;\r\n dirReader = directory.createReader();\r\n errorHandler = function(error) {\r\n return typeof console !== \"undefined\" && console !== null ? typeof console.log === \"function\" ? console.log(error) : void 0 : void 0;\r\n };\r\n readEntries = (function(_this) {\r\n return function() {\r\n return dirReader.readEntries(function(entries) {\r\n var entry, _i, _len;\r\n if (entries.length > 0) {\r\n for (_i = 0, _len = entries.length; _i < _len; _i++) {\r\n entry = entries[_i];\r\n if (entry.isFile) {\r\n entry.file(function(file) {\r\n if (_this.options.ignoreHiddenFiles && file.name.substring(0, 1) === '.') {\r\n return;\r\n }\r\n file.fullPath = \"\" + path + \"/\" + file.name;\r\n return _this.addFile(file);\r\n });\r\n } else if (entry.isDirectory) {\r\n _this._addFilesFromDirectory(entry, \"\" + path + \"/\" + entry.name);\r\n }\r\n }\r\n readEntries();\r\n }\r\n return null;\r\n }, errorHandler);\r\n };\r\n })(this);\r\n return readEntries();\r\n };\r\n\r\n Dropzone.prototype.accept = function(file, done) {\r\n if (file.size > this.options.maxFilesize * 1024 * 1024) {\r\n return done(this.options.dictFileTooBig.replace(\"{{filesize}}\", Math.round(file.size / 1024 / 10.24) / 100).replace(\"{{maxFilesize}}\", this.options.maxFilesize));\r\n } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {\r\n return done(this.options.dictInvalidFileType);\r\n } else if ((this.options.maxFiles != null) && this.getAcceptedFiles().length >= this.options.maxFiles) {\r\n done(this.options.dictMaxFilesExceeded.replace(\"{{maxFiles}}\", this.options.maxFiles));\r\n return this.emit(\"maxfilesexceeded\", file);\r\n } else {\r\n return this.options.accept.call(this, file, done);\r\n }\r\n };\r\n\r\n Dropzone.prototype.addFile = function(file) {\r\n file.upload = {\r\n progress: 0,\r\n total: file.size,\r\n bytesSent: 0\r\n };\r\n file.serverName = this._renameFilename(file.name); /* Hack add serverName */\r\n this.files.push(file);\r\n file.status = Dropzone.ADDED;\r\n this.emit(\"addedfile\", file);\r\n this._enqueueThumbnail(file);\r\n return this.accept(file, (function(_this) {\r\n return function(error) {\r\n if (error) {\r\n file.accepted = false;\r\n _this._errorProcessing([file], error);\r\n } else {\r\n file.accepted = true;\r\n if (_this.options.autoQueue) {\r\n _this.enqueueFile(file);\r\n }\r\n }\r\n return _this._updateMaxFilesReachedClass();\r\n };\r\n })(this));\r\n };\r\n\r\n Dropzone.prototype.enqueueFiles = function(files) {\r\n var file, _i, _len;\r\n for (_i = 0, _len = files.length; _i < _len; _i++) {\r\n file = files[_i];\r\n this.enqueueFile(file);\r\n }\r\n return null;\r\n };\r\n\r\n Dropzone.prototype.enqueueFile = function(file) {\r\n if (file.status === Dropzone.ADDED && file.accepted === true) {\r\n file.status = Dropzone.QUEUED;\r\n if (this.options.autoProcessQueue) {\r\n return setTimeout(((function(_this) {\r\n return function() {\r\n return _this.processQueue();\r\n };\r\n })(this)), 0);\r\n }\r\n } else {\r\n throw new Error(\"This file can't be queued because it has already been processed or was rejected.\");\r\n }\r\n };\r\n\r\n Dropzone.prototype._thumbnailQueue = [];\r\n\r\n Dropzone.prototype._processingThumbnail = false;\r\n\r\n Dropzone.prototype._enqueueThumbnail = function(file) {\r\n if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) {\r\n this._thumbnailQueue.push(file);\r\n return setTimeout(((function(_this) {\r\n return function() {\r\n return _this._processThumbnailQueue();\r\n };\r\n })(this)), 0);\r\n }\r\n };\r\n\r\n Dropzone.prototype._processThumbnailQueue = function() {\r\n if (this._processingThumbnail || this._thumbnailQueue.length === 0) {\r\n return;\r\n }\r\n this._processingThumbnail = true;\r\n return this.createThumbnail(this._thumbnailQueue.shift(), (function(_this) {\r\n return function() {\r\n _this._processingThumbnail = false;\r\n return _this._processThumbnailQueue();\r\n };\r\n })(this));\r\n };\r\n\r\n Dropzone.prototype.removeFile = function(file) {\r\n if (file.status === Dropzone.UPLOADING) {\r\n this.cancelUpload(file);\r\n }\r\n this.files = without(this.files, file);\r\n this.emit(\"removedfile\", file);\r\n if (this.files.length === 0) {\r\n return this.emit(\"reset\");\r\n }\r\n };\r\n\r\n Dropzone.prototype.removeAllFiles = function(cancelIfNecessary) {\r\n var file, _i, _len, _ref;\r\n if (cancelIfNecessary == null) {\r\n cancelIfNecessary = false;\r\n }\r\n _ref = this.files.slice();\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n file = _ref[_i];\r\n if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) {\r\n this.removeFile(file);\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n Dropzone.prototype.createThumbnail = function(file, callback) {\r\n var fileReader;\r\n fileReader = new FileReader;\r\n fileReader.onload = (function(_this) {\r\n return function() {\r\n if (file.type === \"image/svg+xml\") {\r\n _this.emit(\"thumbnail\", file, fileReader.result);\r\n if (callback != null) {\r\n callback();\r\n }\r\n return;\r\n }\r\n return _this.createThumbnailFromUrl(file, fileReader.result, callback);\r\n };\r\n })(this);\r\n return fileReader.readAsDataURL(file);\r\n };\r\n\r\n Dropzone.prototype.createThumbnailFromUrl = function(file, imageUrl, callback, crossOrigin) {\r\n var img;\r\n img = document.createElement(\"img\");\r\n if (crossOrigin) {\r\n img.crossOrigin = crossOrigin;\r\n }\r\n img.onload = (function(_this) {\r\n return function() {\r\n var canvas, ctx, resizeInfo, thumbnail, _ref, _ref1, _ref2, _ref3;\r\n file.width = img.width;\r\n file.height = img.height;\r\n resizeInfo = _this.options.resize.call(_this, file);\r\n if (resizeInfo.trgWidth == null) {\r\n resizeInfo.trgWidth = resizeInfo.optWidth;\r\n }\r\n if (resizeInfo.trgHeight == null) {\r\n resizeInfo.trgHeight = resizeInfo.optHeight;\r\n }\r\n canvas = document.createElement(\"canvas\");\r\n ctx = canvas.getContext(\"2d\");\r\n canvas.width = resizeInfo.trgWidth;\r\n canvas.height = resizeInfo.trgHeight;\r\n drawImageIOSFix(ctx, img, (_ref = resizeInfo.srcX) != null ? _ref : 0, (_ref1 = resizeInfo.srcY) != null ? _ref1 : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, (_ref2 = resizeInfo.trgX) != null ? _ref2 : 0, (_ref3 = resizeInfo.trgY) != null ? _ref3 : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);\r\n thumbnail = canvas.toDataURL(\"image/png\");\r\n _this.emit(\"thumbnail\", file, thumbnail);\r\n if (callback != null) {\r\n return callback();\r\n }\r\n };\r\n })(this);\r\n if (callback != null) {\r\n img.onerror = callback;\r\n }\r\n return img.src = imageUrl;\r\n };\r\n\r\n Dropzone.prototype.processQueue = function() {\r\n var i, parallelUploads, processingLength, queuedFiles;\r\n parallelUploads = this.options.parallelUploads;\r\n processingLength = this.getUploadingFiles().length;\r\n i = processingLength;\r\n if (processingLength >= parallelUploads) {\r\n return;\r\n }\r\n queuedFiles = this.getQueuedFiles();\r\n if (!(queuedFiles.length > 0)) {\r\n return;\r\n }\r\n if (this.options.uploadMultiple) {\r\n return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength));\r\n } else {\r\n while (i < parallelUploads) {\r\n if (!queuedFiles.length) {\r\n return;\r\n }\r\n this.processFile(queuedFiles.shift());\r\n i++;\r\n }\r\n }\r\n };\r\n\r\n Dropzone.prototype.processFile = function(file) {\r\n return this.processFiles([file]);\r\n };\r\n\r\n Dropzone.prototype.processFiles = function(files) {\r\n var file, _i, _len;\r\n for (_i = 0, _len = files.length; _i < _len; _i++) {\r\n file = files[_i];\r\n file.processing = true;\r\n file.status = Dropzone.UPLOADING;\r\n this.emit(\"processing\", file);\r\n }\r\n if (this.options.uploadMultiple) {\r\n this.emit(\"processingmultiple\", files);\r\n }\r\n return this.uploadFiles(files);\r\n };\r\n\r\n Dropzone.prototype._getFilesWithXhr = function(xhr) {\r\n var file, files;\r\n return files = (function() {\r\n var _i, _len, _ref, _results;\r\n _ref = this.files;\r\n _results = [];\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n file = _ref[_i];\r\n if (file.xhr === xhr) {\r\n _results.push(file);\r\n }\r\n }\r\n return _results;\r\n }).call(this);\r\n };\r\n\r\n Dropzone.prototype.cancelUpload = function(file) {\r\n var groupedFile, groupedFiles, _i, _j, _len, _len1, _ref;\r\n if (file.status === Dropzone.UPLOADING) {\r\n groupedFiles = this._getFilesWithXhr(file.xhr);\r\n for (_i = 0, _len = groupedFiles.length; _i < _len; _i++) {\r\n groupedFile = groupedFiles[_i];\r\n groupedFile.status = Dropzone.CANCELED;\r\n }\r\n file.xhr.abort();\r\n for (_j = 0, _len1 = groupedFiles.length; _j < _len1; _j++) {\r\n groupedFile = groupedFiles[_j];\r\n this.emit(\"canceled\", groupedFile);\r\n }\r\n if (this.options.uploadMultiple) {\r\n this.emit(\"canceledmultiple\", groupedFiles);\r\n }\r\n } else if ((_ref = file.status) === Dropzone.ADDED || _ref === Dropzone.QUEUED) {\r\n file.status = Dropzone.CANCELED;\r\n this.emit(\"canceled\", file);\r\n if (this.options.uploadMultiple) {\r\n this.emit(\"canceledmultiple\", [file]);\r\n }\r\n }\r\n if (this.options.autoProcessQueue) {\r\n return this.processQueue();\r\n }\r\n };\r\n\r\n resolveOption = function() {\r\n var args, option;\r\n option = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];\r\n if (typeof option === 'function') {\r\n return option.apply(this, args);\r\n }\r\n return option;\r\n };\r\n\r\n Dropzone.prototype.uploadFile = function(file) {\r\n return this.uploadFiles([file]);\r\n };\r\n\r\n Dropzone.prototype.uploadFiles = function(files) {\r\n var file, formData, handleError, headerName, headerValue, headers, i, input, inputName, inputType, key, method, option, progressObj, response, updateProgress, url, value, xhr, _i, _j, _k, _l, _len, _len1, _len2, _len3, _m, _ref, _ref1, _ref2, _ref3, _ref4, _ref5;\r\n xhr = new XMLHttpRequest();\r\n for (_i = 0, _len = files.length; _i < _len; _i++) {\r\n file = files[_i];\r\n file.xhr = xhr;\r\n }\r\n method = resolveOption(this.options.method, files);\r\n url = resolveOption(this.options.url, files);\r\n xhr.open(method, url, true);\r\n xhr.withCredentials = !!this.options.withCredentials;\r\n response = null;\r\n handleError = (function(_this) {\r\n return function() {\r\n var _j, _len1, _results;\r\n _results = [];\r\n for (_j = 0, _len1 = files.length; _j < _len1; _j++) {\r\n file = files[_j];\r\n _results.push(_this._errorProcessing(files, response || _this.options.dictResponseError.replace(\"{{statusCode}}\", xhr.status), xhr));\r\n }\r\n return _results;\r\n };\r\n })(this);\r\n updateProgress = (function(_this) {\r\n return function(e) {\r\n var allFilesFinished, progress, _j, _k, _l, _len1, _len2, _len3, _results;\r\n if (e != null) {\r\n progress = 100 * e.loaded / e.total;\r\n for (_j = 0, _len1 = files.length; _j < _len1; _j++) {\r\n file = files[_j];\r\n file.upload = {\r\n progress: progress,\r\n total: e.total,\r\n bytesSent: e.loaded\r\n };\r\n }\r\n } else {\r\n allFilesFinished = true;\r\n progress = 100;\r\n for (_k = 0, _len2 = files.length; _k < _len2; _k++) {\r\n file = files[_k];\r\n if (!(file.upload.progress === 100 && file.upload.bytesSent === file.upload.total)) {\r\n allFilesFinished = false;\r\n }\r\n file.upload.progress = progress;\r\n file.upload.bytesSent = file.upload.total;\r\n }\r\n if (allFilesFinished) {\r\n return;\r\n }\r\n }\r\n _results = [];\r\n for (_l = 0, _len3 = files.length; _l < _len3; _l++) {\r\n file = files[_l];\r\n _results.push(_this.emit(\"uploadprogress\", file, progress, file.upload.bytesSent));\r\n }\r\n return _results;\r\n };\r\n })(this);\r\n xhr.onload = (function(_this) {\r\n return function(e) {\r\n var _ref;\r\n if (files[0].status === Dropzone.CANCELED) {\r\n return;\r\n }\r\n if (xhr.readyState !== 4) {\r\n return;\r\n }\r\n response = xhr.responseText;\r\n if (xhr.getResponseHeader(\"content-type\") && ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")) {\r\n try {\r\n response = JSON.parse(response);\r\n } catch (_error) {\r\n e = _error;\r\n response = \"Invalid JSON response from server.\";\r\n }\r\n }\r\n updateProgress();\r\n if (!((200 <= (_ref = xhr.status) && _ref < 300))) {\r\n return handleError();\r\n } else {\r\n return _this._finished(files, response, e);\r\n }\r\n };\r\n })(this);\r\n xhr.onerror = (function(_this) {\r\n return function() {\r\n if (files[0].status === Dropzone.CANCELED) {\r\n return;\r\n }\r\n return handleError();\r\n };\r\n })(this);\r\n progressObj = (_ref = xhr.upload) != null ? _ref : xhr;\r\n progressObj.onprogress = updateProgress;\r\n headers = {\r\n \"Accept\": \"application/json\",\r\n \"Cache-Control\": \"no-cache\",\r\n \"X-Requested-With\": \"XMLHttpRequest\"\r\n };\r\n if (this.options.headers) {\r\n extend(headers, this.options.headers);\r\n }\r\n for (headerName in headers) {\r\n headerValue = headers[headerName];\r\n if (headerValue) {\r\n xhr.setRequestHeader(headerName, headerValue);\r\n }\r\n }\r\n formData = new FormData();\r\n if (this.options.params) {\r\n _ref1 = this.options.params;\r\n for (key in _ref1) {\r\n value = _ref1[key];\r\n formData.append(key, value);\r\n }\r\n }\r\n for (_j = 0, _len1 = files.length; _j < _len1; _j++) {\r\n file = files[_j];\r\n this.emit(\"sending\", file, xhr, formData);\r\n }\r\n if (this.options.uploadMultiple) {\r\n this.emit(\"sendingmultiple\", files, xhr, formData);\r\n }\r\n if (this.element.tagName === \"FORM\") {\r\n _ref2 = this.element.querySelectorAll(\"input, textarea, select, button\");\r\n for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {\r\n input = _ref2[_k];\r\n inputName = input.getAttribute(\"name\");\r\n inputType = input.getAttribute(\"type\");\r\n if (input.tagName === \"SELECT\" && input.hasAttribute(\"multiple\")) {\r\n _ref3 = input.options;\r\n for (_l = 0, _len3 = _ref3.length; _l < _len3; _l++) {\r\n option = _ref3[_l];\r\n if (option.selected) {\r\n formData.append(inputName, option.value);\r\n }\r\n }\r\n } else if (!inputType || ((_ref4 = inputType.toLowerCase()) !== \"checkbox\" && _ref4 !== \"radio\") || input.checked) {\r\n formData.append(inputName, input.value);\r\n }\r\n }\r\n }\r\n for (i = _m = 0, _ref5 = files.length - 1; 0 <= _ref5 ? _m <= _ref5 : _m >= _ref5; i = 0 <= _ref5 ? ++_m : --_m) {\r\n /*formData.append(this._getParamName(i), files[i], this._renameFilename(files[i].name)); Hack*/\r\n formData.append(this._getParamName(i), files[i], files[i].serverName);\r\n }\r\n return this.submitRequest(xhr, formData, files);\r\n };\r\n\r\n Dropzone.prototype.submitRequest = function(xhr, formData, files) {\r\n return xhr.send(formData);\r\n };\r\n\r\n Dropzone.prototype._finished = function(files, responseText, e) {\r\n var file, _i, _len;\r\n for (_i = 0, _len = files.length; _i < _len; _i++) {\r\n file = files[_i];\r\n file.status = Dropzone.SUCCESS;\r\n this.emit(\"success\", file, responseText, e);\r\n this.emit(\"complete\", file);\r\n }\r\n if (this.options.uploadMultiple) {\r\n this.emit(\"successmultiple\", files, responseText, e);\r\n this.emit(\"completemultiple\", files);\r\n }\r\n if (this.options.autoProcessQueue) {\r\n return this.processQueue();\r\n }\r\n };\r\n\r\n Dropzone.prototype._errorProcessing = function(files, message, xhr) {\r\n var file, _i, _len;\r\n for (_i = 0, _len = files.length; _i < _len; _i++) {\r\n file = files[_i];\r\n file.status = Dropzone.ERROR;\r\n this.emit(\"error\", file, message, xhr);\r\n this.emit(\"complete\", file);\r\n }\r\n if (this.options.uploadMultiple) {\r\n this.emit(\"errormultiple\", files, message, xhr);\r\n this.emit(\"completemultiple\", files);\r\n }\r\n if (this.options.autoProcessQueue) {\r\n return this.processQueue();\r\n }\r\n };\r\n\r\n return Dropzone;\r\n\r\n })(Emitter);\r\n\r\n Dropzone.version = \"4.3.0\";\r\n\r\n Dropzone.options = {};\r\n\r\n Dropzone.optionsForElement = function(element) {\r\n if (element.getAttribute(\"id\")) {\r\n return Dropzone.options[camelize(element.getAttribute(\"id\"))];\r\n } else {\r\n return void 0;\r\n }\r\n };\r\n\r\n Dropzone.instances = [];\r\n\r\n Dropzone.forElement = function(element) {\r\n if (typeof element === \"string\") {\r\n element = document.querySelector(element);\r\n }\r\n if ((element != null ? element.dropzone : void 0) == null) {\r\n throw new Error(\"No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.\");\r\n }\r\n return element.dropzone;\r\n };\r\n\r\n Dropzone.autoDiscover = false; /* Hack */\r\n\r\n Dropzone.discover = function() {\r\n var checkElements, dropzone, dropzones, _i, _len, _results;\r\n if (document.querySelectorAll) {\r\n dropzones = document.querySelectorAll(\".dropzone\");\r\n } else {\r\n dropzones = [];\r\n checkElements = function(elements) {\r\n var el, _i, _len, _results;\r\n _results = [];\r\n for (_i = 0, _len = elements.length; _i < _len; _i++) {\r\n el = elements[_i];\r\n if (/(^| )dropzone($| )/.test(el.className)) {\r\n _results.push(dropzones.push(el));\r\n } else {\r\n _results.push(void 0);\r\n }\r\n }\r\n return _results;\r\n };\r\n checkElements(document.getElementsByTagName(\"div\"));\r\n checkElements(document.getElementsByTagName(\"form\"));\r\n }\r\n _results = [];\r\n for (_i = 0, _len = dropzones.length; _i < _len; _i++) {\r\n dropzone = dropzones[_i];\r\n if (Dropzone.optionsForElement(dropzone) !== false) {\r\n _results.push(new Dropzone(dropzone));\r\n } else {\r\n _results.push(void 0);\r\n }\r\n }\r\n return _results;\r\n };\r\n\r\n Dropzone.blacklistedBrowsers = [/opera.*Macintosh.*version\\/12/i];\r\n\r\n Dropzone.isBrowserSupported = function() {\r\n var capableBrowser, regex, _i, _len, _ref;\r\n capableBrowser = true;\r\n if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {\r\n if (!(\"classList\" in document.createElement(\"a\"))) {\r\n capableBrowser = false;\r\n } else {\r\n _ref = Dropzone.blacklistedBrowsers;\r\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\r\n regex = _ref[_i];\r\n if (regex.test(navigator.userAgent)) {\r\n capableBrowser = false;\r\n continue;\r\n }\r\n }\r\n }\r\n } else {\r\n capableBrowser = false;\r\n }\r\n return capableBrowser;\r\n };\r\n\r\n without = function(list, rejectedItem) {\r\n var item, _i, _len, _results;\r\n _results = [];\r\n for (_i = 0, _len = list.length; _i < _len; _i++) {\r\n item = list[_i];\r\n if (item !== rejectedItem) {\r\n _results.push(item);\r\n }\r\n }\r\n return _results;\r\n };\r\n\r\n camelize = function(str) {\r\n return str.replace(/[\\-_](\\w)/g, function(match) {\r\n return match.charAt(1).toUpperCase();\r\n });\r\n };\r\n\r\n Dropzone.createElement = function(string) {\r\n var div;\r\n div = document.createElement(\"div\");\r\n div.innerHTML = string;\r\n return div.childNodes[0];\r\n };\r\n\r\n Dropzone.elementInside = function(element, container) {\r\n if (element === container) {\r\n return true;\r\n }\r\n while (element = element.parentNode) {\r\n if (element === container) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n Dropzone.getElement = function(el, name) {\r\n var element;\r\n if (typeof el === \"string\") {\r\n element = document.querySelector(el);\r\n } else if (el.nodeType != null) {\r\n element = el;\r\n }\r\n if (element == null) {\r\n throw new Error(\"Invalid `\" + name + \"` option provided. Please provide a CSS selector or a plain HTML element.\");\r\n }\r\n return element;\r\n };\r\n\r\n Dropzone.getElements = function(els, name) {\r\n var e, el, elements, _i, _j, _len, _len1, _ref;\r\n if (els instanceof Array) {\r\n elements = [];\r\n try {\r\n for (_i = 0, _len = els.length; _i < _len; _i++) {\r\n el = els[_i];\r\n elements.push(this.getElement(el, name));\r\n }\r\n } catch (_error) {\r\n e = _error;\r\n elements = null;\r\n }\r\n } else if (typeof els === \"string\") {\r\n elements = [];\r\n _ref = document.querySelectorAll(els);\r\n for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {\r\n el = _ref[_j];\r\n elements.push(el);\r\n }\r\n } else if (els.nodeType != null) {\r\n elements = [els];\r\n }\r\n if (!((elements != null) && elements.length)) {\r\n throw new Error(\"Invalid `\" + name + \"` option provided. Please provide a CSS selector, a plain HTML element or a list of those.\");\r\n }\r\n return elements;\r\n };\r\n\r\n Dropzone.confirm = function(question, accepted, rejected) {\r\n if (window.confirm(question)) {\r\n return accepted();\r\n } else if (rejected != null) {\r\n return rejected();\r\n }\r\n };\r\n\r\n Dropzone.isValidFile = function(file, acceptedFiles) {\r\n var baseMimeType, mimeType, validType, _i, _len;\r\n if (!acceptedFiles) {\r\n return true;\r\n }\r\n acceptedFiles = acceptedFiles.split(\",\");\r\n mimeType = file.type;\r\n baseMimeType = mimeType.replace(/\\/.*$/, \"\");\r\n for (_i = 0, _len = acceptedFiles.length; _i < _len; _i++) {\r\n validType = acceptedFiles[_i];\r\n validType = validType.trim();\r\n if (validType.charAt(0) === \".\") {\r\n if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) {\r\n return true;\r\n }\r\n } else if (/\\/\\*$/.test(validType)) {\r\n if (baseMimeType === validType.replace(/\\/.*$/, \"\")) {\r\n return true;\r\n }\r\n } else {\r\n if (mimeType === validType) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n if (typeof jQuery !== \"undefined\" && jQuery !== null) {\r\n jQuery.fn.dropzone = function(options) {\r\n return this.each(function() {\r\n return new Dropzone(this, options);\r\n });\r\n };\r\n }\r\n\r\n if (typeof module !== \"undefined\" && module !== null) {\r\n module.exports = Dropzone;\r\n } else {\r\n window.Dropzone = Dropzone;\r\n }\r\n\r\n Dropzone.ADDED = \"added\";\r\n\r\n Dropzone.QUEUED = \"queued\";\r\n\r\n Dropzone.ACCEPTED = Dropzone.QUEUED;\r\n\r\n Dropzone.UPLOADING = \"uploading\";\r\n\r\n Dropzone.PROCESSING = Dropzone.UPLOADING;\r\n\r\n Dropzone.CANCELED = \"canceled\";\r\n\r\n Dropzone.ERROR = \"error\";\r\n\r\n Dropzone.SUCCESS = \"success\";\r\n\r\n\r\n /*\r\n\r\n Bugfix for iOS 6 and 7\r\n Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios\r\n based on the work of https://github.com/stomita/ios-imagefile-megapixel\r\n */\r\n\r\n detectVerticalSquash = function(img) {\r\n var alpha, canvas, ctx, data, ey, ih, iw, py, ratio, sy;\r\n iw = img.naturalWidth;\r\n ih = img.naturalHeight;\r\n canvas = document.createElement(\"canvas\");\r\n canvas.width = 1;\r\n canvas.height = ih;\r\n ctx = canvas.getContext(\"2d\");\r\n ctx.drawImage(img, 0, 0);\r\n data = ctx.getImageData(0, 0, 1, ih).data;\r\n sy = 0;\r\n ey = ih;\r\n py = ih;\r\n while (py > sy) {\r\n alpha = data[(py - 1) * 4 + 3];\r\n if (alpha === 0) {\r\n ey = py;\r\n } else {\r\n sy = py;\r\n }\r\n py = (ey + sy) >> 1;\r\n }\r\n ratio = py / ih;\r\n if (ratio === 0) {\r\n return 1;\r\n } else {\r\n return ratio;\r\n }\r\n };\r\n\r\n drawImageIOSFix = function(ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {\r\n var vertSquashRatio;\r\n vertSquashRatio = detectVerticalSquash(img);\r\n return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);\r\n };\r\n\r\n\r\n /*\r\n * contentloaded.js\r\n *\r\n * Author: Diego Perini (diego.perini at gmail.com)\r\n * Summary: cross-browser wrapper for DOMContentLoaded\r\n * Updated: 20101020\r\n * License: MIT\r\n * Version: 1.2\r\n *\r\n * URL:\r\n * http://javascript.nwbox.com/ContentLoaded/\r\n * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE\r\n */\r\n\r\n contentLoaded = function(win, fn) {\r\n var add, doc, done, init, poll, pre, rem, root, top;\r\n done = false;\r\n top = true;\r\n doc = win.document;\r\n root = doc.documentElement;\r\n add = (doc.addEventListener ? \"addEventListener\" : \"attachEvent\");\r\n rem = (doc.addEventListener ? \"removeEventListener\" : \"detachEvent\");\r\n pre = (doc.addEventListener ? \"\" : \"on\");\r\n init = function(e) {\r\n if (e.type === \"readystatechange\" && doc.readyState !== \"complete\") {\r\n return;\r\n }\r\n (e.type === \"load\" ? win : doc)[rem](pre + e.type, init, false);\r\n if (!done && (done = true)) {\r\n return fn.call(win, e.type || e);\r\n }\r\n };\r\n poll = function() {\r\n var e;\r\n try {\r\n root.doScroll(\"left\");\r\n } catch (_error) {\r\n e = _error;\r\n setTimeout(poll, 50);\r\n return;\r\n }\r\n return init(\"poll\");\r\n };\r\n if (doc.readyState !== \"complete\") {\r\n if (doc.createEventObject && root.doScroll) {\r\n try {\r\n top = !win.frameElement;\r\n } catch (_error) {}\r\n if (top) {\r\n poll();\r\n }\r\n }\r\n doc[add](pre + \"DOMContentLoaded\", init, false);\r\n doc[add](pre + \"readystatechange\", init, false);\r\n return win[add](pre + \"load\", init, false);\r\n }\r\n };\r\n\r\n Dropzone._autoDiscoverFunction = function() {\r\n if (Dropzone.autoDiscover) {\r\n return Dropzone.discover();\r\n }\r\n };\r\n\r\n contentLoaded(window, Dropzone._autoDiscoverFunction);\r\n\r\n}).call(this);\r\n","/*jshint browser:true */\r\n/* global define, module */\r\n(function ( root, factory ) {\r\n\tif ( typeof define === 'function' && define.amd ) {\r\n\t\tdefine( [], factory );\r\n\t} else if ( typeof module === 'object' ) {\r\n\t\tmodule.exports = factory();\r\n\t} else {\r\n\t\troot.format = factory();\r\n\t}\r\n}( this, function () {\r\n\r\n\treturn function ( mask, value ) {\r\n\t\t'use strict';\r\n\t\tif ( !mask || isNaN( +value ) ) {\r\n\t\t\treturn value; // return as it is.\r\n\t\t}\r\n\r\n\t\tvar isNegative, result, decimal, group, posLeadZero, posTrailZero, posSeparator,\r\n\t\t\tpart, szSep, integer,\r\n\r\n\t\t\t// find prefix/suffix\r\n\t\t\tlen = mask.length,\r\n\t\t\tstart = mask.search( /[0-9\\-\\+#]/ ),\r\n\t\t\tprefix = start > 0 ? mask.substring( 0, start ) : '',\r\n\t\t\t// reverse string: not an ideal method if there are surrogate pairs\r\n\t\t\tstr = mask.split( '' ).reverse().join( '' ),\r\n\t\t\tend = str.search( /[0-9\\-\\+#]/ ),\r\n\t\t\toffset = len - end,\r\n\t\t\tsubstr = mask.substring( offset, offset + 1 ),\r\n\t\t\tindx = offset + ( ( substr === '.' || ( substr === ',' )) ? 1 : 0 ),\r\n\t\t\tsuffix = end > 0 ? mask.substring( indx, len ) : '';\r\n\r\n\t\t// mask with prefix & suffix removed\r\n\t\tmask = mask.substring( start, indx );\r\n\r\n\t\t// convert any string to number according to formation sign.\r\n\t\tvalue = mask.charAt( 0 ) === '-' ? -value : +value;\r\n\t\tisNegative = value < 0 ? value = -value : 0; // process only abs(), and turn on flag.\r\n\r\n\t\t// search for separator for grp & decimal, anything not digit, not +/- sign, not #.\r\n\t\tresult = mask.match( /[^\\d\\-\\+#]/g );\r\n\t\tdecimal = ( result && result[ result.length - 1 ] ) || '.'; // treat the right most symbol as decimal\r\n\t\tgroup = ( result && result[ 1 ] && result[ 0 ] ) || ','; // treat the left most symbol as group separator\r\n\r\n\t\t// split the decimal for the format string if any.\r\n\t\tmask = mask.split( decimal );\r\n\t\t// Fix the decimal first, toFixed will auto fill trailing zero.\r\n\t\tvalue = value.toFixed( mask[ 1 ] && mask[ 1 ].length );\r\n\t\tvalue = +( value ) + ''; // convert number to string to trim off *all* trailing decimal zero(es)\r\n\r\n\t\t// fill back any trailing zero according to format\r\n\t\tposTrailZero = mask[ 1 ] && mask[ 1 ].lastIndexOf( '0' ); // look for last zero in format\r\n\t\tpart = value.split( '.' );\r\n\t\t// integer will get !part[1]\r\n\t\tif ( !part[ 1 ] || ( part[ 1 ] && part[ 1 ].length <= posTrailZero ) ) {\r\n\t\t\tvalue = ( +value ).toFixed( posTrailZero + 1 );\r\n\t\t}\r\n\t\tszSep = mask[ 0 ].split( group ); // look for separator\r\n\t\tmask[ 0 ] = szSep.join( '' ); // join back without separator for counting the pos of any leading 0.\r\n\r\n\t\tposLeadZero = mask[ 0 ] && mask[ 0 ].indexOf( '0' );\r\n\t\tif ( posLeadZero > -1 ) {\r\n\t\t\twhile ( part[ 0 ].length < ( mask[ 0 ].length - posLeadZero ) ) {\r\n\t\t\t\tpart[ 0 ] = '0' + part[ 0 ];\r\n\t\t\t}\r\n\t\t} else if ( +part[ 0 ] === 0 ) {\r\n\t\t\tpart[ 0 ] = '';\r\n\t\t}\r\n\r\n\t\tvalue = value.split( '.' );\r\n\t\tvalue[ 0 ] = part[ 0 ];\r\n\r\n\t\t// process the first group separator from decimal (.) only, the rest ignore.\r\n\t\t// get the length of the last slice of split result.\r\n\t\tposSeparator = ( szSep[ 1 ] && szSep[ szSep.length - 1 ].length );\r\n\t\tif ( posSeparator ) {\r\n\t\t\tinteger = value[ 0 ];\r\n\t\t\tstr = '';\r\n\t\t\toffset = integer.length % posSeparator;\r\n\t\t\tlen = integer.length;\r\n\t\t\tfor ( indx = 0; indx < len; indx++ ) {\r\n\t\t\t\tstr += integer.charAt( indx ); // ie6 only support charAt for sz.\r\n\t\t\t\t// -posSeparator so that won't trail separator on full length\r\n\t\t\t\t/*jshint -W018 */\r\n\t\t\t\tif ( !( ( indx - offset + 1 ) % posSeparator ) && indx < len - posSeparator ) {\r\n\t\t\t\t\tstr += group;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvalue[ 0 ] = str;\r\n\t\t}\r\n\t\tvalue[ 1 ] = ( mask[ 1 ] && value[ 1 ] ) ? decimal + value[ 1 ] : '';\r\n\r\n\t\t// remove negative sign if result is zero\r\n\t\tresult = value.join( '' );\r\n\t\tif ( result === '0' || result === '' ) {\r\n\t\t\t// remove negative sign if result is zero\r\n\t\t\tisNegative = false;\r\n\t\t}\r\n\r\n\t\t// put back any negation, combine integer and fraction, and add back prefix & suffix\r\n\t\treturn prefix + ( ( isNegative ? '-' : '' ) + result ) + suffix;\r\n\t};\r\n\r\n} ));\r\n","!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var t;t=\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this,t.hoverintent=e()}}(function(){return function e(t,n,o){function r(u,f){if(!n[u]){if(!t[u]){var s=\"function\"==typeof require&&require;if(!f&&s)return s(u,!0);if(i)return i(u,!0);var c=new Error(\"Cannot find module '\"+u+\"'\");throw c.code=\"MODULE_NOT_FOUND\",c}var a=n[u]={exports:{}};t[u][0].call(a.exports,function(e){var n=t[u][1][e];return r(n?n:e)},a,a.exports,e,t,n,o)}return n[u].exports}for(var i=\"function\"==typeof require&&require,u=0;u 0) ? path.split('/').slice(0, -1).join('/') + '/' : '';\r\n }\r\n\r\n // based on code by Paul Irish https://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n var setAnimationFrame = _win.requestAnimationFrame || _win.webkitRequestAnimationFrame || _win.mozRequestAnimationFrame || false;\r\n var clearAnimationFrame = _win.cancelAnimationFrame || _win.webkitCancelAnimationFrame || _win.mozCancelAnimationFrame || false;\r\n\r\n if (!setAnimationFrame) {\r\n var anilasttime = 0;\r\n setAnimationFrame = function (callback, element) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - anilasttime));\r\n var id = _win.setTimeout(function () { callback(currTime + timeToCall); },\r\n timeToCall);\r\n anilasttime = currTime + timeToCall;\r\n return id;\r\n };\r\n clearAnimationFrame = function (id) {\r\n _win.clearTimeout(id);\r\n };\r\n } else {\r\n if (!_win.cancelAnimationFrame) clearAnimationFrame = function (id) { };\r\n }\r\n\r\n var ClsMutationObserver = _win.MutationObserver || _win.WebKitMutationObserver || false;\r\n\r\n var now = Date.now || function () { return new Date().getTime(); };\r\n\r\n var _globaloptions = {\r\n zindex: \"auto\",\r\n cursoropacitymin: 0,\r\n cursoropacitymax: 1,\r\n cursorcolor: \"#424242\",\r\n cursorwidth: \"6px\",\r\n cursorborder: \"1px solid #fff\",\r\n cursorborderradius: \"5px\",\r\n scrollspeed: 40,\r\n mousescrollstep: 9 * 3,\r\n touchbehavior: false, // deprecated\r\n emulatetouch: false, // replacing touchbehavior\r\n hwacceleration: true,\r\n usetransition: true,\r\n boxzoom: false,\r\n dblclickzoom: true,\r\n gesturezoom: true,\r\n grabcursorenabled: true,\r\n autohidemode: true,\r\n background: \"\",\r\n iframeautoresize: true,\r\n cursorminheight: 32,\r\n preservenativescrolling: true,\r\n railoffset: false,\r\n railhoffset: false,\r\n bouncescroll: true,\r\n spacebarenabled: true,\r\n railpadding: {\r\n top: 0,\r\n right: 0,\r\n left: 0,\r\n bottom: 0\r\n },\r\n disableoutline: true,\r\n horizrailenabled: true,\r\n railalign: \"right\",\r\n railvalign: \"bottom\",\r\n enabletranslate3d: true,\r\n enablemousewheel: true,\r\n enablekeyboard: true,\r\n smoothscroll: true,\r\n sensitiverail: true,\r\n enablemouselockapi: true,\r\n // cursormaxheight:false,\r\n cursorfixedheight: false,\r\n directionlockdeadzone: 6,\r\n hidecursordelay: 400,\r\n nativeparentscrolling: true,\r\n enablescrollonselection: true,\r\n overflowx: true,\r\n overflowy: true,\r\n cursordragspeed: 0.3,\r\n rtlmode: \"auto\",\r\n cursordragontouch: false,\r\n oneaxismousemode: \"auto\",\r\n scriptpath: getScriptPath(),\r\n preventmultitouchscrolling: true,\r\n disablemutationobserver: false,\r\n enableobserver: true,\r\n scrollbarid: false\r\n };\r\n\r\n var browserdetected = false;\r\n\r\n var getBrowserDetection = function () {\r\n\r\n if (browserdetected) return browserdetected;\r\n\r\n var _el = _doc.createElement('DIV'),\r\n _style = _el.style,\r\n _agent = navigator.userAgent,\r\n _platform = navigator.platform,\r\n d = {};\r\n\r\n d.haspointerlock = \"pointerLockElement\" in _doc || \"webkitPointerLockElement\" in _doc || \"mozPointerLockElement\" in _doc;\r\n\r\n d.isopera = (\"opera\" in _win); // 12-\r\n d.isopera12 = (d.isopera && (\"getUserMedia\" in navigator));\r\n d.isoperamini = (Object.prototype.toString.call(_win.operamini) === \"[object OperaMini]\");\r\n\r\n d.isie = ((\"all\" in _doc) && (\"attachEvent\" in _el) && !d.isopera); //IE10-\r\n d.isieold = (d.isie && !(\"msInterpolationMode\" in _style)); // IE6 and older\r\n d.isie7 = d.isie && !d.isieold && (!(\"documentMode\" in _doc) || (_doc.documentMode === 7));\r\n d.isie8 = d.isie && (\"documentMode\" in _doc) && (_doc.documentMode === 8);\r\n d.isie9 = d.isie && (\"performance\" in _win) && (_doc.documentMode === 9);\r\n d.isie10 = d.isie && (\"performance\" in _win) && (_doc.documentMode === 10);\r\n d.isie11 = (\"msRequestFullscreen\" in _el) && (_doc.documentMode >= 11); // IE11+\r\n\r\n d.ismsedge = (\"msCredentials\" in _win); // MS Edge 14+\r\n\r\n d.ismozilla = (\"MozAppearance\" in _style);\r\n\r\n d.iswebkit = !d.ismsedge && (\"WebkitAppearance\" in _style);\r\n\r\n d.ischrome = d.iswebkit && (\"chrome\" in _win);\r\n d.ischrome38 = (d.ischrome && (\"touchAction\" in _style)); // behavior changed in touch emulation\r\n d.ischrome22 = (!d.ischrome38) && (d.ischrome && d.haspointerlock);\r\n d.ischrome26 = (!d.ischrome38) && (d.ischrome && (\"transition\" in _style)); // issue with transform detection (maintain prefix)\r\n\r\n d.cantouch = (\"ontouchstart\" in _doc.documentElement) || (\"ontouchstart\" in _win); // with detection for Chrome Touch Emulation\r\n d.hasw3ctouch = (_win.PointerEvent || false) && ((navigator.maxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0)); //IE11 pointer events, following W3C Pointer Events spec\r\n d.hasmstouch = (!d.hasw3ctouch) && (_win.MSPointerEvent || false); // IE10 pointer events\r\n\r\n d.ismac = /^mac$/i.test(_platform);\r\n\r\n d.isios = d.cantouch && /iphone|ipad|ipod/i.test(_platform);\r\n d.isios4 = d.isios && !(\"seal\" in Object);\r\n d.isios7 = d.isios && (\"webkitHidden\" in _doc); //iOS 7+\r\n d.isios8 = d.isios && (\"hidden\" in _doc); //iOS 8+\r\n d.isios10 = d.isios && _win.Proxy; //iOS 10+\r\n\r\n d.isandroid = (/android/i.test(_agent));\r\n\r\n d.haseventlistener = (\"addEventListener\" in _el);\r\n\r\n d.trstyle = false;\r\n d.hastransform = false;\r\n d.hastranslate3d = false;\r\n d.transitionstyle = false;\r\n d.hastransition = false;\r\n d.transitionend = false;\r\n\r\n d.trstyle = \"transform\";\r\n d.hastransform = (\"transform\" in _style) || (function () {\r\n var check = ['msTransform', 'webkitTransform', 'MozTransform', 'OTransform'];\r\n for (var a = 0, c = check.length; a < c; a++) {\r\n if (_style[check[a]] !== undefined) {\r\n d.trstyle = check[a];\r\n break;\r\n }\r\n }\r\n d.hastransform = (!!d.trstyle);\r\n })();\r\n\r\n if (d.hastransform) {\r\n _style[d.trstyle] = \"translate3d(1px,2px,3px)\";\r\n d.hastranslate3d = /translate3d/.test(_style[d.trstyle]);\r\n }\r\n\r\n d.transitionstyle = \"transition\";\r\n d.prefixstyle = '';\r\n d.transitionend = \"transitionend\";\r\n\r\n d.hastransition = (\"transition\" in _style) || (function () {\r\n\r\n d.transitionend = false;\r\n var check = ['webkitTransition', 'msTransition', 'MozTransition', 'OTransition', 'OTransition', 'KhtmlTransition'];\r\n var prefix = ['-webkit-', '-ms-', '-moz-', '-o-', '-o', '-khtml-'];\r\n var evs = ['webkitTransitionEnd', 'msTransitionEnd', 'transitionend', 'otransitionend', 'oTransitionEnd', 'KhtmlTransitionEnd'];\r\n for (var a = 0, c = check.length; a < c; a++) {\r\n if (check[a] in _style) {\r\n d.transitionstyle = check[a];\r\n d.prefixstyle = prefix[a];\r\n d.transitionend = evs[a];\r\n break;\r\n }\r\n }\r\n if (d.ischrome26) d.prefixstyle = prefix[1]; // always use prefix\r\n\r\n d.hastransition = (d.transitionstyle);\r\n\r\n })();\r\n\r\n function detectCursorGrab() {\r\n var lst = ['grab', '-webkit-grab', '-moz-grab'];\r\n if ((d.ischrome && !d.ischrome38) || d.isie) lst = []; // force setting for IE returns false positive and chrome cursor bug\r\n for (var a = 0, l = lst.length; a < l; a++) {\r\n var p = lst[a];\r\n _style.cursor = p;\r\n if (_style.cursor == p) return p;\r\n }\r\n return 'url(https://cdnjs.cloudflare.com/ajax/libs/slider-pro/1.3.0/css/images/openhand.cur),n-resize'; // thanks to https://cdnjs.com/ for the openhand cursor!\r\n }\r\n d.cursorgrabvalue = detectCursorGrab();\r\n\r\n d.hasmousecapture = (\"setCapture\" in _el);\r\n\r\n d.hasMutationObserver = (ClsMutationObserver !== false);\r\n\r\n _el = null; //memory released\r\n\r\n browserdetected = d;\r\n\r\n return d;\r\n };\r\n\r\n var NiceScrollClass = function (myopt, me) {\r\n\r\n var self = this;\r\n\r\n this.version = '3.7.6';\r\n this.name = 'nicescroll';\r\n\r\n this.me = me;\r\n\r\n var $body = $(\"body\");\r\n\r\n var opt = this.opt = {\r\n doc: $body,\r\n win: false\r\n };\r\n\r\n $.extend(opt, _globaloptions); // clone opts\r\n\r\n // Options for internal use\r\n opt.snapbackspeed = 80;\r\n\r\n if (myopt || false) {\r\n for (var a in opt) {\r\n if (myopt[a] !== undefined) opt[a] = myopt[a];\r\n }\r\n }\r\n\r\n if (opt.disablemutationobserver) ClsMutationObserver = false;\r\n\r\n this.doc = opt.doc;\r\n this.iddoc = (this.doc && this.doc[0]) ? this.doc[0].id || '' : '';\r\n this.ispage = /^BODY|HTML/.test((opt.win) ? opt.win[0].nodeName : this.doc[0].nodeName);\r\n this.haswrapper = (opt.win !== false);\r\n this.win = opt.win || (this.ispage ? $window : this.doc);\r\n this.docscroll = (this.ispage && !this.haswrapper) ? $window : this.win;\r\n this.body = $body;\r\n this.viewport = false;\r\n\r\n this.isfixed = false;\r\n\r\n this.iframe = false;\r\n this.isiframe = ((this.doc[0].nodeName == 'IFRAME') && (this.win[0].nodeName == 'IFRAME'));\r\n\r\n this.istextarea = (this.win[0].nodeName == 'TEXTAREA');\r\n\r\n this.forcescreen = false; //force to use screen position on events\r\n\r\n this.canshowonmouseevent = (opt.autohidemode != \"scroll\");\r\n\r\n // Events jump table\r\n this.onmousedown = false;\r\n this.onmouseup = false;\r\n this.onmousemove = false;\r\n this.onmousewheel = false;\r\n this.onkeypress = false;\r\n this.ongesturezoom = false;\r\n this.onclick = false;\r\n\r\n // Nicescroll custom events\r\n this.onscrollstart = false;\r\n this.onscrollend = false;\r\n this.onscrollcancel = false;\r\n\r\n this.onzoomin = false;\r\n this.onzoomout = false;\r\n\r\n // Let's start!\r\n this.view = false;\r\n this.page = false;\r\n\r\n this.scroll = {\r\n x: 0,\r\n y: 0\r\n };\r\n this.scrollratio = {\r\n x: 0,\r\n y: 0\r\n };\r\n this.cursorheight = 20;\r\n this.scrollvaluemax = 0;\r\n\r\n // http://dev.w3.org/csswg/css-writing-modes-3/#logical-to-physical\r\n // http://dev.w3.org/csswg/css-writing-modes-3/#svg-writing-mode\r\n if (opt.rtlmode == \"auto\") {\r\n var target = this.win[0] == _win ? this.body : this.win;\r\n var writingMode = target.css(\"writing-mode\") || target.css(\"-webkit-writing-mode\") || target.css(\"-ms-writing-mode\") || target.css(\"-moz-writing-mode\");\r\n\r\n if (writingMode == \"horizontal-tb\" || writingMode == \"lr-tb\" || writingMode === \"\") {\r\n this.isrtlmode = (target.css(\"direction\") == \"rtl\");\r\n this.isvertical = false;\r\n } else {\r\n this.isrtlmode = (writingMode == \"vertical-rl\" || writingMode == \"tb\" || writingMode == \"tb-rl\" || writingMode == \"rl-tb\");\r\n this.isvertical = (writingMode == \"vertical-rl\" || writingMode == \"tb\" || writingMode == \"tb-rl\");\r\n }\r\n } else {\r\n this.isrtlmode = (opt.rtlmode === true);\r\n this.isvertical = false;\r\n }\r\n // this.checkrtlmode = false;\r\n\r\n this.scrollrunning = false;\r\n\r\n this.scrollmom = false;\r\n\r\n this.observer = false; // observer div changes\r\n this.observerremover = false; // observer on parent for remove detection\r\n this.observerbody = false; // observer on body for position change\r\n\r\n if (opt.scrollbarid !== false) {\r\n this.id = opt.scrollbarid;\r\n } else {\r\n do {\r\n this.id = \"ascrail\" + (ascrailcounter++);\r\n } while (_doc.getElementById(this.id));\r\n }\r\n\r\n this.rail = false;\r\n this.cursor = false;\r\n this.cursorfreezed = false;\r\n this.selectiondrag = false;\r\n\r\n this.zoom = false;\r\n this.zoomactive = false;\r\n\r\n this.hasfocus = false;\r\n this.hasmousefocus = false;\r\n\r\n //this.visibility = true;\r\n this.railslocked = false; // locked by resize\r\n this.locked = false; // prevent lost of locked status sets by user\r\n this.hidden = false; // rails always hidden\r\n this.cursoractive = true; // user can interact with cursors\r\n\r\n this.wheelprevented = false; //prevent mousewheel event\r\n\r\n this.overflowx = opt.overflowx;\r\n this.overflowy = opt.overflowy;\r\n\r\n this.nativescrollingarea = false;\r\n this.checkarea = 0;\r\n\r\n this.events = []; // event list for unbind\r\n\r\n this.saved = {}; // style saved\r\n\r\n this.delaylist = {};\r\n this.synclist = {};\r\n\r\n this.lastdeltax = 0;\r\n this.lastdeltay = 0;\r\n\r\n this.detected = getBrowserDetection();\r\n\r\n var cap = $.extend({}, this.detected);\r\n\r\n this.canhwscroll = (cap.hastransform && opt.hwacceleration);\r\n this.ishwscroll = (this.canhwscroll && self.haswrapper);\r\n\r\n if (!this.isrtlmode) {\r\n this.hasreversehr = false;\r\n } else if (this.isvertical) { // RTL mode with reverse horizontal axis\r\n this.hasreversehr = !(cap.iswebkit || cap.isie || cap.isie11);\r\n } else {\r\n this.hasreversehr = !(cap.iswebkit || (cap.isie && !cap.isie10 && !cap.isie11));\r\n }\r\n\r\n this.istouchcapable = false; // desktop devices with touch screen support\r\n\r\n //## Check WebKit-based desktop with touch support\r\n //## + Firefox 18 nightly build (desktop) false positive (or desktop with touch support)\r\n\r\n if (!cap.cantouch && (cap.hasw3ctouch || cap.hasmstouch)) { // desktop device with multiple input\r\n this.istouchcapable = true;\r\n } else if (cap.cantouch && !cap.isios && !cap.isandroid && (cap.iswebkit || cap.ismozilla)) {\r\n this.istouchcapable = true;\r\n }\r\n\r\n //## disable MouseLock API on user request\r\n if (!opt.enablemouselockapi) {\r\n cap.hasmousecapture = false;\r\n cap.haspointerlock = false;\r\n }\r\n\r\n this.debounced = function (name, fn, tm) {\r\n if (!self) return;\r\n var dd = self.delaylist[name] || false;\r\n if (!dd) {\r\n self.delaylist[name] = {\r\n h: setAnimationFrame(function () {\r\n self.delaylist[name].fn.call(self);\r\n self.delaylist[name] = false;\r\n }, tm)\r\n };\r\n fn.call(self);\r\n }\r\n self.delaylist[name].fn = fn;\r\n };\r\n\r\n\r\n this.synched = function (name, fn) {\r\n if (self.synclist[name]) self.synclist[name] = fn;\r\n else {\r\n self.synclist[name] = fn;\r\n setAnimationFrame(function () {\r\n if (!self) return;\r\n self.synclist[name] && self.synclist[name].call(self);\r\n self.synclist[name] = null;\r\n });\r\n }\r\n };\r\n\r\n this.unsynched = function (name) {\r\n if (self.synclist[name]) self.synclist[name] = false;\r\n };\r\n\r\n this.css = function (el, pars) { // save & set\r\n for (var n in pars) {\r\n self.saved.css.push([el, n, el.css(n)]);\r\n el.css(n, pars[n]);\r\n }\r\n };\r\n\r\n this.scrollTop = function (val) {\r\n return (val === undefined) ? self.getScrollTop() : self.setScrollTop(val);\r\n };\r\n\r\n this.scrollLeft = function (val) {\r\n return (val === undefined) ? self.getScrollLeft() : self.setScrollLeft(val);\r\n };\r\n\r\n // derived by by Dan Pupius www.pupius.net\r\n var BezierClass = function (st, ed, spd, p1, p2, p3, p4) {\r\n\r\n this.st = st;\r\n this.ed = ed;\r\n this.spd = spd;\r\n\r\n this.p1 = p1 || 0;\r\n this.p2 = p2 || 1;\r\n this.p3 = p3 || 0;\r\n this.p4 = p4 || 1;\r\n\r\n this.ts = now();\r\n this.df = ed - st;\r\n };\r\n BezierClass.prototype = {\r\n B2: function (t) {\r\n return 3 * (1 - t) * (1 - t) * t;\r\n },\r\n B3: function (t) {\r\n return 3 * (1 - t) * t * t;\r\n },\r\n B4: function (t) {\r\n return t * t * t;\r\n },\r\n getPos: function () {\r\n return (now() - this.ts) / this.spd;\r\n },\r\n getNow: function () {\r\n var pc = (now() - this.ts) / this.spd;\r\n var bz = this.B2(pc) + this.B3(pc) + this.B4(pc);\r\n return (pc >= 1) ? this.ed : this.st + (this.df * bz) | 0;\r\n },\r\n update: function (ed, spd) {\r\n this.st = this.getNow();\r\n this.ed = ed;\r\n this.spd = spd;\r\n this.ts = now();\r\n this.df = this.ed - this.st;\r\n return this;\r\n }\r\n };\r\n\r\n //derived from http://stackoverflow.com/questions/11236090/\r\n function getMatrixValues() {\r\n var tr = self.doc.css(cap.trstyle);\r\n if (tr && (tr.substr(0, 6) == \"matrix\")) {\r\n return tr.replace(/^.*\\((.*)\\)$/g, \"$1\").replace(/px/g, '').split(/, +/);\r\n }\r\n return false;\r\n }\r\n\r\n if (this.ishwscroll) { // hw accelerated scroll\r\n\r\n this.doc.translate = {\r\n x: 0,\r\n y: 0,\r\n tx: \"0px\",\r\n ty: \"0px\"\r\n };\r\n\r\n //this one can help to enable hw accel on ios6 http://indiegamr.com/ios6-html-hardware-acceleration-changes-and-how-to-fix-them/\r\n if (cap.hastranslate3d && cap.isios) this.doc.css(\"-webkit-backface-visibility\", \"hidden\"); // prevent flickering http://stackoverflow.com/questions/3461441/\r\n\r\n this.getScrollTop = function (last) {\r\n if (!last) {\r\n var mtx = getMatrixValues();\r\n if (mtx) return (mtx.length == 16) ? -mtx[13] : -mtx[5]; //matrix3d 16 on IE10\r\n if (self.timerscroll && self.timerscroll.bz) return self.timerscroll.bz.getNow();\r\n }\r\n return self.doc.translate.y;\r\n };\r\n\r\n this.getScrollLeft = function (last) {\r\n if (!last) {\r\n var mtx = getMatrixValues();\r\n if (mtx) return (mtx.length == 16) ? -mtx[12] : -mtx[4]; //matrix3d 16 on IE10\r\n if (self.timerscroll && self.timerscroll.bh) return self.timerscroll.bh.getNow();\r\n }\r\n return self.doc.translate.x;\r\n };\r\n\r\n this.notifyScrollEvent = function (el) {\r\n var e = _doc.createEvent(\"UIEvents\");\r\n e.initUIEvent(\"scroll\", false, false, _win, 1);\r\n e.niceevent = true;\r\n el.dispatchEvent(e);\r\n };\r\n\r\n var cxscrollleft = (this.isrtlmode) ? 1 : -1;\r\n\r\n if (cap.hastranslate3d && opt.enabletranslate3d) {\r\n this.setScrollTop = function (val, silent) {\r\n self.doc.translate.y = val;\r\n self.doc.translate.ty = (val * -1) + \"px\";\r\n self.doc.css(cap.trstyle, \"translate3d(\" + self.doc.translate.tx + \",\" + self.doc.translate.ty + \",0)\");\r\n if (!silent) self.notifyScrollEvent(self.win[0]);\r\n };\r\n this.setScrollLeft = function (val, silent) {\r\n self.doc.translate.x = val;\r\n self.doc.translate.tx = (val * cxscrollleft) + \"px\";\r\n self.doc.css(cap.trstyle, \"translate3d(\" + self.doc.translate.tx + \",\" + self.doc.translate.ty + \",0)\");\r\n if (!silent) self.notifyScrollEvent(self.win[0]);\r\n };\r\n } else {\r\n this.setScrollTop = function (val, silent) {\r\n self.doc.translate.y = val;\r\n self.doc.translate.ty = (val * -1) + \"px\";\r\n self.doc.css(cap.trstyle, \"translate(\" + self.doc.translate.tx + \",\" + self.doc.translate.ty + \")\");\r\n if (!silent) self.notifyScrollEvent(self.win[0]);\r\n };\r\n this.setScrollLeft = function (val, silent) {\r\n self.doc.translate.x = val;\r\n self.doc.translate.tx = (val * cxscrollleft) + \"px\";\r\n self.doc.css(cap.trstyle, \"translate(\" + self.doc.translate.tx + \",\" + self.doc.translate.ty + \")\");\r\n if (!silent) self.notifyScrollEvent(self.win[0]);\r\n };\r\n }\r\n } else { // native scroll\r\n\r\n this.getScrollTop = function () {\r\n return self.docscroll.scrollTop();\r\n };\r\n this.setScrollTop = function (val) {\r\n self.docscroll.scrollTop(val);\r\n };\r\n\r\n this.getScrollLeft = function () {\r\n var val;\r\n if (!self.hasreversehr) {\r\n val = self.docscroll.scrollLeft();\r\n } else if (self.detected.ismozilla) {\r\n val = self.page.maxw - Math.abs(self.docscroll.scrollLeft());\r\n } else {\r\n val = self.page.maxw - self.docscroll.scrollLeft();\r\n }\r\n return val;\r\n };\r\n this.setScrollLeft = function (val) {\r\n return setTimeout(function () {\r\n if (!self) return;\r\n if (self.hasreversehr) {\r\n if (self.detected.ismozilla) {\r\n val = -(self.page.maxw - val);\r\n } else {\r\n val = self.page.maxw - val;\r\n }\r\n }\r\n return self.docscroll.scrollLeft(val);\r\n }, 1);\r\n };\r\n }\r\n\r\n this.getTarget = function (e) {\r\n if (!e) return false;\r\n if (e.target) return e.target;\r\n if (e.srcElement) return e.srcElement;\r\n return false;\r\n };\r\n\r\n this.hasParent = function (e, id) {\r\n if (!e) return false;\r\n var el = e.target || e.srcElement || e || false;\r\n while (el && el.id != id) {\r\n el = el.parentNode || false;\r\n }\r\n return (el !== false);\r\n };\r\n\r\n function getZIndex() {\r\n var dom = self.win;\r\n if (\"zIndex\" in dom) return dom.zIndex(); // use jQuery UI method when available\r\n while (dom.length > 0) {\r\n if (dom[0].nodeType == 9) return false;\r\n var zi = dom.css('zIndex');\r\n if (!isNaN(zi) && zi !== 0) return parseInt(zi);\r\n dom = dom.parent();\r\n }\r\n return false;\r\n }\r\n\r\n //inspired by http://forum.jquery.com/topic/width-includes-border-width-when-set-to-thin-medium-thick-in-ie\r\n var _convertBorderWidth = {\r\n \"thin\": 1,\r\n \"medium\": 3,\r\n \"thick\": 5\r\n };\r\n\r\n function getWidthToPixel(dom, prop, chkheight) {\r\n var wd = dom.css(prop);\r\n var px = parseFloat(wd);\r\n if (isNaN(px)) {\r\n px = _convertBorderWidth[wd] || 0;\r\n var brd = (px == 3) ? ((chkheight) ? (self.win.outerHeight() - self.win.innerHeight()) : (self.win.outerWidth() - self.win.innerWidth())) : 1; //DON'T TRUST CSS\r\n if (self.isie8 && px) px += 1;\r\n return (brd) ? px : 0;\r\n }\r\n return px;\r\n }\r\n\r\n this.getDocumentScrollOffset = function () {\r\n return {\r\n top: _win.pageYOffset || _doc.documentElement.scrollTop,\r\n left: _win.pageXOffset || _doc.documentElement.scrollLeft\r\n };\r\n };\r\n\r\n this.getOffset = function () {\r\n if (self.isfixed) {\r\n var ofs = self.win.offset(); // fix Chrome auto issue (when right/bottom props only)\r\n var scrl = self.getDocumentScrollOffset();\r\n ofs.top -= scrl.top;\r\n ofs.left -= scrl.left;\r\n return ofs;\r\n }\r\n var ww = self.win.offset();\r\n if (!self.viewport) return ww;\r\n var vp = self.viewport.offset();\r\n return {\r\n top: ww.top - vp.top,\r\n left: ww.left - vp.left\r\n };\r\n };\r\n\r\n this.updateScrollBar = function (len) {\r\n var pos, off;\r\n if (self.ishwscroll) {\r\n self.rail.css({\r\n height: self.win.innerHeight() - (opt.railpadding.top + opt.railpadding.bottom)\r\n });\r\n if (self.railh) self.railh.css({\r\n width: self.win.innerWidth() - (opt.railpadding.left + opt.railpadding.right)\r\n });\r\n } else {\r\n var wpos = self.getOffset();\r\n pos = {\r\n top: wpos.top,\r\n left: wpos.left - (opt.railpadding.left + opt.railpadding.right)\r\n };\r\n pos.top += getWidthToPixel(self.win, 'border-top-width', true);\r\n pos.left += (self.rail.align) ? self.win.outerWidth() - getWidthToPixel(self.win, 'border-right-width') - self.rail.width : getWidthToPixel(self.win, 'border-left-width');\r\n\r\n off = opt.railoffset;\r\n if (off) {\r\n if (off.top) pos.top += off.top;\r\n if (off.left) pos.left += off.left;\r\n }\r\n\r\n if (!self.railslocked) self.rail.css({\r\n top: pos.top,\r\n left: pos.left,\r\n height: ((len) ? len.h : self.win.innerHeight()) - (opt.railpadding.top + opt.railpadding.bottom)\r\n });\r\n\r\n if (self.zoom) {\r\n self.zoom.css({\r\n top: pos.top + 1,\r\n left: (self.rail.align == 1) ? pos.left - 20 : pos.left + self.rail.width + 4\r\n });\r\n }\r\n\r\n if (self.railh && !self.railslocked) {\r\n pos = {\r\n top: wpos.top,\r\n left: wpos.left\r\n };\r\n off = opt.railhoffset;\r\n if (off) {\r\n if (off.top) pos.top += off.top;\r\n if (off.left) pos.left += off.left;\r\n }\r\n var y = (self.railh.align) ? pos.top + getWidthToPixel(self.win, 'border-top-width', true) + self.win.innerHeight() - self.railh.height : pos.top + getWidthToPixel(self.win, 'border-top-width', true);\r\n var x = pos.left + getWidthToPixel(self.win, 'border-left-width');\r\n self.railh.css({\r\n top: y - (opt.railpadding.top + opt.railpadding.bottom),\r\n left: x,\r\n width: self.railh.width\r\n });\r\n }\r\n\r\n }\r\n };\r\n\r\n this.doRailClick = function (e, dbl, hr) {\r\n var fn, pg, cur, pos;\r\n\r\n if (self.railslocked) return;\r\n\r\n self.cancelEvent(e);\r\n\r\n if (!(\"pageY\" in e)) {\r\n e.pageX = e.clientX + _doc.documentElement.scrollLeft;\r\n e.pageY = e.clientY + _doc.documentElement.scrollTop;\r\n }\r\n\r\n if (dbl) {\r\n fn = (hr) ? self.doScrollLeft : self.doScrollTop;\r\n cur = (hr) ? ((e.pageX - self.railh.offset().left - (self.cursorwidth / 2)) * self.scrollratio.x) : ((e.pageY - self.rail.offset().top - (self.cursorheight / 2)) * self.scrollratio.y);\r\n self.unsynched(\"relativexy\");\r\n fn(cur|0);\r\n } else {\r\n fn = (hr) ? self.doScrollLeftBy : self.doScrollBy;\r\n cur = (hr) ? self.scroll.x : self.scroll.y;\r\n pos = (hr) ? e.pageX - self.railh.offset().left : e.pageY - self.rail.offset().top;\r\n pg = (hr) ? self.view.w : self.view.h;\r\n fn((cur >= pos) ? pg : -pg);\r\n }\r\n\r\n };\r\n\r\n self.newscrolly = self.newscrollx = 0;\r\n\r\n self.hasanimationframe = (\"requestAnimationFrame\" in _win);\r\n self.hascancelanimationframe = (\"cancelAnimationFrame\" in _win);\r\n\r\n self.hasborderbox = false;\r\n\r\n this.init = function () {\r\n\r\n self.saved.css = [];\r\n\r\n if (cap.isoperamini) return true; // SORRY, DO NOT WORK!\r\n if (cap.isandroid && !(\"hidden\" in _doc)) return true; // Android 3- SORRY, DO NOT WORK!\r\n\r\n opt.emulatetouch = opt.emulatetouch || opt.touchbehavior; // mantain compatibility with \"touchbehavior\"\r\n\r\n self.hasborderbox = _win.getComputedStyle && (_win.getComputedStyle(_doc.body)['box-sizing'] === \"border-box\");\r\n\r\n var _scrollyhidden = { 'overflow-y': 'hidden' };\r\n if (cap.isie11 || cap.isie10) _scrollyhidden['-ms-overflow-style'] = 'none'; // IE 10 & 11 is always a world apart!\r\n\r\n if (self.ishwscroll) {\r\n this.doc.css(cap.transitionstyle, cap.prefixstyle + 'transform 0ms ease-out');\r\n if (cap.transitionend) self.bind(self.doc, cap.transitionend, self.onScrollTransitionEnd, false); //I have got to do something usefull!!\r\n }\r\n\r\n self.zindex = \"auto\";\r\n if (!self.ispage && opt.zindex == \"auto\") {\r\n self.zindex = getZIndex() || \"auto\";\r\n } else {\r\n self.zindex = opt.zindex;\r\n }\r\n\r\n if (!self.ispage && self.zindex != \"auto\" && self.zindex > globalmaxzindex) {\r\n globalmaxzindex = self.zindex;\r\n }\r\n\r\n if (self.isie && self.zindex === 0 && opt.zindex == \"auto\") { // fix IE auto == 0\r\n self.zindex = \"auto\";\r\n }\r\n\r\n if (!self.ispage || !cap.isieold) {\r\n\r\n var cont = self.docscroll;\r\n if (self.ispage) cont = (self.haswrapper) ? self.win : self.doc;\r\n\r\n self.css(cont, _scrollyhidden);\r\n\r\n if (self.ispage && (cap.isie11 || cap.isie)) { // IE 7-11\r\n self.css($(\"html\"), _scrollyhidden);\r\n }\r\n\r\n if (cap.isios && !self.ispage && !self.haswrapper) self.css($body, {\r\n \"-webkit-overflow-scrolling\": \"touch\"\r\n }); //force hw acceleration\r\n\r\n var cursor = $(_doc.createElement('div'));\r\n cursor.css({\r\n position: \"relative\",\r\n top: 0,\r\n \"float\": \"right\",\r\n width: opt.cursorwidth,\r\n height: 0,\r\n 'background-color': opt.cursorcolor,\r\n border: opt.cursorborder,\r\n 'background-clip': 'padding-box',\r\n '-webkit-border-radius': opt.cursorborderradius,\r\n '-moz-border-radius': opt.cursorborderradius,\r\n 'border-radius': opt.cursorborderradius\r\n });\r\n\r\n cursor.addClass('nicescroll-cursors');\r\n\r\n self.cursor = cursor;\r\n\r\n var rail = $(_doc.createElement('div'));\r\n rail.attr('id', self.id);\r\n rail.addClass('nicescroll-rails nicescroll-rails-vr');\r\n\r\n var v, a, kp = [\"left\", \"right\", \"top\", \"bottom\"]; //**\r\n for (var n in kp) {\r\n a = kp[n];\r\n v = opt.railpadding[a] || 0;\r\n v && rail.css(\"padding-\" + a, v + \"px\");\r\n }\r\n\r\n rail.append(cursor);\r\n\r\n rail.width = Math.max(parseFloat(opt.cursorwidth), cursor.outerWidth());\r\n rail.css({\r\n width: rail.width + \"px\",\r\n zIndex: self.zindex,\r\n background: opt.background,\r\n cursor: \"default\"\r\n });\r\n\r\n rail.visibility = true;\r\n rail.scrollable = true;\r\n\r\n rail.align = (opt.railalign == \"left\") ? 0 : 1;\r\n\r\n self.rail = rail;\r\n\r\n self.rail.drag = false;\r\n\r\n var zoom = false;\r\n if (opt.boxzoom && !self.ispage && !cap.isieold) {\r\n zoom = _doc.createElement('div');\r\n\r\n self.bind(zoom, \"click\", self.doZoom);\r\n self.bind(zoom, \"mouseenter\", function () {\r\n self.zoom.css('opacity', opt.cursoropacitymax);\r\n });\r\n self.bind(zoom, \"mouseleave\", function () {\r\n self.zoom.css('opacity', opt.cursoropacitymin);\r\n });\r\n\r\n self.zoom = $(zoom);\r\n self.zoom.css({\r\n cursor: \"pointer\",\r\n zIndex: self.zindex,\r\n backgroundImage: 'url(' + opt.scriptpath + 'zoomico.png)',\r\n height: 18,\r\n width: 18,\r\n backgroundPosition: '0 0'\r\n });\r\n if (opt.dblclickzoom) self.bind(self.win, \"dblclick\", self.doZoom);\r\n if (cap.cantouch && opt.gesturezoom) {\r\n self.ongesturezoom = function (e) {\r\n if (e.scale > 1.5) self.doZoomIn(e);\r\n if (e.scale < 0.8) self.doZoomOut(e);\r\n return self.cancelEvent(e);\r\n };\r\n self.bind(self.win, \"gestureend\", self.ongesturezoom);\r\n }\r\n }\r\n\r\n // init HORIZ\r\n\r\n self.railh = false;\r\n var railh;\r\n\r\n if (opt.horizrailenabled) {\r\n\r\n self.css(cont, {\r\n overflowX: 'hidden'\r\n });\r\n\r\n cursor = $(_doc.createElement('div'));\r\n cursor.css({\r\n position: \"absolute\",\r\n top: 0,\r\n height: opt.cursorwidth,\r\n width: 0,\r\n backgroundColor: opt.cursorcolor,\r\n border: opt.cursorborder,\r\n backgroundClip: 'padding-box',\r\n '-webkit-border-radius': opt.cursorborderradius,\r\n '-moz-border-radius': opt.cursorborderradius,\r\n 'border-radius': opt.cursorborderradius\r\n });\r\n\r\n if (cap.isieold) cursor.css('overflow', 'hidden'); //IE6 horiz scrollbar issue\r\n\r\n cursor.addClass('nicescroll-cursors');\r\n\r\n self.cursorh = cursor;\r\n\r\n railh = $(_doc.createElement('div'));\r\n railh.attr('id', self.id + '-hr');\r\n railh.addClass('nicescroll-rails nicescroll-rails-hr');\r\n railh.height = Math.max(parseFloat(opt.cursorwidth), cursor.outerHeight());\r\n railh.css({\r\n height: railh.height + \"px\",\r\n 'zIndex': self.zindex,\r\n \"background\": opt.background\r\n });\r\n\r\n railh.append(cursor);\r\n\r\n railh.visibility = true;\r\n railh.scrollable = true;\r\n\r\n railh.align = (opt.railvalign == \"top\") ? 0 : 1;\r\n\r\n self.railh = railh;\r\n\r\n self.railh.drag = false;\r\n\r\n }\r\n\r\n if (self.ispage) {\r\n\r\n rail.css({\r\n position: \"fixed\",\r\n top: 0,\r\n height: \"100%\"\r\n });\r\n\r\n rail.css((rail.align) ? { right: 0 } : { left: 0 });\r\n\r\n self.body.append(rail);\r\n if (self.railh) {\r\n railh.css({\r\n position: \"fixed\",\r\n left: 0,\r\n width: \"100%\"\r\n });\r\n\r\n railh.css((railh.align) ? { bottom: 0 } : { top: 0 });\r\n\r\n self.body.append(railh);\r\n }\r\n } else {\r\n if (self.ishwscroll) {\r\n if (self.win.css('position') == 'static') self.css(self.win, { 'position': 'relative' });\r\n var bd = (self.win[0].nodeName == 'HTML') ? self.body : self.win;\r\n $(bd).scrollTop(0).scrollLeft(0); // fix rail position if content already scrolled\r\n if (self.zoom) {\r\n self.zoom.css({\r\n position: \"absolute\",\r\n top: 1,\r\n right: 0,\r\n \"margin-right\": rail.width + 4\r\n });\r\n bd.append(self.zoom);\r\n }\r\n rail.css({\r\n position: \"absolute\",\r\n top: 0\r\n });\r\n rail.css((rail.align) ? { right: 0 } : { left: 0 });\r\n bd.append(rail);\r\n if (railh) {\r\n railh.css({\r\n position: \"absolute\",\r\n left: 0,\r\n bottom: 0\r\n });\r\n railh.css((railh.align) ? { bottom: 0 } : { top: 0 });\r\n bd.append(railh);\r\n }\r\n } else {\r\n self.isfixed = (self.win.css(\"position\") == \"fixed\");\r\n var rlpos = (self.isfixed) ? \"fixed\" : \"absolute\";\r\n\r\n if (!self.isfixed) self.viewport = self.getViewport(self.win[0]);\r\n if (self.viewport) {\r\n self.body = self.viewport;\r\n if (!(/fixed|absolute/.test(self.viewport.css(\"position\")))) self.css(self.viewport, {\r\n \"position\": \"relative\"\r\n });\r\n }\r\n\r\n rail.css({\r\n position: rlpos\r\n });\r\n if (self.zoom) self.zoom.css({\r\n position: rlpos\r\n });\r\n self.updateScrollBar();\r\n self.body.append(rail);\r\n if (self.zoom) self.body.append(self.zoom);\r\n if (self.railh) {\r\n railh.css({\r\n position: rlpos\r\n });\r\n self.body.append(railh);\r\n }\r\n }\r\n\r\n if (cap.isios) self.css(self.win, {\r\n '-webkit-tap-highlight-color': 'rgba(0,0,0,0)',\r\n '-webkit-touch-callout': 'none'\r\n }); // prevent grey layer on click\r\n\r\n if (opt.disableoutline) {\r\n if (cap.isie) self.win.attr(\"hideFocus\", \"true\"); // IE, prevent dotted rectangle on focused div\r\n if (cap.iswebkit) self.win.css('outline', 'none'); // Webkit outline\r\n }\r\n\r\n }\r\n\r\n if (opt.autohidemode === false) {\r\n self.autohidedom = false;\r\n self.rail.css({\r\n opacity: opt.cursoropacitymax\r\n });\r\n if (self.railh) self.railh.css({\r\n opacity: opt.cursoropacitymax\r\n });\r\n } else if ((opt.autohidemode === true) || (opt.autohidemode === \"leave\")) {\r\n self.autohidedom = $().add(self.rail);\r\n if (cap.isie8) self.autohidedom = self.autohidedom.add(self.cursor);\r\n if (self.railh) self.autohidedom = self.autohidedom.add(self.railh);\r\n if (self.railh && cap.isie8) self.autohidedom = self.autohidedom.add(self.cursorh);\r\n } else if (opt.autohidemode == \"scroll\") {\r\n self.autohidedom = $().add(self.rail);\r\n if (self.railh) self.autohidedom = self.autohidedom.add(self.railh);\r\n } else if (opt.autohidemode == \"cursor\") {\r\n self.autohidedom = $().add(self.cursor);\r\n if (self.railh) self.autohidedom = self.autohidedom.add(self.cursorh);\r\n } else if (opt.autohidemode == \"hidden\") {\r\n self.autohidedom = false;\r\n self.hide();\r\n self.railslocked = false;\r\n }\r\n\r\n if (cap.cantouch || self.istouchcapable || opt.emulatetouch || cap.hasmstouch) {\r\n\r\n self.scrollmom = new ScrollMomentumClass2D(self);\r\n\r\n var delayedclick = null;\r\n\r\n self.ontouchstart = function (e) {\r\n\r\n if (self.locked) return false;\r\n\r\n //if (e.pointerType && e.pointerType != 2 && e.pointerType != \"touch\") return false;\r\n if (e.pointerType && (e.pointerType === 'mouse' || e.pointerType === e.MSPOINTER_TYPE_MOUSE)) return false; // need test on surface!!\r\n\r\n self.hasmoving = false;\r\n\r\n if (self.scrollmom.timer) {\r\n self.triggerScrollEnd();\r\n self.scrollmom.stop();\r\n }\r\n\r\n if (!self.railslocked) {\r\n var tg = self.getTarget(e);\r\n\r\n if (tg) {\r\n var skp = (/INPUT/i.test(tg.nodeName)) && (/range/i.test(tg.type));\r\n if (skp) return self.stopPropagation(e);\r\n }\r\n\r\n var ismouse = (e.type === \"mousedown\");\r\n\r\n if (!(\"clientX\" in e) && (\"changedTouches\" in e)) {\r\n e.clientX = e.changedTouches[0].clientX;\r\n e.clientY = e.changedTouches[0].clientY;\r\n }\r\n\r\n if (self.forcescreen) {\r\n var le = e;\r\n e = {\r\n \"original\": (e.original) ? e.original : e\r\n };\r\n e.clientX = le.screenX;\r\n e.clientY = le.screenY;\r\n }\r\n\r\n self.rail.drag = {\r\n x: e.clientX,\r\n y: e.clientY,\r\n sx: self.scroll.x,\r\n sy: self.scroll.y,\r\n st: self.getScrollTop(),\r\n sl: self.getScrollLeft(),\r\n pt: 2,\r\n dl: false,\r\n tg: tg\r\n };\r\n\r\n if (self.ispage || !opt.directionlockdeadzone) {\r\n\r\n self.rail.drag.dl = \"f\";\r\n\r\n } else {\r\n\r\n var view = {\r\n w: $window.width(),\r\n h: $window.height()\r\n };\r\n\r\n var page = self.getContentSize();\r\n\r\n var maxh = page.h - view.h;\r\n var maxw = page.w - view.w;\r\n\r\n if (self.rail.scrollable && !self.railh.scrollable) self.rail.drag.ck = (maxh > 0) ? \"v\" : false;\r\n else if (!self.rail.scrollable && self.railh.scrollable) self.rail.drag.ck = (maxw > 0) ? \"h\" : false;\r\n else self.rail.drag.ck = false;\r\n\r\n }\r\n\r\n if (opt.emulatetouch && self.isiframe && cap.isie) {\r\n var wp = self.win.position();\r\n self.rail.drag.x += wp.left;\r\n self.rail.drag.y += wp.top;\r\n }\r\n\r\n self.hasmoving = false;\r\n self.lastmouseup = false;\r\n self.scrollmom.reset(e.clientX, e.clientY);\r\n\r\n if (tg&&ismouse) {\r\n\r\n var ip = /INPUT|SELECT|BUTTON|TEXTAREA/i.test(tg.nodeName);\r\n if (!ip) {\r\n if (cap.hasmousecapture) tg.setCapture();\r\n if (opt.emulatetouch) {\r\n if (tg.onclick && !(tg._onclick || false)) { // intercept DOM0 onclick event\r\n tg._onclick = tg.onclick;\r\n tg.onclick = function (e) {\r\n if (self.hasmoving) return false;\r\n tg._onclick.call(this, e);\r\n };\r\n }\r\n return self.cancelEvent(e);\r\n }\r\n return self.stopPropagation(e);\r\n }\r\n\r\n if (/SUBMIT|CANCEL|BUTTON/i.test($(tg).attr('type'))) {\r\n self.preventclick = {\r\n \"tg\": tg,\r\n \"click\": false\r\n };\r\n }\r\n\r\n }\r\n }\r\n\r\n };\r\n\r\n self.ontouchend = function (e) {\r\n\r\n if (!self.rail.drag) return true;\r\n\r\n if (self.rail.drag.pt == 2) {\r\n //if (e.pointerType && e.pointerType != 2 && e.pointerType != \"touch\") return false;\r\n if (e.pointerType && (e.pointerType === 'mouse' || e.pointerType === e.MSPOINTER_TYPE_MOUSE)) return false;\r\n\r\n self.rail.drag = false;\r\n\r\n var ismouse = (e.type === \"mouseup\");\r\n\r\n if (self.hasmoving) {\r\n self.scrollmom.doMomentum();\r\n self.lastmouseup = true;\r\n self.hideCursor();\r\n if (cap.hasmousecapture) _doc.releaseCapture();\r\n if (ismouse) return self.cancelEvent(e);\r\n }\r\n\r\n }\r\n else if (self.rail.drag.pt == 1) {\r\n return self.onmouseup(e);\r\n }\r\n\r\n };\r\n\r\n var moveneedoffset = (opt.emulatetouch && self.isiframe && !cap.hasmousecapture);\r\n\r\n var locktollerance = opt.directionlockdeadzone * 0.3 | 0;\r\n\r\n self.ontouchmove = function (e, byiframe) {\r\n\r\n if (!self.rail.drag) return true;\r\n\r\n if (e.targetTouches && opt.preventmultitouchscrolling) {\r\n if (e.targetTouches.length > 1) return true; // multitouch\r\n }\r\n\r\n //if (e.pointerType && e.pointerType != 2 && e.pointerType != \"touch\") return false;\r\n if (e.pointerType && (e.pointerType === 'mouse' || e.pointerType === e.MSPOINTER_TYPE_MOUSE)) return true;\r\n\r\n if (self.rail.drag.pt == 2) {\r\n\r\n if ((\"changedTouches\" in e)) {\r\n e.clientX = e.changedTouches[0].clientX;\r\n e.clientY = e.changedTouches[0].clientY;\r\n }\r\n\r\n var ofy, ofx;\r\n ofx = ofy = 0;\r\n\r\n if (moveneedoffset && !byiframe) {\r\n var wp = self.win.position();\r\n ofx = -wp.left;\r\n ofy = -wp.top;\r\n }\r\n\r\n var fy = e.clientY + ofy;\r\n var my = (fy - self.rail.drag.y);\r\n var fx = e.clientX + ofx;\r\n var mx = (fx - self.rail.drag.x);\r\n\r\n var ny = self.rail.drag.st - my;\r\n\r\n if (self.ishwscroll && opt.bouncescroll) {\r\n if (ny < 0) {\r\n ny = Math.round(ny / 2);\r\n } else if (ny > self.page.maxh) {\r\n ny = self.page.maxh + Math.round((ny - self.page.maxh) / 2);\r\n }\r\n } else {\r\n if (ny < 0) {\r\n ny = 0;\r\n fy = 0;\r\n }\r\n else if (ny > self.page.maxh) {\r\n ny = self.page.maxh;\r\n fy = 0;\r\n }\r\n if (fy === 0 && !self.hasmoving) {\r\n if (!self.ispage) self.rail.drag = false;\r\n return true;\r\n }\r\n }\r\n\r\n var nx = self.getScrollLeft();\r\n\r\n if (self.railh && self.railh.scrollable) {\r\n nx = (self.isrtlmode) ? mx - self.rail.drag.sl : self.rail.drag.sl - mx;\r\n\r\n if (self.ishwscroll && opt.bouncescroll) {\r\n if (nx < 0) {\r\n nx = Math.round(nx / 2);\r\n } else if (nx > self.page.maxw) {\r\n nx = self.page.maxw + Math.round((nx - self.page.maxw) / 2);\r\n }\r\n } else {\r\n if (nx < 0) {\r\n nx = 0;\r\n fx = 0;\r\n }\r\n if (nx > self.page.maxw) {\r\n nx = self.page.maxw;\r\n fx = 0;\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n if (!self.hasmoving) {\r\n\r\n if (self.rail.drag.y === e.clientY && self.rail.drag.x === e.clientX) return self.cancelEvent(e); // prevent first useless move event\r\n\r\n var ay = Math.abs(my);\r\n var ax = Math.abs(mx);\r\n var dz = opt.directionlockdeadzone;\r\n\r\n if (!self.rail.drag.ck) {\r\n if (ay > dz && ax > dz) self.rail.drag.dl = \"f\";\r\n else if (ay > dz) self.rail.drag.dl = (ax > locktollerance) ? \"f\" : \"v\";\r\n else if (ax > dz) self.rail.drag.dl = (ay > locktollerance) ? \"f\" : \"h\";\r\n }\r\n else if (self.rail.drag.ck == \"v\") {\r\n if (ax > dz && ay <= locktollerance) {\r\n self.rail.drag = false;\r\n }\r\n else if (ay > dz) self.rail.drag.dl = \"v\";\r\n\r\n }\r\n else if (self.rail.drag.ck == \"h\") {\r\n\r\n if (ay > dz && ax <= locktollerance) {\r\n self.rail.drag = false;\r\n }\r\n else if (ax > dz) self.rail.drag.dl = \"h\";\r\n\r\n }\r\n\r\n if (!self.rail.drag.dl) return self.cancelEvent(e);\r\n\r\n self.triggerScrollStart(e.clientX, e.clientY, 0, 0, 0);\r\n self.hasmoving = true;\r\n }\r\n\r\n if (self.preventclick && !self.preventclick.click) {\r\n self.preventclick.click = self.preventclick.tg.onclick || false;\r\n self.preventclick.tg.onclick = self.onpreventclick;\r\n }\r\n\r\n if (self.rail.drag.dl) {\r\n if (self.rail.drag.dl == \"v\") nx = self.rail.drag.sl;\r\n else if (self.rail.drag.dl == \"h\") ny = self.rail.drag.st;\r\n }\r\n\r\n self.synched(\"touchmove\", function () {\r\n if (self.rail.drag && (self.rail.drag.pt == 2)) {\r\n if (self.prepareTransition) self.resetTransition();\r\n if (self.rail.scrollable) self.setScrollTop(ny);\r\n self.scrollmom.update(fx, fy);\r\n if (self.railh && self.railh.scrollable) {\r\n self.setScrollLeft(nx);\r\n self.showCursor(ny, nx);\r\n } else {\r\n self.showCursor(ny);\r\n }\r\n if (cap.isie10) _doc.selection.clear();\r\n }\r\n });\r\n\r\n return self.cancelEvent(e);\r\n\r\n }\r\n else if (self.rail.drag.pt == 1) { // drag on cursor\r\n return self.onmousemove(e);\r\n }\r\n\r\n };\r\n\r\n self.ontouchstartCursor = function (e, hronly) {\r\n if (self.rail.drag && self.rail.drag.pt != 3) return;\r\n if (self.locked) return self.cancelEvent(e);\r\n self.cancelScroll();\r\n self.rail.drag = {\r\n x: e.touches[0].clientX,\r\n y: e.touches[0].clientY,\r\n sx: self.scroll.x,\r\n sy: self.scroll.y,\r\n pt: 3,\r\n hr: (!!hronly)\r\n };\r\n var tg = self.getTarget(e);\r\n if (!self.ispage && cap.hasmousecapture) tg.setCapture();\r\n if (self.isiframe && !cap.hasmousecapture) {\r\n self.saved.csspointerevents = self.doc.css(\"pointer-events\");\r\n self.css(self.doc, { \"pointer-events\": \"none\" });\r\n }\r\n return self.cancelEvent(e);\r\n };\r\n\r\n self.ontouchendCursor = function (e) {\r\n if (self.rail.drag) {\r\n if (cap.hasmousecapture) _doc.releaseCapture();\r\n if (self.isiframe && !cap.hasmousecapture) self.doc.css(\"pointer-events\", self.saved.csspointerevents);\r\n if (self.rail.drag.pt != 3) return;\r\n self.rail.drag = false;\r\n return self.cancelEvent(e);\r\n }\r\n };\r\n\r\n self.ontouchmoveCursor = function (e) {\r\n if (self.rail.drag) {\r\n if (self.rail.drag.pt != 3) return;\r\n\r\n self.cursorfreezed = true;\r\n\r\n if (self.rail.drag.hr) {\r\n self.scroll.x = self.rail.drag.sx + (e.touches[0].clientX - self.rail.drag.x);\r\n if (self.scroll.x < 0) self.scroll.x = 0;\r\n var mw = self.scrollvaluemaxw;\r\n if (self.scroll.x > mw) self.scroll.x = mw;\r\n } else {\r\n self.scroll.y = self.rail.drag.sy + (e.touches[0].clientY - self.rail.drag.y);\r\n if (self.scroll.y < 0) self.scroll.y = 0;\r\n var my = self.scrollvaluemax;\r\n if (self.scroll.y > my) self.scroll.y = my;\r\n }\r\n\r\n self.synched('touchmove', function () {\r\n if (self.rail.drag && (self.rail.drag.pt == 3)) {\r\n self.showCursor();\r\n if (self.rail.drag.hr) self.doScrollLeft(Math.round(self.scroll.x * self.scrollratio.x), opt.cursordragspeed);\r\n else self.doScrollTop(Math.round(self.scroll.y * self.scrollratio.y), opt.cursordragspeed);\r\n }\r\n });\r\n\r\n return self.cancelEvent(e);\r\n }\r\n\r\n };\r\n\r\n }\r\n\r\n self.onmousedown = function (e, hronly) {\r\n if (self.rail.drag && self.rail.drag.pt != 1) return;\r\n if (self.railslocked) return self.cancelEvent(e);\r\n self.cancelScroll();\r\n self.rail.drag = {\r\n x: e.clientX,\r\n y: e.clientY,\r\n sx: self.scroll.x,\r\n sy: self.scroll.y,\r\n pt: 1,\r\n hr: hronly || false\r\n };\r\n var tg = self.getTarget(e);\r\n\r\n if (cap.hasmousecapture) tg.setCapture();\r\n if (self.isiframe && !cap.hasmousecapture) {\r\n self.saved.csspointerevents = self.doc.css(\"pointer-events\");\r\n self.css(self.doc, {\r\n \"pointer-events\": \"none\"\r\n });\r\n }\r\n self.hasmoving = false;\r\n return self.cancelEvent(e);\r\n };\r\n\r\n self.onmouseup = function (e) {\r\n if (self.rail.drag) {\r\n if (self.rail.drag.pt != 1) return true;\r\n\r\n if (cap.hasmousecapture) _doc.releaseCapture();\r\n if (self.isiframe && !cap.hasmousecapture) self.doc.css(\"pointer-events\", self.saved.csspointerevents);\r\n self.rail.drag = false;\r\n self.cursorfreezed = false;\r\n if (self.hasmoving) self.triggerScrollEnd();\r\n return self.cancelEvent(e);\r\n }\r\n };\r\n\r\n self.onmousemove = function (e) {\r\n if (self.rail.drag) {\r\n if (self.rail.drag.pt !== 1) return;\r\n\r\n if (cap.ischrome && e.which === 0) return self.onmouseup(e);\r\n\r\n self.cursorfreezed = true;\r\n\r\n if (!self.hasmoving) self.triggerScrollStart(e.clientX, e.clientY, 0, 0, 0);\r\n\r\n self.hasmoving = true;\r\n\r\n if (self.rail.drag.hr) {\r\n self.scroll.x = self.rail.drag.sx + (e.clientX - self.rail.drag.x);\r\n if (self.scroll.x < 0) self.scroll.x = 0;\r\n var mw = self.scrollvaluemaxw;\r\n if (self.scroll.x > mw) self.scroll.x = mw;\r\n } else {\r\n self.scroll.y = self.rail.drag.sy + (e.clientY - self.rail.drag.y);\r\n if (self.scroll.y < 0) self.scroll.y = 0;\r\n var my = self.scrollvaluemax;\r\n if (self.scroll.y > my) self.scroll.y = my;\r\n }\r\n\r\n self.synched('mousemove', function () {\r\n\r\n if (self.cursorfreezed) {\r\n self.showCursor();\r\n\r\n if (self.rail.drag.hr) {\r\n self.scrollLeft(Math.round(self.scroll.x * self.scrollratio.x));\r\n } else {\r\n self.scrollTop(Math.round(self.scroll.y * self.scrollratio.y));\r\n }\r\n\r\n }\r\n });\r\n\r\n return self.cancelEvent(e);\r\n }\r\n else {\r\n self.checkarea = 0;\r\n }\r\n };\r\n\r\n if (cap.cantouch || opt.emulatetouch) {\r\n\r\n self.onpreventclick = function (e) {\r\n if (self.preventclick) {\r\n self.preventclick.tg.onclick = self.preventclick.click;\r\n self.preventclick = false;\r\n return self.cancelEvent(e);\r\n }\r\n };\r\n\r\n self.onclick = (cap.isios) ? false : function (e) { // it needs to check IE11 ???\r\n if (self.lastmouseup) {\r\n self.lastmouseup = false;\r\n return self.cancelEvent(e);\r\n } else {\r\n return true;\r\n }\r\n };\r\n\r\n if (opt.grabcursorenabled && cap.cursorgrabvalue) {\r\n self.css((self.ispage) ? self.doc : self.win, {\r\n 'cursor': cap.cursorgrabvalue\r\n });\r\n self.css(self.rail, {\r\n 'cursor': cap.cursorgrabvalue\r\n });\r\n }\r\n\r\n } else {\r\n\r\n var checkSelectionScroll = function (e) {\r\n if (!self.selectiondrag) return;\r\n\r\n if (e) {\r\n var ww = self.win.outerHeight();\r\n var df = (e.pageY - self.selectiondrag.top);\r\n if (df > 0 && df < ww) df = 0;\r\n if (df >= ww) df -= ww;\r\n self.selectiondrag.df = df;\r\n }\r\n if (self.selectiondrag.df === 0) return;\r\n\r\n var rt = -(self.selectiondrag.df*2/6)|0;\r\n self.doScrollBy(rt);\r\n\r\n self.debounced(\"doselectionscroll\", function () {\r\n checkSelectionScroll();\r\n }, 50);\r\n };\r\n\r\n if (\"getSelection\" in _doc) { // A grade - Major browsers\r\n self.hasTextSelected = function () {\r\n return (_doc.getSelection().rangeCount > 0);\r\n };\r\n } else if (\"selection\" in _doc) { //IE9-\r\n self.hasTextSelected = function () {\r\n return (_doc.selection.type != \"None\");\r\n };\r\n } else {\r\n self.hasTextSelected = function () { // no support\r\n return false;\r\n };\r\n }\r\n\r\n self.onselectionstart = function (e) {\r\n // More testing - severe chrome issues\r\n /*\r\n if (!self.haswrapper&&(e.which&&e.which==2)) { // fool browser to manage middle button scrolling\r\n self.win.css({'overflow':'auto'});\r\n setTimeout(function(){\r\n self.win.css({'overflow':'hidden'});\r\n },10);\r\n return true;\r\n }\r\n */\r\n if (self.ispage) return;\r\n self.selectiondrag = self.win.offset();\r\n };\r\n\r\n self.onselectionend = function (e) {\r\n self.selectiondrag = false;\r\n };\r\n self.onselectiondrag = function (e) {\r\n if (!self.selectiondrag) return;\r\n if (self.hasTextSelected()) self.debounced(\"selectionscroll\", function () {\r\n checkSelectionScroll(e);\r\n }, 250);\r\n };\r\n }\r\n\r\n if (cap.hasw3ctouch) { //IE11+\r\n self.css((self.ispage) ? $(\"html\") : self.win, { 'touch-action': 'none' });\r\n self.css(self.rail, {\r\n 'touch-action': 'none'\r\n });\r\n self.css(self.cursor, {\r\n 'touch-action': 'none'\r\n });\r\n self.bind(self.win, \"pointerdown\", self.ontouchstart);\r\n self.bind(_doc, \"pointerup\", self.ontouchend);\r\n self.delegate(_doc, \"pointermove\", self.ontouchmove);\r\n } else if (cap.hasmstouch) { //IE10\r\n self.css((self.ispage) ? $(\"html\") : self.win, { '-ms-touch-action': 'none' });\r\n self.css(self.rail, {\r\n '-ms-touch-action': 'none'\r\n });\r\n self.css(self.cursor, {\r\n '-ms-touch-action': 'none'\r\n });\r\n self.bind(self.win, \"MSPointerDown\", self.ontouchstart);\r\n self.bind(_doc, \"MSPointerUp\", self.ontouchend);\r\n self.delegate(_doc, \"MSPointerMove\", self.ontouchmove);\r\n self.bind(self.cursor, \"MSGestureHold\", function (e) {\r\n e.preventDefault();\r\n });\r\n self.bind(self.cursor, \"contextmenu\", function (e) {\r\n e.preventDefault();\r\n });\r\n } else if (cap.cantouch) { // smartphones/touch devices\r\n self.bind(self.win, \"touchstart\", self.ontouchstart, false, true);\r\n self.bind(_doc, \"touchend\", self.ontouchend, false, true);\r\n self.bind(_doc, \"touchcancel\", self.ontouchend, false, true);\r\n self.delegate(_doc, \"touchmove\", self.ontouchmove, false, true);\r\n }\r\n\r\n if (opt.emulatetouch) {\r\n self.bind(self.win, \"mousedown\", self.ontouchstart, false, true);\r\n self.bind(_doc, \"mouseup\", self.ontouchend, false, true);\r\n self.bind(_doc, \"mousemove\", self.ontouchmove, false, true);\r\n }\r\n\r\n if (opt.cursordragontouch || (!cap.cantouch && !opt.emulatetouch)) {\r\n\r\n self.rail.css({\r\n cursor: \"default\"\r\n });\r\n self.railh && self.railh.css({\r\n cursor: \"default\"\r\n });\r\n\r\n self.jqbind(self.rail, \"mouseenter\", function () {\r\n if (!self.ispage && !self.win.is(\":visible\")) return false;\r\n if (self.canshowonmouseevent) self.showCursor();\r\n self.rail.active = true;\r\n });\r\n self.jqbind(self.rail, \"mouseleave\", function () {\r\n self.rail.active = false;\r\n if (!self.rail.drag) self.hideCursor();\r\n });\r\n\r\n if (opt.sensitiverail) {\r\n self.bind(self.rail, \"click\", function (e) {\r\n self.doRailClick(e, false, false);\r\n });\r\n self.bind(self.rail, \"dblclick\", function (e) {\r\n self.doRailClick(e, true, false);\r\n });\r\n self.bind(self.cursor, \"click\", function (e) {\r\n self.cancelEvent(e);\r\n });\r\n self.bind(self.cursor, \"dblclick\", function (e) {\r\n self.cancelEvent(e);\r\n });\r\n }\r\n\r\n if (self.railh) {\r\n self.jqbind(self.railh, \"mouseenter\", function () {\r\n if (!self.ispage && !self.win.is(\":visible\")) return false;\r\n if (self.canshowonmouseevent) self.showCursor();\r\n self.rail.active = true;\r\n });\r\n self.jqbind(self.railh, \"mouseleave\", function () {\r\n self.rail.active = false;\r\n if (!self.rail.drag) self.hideCursor();\r\n });\r\n\r\n if (opt.sensitiverail) {\r\n self.bind(self.railh, \"click\", function (e) {\r\n self.doRailClick(e, false, true);\r\n });\r\n self.bind(self.railh, \"dblclick\", function (e) {\r\n self.doRailClick(e, true, true);\r\n });\r\n self.bind(self.cursorh, \"click\", function (e) {\r\n self.cancelEvent(e);\r\n });\r\n self.bind(self.cursorh, \"dblclick\", function (e) {\r\n self.cancelEvent(e);\r\n });\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n if (opt.cursordragontouch && (this.istouchcapable || cap.cantouch)) {\r\n self.bind(self.cursor, \"touchstart\", self.ontouchstartCursor);\r\n self.bind(self.cursor, \"touchmove\", self.ontouchmoveCursor);\r\n self.bind(self.cursor, \"touchend\", self.ontouchendCursor);\r\n self.cursorh && self.bind(self.cursorh, \"touchstart\", function (e) {\r\n self.ontouchstartCursor(e, true);\r\n });\r\n self.cursorh && self.bind(self.cursorh, \"touchmove\", self.ontouchmoveCursor);\r\n self.cursorh && self.bind(self.cursorh, \"touchend\", self.ontouchendCursor);\r\n }\r\n\r\n// if (!cap.cantouch && !opt.emulatetouch) {\r\n if (!opt.emulatetouch && !cap.isandroid && !cap.isios) {\r\n\r\n self.bind((cap.hasmousecapture) ? self.win : _doc, \"mouseup\", self.onmouseup);\r\n self.bind(_doc, \"mousemove\", self.onmousemove);\r\n if (self.onclick) self.bind(_doc, \"click\", self.onclick);\r\n\r\n self.bind(self.cursor, \"mousedown\", self.onmousedown);\r\n self.bind(self.cursor, \"mouseup\", self.onmouseup);\r\n\r\n if (self.railh) {\r\n self.bind(self.cursorh, \"mousedown\", function (e) {\r\n self.onmousedown(e, true);\r\n });\r\n self.bind(self.cursorh, \"mouseup\", self.onmouseup);\r\n }\r\n\r\n if (!self.ispage && opt.enablescrollonselection) {\r\n self.bind(self.win[0], \"mousedown\", self.onselectionstart);\r\n self.bind(_doc, \"mouseup\", self.onselectionend);\r\n self.bind(self.cursor, \"mouseup\", self.onselectionend);\r\n if (self.cursorh) self.bind(self.cursorh, \"mouseup\", self.onselectionend);\r\n self.bind(_doc, \"mousemove\", self.onselectiondrag);\r\n }\r\n\r\n if (self.zoom) {\r\n self.jqbind(self.zoom, \"mouseenter\", function () {\r\n if (self.canshowonmouseevent) self.showCursor();\r\n self.rail.active = true;\r\n });\r\n self.jqbind(self.zoom, \"mouseleave\", function () {\r\n self.rail.active = false;\r\n if (!self.rail.drag) self.hideCursor();\r\n });\r\n }\r\n\r\n } else {\r\n\r\n self.bind((cap.hasmousecapture) ? self.win : _doc, \"mouseup\", self.ontouchend);\r\n if (self.onclick) self.bind(_doc, \"click\", self.onclick);\r\n\r\n if (opt.cursordragontouch) {\r\n self.bind(self.cursor, \"mousedown\", self.onmousedown);\r\n self.bind(self.cursor, \"mouseup\", self.onmouseup);\r\n self.cursorh && self.bind(self.cursorh, \"mousedown\", function (e) {\r\n self.onmousedown(e, true);\r\n });\r\n self.cursorh && self.bind(self.cursorh, \"mouseup\", self.onmouseup);\r\n } else {\r\n self.bind(self.rail, \"mousedown\", function (e) { e.preventDefault(); }); // prevent text selection\r\n self.railh && self.bind(self.railh, \"mousedown\", function (e) { e.preventDefault(); });\r\n }\r\n\r\n }\r\n\r\n\r\n if (opt.enablemousewheel) {\r\n if (!self.isiframe) self.mousewheel((cap.isie && self.ispage) ? _doc : self.win, self.onmousewheel);\r\n self.mousewheel(self.rail, self.onmousewheel);\r\n if (self.railh) self.mousewheel(self.railh, self.onmousewheelhr);\r\n }\r\n\r\n if (!self.ispage && !cap.cantouch && !(/HTML|^BODY/.test(self.win[0].nodeName))) {\r\n if (!self.win.attr(\"tabindex\")) self.win.attr({\r\n \"tabindex\": ++tabindexcounter\r\n });\r\n\r\n self.bind(self.win, \"focus\", function (e) { // better using native events\r\n domfocus = (self.getTarget(e)).id || self.getTarget(e) || false;\r\n self.hasfocus = true;\r\n if (self.canshowonmouseevent) self.noticeCursor();\r\n });\r\n self.bind(self.win, \"blur\", function (e) { // *\r\n domfocus = false;\r\n self.hasfocus = false;\r\n });\r\n\r\n self.bind(self.win, \"mouseenter\", function (e) { // *\r\n mousefocus = (self.getTarget(e)).id || self.getTarget(e) || false;\r\n self.hasmousefocus = true;\r\n if (self.canshowonmouseevent) self.noticeCursor();\r\n });\r\n self.bind(self.win, \"mouseleave\", function (e) { // *\r\n mousefocus = false;\r\n self.hasmousefocus = false;\r\n if (!self.rail.drag) self.hideCursor();\r\n });\r\n\r\n }\r\n\r\n\r\n //Thanks to http://www.quirksmode.org !!\r\n self.onkeypress = function (e) {\r\n if (self.railslocked && self.page.maxh === 0) return true;\r\n\r\n e = e || _win.event;\r\n var tg = self.getTarget(e);\r\n if (tg && /INPUT|TEXTAREA|SELECT|OPTION/.test(tg.nodeName)) {\r\n var tp = tg.getAttribute('type') || tg.type || false;\r\n if ((!tp) || !(/submit|button|cancel/i.tp)) return true;\r\n }\r\n\r\n if ($(tg).attr('contenteditable')) return true;\r\n\r\n if (self.hasfocus || (self.hasmousefocus && !domfocus) || (self.ispage && !domfocus && !mousefocus)) {\r\n var key = e.keyCode;\r\n\r\n if (self.railslocked && key != 27) return self.cancelEvent(e);\r\n\r\n var ctrl = e.ctrlKey || false;\r\n var shift = e.shiftKey || false;\r\n\r\n var ret = false;\r\n switch (key) {\r\n case 38:\r\n case 63233: //safari\r\n self.doScrollBy(24 * 3);\r\n ret = true;\r\n break;\r\n case 40:\r\n case 63235: //safari\r\n self.doScrollBy(-24 * 3);\r\n ret = true;\r\n break;\r\n case 37:\r\n case 63232: //safari\r\n if (self.railh) {\r\n (ctrl) ? self.doScrollLeft(0) : self.doScrollLeftBy(24 * 3);\r\n ret = true;\r\n }\r\n break;\r\n case 39:\r\n case 63234: //safari\r\n if (self.railh) {\r\n (ctrl) ? self.doScrollLeft(self.page.maxw) : self.doScrollLeftBy(-24 * 3);\r\n ret = true;\r\n }\r\n break;\r\n case 33:\r\n case 63276: // safari\r\n self.doScrollBy(self.view.h);\r\n ret = true;\r\n break;\r\n case 34:\r\n case 63277: // safari\r\n self.doScrollBy(-self.view.h);\r\n ret = true;\r\n break;\r\n case 36:\r\n case 63273: // safari\r\n (self.railh && ctrl) ? self.doScrollPos(0, 0) : self.doScrollTo(0);\r\n ret = true;\r\n break;\r\n case 35:\r\n case 63275: // safari\r\n (self.railh && ctrl) ? self.doScrollPos(self.page.maxw, self.page.maxh) : self.doScrollTo(self.page.maxh);\r\n ret = true;\r\n break;\r\n case 32:\r\n if (opt.spacebarenabled) {\r\n (shift) ? self.doScrollBy(self.view.h) : self.doScrollBy(-self.view.h);\r\n ret = true;\r\n }\r\n break;\r\n case 27: // ESC\r\n if (self.zoomactive) {\r\n self.doZoom();\r\n ret = true;\r\n }\r\n break;\r\n }\r\n if (ret) return self.cancelEvent(e);\r\n }\r\n };\r\n\r\n if (opt.enablekeyboard) self.bind(_doc, (cap.isopera && !cap.isopera12) ? \"keypress\" : \"keydown\", self.onkeypress);\r\n\r\n self.bind(_doc, \"keydown\", function (e) {\r\n var ctrl = e.ctrlKey || false;\r\n if (ctrl) self.wheelprevented = true;\r\n });\r\n self.bind(_doc, \"keyup\", function (e) {\r\n var ctrl = e.ctrlKey || false;\r\n if (!ctrl) self.wheelprevented = false;\r\n });\r\n self.bind(_win, \"blur\", function (e) {\r\n self.wheelprevented = false;\r\n });\r\n\r\n self.bind(_win, 'resize', self.onscreenresize);\r\n self.bind(_win, 'orientationchange', self.onscreenresize);\r\n\r\n self.bind(_win, \"load\", self.lazyResize);\r\n\r\n if (cap.ischrome && !self.ispage && !self.haswrapper) { //chrome void scrollbar bug - it persists in version 26\r\n var tmp = self.win.attr(\"style\");\r\n var ww = parseFloat(self.win.css(\"width\")) + 1;\r\n self.win.css('width', ww);\r\n self.synched(\"chromefix\", function () {\r\n self.win.attr(\"style\", tmp);\r\n });\r\n }\r\n\r\n\r\n // Trying a cross-browser implementation - good luck!\r\n\r\n self.onAttributeChange = function (e) {\r\n self.lazyResize(self.isieold ? 250 : 30);\r\n };\r\n\r\n if (opt.enableobserver) {\r\n\r\n if ((!self.isie11) && (ClsMutationObserver !== false)) { // IE11 crashes #568\r\n self.observerbody = new ClsMutationObserver(function (mutations) {\r\n mutations.forEach(function (mut) {\r\n if (mut.type == \"attributes\") {\r\n return ($body.hasClass(\"modal-open\") && $body.hasClass(\"modal-dialog\") && !$.contains($('.modal-dialog')[0], self.doc[0])) ? self.hide() : self.show(); // Support for Bootstrap modal; Added check if the nice scroll element is inside a modal\r\n }\r\n });\r\n if (self.me.clientWidth != self.page.width || self.me.clientHeight != self.page.height) return self.lazyResize(30);\r\n });\r\n self.observerbody.observe(_doc.body, {\r\n childList: true,\r\n subtree: true,\r\n characterData: false,\r\n attributes: true,\r\n attributeFilter: ['class']\r\n });\r\n }\r\n\r\n if (!self.ispage && !self.haswrapper) {\r\n\r\n var _dom = self.win[0];\r\n\r\n // redesigned MutationObserver for Chrome18+/Firefox14+/iOS6+ with support for: remove div, add/remove content\r\n if (ClsMutationObserver !== false) {\r\n self.observer = new ClsMutationObserver(function (mutations) {\r\n mutations.forEach(self.onAttributeChange);\r\n });\r\n self.observer.observe(_dom, {\r\n childList: true,\r\n characterData: false,\r\n attributes: true,\r\n subtree: false\r\n });\r\n self.observerremover = new ClsMutationObserver(function (mutations) {\r\n mutations.forEach(function (mo) {\r\n if (mo.removedNodes.length > 0) {\r\n for (var dd in mo.removedNodes) {\r\n if (!!self && (mo.removedNodes[dd] === _dom)) return self.remove();\r\n }\r\n }\r\n });\r\n });\r\n self.observerremover.observe(_dom.parentNode, {\r\n childList: true,\r\n characterData: false,\r\n attributes: false,\r\n subtree: false\r\n });\r\n } else {\r\n self.bind(_dom, (cap.isie && !cap.isie9) ? \"propertychange\" : \"DOMAttrModified\", self.onAttributeChange);\r\n if (cap.isie9) _dom.attachEvent(\"onpropertychange\", self.onAttributeChange); //IE9 DOMAttrModified bug\r\n self.bind(_dom, \"DOMNodeRemoved\", function (e) {\r\n if (e.target === _dom) self.remove();\r\n });\r\n }\r\n }\r\n\r\n }\r\n\r\n //\r\n\r\n if (!self.ispage && opt.boxzoom) self.bind(_win, \"resize\", self.resizeZoom);\r\n if (self.istextarea) {\r\n self.bind(self.win, \"keydown\", self.lazyResize);\r\n self.bind(self.win, \"mouseup\", self.lazyResize);\r\n }\r\n\r\n self.lazyResize(30);\r\n\r\n }\r\n\r\n if (this.doc[0].nodeName == 'IFRAME') {\r\n var oniframeload = function () {\r\n self.iframexd = false;\r\n var doc;\r\n try {\r\n doc = 'contentDocument' in this ? this.contentDocument : this.contentWindow._doc;\r\n var a = doc.domain;\r\n } catch (e) {\r\n self.iframexd = true;\r\n doc = false;\r\n }\r\n\r\n if (self.iframexd) {\r\n if (\"console\" in _win) console.log('NiceScroll error: policy restriced iframe');\r\n return true; //cross-domain - I can't manage this\r\n }\r\n\r\n self.forcescreen = true;\r\n\r\n if (self.isiframe) {\r\n self.iframe = {\r\n \"doc\": $(doc),\r\n \"html\": self.doc.contents().find('html')[0],\r\n \"body\": self.doc.contents().find('body')[0]\r\n };\r\n self.getContentSize = function () {\r\n return {\r\n w: Math.max(self.iframe.html.scrollWidth, self.iframe.body.scrollWidth),\r\n h: Math.max(self.iframe.html.scrollHeight, self.iframe.body.scrollHeight)\r\n };\r\n };\r\n self.docscroll = $(self.iframe.body);\r\n }\r\n\r\n if (!cap.isios && opt.iframeautoresize && !self.isiframe) {\r\n self.win.scrollTop(0); // reset position\r\n self.doc.height(\"\"); //reset height to fix browser bug\r\n var hh = Math.max(doc.getElementsByTagName('html')[0].scrollHeight, doc.body.scrollHeight);\r\n self.doc.height(hh);\r\n }\r\n self.lazyResize(30);\r\n\r\n self.css($(self.iframe.body), _scrollyhidden);\r\n\r\n if (cap.isios && self.haswrapper) {\r\n self.css($(doc.body), {\r\n '-webkit-transform': 'translate3d(0,0,0)'\r\n }); // avoid iFrame content clipping - thanks to http://blog.derraab.com/2012/04/02/avoid-iframe-content-clipping-with-css-transform-on-ios/\r\n }\r\n\r\n if ('contentWindow' in this) {\r\n self.bind(this.contentWindow, \"scroll\", self.onscroll); //IE8 & minor\r\n } else {\r\n self.bind(doc, \"scroll\", self.onscroll);\r\n }\r\n\r\n if (opt.enablemousewheel) {\r\n self.mousewheel(doc, self.onmousewheel);\r\n }\r\n\r\n if (opt.enablekeyboard) self.bind(doc, (cap.isopera) ? \"keypress\" : \"keydown\", self.onkeypress);\r\n\r\n if (cap.cantouch) {\r\n self.bind(doc, \"touchstart\", self.ontouchstart);\r\n self.bind(doc, \"touchmove\", self.ontouchmove);\r\n }\r\n else if (opt.emulatetouch) {\r\n self.bind(doc, \"mousedown\", self.ontouchstart);\r\n self.bind(doc, \"mousemove\", function (e) {\r\n return self.ontouchmove(e, true);\r\n });\r\n if (opt.grabcursorenabled && cap.cursorgrabvalue) self.css($(doc.body), {\r\n 'cursor': cap.cursorgrabvalue\r\n });\r\n }\r\n\r\n self.bind(doc, \"mouseup\", self.ontouchend);\r\n\r\n if (self.zoom) {\r\n if (opt.dblclickzoom) self.bind(doc, 'dblclick', self.doZoom);\r\n if (self.ongesturezoom) self.bind(doc, \"gestureend\", self.ongesturezoom);\r\n }\r\n };\r\n\r\n if (this.doc[0].readyState && this.doc[0].readyState === \"complete\") {\r\n setTimeout(function () {\r\n oniframeload.call(self.doc[0], false);\r\n }, 500);\r\n }\r\n self.bind(this.doc, \"load\", oniframeload);\r\n\r\n }\r\n\r\n };\r\n\r\n this.showCursor = function (py, px) {\r\n if (self.cursortimeout) {\r\n clearTimeout(self.cursortimeout);\r\n self.cursortimeout = 0;\r\n }\r\n if (!self.rail) return;\r\n if (self.autohidedom) {\r\n self.autohidedom.stop().css({\r\n opacity: opt.cursoropacitymax\r\n });\r\n self.cursoractive = true;\r\n }\r\n\r\n if (!self.rail.drag || self.rail.drag.pt != 1) {\r\n if (py !== undefined && py !== false) {\r\n self.scroll.y = (py / self.scrollratio.y) | 0;\r\n }\r\n if (px !== undefined) {\r\n self.scroll.x = (px / self.scrollratio.x) | 0;\r\n }\r\n }\r\n\r\n self.cursor.css({\r\n height: self.cursorheight,\r\n top: self.scroll.y\r\n });\r\n if (self.cursorh) {\r\n var lx = (self.hasreversehr) ? self.scrollvaluemaxw - self.scroll.x : self.scroll.x;\r\n self.cursorh.css({\r\n width: self.cursorwidth,\r\n left: (!self.rail.align && self.rail.visibility) ? lx + self.rail.width : lx\r\n });\r\n self.cursoractive = true;\r\n }\r\n\r\n if (self.zoom) self.zoom.stop().css({\r\n opacity: opt.cursoropacitymax\r\n });\r\n };\r\n\r\n this.hideCursor = function (tm) {\r\n if (self.cursortimeout) return;\r\n if (!self.rail) return;\r\n if (!self.autohidedom) return;\r\n\r\n if (self.hasmousefocus && opt.autohidemode === \"leave\") return;\r\n self.cursortimeout = setTimeout(function () {\r\n if (!self.rail.active || !self.showonmouseevent) {\r\n self.autohidedom.stop().animate({\r\n opacity: opt.cursoropacitymin\r\n });\r\n if (self.zoom) self.zoom.stop().animate({\r\n opacity: opt.cursoropacitymin\r\n });\r\n self.cursoractive = false;\r\n }\r\n self.cursortimeout = 0;\r\n }, tm || opt.hidecursordelay);\r\n };\r\n\r\n this.noticeCursor = function (tm, py, px) {\r\n self.showCursor(py, px);\r\n if (!self.rail.active) self.hideCursor(tm);\r\n };\r\n\r\n this.getContentSize =\r\n (self.ispage) ?\r\n function () {\r\n return {\r\n w: Math.max(_doc.body.scrollWidth, _doc.documentElement.scrollWidth),\r\n h: Math.max(_doc.body.scrollHeight, _doc.documentElement.scrollHeight)\r\n };\r\n } : (self.haswrapper) ?\r\n function () {\r\n return {\r\n w: self.doc[0].offsetWidth,\r\n h: self.doc[0].offsetHeight\r\n };\r\n } : function () {\r\n return {\r\n w: self.docscroll[0].scrollWidth,\r\n h: self.docscroll[0].scrollHeight\r\n };\r\n };\r\n\r\n this.onResize = function (e, page) {\r\n\r\n if (!self || !self.win) return false;\r\n\r\n var premaxh = self.page.maxh,\r\n premaxw = self.page.maxw,\r\n previewh = self.view.h,\r\n previeww = self.view.w;\r\n\r\n self.view = {\r\n w: (self.ispage) ? self.win.width() : self.win[0].clientWidth,\r\n h: (self.ispage) ? self.win.height() : self.win[0].clientHeight\r\n };\r\n\r\n self.page = (page) ? page : self.getContentSize();\r\n\r\n self.page.maxh = Math.max(0, self.page.h - self.view.h);\r\n self.page.maxw = Math.max(0, self.page.w - self.view.w);\r\n\r\n if ((self.page.maxh == premaxh) && (self.page.maxw == premaxw) && (self.view.w == previeww) && (self.view.h == previewh)) {\r\n // test position\r\n if (!self.ispage) {\r\n var pos = self.win.offset();\r\n if (self.lastposition) {\r\n var lst = self.lastposition;\r\n if ((lst.top == pos.top) && (lst.left == pos.left)) return self; //nothing to do\r\n }\r\n self.lastposition = pos;\r\n } else {\r\n return self; //nothing to do\r\n }\r\n }\r\n\r\n if (self.page.maxh === 0) {\r\n self.hideRail();\r\n self.scrollvaluemax = 0;\r\n self.scroll.y = 0;\r\n self.scrollratio.y = 0;\r\n self.cursorheight = 0;\r\n self.setScrollTop(0);\r\n if (self.rail) self.rail.scrollable = false;\r\n } else {\r\n self.page.maxh -= (opt.railpadding.top + opt.railpadding.bottom);\r\n self.rail.scrollable = true;\r\n }\r\n\r\n if (self.page.maxw === 0) {\r\n self.hideRailHr();\r\n self.scrollvaluemaxw = 0;\r\n self.scroll.x = 0;\r\n self.scrollratio.x = 0;\r\n self.cursorwidth = 0;\r\n self.setScrollLeft(0);\r\n if (self.railh) {\r\n self.railh.scrollable = false;\r\n }\r\n } else {\r\n self.page.maxw -= (opt.railpadding.left + opt.railpadding.right);\r\n if (self.railh) self.railh.scrollable = (opt.horizrailenabled);\r\n }\r\n\r\n self.railslocked = (self.locked) || ((self.page.maxh === 0) && (self.page.maxw === 0));\r\n if (self.railslocked) {\r\n if (!self.ispage) self.updateScrollBar(self.view);\r\n return false;\r\n }\r\n\r\n if (!self.hidden) {\r\n if (!self.rail.visibility) self.showRail();\r\n if (self.railh && !self.railh.visibility) self.showRailHr();\r\n }\r\n\r\n if (self.istextarea && self.win.css('resize') && self.win.css('resize') != 'none') self.view.h -= 20;\r\n\r\n self.cursorheight = Math.min(self.view.h, Math.round(self.view.h * (self.view.h / self.page.h)));\r\n self.cursorheight = (opt.cursorfixedheight) ? opt.cursorfixedheight : Math.max(opt.cursorminheight, self.cursorheight);\r\n\r\n self.cursorwidth = Math.min(self.view.w, Math.round(self.view.w * (self.view.w / self.page.w)));\r\n self.cursorwidth = (opt.cursorfixedheight) ? opt.cursorfixedheight : Math.max(opt.cursorminheight, self.cursorwidth);\r\n\r\n self.scrollvaluemax = self.view.h - self.cursorheight - (opt.railpadding.top + opt.railpadding.bottom);\r\n if (!self.hasborderbox) self.scrollvaluemax -= self.cursor[0].offsetHeight - self.cursor[0].clientHeight;\r\n\r\n if (self.railh) {\r\n self.railh.width = (self.page.maxh > 0) ? (self.view.w - self.rail.width) : self.view.w;\r\n self.scrollvaluemaxw = self.railh.width - self.cursorwidth - (opt.railpadding.left + opt.railpadding.right);\r\n }\r\n\r\n if (!self.ispage) self.updateScrollBar(self.view);\r\n\r\n self.scrollratio = {\r\n x: (self.page.maxw / self.scrollvaluemaxw),\r\n y: (self.page.maxh / self.scrollvaluemax)\r\n };\r\n\r\n var sy = self.getScrollTop();\r\n if (sy > self.page.maxh) {\r\n self.doScrollTop(self.page.maxh);\r\n } else {\r\n self.scroll.y = (self.getScrollTop() / self.scrollratio.y) | 0;\r\n self.scroll.x = (self.getScrollLeft() / self.scrollratio.x) | 0;\r\n if (self.cursoractive) self.noticeCursor();\r\n }\r\n\r\n if (self.scroll.y && (self.getScrollTop() === 0)) self.doScrollTo((self.scroll.y * self.scrollratio.y)|0);\r\n\r\n return self;\r\n };\r\n\r\n this.resize = self.onResize;\r\n\r\n var hlazyresize = 0;\r\n\r\n this.onscreenresize = function(e) {\r\n clearTimeout(hlazyresize);\r\n\r\n var hiderails = (!self.ispage && !self.haswrapper);\r\n if (hiderails) self.hideRails();\r\n\r\n hlazyresize = setTimeout(function () {\r\n if (self) {\r\n if (hiderails) self.showRails();\r\n self.resize();\r\n }\r\n hlazyresize=0;\r\n }, 120);\r\n };\r\n\r\n this.lazyResize = function (tm) { // event debounce\r\n\r\n clearTimeout(hlazyresize);\r\n\r\n tm = isNaN(tm) ? 240 : tm;\r\n\r\n hlazyresize = setTimeout(function () {\r\n self && self.resize();\r\n hlazyresize=0;\r\n }, tm);\r\n\r\n return self;\r\n\r\n };\r\n\r\n // derived by MDN https://developer.mozilla.org/en-US/docs/DOM/Mozilla_event_reference/wheel\r\n function _modernWheelEvent(dom, name, fn, bubble) {\r\n self._bind(dom, name, function (e) {\r\n e = e || _win.event;\r\n var event = {\r\n original: e,\r\n target: e.target || e.srcElement,\r\n type: \"wheel\",\r\n deltaMode: e.type == \"MozMousePixelScroll\" ? 0 : 1,\r\n deltaX: 0,\r\n deltaZ: 0,\r\n preventDefault: function () {\r\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\r\n return false;\r\n },\r\n stopImmediatePropagation: function () {\r\n (e.stopImmediatePropagation) ? e.stopImmediatePropagation() : e.cancelBubble = true;\r\n }\r\n };\r\n\r\n if (name == \"mousewheel\") {\r\n e.wheelDeltaX && (event.deltaX = -1 / 40 * e.wheelDeltaX);\r\n e.wheelDeltaY && (event.deltaY = -1 / 40 * e.wheelDeltaY);\r\n !event.deltaY && !event.deltaX && (event.deltaY = -1 / 40 * e.wheelDelta);\r\n } else {\r\n event.deltaY = e.detail;\r\n }\r\n\r\n return fn.call(dom, event);\r\n }, bubble);\r\n }\r\n\r\n\r\n\r\n this.jqbind = function (dom, name, fn) { // use jquery bind for non-native events (mouseenter/mouseleave)\r\n self.events.push({\r\n e: dom,\r\n n: name,\r\n f: fn,\r\n q: true\r\n });\r\n $(dom).on(name, fn);\r\n };\r\n\r\n this.mousewheel = function (dom, fn, bubble) { // bind mousewheel\r\n var el = (\"jquery\" in dom) ? dom[0] : dom;\r\n if (\"onwheel\" in _doc.createElement(\"div\")) { // Modern browsers support \"wheel\"\r\n self._bind(el, \"wheel\", fn, bubble || false);\r\n } else {\r\n var wname = (_doc.onmousewheel !== undefined) ? \"mousewheel\" : \"DOMMouseScroll\"; // older Webkit+IE support or older Firefox\r\n _modernWheelEvent(el, wname, fn, bubble || false);\r\n if (wname == \"DOMMouseScroll\") _modernWheelEvent(el, \"MozMousePixelScroll\", fn, bubble || false); // Firefox legacy\r\n }\r\n };\r\n\r\n var passiveSupported = false;\r\n\r\n if (cap.haseventlistener) { // W3C standard event model\r\n\r\n // thanks to https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\r\n try { var options = Object.defineProperty({}, \"passive\", { get: function () { passiveSupported = !0; } }); _win.addEventListener(\"test\", null, options); } catch (err) { }\r\n\r\n this.stopPropagation = function (e) {\r\n if (!e) return false;\r\n e = (e.original) ? e.original : e;\r\n e.stopPropagation();\r\n return false;\r\n };\r\n\r\n this.cancelEvent = function(e) {\r\n if (e.cancelable) e.preventDefault();\r\n e.stopImmediatePropagation();\r\n if (e.preventManipulation) e.preventManipulation(); // IE10+\r\n return false;\r\n };\r\n\r\n } else {\r\n\r\n // inspired from https://gist.github.com/jonathantneal/2415137\r\n\r\n Event.prototype.preventDefault = function () {\r\n this.returnValue = false;\r\n };\r\n\r\n Event.prototype.stopPropagation = function () {\r\n this.cancelBubble = true;\r\n };\r\n\r\n _win.constructor.prototype.addEventListener = _doc.constructor.prototype.addEventListener = Element.prototype.addEventListener = function (type, listener, useCapture) {\r\n this.attachEvent(\"on\" + type, listener);\r\n };\r\n _win.constructor.prototype.removeEventListener = _doc.constructor.prototype.removeEventListener = Element.prototype.removeEventListener = function (type, listener, useCapture) {\r\n this.detachEvent(\"on\" + type, listener);\r\n };\r\n\r\n // Thanks to http://www.switchonthecode.com !!\r\n this.cancelEvent = function (e) {\r\n e = e || _win.event;\r\n if (e) {\r\n e.cancelBubble = true;\r\n e.cancel = true;\r\n e.returnValue = false;\r\n }\r\n return false;\r\n };\r\n\r\n this.stopPropagation = function (e) {\r\n e = e || _win.event;\r\n if (e) e.cancelBubble = true;\r\n return false;\r\n };\r\n\r\n }\r\n\r\n this.delegate = function (dom, name, fn, bubble, active) {\r\n\r\n var de = delegatevents[name] || false;\r\n\r\n if (!de) {\r\n\r\n de = {\r\n a: [],\r\n l: [],\r\n f: function (e) {\r\n var lst = de.l, l = lst.length - 1;\r\n var r = false;\r\n for (var a = l; a >= 0; a--) {\r\n r = lst[a].call(e.target, e);\r\n if (r === false) return false;\r\n }\r\n return r;\r\n }\r\n };\r\n\r\n self.bind(dom, name, de.f, bubble, active);\r\n\r\n delegatevents[name] = de;\r\n\r\n }\r\n\r\n if (self.ispage) {\r\n de.a = [self.id].concat(de.a);\r\n de.l = [fn].concat(de.l);\r\n } else {\r\n de.a.push(self.id);\r\n de.l.push(fn);\r\n }\r\n\r\n };\r\n\r\n this.undelegate = function (dom, name, fn, bubble, active) {\r\n var de = delegatevents[name]||false;\r\n if (de&&de.l) { // quick fix #683\r\n for (var a=0,l=de.l.length;a 0) return dd;\r\n dom = (dom.parentNode) ? dom.parentNode : false;\r\n }\r\n return false;\r\n };\r\n\r\n this.triggerScrollStart = function (cx, cy, rx, ry, ms) {\r\n\r\n if (self.onscrollstart) {\r\n var info = {\r\n type: \"scrollstart\",\r\n current: {\r\n x: cx,\r\n y: cy\r\n },\r\n request: {\r\n x: rx,\r\n y: ry\r\n },\r\n end: {\r\n x: self.newscrollx,\r\n y: self.newscrolly\r\n },\r\n speed: ms\r\n };\r\n self.onscrollstart.call(self, info);\r\n }\r\n\r\n };\r\n\r\n this.triggerScrollEnd = function () {\r\n if (self.onscrollend) {\r\n\r\n var px = self.getScrollLeft();\r\n var py = self.getScrollTop();\r\n\r\n var info = {\r\n type: \"scrollend\",\r\n current: {\r\n x: px,\r\n y: py\r\n },\r\n end: {\r\n x: px,\r\n y: py\r\n }\r\n };\r\n\r\n self.onscrollend.call(self, info);\r\n\r\n }\r\n\r\n };\r\n\r\n var scrolldiry = 0, scrolldirx = 0, scrolltmr = 0, scrollspd = 1;\r\n\r\n function doScrollRelative(px, py, chkscroll, iswheel) {\r\n\r\n if (!self.scrollrunning) {\r\n self.newscrolly = self.getScrollTop();\r\n self.newscrollx = self.getScrollLeft();\r\n scrolltmr = now();\r\n }\r\n\r\n var gap = (now() - scrolltmr);\r\n scrolltmr = now();\r\n\r\n if (gap > 350) {\r\n scrollspd = 1;\r\n } else {\r\n scrollspd += (2 - scrollspd) / 10;\r\n }\r\n\r\n px = px * scrollspd | 0;\r\n py = py * scrollspd | 0;\r\n\r\n if (px) {\r\n\r\n if (iswheel) { // mouse-only\r\n if (px < 0) { // fix apple magic mouse swipe back/forward\r\n if (self.getScrollLeft() >= self.page.maxw) return true;\r\n } else {\r\n if (self.getScrollLeft() <= 0) return true;\r\n }\r\n }\r\n\r\n var dx = px > 0 ? 1 : -1;\r\n\r\n if (scrolldirx !== dx) {\r\n if (self.scrollmom) self.scrollmom.stop();\r\n self.newscrollx = self.getScrollLeft();\r\n scrolldirx = dx;\r\n }\r\n\r\n self.lastdeltax -= px;\r\n\r\n }\r\n\r\n if (py) {\r\n\r\n var chk = (function () {\r\n var top = self.getScrollTop();\r\n if (py < 0) {\r\n if (top >= self.page.maxh) return true;\r\n } else {\r\n if (top <= 0) return true;\r\n }\r\n })();\r\n\r\n if (chk) {\r\n if (opt.nativeparentscrolling && chkscroll && !self.ispage && !self.zoomactive) return true;\r\n var ny = self.view.h >> 1;\r\n if (self.newscrolly < -ny) { self.newscrolly = -ny; py = -1; }\r\n else if (self.newscrolly > self.page.maxh + ny) { self.newscrolly = self.page.maxh + ny; py = 1; }\r\n else py = 0;\r\n }\r\n\r\n var dy = py > 0 ? 1 : -1;\r\n\r\n if (scrolldiry !== dy) {\r\n if (self.scrollmom) self.scrollmom.stop();\r\n self.newscrolly = self.getScrollTop();\r\n scrolldiry = dy;\r\n }\r\n\r\n self.lastdeltay -= py;\r\n\r\n }\r\n\r\n if (py || px) {\r\n self.synched(\"relativexy\", function () {\r\n\r\n var dty = self.lastdeltay + self.newscrolly;\r\n self.lastdeltay = 0;\r\n\r\n var dtx = self.lastdeltax + self.newscrollx;\r\n self.lastdeltax = 0;\r\n\r\n if (!self.rail.drag) self.doScrollPos(dtx, dty);\r\n\r\n });\r\n }\r\n\r\n }\r\n\r\n var hasparentscrollingphase = false;\r\n\r\n function execScrollWheel(e, hr, chkscroll) {\r\n var px, py;\r\n\r\n if (!chkscroll && hasparentscrollingphase) return true;\r\n\r\n if (e.deltaMode === 0) { // PIXEL\r\n px = -(e.deltaX * (opt.mousescrollstep / (18 * 3))) | 0;\r\n py = -(e.deltaY * (opt.mousescrollstep / (18 * 3))) | 0;\r\n } else if (e.deltaMode === 1) { // LINE\r\n px = -(e.deltaX * opt.mousescrollstep * 50 / 80) | 0;\r\n py = -(e.deltaY * opt.mousescrollstep * 50 / 80) | 0;\r\n }\r\n\r\n if (hr && opt.oneaxismousemode && (px === 0) && py) { // classic vertical-only mousewheel + browser with x/y support\r\n px = py;\r\n py = 0;\r\n\r\n if (chkscroll) {\r\n var hrend = (px < 0) ? (self.getScrollLeft() >= self.page.maxw) : (self.getScrollLeft() <= 0);\r\n if (hrend) { // preserve vertical scrolling\r\n py = px;\r\n px = 0;\r\n }\r\n }\r\n\r\n }\r\n\r\n // invert horizontal direction for rtl mode\r\n if (self.isrtlmode) px = -px;\r\n\r\n var chk = doScrollRelative(px, py, chkscroll, true);\r\n\r\n if (chk) {\r\n if (chkscroll) hasparentscrollingphase = true;\r\n } else {\r\n hasparentscrollingphase = false;\r\n e.stopImmediatePropagation();\r\n return e.preventDefault();\r\n }\r\n\r\n }\r\n\r\n this.onmousewheel = function (e) {\r\n if (self.wheelprevented||self.locked) return false;\r\n if (self.railslocked) {\r\n self.debounced(\"checkunlock\", self.resize, 250);\r\n return false;\r\n }\r\n if (self.rail.drag) return self.cancelEvent(e);\r\n\r\n if (opt.oneaxismousemode === \"auto\" && e.deltaX !== 0) opt.oneaxismousemode = false; // check two-axis mouse support (not very elegant)\r\n\r\n if (opt.oneaxismousemode && e.deltaX === 0) {\r\n if (!self.rail.scrollable) {\r\n if (self.railh && self.railh.scrollable) {\r\n return self.onmousewheelhr(e);\r\n } else {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n var nw = now();\r\n var chk = false;\r\n if (opt.preservenativescrolling && ((self.checkarea + 600) < nw)) {\r\n self.nativescrollingarea = self.isScrollable(e);\r\n chk = true;\r\n }\r\n self.checkarea = nw;\r\n if (self.nativescrollingarea) return true; // this isn't my business\r\n var ret = execScrollWheel(e, false, chk);\r\n if (ret) self.checkarea = 0;\r\n return ret;\r\n };\r\n\r\n this.onmousewheelhr = function (e) {\r\n if (self.wheelprevented) return;\r\n if (self.railslocked || !self.railh.scrollable) return true;\r\n if (self.rail.drag) return self.cancelEvent(e);\r\n\r\n var nw = now();\r\n var chk = false;\r\n if (opt.preservenativescrolling && ((self.checkarea + 600) < nw)) {\r\n self.nativescrollingarea = self.isScrollable(e);\r\n chk = true;\r\n }\r\n self.checkarea = nw;\r\n if (self.nativescrollingarea) return true; // this is not my business\r\n if (self.railslocked) return self.cancelEvent(e);\r\n\r\n return execScrollWheel(e, true, chk);\r\n };\r\n\r\n this.stop = function () {\r\n self.cancelScroll();\r\n if (self.scrollmon) self.scrollmon.stop();\r\n self.cursorfreezed = false;\r\n self.scroll.y = Math.round(self.getScrollTop() * (1 / self.scrollratio.y));\r\n self.noticeCursor();\r\n return self;\r\n };\r\n\r\n this.getTransitionSpeed = function (dif) {\r\n\r\n return 80 + (dif / 72) * opt.scrollspeed |0;\r\n\r\n };\r\n\r\n if (!opt.smoothscroll) {\r\n this.doScrollLeft = function (x, spd) { //direct\r\n var y = self.getScrollTop();\r\n self.doScrollPos(x, y, spd);\r\n };\r\n this.doScrollTop = function (y, spd) { //direct\r\n var x = self.getScrollLeft();\r\n self.doScrollPos(x, y, spd);\r\n };\r\n this.doScrollPos = function (x, y, spd) { //direct\r\n var nx = (x > self.page.maxw) ? self.page.maxw : x;\r\n if (nx < 0) nx = 0;\r\n var ny = (y > self.page.maxh) ? self.page.maxh : y;\r\n if (ny < 0) ny = 0;\r\n self.synched('scroll', function () {\r\n self.setScrollTop(ny);\r\n self.setScrollLeft(nx);\r\n });\r\n };\r\n this.cancelScroll = function () { }; // direct\r\n\r\n } else if (self.ishwscroll && cap.hastransition && opt.usetransition && !!opt.smoothscroll) {\r\n\r\n var lasttransitionstyle = '';\r\n\r\n this.resetTransition = function () {\r\n lasttransitionstyle = '';\r\n self.doc.css(cap.prefixstyle + 'transition-duration', '0ms');\r\n };\r\n\r\n this.prepareTransition = function (dif, istime) {\r\n var ex = (istime) ? dif : self.getTransitionSpeed(dif);\r\n var trans = ex + 'ms';\r\n if (lasttransitionstyle !== trans) {\r\n lasttransitionstyle = trans;\r\n self.doc.css(cap.prefixstyle + 'transition-duration', trans);\r\n }\r\n return ex;\r\n };\r\n\r\n this.doScrollLeft = function (x, spd) { //trans\r\n var y = (self.scrollrunning) ? self.newscrolly : self.getScrollTop();\r\n self.doScrollPos(x, y, spd);\r\n };\r\n\r\n this.doScrollTop = function (y, spd) { //trans\r\n var x = (self.scrollrunning) ? self.newscrollx : self.getScrollLeft();\r\n self.doScrollPos(x, y, spd);\r\n };\r\n\r\n this.cursorupdate = {\r\n running: false,\r\n start: function () {\r\n var m = this;\r\n\r\n if (m.running) return;\r\n m.running = true;\r\n\r\n var loop = function () {\r\n if (m.running) setAnimationFrame(loop);\r\n self.showCursor(self.getScrollTop(), self.getScrollLeft());\r\n self.notifyScrollEvent(self.win[0]);\r\n };\r\n\r\n setAnimationFrame(loop);\r\n },\r\n stop: function () {\r\n this.running = false;\r\n }\r\n };\r\n\r\n this.doScrollPos = function (x, y, spd) { //trans\r\n\r\n var py = self.getScrollTop();\r\n var px = self.getScrollLeft();\r\n\r\n if (((self.newscrolly - py) * (y - py) < 0) || ((self.newscrollx - px) * (x - px) < 0)) self.cancelScroll(); //inverted movement detection\r\n\r\n if (!opt.bouncescroll) {\r\n if (y < 0) y = 0;\r\n else if (y > self.page.maxh) y = self.page.maxh;\r\n if (x < 0) x = 0;\r\n else if (x > self.page.maxw) x = self.page.maxw;\r\n } else {\r\n if (y < 0) y = y / 2 | 0;\r\n else if (y > self.page.maxh) y = self.page.maxh + (y - self.page.maxh) / 2 | 0;\r\n if (x < 0) x = x / 2 | 0;\r\n else if (x > self.page.maxw) x = self.page.maxw + (x - self.page.maxw) / 2 | 0;\r\n }\r\n\r\n if (self.scrollrunning && x == self.newscrollx && y == self.newscrolly) return false;\r\n\r\n self.newscrolly = y;\r\n self.newscrollx = x;\r\n\r\n var top = self.getScrollTop();\r\n var lft = self.getScrollLeft();\r\n\r\n var dst = {};\r\n dst.x = x - lft;\r\n dst.y = y - top;\r\n\r\n var dd = Math.sqrt((dst.x * dst.x) + (dst.y * dst.y)) | 0;\r\n\r\n var ms = self.prepareTransition(dd);\r\n\r\n if (!self.scrollrunning) {\r\n self.scrollrunning = true;\r\n self.triggerScrollStart(lft, top, x, y, ms);\r\n self.cursorupdate.start();\r\n }\r\n\r\n self.scrollendtrapped = true;\r\n\r\n if (!cap.transitionend) {\r\n if (self.scrollendtrapped) clearTimeout(self.scrollendtrapped);\r\n self.scrollendtrapped = setTimeout(self.onScrollTransitionEnd, ms); // simulate transitionend event\r\n }\r\n\r\n self.setScrollTop(self.newscrolly);\r\n self.setScrollLeft(self.newscrollx);\r\n\r\n };\r\n\r\n this.cancelScroll = function () {\r\n if (!self.scrollendtrapped) return true;\r\n var py = self.getScrollTop();\r\n var px = self.getScrollLeft();\r\n self.scrollrunning = false;\r\n if (!cap.transitionend) clearTimeout(cap.transitionend);\r\n self.scrollendtrapped = false;\r\n self.resetTransition();\r\n self.setScrollTop(py); // fire event onscroll\r\n if (self.railh) self.setScrollLeft(px);\r\n if (self.timerscroll && self.timerscroll.tm) clearInterval(self.timerscroll.tm);\r\n self.timerscroll = false;\r\n\r\n self.cursorfreezed = false;\r\n\r\n self.cursorupdate.stop();\r\n self.showCursor(py, px);\r\n return self;\r\n };\r\n\r\n this.onScrollTransitionEnd = function () {\r\n\r\n if (!self.scrollendtrapped) return;\r\n\r\n var py = self.getScrollTop();\r\n var px = self.getScrollLeft();\r\n\r\n if (py < 0) py = 0;\r\n else if (py > self.page.maxh) py = self.page.maxh;\r\n if (px < 0) px = 0;\r\n else if (px > self.page.maxw) px = self.page.maxw;\r\n if ((py != self.newscrolly) || (px != self.newscrollx)) return self.doScrollPos(px, py, opt.snapbackspeed);\r\n\r\n if (self.scrollrunning) self.triggerScrollEnd();\r\n self.scrollrunning = false;\r\n\r\n self.scrollendtrapped = false;\r\n self.resetTransition();\r\n self.timerscroll = false;\r\n self.setScrollTop(py); // fire event onscroll\r\n if (self.railh) self.setScrollLeft(px); // fire event onscroll left\r\n\r\n self.cursorupdate.stop();\r\n self.noticeCursor(false, py, px);\r\n\r\n self.cursorfreezed = false;\r\n\r\n };\r\n\r\n } else {\r\n\r\n this.doScrollLeft = function (x, spd) { //no-trans\r\n var y = (self.scrollrunning) ? self.newscrolly : self.getScrollTop();\r\n self.doScrollPos(x, y, spd);\r\n };\r\n\r\n this.doScrollTop = function (y, spd) { //no-trans\r\n var x = (self.scrollrunning) ? self.newscrollx : self.getScrollLeft();\r\n self.doScrollPos(x, y, spd);\r\n };\r\n\r\n this.doScrollPos = function (x, y, spd) { //no-trans\r\n\r\n var py = self.getScrollTop();\r\n var px = self.getScrollLeft();\r\n\r\n if (((self.newscrolly - py) * (y - py) < 0) || ((self.newscrollx - px) * (x - px) < 0)) self.cancelScroll(); //inverted movement detection\r\n\r\n var clipped = false;\r\n\r\n if (!self.bouncescroll || !self.rail.visibility) {\r\n if (y < 0) {\r\n y = 0;\r\n clipped = true;\r\n } else if (y > self.page.maxh) {\r\n y = self.page.maxh;\r\n clipped = true;\r\n }\r\n }\r\n if (!self.bouncescroll || !self.railh.visibility) {\r\n if (x < 0) {\r\n x = 0;\r\n clipped = true;\r\n } else if (x > self.page.maxw) {\r\n x = self.page.maxw;\r\n clipped = true;\r\n }\r\n }\r\n\r\n if (self.scrollrunning && (self.newscrolly === y) && (self.newscrollx === x)) return true;\r\n\r\n self.newscrolly = y;\r\n self.newscrollx = x;\r\n\r\n self.dst = {};\r\n self.dst.x = x - px;\r\n self.dst.y = y - py;\r\n self.dst.px = px;\r\n self.dst.py = py;\r\n\r\n var dd = Math.sqrt((self.dst.x * self.dst.x) + (self.dst.y * self.dst.y)) | 0;\r\n var ms = self.getTransitionSpeed(dd);\r\n\r\n self.bzscroll = {};\r\n\r\n var p3 = (clipped) ? 1 : 0.58;\r\n self.bzscroll.x = new BezierClass(px, self.newscrollx, ms, 0, 0, p3, 1);\r\n self.bzscroll.y = new BezierClass(py, self.newscrolly, ms, 0, 0, p3, 1);\r\n\r\n var loopid = now();\r\n\r\n var loop = function () {\r\n\r\n if (!self.scrollrunning) return;\r\n var x = self.bzscroll.y.getPos();\r\n\r\n self.setScrollLeft(self.bzscroll.x.getNow());\r\n self.setScrollTop(self.bzscroll.y.getNow());\r\n\r\n if (x <= 1) {\r\n self.timer = setAnimationFrame(loop);\r\n } else {\r\n self.scrollrunning = false;\r\n self.timer = 0;\r\n self.triggerScrollEnd();\r\n }\r\n\r\n };\r\n\r\n if (!self.scrollrunning) {\r\n self.triggerScrollStart(px, py, x, y, ms);\r\n self.scrollrunning = true;\r\n self.timer = setAnimationFrame(loop);\r\n }\r\n\r\n };\r\n\r\n this.cancelScroll = function () {\r\n if (self.timer) clearAnimationFrame(self.timer);\r\n self.timer = 0;\r\n self.bzscroll = false;\r\n self.scrollrunning = false;\r\n return self;\r\n };\r\n\r\n }\r\n\r\n this.doScrollBy = function (stp, relative) {\r\n doScrollRelative(0, stp);\r\n };\r\n\r\n this.doScrollLeftBy = function (stp, relative) {\r\n doScrollRelative(stp, 0);\r\n };\r\n\r\n this.doScrollTo = function (pos, relative) {\r\n var ny = (relative) ? Math.round(pos * self.scrollratio.y) : pos;\r\n if (ny < 0) ny = 0;\r\n else if (ny > self.page.maxh) ny = self.page.maxh;\r\n self.cursorfreezed = false;\r\n self.doScrollTop(pos);\r\n };\r\n\r\n this.checkContentSize = function () {\r\n var pg = self.getContentSize();\r\n if ((pg.h != self.page.h) || (pg.w != self.page.w)) self.resize(false, pg);\r\n };\r\n\r\n self.onscroll = function (e) {\r\n if (self.rail.drag) return;\r\n if (!self.cursorfreezed) {\r\n self.synched('scroll', function () {\r\n self.scroll.y = Math.round(self.getScrollTop() / self.scrollratio.y);\r\n if (self.railh) self.scroll.x = Math.round(self.getScrollLeft() / self.scrollratio.x);\r\n self.noticeCursor();\r\n });\r\n }\r\n };\r\n self.bind(self.docscroll, \"scroll\", self.onscroll);\r\n\r\n this.doZoomIn = function (e) {\r\n if (self.zoomactive) return;\r\n self.zoomactive = true;\r\n\r\n self.zoomrestore = {\r\n style: {}\r\n };\r\n var lst = ['position', 'top', 'left', 'zIndex', 'backgroundColor', 'marginTop', 'marginBottom', 'marginLeft', 'marginRight'];\r\n var win = self.win[0].style;\r\n for (var a in lst) {\r\n var pp = lst[a];\r\n self.zoomrestore.style[pp] = (win[pp] !== undefined) ? win[pp] : '';\r\n }\r\n\r\n self.zoomrestore.style.width = self.win.css('width');\r\n self.zoomrestore.style.height = self.win.css('height');\r\n\r\n self.zoomrestore.padding = {\r\n w: self.win.outerWidth() - self.win.width(),\r\n h: self.win.outerHeight() - self.win.height()\r\n };\r\n\r\n if (cap.isios4) {\r\n self.zoomrestore.scrollTop = $window.scrollTop();\r\n $window.scrollTop(0);\r\n }\r\n\r\n self.win.css({\r\n position: (cap.isios4) ? \"absolute\" : \"fixed\",\r\n top: 0,\r\n left: 0,\r\n zIndex: globalmaxzindex + 100,\r\n margin: 0\r\n });\r\n var bkg = self.win.css(\"backgroundColor\");\r\n if (\"\" === bkg || /transparent|rgba\\(0, 0, 0, 0\\)|rgba\\(0,0,0,0\\)/.test(bkg)) self.win.css(\"backgroundColor\", \"#fff\");\r\n self.rail.css({\r\n zIndex: globalmaxzindex + 101\r\n });\r\n self.zoom.css({\r\n zIndex: globalmaxzindex + 102\r\n });\r\n self.zoom.css('backgroundPosition', '0 -18px');\r\n self.resizeZoom();\r\n\r\n if (self.onzoomin) self.onzoomin.call(self);\r\n\r\n return self.cancelEvent(e);\r\n };\r\n\r\n this.doZoomOut = function (e) {\r\n if (!self.zoomactive) return;\r\n self.zoomactive = false;\r\n\r\n self.win.css(\"margin\", \"\");\r\n self.win.css(self.zoomrestore.style);\r\n\r\n if (cap.isios4) {\r\n $window.scrollTop(self.zoomrestore.scrollTop);\r\n }\r\n\r\n self.rail.css({\r\n \"z-index\": self.zindex\r\n });\r\n self.zoom.css({\r\n \"z-index\": self.zindex\r\n });\r\n self.zoomrestore = false;\r\n self.zoom.css('backgroundPosition', '0 0');\r\n self.onResize();\r\n\r\n if (self.onzoomout) self.onzoomout.call(self);\r\n\r\n return self.cancelEvent(e);\r\n };\r\n\r\n this.doZoom = function (e) {\r\n return (self.zoomactive) ? self.doZoomOut(e) : self.doZoomIn(e);\r\n };\r\n\r\n this.resizeZoom = function () {\r\n if (!self.zoomactive) return;\r\n\r\n var py = self.getScrollTop(); //preserve scrolling position\r\n self.win.css({\r\n width: $window.width() - self.zoomrestore.padding.w + \"px\",\r\n height: $window.height() - self.zoomrestore.padding.h + \"px\"\r\n });\r\n self.onResize();\r\n\r\n self.setScrollTop(Math.min(self.page.maxh, py));\r\n };\r\n\r\n this.init();\r\n\r\n $.nicescroll.push(this);\r\n\r\n };\r\n\r\n // Inspired by the work of Kin Blas\r\n // http://webpro.host.adobe.com/people/jblas/momentum/includes/jquery.momentum.0.7.js\r\n var ScrollMomentumClass2D = function (nc) {\r\n var self = this;\r\n this.nc = nc;\r\n\r\n this.lastx = 0;\r\n this.lasty = 0;\r\n this.speedx = 0;\r\n this.speedy = 0;\r\n this.lasttime = 0;\r\n this.steptime = 0;\r\n this.snapx = false;\r\n this.snapy = false;\r\n this.demulx = 0;\r\n this.demuly = 0;\r\n\r\n this.lastscrollx = -1;\r\n this.lastscrolly = -1;\r\n\r\n this.chkx = 0;\r\n this.chky = 0;\r\n\r\n this.timer = 0;\r\n\r\n this.reset = function (px, py) {\r\n self.stop();\r\n self.steptime = 0;\r\n self.lasttime = now();\r\n self.speedx = 0;\r\n self.speedy = 0;\r\n self.lastx = px;\r\n self.lasty = py;\r\n self.lastscrollx = -1;\r\n self.lastscrolly = -1;\r\n };\r\n\r\n this.update = function (px, py) {\r\n var tm = now();\r\n self.steptime = tm - self.lasttime;\r\n self.lasttime = tm;\r\n var dy = py - self.lasty;\r\n var dx = px - self.lastx;\r\n var sy = self.nc.getScrollTop();\r\n var sx = self.nc.getScrollLeft();\r\n var newy = sy + dy;\r\n var newx = sx + dx;\r\n self.snapx = (newx < 0) || (newx > self.nc.page.maxw);\r\n self.snapy = (newy < 0) || (newy > self.nc.page.maxh);\r\n self.speedx = dx;\r\n self.speedy = dy;\r\n self.lastx = px;\r\n self.lasty = py;\r\n };\r\n\r\n this.stop = function () {\r\n self.nc.unsynched(\"domomentum2d\");\r\n if (self.timer) clearTimeout(self.timer);\r\n self.timer = 0;\r\n self.lastscrollx = -1;\r\n self.lastscrolly = -1;\r\n };\r\n\r\n this.doSnapy = function (nx, ny) {\r\n var snap = false;\r\n\r\n if (ny < 0) {\r\n ny = 0;\r\n snap = true;\r\n } else if (ny > self.nc.page.maxh) {\r\n ny = self.nc.page.maxh;\r\n snap = true;\r\n }\r\n\r\n if (nx < 0) {\r\n nx = 0;\r\n snap = true;\r\n } else if (nx > self.nc.page.maxw) {\r\n nx = self.nc.page.maxw;\r\n snap = true;\r\n }\r\n\r\n (snap) ? self.nc.doScrollPos(nx, ny, self.nc.opt.snapbackspeed) : self.nc.triggerScrollEnd();\r\n };\r\n\r\n this.doMomentum = function (gp) {\r\n var t = now();\r\n var l = (gp) ? t + gp : self.lasttime;\r\n\r\n var sl = self.nc.getScrollLeft();\r\n var st = self.nc.getScrollTop();\r\n\r\n var pageh = self.nc.page.maxh;\r\n var pagew = self.nc.page.maxw;\r\n\r\n self.speedx = (pagew > 0) ? Math.min(60, self.speedx) : 0;\r\n self.speedy = (pageh > 0) ? Math.min(60, self.speedy) : 0;\r\n\r\n var chk = l && (t - l) <= 60;\r\n\r\n if ((st < 0) || (st > pageh) || (sl < 0) || (sl > pagew)) chk = false;\r\n\r\n var sy = (self.speedy && chk) ? self.speedy : false;\r\n var sx = (self.speedx && chk) ? self.speedx : false;\r\n\r\n if (sy || sx) {\r\n var tm = Math.max(16, self.steptime); //timeout granularity\r\n\r\n if (tm > 50) { // do smooth\r\n var xm = tm / 50;\r\n self.speedx *= xm;\r\n self.speedy *= xm;\r\n tm = 50;\r\n }\r\n\r\n self.demulxy = 0;\r\n\r\n self.lastscrollx = self.nc.getScrollLeft();\r\n self.chkx = self.lastscrollx;\r\n self.lastscrolly = self.nc.getScrollTop();\r\n self.chky = self.lastscrolly;\r\n\r\n var nx = self.lastscrollx;\r\n var ny = self.lastscrolly;\r\n\r\n var onscroll = function () {\r\n var df = ((now() - t) > 600) ? 0.04 : 0.02;\r\n\r\n if (self.speedx) {\r\n nx = Math.floor(self.lastscrollx - (self.speedx * (1 - self.demulxy)));\r\n self.lastscrollx = nx;\r\n if ((nx < 0) || (nx > pagew)) df = 0.10;\r\n }\r\n\r\n if (self.speedy) {\r\n ny = Math.floor(self.lastscrolly - (self.speedy * (1 - self.demulxy)));\r\n self.lastscrolly = ny;\r\n if ((ny < 0) || (ny > pageh)) df = 0.10;\r\n }\r\n\r\n self.demulxy = Math.min(1, self.demulxy + df);\r\n\r\n self.nc.synched(\"domomentum2d\", function () {\r\n\r\n if (self.speedx) {\r\n var scx = self.nc.getScrollLeft();\r\n // if (scx != self.chkx) self.stop();\r\n self.chkx = nx;\r\n self.nc.setScrollLeft(nx);\r\n }\r\n\r\n if (self.speedy) {\r\n var scy = self.nc.getScrollTop();\r\n // if (scy != self.chky) self.stop();\r\n self.chky = ny;\r\n self.nc.setScrollTop(ny);\r\n }\r\n\r\n if (!self.timer) {\r\n self.nc.hideCursor();\r\n self.doSnapy(nx, ny);\r\n }\r\n\r\n });\r\n\r\n if (self.demulxy < 1) {\r\n self.timer = setTimeout(onscroll, tm);\r\n } else {\r\n self.stop();\r\n self.nc.hideCursor();\r\n self.doSnapy(nx, ny);\r\n }\r\n };\r\n\r\n onscroll();\r\n\r\n } else {\r\n self.doSnapy(self.nc.getScrollLeft(), self.nc.getScrollTop());\r\n }\r\n\r\n };\r\n\r\n };\r\n\r\n\r\n // override jQuery scrollTop\r\n var _scrollTop = jQuery.fn.scrollTop; // preserve original function\r\n\r\n jQuery.cssHooks.pageYOffset = {\r\n get: function (elem, computed, extra) {\r\n var nice = $.data(elem, '__nicescroll') || false;\r\n return (nice && nice.ishwscroll) ? nice.getScrollTop() : _scrollTop.call(elem);\r\n },\r\n set: function (elem, value) {\r\n var nice = $.data(elem, '__nicescroll') || false;\r\n (nice && nice.ishwscroll) ? nice.setScrollTop(parseInt(value)) : _scrollTop.call(elem, value);\r\n return this;\r\n }\r\n };\r\n\r\n jQuery.fn.scrollTop = function (value) {\r\n if (value === undefined) {\r\n var nice = (this[0]) ? $.data(this[0], '__nicescroll') || false : false;\r\n return (nice && nice.ishwscroll) ? nice.getScrollTop() : _scrollTop.call(this);\r\n } else {\r\n return this.each(function () {\r\n var nice = $.data(this, '__nicescroll') || false;\r\n (nice && nice.ishwscroll) ? nice.setScrollTop(parseInt(value)) : _scrollTop.call($(this), value);\r\n });\r\n }\r\n };\r\n\r\n // override jQuery scrollLeft\r\n var _scrollLeft = jQuery.fn.scrollLeft; // preserve original function\r\n\r\n $.cssHooks.pageXOffset = {\r\n get: function (elem, computed, extra) {\r\n var nice = $.data(elem, '__nicescroll') || false;\r\n return (nice && nice.ishwscroll) ? nice.getScrollLeft() : _scrollLeft.call(elem);\r\n },\r\n set: function (elem, value) {\r\n var nice = $.data(elem, '__nicescroll') || false;\r\n (nice && nice.ishwscroll) ? nice.setScrollLeft(parseInt(value)) : _scrollLeft.call(elem, value);\r\n return this;\r\n }\r\n };\r\n\r\n jQuery.fn.scrollLeft = function (value) {\r\n if (value === undefined) {\r\n var nice = (this[0]) ? $.data(this[0], '__nicescroll') || false : false;\r\n return (nice && nice.ishwscroll) ? nice.getScrollLeft() : _scrollLeft.call(this);\r\n } else {\r\n return this.each(function () {\r\n var nice = $.data(this, '__nicescroll') || false;\r\n (nice && nice.ishwscroll) ? nice.setScrollLeft(parseInt(value)) : _scrollLeft.call($(this), value);\r\n });\r\n }\r\n };\r\n\r\n var NiceScrollArray = function (doms) {\r\n var self = this;\r\n this.length = 0;\r\n this.name = \"nicescrollarray\";\r\n\r\n this.each = function (fn) {\r\n $.each(self, fn);\r\n return self;\r\n };\r\n\r\n this.push = function (nice) {\r\n self[self.length] = nice;\r\n self.length++;\r\n };\r\n\r\n this.eq = function (idx) {\r\n return self[idx];\r\n };\r\n\r\n if (doms) {\r\n for (var a = 0; a < doms.length; a++) {\r\n var nice = $.data(doms[a], '__nicescroll') || false;\r\n if (nice) {\r\n this[this.length] = nice;\r\n this.length++;\r\n }\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n\r\n function mplex(el, lst, fn) {\r\n for (var a = 0, l = lst.length; a < l; a++) fn(el, lst[a]);\r\n }\r\n mplex(\r\n NiceScrollArray.prototype, ['show', 'hide', 'toggle', 'onResize', 'resize', 'remove', 'stop', 'doScrollPos'],\r\n function (e, n) {\r\n e[n] = function () {\r\n var args = arguments;\r\n return this.each(function () {\r\n this[n].apply(this, args);\r\n });\r\n };\r\n }\r\n );\r\n\r\n jQuery.fn.getNiceScroll = function (index) {\r\n if (index === undefined) {\r\n return new NiceScrollArray(this);\r\n } else {\r\n return this[index] && $.data(this[index], '__nicescroll') || false;\r\n }\r\n };\r\n\r\n var pseudos = jQuery.expr.pseudos || jQuery.expr[':']; // jQuery 3 migration\r\n pseudos.nicescroll = function (a) {\r\n return $.data(a, '__nicescroll') !== undefined;\r\n };\r\n\r\n $.fn.niceScroll = function (wrapper, _opt) {\r\n if (_opt === undefined && typeof wrapper == \"object\" && !(\"jquery\" in wrapper)) {\r\n _opt = wrapper;\r\n wrapper = false;\r\n }\r\n\r\n var ret = new NiceScrollArray();\r\n\r\n this.each(function () {\r\n var $this = $(this);\r\n\r\n var opt = $.extend({}, _opt); // cloning\r\n\r\n if (wrapper || false) {\r\n var wrp = $(wrapper);\r\n opt.doc = (wrp.length > 1) ? $(wrapper, $this) : wrp;\r\n opt.win = $this;\r\n }\r\n var docundef = !(\"doc\" in opt);\r\n if (!docundef && !(\"win\" in opt)) opt.win = $this;\r\n\r\n var nice = $this.data('__nicescroll') || false;\r\n if (!nice) {\r\n opt.doc = opt.doc || $this;\r\n nice = new NiceScrollClass(opt, $this);\r\n $this.data('__nicescroll', nice);\r\n }\r\n ret.push(nice);\r\n });\r\n\r\n return (ret.length === 1) ? ret[0] : ret;\r\n };\r\n\r\n _win.NiceScroll = {\r\n getjQuery: function () {\r\n return jQuery;\r\n }\r\n };\r\n\r\n if (!$.nicescroll) {\r\n $.nicescroll = new NiceScrollArray();\r\n $.nicescroll.options = _globaloptions;\r\n }\r\n\r\n}));","/*\r\n* PragmaticPlayer.Js\r\n*\r\n* @package PragmaticPlayer.Js\r\n* @author $Author: sheiko $\r\n* @version $Id: jquery.pplayer.js, v 0.1 $\r\n* @license MIT\r\n* @copyright (c) Dmitry Sheiko http://www.dsheiko.com\r\n*/\r\n(function( window, undefined ){\r\n \"use strict\";\r\n var $ = window.jQuery,\r\n document = window.document,\r\n _instanceCounter = 0,\r\n // @link https://developers.google.com/youtube/js_api_reference\r\n YoutubeApi = (function() {\r\n var _isLoadRequested = false;\r\n return {\r\n loadAsynchronously: function() {\r\n _isLoadRequested = true;\r\n var tag = document.createElement('script');\r\n tag.src = \"//www.youtube.com/iframe_api\";\r\n var firstScriptTag = document.getElementsByTagName('script')[0];\r\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\r\n },\r\n isLoadRequested: function() {\r\n return _isLoadRequested;\r\n },\r\n isReady: function() {\r\n return window.YT !== undefined && window.YT.Player !== undefined;\r\n },\r\n ready: function( callback ) {\r\n var timerFn, timerRef, that = this;\r\n (function(delay){\r\n timerRef = setTimeout( timerFn = function(){\r\n if ( that.isReady() ) {\r\n callback( window.YT );\r\n } else {\r\n timerRef = setTimeout( timerFn, delay );\r\n }\r\n\r\n }, delay );\r\n })( 550 );\r\n }\r\n }\r\n }()),\r\n ApiAdapter = {\r\n Youtube : function( settings, handlers ){\r\n var _player,\r\n _renderUI = function( api ) {\r\n try {\r\n var videoElId = settings.boundingBox.find(\"div.pp-video\").attr(\"id\");\r\n _player = new api.Player(videoElId, {\r\n videoId: settings.youtubeVideoId,\r\n width: 854,\r\n height: 480,\r\n playerVars: {\r\n controls: 0,\r\n autoplay: settings.autoplay,\r\n showinfo: settings.showinfo,\r\n hd: settings.hd,\r\n html5: 1,\r\n wmode: \"transparent\",\r\n rel: 0,\r\n origin: settings.origin\r\n },\r\n events: {\r\n 'onReady': handlers.onReady,\r\n 'onStateChange': handlers.onStateChange\r\n }\r\n });\r\n } catch( e ) {\r\n window.console && console.log( e );\r\n settings.boundingBox.html( '' );\r\n }\r\n };\r\n\r\n YoutubeApi.isLoadRequested() || YoutubeApi.loadAsynchronously();\r\n YoutubeApi.ready(_renderUI);\r\n\r\n return {\r\n state: {\r\n UNSTARTED: -1,\r\n ENDED: 0,\r\n PLAYING: 1,\r\n PAUSED: 2,\r\n BUFFERING: 3,\r\n CUED: 5\r\n },\r\n getTarget: function() {\r\n return _player;\r\n },\r\n play: function() {\r\n _player.playVideo();\r\n },\r\n stop: function() {\r\n _player.stopVideo();\r\n },\r\n pause: function() {\r\n _player.pauseVideo();\r\n },\r\n mute: function( flag ) {\r\n _player[ flag ? \"mute\" : \"unMute\" ]();\r\n },\r\n currentTime: function( curTime ) {\r\n curTime !== undefined && _player.seekTo( curTime, true );\r\n return _player.getCurrentTime();\r\n },\r\n duration: function() {\r\n return _player.getDuration();\r\n }\r\n }\r\n },\r\n VideoElement : function( settings, handlers ){\r\n var _player = settings.boundingBox.find(\"video\").get(0);\r\n _player.onloadstart = function( e ) {\r\n handlers.onReady( e );\r\n e.data = -1;\r\n handlers.onStateChange( e );\r\n };\r\n _player.onplay = function( e ) {\r\n e.data = 1;\r\n handlers.onStateChange( e );\r\n };\r\n _player.onpause = function( e ) {\r\n e.data = 2;\r\n handlers.onStateChange( e );\r\n };\r\n return {\r\n state: {\r\n UNSTARTED: -1,\r\n ENDED: 0,\r\n PLAYING: 1,\r\n PAUSED: 2,\r\n BUFFERING: 3,\r\n CUED: 5\r\n },\r\n play: function() {\r\n _player.play();\r\n },\r\n stop: function() {\r\n _player.stop();\r\n },\r\n pause: function() {\r\n _player.pause();\r\n },\r\n mute: function( flag ) {\r\n _player.mue( flag );\r\n },\r\n currentTime: function( curTime ) {\r\n if (curTime !== undefined) {\r\n _player.currentTime = curTime;\r\n }\r\n return _player.currentTime;\r\n },\r\n duration: function() {\r\n return _player.duration;\r\n }\r\n }\r\n }\r\n },\r\n pPlayer = function( settings ) {\r\n\r\n var tpls = {\r\n playpause:\r\n '
    ' +\r\n ' ' +\r\n ' ' +\r\n '
    ',\r\n progress:\r\n '
    ',\r\n quality:\r\n '
    ',\r\n timer:\r\n '
    00:00 | 00:00
    ',\r\n mute:\r\n '
    ' +\r\n ' ' +\r\n ' ' +\r\n '
    ',\r\n fullscreen:\r\n '
    ' +\r\n ' ' +\r\n ' ' +\r\n '
    '\r\n },\r\n adapter,\r\n $boundingBox = settings.boundingBox,\r\n $pauseBtn,\r\n $playBtn,\r\n $overBtn,\r\n $muteBtn,\r\n $unmuteBtn,\r\n $enterFullscreenBtn,\r\n $leaveFullscreenBtn,\r\n $timer,\r\n $progressBar,\r\n $progressBarCursor,\r\n $quality,\r\n playingTrigger;\r\n\r\n settings = $.extend({\r\n boundingBox: null,\r\n youtubeVideoId: undefined,\r\n showinfo: 1,\r\n autoplay: 1,\r\n hd: 1,\r\n origin: undefined,\r\n adapter: undefined, // \"VideoElement\" or \"Youtube\"\r\n features: [\r\n \"playpause\",\r\n \"progress\",\r\n settings.adapter === \"Youtube\" ? \"quality\" : null,\r\n \"timer\",\r\n \"mute\",\r\n \"fullscreen\" ],\r\n resizeVideo: false,\r\n afterInit: null\r\n }, settings);\r\n\r\n return {\r\n getPlayerHtml: function() {\r\n var html = '';\r\n $.each(settings.features, function( inx, feature ) {\r\n feature && ( html += tpls[ feature ] );\r\n });\r\n return '
    ' +\r\n '
    ' + html +\r\n '
    ' +\r\n '
    ';\r\n },\r\n hasPlayerVideoElements: function() {\r\n return $boundingBox.find(\"div.pp-video > video\").length;\r\n },\r\n hasBrowserVideoElementSupport: (function() {\r\n var inputElem = document.createElement('video');\r\n return inputElem.play !== undefined;\r\n }()),\r\n hasDivXWebPlayerOn: function() {\r\n var divx = $( 'embed[type=\"video/divx\"]' );\r\n return divx && divx.length && divx.attr( 'mode' ) == 'null';\r\n },\r\n fallbackOnDivX: function() {\r\n var that = this;\r\n window.setTimeout(function(){\r\n if ( that.hasDivXWebPlayerOn() ) {\r\n $boundingBox.html( \"\" );\r\n $boundingBox.pPlayer(settings);\r\n }\r\n }, 500);\r\n },\r\n renderUI: function() {\r\n var that = this,\r\n apapterClass,\r\n videoElId = \"pp-player\" + _instanceCounter;\r\n\r\n playingTrigger = false;\r\n\r\n $boundingBox.html( function(inx, html){\r\n return '
    ' + html + '
    ' + that.getPlayerHtml()\r\n });\r\n $boundingBox\r\n .addClass(\"ppVideoWrapper\")\r\n .find(\"div.pp-video\").attr(\"id\", videoElId);\r\n\r\n $pauseBtn = $boundingBox.find('.controls button.pause');\r\n $playBtn = $boundingBox.find('.controls button.play');\r\n $overBtn = $boundingBox.find('.overlay');\r\n $muteBtn = $boundingBox.find('.controls button.mute');\r\n $unmuteBtn = $boundingBox.find('.controls button.unmute');\r\n $quality = $boundingBox.find('.controls .quality');\r\n $enterFullscreenBtn = $boundingBox.find('.controls button.enterFullscreen');\r\n $leaveFullscreenBtn = $boundingBox.find('.controls button.leaveFullscreen');\r\n $leaveFullscreenBtn.show =\r\n $overBtn.show =\r\n $pauseBtn.show =\r\n $playBtn.show =\r\n $muteBtn.show =\r\n $unmuteBtn.show = function() {\r\n $( this ).css({\"display\": \"block\"});\r\n }\r\n\r\n $timer = $boundingBox.find('.controls .timer');\r\n $progressBar = $boundingBox.find('.controls .progressBar');\r\n $progressBarCursor = $boundingBox.find('.controls .progressBar > div');\r\n\r\n if ( settings.adapter ) {\r\n apapterClass = settings.adapter;\r\n } else {\r\n apapterClass = this.hasPlayerVideoElements() ? \"VideoElement\" : \"Youtube\";\r\n }\r\n\r\n if ( !this.hasBrowserVideoElementSupport ) {\r\n apapterClass = \"Youtube\";\r\n } else {\r\n this.fallbackOnDivX();\r\n }\r\n\r\n if ( apapterClass === \"Youtube\" && settings.youtubeVideoId === undefined ) {\r\n throw new\r\n Error( \"Parameter youtubeVideoId is mondatory to play a youtube video\" );\r\n }\r\n\r\n adapter = new ApiAdapter[ apapterClass ](settings, {\r\n onReady: function( e ) {\r\n that.startTimer();\r\n that.onPlayerReady();\r\n },\r\n onStateChange: function( e ) {\r\n if ( e.data === adapter.state.PLAYING ) {\r\n $playBtn.hide();\r\n $pauseBtn.show();\r\n $overBtn.hide();\r\n playingTrigger || that.onPlaying();\r\n playingTrigger = true;\r\n } else {\r\n $overBtn.show();\r\n $playBtn.show();\r\n $pauseBtn.hide()\r\n }\r\n }\r\n });\r\n\r\n return this;\r\n },\r\n syncUI: function() {\r\n $pauseBtn.on(\"click\", $.proxy(this.pauseVideo, this));\r\n $playBtn.on(\"click\", $.proxy(this.playVideo, this));\r\n $overBtn.on(\"click\", $.proxy(this.playVideo, this));\r\n $muteBtn.on(\"click\", $.proxy(this.muteVideo, this));\r\n $unmuteBtn.on(\"click\", $.proxy(this.unmuteVideo, this));\r\n $progressBar.on(\"click\", $.proxy(this.handleProgressBar, this));\r\n $enterFullscreenBtn.on(\"click\", $.proxy(this.enterFullscreen, this));\r\n $leaveFullscreenBtn.on(\"click\", $.proxy(this.leaveFullscreen, this));\r\n\r\n $( document ).on( \"mozfullscreenchange\", $.proxy(this.handleFullscreenChange, this));\r\n $( document ).on( \"webkitfullscreenchange\", $.proxy(this.handleFullscreenChange, this));\r\n $( document ).on( \"fullscreenchange\", $.proxy(this.handleFullscreenChange, this));\r\n },\r\n onPlaying: function() {\r\n if ( adapter.getTarget === undefined ) {\r\n return;\r\n }\r\n this.renderQualityOptions();\r\n $boundingBox.find('.quality').on('click', 'li', function() {\r\n $(this).siblings().removeClass('selected').end().addClass('selected');\r\n adapter.getTarget().setPlaybackQuality($(this).data('value'));\r\n });\r\n },\r\n renderQualityOptions: function() {\r\n if ( adapter.getTarget === undefined ) {\r\n return;\r\n }\r\n var html = '
      ',\r\n qLevelMap = {\r\n small: \"240p\",\r\n medium: \"360p\",\r\n large: \"480p\",\r\n hd720: \"720p\",\r\n hd1080: \"1080p\",\r\n highres: \"highres\"\r\n },\r\n options = adapter.getTarget().getAvailableQualityLevels(),\r\n level = adapter.getTarget().getPlaybackQuality();\r\n\r\n $.each(options, function(inx, val) {\r\n html += '
    • '\r\n + ( qLevelMap[ val ] || val ) + '
    • ';\r\n });\r\n html += '
    ';\r\n\r\n return $( html ).appendTo( $quality );\r\n },\r\n getTimeByFloat: function( ctFloat ) {\r\n var t = {\r\n hours: 0,\r\n min: 0,\r\n sec: 0\r\n },\r\n minFloat = ctFloat / 60,\r\n hourFloat = minFloat / 60;\r\n\r\n if ( ctFloat ) {\r\n t.sec = Math.floor( ctFloat ); // if less than 60 sec\r\n t.min = Math.floor( minFloat ); // if less than 60 min\r\n t.hours = Math.floor( hourFloat );\r\n if ( t.hours ) {\r\n t.min = Math.floor( minFloat - ( t.hours * 60 ) );\r\n }\r\n if ( t.hours || t.min ) {\r\n t.sec = Math.floor( ctFloat - ( t.min * 60 ) - ( t.hours * 60 * 60 ) );\r\n }\r\n }\r\n return t;\r\n },\r\n playVideo: function() {\r\n $overBtn.hide();\r\n $playBtn.hide();\r\n $pauseBtn.show();\r\n adapter.play();\r\n },\r\n stopVideo: function() {\r\n adapter.stop();\r\n },\r\n pauseVideo: function() {\r\n $overBtn.show();\r\n $playBtn.show();\r\n $pauseBtn.hide();\r\n adapter.pause();\r\n },\r\n muteVideo : function() {\r\n $unmuteBtn.show();\r\n $muteBtn.hide();\r\n adapter.mute( true );\r\n },\r\n unmuteVideo : function() {\r\n $unmuteBtn.hide();\r\n $muteBtn.show();\r\n adapter.mute( false );\r\n },\r\n handleFullscreenChange: function() {\r\n if ((document.fullScreenElement && document.fullScreenElement !== null) ||\r\n (!document.mozFullScreen && !document.webkitIsFullScreen)) {\r\n this.leaveFullscreen();\r\n } else {\r\n this.enterFullscreen();\r\n }\r\n },\r\n enterFullscreen: function() {\r\n $(\"body\").addClass( \"fullscreen\" );\r\n $enterFullscreenBtn.hide();\r\n $leaveFullscreenBtn.show();\r\n var elem = $boundingBox.get(0);\r\n if (elem.requestFullScreen) {\r\n elem.requestFullScreen();\r\n } else if (elem.mozRequestFullScreen) {\r\n elem.mozRequestFullScreen();\r\n } else if (elem.webkitRequestFullScreen) {\r\n elem.webkitRequestFullScreen();\r\n }\r\n },\r\n leaveFullscreen: function() {\r\n $(\"body\").removeClass( \"fullscreen\" );\r\n $enterFullscreenBtn.show();\r\n $leaveFullscreenBtn.hide();\r\n if (document.cancelFullScreen) {\r\n document.cancelFullScreen();\r\n } else if (document.mozCancelFullScreen) {\r\n document.mozCancelFullScreen();\r\n } else if (document.webkitCancelFullScreen) {\r\n document.webkitCancelFullScreen();\r\n }\r\n },\r\n handleProgressBar: function( e ) {\r\n var offset, percent, newCurTime;\r\n e.preventDefault();\r\n offset = e.clientX - $progressBar.offset().left;\r\n percent = Math.floor(offset / ($progressBar.width() / 100));\r\n newCurTime = adapter.duration() / 100 * percent;\r\n this.updateProgressBarCursor( percent );\r\n adapter.currentTime( newCurTime );\r\n },\r\n updateTimer : function( line ) {\r\n $timer.html( line );\r\n },\r\n updateProgressBarCursor : function( progressPercents ) {\r\n $progressBarCursor.css({\"width\": progressPercents + \"%\"});\r\n },\r\n onPlayerReady : function() {\r\n /*if (settings.resizeVideo) {\r\n $.ajax({\r\n target: $boundingBox,\r\n type: 'GET',\r\n url: '//gdata.youtube.com/feeds/api/videos/' + settings.youtubeVideoId + '?v=2&alt=jsonc',\r\n success: function(data) {\r\n if (!data.data.aspectRatio) {\r\n this.target.addClass('no-wide');\r\n }\r\n if (typeof settings.afterInit === \"function\") {\r\n settings.afterInit.apply(this, [$boundingBox]);\r\n }\r\n }\r\n });\r\n } else {*/\r\n if (typeof settings.afterInit === \"function\") {\r\n settings.afterInit.apply(this, [$boundingBox]);\r\n }\r\n /*}*/\r\n },\r\n startTimer : function() {\r\n var timerFn, timerRef, timerOut = null, that = this,\r\n sprintf02d = function( val ) {\r\n val.toString().length < 2 && ( val = \"0\" + val ); // 5 => \"05\"\r\n return val;\r\n };\r\n (function(delay){\r\n timerRef = setTimeout( timerFn = function(){\r\n if ( adapter.currentTime ) {\r\n var curTime = that.getTimeByFloat( adapter.currentTime() ),\r\n duration = that.getTimeByFloat( adapter.duration() ),\r\n progressPercents = Math.floor( (\r\n adapter.currentTime() * 100) / adapter.duration() ),\r\n line;\r\n if ( duration.min ) {\r\n curTime.sec = sprintf02d( curTime.sec );\r\n duration.sec = sprintf02d( duration.sec );\r\n }\r\n if ( duration.hours ) {\r\n curTime.min = sprintf02d( curTime.min );\r\n duration.min = sprintf02d( duration.min );\r\n }\r\n line = ( duration.hours ? curTime.hours + \":\" : \"\" )\r\n + ( duration.min ? curTime.min + \":\" : \"00:\" )\r\n + curTime.sec\r\n + \" | \"\r\n + ( duration.hours ? duration.hours + \":\" : \"\" )\r\n + ( duration.min ? duration.min + \":\" : \"00:\" )\r\n + duration.sec;\r\n\r\n if ( timerOut !== line && !isNaN(duration.sec) ) {\r\n that.updateTimer( line );\r\n that.updateProgressBarCursor( progressPercents );\r\n }\r\n timerOut = line;\r\n }\r\n if ($boundingBox.hasClass( \"ppVideoWrapper\" )) {\r\n timerRef = setTimeout( timerFn, delay );\r\n }\r\n }, delay );\r\n })( 500 );\r\n }\r\n }\r\n };\r\n $.fn.pPlayer = function( settings ) {\r\n var player = new pPlayer($.extend({\r\n boundingBox: $( this )\r\n }, settings));\r\n _instanceCounter++;\r\n player.renderUI().syncUI();\r\n return player;\r\n }\r\n\r\n}( window ));","/*!\r\n\tZoom 1.7.20\r\n\tlicense: MIT\r\n\thttp://www.jacklmoore.com/zoom\r\n*/\r\n(function ($) {\r\n\tvar defaults = {\r\n\t\turl: false,\r\n\t\tcallback: false,\r\n\t\ttarget: false,\r\n\t\tduration: 120,\r\n\t\tscale: 1,\r\n\t\ton: 'mouseover', // other options: grab, click, toggle\r\n\t\ttouch: true, // enables a touch fallback\r\n\t\tonZoomIn: false,\r\n\t\tonZoomOut: false,\r\n\t\tmagnify: 1\r\n\t};\r\n\r\n\t// Core Zoom Logic, independent of event listeners.\r\n\t$.zoom = function(target, source, img, magnify, scale) {\r\n\t\tvar targetHeight,\r\n\t\t\ttargetWidth,\r\n\t\t\tsourceHeight,\r\n\t\t\tsourceWidth,\r\n\t\t\txRatio,\r\n\t\t\tyRatio,\r\n\t\t\toffset,\r\n\t\t\t$target = $(target),\r\n\t\t\tposition = $target.css('position'),\r\n\t\t\t$source = $(source);\r\n\r\n\t\t// The parent element needs positioning so that the zoomed element can be correctly positioned within.\r\n\t\ttarget.style.position = /(absolute|fixed)/.test(position) ? position : 'relative';\r\n\t\ttarget.style.overflow = 'hidden';\r\n\t\timg.style.width = img.style.height = '';\r\n\r\n\t\t$(img)\r\n\t\t\t.addClass('zoomImg')\r\n\t\t\t.css({\r\n\t\t\t\tposition: 'absolute',\r\n\t\t\t\ttop: 0,\r\n\t\t\t\tleft: 0,\r\n\t\t\t\topacity: 0,\r\n\t\t\t\twidth: img.width * magnify,\r\n\t\t\t\theight: img.height * magnify,\r\n\t\t\t\tborder: 'none',\r\n\t\t\t\tmaxWidth: 'none',\r\n\t\t\t\tmaxHeight: 'none'\r\n\t\t\t})\r\n\t\t\t.appendTo(target);\r\n\r\n\t\treturn {\r\n\t\t\tinit: function() {\r\n\t\t\t\ttargetWidth = $target.outerWidth();\r\n\t\t\t\ttargetHeight = $target.outerHeight();\r\n\r\n\t\t\t\tif (source === target) {\r\n\t\t\t\t\tsourceWidth = targetWidth * scale;\r\n\t\t\t\t\tsourceHeight = targetHeight * scale;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tsourceWidth = $source.outerWidth() * scale;\r\n\t\t\t\t\tsourceHeight = $source.outerHeight() * scale;\r\n\t\t\t\t}\r\n\r\n\t\t\t\txRatio = (img.width - targetWidth) / sourceWidth;\r\n\t\t\t\tyRatio = (img.height - targetHeight) / sourceHeight;\r\n\r\n\t\t\t\toffset = $source.offset();\r\n\t\t\t},\r\n\t\t\tmove: function (e) {\r\n\t\t\t\tvar left = (e.pageX - offset.left),\r\n\t\t\t\t\ttop = (e.pageY - offset.top);\r\n\t\t\t\ttop = Math.max(Math.min(top, sourceHeight), 0);\r\n\t\t\t\tleft = Math.max(Math.min(left, sourceWidth), 0);\r\n\r\n\t\t\t\timg.style.left = (left * -xRatio) + 'px';\r\n\t\t\t\timg.style.top = (top * -yRatio) + 'px';\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t$.fn.zoom = function (options) {\r\n\t\treturn this.each(function () {\r\n\t\t\tvar\r\n\t\t\tsettings = $.extend({}, defaults, options || {}),\r\n\t\t\t//target will display the zoomed image\r\n\t\t\ttarget = settings.target && $(settings.target)[0] || this,\r\n\t\t\t//source will provide zoom location info (thumbnail)\r\n\t\t\tsource = this,\r\n\t\t\t$source = $(source),\r\n\t\t\timg = document.createElement('img'),\r\n\t\t\t$img = $(img),\r\n\t\t\tmousemove = 'mousemove.zoom',\r\n\t\t\tclicked = false,\r\n\t\t\ttouched = false;\r\n\r\n\t\t\t// If a url wasn't specified, look for an image element.\r\n\t\t\tif (!settings.url) {\r\n\t\t\t\tvar srcElement = source.querySelector('img');\r\n\t\t\t\tif (srcElement) {\r\n\t\t\t\t\tsettings.url = srcElement.getAttribute('data-src') || srcElement.currentSrc || srcElement.src;\r\n\t\t\t\t}\r\n\t\t\t\tif (!settings.url) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t$source.one('zoom.destroy', function(position, overflow){\r\n\t\t\t\t$source.off('.zoom');\r\n\t\t\t\ttarget.style.position = position;\r\n\t\t\t\ttarget.style.overflow = overflow;\r\n\t\t\t\timg.onload = null;\r\n\t\t\t\t$img.remove();\r\n\t\t\t}.bind(this, target.style.position, target.style.overflow));\r\n\r\n\t\t\timg.onload = function () {\r\n\t\t\t\tvar zoom = $.zoom(target, source, img, settings.magnify, settings.scale);\r\n\r\n\t\t\t\tfunction start(e) {\r\n\t\t\t\t\t$img.data('started', true);\r\n\t\t\t\t\tzoom.init();\r\n\t\t\t\t\tzoom.move(e);\r\n\r\n\t\t\t\t\t// Skip the fade-in for IE8 and lower since it chokes on fading-in\r\n\t\t\t\t\t// and changing position based on mousemovement at the same time.\r\n\t\t\t\t\t$img.stop()\r\n\t\t\t\t\t.fadeTo($.support.opacity ? settings.duration : 0, 1, $.isFunction(settings.onZoomIn) ? settings.onZoomIn.call(img) : false);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction stop() {\r\n\t\t\t\t\t$img.stop()\r\n\t\t\t\t\t.fadeTo(settings.duration, 0, $.isFunction(settings.onZoomOut) ? settings.onZoomOut.call(img) : false);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction move(e) {\r\n\t\t\t\t\tif (!$img.data('started')) {\r\n\t\t\t\t\t\tstart(e);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tzoom.move(e);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Mouse events\r\n\t\t\t\tzoom.init(); // Preemptively call init because IE7 will fire the mousemove handler before the hover handler.\r\n\r\n\t\t\t\t$source\r\n\t\t\t\t\t.on('mouseenter.zoom', start)\r\n\t\t\t\t\t.on('mouseleave.zoom', stop)\r\n\t\t\t\t\t.on(mousemove, move);\r\n\r\n\t\t\t\t// Touch fallback\r\n\t\t\t\tif (settings.touch) {\r\n\t\t\t\t\t$source\r\n\t\t\t\t\t\t.on('touchstart.zoom', function (e) {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\tif (touched) {\r\n\t\t\t\t\t\t\t\ttouched = false;\r\n\t\t\t\t\t\t\t\tstop();\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\ttouched = true;\r\n\t\t\t\t\t\t\t\tstart( e.originalEvent.touches[0] || e.originalEvent.changedTouches[0] );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.on('touchmove.zoom', function (e) {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\tzoom.move( e.originalEvent.touches[0] || e.originalEvent.changedTouches[0] );\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.on('touchend.zoom', function (e) {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\tif (touched) {\r\n\t\t\t\t\t\t\t\ttouched = false;\r\n\t\t\t\t\t\t\t\tstop();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ($.isFunction(settings.callback)) {\r\n\t\t\t\t\tsettings.callback.call(img);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\timg.setAttribute('role', 'presentation');\r\n\t\t\timg.src = settings.url;\r\n\t\t});\r\n\t};\r\n\r\n\t$.fn.zoom.defaults = defaults;\r\n}(window.jQuery));\r\n","!function (e) { \"use strict\"; function t(e, i, a) { var o, n = document.createElement(\"img\"); return n.onerror = function (o) { return t.onerror(n, o, e, i, a) }, n.onload = function (o) { return t.onload(n, o, e, i, a) }, \"string\" == typeof e ? (t.fetchBlob(e, function (i) { i ? (e = i, o = t.createObjectURL(e)) : (o = e, a && a.crossOrigin && (n.crossOrigin = a.crossOrigin)), n.src = o }, a), n) : t.isInstanceOf(\"Blob\", e) || t.isInstanceOf(\"File\", e) ? (o = n._objectURL = t.createObjectURL(e)) ? (n.src = o, n) : t.readFile(e, function (e) { var t = e.target; t && t.result ? n.src = t.result : i && i(e) }) : void 0 } function i(e, i) { !e._objectURL || i && i.noRevoke || (t.revokeObjectURL(e._objectURL), delete e._objectURL) } var a = e.createObjectURL && e || e.URL && URL.revokeObjectURL && URL || e.webkitURL && webkitURL; t.fetchBlob = function (e, t, i) { t() }, t.isInstanceOf = function (e, t) { return Object.prototype.toString.call(t) === \"[object \" + e + \"]\" }, t.transform = function (e, t, i, a, o) { i(e, o) }, t.onerror = function (e, t, a, o, n) { i(e, n), o && o.call(e, t) }, t.onload = function (e, a, o, n, r) { i(e, r), n && t.transform(e, r, n, o, {}) }, t.createObjectURL = function (e) { return !!a && a.createObjectURL(e) }, t.revokeObjectURL = function (e) { return !!a && a.revokeObjectURL(e) }, t.readFile = function (t, i, a) { if (e.FileReader) { var o = new FileReader; if (o.onload = o.onerror = i, a = a || \"readAsDataURL\", o[a]) return o[a](t), o } return !1 }, \"function\" == typeof define && define.amd ? define(function () { return t }) : \"object\" == typeof module && module.exports ? module.exports = t : e.loadImage = t }(\"undefined\" != typeof window && window || this), function (e) { \"use strict\"; \"function\" == typeof define && define.amd ? define([\"./load-image\"], e) : e(\"object\" == typeof module && module.exports ? require(\"./load-image\") : window.loadImage) }(function (e) { \"use strict\"; var t = e.transform; e.transform = function (i, a, o, n, r) { t.call(e, e.scale(i, a, r), a, o, n, r) }, e.transformCoordinates = function () { }, e.getTransformedOptions = function (e, t) { var i, a, o, n, r = t.aspectRatio; if (!r) return t; i = {}; for (a in t) t.hasOwnProperty(a) && (i[a] = t[a]); return i.crop = !0, o = e.naturalWidth || e.width, n = e.naturalHeight || e.height, o / n > r ? (i.maxWidth = n * r, i.maxHeight = n) : (i.maxWidth = o, i.maxHeight = o / r), i }, e.renderImageToCanvas = function (e, t, i, a, o, n, r, s, l, d) { return e.getContext(\"2d\").drawImage(t, i, a, o, n, r, s, l, d), e }, e.hasCanvasOption = function (e) { return e.canvas || e.crop || !!e.aspectRatio }, e.scale = function (t, i, a) { function o() { var e = Math.max((l || v) / v, (d || P) / P); e > 1 && (v *= e, P *= e) } function n() { var e = Math.min((r || v) / v, (s || P) / P); e < 1 && (v *= e, P *= e) } i = i || {}; var r, s, l, d, c, u, f, g, h, m, p, S = document.createElement(\"canvas\"), b = t.getContext || e.hasCanvasOption(i) && S.getContext, y = t.naturalWidth || t.width, x = t.naturalHeight || t.height, v = y, P = x; if (b && (f = (i = e.getTransformedOptions(t, i, a)).left || 0, g = i.top || 0, i.sourceWidth ? (c = i.sourceWidth, void 0 !== i.right && void 0 === i.left && (f = y - c - i.right)) : c = y - f - (i.right || 0), i.sourceHeight ? (u = i.sourceHeight, void 0 !== i.bottom && void 0 === i.top && (g = x - u - i.bottom)) : u = x - g - (i.bottom || 0), v = c, P = u), r = i.maxWidth, s = i.maxHeight, l = i.minWidth, d = i.minHeight, b && r && s && i.crop ? (v = r, P = s, (p = c / u - r / s) < 0 ? (u = s * c / r, void 0 === i.top && void 0 === i.bottom && (g = (x - u) / 2)) : p > 0 && (c = r * u / s, void 0 === i.left && void 0 === i.right && (f = (y - c) / 2))) : ((i.contain || i.cover) && (l = r = r || l, d = s = s || d), i.cover ? (n(), o()) : (o(), n())), b) { if ((h = i.pixelRatio) > 1 && (S.style.width = v + \"px\", S.style.height = P + \"px\", v *= h, P *= h, S.getContext(\"2d\").scale(h, h)), (m = i.downsamplingRatio) > 0 && m < 1 && v < c && P < u) for (; c * m > v;)S.width = c * m, S.height = u * m, e.renderImageToCanvas(S, t, f, g, c, u, 0, 0, S.width, S.height), f = 0, g = 0, c = S.width, u = S.height, (t = document.createElement(\"canvas\")).width = c, t.height = u, e.renderImageToCanvas(t, S, 0, 0, c, u, 0, 0, c, u); return S.width = v, S.height = P, e.transformCoordinates(S, i), e.renderImageToCanvas(S, t, f, g, c, u, 0, 0, v, P) } return t.width = v, t.height = P, t } }), function (e) { \"use strict\"; \"function\" == typeof define && define.amd ? define([\"./load-image\"], e) : e(\"object\" == typeof module && module.exports ? require(\"./load-image\") : window.loadImage) }(function (e) { \"use strict\"; var t = \"undefined\" != typeof Blob && (Blob.prototype.slice || Blob.prototype.webkitSlice || Blob.prototype.mozSlice); e.blobSlice = t && function () { return (this.slice || this.webkitSlice || this.mozSlice).apply(this, arguments) }, e.metaDataParsers = { jpeg: { 65505: [] } }, e.parseMetaData = function (t, i, a, o) { a = a || {}, o = o || {}; var n = this, r = a.maxMetaDataSize || 262144; !!(\"undefined\" != typeof DataView && t && t.size >= 12 && \"image/jpeg\" === t.type && e.blobSlice) && e.readFile(e.blobSlice.call(t, 0, r), function (t) { if (t.target.error) return console.log(t.target.error), void i(o); var r, s, l, d, c = t.target.result, u = new DataView(c), f = 2, g = u.byteLength - 4, h = f; if (65496 === u.getUint16(0)) { for (; f < g && ((r = u.getUint16(f)) >= 65504 && r <= 65519 || 65534 === r);) { if (s = u.getUint16(f + 2) + 2, f + s > u.byteLength) { console.log(\"Invalid meta data: Invalid segment size.\"); break } if (l = e.metaDataParsers.jpeg[r]) for (d = 0; d < l.length; d += 1)l[d].call(n, u, f, s, o, a); h = f += s } !a.disableImageHead && h > 6 && (c.slice ? o.imageHead = c.slice(0, h) : o.imageHead = new Uint8Array(c).subarray(0, h)) } else console.log(\"Invalid JPEG file: Missing JPEG marker.\"); i(o) }, \"readAsArrayBuffer\") || i(o) }, e.hasMetaOption = function (e) { return e && e.meta }; var i = e.transform; e.transform = function (t, a, o, n, r) { e.hasMetaOption(a) ? e.parseMetaData(n, function (r) { i.call(e, t, a, o, n, r) }, a, r) : i.apply(e, arguments) } }), function (e) { \"use strict\"; \"function\" == typeof define && define.amd ? define([\"./load-image\", \"./load-image-meta\"], e) : \"object\" == typeof module && module.exports ? e(require(\"./load-image\"), require(\"./load-image-meta\")) : e(window.loadImage) }(function (e) { \"use strict\"; \"undefined\" != typeof fetch && \"undefined\" != typeof Request && (e.fetchBlob = function (t, i, a) { if (e.hasMetaOption(a)) return fetch(new Request(t, a)).then(function (e) { return e.blob() }).then(i).catch(function (e) { console.log(e), i() }); i() }) }), function (e) { \"use strict\"; \"function\" == typeof define && define.amd ? define([\"./load-image\", \"./load-image-meta\"], e) : \"object\" == typeof module && module.exports ? e(require(\"./load-image\"), require(\"./load-image-meta\")) : e(window.loadImage) }(function (e) { \"use strict\"; e.ExifMap = function () { return this }, e.ExifMap.prototype.map = { Orientation: 274 }, e.ExifMap.prototype.get = function (e) { return this[e] || this[this.map[e]] }, e.getExifThumbnail = function (e, t, i) { var a, o, n; { if (i && !(t + i > e.byteLength)) { for (a = [], o = 0; o < i; o += 1)n = e.getUint8(t + o), a.push((n < 16 ? \"0\" : \"\") + n.toString(16)); return \"data:image/jpeg,%\" + a.join(\"%\") } console.log(\"Invalid Exif data: Invalid thumbnail data.\") } }, e.exifTagTypes = { 1: { getValue: function (e, t) { return e.getUint8(t) }, size: 1 }, 2: { getValue: function (e, t) { return String.fromCharCode(e.getUint8(t)) }, size: 1, ascii: !0 }, 3: { getValue: function (e, t, i) { return e.getUint16(t, i) }, size: 2 }, 4: { getValue: function (e, t, i) { return e.getUint32(t, i) }, size: 4 }, 5: { getValue: function (e, t, i) { return e.getUint32(t, i) / e.getUint32(t + 4, i) }, size: 8 }, 9: { getValue: function (e, t, i) { return e.getInt32(t, i) }, size: 4 }, 10: { getValue: function (e, t, i) { return e.getInt32(t, i) / e.getInt32(t + 4, i) }, size: 8 } }, e.exifTagTypes[7] = e.exifTagTypes[1], e.getExifValue = function (t, i, a, o, n, r) { var s, l, d, c, u, f, g = e.exifTagTypes[o]; if (g) { if (s = g.size * n, !((l = s > 4 ? i + t.getUint32(a + 8, r) : a + 8) + s > t.byteLength)) { if (1 === n) return g.getValue(t, l, r); for (d = [], c = 0; c < n; c += 1)d[c] = g.getValue(t, l + c * g.size, r); if (g.ascii) { for (u = \"\", c = 0; c < d.length && \"\\0\" !== (f = d[c]); c += 1)u += f; return u } return d } console.log(\"Invalid Exif data: Invalid data offset.\") } else console.log(\"Invalid Exif data: Invalid tag type.\") }, e.parseExifTag = function (t, i, a, o, n) { var r = t.getUint16(a, o); n.exif[r] = e.getExifValue(t, i, a, t.getUint16(a + 2, o), t.getUint32(a + 4, o), o) }, e.parseExifTags = function (e, t, i, a, o) { var n, r, s; if (i + 6 > e.byteLength) console.log(\"Invalid Exif data: Invalid directory offset.\"); else { if (n = e.getUint16(i, a), !((r = i + 2 + 12 * n) + 4 > e.byteLength)) { for (s = 0; s < n; s += 1)this.parseExifTag(e, t, i + 2 + 12 * s, a, o); return e.getUint32(r, a) } console.log(\"Invalid Exif data: Invalid directory size.\") } }, e.parseExifData = function (t, i, a, o, n) { if (!n.disableExif) { var r, s, l, d = i + 10; if (1165519206 === t.getUint32(i + 4)) if (d + 8 > t.byteLength) console.log(\"Invalid Exif data: Invalid segment size.\"); else if (0 === t.getUint16(i + 8)) { switch (t.getUint16(d)) { case 18761: r = !0; break; case 19789: r = !1; break; default: return void console.log(\"Invalid Exif data: Invalid byte alignment marker.\") }42 === t.getUint16(d + 2, r) ? (s = t.getUint32(d + 4, r), o.exif = new e.ExifMap, (s = e.parseExifTags(t, d, d + s, r, o)) && !n.disableExifThumbnail && (l = { exif: {} }, s = e.parseExifTags(t, d, d + s, r, l), l.exif[513] && (o.exif.Thumbnail = e.getExifThumbnail(t, d + l.exif[513], l.exif[514]))), o.exif[34665] && !n.disableExifSub && e.parseExifTags(t, d, d + o.exif[34665], r, o), o.exif[34853] && !n.disableExifGps && e.parseExifTags(t, d, d + o.exif[34853], r, o)) : console.log(\"Invalid Exif data: Missing TIFF marker.\") } else console.log(\"Invalid Exif data: Missing byte alignment offset.\") } }, e.metaDataParsers.jpeg[65505].push(e.parseExifData) }), function (e) { \"use strict\"; \"function\" == typeof define && define.amd ? define([\"./load-image\", \"./load-image-exif\"], e) : \"object\" == typeof module && module.exports ? e(require(\"./load-image\"), require(\"./load-image-exif\")) : e(window.loadImage) }(function (e) { \"use strict\"; e.ExifMap.prototype.tags = { 256: \"ImageWidth\", 257: \"ImageHeight\", 34665: \"ExifIFDPointer\", 34853: \"GPSInfoIFDPointer\", 40965: \"InteroperabilityIFDPointer\", 258: \"BitsPerSample\", 259: \"Compression\", 262: \"PhotometricInterpretation\", 274: \"Orientation\", 277: \"SamplesPerPixel\", 284: \"PlanarConfiguration\", 530: \"YCbCrSubSampling\", 531: \"YCbCrPositioning\", 282: \"XResolution\", 283: \"YResolution\", 296: \"ResolutionUnit\", 273: \"StripOffsets\", 278: \"RowsPerStrip\", 279: \"StripByteCounts\", 513: \"JPEGInterchangeFormat\", 514: \"JPEGInterchangeFormatLength\", 301: \"TransferFunction\", 318: \"WhitePoint\", 319: \"PrimaryChromaticities\", 529: \"YCbCrCoefficients\", 532: \"ReferenceBlackWhite\", 306: \"DateTime\", 270: \"ImageDescription\", 271: \"Make\", 272: \"Model\", 305: \"Software\", 315: \"Artist\", 33432: \"Copyright\", 36864: \"ExifVersion\", 40960: \"FlashpixVersion\", 40961: \"ColorSpace\", 40962: \"PixelXDimension\", 40963: \"PixelYDimension\", 42240: \"Gamma\", 37121: \"ComponentsConfiguration\", 37122: \"CompressedBitsPerPixel\", 37500: \"MakerNote\", 37510: \"UserComment\", 40964: \"RelatedSoundFile\", 36867: \"DateTimeOriginal\", 36868: \"DateTimeDigitized\", 37520: \"SubSecTime\", 37521: \"SubSecTimeOriginal\", 37522: \"SubSecTimeDigitized\", 33434: \"ExposureTime\", 33437: \"FNumber\", 34850: \"ExposureProgram\", 34852: \"SpectralSensitivity\", 34855: \"PhotographicSensitivity\", 34856: \"OECF\", 34864: \"SensitivityType\", 34865: \"StandardOutputSensitivity\", 34866: \"RecommendedExposureIndex\", 34867: \"ISOSpeed\", 34868: \"ISOSpeedLatitudeyyy\", 34869: \"ISOSpeedLatitudezzz\", 37377: \"ShutterSpeedValue\", 37378: \"ApertureValue\", 37379: \"BrightnessValue\", 37380: \"ExposureBias\", 37381: \"MaxApertureValue\", 37382: \"SubjectDistance\", 37383: \"MeteringMode\", 37384: \"LightSource\", 37385: \"Flash\", 37396: \"SubjectArea\", 37386: \"FocalLength\", 41483: \"FlashEnergy\", 41484: \"SpatialFrequencyResponse\", 41486: \"FocalPlaneXResolution\", 41487: \"FocalPlaneYResolution\", 41488: \"FocalPlaneResolutionUnit\", 41492: \"SubjectLocation\", 41493: \"ExposureIndex\", 41495: \"SensingMethod\", 41728: \"FileSource\", 41729: \"SceneType\", 41730: \"CFAPattern\", 41985: \"CustomRendered\", 41986: \"ExposureMode\", 41987: \"WhiteBalance\", 41988: \"DigitalZoomRatio\", 41989: \"FocalLengthIn35mmFilm\", 41990: \"SceneCaptureType\", 41991: \"GainControl\", 41992: \"Contrast\", 41993: \"Saturation\", 41994: \"Sharpness\", 41995: \"DeviceSettingDescription\", 41996: \"SubjectDistanceRange\", 42016: \"ImageUniqueID\", 42032: \"CameraOwnerName\", 42033: \"BodySerialNumber\", 42034: \"LensSpecification\", 42035: \"LensMake\", 42036: \"LensModel\", 42037: \"LensSerialNumber\", 0: \"GPSVersionID\", 1: \"GPSLatitudeRef\", 2: \"GPSLatitude\", 3: \"GPSLongitudeRef\", 4: \"GPSLongitude\", 5: \"GPSAltitudeRef\", 6: \"GPSAltitude\", 7: \"GPSTimeStamp\", 8: \"GPSSatellites\", 9: \"GPSStatus\", 10: \"GPSMeasureMode\", 11: \"GPSDOP\", 12: \"GPSSpeedRef\", 13: \"GPSSpeed\", 14: \"GPSTrackRef\", 15: \"GPSTrack\", 16: \"GPSImgDirectionRef\", 17: \"GPSImgDirection\", 18: \"GPSMapDatum\", 19: \"GPSDestLatitudeRef\", 20: \"GPSDestLatitude\", 21: \"GPSDestLongitudeRef\", 22: \"GPSDestLongitude\", 23: \"GPSDestBearingRef\", 24: \"GPSDestBearing\", 25: \"GPSDestDistanceRef\", 26: \"GPSDestDistance\", 27: \"GPSProcessingMethod\", 28: \"GPSAreaInformation\", 29: \"GPSDateStamp\", 30: \"GPSDifferential\", 31: \"GPSHPositioningError\" }, e.ExifMap.prototype.stringValues = { ExposureProgram: { 0: \"Undefined\", 1: \"Manual\", 2: \"Normal program\", 3: \"Aperture priority\", 4: \"Shutter priority\", 5: \"Creative program\", 6: \"Action program\", 7: \"Portrait mode\", 8: \"Landscape mode\" }, MeteringMode: { 0: \"Unknown\", 1: \"Average\", 2: \"CenterWeightedAverage\", 3: \"Spot\", 4: \"MultiSpot\", 5: \"Pattern\", 6: \"Partial\", 255: \"Other\" }, LightSource: { 0: \"Unknown\", 1: \"Daylight\", 2: \"Fluorescent\", 3: \"Tungsten (incandescent light)\", 4: \"Flash\", 9: \"Fine weather\", 10: \"Cloudy weather\", 11: \"Shade\", 12: \"Daylight fluorescent (D 5700 - 7100K)\", 13: \"Day white fluorescent (N 4600 - 5400K)\", 14: \"Cool white fluorescent (W 3900 - 4500K)\", 15: \"White fluorescent (WW 3200 - 3700K)\", 17: \"Standard light A\", 18: \"Standard light B\", 19: \"Standard light C\", 20: \"D55\", 21: \"D65\", 22: \"D75\", 23: \"D50\", 24: \"ISO studio tungsten\", 255: \"Other\" }, Flash: { 0: \"Flash did not fire\", 1: \"Flash fired\", 5: \"Strobe return light not detected\", 7: \"Strobe return light detected\", 9: \"Flash fired, compulsory flash mode\", 13: \"Flash fired, compulsory flash mode, return light not detected\", 15: \"Flash fired, compulsory flash mode, return light detected\", 16: \"Flash did not fire, compulsory flash mode\", 24: \"Flash did not fire, auto mode\", 25: \"Flash fired, auto mode\", 29: \"Flash fired, auto mode, return light not detected\", 31: \"Flash fired, auto mode, return light detected\", 32: \"No flash function\", 65: \"Flash fired, red-eye reduction mode\", 69: \"Flash fired, red-eye reduction mode, return light not detected\", 71: \"Flash fired, red-eye reduction mode, return light detected\", 73: \"Flash fired, compulsory flash mode, red-eye reduction mode\", 77: \"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected\", 79: \"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected\", 89: \"Flash fired, auto mode, red-eye reduction mode\", 93: \"Flash fired, auto mode, return light not detected, red-eye reduction mode\", 95: \"Flash fired, auto mode, return light detected, red-eye reduction mode\" }, SensingMethod: { 1: \"Undefined\", 2: \"One-chip color area sensor\", 3: \"Two-chip color area sensor\", 4: \"Three-chip color area sensor\", 5: \"Color sequential area sensor\", 7: \"Trilinear sensor\", 8: \"Color sequential linear sensor\" }, SceneCaptureType: { 0: \"Standard\", 1: \"Landscape\", 2: \"Portrait\", 3: \"Night scene\" }, SceneType: { 1: \"Directly photographed\" }, CustomRendered: { 0: \"Normal process\", 1: \"Custom process\" }, WhiteBalance: { 0: \"Auto white balance\", 1: \"Manual white balance\" }, GainControl: { 0: \"None\", 1: \"Low gain up\", 2: \"High gain up\", 3: \"Low gain down\", 4: \"High gain down\" }, Contrast: { 0: \"Normal\", 1: \"Soft\", 2: \"Hard\" }, Saturation: { 0: \"Normal\", 1: \"Low saturation\", 2: \"High saturation\" }, Sharpness: { 0: \"Normal\", 1: \"Soft\", 2: \"Hard\" }, SubjectDistanceRange: { 0: \"Unknown\", 1: \"Macro\", 2: \"Close view\", 3: \"Distant view\" }, FileSource: { 3: \"DSC\" }, ComponentsConfiguration: { 0: \"\", 1: \"Y\", 2: \"Cb\", 3: \"Cr\", 4: \"R\", 5: \"G\", 6: \"B\" }, Orientation: { 1: \"top-left\", 2: \"top-right\", 3: \"bottom-right\", 4: \"bottom-left\", 5: \"left-top\", 6: \"right-top\", 7: \"right-bottom\", 8: \"left-bottom\" } }, e.ExifMap.prototype.getText = function (e) { var t = this.get(e); switch (e) { case \"LightSource\": case \"Flash\": case \"MeteringMode\": case \"ExposureProgram\": case \"SensingMethod\": case \"SceneCaptureType\": case \"SceneType\": case \"CustomRendered\": case \"WhiteBalance\": case \"GainControl\": case \"Contrast\": case \"Saturation\": case \"Sharpness\": case \"SubjectDistanceRange\": case \"FileSource\": case \"Orientation\": return this.stringValues[e][t]; case \"ExifVersion\": case \"FlashpixVersion\": if (!t) return; return String.fromCharCode(t[0], t[1], t[2], t[3]); case \"ComponentsConfiguration\": if (!t) return; return this.stringValues[e][t[0]] + this.stringValues[e][t[1]] + this.stringValues[e][t[2]] + this.stringValues[e][t[3]]; case \"GPSVersionID\": if (!t) return; return t[0] + \".\" + t[1] + \".\" + t[2] + \".\" + t[3] }return String(t) }, function (e) { var t, i = e.tags, a = e.map; for (t in i) i.hasOwnProperty(t) && (a[i[t]] = t) }(e.ExifMap.prototype), e.ExifMap.prototype.getAll = function () { var e, t, i = {}; for (e in this) this.hasOwnProperty(e) && (t = this.tags[e]) && (i[t] = this.getText(t)); return i } }), function (e) { \"use strict\"; \"function\" == typeof define && define.amd ? define([\"./load-image\", \"./load-image-scale\", \"./load-image-meta\"], e) : \"object\" == typeof module && module.exports ? e(require(\"./load-image\"), require(\"./load-image-scale\"), require(\"./load-image-meta\")) : e(window.loadImage) }(function (e) { \"use strict\"; var t = e.hasCanvasOption, i = e.hasMetaOption, a = e.transformCoordinates, o = e.getTransformedOptions; e.hasCanvasOption = function (i) { return !!i.orientation || t.call(e, i) }, e.hasMetaOption = function (t) { return t && !0 === t.orientation || i.call(e, t) }, e.transformCoordinates = function (t, i) { a.call(e, t, i); var o = t.getContext(\"2d\"), n = t.width, r = t.height, s = t.style.width, l = t.style.height, d = i.orientation; if (d && !(d > 8)) switch (d > 4 && (t.width = r, t.height = n, t.style.width = l, t.style.height = s), d) { case 2: o.translate(n, 0), o.scale(-1, 1); break; case 3: o.translate(n, r), o.rotate(Math.PI); break; case 4: o.translate(0, r), o.scale(1, -1); break; case 5: o.rotate(.5 * Math.PI), o.scale(1, -1); break; case 6: o.rotate(.5 * Math.PI), o.translate(0, -r); break; case 7: o.rotate(.5 * Math.PI), o.translate(n, -r), o.scale(-1, 1); break; case 8: o.rotate(-.5 * Math.PI), o.translate(-n, 0) } }, e.getTransformedOptions = function (t, i, a) { var n, r, s = o.call(e, t, i), l = s.orientation; if (!0 === l && a && a.exif && (l = a.exif.get(\"Orientation\")), !l || l > 8 || 1 === l) return s; n = {}; for (r in s) s.hasOwnProperty(r) && (n[r] = s[r]); switch (n.orientation = l, l) { case 2: n.left = s.right, n.right = s.left; break; case 3: n.left = s.right, n.top = s.bottom, n.right = s.left, n.bottom = s.top; break; case 4: n.top = s.bottom, n.bottom = s.top; break; case 5: n.left = s.top, n.top = s.left, n.right = s.bottom, n.bottom = s.right; break; case 6: n.left = s.top, n.top = s.right, n.right = s.bottom, n.bottom = s.left; break; case 7: n.left = s.bottom, n.top = s.right, n.right = s.top, n.bottom = s.left; break; case 8: n.left = s.bottom, n.top = s.left, n.right = s.top, n.bottom = s.right }return n.orientation > 4 && (n.maxWidth = s.maxHeight, n.maxHeight = s.maxWidth, n.minWidth = s.minHeight, n.minHeight = s.minWidth, n.sourceWidth = s.sourceHeight, n.sourceHeight = s.sourceWidth), n } });\r\n","/**\r\n * @license\r\n * Lodash (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE\r\n * Build: `lodash include=\"each,cloneDeep,merge,filter,map,reduce,find,get,reject,remove,some,pull,pullAllBy,keyBy,orderBy,sortBy,includes,isEmpty,isEqual,inRange,isInteger,size,trim,deburr,replace,camelCase,kebabCase,unescape,debounce,throttle\"`\r\n */\r\n;(function(){function n(n,t){return n.set(t[0],t[1]),n}function t(n,t){return n.add(t),n}function r(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function e(n,t,r,e){for(var u=-1,i=null==n?0:n.length;++u-1;);return r}function A(n,t){for(var r=n.length;r--&&p(t,n[r],0)>-1;);return r}function z(n,t){return null==n?ne:n[t]}function E(n){return ri.test(n)}function I(n){return ei.test(n)}function S(n){var t=-1,r=Array(n.size);return n.forEach(function(n,e){r[++t]=[e,n]}),r}function T(n,t){return function(r){return n(t(r))}}function L(n){\r\nvar t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=n}),r}function k(n,t,r){for(var e=r-1,u=n.length;++e-1}function J(n,t){var r=this.__data__,e=yn(r,n);return e<0?(++this.size,r.push([n,t])):r[e][1]=t,this}function K(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t0&&r(f)?t>1?mn(f,t-1,r,e,u):c(u,f):e||(u[u.length]=f)}return u}function On(n,t){return n&&lo(n,t,Nr)}function An(n,t){t=Xn(t,n);for(var r=0,e=t.length;null!=n&&r=qi(t,r)&&n-1;)f!==n&&Ni.call(f,a,1),Ni.call(n,a,1);return n}function Vn(n,t){for(var r=n?t.length:0,e=r-1;r--;){var u=t[r];if(r==e||u!==i){var i=u;Dt(u)?Ni.call(n,u,1):Qn(n,u)}}return n}function Hn(n,t){return go(Ht(n,t,Yr),n+\"\")}function Yn(n,t,r){var e=-1,u=n.length;t<0&&(t=-t>u?0:u+t),r=r>u?u:r,r<0&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0;for(var i=Array(u);++e=e?n:Yn(n,t,r)}function tt(n,t){if(t)return n.slice();var r=n.length,e=$i?$i(r):new n.constructor(r);return n.copy(e),e}function rt(n){var t=new n.constructor(n.byteLength);\r\nreturn new Ui(t).set(new Ui(n)),t}function et(n,t){return new n.constructor(t?rt(n.buffer):n.buffer,n.byteOffset,n.byteLength)}function ut(t,r,e){return f(r?e(S(t),oe):S(t),n,new t.constructor)}function it(n){var t=new n.constructor(n.source,uu.exec(n));return t.lastIndex=n.lastIndex,t}function ot(n,r,e){return f(r?e(L(n),oe):L(n),t,new n.constructor)}function ct(n){return oo?Object(oo.call(n)):{}}function ft(n,t){return new n.constructor(t?rt(n.buffer):n.buffer,n.byteOffset,n.length)}function at(n,t){\r\nif(n!==t){var r=n!==ne,e=null===n,u=n===n,i=Tr(n),o=t!==ne,c=null===t,f=t===t,a=Tr(t);if(!c&&!a&&!i&&n>t||i&&o&&f&&!c&&!a||e&&o&&f||!r&&f||!u)return 1;if(!e&&!i&&!a&&n=c)return f;return f*(\"desc\"==r[e]?-1:1)}}return n.b-t.b}function st(n,t){var r=-1,e=n.length;for(t||(t=Array(e));++r1?r[u-1]:ne,o=u>2?r[2]:ne;for(i=n.length>3&&typeof i==\"function\"?(u--,i):ne,o&&Nt(r[0],r[1],o)&&(i=u<3?ne:i,u=1),t=Object(t);++e-1?u[i?t[o]:o]:ne}}function wt(n,t,r,e,u,i){var o=r&ae,c=n.length,f=t.length;if(c!=f&&!(o&&f>c))return false;var l=i.get(n);if(l&&i.get(t))return l==t;var s=-1,h=true,p=r&le?new en:ne;for(i.set(n,t),i.set(t,n);++s-1&&n%1==0&&n0){if(++t>=se)return arguments[0]}else t=0;return n.apply(ne,arguments)}}function Kt(n){if(typeof n==\"string\"||Tr(n))return n;var t=n+\"\";return\"0\"==t&&1/n==-pe?\"-0\":t}function Qt(n){if(null!=n){try{return Ai.call(n)}catch(n){}\r\ntry{return n+\"\"}catch(n){}}return\"\"}function Xt(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=null==r?0:kr(r);return u<0&&(u=Gi(e+u,0)),h(n,Et(t,3),u)}function nr(n){var t=null==n?0:n.length;return t?n[t-1]:ne}function tr(n,t){return n&&n.length&&t&&t.length?qn(n,t):n}function rr(n,t,r){return n&&n.length&&t&&t.length?qn(n,t,Et(r,2)):n}function er(n,t){var r=[];if(!n||!n.length)return r;var e=-1,u=[],i=n.length;for(t=Et(t,3);++e-1:!!u&&p(n,t,r)>-1}function cr(n,t){return(Oo(n)?o:Fn)(n,Et(t,3))}function fr(n,t,r,e){return null==n?[]:(Oo(t)||(t=null==t?[]:[t]),r=e?ne:r,Oo(r)||(r=null==r?[]:[r]),Wn(n,t,r))}function ar(n,t,r){var e=Oo(n)?f:d,u=arguments.length<3;return e(n,Et(t,4),r,u,ao)}function lr(n,t){return(Oo(n)?i:wn)(n,gr(Et(t,3)));\r\n}function sr(n){if(null==n)return 0;if(_r(n))return Sr(n)?U(n):n.length;var t=vo(n);return t==Ae||t==ke?n.size:Dn(n).length}function hr(n,t,r){var e=Oo(n)?a:Jn;return r&&Nt(n,t,r)&&(t=ne),e(n,Et(t,3))}function pr(n,t,r){function e(t){var r=h,e=p;return h=p=ne,d=t,g=n.apply(e,r)}function u(n){return d=n,y=setTimeout(c,t),_?e(n):g}function i(n){var r=n-b,e=n-d,u=t-r;return j?qi(u,v-e):u}function o(n){var r=n-b,e=n-d;return b===ne||r>=t||r<0||j&&e>=v}function c(){var n=wo();return o(n)?f(n):(y=setTimeout(c,i(n)),\r\nne)}function f(n){return y=ne,x&&h?e(n):(h=p=ne,g)}function a(){y!==ne&&clearTimeout(y),d=0,h=b=p=y=ne}function l(){return y===ne?g:f(wo())}function s(){var n=wo(),r=o(n);if(h=arguments,p=this,b=n,r){if(y===ne)return u(b);if(j)return y=setTimeout(c,t),e(b)}return y===ne&&(y=setTimeout(c,t)),g}var h,p,v,g,y,b,d=0,_=false,j=false,x=true;if(typeof n!=\"function\")throw new TypeError(ee);return t=Ur(t)||0,zr(r)&&(_=!!r.leading,j=\"maxWait\"in r,v=j?Gi(Ur(r.maxWait)||0,t):v,x=\"trailing\"in r?!!r.trailing:x),s.cancel=a,\r\ns.flush=l,s}function vr(n,t){if(typeof n!=\"function\"||null!=t&&typeof t!=\"function\")throw new TypeError(ee);var r=function(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache;if(i.has(u))return i.get(u);var o=n.apply(this,e);return r.cache=i.set(u,o)||i,o};return r.cache=new(vr.Cache||K),r}function gr(n){if(typeof n!=\"function\")throw new TypeError(ee);return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:return!n.call(this,t[0],t[1]);\r\ncase 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}function yr(n,t,r){var e=true,u=true;if(typeof n!=\"function\")throw new TypeError(ee);return zr(r)&&(e=\"leading\"in r?!!r.leading:e,u=\"trailing\"in r?!!r.trailing:u),pr(n,t,{leading:e,maxWait:t,trailing:u})}function br(n){return xn(n,oe|fe)}function dr(n,t){return n===t||n!==n&&t!==t}function _r(n){return null!=n&&Ar(n.length)&&!mr(n)}function jr(n){return Er(n)&&_r(n)}function xr(n){if(null==n)return true;if(_r(n)&&(Oo(n)||typeof n==\"string\"||typeof n.splice==\"function\"||Ao(n)||zo(n)||mo(n)))return!n.length;\r\nvar t=vo(n);if(t==Ae||t==ke)return!n.size;if(Zt(n))return!Dn(n).length;for(var r in n)if(zi.call(n,r))return false;return true}function wr(n,t){return Ln(n,t)}function mr(n){if(!zr(n))return false;var t=En(n);return t==me||t==Oe||t==_e||t==Te}function Or(n){return typeof n==\"number\"&&n==kr(n)}function Ar(n){return typeof n==\"number\"&&n>-1&&n%1==0&&n<=ve}function zr(n){var t=typeof n;return null!=n&&(\"object\"==t||\"function\"==t)}function Er(n){return null!=n&&typeof n==\"object\"}function Ir(n){if(!Er(n)||En(n)!=Ie)return false;\r\nvar t=Ci(n);if(null===t)return true;var r=zi.call(t,\"constructor\")&&t.constructor;return typeof r==\"function\"&&r instanceof r&&Ai.call(r)==Si}function Sr(n){return typeof n==\"string\"||!Oo(n)&&Er(n)&&En(n)==Ue}function Tr(n){return typeof n==\"symbol\"||Er(n)&&En(n)==$e}function Lr(n){if(!n)return 0===n?n:0;if(n=Ur(n),n===pe||n===-pe){return(n<0?-1:1)*ge}return n===n?n:0}function kr(n){var t=Lr(n),r=t%1;return t===t?r?t-r:t:0}function Ur(n){if(typeof n==\"number\")return n;if(Tr(n))return ye;if(zr(n)){var t=typeof n.valueOf==\"function\"?n.valueOf():n;\r\nn=zr(t)?t+\"\":t}if(typeof n!=\"string\")return 0===n?n:+n;n=n.replace(tu,\"\");var r=ou.test(n);return r||fu.test(n)?fi(n.slice(2),r?2:8):iu.test(n)?ye:+n}function $r(n){return ht(n,Fr(n))}function Cr(n){return null==n?\"\":Kn(n)}function Rr(n,t,r){var e=null==n?ne:An(n,t);return e===ne?r:e}function Dr(n,t){return null!=n&&kt(n,t,In)}function Nr(n){return _r(n)?pn(n):Dn(n)}function Fr(n){return _r(n)?pn(n,true):Nn(n)}function Pr(n){return null==n?[]:w(n,Nr(n))}function Br(n,t,r){return t=Lr(t),r===ne?(r=t,\r\nt=0):r=Lr(r),n=Ur(n),Sn(n,t,r)}function Zr(n){return To(Cr(n).toLowerCase())}function Mr(n){return n=Cr(n),n&&n.replace(lu,_i).replace(Xu,\"\")}function Wr(){var n=arguments,t=Cr(n[0]);return n.length<3?t:t.replace(n[1],n[2])}function Gr(n,t,r){if(n=Cr(n),n&&(r||t===ne))return n.replace(tu,\"\");if(!n||!(t=Kn(t)))return n;var e=$(n),u=$(t);return nt(e,O(e,u),A(e,u)+1).join(\"\")}function qr(n){return n=Cr(n),n&&Ye.test(n)?n.replace(He,ji):n}function Vr(n,t,r){return n=Cr(n),t=r?ne:t,t===ne?I(n)?D(n):s(n):n.match(t)||[];\r\n}function Hr(n){return function(){return n}}function Yr(n){return n}function Jr(n){return Rn(typeof n==\"function\"?n:xn(n,oe))}function Kr(n){return Ft(n)?y(Kt(n)):Gn(n)}function Qr(){return[]}function Xr(){return false}var ne,te=\"4.17.4\",re=200,ee=\"Expected a function\",ue=\"__lodash_hash_undefined__\",ie=500,oe=1,ce=2,fe=4,ae=1,le=2,se=800,he=16,pe=1/0,ve=9007199254740991,ge=1.7976931348623157e308,ye=NaN,be=\"[object Arguments]\",de=\"[object Array]\",_e=\"[object AsyncFunction]\",je=\"[object Boolean]\",xe=\"[object Date]\",we=\"[object Error]\",me=\"[object Function]\",Oe=\"[object GeneratorFunction]\",Ae=\"[object Map]\",ze=\"[object Number]\",Ee=\"[object Null]\",Ie=\"[object Object]\",Se=\"[object Promise]\",Te=\"[object Proxy]\",Le=\"[object RegExp]\",ke=\"[object Set]\",Ue=\"[object String]\",$e=\"[object Symbol]\",Ce=\"[object Undefined]\",Re=\"[object WeakMap]\",De=\"[object ArrayBuffer]\",Ne=\"[object DataView]\",Fe=\"[object Float32Array]\",Pe=\"[object Float64Array]\",Be=\"[object Int8Array]\",Ze=\"[object Int16Array]\",Me=\"[object Int32Array]\",We=\"[object Uint8Array]\",Ge=\"[object Uint8ClampedArray]\",qe=\"[object Uint16Array]\",Ve=\"[object Uint32Array]\",He=/&(?:amp|lt|gt|quot|#39);/g,Ye=RegExp(He.source),Je=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,Ke=/^\\w*$/,Qe=/^\\./,Xe=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,nu=/[\\\\^$.*+?()[\\]{}|]/g,tu=/^\\s+|\\s+$/g,ru=/[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g,eu=/\\\\(\\\\)?/g,uu=/\\w*$/,iu=/^[-+]0x[0-9a-f]+$/i,ou=/^0b[01]+$/i,cu=/^\\[object .+?Constructor\\]$/,fu=/^0o[0-7]+$/i,au=/^(?:0|[1-9]\\d*)$/,lu=/[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g,su=\"\\\\ud800-\\\\udfff\",hu=\"\\\\u0300-\\\\u036f\",pu=\"\\\\ufe20-\\\\ufe2f\",vu=\"\\\\u20d0-\\\\u20ff\",gu=hu+pu+vu,yu=\"\\\\u2700-\\\\u27bf\",bu=\"a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff\",du=\"\\\\xac\\\\xb1\\\\xd7\\\\xf7\",_u=\"\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\",ju=\"\\\\u2000-\\\\u206f\",xu=\" \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\",wu=\"A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde\",mu=\"\\\\ufe0e\\\\ufe0f\",Ou=du+_u+ju+xu,Au=\"['\\u2019]\",zu=\"[\"+su+\"]\",Eu=\"[\"+Ou+\"]\",Iu=\"[\"+gu+\"]\",Su=\"\\\\d+\",Tu=\"[\"+yu+\"]\",Lu=\"[\"+bu+\"]\",ku=\"[^\"+su+Ou+Su+yu+bu+wu+\"]\",Uu=\"\\\\ud83c[\\\\udffb-\\\\udfff]\",$u=\"(?:\"+Iu+\"|\"+Uu+\")\",Cu=\"[^\"+su+\"]\",Ru=\"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",Du=\"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",Nu=\"[\"+wu+\"]\",Fu=\"\\\\u200d\",Pu=\"(?:\"+Lu+\"|\"+ku+\")\",Bu=\"(?:\"+Nu+\"|\"+ku+\")\",Zu=\"(?:\"+Au+\"(?:d|ll|m|re|s|t|ve))?\",Mu=\"(?:\"+Au+\"(?:D|LL|M|RE|S|T|VE))?\",Wu=$u+\"?\",Gu=\"[\"+mu+\"]?\",qu=\"(?:\"+Fu+\"(?:\"+[Cu,Ru,Du].join(\"|\")+\")\"+Gu+Wu+\")*\",Vu=\"\\\\d*(?:(?:1st|2nd|3rd|(?![123])\\\\dth)\\\\b)\",Hu=\"\\\\d*(?:(?:1ST|2ND|3RD|(?![123])\\\\dTH)\\\\b)\",Yu=Gu+Wu+qu,Ju=\"(?:\"+[Tu,Ru,Du].join(\"|\")+\")\"+Yu,Ku=\"(?:\"+[Cu+Iu+\"?\",Iu,Ru,Du,zu].join(\"|\")+\")\",Qu=RegExp(Au,\"g\"),Xu=RegExp(Iu,\"g\"),ni=RegExp(Uu+\"(?=\"+Uu+\")|\"+Ku+Yu,\"g\"),ti=RegExp([Nu+\"?\"+Lu+\"+\"+Zu+\"(?=\"+[Eu,Nu,\"$\"].join(\"|\")+\")\",Bu+\"+\"+Mu+\"(?=\"+[Eu,Nu+Pu,\"$\"].join(\"|\")+\")\",Nu+\"?\"+Pu+\"+\"+Zu,Nu+\"+\"+Mu,Hu,Vu,Su,Ju].join(\"|\"),\"g\"),ri=RegExp(\"[\"+Fu+su+gu+mu+\"]\"),ei=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,ui={};\r\nui[Fe]=ui[Pe]=ui[Be]=ui[Ze]=ui[Me]=ui[We]=ui[Ge]=ui[qe]=ui[Ve]=true,ui[be]=ui[de]=ui[De]=ui[je]=ui[Ne]=ui[xe]=ui[we]=ui[me]=ui[Ae]=ui[ze]=ui[Ie]=ui[Le]=ui[ke]=ui[Ue]=ui[Re]=false;var ii={};ii[be]=ii[de]=ii[De]=ii[Ne]=ii[je]=ii[xe]=ii[Fe]=ii[Pe]=ii[Be]=ii[Ze]=ii[Me]=ii[Ae]=ii[ze]=ii[Ie]=ii[Le]=ii[ke]=ii[Ue]=ii[$e]=ii[We]=ii[Ge]=ii[qe]=ii[Ve]=true,ii[we]=ii[me]=ii[Re]=false;var oi={\"\\xc0\":\"A\",\"\\xc1\":\"A\",\"\\xc2\":\"A\",\"\\xc3\":\"A\",\"\\xc4\":\"A\",\"\\xc5\":\"A\",\"\\xe0\":\"a\",\"\\xe1\":\"a\",\"\\xe2\":\"a\",\"\\xe3\":\"a\",\"\\xe4\":\"a\",\"\\xe5\":\"a\",\r\n\"\\xc7\":\"C\",\"\\xe7\":\"c\",\"\\xd0\":\"D\",\"\\xf0\":\"d\",\"\\xc8\":\"E\",\"\\xc9\":\"E\",\"\\xca\":\"E\",\"\\xcb\":\"E\",\"\\xe8\":\"e\",\"\\xe9\":\"e\",\"\\xea\":\"e\",\"\\xeb\":\"e\",\"\\xcc\":\"I\",\"\\xcd\":\"I\",\"\\xce\":\"I\",\"\\xcf\":\"I\",\"\\xec\":\"i\",\"\\xed\":\"i\",\"\\xee\":\"i\",\"\\xef\":\"i\",\"\\xd1\":\"N\",\"\\xf1\":\"n\",\"\\xd2\":\"O\",\"\\xd3\":\"O\",\"\\xd4\":\"O\",\"\\xd5\":\"O\",\"\\xd6\":\"O\",\"\\xd8\":\"O\",\"\\xf2\":\"o\",\"\\xf3\":\"o\",\"\\xf4\":\"o\",\"\\xf5\":\"o\",\"\\xf6\":\"o\",\"\\xf8\":\"o\",\"\\xd9\":\"U\",\"\\xda\":\"U\",\"\\xdb\":\"U\",\"\\xdc\":\"U\",\"\\xf9\":\"u\",\"\\xfa\":\"u\",\"\\xfb\":\"u\",\"\\xfc\":\"u\",\"\\xdd\":\"Y\",\"\\xfd\":\"y\",\"\\xff\":\"y\",\"\\xc6\":\"Ae\",\r\n\"\\xe6\":\"ae\",\"\\xde\":\"Th\",\"\\xfe\":\"th\",\"\\xdf\":\"ss\",\"\\u0100\":\"A\",\"\\u0102\":\"A\",\"\\u0104\":\"A\",\"\\u0101\":\"a\",\"\\u0103\":\"a\",\"\\u0105\":\"a\",\"\\u0106\":\"C\",\"\\u0108\":\"C\",\"\\u010a\":\"C\",\"\\u010c\":\"C\",\"\\u0107\":\"c\",\"\\u0109\":\"c\",\"\\u010b\":\"c\",\"\\u010d\":\"c\",\"\\u010e\":\"D\",\"\\u0110\":\"D\",\"\\u010f\":\"d\",\"\\u0111\":\"d\",\"\\u0112\":\"E\",\"\\u0114\":\"E\",\"\\u0116\":\"E\",\"\\u0118\":\"E\",\"\\u011a\":\"E\",\"\\u0113\":\"e\",\"\\u0115\":\"e\",\"\\u0117\":\"e\",\"\\u0119\":\"e\",\"\\u011b\":\"e\",\"\\u011c\":\"G\",\"\\u011e\":\"G\",\"\\u0120\":\"G\",\"\\u0122\":\"G\",\"\\u011d\":\"g\",\"\\u011f\":\"g\",\"\\u0121\":\"g\",\r\n\"\\u0123\":\"g\",\"\\u0124\":\"H\",\"\\u0126\":\"H\",\"\\u0125\":\"h\",\"\\u0127\":\"h\",\"\\u0128\":\"I\",\"\\u012a\":\"I\",\"\\u012c\":\"I\",\"\\u012e\":\"I\",\"\\u0130\":\"I\",\"\\u0129\":\"i\",\"\\u012b\":\"i\",\"\\u012d\":\"i\",\"\\u012f\":\"i\",\"\\u0131\":\"i\",\"\\u0134\":\"J\",\"\\u0135\":\"j\",\"\\u0136\":\"K\",\"\\u0137\":\"k\",\"\\u0138\":\"k\",\"\\u0139\":\"L\",\"\\u013b\":\"L\",\"\\u013d\":\"L\",\"\\u013f\":\"L\",\"\\u0141\":\"L\",\"\\u013a\":\"l\",\"\\u013c\":\"l\",\"\\u013e\":\"l\",\"\\u0140\":\"l\",\"\\u0142\":\"l\",\"\\u0143\":\"N\",\"\\u0145\":\"N\",\"\\u0147\":\"N\",\"\\u014a\":\"N\",\"\\u0144\":\"n\",\"\\u0146\":\"n\",\"\\u0148\":\"n\",\"\\u014b\":\"n\",\"\\u014c\":\"O\",\r\n\"\\u014e\":\"O\",\"\\u0150\":\"O\",\"\\u014d\":\"o\",\"\\u014f\":\"o\",\"\\u0151\":\"o\",\"\\u0154\":\"R\",\"\\u0156\":\"R\",\"\\u0158\":\"R\",\"\\u0155\":\"r\",\"\\u0157\":\"r\",\"\\u0159\":\"r\",\"\\u015a\":\"S\",\"\\u015c\":\"S\",\"\\u015e\":\"S\",\"\\u0160\":\"S\",\"\\u015b\":\"s\",\"\\u015d\":\"s\",\"\\u015f\":\"s\",\"\\u0161\":\"s\",\"\\u0162\":\"T\",\"\\u0164\":\"T\",\"\\u0166\":\"T\",\"\\u0163\":\"t\",\"\\u0165\":\"t\",\"\\u0167\":\"t\",\"\\u0168\":\"U\",\"\\u016a\":\"U\",\"\\u016c\":\"U\",\"\\u016e\":\"U\",\"\\u0170\":\"U\",\"\\u0172\":\"U\",\"\\u0169\":\"u\",\"\\u016b\":\"u\",\"\\u016d\":\"u\",\"\\u016f\":\"u\",\"\\u0171\":\"u\",\"\\u0173\":\"u\",\"\\u0174\":\"W\",\"\\u0175\":\"w\",\r\n\"\\u0176\":\"Y\",\"\\u0177\":\"y\",\"\\u0178\":\"Y\",\"\\u0179\":\"Z\",\"\\u017b\":\"Z\",\"\\u017d\":\"Z\",\"\\u017a\":\"z\",\"\\u017c\":\"z\",\"\\u017e\":\"z\",\"\\u0132\":\"IJ\",\"\\u0133\":\"ij\",\"\\u0152\":\"Oe\",\"\\u0153\":\"oe\",\"\\u0149\":\"'n\",\"\\u017f\":\"s\"},ci={\"&\":\"&\",\"<\":\"<\",\">\":\">\",\""\":'\"',\"'\":\"'\"},fi=parseInt,ai=typeof global==\"object\"&&global&&global.Object===Object&&global,li=typeof self==\"object\"&&self&&self.Object===Object&&self,si=ai||li||Function(\"return this\")(),hi=typeof exports==\"object\"&&exports&&!exports.nodeType&&exports,pi=hi&&typeof module==\"object\"&&module&&!module.nodeType&&module,vi=pi&&pi.exports===hi,gi=vi&&ai.process,yi=function(){\r\ntry{return gi&&gi.binding&&gi.binding(\"util\")}catch(n){}}(),bi=yi&&yi.isTypedArray,di=y(\"length\"),_i=b(oi),ji=b(ci),xi=Array.prototype,wi=Function.prototype,mi=Object.prototype,Oi=si[\"__core-js_shared__\"],Ai=wi.toString,zi=mi.hasOwnProperty,Ei=function(){var n=/[^.]+$/.exec(Oi&&Oi.keys&&Oi.keys.IE_PROTO||\"\");return n?\"Symbol(src)_1.\"+n:\"\"}(),Ii=mi.toString,Si=Ai.call(Object),Ti=RegExp(\"^\"+Ai.call(zi).replace(nu,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),Li=vi?si.Buffer:ne,ki=si.Symbol,Ui=si.Uint8Array,$i=Li?Li.allocUnsafe:ne,Ci=T(Object.getPrototypeOf,Object),Ri=Object.create,Di=mi.propertyIsEnumerable,Ni=xi.splice,Fi=ki?ki.isConcatSpreadable:ne,Pi=ki?ki.toStringTag:ne,Bi=function(){\r\ntry{var n=Tt(Object,\"defineProperty\");return n({},\"\",{}),n}catch(n){}}(),Zi=Object.getOwnPropertySymbols,Mi=Li?Li.isBuffer:ne,Wi=T(Object.keys,Object),Gi=Math.max,qi=Math.min,Vi=Date.now,Hi=Tt(si,\"DataView\"),Yi=Tt(si,\"Map\"),Ji=Tt(si,\"Promise\"),Ki=Tt(si,\"Set\"),Qi=Tt(si,\"WeakMap\"),Xi=Tt(Object,\"create\"),no=Qt(Hi),to=Qt(Yi),ro=Qt(Ji),eo=Qt(Ki),uo=Qt(Qi),io=ki?ki.prototype:ne,oo=io?io.valueOf:ne,co=io?io.toString:ne,fo=function(){function n(){}return function(t){if(!zr(t))return{};if(Ri)return Ri(t);n.prototype=t;\r\nvar r=new n;return n.prototype=ne,r}}();F.prototype.clear=P,F.prototype.delete=B,F.prototype.get=Z,F.prototype.has=M,F.prototype.set=W,G.prototype.clear=q,G.prototype.delete=V,G.prototype.get=H,G.prototype.has=Y,G.prototype.set=J,K.prototype.clear=Q,K.prototype.delete=X,K.prototype.get=nn,K.prototype.has=tn,K.prototype.set=rn,en.prototype.add=en.prototype.push=un,en.prototype.has=on,cn.prototype.clear=fn,cn.prototype.delete=an,cn.prototype.get=ln,cn.prototype.has=sn,cn.prototype.set=hn;var ao=bt(On),lo=dt(),so=Bi?function(n,t){\r\nreturn Bi(n,\"toString\",{configurable:true,enumerable:false,value:Hr(t),writable:true})}:Yr,ho=Zi?function(n){return null==n?[]:(n=Object(n),i(Zi(n),function(t){return Di.call(n,t)}))}:Qr,po=Zi?function(n){for(var t=[];n;)c(t,ho(n)),n=Ci(n);return t}:Qr,vo=En;(Hi&&vo(new Hi(new ArrayBuffer(1)))!=Ne||Yi&&vo(new Yi)!=Ae||Ji&&vo(Ji.resolve())!=Se||Ki&&vo(new Ki)!=ke||Qi&&vo(new Qi)!=Re)&&(vo=function(n){var t=En(n),r=t==Ie?n.constructor:ne,e=r?Qt(r):\"\";if(e)switch(e){case no:return Ne;case to:return Ae;case ro:\r\nreturn Se;case eo:return ke;case uo:return Re}return t});var go=Jt(so),yo=Gt(function(n){var t=[];return Qe.test(n)&&t.push(\"\"),n.replace(Xe,function(n,r,e,u){t.push(e?u.replace(eu,\"$1\"):r||n)}),t}),bo=Hn(tr),_o=xt(Xt),jo=gt(function(n,t,r){jn(n,r,t)}),xo=Hn(function(n,t){if(null==n)return[];var r=t.length;return r>1&&Nt(n,t[0],t[1])?t=[]:r>2&&Nt(t[0],t[1],t[2])&&(t=[t[0]]),Wn(n,mn(t,1),[])}),wo=function(){return si.Date.now()};vr.Cache=K;var mo=Tn(function(){return arguments}())?Tn:function(n){return Er(n)&&zi.call(n,\"callee\")&&!Di.call(n,\"callee\");\r\n},Oo=Array.isArray,Ao=Mi||Xr,zo=bi?x(bi):Cn,Eo=yt(function(n,t,r){Zn(n,t,r)}),Io=jt(function(n,t,r){return t=t.toLowerCase(),n+(r?Zr(t):t)}),So=jt(function(n,t,r){return n+(r?\"-\":\"\")+t.toLowerCase()}),To=_t(\"toUpperCase\");N.constant=Hr,N.debounce=pr,N.filter=ur,N.iteratee=Jr,N.keyBy=jo,N.keys=Nr,N.keysIn=Fr,N.map=cr,N.memoize=vr,N.merge=Eo,N.negate=gr,N.orderBy=fr,N.property=Kr,N.pull=bo,N.pullAll=tr,N.pullAllBy=rr,N.reject=lr,N.remove=er,N.sortBy=xo,N.throttle=yr,N.toPlainObject=$r,N.values=Pr,N.words=Vr,\r\nN.camelCase=Io,N.capitalize=Zr,N.cloneDeep=br,N.deburr=Mr,N.eq=dr,N.find=_o,N.findIndex=Xt,N.forEach=ir,N.get=Rr,N.hasIn=Dr,N.identity=Yr,N.includes=or,N.inRange=Br,N.isArguments=mo,N.isArray=Oo,N.isArrayLike=_r,N.isArrayLikeObject=jr,N.isBuffer=Ao,N.isEmpty=xr,N.isEqual=wr,N.isFunction=mr,N.isInteger=Or,N.isLength=Ar,N.isObject=zr,N.isObjectLike=Er,N.isPlainObject=Ir,N.isString=Sr,N.isSymbol=Tr,N.isTypedArray=zo,N.kebabCase=So,N.last=nr,N.stubArray=Qr,N.stubFalse=Xr,N.now=wo,N.reduce=ar,N.replace=Wr,\r\nN.size=sr,N.some=hr,N.toFinite=Lr,N.toInteger=kr,N.toNumber=Ur,N.toString=Cr,N.trim=Gr,N.unescape=qr,N.upperFirst=To,N.each=ir,N.VERSION=te,typeof define==\"function\"&&typeof define.amd==\"object\"&&define.amd?(si._=N, define(function(){return N})):pi?((pi.exports=N)._=N,hi._=N):si._=N}).call(this);","!function(r){function n(r){for(var n=\"\",t=\"\",o=0,e=0,a=0,i=r.length;i>a;a++){var f=r.charCodeAt(a);128>f?e++:(t=2048>f?String.fromCharCode(f>>6|192,63&f|128):String.fromCharCode(f>>12|224,f>>6&63|128,63&f|128),e>o&&(n+=r.slice(o,e)),n+=t,o=e=a+1)}return e>o&&(n+=r.slice(o,i)),n}function t(r){var n,t;if(r+=\"\",s=!1,v=w=r.length,w>63){for(o(r.substring(0,64)),i(A),s=!0,n=128;w>=n;n+=64)o(r.substring(n-64,n)),f(A);r=r.substring(n-64),w=r.length}for(d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=d[9]=d[10]=d[11]=d[12]=d[13]=d[14]=d[15]=0,n=0;w>n;n++)t=3&n,0===t?d[n>>2]=r.charCodeAt(n):d[n>>2]|=r.charCodeAt(n)<>2]|=h[3&n],n>55?(s?f(d):(i(d),s=!0),f([0,0,0,0,0,0,0,0,0,0,0,0,0,0,v<<3,0])):(d[14]=v<<3,void(s?f(d):i(d)))}function o(r){for(var n=16;n--;){var t=n<<2;A[n]=r.charCodeAt(t)+(r.charCodeAt(t+1)<<8)+(r.charCodeAt(t+2)<<16)+(r.charCodeAt(t+3)<<24)}}function e(r,o,e){t(o?r:n(r));var a=g[0];return u[1]=l[15&a],u[0]=l[15&(a>>=4)],u[3]=l[15&(a>>=4)],u[2]=l[15&(a>>=4)],u[5]=l[15&(a>>=4)],u[4]=l[15&(a>>=4)],u[7]=l[15&(a>>=4)],u[6]=l[15&(a>>=4)],a=g[1],u[9]=l[15&a],u[8]=l[15&(a>>=4)],u[11]=l[15&(a>>=4)],u[10]=l[15&(a>>=4)],u[13]=l[15&(a>>=4)],u[12]=l[15&(a>>=4)],u[15]=l[15&(a>>=4)],u[14]=l[15&(a>>=4)],a=g[2],u[17]=l[15&a],u[16]=l[15&(a>>=4)],u[19]=l[15&(a>>=4)],u[18]=l[15&(a>>=4)],u[21]=l[15&(a>>=4)],u[20]=l[15&(a>>=4)],u[23]=l[15&(a>>=4)],u[22]=l[15&(a>>=4)],a=g[3],u[25]=l[15&a],u[24]=l[15&(a>>=4)],u[27]=l[15&(a>>=4)],u[26]=l[15&(a>>=4)],u[29]=l[15&(a>>=4)],u[28]=l[15&(a>>=4)],u[31]=l[15&(a>>=4)],u[30]=l[15&(a>>=4)],e?u:u.join(\"\")}function a(r,n,t,o,e,a,i){return n+=r+o+i,(n<>>a)+t<<0}function i(r){c(0,0,0,0,r),g[0]=y[0]+1732584193<<0,g[1]=y[1]-271733879<<0,g[2]=y[2]-1732584194<<0,g[3]=y[3]+271733878<<0}function f(r){c(g[0],g[1],g[2],g[3],r),g[0]=y[0]+g[0]<<0,g[1]=y[1]+g[1]<<0,g[2]=y[2]+g[2]<<0,g[3]=y[3]+g[3]<<0}function c(r,n,t,o,e){var i,f;s?(r=a((t^o)&n^o,r,n,e[0],7,25,-680876936),o=a((n^t)&r^t,o,r,e[1],12,20,-389564586),t=a((r^n)&o^n,t,o,e[2],17,15,606105819),n=a((o^r)&t^r,n,t,e[3],22,10,-1044525330)):(r=e[0]-680876937,r=(r<<7|r>>>25)-271733879<<0,o=e[1]-117830708+(2004318071&r^-1732584194),o=(o<<12|o>>>20)+r<<0,t=e[2]-1126478375+((-271733879^r)&o^-271733879),t=(t<<17|t>>>15)+o<<0,n=e[3]-1316259209+((o^r)&t^r),n=(n<<22|n>>>10)+t<<0),r=a((t^o)&n^o,r,n,e[4],7,25,-176418897),o=a((n^t)&r^t,o,r,e[5],12,20,1200080426),t=a((r^n)&o^n,t,o,e[6],17,15,-1473231341),n=a((o^r)&t^r,n,t,e[7],22,10,-45705983),r=a((t^o)&n^o,r,n,e[8],7,25,1770035416),o=a((n^t)&r^t,o,r,e[9],12,20,-1958414417),t=a((r^n)&o^n,t,o,e[10],17,15,-42063),n=a((o^r)&t^r,n,t,e[11],22,10,-1990404162),r=a((t^o)&n^o,r,n,e[12],7,25,1804603682),o=a((n^t)&r^t,o,r,e[13],12,20,-40341101),t=a((r^n)&o^n,t,o,e[14],17,15,-1502002290),n=a((o^r)&t^r,n,t,e[15],22,10,1236535329),r=a((n^t)&o^t,r,n,e[1],5,27,-165796510),o=a((r^n)&t^n,o,r,e[6],9,23,-1069501632),t=a((o^r)&n^r,t,o,e[11],14,18,643717713),n=a((t^o)&r^o,n,t,e[0],20,12,-373897302),r=a((n^t)&o^t,r,n,e[5],5,27,-701558691),o=a((r^n)&t^n,o,r,e[10],9,23,38016083),t=a((o^r)&n^r,t,o,e[15],14,18,-660478335),n=a((t^o)&r^o,n,t,e[4],20,12,-405537848),r=a((n^t)&o^t,r,n,e[9],5,27,568446438),o=a((r^n)&t^n,o,r,e[14],9,23,-1019803690),t=a((o^r)&n^r,t,o,e[3],14,18,-187363961),n=a((t^o)&r^o,n,t,e[8],20,12,1163531501),r=a((n^t)&o^t,r,n,e[13],5,27,-1444681467),o=a((r^n)&t^n,o,r,e[2],9,23,-51403784),t=a((o^r)&n^r,t,o,e[7],14,18,1735328473),n=a((t^o)&r^o,n,t,e[12],20,12,-1926607734),i=n^t,r=a(i^o,r,n,e[5],4,28,-378558),o=a(i^r,o,r,e[8],11,21,-2022574463),f=o^r,t=a(f^n,t,o,e[11],16,16,1839030562),n=a(f^t,n,t,e[14],23,9,-35309556),i=n^t,r=a(i^o,r,n,e[1],4,28,-1530992060),o=a(i^r,o,r,e[4],11,21,1272893353),f=o^r,t=a(f^n,t,o,e[7],16,16,-155497632),n=a(f^t,n,t,e[10],23,9,-1094730640),i=n^t,r=a(i^o,r,n,e[13],4,28,681279174),o=a(i^r,o,r,e[0],11,21,-358537222),f=o^r,t=a(f^n,t,o,e[3],16,16,-722521979),n=a(f^t,n,t,e[6],23,9,76029189),i=n^t,r=a(i^o,r,n,e[9],4,28,-640364487),o=a(i^r,o,r,e[12],11,21,-421815835),f=o^r,t=a(f^n,t,o,e[15],16,16,530742520),n=a(f^t,n,t,e[2],23,9,-995338651),r=a(t^(n|~o),r,n,e[0],6,26,-198630844),o=a(n^(r|~t),o,r,e[7],10,22,1126891415),t=a(r^(o|~n),t,o,e[14],15,17,-1416354905),n=a(o^(t|~r),n,t,e[5],21,11,-57434055),r=a(t^(n|~o),r,n,e[12],6,26,1700485571),o=a(n^(r|~t),o,r,e[3],10,22,-1894986606),t=a(r^(o|~n),t,o,e[10],15,17,-1051523),n=a(o^(t|~r),n,t,e[1],21,11,-2054922799),r=a(t^(n|~o),r,n,e[8],6,26,1873313359),o=a(n^(r|~t),o,r,e[15],10,22,-30611744),t=a(r^(o|~n),t,o,e[6],15,17,-1560198380),n=a(o^(t|~r),n,t,e[13],21,11,1309151649),r=a(t^(n|~o),r,n,e[4],6,26,-145523070),o=a(n^(r|~t),o,r,e[11],10,22,-1120210379),t=a(r^(o|~n),t,o,e[2],15,17,718787259),n=a(o^(t|~r),n,t,e[9],21,11,-343485551),y[0]=r,y[1]=n,y[2]=t,y[3]=o}var u=[],d=[],A=[],h=[],l=\"0123456789abcdef\".split(\"\"),C=[],g=[],s=!1,v=0,w=0,y=[];if(r.Int32Array)d=new Int32Array(16),A=new Int32Array(16),h=new Int32Array(4),C=new Int32Array(4),g=new Int32Array(4),y=new Int32Array(4);else{var I;for(I=0;16>I;I++)d[I]=A[I]=0;for(I=0;4>I;I++)h[I]=C[I]=g[I]=y[I]=0}h[0]=128,h[1]=32768,h[2]=8388608,h[3]=-2147483648,C[0]=0,C[1]=8,C[2]=16,C[3]=24,r.md5=r.md5||e}(\"undefined\"==typeof global?window:global);","/**\r\n * Owl Carousel v2.3.4\r\n * Copyright 2013-2018 David Deutsch\r\n * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE\r\n */\r\n/**\r\n * Owl carousel\r\n * @version 2.3.4\r\n * @author Bartosz Wojciechowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n * @todo Lazy Load Icon\r\n * @todo prevent animationend bubling\r\n * @todo itemsScaleUp\r\n * @todo Test Zepto\r\n * @todo stagePadding calculate wrong active classes\r\n */\r\n/* eslint-disable */\r\n; (function ($, window, document, undefined) {\r\n\r\n /**\r\n * Creates a carousel.\r\n * @class The Owl Carousel.\r\n * @public\r\n * @param {HTMLElement|jQuery} element - The element to create the carousel for.\r\n * @param {Object} [options] - The options\r\n */\r\n function Owl(element, options) {\r\n\r\n /**\r\n * Current settings for the carousel.\r\n * @public\r\n */\r\n this.settings = null;\r\n\r\n /**\r\n * Current options set by the caller including defaults.\r\n * @public\r\n */\r\n this.options = $.extend({}, Owl.Defaults, options);\r\n\r\n /**\r\n * Plugin element.\r\n * @public\r\n */\r\n this.$element = $(element);\r\n\r\n /**\r\n * Proxied event handlers.\r\n * @protected\r\n */\r\n this._handlers = {};\r\n\r\n /**\r\n * References to the running plugins of this carousel.\r\n * @protected\r\n */\r\n this._plugins = {};\r\n\r\n /**\r\n * Currently suppressed events to prevent them from being retriggered.\r\n * @protected\r\n */\r\n this._supress = {};\r\n\r\n /**\r\n * Absolute current position.\r\n * @protected\r\n */\r\n this._current = null;\r\n\r\n /**\r\n * Animation speed in milliseconds.\r\n * @protected\r\n */\r\n this._speed = null;\r\n\r\n /**\r\n * Coordinates of all items in pixel.\r\n * @todo The name of this member is missleading.\r\n * @protected\r\n */\r\n this._coordinates = [];\r\n\r\n /**\r\n * Current breakpoint.\r\n * @todo Real media queries would be nice.\r\n * @protected\r\n */\r\n this._breakpoint = null;\r\n\r\n /**\r\n * Current width of the plugin element.\r\n */\r\n this._width = null;\r\n\r\n /**\r\n * All real items.\r\n * @protected\r\n */\r\n this._items = [];\r\n\r\n /**\r\n * All cloned items.\r\n * @protected\r\n */\r\n this._clones = [];\r\n\r\n /**\r\n * Merge values of all items.\r\n * @todo Maybe this could be part of a plugin.\r\n * @protected\r\n */\r\n this._mergers = [];\r\n\r\n /**\r\n * Widths of all items.\r\n */\r\n this._widths = [];\r\n\r\n /**\r\n * Invalidated parts within the update process.\r\n * @protected\r\n */\r\n this._invalidated = {};\r\n\r\n /**\r\n * Ordered list of workers for the update process.\r\n * @protected\r\n */\r\n this._pipe = [];\r\n\r\n /**\r\n * Current state information for the drag operation.\r\n * @todo #261\r\n * @protected\r\n */\r\n this._drag = {\r\n time: null,\r\n target: null,\r\n pointer: null,\r\n stage: {\r\n start: null,\r\n current: null\r\n },\r\n direction: null\r\n };\r\n\r\n /**\r\n * Current state information and their tags.\r\n * @type {Object}\r\n * @protected\r\n */\r\n this._states = {\r\n current: {},\r\n tags: {\r\n 'initializing': ['busy'],\r\n 'animating': ['busy'],\r\n 'dragging': ['interacting']\r\n }\r\n };\r\n\r\n $.each(['onResize', 'onThrottledResize'], $.proxy(function (i, handler) {\r\n this._handlers[handler] = $.proxy(this[handler], this);\r\n }, this));\r\n\r\n $.each(Owl.Plugins, $.proxy(function (key, plugin) {\r\n this._plugins[key.charAt(0).toLowerCase() + key.slice(1)]\r\n = new plugin(this);\r\n }, this));\r\n\r\n $.each(Owl.Workers, $.proxy(function (priority, worker) {\r\n this._pipe.push({\r\n 'filter': worker.filter,\r\n 'run': $.proxy(worker.run, this)\r\n });\r\n }, this));\r\n\r\n this.setup();\r\n this.initialize();\r\n }\r\n\r\n /**\r\n * Default options for the carousel.\r\n * @public\r\n */\r\n Owl.Defaults = {\r\n items: 3,\r\n loop: false,\r\n center: false,\r\n rewind: false,\r\n checkVisibility: true,\r\n\r\n mouseDrag: true,\r\n touchDrag: true,\r\n pullDrag: true,\r\n freeDrag: false,\r\n\r\n margin: 0,\r\n stagePadding: 0,\r\n\r\n merge: false,\r\n mergeFit: true,\r\n autoWidth: false,\r\n\r\n startPosition: 0,\r\n rtl: false,\r\n\r\n smartSpeed: 250,\r\n fluidSpeed: false,\r\n dragEndSpeed: false,\r\n\r\n responsive: {},\r\n responsiveRefreshRate: 200,\r\n responsiveBaseElement: window,\r\n\r\n fallbackEasing: 'swing',\r\n slideTransition: '',\r\n\r\n info: false,\r\n\r\n nestedItemSelector: false,\r\n itemElement: 'div',\r\n stageElement: 'div',\r\n\r\n refreshClass: 'owl-refresh',\r\n loadedClass: 'owl-loaded',\r\n loadingClass: 'owl-loading',\r\n rtlClass: 'owl-rtl',\r\n responsiveClass: 'owl-responsive',\r\n dragClass: 'owl-drag',\r\n itemClass: 'owl-item',\r\n stageClass: 'owl-stage',\r\n stageOuterClass: 'owl-stage-outer',\r\n grabClass: 'owl-grab'\r\n };\r\n\r\n /**\r\n * Enumeration for width.\r\n * @public\r\n * @readonly\r\n * @enum {String}\r\n */\r\n Owl.Width = {\r\n Default: 'default',\r\n Inner: 'inner',\r\n Outer: 'outer'\r\n };\r\n\r\n /**\r\n * Enumeration for types.\r\n * @public\r\n * @readonly\r\n * @enum {String}\r\n */\r\n Owl.Type = {\r\n Event: 'event',\r\n State: 'state'\r\n };\r\n\r\n /**\r\n * Contains all registered plugins.\r\n * @public\r\n */\r\n Owl.Plugins = {};\r\n\r\n /**\r\n * List of workers involved in the update process.\r\n */\r\n Owl.Workers = [{\r\n filter: ['width', 'settings'],\r\n run: function () {\r\n this._width = this.$element.width();\r\n }\r\n }, {\r\n filter: ['width', 'items', 'settings'],\r\n run: function (cache) {\r\n cache.current = this._items && this._items[this.relative(this._current)];\r\n }\r\n }, {\r\n filter: ['items', 'settings'],\r\n run: function () {\r\n this.$stage.children('.cloned').remove();\r\n }\r\n }, {\r\n filter: ['width', 'items', 'settings'],\r\n run: function (cache) {\r\n var margin = this.settings.margin || '',\r\n grid = !this.settings.autoWidth,\r\n rtl = this.settings.rtl,\r\n css = {\r\n 'width': 'auto',\r\n 'margin-left': rtl ? margin : '',\r\n 'margin-right': rtl ? '' : margin\r\n };\r\n\r\n !grid && this.$stage.children().css(css);\r\n\r\n cache.css = css;\r\n }\r\n }, {\r\n filter: ['width', 'items', 'settings'],\r\n run: function (cache) {\r\n var width = (this.width() / this.settings.items).toFixed(3) - this.settings.margin,\r\n merge = null,\r\n iterator = this._items.length,\r\n grid = !this.settings.autoWidth,\r\n widths = [];\r\n\r\n cache.items = {\r\n merge: false,\r\n width: width\r\n };\r\n\r\n while (iterator--) {\r\n merge = this._mergers[iterator];\r\n merge = this.settings.mergeFit && Math.min(merge, this.settings.items) || merge;\r\n\r\n cache.items.merge = merge > 1 || cache.items.merge;\r\n\r\n widths[iterator] = !grid ? this._items[iterator].width() : width * merge;\r\n }\r\n\r\n this._widths = widths;\r\n }\r\n }, {\r\n filter: ['items', 'settings'],\r\n run: function () {\r\n var clones = [],\r\n items = this._items,\r\n settings = this.settings,\r\n // TODO: Should be computed from number of min width items in stage\r\n view = Math.max(settings.items * 2, 4),\r\n size = Math.ceil(items.length / 2) * 2,\r\n repeat = settings.loop && items.length ? settings.rewind ? view : Math.max(view, size) : 0,\r\n append = '',\r\n prepend = '';\r\n\r\n repeat /= 2;\r\n\r\n while (repeat > 0) {\r\n // Switch to only using appended clones\r\n clones.push(this.normalize(clones.length / 2, true));\r\n append = append + items[clones[clones.length - 1]][0].outerHTML;\r\n clones.push(this.normalize(items.length - 1 - (clones.length - 1) / 2, true));\r\n prepend = items[clones[clones.length - 1]][0].outerHTML + prepend;\r\n repeat -= 1;\r\n }\r\n\r\n this._clones = clones;\r\n\r\n $(append).addClass('cloned').appendTo(this.$stage);\r\n $(prepend).addClass('cloned').prependTo(this.$stage);\r\n }\r\n }, {\r\n filter: ['width', 'items', 'settings'],\r\n run: function () {\r\n var rtl = this.settings.rtl ? 1 : -1,\r\n size = this._clones.length + this._items.length,\r\n iterator = -1,\r\n previous = 0,\r\n current = 0,\r\n coordinates = [];\r\n\r\n while (++iterator < size) {\r\n previous = coordinates[iterator - 1] || 0;\r\n current = this._widths[this.relative(iterator)] + this.settings.margin;\r\n coordinates.push(previous + current * rtl);\r\n }\r\n\r\n this._coordinates = coordinates;\r\n }\r\n }, {\r\n filter: ['width', 'items', 'settings'],\r\n run: function () {\r\n var padding = this.settings.stagePadding,\r\n coordinates = this._coordinates,\r\n css = {\r\n 'width': Math.ceil(Math.abs(coordinates[coordinates.length - 1])) + padding * 2,\r\n 'padding-left': padding || '',\r\n 'padding-right': padding || ''\r\n };\r\n\r\n this.$stage.css(css);\r\n }\r\n }, {\r\n filter: ['width', 'items', 'settings'],\r\n run: function (cache) {\r\n var iterator = this._coordinates.length,\r\n grid = !this.settings.autoWidth,\r\n items = this.$stage.children();\r\n\r\n if (grid && cache.items.merge) {\r\n while (iterator--) {\r\n cache.css.width = this._widths[this.relative(iterator)];\r\n items.eq(iterator).css(cache.css);\r\n }\r\n } else if (grid) {\r\n cache.css.width = cache.items.width;\r\n items.css(cache.css);\r\n }\r\n }\r\n }, {\r\n filter: ['items'],\r\n run: function () {\r\n this._coordinates.length < 1 && this.$stage.removeAttr('style');\r\n }\r\n }, {\r\n filter: ['width', 'items', 'settings'],\r\n run: function (cache) {\r\n cache.current = cache.current ? this.$stage.children().index(cache.current) : 0;\r\n cache.current = Math.max(this.minimum(), Math.min(this.maximum(), cache.current));\r\n this.reset(cache.current);\r\n }\r\n }, {\r\n filter: ['position'],\r\n run: function () {\r\n this.animate(this.coordinates(this._current));\r\n }\r\n }, {\r\n filter: ['width', 'position', 'items', 'settings'],\r\n run: function () {\r\n var rtl = this.settings.rtl ? 1 : -1,\r\n padding = this.settings.stagePadding * 2,\r\n begin = this.coordinates(this.current()) + padding,\r\n end = begin + this.width() * rtl,\r\n inner, outer, matches = [], i, n;\r\n\r\n for (i = 0, n = this._coordinates.length; i < n; i++) {\r\n inner = this._coordinates[i - 1] || 0;\r\n outer = Math.abs(this._coordinates[i]) + padding * rtl;\r\n\r\n if ((this.op(inner, '<=', begin) && (this.op(inner, '>', end)))\r\n || (this.op(outer, '<', begin) && this.op(outer, '>', end))) {\r\n matches.push(i);\r\n }\r\n }\r\n\r\n this.$stage.children('.active').removeClass('active');\r\n this.$stage.children(':eq(' + matches.join('), :eq(') + ')').addClass('active');\r\n\r\n this.$stage.children('.center').removeClass('center');\r\n if (this.settings.center) {\r\n this.$stage.children().eq(this.current()).addClass('center');\r\n }\r\n }\r\n }];\r\n\r\n /**\r\n * Create the stage DOM element\r\n */\r\n Owl.prototype.initializeStage = function () {\r\n this.$stage = this.$element.find('.' + this.settings.stageClass);\r\n\r\n // if the stage is already in the DOM, grab it and skip stage initialization\r\n if (this.$stage.length) {\r\n return;\r\n }\r\n\r\n this.$element.addClass(this.options.loadingClass);\r\n\r\n // create stage\r\n this.$stage = $('<' + this.settings.stageElement + '>', {\r\n \"class\": this.settings.stageClass\r\n }).wrap($('
    ', {\r\n \"class\": this.settings.stageOuterClass\r\n }));\r\n\r\n // append stage\r\n this.$element.append(this.$stage.parent());\r\n };\r\n\r\n /**\r\n * Create item DOM elements\r\n */\r\n Owl.prototype.initializeItems = function () {\r\n var $items = this.$element.find('.owl-item');\r\n\r\n // if the items are already in the DOM, grab them and skip item initialization\r\n if ($items.length) {\r\n this._items = $items.get().map(function (item) {\r\n return $(item);\r\n });\r\n\r\n this._mergers = this._items.map(function () {\r\n return 1;\r\n });\r\n\r\n this.refresh();\r\n\r\n return;\r\n }\r\n\r\n // append content\r\n this.replace(this.$element.children().not(this.$stage.parent()));\r\n\r\n // check visibility\r\n if (this.isVisible()) {\r\n // update view\r\n this.refresh();\r\n } else {\r\n // invalidate width\r\n this.invalidate('width');\r\n }\r\n\r\n this.$element\r\n .removeClass(this.options.loadingClass)\r\n .addClass(this.options.loadedClass);\r\n };\r\n\r\n /**\r\n * Initializes the carousel.\r\n * @protected\r\n */\r\n Owl.prototype.initialize = function () {\r\n this.enter('initializing');\r\n this.trigger('initialize');\r\n\r\n this.$element.toggleClass(this.settings.rtlClass, this.settings.rtl);\r\n\r\n if (this.settings.autoWidth && !this.is('pre-loading')) {\r\n var imgs, nestedSelector, width;\r\n imgs = this.$element.find('img');\r\n nestedSelector = this.settings.nestedItemSelector ? '.' + this.settings.nestedItemSelector : undefined;\r\n width = this.$element.children(nestedSelector).width();\r\n\r\n if (imgs.length && width <= 0) {\r\n this.preloadAutoWidthImages(imgs);\r\n }\r\n }\r\n\r\n this.initializeStage();\r\n this.initializeItems();\r\n\r\n // register event handlers\r\n this.registerEventHandlers();\r\n\r\n this.leave('initializing');\r\n this.trigger('initialized');\r\n };\r\n\r\n /**\r\n * @returns {Boolean} visibility of $element\r\n * if you know the carousel will always be visible you can set `checkVisibility` to `false` to\r\n * prevent the expensive browser layout forced reflow the $element.is(':visible') does\r\n */\r\n Owl.prototype.isVisible = function () {\r\n return this.settings.checkVisibility\r\n ? this.$element.is(':visible')\r\n : true;\r\n };\r\n\r\n /**\r\n * Setups the current settings.\r\n * @todo Remove responsive classes. Why should adaptive designs be brought into IE8?\r\n * @todo Support for media queries by using `matchMedia` would be nice.\r\n * @public\r\n */\r\n Owl.prototype.setup = function () {\r\n var viewport = this.viewport(),\r\n overwrites = this.options.responsive,\r\n match = -1,\r\n settings = null;\r\n\r\n if (!overwrites) {\r\n settings = $.extend({}, this.options);\r\n } else {\r\n $.each(overwrites, function (breakpoint) {\r\n if (breakpoint <= viewport && breakpoint > match) {\r\n match = Number(breakpoint);\r\n }\r\n });\r\n\r\n settings = $.extend({}, this.options, overwrites[match]);\r\n if (typeof settings.stagePadding === 'function') {\r\n settings.stagePadding = settings.stagePadding();\r\n }\r\n delete settings.responsive;\r\n\r\n // responsive class\r\n if (settings.responsiveClass) {\r\n this.$element.attr('class',\r\n this.$element.attr('class').replace(new RegExp('(' + this.options.responsiveClass + '-)\\\\S+\\\\s', 'g'), '$1' + match)\r\n );\r\n }\r\n }\r\n\r\n this.trigger('change', { property: { name: 'settings', value: settings } });\r\n this._breakpoint = match;\r\n this.settings = settings;\r\n this.invalidate('settings');\r\n this.trigger('changed', { property: { name: 'settings', value: this.settings } });\r\n };\r\n\r\n /**\r\n * Updates option logic if necessery.\r\n * @protected\r\n */\r\n Owl.prototype.optionsLogic = function () {\r\n if (this.settings.autoWidth) {\r\n this.settings.stagePadding = false;\r\n this.settings.merge = false;\r\n }\r\n };\r\n\r\n /**\r\n * Prepares an item before add.\r\n * @todo Rename event parameter `content` to `item`.\r\n * @protected\r\n * @returns {jQuery|HTMLElement} - The item container.\r\n */\r\n Owl.prototype.prepare = function (item) {\r\n var event = this.trigger('prepare', { content: item });\r\n\r\n if (!event.data) {\r\n event.data = $('<' + this.settings.itemElement + '/>')\r\n .addClass(this.options.itemClass).append(item)\r\n }\r\n\r\n this.trigger('prepared', { content: event.data });\r\n\r\n return event.data;\r\n };\r\n\r\n /**\r\n * Updates the view.\r\n * @public\r\n */\r\n Owl.prototype.update = function () {\r\n var i = 0,\r\n n = this._pipe.length,\r\n filter = $.proxy(function (p) { return this[p] }, this._invalidated),\r\n cache = {};\r\n\r\n while (i < n) {\r\n if (this._invalidated.all || $.grep(this._pipe[i].filter, filter).length > 0) {\r\n this._pipe[i].run(cache);\r\n }\r\n i++;\r\n }\r\n\r\n this._invalidated = {};\r\n\r\n !this.is('valid') && this.enter('valid');\r\n };\r\n\r\n /**\r\n * Gets the width of the view.\r\n * @public\r\n * @param {Owl.Width} [dimension=Owl.Width.Default] - The dimension to return.\r\n * @returns {Number} - The width of the view in pixel.\r\n */\r\n Owl.prototype.width = function (dimension) {\r\n dimension = dimension || Owl.Width.Default;\r\n switch (dimension) {\r\n case Owl.Width.Inner:\r\n case Owl.Width.Outer:\r\n return this._width;\r\n default:\r\n return this._width - this.settings.stagePadding * 2 + this.settings.margin;\r\n }\r\n };\r\n\r\n /**\r\n * Refreshes the carousel primarily for adaptive purposes.\r\n * @public\r\n */\r\n Owl.prototype.refresh = function () {\r\n this.enter('refreshing');\r\n this.trigger('refresh');\r\n\r\n this.setup();\r\n\r\n this.optionsLogic();\r\n\r\n this.$element.addClass(this.options.refreshClass);\r\n\r\n this.update();\r\n\r\n this.$element.removeClass(this.options.refreshClass);\r\n\r\n this.leave('refreshing');\r\n this.trigger('refreshed');\r\n };\r\n\r\n /**\r\n * Checks window `resize` event.\r\n * @protected\r\n */\r\n Owl.prototype.onThrottledResize = function () {\r\n window.clearTimeout(this.resizeTimer);\r\n this.resizeTimer = window.setTimeout(this._handlers.onResize, this.settings.responsiveRefreshRate);\r\n };\r\n\r\n /**\r\n * Checks window `resize` event.\r\n * @protected\r\n */\r\n Owl.prototype.onResize = function () {\r\n if (!this._items.length) {\r\n return false;\r\n }\r\n\r\n if (this._width === this.$element.width()) {\r\n return false;\r\n }\r\n\r\n if (!this.isVisible()) {\r\n return false;\r\n }\r\n\r\n this.enter('resizing');\r\n\r\n if (this.trigger('resize').isDefaultPrevented()) {\r\n this.leave('resizing');\r\n return false;\r\n }\r\n\r\n this.invalidate('width');\r\n\r\n this.refresh();\r\n\r\n this.leave('resizing');\r\n this.trigger('resized');\r\n };\r\n\r\n /**\r\n * Registers event handlers.\r\n * @todo Check `msPointerEnabled`\r\n * @todo #261\r\n * @protected\r\n */\r\n Owl.prototype.registerEventHandlers = function () {\r\n if ($.support.transition) {\r\n this.$stage.on($.support.transition.end + '.owl.core', $.proxy(this.onTransitionEnd, this));\r\n }\r\n\r\n if (this.settings.responsive !== false) {\r\n this.on(window, 'resize', this._handlers.onThrottledResize);\r\n }\r\n\r\n if (this.settings.mouseDrag) {\r\n this.$element.addClass(this.options.dragClass);\r\n this.$stage.on('mousedown.owl.core', $.proxy(this.onDragStart, this));\r\n this.$stage.on('dragstart.owl.core selectstart.owl.core', function () { return false });\r\n }\r\n\r\n if (this.settings.touchDrag) {\r\n this.$stage.on('touchstart.owl.core', $.proxy(this.onDragStart, this));\r\n this.$stage.on('touchcancel.owl.core', $.proxy(this.onDragEnd, this));\r\n }\r\n };\r\n\r\n /**\r\n * Handles `touchstart` and `mousedown` events.\r\n * @todo Horizontal swipe threshold as option\r\n * @todo #261\r\n * @protected\r\n * @param {Event} event - The event arguments.\r\n */\r\n Owl.prototype.onDragStart = function (event) {\r\n var stage = null;\r\n\r\n if (event.which === 3) {\r\n return;\r\n }\r\n\r\n if ($.support.transform) {\r\n stage = this.$stage.css('transform').replace(/.*\\(|\\)| /g, '').split(',');\r\n stage = {\r\n x: stage[stage.length === 16 ? 12 : 4],\r\n y: stage[stage.length === 16 ? 13 : 5]\r\n };\r\n } else {\r\n stage = this.$stage.position();\r\n stage = {\r\n x: this.settings.rtl ?\r\n stage.left + this.$stage.width() - this.width() + this.settings.margin :\r\n stage.left,\r\n y: stage.top\r\n };\r\n }\r\n\r\n if (this.is('animating')) {\r\n $.support.transform ? this.animate(stage.x) : this.$stage.stop()\r\n this.invalidate('position');\r\n }\r\n\r\n this.$element.toggleClass(this.options.grabClass, event.type === 'mousedown');\r\n\r\n this.speed(0);\r\n\r\n this._drag.time = new Date().getTime();\r\n this._drag.target = $(event.target);\r\n this._drag.stage.start = stage;\r\n this._drag.stage.current = stage;\r\n this._drag.pointer = this.pointer(event);\r\n\r\n $(document).on('mouseup.owl.core touchend.owl.core', $.proxy(this.onDragEnd, this));\r\n\r\n $(document).one('mousemove.owl.core touchmove.owl.core', $.proxy(function (event) {\r\n var delta = this.difference(this._drag.pointer, this.pointer(event));\r\n\r\n $(document).on('mousemove.owl.core touchmove.owl.core', $.proxy(this.onDragMove, this));\r\n\r\n if (Math.abs(delta.x) < Math.abs(delta.y) && this.is('valid')) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n\r\n this.enter('dragging');\r\n this.trigger('drag');\r\n }, this));\r\n };\r\n\r\n /**\r\n * Handles the `touchmove` and `mousemove` events.\r\n * @todo #261\r\n * @protected\r\n * @param {Event} event - The event arguments.\r\n */\r\n Owl.prototype.onDragMove = function (event) {\r\n var minimum = null,\r\n maximum = null,\r\n pull = null,\r\n delta = this.difference(this._drag.pointer, this.pointer(event)),\r\n stage = this.difference(this._drag.stage.start, delta);\r\n\r\n if (!this.is('dragging')) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n\r\n if (this.settings.loop) {\r\n minimum = this.coordinates(this.minimum());\r\n maximum = this.coordinates(this.maximum() + 1) - minimum;\r\n stage.x = (((stage.x - minimum) % maximum + maximum) % maximum) + minimum;\r\n } else {\r\n minimum = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum());\r\n maximum = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum());\r\n pull = this.settings.pullDrag ? -1 * delta.x / 5 : 0;\r\n stage.x = Math.max(Math.min(stage.x, minimum + pull), maximum + pull);\r\n }\r\n\r\n this._drag.stage.current = stage;\r\n\r\n this.animate(stage.x);\r\n };\r\n\r\n /**\r\n * Handles the `touchend` and `mouseup` events.\r\n * @todo #261\r\n * @todo Threshold for click event\r\n * @protected\r\n * @param {Event} event - The event arguments.\r\n */\r\n Owl.prototype.onDragEnd = function (event) {\r\n var delta = this.difference(this._drag.pointer, this.pointer(event)),\r\n stage = this._drag.stage.current,\r\n direction = delta.x > 0 ^ this.settings.rtl ? 'left' : 'right';\r\n\r\n $(document).off('.owl.core');\r\n\r\n this.$element.removeClass(this.options.grabClass);\r\n\r\n if (delta.x !== 0 && this.is('dragging') || !this.is('valid')) {\r\n this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed);\r\n this.current(this.closest(stage.x, delta.x !== 0 ? direction : this._drag.direction));\r\n this.invalidate('position');\r\n this.update();\r\n\r\n this._drag.direction = direction;\r\n\r\n if (Math.abs(delta.x) > 3 || new Date().getTime() - this._drag.time > 300) {\r\n this._drag.target.one('click.owl.core', function () { return false; });\r\n }\r\n }\r\n\r\n if (!this.is('dragging')) {\r\n return;\r\n }\r\n\r\n this.leave('dragging');\r\n this.trigger('dragged');\r\n };\r\n\r\n /**\r\n * Gets absolute position of the closest item for a coordinate.\r\n * @todo Setting `freeDrag` makes `closest` not reusable. See #165.\r\n * @protected\r\n * @param {Number} coordinate - The coordinate in pixel.\r\n * @param {String} direction - The direction to check for the closest item. Ether `left` or `right`.\r\n * @return {Number} - The absolute position of the closest item.\r\n */\r\n Owl.prototype.closest = function (coordinate, direction) {\r\n var position = -1,\r\n pull = 30,\r\n width = this.width(),\r\n coordinates = this.coordinates();\r\n\r\n if (!this.settings.freeDrag) {\r\n // check closest item\r\n $.each(coordinates, $.proxy(function (index, value) {\r\n // on a left pull, check on current index\r\n if (direction === 'left' && coordinate > value - pull && coordinate < value + pull) {\r\n position = index;\r\n // on a right pull, check on previous index\r\n // to do so, subtract width from value and set position = index + 1\r\n } else if (direction === 'right' && coordinate > value - width - pull && coordinate < value - width + pull) {\r\n position = index + 1;\r\n } else if (this.op(coordinate, '<', value)\r\n && this.op(coordinate, '>', coordinates[index + 1] !== undefined ? coordinates[index + 1] : value - width)) {\r\n position = direction === 'left' ? index + 1 : index;\r\n }\r\n return position === -1;\r\n }, this));\r\n }\r\n\r\n if (!this.settings.loop) {\r\n // non loop boundries\r\n if (this.op(coordinate, '>', coordinates[this.minimum()])) {\r\n position = coordinate = this.minimum();\r\n } else if (this.op(coordinate, '<', coordinates[this.maximum()])) {\r\n position = coordinate = this.maximum();\r\n }\r\n }\r\n\r\n return position;\r\n };\r\n\r\n /**\r\n * Animates the stage.\r\n * @todo #270\r\n * @public\r\n * @param {Number} coordinate - The coordinate in pixels.\r\n */\r\n Owl.prototype.animate = function (coordinate) {\r\n var animate = this.speed() > 0;\r\n\r\n this.is('animating') && this.onTransitionEnd();\r\n\r\n if (animate) {\r\n this.enter('animating');\r\n this.trigger('translate');\r\n }\r\n\r\n if ($.support.transform3d && $.support.transition) {\r\n this.$stage.css({\r\n transform: 'translate3d(' + coordinate + 'px,0px,0px)',\r\n transition: (this.speed() / 1000) + 's' + (\r\n this.settings.slideTransition ? ' ' + this.settings.slideTransition : ''\r\n )\r\n });\r\n } else if (animate) {\r\n this.$stage.animate({\r\n left: coordinate + 'px'\r\n }, this.speed(), this.settings.fallbackEasing, $.proxy(this.onTransitionEnd, this));\r\n } else {\r\n this.$stage.css({\r\n left: coordinate + 'px'\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Checks whether the carousel is in a specific state or not.\r\n * @param {String} state - The state to check.\r\n * @returns {Boolean} - The flag which indicates if the carousel is busy.\r\n */\r\n Owl.prototype.is = function (state) {\r\n return this._states.current[state] && this._states.current[state] > 0;\r\n };\r\n\r\n /**\r\n * Sets the absolute position of the current item.\r\n * @public\r\n * @param {Number} [position] - The new absolute position or nothing to leave it unchanged.\r\n * @returns {Number} - The absolute position of the current item.\r\n */\r\n Owl.prototype.current = function (position) {\r\n if (position === undefined) {\r\n return this._current;\r\n }\r\n\r\n if (this._items.length === 0) {\r\n return undefined;\r\n }\r\n\r\n position = this.normalize(position);\r\n\r\n if (this._current !== position) {\r\n var event = this.trigger('change', { property: { name: 'position', value: position } });\r\n\r\n if (event.data !== undefined) {\r\n position = this.normalize(event.data);\r\n }\r\n\r\n this._current = position;\r\n\r\n this.invalidate('position');\r\n\r\n this.trigger('changed', { property: { name: 'position', value: this._current } });\r\n }\r\n\r\n return this._current;\r\n };\r\n\r\n /**\r\n * Invalidates the given part of the update routine.\r\n * @param {String} [part] - The part to invalidate.\r\n * @returns {Array.} - The invalidated parts.\r\n */\r\n Owl.prototype.invalidate = function (part) {\r\n if ($.type(part) === 'string') {\r\n this._invalidated[part] = true;\r\n this.is('valid') && this.leave('valid');\r\n }\r\n return $.map(this._invalidated, function (v, i) { return i });\r\n };\r\n\r\n /**\r\n * Resets the absolute position of the current item.\r\n * @public\r\n * @param {Number} position - The absolute position of the new item.\r\n */\r\n Owl.prototype.reset = function (position) {\r\n position = this.normalize(position);\r\n\r\n if (position === undefined) {\r\n return;\r\n }\r\n\r\n this._speed = 0;\r\n this._current = position;\r\n\r\n this.suppress(['translate', 'translated']);\r\n\r\n this.animate(this.coordinates(position));\r\n\r\n this.release(['translate', 'translated']);\r\n };\r\n\r\n /**\r\n * Normalizes an absolute or a relative position of an item.\r\n * @public\r\n * @param {Number} position - The absolute or relative position to normalize.\r\n * @param {Boolean} [relative=false] - Whether the given position is relative or not.\r\n * @returns {Number} - The normalized position.\r\n */\r\n Owl.prototype.normalize = function (position, relative) {\r\n var n = this._items.length,\r\n m = relative ? 0 : this._clones.length;\r\n\r\n if (!this.isNumeric(position) || n < 1) {\r\n position = undefined;\r\n } else if (position < 0 || position >= n + m) {\r\n position = ((position - m / 2) % n + n) % n + m / 2;\r\n }\r\n\r\n return position;\r\n };\r\n\r\n /**\r\n * Converts an absolute position of an item into a relative one.\r\n * @public\r\n * @param {Number} position - The absolute position to convert.\r\n * @returns {Number} - The converted position.\r\n */\r\n Owl.prototype.relative = function (position) {\r\n position -= this._clones.length / 2;\r\n return this.normalize(position, true);\r\n };\r\n\r\n /**\r\n * Gets the maximum position for the current item.\r\n * @public\r\n * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.\r\n * @returns {Number}\r\n */\r\n Owl.prototype.maximum = function (relative) {\r\n var settings = this.settings,\r\n maximum = this._coordinates.length,\r\n iterator,\r\n reciprocalItemsWidth,\r\n elementWidth;\r\n\r\n if (settings.loop) {\r\n maximum = this._clones.length / 2 + this._items.length - 1;\r\n } else if (settings.autoWidth || settings.merge) {\r\n iterator = this._items.length;\r\n if (iterator) {\r\n reciprocalItemsWidth = this._items[--iterator].width();\r\n elementWidth = this.$element.width();\r\n while (iterator--) {\r\n reciprocalItemsWidth += this._items[iterator].width() + this.settings.margin;\r\n if (reciprocalItemsWidth > elementWidth) {\r\n break;\r\n }\r\n }\r\n }\r\n maximum = iterator + 1;\r\n } else if (settings.center) {\r\n maximum = this._items.length - 1;\r\n } else {\r\n maximum = this._items.length - settings.items;\r\n }\r\n\r\n if (relative) {\r\n maximum -= this._clones.length / 2;\r\n }\r\n\r\n return Math.max(maximum, 0);\r\n };\r\n\r\n /**\r\n * Gets the minimum position for the current item.\r\n * @public\r\n * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.\r\n * @returns {Number}\r\n */\r\n Owl.prototype.minimum = function (relative) {\r\n return relative ? 0 : this._clones.length / 2;\r\n };\r\n\r\n /**\r\n * Gets an item at the specified relative position.\r\n * @public\r\n * @param {Number} [position] - The relative position of the item.\r\n * @return {jQuery|Array.} - The item at the given position or all items if no position was given.\r\n */\r\n Owl.prototype.items = function (position) {\r\n if (position === undefined) {\r\n return this._items.slice();\r\n }\r\n\r\n position = this.normalize(position, true);\r\n return this._items[position];\r\n };\r\n\r\n /**\r\n * Gets an item at the specified relative position.\r\n * @public\r\n * @param {Number} [position] - The relative position of the item.\r\n * @return {jQuery|Array.} - The item at the given position or all items if no position was given.\r\n */\r\n Owl.prototype.mergers = function (position) {\r\n if (position === undefined) {\r\n return this._mergers.slice();\r\n }\r\n\r\n position = this.normalize(position, true);\r\n return this._mergers[position];\r\n };\r\n\r\n /**\r\n * Gets the absolute positions of clones for an item.\r\n * @public\r\n * @param {Number} [position] - The relative position of the item.\r\n * @returns {Array.} - The absolute positions of clones for the item or all if no position was given.\r\n */\r\n Owl.prototype.clones = function (position) {\r\n var odd = this._clones.length / 2,\r\n even = odd + this._items.length,\r\n map = function (index) { return index % 2 === 0 ? even + index / 2 : odd - (index + 1) / 2 };\r\n\r\n if (position === undefined) {\r\n return $.map(this._clones, function (v, i) { return map(i) });\r\n }\r\n\r\n return $.map(this._clones, function (v, i) { return v === position ? map(i) : null });\r\n };\r\n\r\n /**\r\n * Sets the current animation speed.\r\n * @public\r\n * @param {Number} [speed] - The animation speed in milliseconds or nothing to leave it unchanged.\r\n * @returns {Number} - The current animation speed in milliseconds.\r\n */\r\n Owl.prototype.speed = function (speed) {\r\n if (speed !== undefined) {\r\n this._speed = speed;\r\n }\r\n\r\n return this._speed;\r\n };\r\n\r\n /**\r\n * Gets the coordinate of an item.\r\n * @todo The name of this method is missleanding.\r\n * @public\r\n * @param {Number} position - The absolute position of the item within `minimum()` and `maximum()`.\r\n * @returns {Number|Array.} - The coordinate of the item in pixel or all coordinates.\r\n */\r\n Owl.prototype.coordinates = function (position) {\r\n var multiplier = 1,\r\n newPosition = position - 1,\r\n coordinate;\r\n\r\n if (position === undefined) {\r\n return $.map(this._coordinates, $.proxy(function (coordinate, index) {\r\n return this.coordinates(index);\r\n }, this));\r\n }\r\n\r\n if (this.settings.center) {\r\n if (this.settings.rtl) {\r\n multiplier = -1;\r\n newPosition = position + 1;\r\n }\r\n\r\n coordinate = this._coordinates[position];\r\n coordinate += (this.width() - coordinate + (this._coordinates[newPosition] || 0)) / 2 * multiplier;\r\n } else {\r\n coordinate = this._coordinates[newPosition] || 0;\r\n }\r\n\r\n coordinate = Math.ceil(coordinate);\r\n\r\n return coordinate;\r\n };\r\n\r\n /**\r\n * Calculates the speed for a translation.\r\n * @protected\r\n * @param {Number} from - The absolute position of the start item.\r\n * @param {Number} to - The absolute position of the target item.\r\n * @param {Number} [factor=undefined] - The time factor in milliseconds.\r\n * @returns {Number} - The time in milliseconds for the translation.\r\n */\r\n Owl.prototype.duration = function (from, to, factor) {\r\n if (factor === 0) {\r\n return 0;\r\n }\r\n\r\n return Math.min(Math.max(Math.abs(to - from), 1), 6) * Math.abs((factor || this.settings.smartSpeed));\r\n };\r\n\r\n /**\r\n * Slides to the specified item.\r\n * @public\r\n * @param {Number} position - The position of the item.\r\n * @param {Number} [speed] - The time in milliseconds for the transition.\r\n */\r\n Owl.prototype.to = function (position, speed) {\r\n var current = this.current(),\r\n revert = null,\r\n distance = position - this.relative(current),\r\n direction = (distance > 0) - (distance < 0),\r\n items = this._items.length,\r\n minimum = this.minimum(),\r\n maximum = this.maximum();\r\n\r\n if (this.settings.loop) {\r\n if (!this.settings.rewind && Math.abs(distance) > items / 2) {\r\n distance += direction * -1 * items;\r\n }\r\n\r\n position = current + distance;\r\n revert = ((position - minimum) % items + items) % items + minimum;\r\n\r\n if (revert !== position && revert - distance <= maximum && revert - distance > 0) {\r\n current = revert - distance;\r\n position = revert;\r\n this.reset(current);\r\n }\r\n } else if (this.settings.rewind) {\r\n maximum += 1;\r\n position = (position % maximum + maximum) % maximum;\r\n } else {\r\n position = Math.max(minimum, Math.min(maximum, position));\r\n }\r\n\r\n this.speed(this.duration(current, position, speed));\r\n this.current(position);\r\n\r\n if (this.isVisible()) {\r\n this.update();\r\n }\r\n };\r\n\r\n /**\r\n * Slides to the next item.\r\n * @public\r\n * @param {Number} [speed] - The time in milliseconds for the transition.\r\n */\r\n Owl.prototype.next = function (speed) {\r\n speed = speed || false;\r\n this.to(this.relative(this.current()) + 1, speed);\r\n };\r\n\r\n /**\r\n * Slides to the previous item.\r\n * @public\r\n * @param {Number} [speed] - The time in milliseconds for the transition.\r\n */\r\n Owl.prototype.prev = function (speed) {\r\n speed = speed || false;\r\n this.to(this.relative(this.current()) - 1, speed);\r\n };\r\n\r\n /**\r\n * Handles the end of an animation.\r\n * @protected\r\n * @param {Event} event - The event arguments.\r\n */\r\n Owl.prototype.onTransitionEnd = function (event) {\r\n\r\n // if css2 animation then event object is undefined\r\n if (event !== undefined) {\r\n event.stopPropagation();\r\n\r\n // Catch only owl-stage transitionEnd event\r\n if ((event.target || event.srcElement || event.originalTarget) !== this.$stage.get(0)) {\r\n return false;\r\n }\r\n }\r\n\r\n this.leave('animating');\r\n this.trigger('translated');\r\n };\r\n\r\n /**\r\n * Gets viewport width.\r\n * @protected\r\n * @return {Number} - The width in pixel.\r\n */\r\n Owl.prototype.viewport = function () {\r\n var width;\r\n if (this.options.responsiveBaseElement !== window) {\r\n width = $(this.options.responsiveBaseElement).width();\r\n } else if (window.innerWidth) {\r\n width = window.innerWidth;\r\n } else if (document.documentElement && document.documentElement.clientWidth) {\r\n width = document.documentElement.clientWidth;\r\n } else {\r\n console.warn('Can not detect viewport width.');\r\n }\r\n return width;\r\n };\r\n\r\n /**\r\n * Replaces the current content.\r\n * @public\r\n * @param {HTMLElement|jQuery|String} content - The new content.\r\n */\r\n Owl.prototype.replace = function (content) {\r\n this.$stage.empty();\r\n this._items = [];\r\n\r\n if (content) {\r\n content = (content instanceof jQuery) ? content : $(content);\r\n }\r\n\r\n if (this.settings.nestedItemSelector) {\r\n content = content.find('.' + this.settings.nestedItemSelector);\r\n }\r\n\r\n content.filter(function () {\r\n return this.nodeType === 1;\r\n }).each($.proxy(function (index, item) {\r\n item = this.prepare(item);\r\n this.$stage.append(item);\r\n this._items.push(item);\r\n this._mergers.push(item.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1);\r\n }, this));\r\n\r\n this.reset(this.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0);\r\n\r\n this.invalidate('items');\r\n };\r\n\r\n /**\r\n * Adds an item.\r\n * @todo Use `item` instead of `content` for the event arguments.\r\n * @public\r\n * @param {HTMLElement|jQuery|String} content - The item content to add.\r\n * @param {Number} [position] - The relative position at which to insert the item otherwise the item will be added to the end.\r\n */\r\n Owl.prototype.add = function (content, position) {\r\n var current = this.relative(this._current);\r\n\r\n position = position === undefined ? this._items.length : this.normalize(position, true);\r\n content = content instanceof jQuery ? content : $(content);\r\n\r\n this.trigger('add', { content: content, position: position });\r\n\r\n content = this.prepare(content);\r\n\r\n if (this._items.length === 0 || position === this._items.length) {\r\n this._items.length === 0 && this.$stage.append(content);\r\n this._items.length !== 0 && this._items[position - 1].after(content);\r\n this._items.push(content);\r\n this._mergers.push(content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1);\r\n } else {\r\n this._items[position].before(content);\r\n this._items.splice(position, 0, content);\r\n this._mergers.splice(position, 0, content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1);\r\n }\r\n\r\n this._items[current] && this.reset(this._items[current].index());\r\n\r\n this.invalidate('items');\r\n\r\n this.trigger('added', { content: content, position: position });\r\n };\r\n\r\n /**\r\n * Removes an item by its position.\r\n * @todo Use `item` instead of `content` for the event arguments.\r\n * @public\r\n * @param {Number} position - The relative position of the item to remove.\r\n */\r\n Owl.prototype.remove = function (position) {\r\n position = this.normalize(position, true);\r\n\r\n if (position === undefined) {\r\n return;\r\n }\r\n\r\n this.trigger('remove', { content: this._items[position], position: position });\r\n\r\n this._items[position].remove();\r\n this._items.splice(position, 1);\r\n this._mergers.splice(position, 1);\r\n\r\n this.invalidate('items');\r\n\r\n this.trigger('removed', { content: null, position: position });\r\n };\r\n\r\n /**\r\n * Preloads images with auto width.\r\n * @todo Replace by a more generic approach\r\n * @protected\r\n */\r\n Owl.prototype.preloadAutoWidthImages = function (images) {\r\n images.each($.proxy(function (i, element) {\r\n this.enter('pre-loading');\r\n element = $(element);\r\n $(new Image()).one('load', $.proxy(function (e) {\r\n element.attr('src', e.target.src);\r\n element.css('opacity', 1);\r\n this.leave('pre-loading');\r\n !this.is('pre-loading') && !this.is('initializing') && this.refresh();\r\n }, this)).attr('src', element.attr('src') || element.attr('data-src') || element.attr('data-src-retina'));\r\n }, this));\r\n };\r\n\r\n /**\r\n * Destroys the carousel.\r\n * @public\r\n */\r\n Owl.prototype.destroy = function () {\r\n\r\n this.$element.off('.owl.core');\r\n this.$stage.off('.owl.core');\r\n $(document).off('.owl.core');\r\n\r\n if (this.settings.responsive !== false) {\r\n window.clearTimeout(this.resizeTimer);\r\n this.off(window, 'resize', this._handlers.onThrottledResize);\r\n }\r\n\r\n for (var i in this._plugins) {\r\n this._plugins[i].destroy();\r\n }\r\n\r\n this.$stage.children('.cloned').remove();\r\n\r\n this.$stage.unwrap();\r\n this.$stage.children().contents().unwrap();\r\n this.$stage.children().unwrap();\r\n this.$stage.remove();\r\n this.$element\r\n .removeClass(this.options.refreshClass)\r\n .removeClass(this.options.loadingClass)\r\n .removeClass(this.options.loadedClass)\r\n .removeClass(this.options.rtlClass)\r\n .removeClass(this.options.dragClass)\r\n .removeClass(this.options.grabClass)\r\n .attr('class', this.$element.attr('class').replace(new RegExp(this.options.responsiveClass + '-\\\\S+\\\\s', 'g'), ''))\r\n .removeData('owl.carousel');\r\n };\r\n\r\n /**\r\n * Operators to calculate right-to-left and left-to-right.\r\n * @protected\r\n * @param {Number} [a] - The left side operand.\r\n * @param {String} [o] - The operator.\r\n * @param {Number} [b] - The right side operand.\r\n */\r\n Owl.prototype.op = function (a, o, b) {\r\n var rtl = this.settings.rtl;\r\n switch (o) {\r\n case '<':\r\n return rtl ? a > b : a < b;\r\n case '>':\r\n return rtl ? a < b : a > b;\r\n case '>=':\r\n return rtl ? a <= b : a >= b;\r\n case '<=':\r\n return rtl ? a >= b : a <= b;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n /**\r\n * Attaches to an internal event.\r\n * @protected\r\n * @param {HTMLElement} element - The event source.\r\n * @param {String} event - The event name.\r\n * @param {Function} listener - The event handler to attach.\r\n * @param {Boolean} capture - Wether the event should be handled at the capturing phase or not.\r\n */\r\n Owl.prototype.on = function (element, event, listener, capture) {\r\n if (element.addEventListener) {\r\n element.addEventListener(event, listener, capture);\r\n } else if (element.attachEvent) {\r\n element.attachEvent('on' + event, listener);\r\n }\r\n };\r\n\r\n /**\r\n * Detaches from an internal event.\r\n * @protected\r\n * @param {HTMLElement} element - The event source.\r\n * @param {String} event - The event name.\r\n * @param {Function} listener - The attached event handler to detach.\r\n * @param {Boolean} capture - Wether the attached event handler was registered as a capturing listener or not.\r\n */\r\n Owl.prototype.off = function (element, event, listener, capture) {\r\n if (element.removeEventListener) {\r\n element.removeEventListener(event, listener, capture);\r\n } else if (element.detachEvent) {\r\n element.detachEvent('on' + event, listener);\r\n }\r\n };\r\n\r\n /**\r\n * Triggers a public event.\r\n * @todo Remove `status`, `relatedTarget` should be used instead.\r\n * @protected\r\n * @param {String} name - The event name.\r\n * @param {*} [data=null] - The event data.\r\n * @param {String} [namespace=carousel] - The event namespace.\r\n * @param {String} [state] - The state which is associated with the event.\r\n * @param {Boolean} [enter=false] - Indicates if the call enters the specified state or not.\r\n * @returns {Event} - The event arguments.\r\n */\r\n Owl.prototype.trigger = function (name, data, namespace, state, enter) {\r\n var status = {\r\n item: { count: this._items.length, index: this.current() }\r\n }, handler = $.camelCase(\r\n $.grep(['on', name, namespace], function (v) { return v })\r\n .join('-').toLowerCase()\r\n ), event = $.Event(\r\n [name, 'owl', namespace || 'carousel'].join('.').toLowerCase(),\r\n $.extend({ relatedTarget: this }, status, data)\r\n );\r\n\r\n if (!this._supress[name]) {\r\n $.each(this._plugins, function (name, plugin) {\r\n if (plugin.onTrigger) {\r\n plugin.onTrigger(event);\r\n }\r\n });\r\n\r\n this.register({ type: Owl.Type.Event, name: name });\r\n this.$element.trigger(event);\r\n\r\n if (this.settings && typeof this.settings[handler] === 'function') {\r\n this.settings[handler].call(this, event);\r\n }\r\n }\r\n\r\n return event;\r\n };\r\n\r\n /**\r\n * Enters a state.\r\n * @param name - The state name.\r\n */\r\n Owl.prototype.enter = function (name) {\r\n $.each([name].concat(this._states.tags[name] || []), $.proxy(function (i, name) {\r\n if (this._states.current[name] === undefined) {\r\n this._states.current[name] = 0;\r\n }\r\n\r\n this._states.current[name]++;\r\n }, this));\r\n };\r\n\r\n /**\r\n * Leaves a state.\r\n * @param name - The state name.\r\n */\r\n Owl.prototype.leave = function (name) {\r\n $.each([name].concat(this._states.tags[name] || []), $.proxy(function (i, name) {\r\n this._states.current[name]--;\r\n }, this));\r\n };\r\n\r\n /**\r\n * Registers an event or state.\r\n * @public\r\n * @param {Object} object - The event or state to register.\r\n */\r\n Owl.prototype.register = function (object) {\r\n if (object.type === Owl.Type.Event) {\r\n if (!$.event.special[object.name]) {\r\n $.event.special[object.name] = {};\r\n }\r\n\r\n if (!$.event.special[object.name].owl) {\r\n var _default = $.event.special[object.name]._default;\r\n $.event.special[object.name]._default = function (e) {\r\n if (_default && _default.apply && (!e.namespace || e.namespace.indexOf('owl') === -1)) {\r\n return _default.apply(this, arguments);\r\n }\r\n return e.namespace && e.namespace.indexOf('owl') > -1;\r\n };\r\n $.event.special[object.name].owl = true;\r\n }\r\n } else if (object.type === Owl.Type.State) {\r\n if (!this._states.tags[object.name]) {\r\n this._states.tags[object.name] = object.tags;\r\n } else {\r\n this._states.tags[object.name] = this._states.tags[object.name].concat(object.tags);\r\n }\r\n\r\n this._states.tags[object.name] = $.grep(this._states.tags[object.name], $.proxy(function (tag, i) {\r\n return $.inArray(tag, this._states.tags[object.name]) === i;\r\n }, this));\r\n }\r\n };\r\n\r\n /**\r\n * Suppresses events.\r\n * @protected\r\n * @param {Array.} events - The events to suppress.\r\n */\r\n Owl.prototype.suppress = function (events) {\r\n $.each(events, $.proxy(function (index, event) {\r\n this._supress[event] = true;\r\n }, this));\r\n };\r\n\r\n /**\r\n * Releases suppressed events.\r\n * @protected\r\n * @param {Array.} events - The events to release.\r\n */\r\n Owl.prototype.release = function (events) {\r\n $.each(events, $.proxy(function (index, event) {\r\n delete this._supress[event];\r\n }, this));\r\n };\r\n\r\n /**\r\n * Gets unified pointer coordinates from event.\r\n * @todo #261\r\n * @protected\r\n * @param {Event} - The `mousedown` or `touchstart` event.\r\n * @returns {Object} - Contains `x` and `y` coordinates of current pointer position.\r\n */\r\n Owl.prototype.pointer = function (event) {\r\n var result = { x: null, y: null };\r\n\r\n event = event.originalEvent || event || window.event;\r\n\r\n event = event.touches && event.touches.length ?\r\n event.touches[0] : event.changedTouches && event.changedTouches.length ?\r\n event.changedTouches[0] : event;\r\n\r\n if (event.pageX) {\r\n result.x = event.pageX;\r\n result.y = event.pageY;\r\n } else {\r\n result.x = event.clientX;\r\n result.y = event.clientY;\r\n }\r\n\r\n return result;\r\n };\r\n\r\n /**\r\n * Determines if the input is a Number or something that can be coerced to a Number\r\n * @protected\r\n * @param {Number|String|Object|Array|Boolean|RegExp|Function|Symbol} - The input to be tested\r\n * @returns {Boolean} - An indication if the input is a Number or can be coerced to a Number\r\n */\r\n Owl.prototype.isNumeric = function (number) {\r\n return !isNaN(parseFloat(number));\r\n };\r\n\r\n /**\r\n * Gets the difference of two vectors.\r\n * @todo #261\r\n * @protected\r\n * @param {Object} - The first vector.\r\n * @param {Object} - The second vector.\r\n * @returns {Object} - The difference.\r\n */\r\n Owl.prototype.difference = function (first, second) {\r\n return {\r\n x: first.x - second.x,\r\n y: first.y - second.y\r\n };\r\n };\r\n\r\n /**\r\n * The jQuery Plugin for the Owl Carousel\r\n * @todo Navigation plugin `next` and `prev`\r\n * @public\r\n */\r\n $.fn.owlCarousel = function (option) {\r\n var args = Array.prototype.slice.call(arguments, 1);\r\n\r\n return this.each(function () {\r\n var $this = $(this),\r\n data = $this.data('owl.carousel');\r\n\r\n if (!data) {\r\n data = new Owl(this, typeof option == 'object' && option);\r\n $this.data('owl.carousel', data);\r\n\r\n $.each([\r\n 'next', 'prev', 'to', 'destroy', 'refresh', 'replace', 'add', 'remove'\r\n ], function (i, event) {\r\n data.register({ type: Owl.Type.Event, name: event });\r\n data.$element.on(event + '.owl.carousel.core', $.proxy(function (e) {\r\n if (e.namespace && e.relatedTarget !== this) {\r\n this.suppress([event]);\r\n data[event].apply(this, [].slice.call(arguments, 1));\r\n this.release([event]);\r\n }\r\n }, data));\r\n });\r\n }\r\n\r\n if (typeof option == 'string' && option.charAt(0) !== '_') {\r\n data[option].apply(data, args);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * The constructor for the jQuery Plugin\r\n * @public\r\n */\r\n $.fn.owlCarousel.Constructor = Owl;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * AutoRefresh Plugin\r\n * @version 2.3.4\r\n * @author Artus Kolanowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n; (function ($, window, document, undefined) {\r\n\r\n /**\r\n * Creates the auto refresh plugin.\r\n * @class The Auto Refresh Plugin\r\n * @param {Owl} carousel - The Owl Carousel\r\n */\r\n var AutoRefresh = function (carousel) {\r\n /**\r\n * Reference to the core.\r\n * @protected\r\n * @type {Owl}\r\n */\r\n this._core = carousel;\r\n\r\n /**\r\n * Refresh interval.\r\n * @protected\r\n * @type {number}\r\n */\r\n this._interval = null;\r\n\r\n /**\r\n * Whether the element is currently visible or not.\r\n * @protected\r\n * @type {Boolean}\r\n */\r\n this._visible = null;\r\n\r\n /**\r\n * All event handlers.\r\n * @protected\r\n * @type {Object}\r\n */\r\n this._handlers = {\r\n 'initialized.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && this._core.settings.autoRefresh) {\r\n this.watch();\r\n }\r\n }, this)\r\n };\r\n\r\n // set default options\r\n this._core.options = $.extend({}, AutoRefresh.Defaults, this._core.options);\r\n\r\n // register event handlers\r\n this._core.$element.on(this._handlers);\r\n };\r\n\r\n /**\r\n * Default options.\r\n * @public\r\n */\r\n AutoRefresh.Defaults = {\r\n autoRefresh: true,\r\n autoRefreshInterval: 500\r\n };\r\n\r\n /**\r\n * Watches the element.\r\n */\r\n AutoRefresh.prototype.watch = function () {\r\n if (this._interval) {\r\n return;\r\n }\r\n\r\n this._visible = this._core.isVisible();\r\n this._interval = window.setInterval($.proxy(this.refresh, this), this._core.settings.autoRefreshInterval);\r\n };\r\n\r\n /**\r\n * Refreshes the element.\r\n */\r\n AutoRefresh.prototype.refresh = function () {\r\n if (this._core.isVisible() === this._visible) {\r\n return;\r\n }\r\n\r\n this._visible = !this._visible;\r\n\r\n this._core.$element.toggleClass('owl-hidden', !this._visible);\r\n\r\n this._visible && (this._core.invalidate('width') && this._core.refresh());\r\n };\r\n\r\n /**\r\n * Destroys the plugin.\r\n */\r\n AutoRefresh.prototype.destroy = function () {\r\n var handler, property;\r\n\r\n window.clearInterval(this._interval);\r\n\r\n for (handler in this._handlers) {\r\n this._core.$element.off(handler, this._handlers[handler]);\r\n }\r\n for (property in Object.getOwnPropertyNames(this)) {\r\n typeof this[property] != 'function' && (this[property] = null);\r\n }\r\n };\r\n\r\n $.fn.owlCarousel.Constructor.Plugins.AutoRefresh = AutoRefresh;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * Lazy Plugin\r\n * @version 2.3.4\r\n * @author Bartosz Wojciechowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n; (function ($, window, document, undefined) {\r\n\r\n /**\r\n * Creates the lazy plugin.\r\n * @class The Lazy Plugin\r\n * @param {Owl} carousel - The Owl Carousel\r\n */\r\n var Lazy = function (carousel) {\r\n\r\n /**\r\n * Reference to the core.\r\n * @protected\r\n * @type {Owl}\r\n */\r\n this._core = carousel;\r\n\r\n /**\r\n * Already loaded items.\r\n * @protected\r\n * @type {Array.}\r\n */\r\n this._loaded = [];\r\n\r\n /**\r\n * Event handlers.\r\n * @protected\r\n * @type {Object}\r\n */\r\n this._handlers = {\r\n 'initialized.owl.carousel change.owl.carousel resized.owl.carousel': $.proxy(function (e) {\r\n if (!e.namespace) {\r\n return;\r\n }\r\n\r\n if (!this._core.settings || !this._core.settings.lazyLoad) {\r\n return;\r\n }\r\n\r\n if ((e.property && e.property.name == 'position') || e.type == 'initialized') {\r\n var settings = this._core.settings,\r\n n = (settings.center && Math.ceil(settings.items / 2) || settings.items),\r\n i = ((settings.center && n * -1) || 0),\r\n position = (e.property && e.property.value !== undefined ? e.property.value : this._core.current()) + i,\r\n clones = this._core.clones().length,\r\n load = $.proxy(function (i, v) { this.load(v) }, this);\r\n //TODO: Need documentation for this new option\r\n if (settings.lazyLoadEager > 0) {\r\n n += settings.lazyLoadEager;\r\n // If the carousel is looping also preload images that are to the \"left\"\r\n if (settings.loop) {\r\n position -= settings.lazyLoadEager;\r\n n++;\r\n }\r\n }\r\n\r\n while (i++ < n) {\r\n this.load(clones / 2 + this._core.relative(position));\r\n clones && $.each(this._core.clones(this._core.relative(position)), load);\r\n position++;\r\n }\r\n }\r\n }, this)\r\n };\r\n\r\n // set the default options\r\n this._core.options = $.extend({}, Lazy.Defaults, this._core.options);\r\n\r\n // register event handler\r\n this._core.$element.on(this._handlers);\r\n };\r\n\r\n /**\r\n * Default options.\r\n * @public\r\n */\r\n Lazy.Defaults = {\r\n lazyLoad: false,\r\n lazyLoadEager: 0,\r\n intersectionObserverSupport: 'IntersectionObserver' in window && 'IntersectionObserverEntry' in window && 'intersectionRatio' in window.IntersectionObserverEntry.prototype\r\n };\r\n\r\n Lazy.prototype.addOberver = function () {\r\n var _this = this;\r\n this._observer = new IntersectionObserver(function (entries, observer) {\r\n entries.forEach(function (entry) {\r\n if (entry.isIntersecting === true || entry.intersectionRatio > 0) {\r\n var element = entry.target,\r\n $element = $(element),\r\n url = element.getAttribute('data-src');\r\n observer.unobserve(element);\r\n\r\n var parentElement = element.parentNode;\r\n // Is the parent element a \r\n if (parentElement.tagName.toLowerCase() === 'picture') {\r\n [].slice.call(parentElement.querySelectorAll('source')).forEach(function (source) {\r\n source.setAttribute('srcset', source.getAttribute('data-srcset'));\r\n source.removeAttribute('data-srcset');\r\n });\r\n _this.setElementSrc(element);\r\n return;\r\n }\r\n\r\n var image = new Image();\r\n _this._core.trigger('load', { element: $element, url: url }, 'lazy');\r\n image.onload = $.proxy(function () {\r\n this.setElementSrc(element);\r\n }, _this);\r\n image.src = url;\r\n }\r\n });\r\n });\r\n };\r\n\r\n Lazy.prototype.setElementSrc = function (element) {\r\n var $element = $(element),\r\n url = element.getAttribute('data-src');\r\n element.src = url;\r\n element.removeAttribute('data-src');\r\n $element.css('opacity', 1);\r\n this._core.trigger('loaded', { element: $element, url: url }, 'lazy');\r\n };\r\n\r\n /**\r\n * Loads all resources of an item at the specified position.\r\n * @param {Number} position - The absolute position of the item.\r\n * @protected\r\n */\r\n Lazy.prototype.load = function (position) {\r\n var $item = this._core.$stage.children().eq(position),\r\n $elements = $item && $item.find('.owl-lazy');\r\n\r\n if (!$elements || $.inArray($item.get(0), this._loaded) > -1) {\r\n return;\r\n }\r\n\r\n $elements.each($.proxy(function (index, element) {\r\n var $element = $(element), image,\r\n url = (window.devicePixelRatio > 1 && $element.attr('data-src-retina')) || $element.attr('data-src') || $element.attr('data-srcset');\r\n\r\n if (this._core.options.intersectionObserverSupport) {\r\n if (!this._observer) {\r\n this.addOberver();\r\n }\r\n this._observer.observe(element)\r\n return;\r\n }\r\n\r\n if ($element.is('img') && !$element.attr('data-src')) {\r\n $element.css('opacity', 1);\r\n this._core.trigger('loaded', { element: $element, url: url }, 'lazy');\r\n } else {\r\n this._core.trigger('load', { element: $element, url: url }, 'lazy');\r\n\r\n if ($element.is('img')) {\r\n $element.one('load.owl.lazy', $.proxy(function () {\r\n $element.css('opacity', 1);\r\n this._core.trigger('loaded', { element: $element, url: url }, 'lazy');\r\n }, this)).attr('src', url);\r\n } else if ($element.is('source')) {\r\n $element.one('load.owl.lazy', $.proxy(function () {\r\n this._core.trigger('loaded', { element: $element, url: url }, 'lazy');\r\n }, this)).attr('srcset', url);\r\n } else {\r\n image = new Image();\r\n image.onload = $.proxy(function () {\r\n $element.css({\r\n 'background-image': 'url(\"' + url + '\")',\r\n 'opacity': '1'\r\n });\r\n this._core.trigger('loaded', { element: $element, url: url }, 'lazy');\r\n }, this);\r\n image.src = url;\r\n }\r\n }\r\n\r\n }, this));\r\n\r\n this._loaded.push($item.get(0));\r\n };\r\n\r\n /**\r\n * Destroys the plugin.\r\n * @public\r\n */\r\n Lazy.prototype.destroy = function () {\r\n var handler, property;\r\n\r\n for (handler in this.handlers) {\r\n this._core.$element.off(handler, this.handlers[handler]);\r\n }\r\n if (this._observer) {\r\n this._observer.disconnect();\r\n }\r\n for (property in Object.getOwnPropertyNames(this)) {\r\n typeof this[property] != 'function' && (this[property] = null);\r\n }\r\n };\r\n\r\n $.fn.owlCarousel.Constructor.Plugins.Lazy = Lazy;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * AutoHeight Plugin\r\n * @version 2.3.4\r\n * @author Bartosz Wojciechowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n; (function ($, window, document, undefined) {\r\n\r\n /**\r\n * Creates the auto height plugin.\r\n * @class The Auto Height Plugin\r\n * @param {Owl} carousel - The Owl Carousel\r\n */\r\n var AutoHeight = function (carousel) {\r\n /**\r\n * Reference to the core.\r\n * @protected\r\n * @type {Owl}\r\n */\r\n this._core = carousel;\r\n\r\n this._previousHeight = null;\r\n\r\n /**\r\n * All event handlers.\r\n * @protected\r\n * @type {Object}\r\n */\r\n this._handlers = {\r\n 'initialized.owl.carousel refreshed.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && this._core.settings.autoHeight) {\r\n this.update();\r\n }\r\n }, this),\r\n 'changed.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && this._core.settings.autoHeight && e.property.name === 'position') {\r\n this.update();\r\n }\r\n }, this),\r\n 'loaded.owl.lazy': $.proxy(function (e) {\r\n if (e.namespace && this._core.settings.autoHeight\r\n && e.element.closest('.' + this._core.settings.itemClass).index() === this._core.current()) {\r\n this.update();\r\n }\r\n }, this)\r\n };\r\n\r\n // set default options\r\n this._core.options = $.extend({}, AutoHeight.Defaults, this._core.options);\r\n\r\n // register event handlers\r\n this._core.$element.on(this._handlers);\r\n this._intervalId = null;\r\n var refThis = this;\r\n\r\n // These changes have been taken from a PR by gavrochelegnou proposed in #1575\r\n // and have been made compatible with the latest jQuery version\r\n $(window).on('load', function () {\r\n if (refThis._core.settings.autoHeight) {\r\n refThis.update();\r\n }\r\n });\r\n\r\n // Autoresize the height of the carousel when window is resized\r\n // When carousel has images, the height is dependent on the width\r\n // and should also change on resize\r\n $(window).resize(function () {\r\n if (refThis._core.settings.autoHeight) {\r\n if (refThis._intervalId != null) {\r\n clearTimeout(refThis._intervalId);\r\n }\r\n\r\n refThis._intervalId = setTimeout(function () {\r\n refThis.update();\r\n }, 250);\r\n }\r\n });\r\n\r\n };\r\n\r\n /**\r\n * Default options.\r\n * @public\r\n */\r\n AutoHeight.Defaults = {\r\n autoHeight: false,\r\n autoHeightClass: 'owl-height'\r\n };\r\n\r\n /**\r\n * Updates the view.\r\n */\r\n AutoHeight.prototype.update = function () {\r\n var start = this._core._current,\r\n end = start + this._core.settings.items,\r\n lazyLoadEnabled = this._core.settings.lazyLoad,\r\n visible = this._core.$stage.children().toArray().slice(start, end),\r\n heights = [],\r\n maxheight = 0;\r\n\r\n $.each(visible, function (index, item) {\r\n heights.push($(item).height());\r\n });\r\n\r\n maxheight = Math.max.apply(null, heights);\r\n\r\n if (maxheight <= 1 && lazyLoadEnabled && this._previousHeight) {\r\n maxheight = this._previousHeight;\r\n }\r\n\r\n this._previousHeight = maxheight;\r\n\r\n this._core.$stage.parent()\r\n .height(maxheight)\r\n .addClass(this._core.settings.autoHeightClass);\r\n };\r\n\r\n AutoHeight.prototype.destroy = function () {\r\n var handler, property;\r\n\r\n for (handler in this._handlers) {\r\n this._core.$element.off(handler, this._handlers[handler]);\r\n }\r\n for (property in Object.getOwnPropertyNames(this)) {\r\n typeof this[property] !== 'function' && (this[property] = null);\r\n }\r\n };\r\n\r\n $.fn.owlCarousel.Constructor.Plugins.AutoHeight = AutoHeight;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * Video Plugin\r\n * @version 2.3.4\r\n * @author Bartosz Wojciechowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n; (function ($, window, document, undefined) {\r\n\r\n /**\r\n * Creates the video plugin.\r\n * @class The Video Plugin\r\n * @param {Owl} carousel - The Owl Carousel\r\n */\r\n var Video = function (carousel) {\r\n /**\r\n * Reference to the core.\r\n * @protected\r\n * @type {Owl}\r\n */\r\n this._core = carousel;\r\n\r\n /**\r\n * Cache all video URLs.\r\n * @protected\r\n * @type {Object}\r\n */\r\n this._videos = {};\r\n\r\n /**\r\n * Current playing item.\r\n * @protected\r\n * @type {jQuery}\r\n */\r\n this._playing = null;\r\n\r\n /**\r\n * All event handlers.\r\n * @todo The cloned content removale is too late\r\n * @protected\r\n * @type {Object}\r\n */\r\n this._handlers = {\r\n 'initialized.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace) {\r\n this._core.register({ type: 'state', name: 'playing', tags: ['interacting'] });\r\n }\r\n }, this),\r\n 'resize.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && this._core.settings.video && this.isInFullScreen()) {\r\n e.preventDefault();\r\n }\r\n }, this),\r\n 'refreshed.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && this._core.is('resizing')) {\r\n this._core.$stage.find('.cloned .owl-video-frame').remove();\r\n }\r\n }, this),\r\n 'changed.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && e.property.name === 'position' && this._playing) {\r\n this.stop();\r\n }\r\n }, this),\r\n 'prepared.owl.carousel': $.proxy(function (e) {\r\n if (!e.namespace) {\r\n return;\r\n }\r\n\r\n var $element = $(e.content).find('.owl-video');\r\n\r\n if ($element.length) {\r\n $element.css('display', 'none');\r\n this.fetch($element, $(e.content));\r\n }\r\n }, this)\r\n };\r\n\r\n // set default options\r\n this._core.options = $.extend({}, Video.Defaults, this._core.options);\r\n\r\n // register event handlers\r\n this._core.$element.on(this._handlers);\r\n\r\n this._core.$element.on('click.owl.video', '.owl-video-play-icon', $.proxy(function (e) {\r\n this.play(e);\r\n }, this));\r\n };\r\n\r\n /**\r\n * Default options.\r\n * @public\r\n */\r\n Video.Defaults = {\r\n video: false,\r\n videoHeight: false,\r\n videoWidth: false\r\n };\r\n\r\n /**\r\n * Gets the video ID and the type (YouTube/Vimeo/vzaar only).\r\n * @protected\r\n * @param {jQuery} target - The target containing the video data.\r\n * @param {jQuery} item - The item containing the video.\r\n */\r\n Video.prototype.fetch = function (target, item) {\r\n var type = (function () {\r\n if (target.attr('data-vimeo-id')) {\r\n return 'vimeo';\r\n } else if (target.attr('data-vzaar-id')) {\r\n return 'vzaar'\r\n } else {\r\n return 'youtube';\r\n }\r\n })(),\r\n id = target.attr('data-vimeo-id') || target.attr('data-youtube-id') || target.attr('data-vzaar-id'),\r\n width = target.attr('data-width') || this._core.settings.videoWidth,\r\n height = target.attr('data-height') || this._core.settings.videoHeight,\r\n url = target.attr('href');\r\n\r\n if (url) {\r\n\r\n /*\r\n Parses the id's out of the following urls (and probably more):\r\n https://www.youtube.com/watch?v=:id\r\n https://youtu.be/:id\r\n https://vimeo.com/:id\r\n https://vimeo.com/channels/:channel/:id\r\n https://vimeo.com/groups/:group/videos/:id\r\n https://app.vzaar.com/videos/:id\r\n \r\n Visual example: https://regexper.com/#(http%3A%7Chttps%3A%7C)%5C%2F%5C%2F(player.%7Cwww.%7Capp.)%3F(vimeo%5C.com%7Cyoutu(be%5C.com%7C%5C.be%7Cbe%5C.googleapis%5C.com)%7Cvzaar%5C.com)%5C%2F(video%5C%2F%7Cvideos%5C%2F%7Cembed%5C%2F%7Cchannels%5C%2F.%2B%5C%2F%7Cgroups%5C%2F.%2B%5C%2F%7Cwatch%5C%3Fv%3D%7Cv%5C%2F)%3F(%5BA-Za-z0-9._%25-%5D*)(%5C%26%5CS%2B)%3F\r\n */\r\n\r\n id = url.match(/(http:|https:|)\\/\\/(player.|www.|app.)?(vimeo\\.com|youtu(be\\.com|\\.be|be\\.googleapis\\.com|be\\-nocookie\\.com)|vzaar\\.com)\\/(video\\/|videos\\/|embed\\/|channels\\/.+\\/|groups\\/.+\\/|watch\\?v=|v\\/)?([A-Za-z0-9._%-]*)(\\&\\S+)?/);\r\n\r\n if (id[3].indexOf('youtu') > -1) {\r\n type = 'youtube';\r\n } else if (id[3].indexOf('vimeo') > -1) {\r\n type = 'vimeo';\r\n } else if (id[3].indexOf('vzaar') > -1) {\r\n type = 'vzaar';\r\n } else {\r\n throw new Error('Video URL not supported.');\r\n }\r\n id = id[6];\r\n } else {\r\n throw new Error('Missing video URL.');\r\n }\r\n\r\n this._videos[url] = {\r\n type: type,\r\n id: id,\r\n width: width,\r\n height: height\r\n };\r\n\r\n item.attr('data-video', url);\r\n\r\n this.thumbnail(target, this._videos[url]);\r\n };\r\n\r\n /**\r\n * Creates video thumbnail.\r\n * @protected\r\n * @param {jQuery} target - The target containing the video data.\r\n * @param {Object} info - The video info object.\r\n * @see `fetch`\r\n */\r\n Video.prototype.thumbnail = function (target, video) {\r\n var tnLink,\r\n icon,\r\n path,\r\n dimensions = video.width && video.height ? 'width:' + video.width + 'px;height:' + video.height + 'px;' : '',\r\n customTn = target.find('img'),\r\n srcType = 'src',\r\n lazyClass = '',\r\n settings = this._core.settings,\r\n create = function (path) {\r\n icon = '
    ';\r\n\r\n if (settings.lazyLoad) {\r\n tnLink = $('
    ', {\r\n \"class\": 'owl-video-tn ' + lazyClass,\r\n \"srcType\": path\r\n });\r\n } else {\r\n tnLink = $('
    ', {\r\n \"class\": \"owl-video-tn\",\r\n \"style\": 'opacity:1;background-image:url(' + path + ')'\r\n });\r\n }\r\n target.after(tnLink);\r\n target.after(icon);\r\n };\r\n\r\n // wrap video content into owl-video-wrapper div\r\n target.wrap($('
    ', {\r\n \"class\": \"owl-video-wrapper\",\r\n \"style\": dimensions\r\n }));\r\n\r\n if (this._core.settings.lazyLoad) {\r\n srcType = 'data-src';\r\n lazyClass = 'owl-lazy';\r\n }\r\n\r\n // custom thumbnail\r\n if (customTn.length) {\r\n create(customTn.attr(srcType));\r\n customTn.remove();\r\n return false;\r\n }\r\n\r\n if (video.type === 'youtube') {\r\n path = \"//img.youtube.com/vi/\" + video.id + \"/hqdefault.jpg\";\r\n create(path);\r\n } else if (video.type === 'vimeo') {\r\n $.ajax({\r\n type: 'GET',\r\n url: '//vimeo.com/api/v2/video/' + video.id + '.json',\r\n jsonp: 'callback',\r\n dataType: 'jsonp',\r\n success: function (data) {\r\n path = data[0].thumbnail_large;\r\n create(path);\r\n }\r\n });\r\n } else if (video.type === 'vzaar') {\r\n $.ajax({\r\n type: 'GET',\r\n url: '//vzaar.com/api/videos/' + video.id + '.json',\r\n jsonp: 'callback',\r\n dataType: 'jsonp',\r\n success: function (data) {\r\n path = data.framegrab_url;\r\n create(path);\r\n }\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Stops the current video.\r\n * @public\r\n */\r\n Video.prototype.stop = function () {\r\n this._core.trigger('stop', null, 'video');\r\n this._playing.find('.owl-video-frame').remove();\r\n this._playing.removeClass('owl-video-playing');\r\n this._playing = null;\r\n this._core.leave('playing');\r\n this._core.trigger('stopped', null, 'video');\r\n };\r\n\r\n /**\r\n * Starts the current video.\r\n * @public\r\n * @param {Event} event - The event arguments.\r\n */\r\n Video.prototype.play = function (event) {\r\n var target = $(event.target),\r\n item = target.closest('.' + this._core.settings.itemClass),\r\n video = this._videos[item.attr('data-video')],\r\n width = video.width || '100%',\r\n height = video.height || this._core.$stage.height(),\r\n html,\r\n iframe;\r\n\r\n if (this._playing) {\r\n return;\r\n }\r\n\r\n this._core.enter('playing');\r\n this._core.trigger('play', null, 'video');\r\n\r\n item = this._core.items(this._core.relative(item.index()));\r\n\r\n this._core.reset(item.index());\r\n\r\n html = $('');\r\n html.attr('height', height);\r\n html.attr('width', width);\r\n if (video.type === 'youtube') {\r\n html.attr('src', '//www.youtube.com/embed/' + video.id + '?autoplay=1&rel=0&v=' + video.id);\r\n } else if (video.type === 'vimeo') {\r\n html.attr('src', '//player.vimeo.com/video/' + video.id + '?autoplay=1');\r\n } else if (video.type === 'vzaar') {\r\n html.attr('src', '//view.vzaar.com/' + video.id + '/player?autoplay=true');\r\n }\r\n\r\n iframe = $(html).wrap('
    ').insertAfter(item.find('.owl-video'));\r\n\r\n this._playing = item.addClass('owl-video-playing');\r\n };\r\n\r\n /**\r\n * Checks whether an video is currently in full screen mode or not.\r\n * @todo Bad style because looks like a readonly method but changes members.\r\n * @protected\r\n * @returns {Boolean}\r\n */\r\n Video.prototype.isInFullScreen = function () {\r\n var element = document.fullscreenElement || document.mozFullScreenElement ||\r\n document.webkitFullscreenElement;\r\n\r\n return element && $(element).parent().hasClass('owl-video-frame');\r\n };\r\n\r\n /**\r\n * Destroys the plugin.\r\n */\r\n Video.prototype.destroy = function () {\r\n var handler, property;\r\n\r\n this._core.$element.off('click.owl.video');\r\n\r\n for (handler in this._handlers) {\r\n this._core.$element.off(handler, this._handlers[handler]);\r\n }\r\n for (property in Object.getOwnPropertyNames(this)) {\r\n typeof this[property] != 'function' && (this[property] = null);\r\n }\r\n };\r\n\r\n $.fn.owlCarousel.Constructor.Plugins.Video = Video;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * Animate Plugin\r\n * @version 2.3.4\r\n * @author Bartosz Wojciechowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n; (function ($, window, document, undefined) {\r\n\r\n /**\r\n * Creates the animate plugin.\r\n * @class The Navigation Plugin\r\n * @param {Owl} scope - The Owl Carousel\r\n */\r\n var Animate = function (scope) {\r\n this.core = scope;\r\n this.core.options = $.extend({}, Animate.Defaults, this.core.options);\r\n this.swapping = true;\r\n this.previous = undefined;\r\n this.next = undefined;\r\n\r\n this.handlers = {\r\n 'change.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && e.property.name == 'position') {\r\n this.previous = this.core.current();\r\n this.next = e.property.value;\r\n }\r\n }, this),\r\n 'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace) {\r\n this.swapping = e.type == 'translated';\r\n }\r\n }, this),\r\n 'translate.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) {\r\n this.swap();\r\n }\r\n }, this)\r\n };\r\n\r\n this.core.$element.on(this.handlers);\r\n };\r\n\r\n /**\r\n * Default options.\r\n * @public\r\n */\r\n Animate.Defaults = {\r\n animateOut: false,\r\n animateIn: false\r\n };\r\n\r\n /**\r\n * Toggles the animation classes whenever an translations starts.\r\n * @protected\r\n * @returns {Boolean|undefined}\r\n */\r\n Animate.prototype.swap = function () {\r\n\r\n if (this.core.settings.items !== 1) {\r\n return;\r\n }\r\n\r\n if (!$.support.animation || !$.support.transition) {\r\n return;\r\n }\r\n\r\n this.core.speed(0);\r\n\r\n var left,\r\n clear = $.proxy(this.clear, this),\r\n previous = this.core.$stage.children().eq(this.previous),\r\n next = this.core.$stage.children().eq(this.next),\r\n incoming = this.core.settings.animateIn,\r\n outgoing = this.core.settings.animateOut;\r\n\r\n if (this.core.current() === this.previous) {\r\n return;\r\n }\r\n\r\n if (outgoing) {\r\n left = this.core.coordinates(this.previous) - this.core.coordinates(this.next);\r\n previous.one($.support.animation.end, clear)\r\n .css({ 'left': left + 'px' })\r\n .addClass('animated owl-animated-out')\r\n .addClass(outgoing);\r\n }\r\n\r\n if (incoming) {\r\n next.one($.support.animation.end, clear)\r\n .addClass('animated owl-animated-in')\r\n .addClass(incoming);\r\n }\r\n };\r\n\r\n Animate.prototype.clear = function (e) {\r\n $(e.target).css({ 'left': '' })\r\n .removeClass('animated owl-animated-out owl-animated-in')\r\n .removeClass(this.core.settings.animateIn)\r\n .removeClass(this.core.settings.animateOut);\r\n this.core.onTransitionEnd();\r\n };\r\n\r\n /**\r\n * Destroys the plugin.\r\n * @public\r\n */\r\n Animate.prototype.destroy = function () {\r\n var handler, property;\r\n\r\n for (handler in this.handlers) {\r\n this.core.$element.off(handler, this.handlers[handler]);\r\n }\r\n for (property in Object.getOwnPropertyNames(this)) {\r\n typeof this[property] != 'function' && (this[property] = null);\r\n }\r\n };\r\n\r\n $.fn.owlCarousel.Constructor.Plugins.Animate = Animate;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * Autoplay Plugin\r\n * @version 2.3.4\r\n * @author Bartosz Wojciechowski\r\n * @author Artus Kolanowski\r\n * @author David Deutsch\r\n * @author Tom De Caluw�\r\n * @license The MIT License (MIT)\r\n */\r\n; (function ($, window, document, undefined) {\r\n\r\n /**\r\n * Creates the autoplay plugin.\r\n * @class The Autoplay Plugin\r\n * @param {Owl} scope - The Owl Carousel\r\n */\r\n var Autoplay = function (carousel) {\r\n /**\r\n * Reference to the core.\r\n * @protected\r\n * @type {Owl}\r\n */\r\n this._core = carousel;\r\n\r\n /**\r\n * The autoplay timeout id.\r\n * @type {Number}\r\n */\r\n this._call = null;\r\n\r\n /**\r\n * Depending on the state of the plugin, this variable contains either\r\n * the start time of the timer or the current timer value if it's\r\n * paused. Since we start in a paused state we initialize the timer\r\n * value.\r\n * @type {Number}\r\n */\r\n this._time = 0;\r\n\r\n /**\r\n * Stores the timeout currently used.\r\n * @type {Number}\r\n */\r\n this._timeout = 0;\r\n\r\n /**\r\n * Indicates whenever the autoplay is paused.\r\n * @type {Boolean}\r\n */\r\n this._paused = true;\r\n\r\n /**\r\n * All event handlers.\r\n * @protected\r\n * @type {Object}\r\n */\r\n this._handlers = {\r\n 'changed.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && e.property.name === 'settings') {\r\n if (this._core.settings.autoplay) {\r\n this.play();\r\n } else {\r\n this.stop();\r\n }\r\n } else if (e.namespace && e.property.name === 'position' && this._paused) {\r\n // Reset the timer. This code is triggered when the position\r\n // of the carousel was changed through user interaction.\r\n this._time = 0;\r\n }\r\n }, this),\r\n 'initialized.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && this._core.settings.autoplay) {\r\n this.play();\r\n }\r\n }, this),\r\n 'play.owl.autoplay': $.proxy(function (e, t, s) {\r\n if (e.namespace) {\r\n this.play(t, s);\r\n }\r\n }, this),\r\n 'stop.owl.autoplay': $.proxy(function (e) {\r\n if (e.namespace) {\r\n this.stop();\r\n }\r\n }, this),\r\n 'mouseover.owl.autoplay': $.proxy(function () {\r\n if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {\r\n this.pause();\r\n }\r\n }, this),\r\n 'mouseleave.owl.autoplay': $.proxy(function () {\r\n if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {\r\n this.play();\r\n }\r\n }, this),\r\n 'touchstart.owl.core': $.proxy(function () {\r\n if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {\r\n this.pause();\r\n }\r\n }, this),\r\n 'touchend.owl.core': $.proxy(function () {\r\n if (this._core.settings.autoplayHoverPause) {\r\n this.play();\r\n }\r\n }, this)\r\n };\r\n\r\n // register event handlers\r\n this._core.$element.on(this._handlers);\r\n\r\n // set default options\r\n this._core.options = $.extend({}, Autoplay.Defaults, this._core.options);\r\n };\r\n\r\n /**\r\n * Default options.\r\n * @public\r\n */\r\n Autoplay.Defaults = {\r\n autoplay: false,\r\n autoplayTimeout: 5000,\r\n autoplayHoverPause: false,\r\n autoplaySpeed: false\r\n };\r\n\r\n /**\r\n * Transition to the next slide and set a timeout for the next transition.\r\n * @private\r\n * @param {Number} [speed] - The animation speed for the animations.\r\n */\r\n Autoplay.prototype._next = function (speed) {\r\n this._call = window.setTimeout(\r\n $.proxy(this._next, this, speed),\r\n this._timeout * (Math.round(this.read() / this._timeout) + 1) - this.read()\r\n );\r\n\r\n if (this._core.is('interacting') || document.hidden) {\r\n return;\r\n }\r\n this._core.next(speed || this._core.settings.autoplaySpeed);\r\n }\r\n\r\n /**\r\n * Reads the current timer value when the timer is playing.\r\n * @public\r\n */\r\n Autoplay.prototype.read = function () {\r\n return new Date().getTime() - this._time;\r\n };\r\n\r\n /**\r\n * Starts the autoplay.\r\n * @public\r\n * @param {Number} [timeout] - The interval before the next animation starts.\r\n * @param {Number} [speed] - The animation speed for the animations.\r\n */\r\n Autoplay.prototype.play = function (timeout, speed) {\r\n var elapsed;\r\n\r\n if (!this._core.is('rotating')) {\r\n this._core.enter('rotating');\r\n }\r\n\r\n timeout = timeout || this._core.settings.autoplayTimeout;\r\n\r\n // Calculate the elapsed time since the last transition. If the carousel\r\n // wasn't playing this calculation will yield zero.\r\n elapsed = Math.min(this._time % (this._timeout || timeout), timeout);\r\n\r\n if (this._paused) {\r\n // Start the clock.\r\n this._time = this.read();\r\n this._paused = false;\r\n } else {\r\n // Clear the active timeout to allow replacement.\r\n window.clearTimeout(this._call);\r\n }\r\n\r\n // Adjust the origin of the timer to match the new timeout value.\r\n this._time += this.read() % timeout - elapsed;\r\n\r\n this._timeout = timeout;\r\n this._call = window.setTimeout($.proxy(this._next, this, speed), timeout - elapsed);\r\n };\r\n\r\n /**\r\n * Stops the autoplay.\r\n * @public\r\n */\r\n Autoplay.prototype.stop = function () {\r\n if (this._core.is('rotating')) {\r\n // Reset the clock.\r\n this._time = 0;\r\n this._paused = true;\r\n\r\n window.clearTimeout(this._call);\r\n this._core.leave('rotating');\r\n }\r\n };\r\n\r\n /**\r\n * Pauses the autoplay.\r\n * @public\r\n */\r\n Autoplay.prototype.pause = function () {\r\n if (this._core.is('rotating') && !this._paused) {\r\n // Pause the clock.\r\n this._time = this.read();\r\n this._paused = true;\r\n\r\n window.clearTimeout(this._call);\r\n }\r\n };\r\n\r\n /**\r\n * Destroys the plugin.\r\n */\r\n Autoplay.prototype.destroy = function () {\r\n var handler, property;\r\n\r\n this.stop();\r\n\r\n for (handler in this._handlers) {\r\n this._core.$element.off(handler, this._handlers[handler]);\r\n }\r\n for (property in Object.getOwnPropertyNames(this)) {\r\n typeof this[property] != 'function' && (this[property] = null);\r\n }\r\n };\r\n\r\n $.fn.owlCarousel.Constructor.Plugins.autoplay = Autoplay;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * Navigation Plugin\r\n * @version 2.3.4\r\n * @author Artus Kolanowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n; (function ($, window, document, undefined) {\r\n 'use strict';\r\n\r\n /**\r\n * Creates the navigation plugin.\r\n * @class The Navigation Plugin\r\n * @param {Owl} carousel - The Owl Carousel.\r\n */\r\n var Navigation = function (carousel) {\r\n /**\r\n * Reference to the core.\r\n * @protected\r\n * @type {Owl}\r\n */\r\n this._core = carousel;\r\n\r\n /**\r\n * Indicates whether the plugin is initialized or not.\r\n * @protected\r\n * @type {Boolean}\r\n */\r\n this._initialized = false;\r\n\r\n /**\r\n * The current paging indexes.\r\n * @protected\r\n * @type {Array}\r\n */\r\n this._pages = [];\r\n\r\n /**\r\n * All DOM elements of the user interface.\r\n * @protected\r\n * @type {Object}\r\n */\r\n this._controls = {};\r\n\r\n /**\r\n * Markup for an indicator.\r\n * @protected\r\n * @type {Array.}\r\n */\r\n this._templates = [];\r\n\r\n /**\r\n * The carousel element.\r\n * @type {jQuery}\r\n */\r\n this.$element = this._core.$element;\r\n\r\n /**\r\n * Overridden methods of the carousel.\r\n * @protected\r\n * @type {Object}\r\n */\r\n this._overrides = {\r\n next: this._core.next,\r\n prev: this._core.prev,\r\n to: this._core.to\r\n };\r\n\r\n /**\r\n * All event handlers.\r\n * @protected\r\n * @type {Object}\r\n */\r\n this._handlers = {\r\n 'prepared.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && this._core.settings.dotsData) {\r\n this._templates.push('
    ' +\r\n $(e.content).find('[data-dot]').addBack('[data-dot]').attr('data-dot') + '
    ');\r\n }\r\n }, this),\r\n 'added.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && this._core.settings.dotsData) {\r\n this._templates.splice(e.position, 0, this._templates.pop());\r\n }\r\n }, this),\r\n 'remove.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && this._core.settings.dotsData) {\r\n this._templates.splice(e.position, 1);\r\n }\r\n }, this),\r\n 'changed.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && e.property.name == 'position') {\r\n this.draw();\r\n }\r\n }, this),\r\n 'initialized.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && !this._initialized) {\r\n this._core.trigger('initialize', null, 'navigation');\r\n this.initialize();\r\n this.update();\r\n this.draw();\r\n this._initialized = true;\r\n this._core.trigger('initialized', null, 'navigation');\r\n }\r\n }, this),\r\n 'refreshed.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && this._initialized) {\r\n this._core.trigger('refresh', null, 'navigation');\r\n this.update();\r\n this.draw();\r\n this._core.trigger('refreshed', null, 'navigation');\r\n }\r\n }, this)\r\n };\r\n\r\n // set default options\r\n this._core.options = $.extend({}, Navigation.Defaults, this._core.options);\r\n\r\n // register event handlers\r\n this.$element.on(this._handlers);\r\n };\r\n\r\n /**\r\n * Default options.\r\n * @public\r\n * @todo Rename `slideBy` to `navBy`\r\n */\r\n Navigation.Defaults = {\r\n nav: false,\r\n navText: [\r\n '',\r\n ''\r\n ],\r\n navSpeed: false,\r\n navElement: 'div',\r\n navContainer: false,\r\n navContainerClass: 'owl-nav',\r\n navClass: [\r\n 'owl-prev',\r\n 'owl-next'\r\n ],\r\n slideBy: 1,\r\n dotClass: 'owl-dot',\r\n dotsClass: 'owl-dots',\r\n dots: true,\r\n dotsEach: false,\r\n dotsData: false,\r\n dotsSpeed: false,\r\n dotsContainer: false\r\n };\r\n\r\n /**\r\n * Initializes the layout of the plugin and extends the carousel.\r\n * @protected\r\n */\r\n Navigation.prototype.initialize = function () {\r\n var override,\r\n settings = this._core.settings;\r\n\r\n // create DOM structure for relative navigation\r\n this._controls.$relative = (settings.navContainer ? $(settings.navContainer)\r\n : $('
    ').addClass(settings.navContainerClass).appendTo(this.$element)).addClass('disabled');\r\n\r\n this._controls.$previous = $('<' + settings.navElement + '>')\r\n .addClass(settings.navClass[0])\r\n .html(settings.navText[0])\r\n .prependTo(this._controls.$relative)\r\n .on('click', $.proxy(function (e) {\r\n this.prev(settings.navSpeed);\r\n }, this));\r\n this._controls.$next = $('<' + settings.navElement + '>')\r\n .addClass(settings.navClass[1])\r\n .html(settings.navText[1])\r\n .appendTo(this._controls.$relative)\r\n .on('click', $.proxy(function (e) {\r\n this.next(settings.navSpeed);\r\n }, this));\r\n\r\n // create DOM structure for absolute navigation\r\n if (!settings.dotsData) {\r\n this._templates = [$('
    ')\r\n .addClass(settings.dotClass)\r\n .append($(''))\r\n .prop('outerHTML')];\r\n }\r\n\r\n this._controls.$absolute = (settings.dotsContainer ? $(settings.dotsContainer)\r\n : $('
    ').addClass(settings.dotsClass).appendTo(this.$element)).addClass('disabled');\r\n\r\n this._controls.$absolute.on('click', 'div', $.proxy(function (e) {\r\n var index = $(e.target).parent().is(this._controls.$absolute)\r\n ? $(e.target).index() : $(e.target).parent().index();\r\n\r\n e.preventDefault();\r\n\r\n this.to(index, settings.dotsSpeed);\r\n }, this));\r\n\r\n // override public methods of the carousel\r\n for (override in this._overrides) {\r\n this._core[override] = $.proxy(this[override], this);\r\n }\r\n };\r\n\r\n /**\r\n * Destroys the plugin.\r\n * @protected\r\n */\r\n Navigation.prototype.destroy = function () {\r\n var handler, control, property, override, settings;\r\n settings = this._core.settings;\r\n\r\n for (handler in this._handlers) {\r\n this.$element.off(handler, this._handlers[handler]);\r\n }\r\n for (control in this._controls) {\r\n if (control === '$relative' && settings.navContainer) {\r\n this._controls[control].html('');\r\n } else {\r\n this._controls[control].remove();\r\n }\r\n }\r\n for (override in this.overides) {\r\n this._core[override] = this._overrides[override];\r\n }\r\n for (property in Object.getOwnPropertyNames(this)) {\r\n typeof this[property] != 'function' && (this[property] = null);\r\n }\r\n };\r\n\r\n /**\r\n * Updates the internal state.\r\n * @protected\r\n */\r\n Navigation.prototype.update = function () {\r\n var i, j, k,\r\n lower = this._core.clones().length / 2,\r\n upper = lower + this._core.items().length,\r\n maximum = this._core.maximum(true),\r\n settings = this._core.settings,\r\n size = settings.center || settings.autoWidth || settings.dotsData\r\n ? 1 : settings.dotsEach || settings.items;\r\n\r\n if (settings.slideBy !== 'page') {\r\n settings.slideBy = Math.min(settings.slideBy, settings.items);\r\n }\r\n\r\n if (settings.dots || settings.slideBy == 'page') {\r\n this._pages = [];\r\n\r\n for (i = lower, j = 0, k = 0; i < upper; i++) {\r\n if (j >= size || j === 0) {\r\n this._pages.push({\r\n start: Math.min(maximum, i - lower),\r\n end: i - lower + size - 1\r\n });\r\n if (Math.min(maximum, i - lower) === maximum) {\r\n break;\r\n }\r\n j = 0, ++k;\r\n }\r\n j += this._core.mergers(this._core.relative(i));\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Draws the user interface.\r\n * @todo The option `dotsData` wont work.\r\n * @protected\r\n */\r\n Navigation.prototype.draw = function () {\r\n var difference,\r\n settings = this._core.settings,\r\n disabled = this._core.items().length <= settings.items,\r\n index = this._core.relative(this._core.current()),\r\n loop = settings.loop || settings.rewind;\r\n\r\n this._controls.$relative.toggleClass('disabled', !settings.nav || disabled);\r\n\r\n if (settings.nav) {\r\n this._controls.$previous.toggleClass('disabled', !loop && index <= this._core.minimum(true));\r\n this._controls.$next.toggleClass('disabled', !loop && index >= this._core.maximum(true));\r\n }\r\n\r\n this._controls.$absolute.toggleClass('disabled', !settings.dots || disabled);\r\n\r\n if (settings.dots) {\r\n difference = this._pages.length - this._controls.$absolute.children().length;\r\n\r\n if (settings.dotsData && difference !== 0) {\r\n this._controls.$absolute.html(this._templates.join(''));\r\n } else if (difference > 0) {\r\n this._controls.$absolute.append(new Array(difference + 1).join(this._templates[0]));\r\n } else if (difference < 0) {\r\n this._controls.$absolute.children().slice(difference).remove();\r\n }\r\n\r\n this._controls.$absolute.find('.active').removeClass('active');\r\n this._controls.$absolute.children().eq($.inArray(this.current(), this._pages)).addClass('active');\r\n }\r\n };\r\n\r\n /**\r\n * Extends event data.\r\n * @protected\r\n * @param {Event} event - The event object which gets thrown.\r\n */\r\n Navigation.prototype.onTrigger = function (event) {\r\n var settings = this._core.settings;\r\n\r\n event.page = {\r\n index: $.inArray(this.current(), this._pages),\r\n count: this._pages.length,\r\n size: settings && (settings.center || settings.autoWidth || settings.dotsData\r\n ? 1 : settings.dotsEach || settings.items)\r\n };\r\n };\r\n\r\n /**\r\n * Gets the current page position of the carousel.\r\n * @protected\r\n * @returns {Number}\r\n */\r\n Navigation.prototype.current = function () {\r\n var current = this._core.relative(this._core.current());\r\n return $.grep(this._pages, $.proxy(function (page, index) {\r\n return page.start <= current && page.end >= current;\r\n }, this)).pop();\r\n };\r\n\r\n /**\r\n * Gets the current succesor/predecessor position.\r\n * @protected\r\n * @returns {Number}\r\n */\r\n Navigation.prototype.getPosition = function (successor) {\r\n var position, length,\r\n settings = this._core.settings;\r\n\r\n if (settings.slideBy == 'page') {\r\n position = $.inArray(this.current(), this._pages);\r\n length = this._pages.length;\r\n successor ? ++position : --position;\r\n position = this._pages[((position % length) + length) % length].start;\r\n } else {\r\n position = this._core.relative(this._core.current());\r\n length = this._core.items().length;\r\n successor ? position += settings.slideBy : position -= settings.slideBy;\r\n }\r\n\r\n return position;\r\n };\r\n\r\n /**\r\n * Slides to the next item or page.\r\n * @public\r\n * @param {Number} [speed=false] - The time in milliseconds for the transition.\r\n */\r\n Navigation.prototype.next = function (speed) {\r\n $.proxy(this._overrides.to, this._core)(this.getPosition(true), speed);\r\n };\r\n\r\n /**\r\n * Slides to the previous item or page.\r\n * @public\r\n * @param {Number} [speed=false] - The time in milliseconds for the transition.\r\n */\r\n Navigation.prototype.prev = function (speed) {\r\n $.proxy(this._overrides.to, this._core)(this.getPosition(false), speed);\r\n };\r\n\r\n /**\r\n * Slides to the specified item or page.\r\n * @public\r\n * @param {Number} position - The position of the item or page.\r\n * @param {Number} [speed] - The time in milliseconds for the transition.\r\n * @param {Boolean} [standard=false] - Whether to use the standard behaviour or not.\r\n */\r\n Navigation.prototype.to = function (position, speed, standard) {\r\n var length;\r\n\r\n if (!standard && this._pages.length) {\r\n length = this._pages.length;\r\n $.proxy(this._overrides.to, this._core)(this._pages[((position % length) + length) % length].start, speed);\r\n } else {\r\n $.proxy(this._overrides.to, this._core)(position, speed);\r\n }\r\n };\r\n\r\n $.fn.owlCarousel.Constructor.Plugins.Navigation = Navigation;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * Support Plugin\r\n *\r\n * @version 2.3.4\r\n * @author Vivid Planet Software GmbH\r\n * @author Artus Kolanowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n; (function ($, window, document, undefined) {\r\n\r\n var style = $('').get(0).style,\r\n prefixes = 'Webkit Moz O ms'.split(' '),\r\n events = {\r\n transition: {\r\n end: {\r\n WebkitTransition: 'webkitTransitionEnd',\r\n MozTransition: 'transitionend',\r\n OTransition: 'oTransitionEnd',\r\n transition: 'transitionend'\r\n }\r\n },\r\n animation: {\r\n end: {\r\n WebkitAnimation: 'webkitAnimationEnd',\r\n MozAnimation: 'animationend',\r\n OAnimation: 'oAnimationEnd',\r\n animation: 'animationend'\r\n }\r\n }\r\n },\r\n tests = {\r\n csstransforms: function () {\r\n return !!test('transform');\r\n },\r\n csstransforms3d: function () {\r\n return !!test('perspective');\r\n },\r\n csstransitions: function () {\r\n return !!test('transition');\r\n },\r\n cssanimations: function () {\r\n return !!test('animation');\r\n }\r\n };\r\n\r\n function test(property, prefixed) {\r\n var result = false,\r\n upper = property.charAt(0).toUpperCase() + property.slice(1);\r\n\r\n $.each((property + ' ' + prefixes.join(upper + ' ') + upper).split(' '), function (i, property) {\r\n if (style[property] !== undefined) {\r\n result = prefixed ? property : true;\r\n return false;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n function prefixed(property) {\r\n return test(property, true);\r\n }\r\n\r\n if (tests.csstransitions()) {\r\n /* jshint -W053 */\r\n $.support.transition = new String(prefixed('transition'))\r\n $.support.transition.end = events.transition.end[$.support.transition];\r\n }\r\n\r\n if (tests.cssanimations()) {\r\n /* jshint -W053 */\r\n $.support.animation = new String(prefixed('animation'))\r\n $.support.animation.end = events.animation.end[$.support.animation];\r\n }\r\n\r\n if (tests.csstransforms()) {\r\n /* jshint -W053 */\r\n $.support.transform = new String(prefixed('transform'));\r\n $.support.transform3d = tests.csstransforms3d();\r\n }\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n","/**\r\n * Copyright (c) 2011-2014 Felix Gnass\r\n * Licensed under the MIT license\r\n * http://spin.js.org/\r\n *\r\n * Example:\r\n var opts = {\r\n lines: 12 // The number of lines to draw\r\n , length: 7 // The length of each line\r\n , width: 5 // The line thickness\r\n , radius: 10 // The radius of the inner circle\r\n , scale: 1.0 // Scales overall size of the spinner\r\n , corners: 1 // Roundness (0..1)\r\n , color: '#000' // #rgb or #rrggbb\r\n , opacity: 1/4 // Opacity of the lines\r\n , rotate: 0 // Rotation offset\r\n , direction: 1 // 1: clockwise, -1: counterclockwise\r\n , speed: 1 // Rounds per second\r\n , trail: 100 // Afterglow percentage\r\n , fps: 20 // Frames per second when using setTimeout()\r\n , zIndex: 2e9 // Use a high z-index by default\r\n , className: 'spinner' // CSS class to assign to the element\r\n , top: '50%' // center vertically\r\n , left: '50%' // center horizontally\r\n , shadow: false // Whether to render a shadow\r\n , hwaccel: false // Whether to use hardware acceleration (might be buggy)\r\n , position: 'absolute' // Element positioning\r\n }\r\n var target = document.getElementById('foo')\r\n var spinner = new Spinner(opts).spin(target)\r\n */\r\n;(function (root, factory) {\r\n\r\n /* CommonJS */\r\n if (typeof module == 'object' && module.exports) module.exports = factory()\r\n\r\n /* AMD module */\r\n else if (typeof define == 'function' && define.amd) define(factory)\r\n\r\n /* Browser global */\r\n else root.Spinner = factory()\r\n}(this, function () {\r\n \"use strict\"\r\n\r\n var prefixes = ['webkit', 'Moz', 'ms', 'O'] /* Vendor prefixes */\r\n , animations = {} /* Animation rules keyed by their name */\r\n , useCssAnimations /* Whether to use CSS animations or setTimeout */\r\n , sheet /* A stylesheet to hold the @keyframe or VML rules. */\r\n\r\n /**\r\n * Utility function to create elements. If no tag name is given,\r\n * a DIV is created. Optionally properties can be passed.\r\n */\r\n function createEl (tag, prop) {\r\n var el = document.createElement(tag || 'div')\r\n , n\r\n\r\n for (n in prop) el[n] = prop[n]\r\n return el\r\n }\r\n\r\n /**\r\n * Appends children and returns the parent.\r\n */\r\n function ins (parent /* child1, child2, ...*/) {\r\n for (var i = 1, n = arguments.length; i < n; i++) {\r\n parent.appendChild(arguments[i])\r\n }\r\n\r\n return parent\r\n }\r\n\r\n /**\r\n * Creates an opacity keyframe animation rule and returns its name.\r\n * Since most mobile Webkits have timing issues with animation-delay,\r\n * we create separate rules for each line/segment.\r\n */\r\n function addAnimation (alpha, trail, i, lines) {\r\n var name = ['opacity', trail, ~~(alpha * 100), i, lines].join('-')\r\n , start = 0.01 + i/lines * 100\r\n , z = Math.max(1 - (1-alpha) / trail * (100-start), alpha)\r\n , prefix = useCssAnimations.substring(0, useCssAnimations.indexOf('Animation')).toLowerCase()\r\n , pre = prefix && '-' + prefix + '-' || ''\r\n\r\n if (!animations[name]) {\r\n sheet.insertRule(\r\n '@' + pre + 'keyframes ' + name + '{' +\r\n '0%{opacity:' + z + '}' +\r\n start + '%{opacity:' + alpha + '}' +\r\n (start+0.01) + '%{opacity:1}' +\r\n (start+trail) % 100 + '%{opacity:' + alpha + '}' +\r\n '100%{opacity:' + z + '}' +\r\n '}', sheet.cssRules.length)\r\n\r\n animations[name] = 1\r\n }\r\n\r\n return name\r\n }\r\n\r\n /**\r\n * Tries various vendor prefixes and returns the first supported property.\r\n */\r\n function vendor (el, prop) {\r\n var s = el.style\r\n , pp\r\n , i\r\n\r\n prop = prop.charAt(0).toUpperCase() + prop.slice(1)\r\n if (s[prop] !== undefined) return prop\r\n for (i = 0; i < prefixes.length; i++) {\r\n pp = prefixes[i]+prop\r\n if (s[pp] !== undefined) return pp\r\n }\r\n }\r\n\r\n /**\r\n * Sets multiple style properties at once.\r\n */\r\n function css (el, prop) {\r\n for (var n in prop) {\r\n el.style[vendor(el, n) || n] = prop[n]\r\n }\r\n\r\n return el\r\n }\r\n\r\n /**\r\n * Fills in default values.\r\n */\r\n function merge (obj) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var def = arguments[i]\r\n for (var n in def) {\r\n if (obj[n] === undefined) obj[n] = def[n]\r\n }\r\n }\r\n return obj\r\n }\r\n\r\n /**\r\n * Returns the line color from the given string or array.\r\n */\r\n function getColor (color, idx) {\r\n return typeof color == 'string' ? color : color[idx % color.length]\r\n }\r\n\r\n // Built-in defaults\r\n\r\n var defaults = {\r\n lines: 12 // The number of lines to draw\r\n , length: 7 // The length of each line\r\n , width: 5 // The line thickness\r\n , radius: 10 // The radius of the inner circle\r\n , scale: 1.0 // Scales overall size of the spinner\r\n , corners: 1 // Roundness (0..1)\r\n , color: '#000' // #rgb or #rrggbb\r\n , opacity: 1/4 // Opacity of the lines\r\n , rotate: 0 // Rotation offset\r\n , direction: 1 // 1: clockwise, -1: counterclockwise\r\n , speed: 1 // Rounds per second\r\n , trail: 100 // Afterglow percentage\r\n , fps: 20 // Frames per second when using setTimeout()\r\n , zIndex: 2e9 // Use a high z-index by default\r\n , className: 'spinner' // CSS class to assign to the element\r\n , top: '50%' // center vertically\r\n , left: '50%' // center horizontally\r\n , shadow: false // Whether to render a shadow\r\n , hwaccel: false // Whether to use hardware acceleration (might be buggy)\r\n , position: 'absolute' // Element positioning\r\n }\r\n\r\n /** The constructor */\r\n function Spinner (o) {\r\n this.opts = merge(o || {}, Spinner.defaults, defaults)\r\n }\r\n\r\n // Global defaults that override the built-ins:\r\n Spinner.defaults = {}\r\n\r\n merge(Spinner.prototype, {\r\n /**\r\n * Adds the spinner to the given target element. If this instance is already\r\n * spinning, it is automatically removed from its previous target b calling\r\n * stop() internally.\r\n */\r\n spin: function (target) {\r\n this.stop()\r\n\r\n var self = this\r\n , o = self.opts\r\n , el = self.el = createEl(null, {className: o.className})\r\n\r\n css(el, {\r\n position: o.position\r\n , width: 0\r\n , zIndex: o.zIndex\r\n , left: o.left\r\n , top: o.top\r\n })\r\n\r\n if (target) {\r\n target.insertBefore(el, target.firstChild || null)\r\n }\r\n\r\n el.setAttribute('role', 'progressbar')\r\n self.lines(el, self.opts)\r\n\r\n if (!useCssAnimations) {\r\n // No CSS animation support, use setTimeout() instead\r\n var i = 0\r\n , start = (o.lines - 1) * (1 - o.direction) / 2\r\n , alpha\r\n , fps = o.fps\r\n , f = fps / o.speed\r\n , ostep = (1 - o.opacity) / (f * o.trail / 100)\r\n , astep = f / o.lines\r\n\r\n ;(function anim () {\r\n i++\r\n for (var j = 0; j < o.lines; j++) {\r\n alpha = Math.max(1 - (i + (o.lines - j) * astep) % f * ostep, o.opacity)\r\n\r\n self.opacity(el, j * o.direction + start, alpha, o)\r\n }\r\n self.timeout = self.el && setTimeout(anim, ~~(1000 / fps))\r\n })()\r\n }\r\n return self\r\n }\r\n\r\n /**\r\n * Stops and removes the Spinner.\r\n */\r\n , stop: function () {\r\n var el = this.el\r\n if (el) {\r\n clearTimeout(this.timeout)\r\n if (el.parentNode) el.parentNode.removeChild(el)\r\n this.el = undefined\r\n }\r\n return this\r\n }\r\n\r\n /**\r\n * Internal method that draws the individual lines. Will be overwritten\r\n * in VML fallback mode below.\r\n */\r\n , lines: function (el, o) {\r\n var i = 0\r\n , start = (o.lines - 1) * (1 - o.direction) / 2\r\n , seg\r\n\r\n function fill (color, shadow) {\r\n return css(createEl(), {\r\n position: 'absolute'\r\n , width: o.scale * (o.length + o.width) + 'px'\r\n , height: o.scale * o.width + 'px'\r\n , background: color\r\n , boxShadow: shadow\r\n , transformOrigin: 'left'\r\n , transform: 'rotate(' + ~~(360/o.lines*i + o.rotate) + 'deg) translate(' + o.scale*o.radius + 'px' + ',0)'\r\n , borderRadius: (o.corners * o.scale * o.width >> 1) + 'px'\r\n })\r\n }\r\n\r\n for (; i < o.lines; i++) {\r\n seg = css(createEl(), {\r\n position: 'absolute'\r\n , top: 1 + ~(o.scale * o.width / 2) + 'px'\r\n , transform: o.hwaccel ? 'translate3d(0,0,0)' : ''\r\n , opacity: o.opacity\r\n , animation: useCssAnimations && addAnimation(o.opacity, o.trail, start + i * o.direction, o.lines) + ' ' + 1 / o.speed + 's linear infinite'\r\n })\r\n\r\n if (o.shadow) ins(seg, css(fill('#000', '0 0 4px #000'), {top: '2px'}))\r\n ins(el, ins(seg, fill(getColor(o.color, i), '0 0 1px rgba(0,0,0,.1)')))\r\n }\r\n return el\r\n }\r\n\r\n /**\r\n * Internal method that adjusts the opacity of a single line.\r\n * Will be overwritten in VML fallback mode below.\r\n */\r\n , opacity: function (el, i, val) {\r\n if (i < el.childNodes.length) el.childNodes[i].style.opacity = val\r\n }\r\n\r\n })\r\n\r\n\r\n function initVML () {\r\n\r\n /* Utility function to create a VML tag */\r\n function vml (tag, attr) {\r\n return createEl('<' + tag + ' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"spin-vml\">', attr)\r\n }\r\n\r\n // No CSS transforms but VML support, add a CSS rule for VML elements:\r\n sheet.addRule('.spin-vml', 'behavior:url(#default#VML)')\r\n\r\n Spinner.prototype.lines = function (el, o) {\r\n var r = o.scale * (o.length + o.width)\r\n , s = o.scale * 2 * r\r\n\r\n function grp () {\r\n return css(\r\n vml('group', {\r\n coordsize: s + ' ' + s\r\n , coordorigin: -r + ' ' + -r\r\n })\r\n , { width: s, height: s }\r\n )\r\n }\r\n\r\n var margin = -(o.width + o.length) * o.scale * 2 + 'px'\r\n , g = css(grp(), {position: 'absolute', top: margin, left: margin})\r\n , i\r\n\r\n function seg (i, dx, filter) {\r\n ins(\r\n g\r\n , ins(\r\n css(grp(), {rotation: 360 / o.lines * i + 'deg', left: ~~dx})\r\n , ins(\r\n css(\r\n vml('roundrect', {arcsize: o.corners})\r\n , { width: r\r\n , height: o.scale * o.width\r\n , left: o.scale * o.radius\r\n , top: -o.scale * o.width >> 1\r\n , filter: filter\r\n }\r\n )\r\n , vml('fill', {color: getColor(o.color, i), opacity: o.opacity})\r\n , vml('stroke', {opacity: 0}) // transparent stroke to fix color bleeding upon opacity change\r\n )\r\n )\r\n )\r\n }\r\n\r\n if (o.shadow)\r\n for (i = 1; i <= o.lines; i++) {\r\n seg(i, -2, 'progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)')\r\n }\r\n\r\n for (i = 1; i <= o.lines; i++) seg(i)\r\n return ins(el, g)\r\n }\r\n\r\n Spinner.prototype.opacity = function (el, i, val, o) {\r\n var c = el.firstChild\r\n o = o.shadow && o.lines || 0\r\n if (c && i + o < c.childNodes.length) {\r\n c = c.childNodes[i + o]; c = c && c.firstChild; c = c && c.firstChild\r\n if (c) c.opacity = val\r\n }\r\n }\r\n }\r\n\r\n if (typeof document !== 'undefined') {\r\n sheet = (function () {\r\n var el = createEl('style', {type : 'text/css'})\r\n document.head.insertBefore(el, document.head.firstChild);\r\n return el.sheet || el.styleSheet\r\n }())\r\n\r\n var probe = css(createEl('group'), {behavior: 'url(#default#VML)'})\r\n\r\n if (!vendor(probe, 'transform') && probe.adj) initVML()\r\n else useCssAnimations = vendor(probe, 'animation')\r\n }\r\n\r\n return Spinner\r\n\r\n}));","/**\r\n * @license AngularJS v1.6.7\r\n * (c) 2010-2017 Google, Inc. http://angularjs.org\r\n * License: MIT\r\n */\r\n(function(window, angular) {'use strict';\r\n\r\nvar ELEMENT_NODE = 1;\r\nvar COMMENT_NODE = 8;\r\n\r\nvar ADD_CLASS_SUFFIX = '-add';\r\nvar REMOVE_CLASS_SUFFIX = '-remove';\r\nvar EVENT_CLASS_PREFIX = 'ng-';\r\nvar ACTIVE_CLASS_SUFFIX = '-active';\r\nvar PREPARE_CLASS_SUFFIX = '-prepare';\r\n\r\nvar NG_ANIMATE_CLASSNAME = 'ng-animate';\r\nvar NG_ANIMATE_CHILDREN_DATA = '$$ngAnimateChildren';\r\n\r\n// Detect proper transitionend/animationend event names.\r\nvar CSS_PREFIX = '', TRANSITION_PROP, TRANSITIONEND_EVENT, ANIMATION_PROP, ANIMATIONEND_EVENT;\r\n\r\n// If unprefixed events are not supported but webkit-prefixed are, use the latter.\r\n// Otherwise, just use W3C names, browsers not supporting them at all will just ignore them.\r\n// Note: Chrome implements `window.onwebkitanimationend` and doesn't implement `window.onanimationend`\r\n// but at the same time dispatches the `animationend` event and not `webkitAnimationEnd`.\r\n// Register both events in case `window.onanimationend` is not supported because of that,\r\n// do the same for `transitionend` as Safari is likely to exhibit similar behavior.\r\n// Also, the only modern browser that uses vendor prefixes for transitions/keyframes is webkit\r\n// therefore there is no reason to test anymore for other vendor prefixes:\r\n// http://caniuse.com/#search=transition\r\nif ((window.ontransitionend === undefined) && (window.onwebkittransitionend !== undefined)) {\r\n CSS_PREFIX = '-webkit-';\r\n TRANSITION_PROP = 'WebkitTransition';\r\n TRANSITIONEND_EVENT = 'webkitTransitionEnd transitionend';\r\n} else {\r\n TRANSITION_PROP = 'transition';\r\n TRANSITIONEND_EVENT = 'transitionend';\r\n}\r\n\r\nif ((window.onanimationend === undefined) && (window.onwebkitanimationend !== undefined)) {\r\n CSS_PREFIX = '-webkit-';\r\n ANIMATION_PROP = 'WebkitAnimation';\r\n ANIMATIONEND_EVENT = 'webkitAnimationEnd animationend';\r\n} else {\r\n ANIMATION_PROP = 'animation';\r\n ANIMATIONEND_EVENT = 'animationend';\r\n}\r\n\r\nvar DURATION_KEY = 'Duration';\r\nvar PROPERTY_KEY = 'Property';\r\nvar DELAY_KEY = 'Delay';\r\nvar TIMING_KEY = 'TimingFunction';\r\nvar ANIMATION_ITERATION_COUNT_KEY = 'IterationCount';\r\nvar ANIMATION_PLAYSTATE_KEY = 'PlayState';\r\nvar SAFE_FAST_FORWARD_DURATION_VALUE = 9999;\r\n\r\nvar ANIMATION_DELAY_PROP = ANIMATION_PROP + DELAY_KEY;\r\nvar ANIMATION_DURATION_PROP = ANIMATION_PROP + DURATION_KEY;\r\nvar TRANSITION_DELAY_PROP = TRANSITION_PROP + DELAY_KEY;\r\nvar TRANSITION_DURATION_PROP = TRANSITION_PROP + DURATION_KEY;\r\n\r\nvar ngMinErr = angular.$$minErr('ng');\r\nfunction assertArg(arg, name, reason) {\r\n if (!arg) {\r\n throw ngMinErr('areq', 'Argument \\'{0}\\' is {1}', (name || '?'), (reason || 'required'));\r\n }\r\n return arg;\r\n}\r\n\r\nfunction mergeClasses(a,b) {\r\n if (!a && !b) return '';\r\n if (!a) return b;\r\n if (!b) return a;\r\n if (isArray(a)) a = a.join(' ');\r\n if (isArray(b)) b = b.join(' ');\r\n return a + ' ' + b;\r\n}\r\n\r\nfunction packageStyles(options) {\r\n var styles = {};\r\n if (options && (options.to || options.from)) {\r\n styles.to = options.to;\r\n styles.from = options.from;\r\n }\r\n return styles;\r\n}\r\n\r\nfunction pendClasses(classes, fix, isPrefix) {\r\n var className = '';\r\n classes = isArray(classes)\r\n ? classes\r\n : classes && isString(classes) && classes.length\r\n ? classes.split(/\\s+/)\r\n : [];\r\n forEach(classes, function(klass, i) {\r\n if (klass && klass.length > 0) {\r\n className += (i > 0) ? ' ' : '';\r\n className += isPrefix ? fix + klass\r\n : klass + fix;\r\n }\r\n });\r\n return className;\r\n}\r\n\r\nfunction removeFromArray(arr, val) {\r\n var index = arr.indexOf(val);\r\n if (val >= 0) {\r\n arr.splice(index, 1);\r\n }\r\n}\r\n\r\nfunction stripCommentsFromElement(element) {\r\n if (element instanceof jqLite) {\r\n switch (element.length) {\r\n case 0:\r\n return element;\r\n\r\n case 1:\r\n // there is no point of stripping anything if the element\r\n // is the only element within the jqLite wrapper.\r\n // (it's important that we retain the element instance.)\r\n if (element[0].nodeType === ELEMENT_NODE) {\r\n return element;\r\n }\r\n break;\r\n\r\n default:\r\n return jqLite(extractElementNode(element));\r\n }\r\n }\r\n\r\n if (element.nodeType === ELEMENT_NODE) {\r\n return jqLite(element);\r\n }\r\n}\r\n\r\nfunction extractElementNode(element) {\r\n if (!element[0]) return element;\r\n for (var i = 0; i < element.length; i++) {\r\n var elm = element[i];\r\n if (elm.nodeType === ELEMENT_NODE) {\r\n return elm;\r\n }\r\n }\r\n}\r\n\r\nfunction $$addClass($$jqLite, element, className) {\r\n forEach(element, function(elm) {\r\n $$jqLite.addClass(elm, className);\r\n });\r\n}\r\n\r\nfunction $$removeClass($$jqLite, element, className) {\r\n forEach(element, function(elm) {\r\n $$jqLite.removeClass(elm, className);\r\n });\r\n}\r\n\r\nfunction applyAnimationClassesFactory($$jqLite) {\r\n return function(element, options) {\r\n if (options.addClass) {\r\n $$addClass($$jqLite, element, options.addClass);\r\n options.addClass = null;\r\n }\r\n if (options.removeClass) {\r\n $$removeClass($$jqLite, element, options.removeClass);\r\n options.removeClass = null;\r\n }\r\n };\r\n}\r\n\r\nfunction prepareAnimationOptions(options) {\r\n options = options || {};\r\n if (!options.$$prepared) {\r\n var domOperation = options.domOperation || noop;\r\n options.domOperation = function() {\r\n options.$$domOperationFired = true;\r\n domOperation();\r\n domOperation = noop;\r\n };\r\n options.$$prepared = true;\r\n }\r\n return options;\r\n}\r\n\r\nfunction applyAnimationStyles(element, options) {\r\n applyAnimationFromStyles(element, options);\r\n applyAnimationToStyles(element, options);\r\n}\r\n\r\nfunction applyAnimationFromStyles(element, options) {\r\n if (options.from) {\r\n element.css(options.from);\r\n options.from = null;\r\n }\r\n}\r\n\r\nfunction applyAnimationToStyles(element, options) {\r\n if (options.to) {\r\n element.css(options.to);\r\n options.to = null;\r\n }\r\n}\r\n\r\nfunction mergeAnimationDetails(element, oldAnimation, newAnimation) {\r\n var target = oldAnimation.options || {};\r\n var newOptions = newAnimation.options || {};\r\n\r\n var toAdd = (target.addClass || '') + ' ' + (newOptions.addClass || '');\r\n var toRemove = (target.removeClass || '') + ' ' + (newOptions.removeClass || '');\r\n var classes = resolveElementClasses(element.attr('class'), toAdd, toRemove);\r\n\r\n if (newOptions.preparationClasses) {\r\n target.preparationClasses = concatWithSpace(newOptions.preparationClasses, target.preparationClasses);\r\n delete newOptions.preparationClasses;\r\n }\r\n\r\n // noop is basically when there is no callback; otherwise something has been set\r\n var realDomOperation = target.domOperation !== noop ? target.domOperation : null;\r\n\r\n extend(target, newOptions);\r\n\r\n // TODO(matsko or sreeramu): proper fix is to maintain all animation callback in array and call at last,but now only leave has the callback so no issue with this.\r\n if (realDomOperation) {\r\n target.domOperation = realDomOperation;\r\n }\r\n\r\n if (classes.addClass) {\r\n target.addClass = classes.addClass;\r\n } else {\r\n target.addClass = null;\r\n }\r\n\r\n if (classes.removeClass) {\r\n target.removeClass = classes.removeClass;\r\n } else {\r\n target.removeClass = null;\r\n }\r\n\r\n oldAnimation.addClass = target.addClass;\r\n oldAnimation.removeClass = target.removeClass;\r\n\r\n return target;\r\n}\r\n\r\nfunction resolveElementClasses(existing, toAdd, toRemove) {\r\n var ADD_CLASS = 1;\r\n var REMOVE_CLASS = -1;\r\n\r\n var flags = {};\r\n existing = splitClassesToLookup(existing);\r\n\r\n toAdd = splitClassesToLookup(toAdd);\r\n forEach(toAdd, function(value, key) {\r\n flags[key] = ADD_CLASS;\r\n });\r\n\r\n toRemove = splitClassesToLookup(toRemove);\r\n forEach(toRemove, function(value, key) {\r\n flags[key] = flags[key] === ADD_CLASS ? null : REMOVE_CLASS;\r\n });\r\n\r\n var classes = {\r\n addClass: '',\r\n removeClass: ''\r\n };\r\n\r\n forEach(flags, function(val, klass) {\r\n var prop, allow;\r\n if (val === ADD_CLASS) {\r\n prop = 'addClass';\r\n allow = !existing[klass] || existing[klass + REMOVE_CLASS_SUFFIX];\r\n } else if (val === REMOVE_CLASS) {\r\n prop = 'removeClass';\r\n allow = existing[klass] || existing[klass + ADD_CLASS_SUFFIX];\r\n }\r\n if (allow) {\r\n if (classes[prop].length) {\r\n classes[prop] += ' ';\r\n }\r\n classes[prop] += klass;\r\n }\r\n });\r\n\r\n function splitClassesToLookup(classes) {\r\n if (isString(classes)) {\r\n classes = classes.split(' ');\r\n }\r\n\r\n var obj = {};\r\n forEach(classes, function(klass) {\r\n // sometimes the split leaves empty string values\r\n // incase extra spaces were applied to the options\r\n if (klass.length) {\r\n obj[klass] = true;\r\n }\r\n });\r\n return obj;\r\n }\r\n\r\n return classes;\r\n}\r\n\r\nfunction getDomNode(element) {\r\n return (element instanceof jqLite) ? element[0] : element;\r\n}\r\n\r\nfunction applyGeneratedPreparationClasses(element, event, options) {\r\n var classes = '';\r\n if (event) {\r\n classes = pendClasses(event, EVENT_CLASS_PREFIX, true);\r\n }\r\n if (options.addClass) {\r\n classes = concatWithSpace(classes, pendClasses(options.addClass, ADD_CLASS_SUFFIX));\r\n }\r\n if (options.removeClass) {\r\n classes = concatWithSpace(classes, pendClasses(options.removeClass, REMOVE_CLASS_SUFFIX));\r\n }\r\n if (classes.length) {\r\n options.preparationClasses = classes;\r\n element.addClass(classes);\r\n }\r\n}\r\n\r\nfunction clearGeneratedClasses(element, options) {\r\n if (options.preparationClasses) {\r\n element.removeClass(options.preparationClasses);\r\n options.preparationClasses = null;\r\n }\r\n if (options.activeClasses) {\r\n element.removeClass(options.activeClasses);\r\n options.activeClasses = null;\r\n }\r\n}\r\n\r\nfunction blockTransitions(node, duration) {\r\n // we use a negative delay value since it performs blocking\r\n // yet it doesn't kill any existing transitions running on the\r\n // same element which makes this safe for class-based animations\r\n var value = duration ? '-' + duration + 's' : '';\r\n applyInlineStyle(node, [TRANSITION_DELAY_PROP, value]);\r\n return [TRANSITION_DELAY_PROP, value];\r\n}\r\n\r\nfunction blockKeyframeAnimations(node, applyBlock) {\r\n var value = applyBlock ? 'paused' : '';\r\n var key = ANIMATION_PROP + ANIMATION_PLAYSTATE_KEY;\r\n applyInlineStyle(node, [key, value]);\r\n return [key, value];\r\n}\r\n\r\nfunction applyInlineStyle(node, styleTuple) {\r\n var prop = styleTuple[0];\r\n var value = styleTuple[1];\r\n node.style[prop] = value;\r\n}\r\n\r\nfunction concatWithSpace(a,b) {\r\n if (!a) return b;\r\n if (!b) return a;\r\n return a + ' ' + b;\r\n}\r\n\r\nvar $$rAFSchedulerFactory = ['$$rAF', function($$rAF) {\r\n var queue, cancelFn;\r\n\r\n function scheduler(tasks) {\r\n // we make a copy since RAFScheduler mutates the state\r\n // of the passed in array variable and this would be difficult\r\n // to track down on the outside code\r\n queue = queue.concat(tasks);\r\n nextTick();\r\n }\r\n\r\n queue = scheduler.queue = [];\r\n\r\n /* waitUntilQuiet does two things:\r\n * 1. It will run the FINAL `fn` value only when an uncanceled RAF has passed through\r\n * 2. It will delay the next wave of tasks from running until the quiet `fn` has run.\r\n *\r\n * The motivation here is that animation code can request more time from the scheduler\r\n * before the next wave runs. This allows for certain DOM properties such as classes to\r\n * be resolved in time for the next animation to run.\r\n */\r\n scheduler.waitUntilQuiet = function(fn) {\r\n if (cancelFn) cancelFn();\r\n\r\n cancelFn = $$rAF(function() {\r\n cancelFn = null;\r\n fn();\r\n nextTick();\r\n });\r\n };\r\n\r\n return scheduler;\r\n\r\n function nextTick() {\r\n if (!queue.length) return;\r\n\r\n var items = queue.shift();\r\n for (var i = 0; i < items.length; i++) {\r\n items[i]();\r\n }\r\n\r\n if (!cancelFn) {\r\n $$rAF(function() {\r\n if (!cancelFn) nextTick();\r\n });\r\n }\r\n }\r\n}];\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name ngAnimateChildren\r\n * @restrict AE\r\n * @element ANY\r\n *\r\n * @description\r\n *\r\n * ngAnimateChildren allows you to specify that children of this element should animate even if any\r\n * of the children's parents are currently animating. By default, when an element has an active `enter`, `leave`, or `move`\r\n * (structural) animation, child elements that also have an active structural animation are not animated.\r\n *\r\n * Note that even if `ngAnimateChildren` is set, no child animations will run when the parent element is removed from the DOM (`leave` animation).\r\n *\r\n *\r\n * @param {string} ngAnimateChildren If the value is empty, `true` or `on`,\r\n * then child animations are allowed. If the value is `false`, child animations are not allowed.\r\n *\r\n * @example\r\n * \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n List of items:\r\n
    Item {{item}}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n .container.ng-enter,\r\n .container.ng-leave {\r\n transition: all ease 1.5s;\r\n }\r\n\r\n .container.ng-enter,\r\n .container.ng-leave-active {\r\n opacity: 0;\r\n }\r\n\r\n .container.ng-leave,\r\n .container.ng-enter-active {\r\n opacity: 1;\r\n }\r\n\r\n .item {\r\n background: firebrick;\r\n color: #FFF;\r\n margin-bottom: 10px;\r\n }\r\n\r\n .item.ng-enter,\r\n .item.ng-leave {\r\n transition: transform 1.5s ease;\r\n }\r\n\r\n .item.ng-enter {\r\n transform: translateX(50px);\r\n }\r\n\r\n .item.ng-enter-active {\r\n transform: translateX(0);\r\n }\r\n \r\n \r\n angular.module('ngAnimateChildren', ['ngAnimate'])\r\n .controller('MainController', function MainController() {\r\n this.animateChildren = false;\r\n this.enterElement = false;\r\n });\r\n \r\n
    \r\n */\r\nvar $$AnimateChildrenDirective = ['$interpolate', function($interpolate) {\r\n return {\r\n link: function(scope, element, attrs) {\r\n var val = attrs.ngAnimateChildren;\r\n if (isString(val) && val.length === 0) { //empty attribute\r\n element.data(NG_ANIMATE_CHILDREN_DATA, true);\r\n } else {\r\n // Interpolate and set the value, so that it is available to\r\n // animations that run right after compilation\r\n setData($interpolate(val)(scope));\r\n attrs.$observe('ngAnimateChildren', setData);\r\n }\r\n\r\n function setData(value) {\r\n value = value === 'on' || value === 'true';\r\n element.data(NG_ANIMATE_CHILDREN_DATA, value);\r\n }\r\n }\r\n };\r\n}];\r\n\r\n/* exported $AnimateCssProvider */\r\n\r\nvar ANIMATE_TIMER_KEY = '$$animateCss';\r\n\r\n/**\r\n * @ngdoc service\r\n * @name $animateCss\r\n * @kind object\r\n *\r\n * @description\r\n * The `$animateCss` service is a useful utility to trigger customized CSS-based transitions/keyframes\r\n * from a JavaScript-based animation or directly from a directive. The purpose of `$animateCss` is NOT\r\n * to side-step how `$animate` and ngAnimate work, but the goal is to allow pre-existing animations or\r\n * directives to create more complex animations that can be purely driven using CSS code.\r\n *\r\n * Note that only browsers that support CSS transitions and/or keyframe animations are capable of\r\n * rendering animations triggered via `$animateCss` (bad news for IE9 and lower).\r\n *\r\n * ## General Use\r\n * Once again, `$animateCss` is designed to be used inside of a registered JavaScript animation that\r\n * is powered by ngAnimate. It is possible to use `$animateCss` directly inside of a directive, however,\r\n * any automatic control over cancelling animations and/or preventing animations from being run on\r\n * child elements will not be handled by Angular. For this to work as expected, please use `$animate` to\r\n * trigger the animation and then setup a JavaScript animation that injects `$animateCss` to trigger\r\n * the CSS animation.\r\n *\r\n * The example below shows how we can create a folding animation on an element using `ng-if`:\r\n *\r\n * ```html\r\n * \r\n *
    \r\n * This element will go BOOM\r\n *
    \r\n * \r\n * ```\r\n *\r\n * Now we create the **JavaScript animation** that will trigger the CSS transition:\r\n *\r\n * ```js\r\n * ngModule.animation('.fold-animation', ['$animateCss', function($animateCss) {\r\n * return {\r\n * enter: function(element, doneFn) {\r\n * var height = element[0].offsetHeight;\r\n * return $animateCss(element, {\r\n * from: { height:'0px' },\r\n * to: { height:height + 'px' },\r\n * duration: 1 // one second\r\n * });\r\n * }\r\n * }\r\n * }]);\r\n * ```\r\n *\r\n * ## More Advanced Uses\r\n *\r\n * `$animateCss` is the underlying code that ngAnimate uses to power **CSS-based animations** behind the scenes. Therefore CSS hooks\r\n * like `.ng-EVENT`, `.ng-EVENT-active`, `.ng-EVENT-stagger` are all features that can be triggered using `$animateCss` via JavaScript code.\r\n *\r\n * This also means that just about any combination of adding classes, removing classes, setting styles, dynamically setting a keyframe animation,\r\n * applying a hardcoded duration or delay value, changing the animation easing or applying a stagger animation are all options that work with\r\n * `$animateCss`. The service itself is smart enough to figure out the combination of options and examine the element styling properties in order\r\n * to provide a working animation that will run in CSS.\r\n *\r\n * The example below showcases a more advanced version of the `.fold-animation` from the example above:\r\n *\r\n * ```js\r\n * ngModule.animation('.fold-animation', ['$animateCss', function($animateCss) {\r\n * return {\r\n * enter: function(element, doneFn) {\r\n * var height = element[0].offsetHeight;\r\n * return $animateCss(element, {\r\n * addClass: 'red large-text pulse-twice',\r\n * easing: 'ease-out',\r\n * from: { height:'0px' },\r\n * to: { height:height + 'px' },\r\n * duration: 1 // one second\r\n * });\r\n * }\r\n * }\r\n * }]);\r\n * ```\r\n *\r\n * Since we're adding/removing CSS classes then the CSS transition will also pick those up:\r\n *\r\n * ```css\r\n * /* since a hardcoded duration value of 1 was provided in the JavaScript animation code,\r\n * the CSS classes below will be transitioned despite them being defined as regular CSS classes */\r\n * .red { background:red; }\r\n * .large-text { font-size:20px; }\r\n *\r\n * /* we can also use a keyframe animation and $animateCss will make it work alongside the transition */\r\n * .pulse-twice {\r\n * animation: 0.5s pulse linear 2;\r\n * -webkit-animation: 0.5s pulse linear 2;\r\n * }\r\n *\r\n * @keyframes pulse {\r\n * from { transform: scale(0.5); }\r\n * to { transform: scale(1.5); }\r\n * }\r\n *\r\n * @-webkit-keyframes pulse {\r\n * from { -webkit-transform: scale(0.5); }\r\n * to { -webkit-transform: scale(1.5); }\r\n * }\r\n * ```\r\n *\r\n * Given this complex combination of CSS classes, styles and options, `$animateCss` will figure everything out and make the animation happen.\r\n *\r\n * ## How the Options are handled\r\n *\r\n * `$animateCss` is very versatile and intelligent when it comes to figuring out what configurations to apply to the element to ensure the animation\r\n * works with the options provided. Say for example we were adding a class that contained a keyframe value and we wanted to also animate some inline\r\n * styles using the `from` and `to` properties.\r\n *\r\n * ```js\r\n * var animator = $animateCss(element, {\r\n * from: { background:'red' },\r\n * to: { background:'blue' }\r\n * });\r\n * animator.start();\r\n * ```\r\n *\r\n * ```css\r\n * .rotating-animation {\r\n * animation:0.5s rotate linear;\r\n * -webkit-animation:0.5s rotate linear;\r\n * }\r\n *\r\n * @keyframes rotate {\r\n * from { transform: rotate(0deg); }\r\n * to { transform: rotate(360deg); }\r\n * }\r\n *\r\n * @-webkit-keyframes rotate {\r\n * from { -webkit-transform: rotate(0deg); }\r\n * to { -webkit-transform: rotate(360deg); }\r\n * }\r\n * ```\r\n *\r\n * The missing pieces here are that we do not have a transition set (within the CSS code nor within the `$animateCss` options) and the duration of the animation is\r\n * going to be detected from what the keyframe styles on the CSS class are. In this event, `$animateCss` will automatically create an inline transition\r\n * style matching the duration detected from the keyframe style (which is present in the CSS class that is being added) and then prepare both the transition\r\n * and keyframe animations to run in parallel on the element. Then when the animation is underway the provided `from` and `to` CSS styles will be applied\r\n * and spread across the transition and keyframe animation.\r\n *\r\n * ## What is returned\r\n *\r\n * `$animateCss` works in two stages: a preparation phase and an animation phase. Therefore when `$animateCss` is first called it will NOT actually\r\n * start the animation. All that is going on here is that the element is being prepared for the animation (which means that the generated CSS classes are\r\n * added and removed on the element). Once `$animateCss` is called it will return an object with the following properties:\r\n *\r\n * ```js\r\n * var animator = $animateCss(element, { ... });\r\n * ```\r\n *\r\n * Now what do the contents of our `animator` variable look like:\r\n *\r\n * ```js\r\n * {\r\n * // starts the animation\r\n * start: Function,\r\n *\r\n * // ends (aborts) the animation\r\n * end: Function\r\n * }\r\n * ```\r\n *\r\n * To actually start the animation we need to run `animation.start()` which will then return a promise that we can hook into to detect when the animation ends.\r\n * If we choose not to run the animation then we MUST run `animation.end()` to perform a cleanup on the element (since some CSS classes and styles may have been\r\n * applied to the element during the preparation phase). Note that all other properties such as duration, delay, transitions and keyframes are just properties\r\n * and that changing them will not reconfigure the parameters of the animation.\r\n *\r\n * ### runner.done() vs runner.then()\r\n * It is documented that `animation.start()` will return a promise object and this is true, however, there is also an additional method available on the\r\n * runner called `.done(callbackFn)`. The done method works the same as `.finally(callbackFn)`, however, it does **not trigger a digest to occur**.\r\n * Therefore, for performance reasons, it's always best to use `runner.done(callback)` instead of `runner.then()`, `runner.catch()` or `runner.finally()`\r\n * unless you really need a digest to kick off afterwards.\r\n *\r\n * Keep in mind that, to make this easier, ngAnimate has tweaked the JS animations API to recognize when a runner instance is returned from $animateCss\r\n * (so there is no need to call `runner.done(doneFn)` inside of your JavaScript animation code).\r\n * Check the {@link ngAnimate.$animateCss#usage animation code above} to see how this works.\r\n *\r\n * @param {DOMElement} element the element that will be animated\r\n * @param {object} options the animation-related options that will be applied during the animation\r\n *\r\n * * `event` - The DOM event (e.g. enter, leave, move). When used, a generated CSS class of `ng-EVENT` and `ng-EVENT-active` will be applied\r\n * to the element during the animation. Multiple events can be provided when spaces are used as a separator. (Note that this will not perform any DOM operation.)\r\n * * `structural` - Indicates that the `ng-` prefix will be added to the event class. Setting to `false` or omitting will turn `ng-EVENT` and\r\n * `ng-EVENT-active` in `EVENT` and `EVENT-active`. Unused if `event` is omitted.\r\n * * `easing` - The CSS easing value that will be applied to the transition or keyframe animation (or both).\r\n * * `transitionStyle` - The raw CSS transition style that will be used (e.g. `1s linear all`).\r\n * * `keyframeStyle` - The raw CSS keyframe animation style that will be used (e.g. `1s my_animation linear`).\r\n * * `from` - The starting CSS styles (a key/value object) that will be applied at the start of the animation.\r\n * * `to` - The ending CSS styles (a key/value object) that will be applied across the animation via a CSS transition.\r\n * * `addClass` - A space separated list of CSS classes that will be added to the element and spread across the animation.\r\n * * `removeClass` - A space separated list of CSS classes that will be removed from the element and spread across the animation.\r\n * * `duration` - A number value representing the total duration of the transition and/or keyframe (note that a value of 1 is 1000ms). If a value of `0`\r\n * is provided then the animation will be skipped entirely.\r\n * * `delay` - A number value representing the total delay of the transition and/or keyframe (note that a value of 1 is 1000ms). If a value of `true` is\r\n * used then whatever delay value is detected from the CSS classes will be mirrored on the elements styles (e.g. by setting delay true then the style value\r\n * of the element will be `transition-delay: DETECTED_VALUE`). Using `true` is useful when you want the CSS classes and inline styles to all share the same\r\n * CSS delay value.\r\n * * `stagger` - A numeric time value representing the delay between successively animated elements\r\n * ({@link ngAnimate#css-staggering-animations Click here to learn how CSS-based staggering works in ngAnimate.})\r\n * * `staggerIndex` - The numeric index representing the stagger item (e.g. a value of 5 is equal to the sixth item in the stagger; therefore when a\r\n * `stagger` option value of `0.1` is used then there will be a stagger delay of `600ms`)\r\n * * `applyClassesEarly` - Whether or not the classes being added or removed will be used when detecting the animation. This is set by `$animate` when enter/leave/move animations are fired to ensure that the CSS classes are resolved in time. (Note that this will prevent any transitions from occurring on the classes being added and removed.)\r\n * * `cleanupStyles` - Whether or not the provided `from` and `to` styles will be removed once\r\n * the animation is closed. This is useful for when the styles are used purely for the sake of\r\n * the animation and do not have a lasting visual effect on the element (e.g. a collapse and open animation).\r\n * By default this value is set to `false`.\r\n *\r\n * @return {object} an object with start and end methods and details about the animation.\r\n *\r\n * * `start` - The method to start the animation. This will return a `Promise` when called.\r\n * * `end` - This method will cancel the animation and remove all applied CSS classes and styles.\r\n */\r\nvar ONE_SECOND = 1000;\r\n\r\nvar ELAPSED_TIME_MAX_DECIMAL_PLACES = 3;\r\nvar CLOSING_TIME_BUFFER = 1.5;\r\n\r\nvar DETECT_CSS_PROPERTIES = {\r\n transitionDuration: TRANSITION_DURATION_PROP,\r\n transitionDelay: TRANSITION_DELAY_PROP,\r\n transitionProperty: TRANSITION_PROP + PROPERTY_KEY,\r\n animationDuration: ANIMATION_DURATION_PROP,\r\n animationDelay: ANIMATION_DELAY_PROP,\r\n animationIterationCount: ANIMATION_PROP + ANIMATION_ITERATION_COUNT_KEY\r\n};\r\n\r\nvar DETECT_STAGGER_CSS_PROPERTIES = {\r\n transitionDuration: TRANSITION_DURATION_PROP,\r\n transitionDelay: TRANSITION_DELAY_PROP,\r\n animationDuration: ANIMATION_DURATION_PROP,\r\n animationDelay: ANIMATION_DELAY_PROP\r\n};\r\n\r\nfunction getCssKeyframeDurationStyle(duration) {\r\n return [ANIMATION_DURATION_PROP, duration + 's'];\r\n}\r\n\r\nfunction getCssDelayStyle(delay, isKeyframeAnimation) {\r\n var prop = isKeyframeAnimation ? ANIMATION_DELAY_PROP : TRANSITION_DELAY_PROP;\r\n return [prop, delay + 's'];\r\n}\r\n\r\nfunction computeCssStyles($window, element, properties) {\r\n var styles = Object.create(null);\r\n var detectedStyles = $window.getComputedStyle(element) || {};\r\n forEach(properties, function(formalStyleName, actualStyleName) {\r\n var val = detectedStyles[formalStyleName];\r\n if (val) {\r\n var c = val.charAt(0);\r\n\r\n // only numerical-based values have a negative sign or digit as the first value\r\n if (c === '-' || c === '+' || c >= 0) {\r\n val = parseMaxTime(val);\r\n }\r\n\r\n // by setting this to null in the event that the delay is not set or is set directly as 0\r\n // then we can still allow for negative values to be used later on and not mistake this\r\n // value for being greater than any other negative value.\r\n if (val === 0) {\r\n val = null;\r\n }\r\n styles[actualStyleName] = val;\r\n }\r\n });\r\n\r\n return styles;\r\n}\r\n\r\nfunction parseMaxTime(str) {\r\n var maxValue = 0;\r\n var values = str.split(/\\s*,\\s*/);\r\n forEach(values, function(value) {\r\n // it's always safe to consider only second values and omit `ms` values since\r\n // getComputedStyle will always handle the conversion for us\r\n if (value.charAt(value.length - 1) === 's') {\r\n value = value.substring(0, value.length - 1);\r\n }\r\n value = parseFloat(value) || 0;\r\n maxValue = maxValue ? Math.max(value, maxValue) : value;\r\n });\r\n return maxValue;\r\n}\r\n\r\nfunction truthyTimingValue(val) {\r\n return val === 0 || val != null;\r\n}\r\n\r\nfunction getCssTransitionDurationStyle(duration, applyOnlyDuration) {\r\n var style = TRANSITION_PROP;\r\n var value = duration + 's';\r\n if (applyOnlyDuration) {\r\n style += DURATION_KEY;\r\n } else {\r\n value += ' linear all';\r\n }\r\n return [style, value];\r\n}\r\n\r\nfunction createLocalCacheLookup() {\r\n var cache = Object.create(null);\r\n return {\r\n flush: function() {\r\n cache = Object.create(null);\r\n },\r\n\r\n count: function(key) {\r\n var entry = cache[key];\r\n return entry ? entry.total : 0;\r\n },\r\n\r\n get: function(key) {\r\n var entry = cache[key];\r\n return entry && entry.value;\r\n },\r\n\r\n put: function(key, value) {\r\n if (!cache[key]) {\r\n cache[key] = { total: 1, value: value };\r\n } else {\r\n cache[key].total++;\r\n }\r\n }\r\n };\r\n}\r\n\r\n// we do not reassign an already present style value since\r\n// if we detect the style property value again we may be\r\n// detecting styles that were added via the `from` styles.\r\n// We make use of `isDefined` here since an empty string\r\n// or null value (which is what getPropertyValue will return\r\n// for a non-existing style) will still be marked as a valid\r\n// value for the style (a falsy value implies that the style\r\n// is to be removed at the end of the animation). If we had a simple\r\n// \"OR\" statement then it would not be enough to catch that.\r\nfunction registerRestorableStyles(backup, node, properties) {\r\n forEach(properties, function(prop) {\r\n backup[prop] = isDefined(backup[prop])\r\n ? backup[prop]\r\n : node.style.getPropertyValue(prop);\r\n });\r\n}\r\n\r\nvar $AnimateCssProvider = ['$animateProvider', /** @this */ function($animateProvider) {\r\n var gcsLookup = createLocalCacheLookup();\r\n var gcsStaggerLookup = createLocalCacheLookup();\r\n\r\n this.$get = ['$window', '$$jqLite', '$$AnimateRunner', '$timeout',\r\n '$$forceReflow', '$sniffer', '$$rAFScheduler', '$$animateQueue',\r\n function($window, $$jqLite, $$AnimateRunner, $timeout,\r\n $$forceReflow, $sniffer, $$rAFScheduler, $$animateQueue) {\r\n\r\n var applyAnimationClasses = applyAnimationClassesFactory($$jqLite);\r\n\r\n var parentCounter = 0;\r\n function gcsHashFn(node, extraClasses) {\r\n var KEY = '$$ngAnimateParentKey';\r\n var parentNode = node.parentNode;\r\n var parentID = parentNode[KEY] || (parentNode[KEY] = ++parentCounter);\r\n return parentID + '-' + node.getAttribute('class') + '-' + extraClasses;\r\n }\r\n\r\n function computeCachedCssStyles(node, className, cacheKey, properties) {\r\n var timings = gcsLookup.get(cacheKey);\r\n\r\n if (!timings) {\r\n timings = computeCssStyles($window, node, properties);\r\n if (timings.animationIterationCount === 'infinite') {\r\n timings.animationIterationCount = 1;\r\n }\r\n }\r\n\r\n // we keep putting this in multiple times even though the value and the cacheKey are the same\r\n // because we're keeping an internal tally of how many duplicate animations are detected.\r\n gcsLookup.put(cacheKey, timings);\r\n return timings;\r\n }\r\n\r\n function computeCachedCssStaggerStyles(node, className, cacheKey, properties) {\r\n var stagger;\r\n\r\n // if we have one or more existing matches of matching elements\r\n // containing the same parent + CSS styles (which is how cacheKey works)\r\n // then staggering is possible\r\n if (gcsLookup.count(cacheKey) > 0) {\r\n stagger = gcsStaggerLookup.get(cacheKey);\r\n\r\n if (!stagger) {\r\n var staggerClassName = pendClasses(className, '-stagger');\r\n\r\n $$jqLite.addClass(node, staggerClassName);\r\n\r\n stagger = computeCssStyles($window, node, properties);\r\n\r\n // force the conversion of a null value to zero incase not set\r\n stagger.animationDuration = Math.max(stagger.animationDuration, 0);\r\n stagger.transitionDuration = Math.max(stagger.transitionDuration, 0);\r\n\r\n $$jqLite.removeClass(node, staggerClassName);\r\n\r\n gcsStaggerLookup.put(cacheKey, stagger);\r\n }\r\n }\r\n\r\n return stagger || {};\r\n }\r\n\r\n var rafWaitQueue = [];\r\n function waitUntilQuiet(callback) {\r\n rafWaitQueue.push(callback);\r\n $$rAFScheduler.waitUntilQuiet(function() {\r\n gcsLookup.flush();\r\n gcsStaggerLookup.flush();\r\n\r\n // DO NOT REMOVE THIS LINE OR REFACTOR OUT THE `pageWidth` variable.\r\n // PLEASE EXAMINE THE `$$forceReflow` service to understand why.\r\n var pageWidth = $$forceReflow();\r\n\r\n // we use a for loop to ensure that if the queue is changed\r\n // during this looping then it will consider new requests\r\n for (var i = 0; i < rafWaitQueue.length; i++) {\r\n rafWaitQueue[i](pageWidth);\r\n }\r\n rafWaitQueue.length = 0;\r\n });\r\n }\r\n\r\n function computeTimings(node, className, cacheKey) {\r\n var timings = computeCachedCssStyles(node, className, cacheKey, DETECT_CSS_PROPERTIES);\r\n var aD = timings.animationDelay;\r\n var tD = timings.transitionDelay;\r\n timings.maxDelay = aD && tD\r\n ? Math.max(aD, tD)\r\n : (aD || tD);\r\n timings.maxDuration = Math.max(\r\n timings.animationDuration * timings.animationIterationCount,\r\n timings.transitionDuration);\r\n\r\n return timings;\r\n }\r\n\r\n return function init(element, initialOptions) {\r\n // all of the animation functions should create\r\n // a copy of the options data, however, if a\r\n // parent service has already created a copy then\r\n // we should stick to using that\r\n var options = initialOptions || {};\r\n if (!options.$$prepared) {\r\n options = prepareAnimationOptions(copy(options));\r\n }\r\n\r\n var restoreStyles = {};\r\n var node = getDomNode(element);\r\n if (!node\r\n || !node.parentNode\r\n || !$$animateQueue.enabled()) {\r\n return closeAndReturnNoopAnimator();\r\n }\r\n\r\n var temporaryStyles = [];\r\n var classes = element.attr('class');\r\n var styles = packageStyles(options);\r\n var animationClosed;\r\n var animationPaused;\r\n var animationCompleted;\r\n var runner;\r\n var runnerHost;\r\n var maxDelay;\r\n var maxDelayTime;\r\n var maxDuration;\r\n var maxDurationTime;\r\n var startTime;\r\n var events = [];\r\n\r\n if (options.duration === 0 || (!$sniffer.animations && !$sniffer.transitions)) {\r\n return closeAndReturnNoopAnimator();\r\n }\r\n\r\n var method = options.event && isArray(options.event)\r\n ? options.event.join(' ')\r\n : options.event;\r\n\r\n var isStructural = method && options.structural;\r\n var structuralClassName = '';\r\n var addRemoveClassName = '';\r\n\r\n if (isStructural) {\r\n structuralClassName = pendClasses(method, EVENT_CLASS_PREFIX, true);\r\n } else if (method) {\r\n structuralClassName = method;\r\n }\r\n\r\n if (options.addClass) {\r\n addRemoveClassName += pendClasses(options.addClass, ADD_CLASS_SUFFIX);\r\n }\r\n\r\n if (options.removeClass) {\r\n if (addRemoveClassName.length) {\r\n addRemoveClassName += ' ';\r\n }\r\n addRemoveClassName += pendClasses(options.removeClass, REMOVE_CLASS_SUFFIX);\r\n }\r\n\r\n // there may be a situation where a structural animation is combined together\r\n // with CSS classes that need to resolve before the animation is computed.\r\n // However this means that there is no explicit CSS code to block the animation\r\n // from happening (by setting 0s none in the class name). If this is the case\r\n // we need to apply the classes before the first rAF so we know to continue if\r\n // there actually is a detected transition or keyframe animation\r\n if (options.applyClassesEarly && addRemoveClassName.length) {\r\n applyAnimationClasses(element, options);\r\n }\r\n\r\n var preparationClasses = [structuralClassName, addRemoveClassName].join(' ').trim();\r\n var fullClassName = classes + ' ' + preparationClasses;\r\n var activeClasses = pendClasses(preparationClasses, ACTIVE_CLASS_SUFFIX);\r\n var hasToStyles = styles.to && Object.keys(styles.to).length > 0;\r\n var containsKeyframeAnimation = (options.keyframeStyle || '').length > 0;\r\n\r\n // there is no way we can trigger an animation if no styles and\r\n // no classes are being applied which would then trigger a transition,\r\n // unless there a is raw keyframe value that is applied to the element.\r\n if (!containsKeyframeAnimation\r\n && !hasToStyles\r\n && !preparationClasses) {\r\n return closeAndReturnNoopAnimator();\r\n }\r\n\r\n var cacheKey, stagger;\r\n if (options.stagger > 0) {\r\n var staggerVal = parseFloat(options.stagger);\r\n stagger = {\r\n transitionDelay: staggerVal,\r\n animationDelay: staggerVal,\r\n transitionDuration: 0,\r\n animationDuration: 0\r\n };\r\n } else {\r\n cacheKey = gcsHashFn(node, fullClassName);\r\n stagger = computeCachedCssStaggerStyles(node, preparationClasses, cacheKey, DETECT_STAGGER_CSS_PROPERTIES);\r\n }\r\n\r\n if (!options.$$skipPreparationClasses) {\r\n $$jqLite.addClass(element, preparationClasses);\r\n }\r\n\r\n var applyOnlyDuration;\r\n\r\n if (options.transitionStyle) {\r\n var transitionStyle = [TRANSITION_PROP, options.transitionStyle];\r\n applyInlineStyle(node, transitionStyle);\r\n temporaryStyles.push(transitionStyle);\r\n }\r\n\r\n if (options.duration >= 0) {\r\n applyOnlyDuration = node.style[TRANSITION_PROP].length > 0;\r\n var durationStyle = getCssTransitionDurationStyle(options.duration, applyOnlyDuration);\r\n\r\n // we set the duration so that it will be picked up by getComputedStyle later\r\n applyInlineStyle(node, durationStyle);\r\n temporaryStyles.push(durationStyle);\r\n }\r\n\r\n if (options.keyframeStyle) {\r\n var keyframeStyle = [ANIMATION_PROP, options.keyframeStyle];\r\n applyInlineStyle(node, keyframeStyle);\r\n temporaryStyles.push(keyframeStyle);\r\n }\r\n\r\n var itemIndex = stagger\r\n ? options.staggerIndex >= 0\r\n ? options.staggerIndex\r\n : gcsLookup.count(cacheKey)\r\n : 0;\r\n\r\n var isFirst = itemIndex === 0;\r\n\r\n // this is a pre-emptive way of forcing the setup classes to be added and applied INSTANTLY\r\n // without causing any combination of transitions to kick in. By adding a negative delay value\r\n // it forces the setup class' transition to end immediately. We later then remove the negative\r\n // transition delay to allow for the transition to naturally do it's thing. The beauty here is\r\n // that if there is no transition defined then nothing will happen and this will also allow\r\n // other transitions to be stacked on top of each other without any chopping them out.\r\n if (isFirst && !options.skipBlocking) {\r\n blockTransitions(node, SAFE_FAST_FORWARD_DURATION_VALUE);\r\n }\r\n\r\n var timings = computeTimings(node, fullClassName, cacheKey);\r\n var relativeDelay = timings.maxDelay;\r\n maxDelay = Math.max(relativeDelay, 0);\r\n maxDuration = timings.maxDuration;\r\n\r\n var flags = {};\r\n flags.hasTransitions = timings.transitionDuration > 0;\r\n flags.hasAnimations = timings.animationDuration > 0;\r\n flags.hasTransitionAll = flags.hasTransitions && timings.transitionProperty === 'all';\r\n flags.applyTransitionDuration = hasToStyles && (\r\n (flags.hasTransitions && !flags.hasTransitionAll)\r\n || (flags.hasAnimations && !flags.hasTransitions));\r\n flags.applyAnimationDuration = options.duration && flags.hasAnimations;\r\n flags.applyTransitionDelay = truthyTimingValue(options.delay) && (flags.applyTransitionDuration || flags.hasTransitions);\r\n flags.applyAnimationDelay = truthyTimingValue(options.delay) && flags.hasAnimations;\r\n flags.recalculateTimingStyles = addRemoveClassName.length > 0;\r\n\r\n if (flags.applyTransitionDuration || flags.applyAnimationDuration) {\r\n maxDuration = options.duration ? parseFloat(options.duration) : maxDuration;\r\n\r\n if (flags.applyTransitionDuration) {\r\n flags.hasTransitions = true;\r\n timings.transitionDuration = maxDuration;\r\n applyOnlyDuration = node.style[TRANSITION_PROP + PROPERTY_KEY].length > 0;\r\n temporaryStyles.push(getCssTransitionDurationStyle(maxDuration, applyOnlyDuration));\r\n }\r\n\r\n if (flags.applyAnimationDuration) {\r\n flags.hasAnimations = true;\r\n timings.animationDuration = maxDuration;\r\n temporaryStyles.push(getCssKeyframeDurationStyle(maxDuration));\r\n }\r\n }\r\n\r\n if (maxDuration === 0 && !flags.recalculateTimingStyles) {\r\n return closeAndReturnNoopAnimator();\r\n }\r\n\r\n if (options.delay != null) {\r\n var delayStyle;\r\n if (typeof options.delay !== 'boolean') {\r\n delayStyle = parseFloat(options.delay);\r\n // number in options.delay means we have to recalculate the delay for the closing timeout\r\n maxDelay = Math.max(delayStyle, 0);\r\n }\r\n\r\n if (flags.applyTransitionDelay) {\r\n temporaryStyles.push(getCssDelayStyle(delayStyle));\r\n }\r\n\r\n if (flags.applyAnimationDelay) {\r\n temporaryStyles.push(getCssDelayStyle(delayStyle, true));\r\n }\r\n }\r\n\r\n // we need to recalculate the delay value since we used a pre-emptive negative\r\n // delay value and the delay value is required for the final event checking. This\r\n // property will ensure that this will happen after the RAF phase has passed.\r\n if (options.duration == null && timings.transitionDuration > 0) {\r\n flags.recalculateTimingStyles = flags.recalculateTimingStyles || isFirst;\r\n }\r\n\r\n maxDelayTime = maxDelay * ONE_SECOND;\r\n maxDurationTime = maxDuration * ONE_SECOND;\r\n if (!options.skipBlocking) {\r\n flags.blockTransition = timings.transitionDuration > 0;\r\n flags.blockKeyframeAnimation = timings.animationDuration > 0 &&\r\n stagger.animationDelay > 0 &&\r\n stagger.animationDuration === 0;\r\n }\r\n\r\n if (options.from) {\r\n if (options.cleanupStyles) {\r\n registerRestorableStyles(restoreStyles, node, Object.keys(options.from));\r\n }\r\n applyAnimationFromStyles(element, options);\r\n }\r\n\r\n if (flags.blockTransition || flags.blockKeyframeAnimation) {\r\n applyBlocking(maxDuration);\r\n } else if (!options.skipBlocking) {\r\n blockTransitions(node, false);\r\n }\r\n\r\n // TODO(matsko): for 1.5 change this code to have an animator object for better debugging\r\n return {\r\n $$willAnimate: true,\r\n end: endFn,\r\n start: function() {\r\n if (animationClosed) return;\r\n\r\n runnerHost = {\r\n end: endFn,\r\n cancel: cancelFn,\r\n resume: null, //this will be set during the start() phase\r\n pause: null\r\n };\r\n\r\n runner = new $$AnimateRunner(runnerHost);\r\n\r\n waitUntilQuiet(start);\r\n\r\n // we don't have access to pause/resume the animation\r\n // since it hasn't run yet. AnimateRunner will therefore\r\n // set noop functions for resume and pause and they will\r\n // later be overridden once the animation is triggered\r\n return runner;\r\n }\r\n };\r\n\r\n function endFn() {\r\n close();\r\n }\r\n\r\n function cancelFn() {\r\n close(true);\r\n }\r\n\r\n function close(rejected) {\r\n // if the promise has been called already then we shouldn't close\r\n // the animation again\r\n if (animationClosed || (animationCompleted && animationPaused)) return;\r\n animationClosed = true;\r\n animationPaused = false;\r\n\r\n if (!options.$$skipPreparationClasses) {\r\n $$jqLite.removeClass(element, preparationClasses);\r\n }\r\n $$jqLite.removeClass(element, activeClasses);\r\n\r\n blockKeyframeAnimations(node, false);\r\n blockTransitions(node, false);\r\n\r\n forEach(temporaryStyles, function(entry) {\r\n // There is only one way to remove inline style properties entirely from elements.\r\n // By using `removeProperty` this works, but we need to convert camel-cased CSS\r\n // styles down to hyphenated values.\r\n node.style[entry[0]] = '';\r\n });\r\n\r\n applyAnimationClasses(element, options);\r\n applyAnimationStyles(element, options);\r\n\r\n if (Object.keys(restoreStyles).length) {\r\n forEach(restoreStyles, function(value, prop) {\r\n if (value) {\r\n node.style.setProperty(prop, value);\r\n } else {\r\n node.style.removeProperty(prop);\r\n }\r\n });\r\n }\r\n\r\n // the reason why we have this option is to allow a synchronous closing callback\r\n // that is fired as SOON as the animation ends (when the CSS is removed) or if\r\n // the animation never takes off at all. A good example is a leave animation since\r\n // the element must be removed just after the animation is over or else the element\r\n // will appear on screen for one animation frame causing an overbearing flicker.\r\n if (options.onDone) {\r\n options.onDone();\r\n }\r\n\r\n if (events && events.length) {\r\n // Remove the transitionend / animationend listener(s)\r\n element.off(events.join(' '), onAnimationProgress);\r\n }\r\n\r\n //Cancel the fallback closing timeout and remove the timer data\r\n var animationTimerData = element.data(ANIMATE_TIMER_KEY);\r\n if (animationTimerData) {\r\n $timeout.cancel(animationTimerData[0].timer);\r\n element.removeData(ANIMATE_TIMER_KEY);\r\n }\r\n\r\n // if the preparation function fails then the promise is not setup\r\n if (runner) {\r\n runner.complete(!rejected);\r\n }\r\n }\r\n\r\n function applyBlocking(duration) {\r\n if (flags.blockTransition) {\r\n blockTransitions(node, duration);\r\n }\r\n\r\n if (flags.blockKeyframeAnimation) {\r\n blockKeyframeAnimations(node, !!duration);\r\n }\r\n }\r\n\r\n function closeAndReturnNoopAnimator() {\r\n runner = new $$AnimateRunner({\r\n end: endFn,\r\n cancel: cancelFn\r\n });\r\n\r\n // should flush the cache animation\r\n waitUntilQuiet(noop);\r\n close();\r\n\r\n return {\r\n $$willAnimate: false,\r\n start: function() {\r\n return runner;\r\n },\r\n end: endFn\r\n };\r\n }\r\n\r\n function onAnimationProgress(event) {\r\n event.stopPropagation();\r\n var ev = event.originalEvent || event;\r\n\r\n if (ev.target !== node) {\r\n // Since TransitionEvent / AnimationEvent bubble up,\r\n // we have to ignore events by finished child animations\r\n return;\r\n }\r\n\r\n // we now always use `Date.now()` due to the recent changes with\r\n // event.timeStamp in Firefox, Webkit and Chrome (see #13494 for more info)\r\n var timeStamp = ev.$manualTimeStamp || Date.now();\r\n\r\n /* Firefox (or possibly just Gecko) likes to not round values up\r\n * when a ms measurement is used for the animation */\r\n var elapsedTime = parseFloat(ev.elapsedTime.toFixed(ELAPSED_TIME_MAX_DECIMAL_PLACES));\r\n\r\n /* $manualTimeStamp is a mocked timeStamp value which is set\r\n * within browserTrigger(). This is only here so that tests can\r\n * mock animations properly. Real events fallback to event.timeStamp,\r\n * or, if they don't, then a timeStamp is automatically created for them.\r\n * We're checking to see if the timeStamp surpasses the expected delay,\r\n * but we're using elapsedTime instead of the timeStamp on the 2nd\r\n * pre-condition since animationPauseds sometimes close off early */\r\n if (Math.max(timeStamp - startTime, 0) >= maxDelayTime && elapsedTime >= maxDuration) {\r\n // we set this flag to ensure that if the transition is paused then, when resumed,\r\n // the animation will automatically close itself since transitions cannot be paused.\r\n animationCompleted = true;\r\n close();\r\n }\r\n }\r\n\r\n function start() {\r\n if (animationClosed) return;\r\n if (!node.parentNode) {\r\n close();\r\n return;\r\n }\r\n\r\n // even though we only pause keyframe animations here the pause flag\r\n // will still happen when transitions are used. Only the transition will\r\n // not be paused since that is not possible. If the animation ends when\r\n // paused then it will not complete until unpaused or cancelled.\r\n var playPause = function(playAnimation) {\r\n if (!animationCompleted) {\r\n animationPaused = !playAnimation;\r\n if (timings.animationDuration) {\r\n var value = blockKeyframeAnimations(node, animationPaused);\r\n if (animationPaused) {\r\n temporaryStyles.push(value);\r\n } else {\r\n removeFromArray(temporaryStyles, value);\r\n }\r\n }\r\n } else if (animationPaused && playAnimation) {\r\n animationPaused = false;\r\n close();\r\n }\r\n };\r\n\r\n // checking the stagger duration prevents an accidentally cascade of the CSS delay style\r\n // being inherited from the parent. If the transition duration is zero then we can safely\r\n // rely that the delay value is an intentional stagger delay style.\r\n var maxStagger = itemIndex > 0\r\n && ((timings.transitionDuration && stagger.transitionDuration === 0) ||\r\n (timings.animationDuration && stagger.animationDuration === 0))\r\n && Math.max(stagger.animationDelay, stagger.transitionDelay);\r\n if (maxStagger) {\r\n $timeout(triggerAnimationStart,\r\n Math.floor(maxStagger * itemIndex * ONE_SECOND),\r\n false);\r\n } else {\r\n triggerAnimationStart();\r\n }\r\n\r\n // this will decorate the existing promise runner with pause/resume methods\r\n runnerHost.resume = function() {\r\n playPause(true);\r\n };\r\n\r\n runnerHost.pause = function() {\r\n playPause(false);\r\n };\r\n\r\n function triggerAnimationStart() {\r\n // just incase a stagger animation kicks in when the animation\r\n // itself was cancelled entirely\r\n if (animationClosed) return;\r\n\r\n applyBlocking(false);\r\n\r\n forEach(temporaryStyles, function(entry) {\r\n var key = entry[0];\r\n var value = entry[1];\r\n node.style[key] = value;\r\n });\r\n\r\n applyAnimationClasses(element, options);\r\n $$jqLite.addClass(element, activeClasses);\r\n\r\n if (flags.recalculateTimingStyles) {\r\n fullClassName = node.getAttribute('class') + ' ' + preparationClasses;\r\n cacheKey = gcsHashFn(node, fullClassName);\r\n\r\n timings = computeTimings(node, fullClassName, cacheKey);\r\n relativeDelay = timings.maxDelay;\r\n maxDelay = Math.max(relativeDelay, 0);\r\n maxDuration = timings.maxDuration;\r\n\r\n if (maxDuration === 0) {\r\n close();\r\n return;\r\n }\r\n\r\n flags.hasTransitions = timings.transitionDuration > 0;\r\n flags.hasAnimations = timings.animationDuration > 0;\r\n }\r\n\r\n if (flags.applyAnimationDelay) {\r\n relativeDelay = typeof options.delay !== 'boolean' && truthyTimingValue(options.delay)\r\n ? parseFloat(options.delay)\r\n : relativeDelay;\r\n\r\n maxDelay = Math.max(relativeDelay, 0);\r\n timings.animationDelay = relativeDelay;\r\n delayStyle = getCssDelayStyle(relativeDelay, true);\r\n temporaryStyles.push(delayStyle);\r\n node.style[delayStyle[0]] = delayStyle[1];\r\n }\r\n\r\n maxDelayTime = maxDelay * ONE_SECOND;\r\n maxDurationTime = maxDuration * ONE_SECOND;\r\n\r\n if (options.easing) {\r\n var easeProp, easeVal = options.easing;\r\n if (flags.hasTransitions) {\r\n easeProp = TRANSITION_PROP + TIMING_KEY;\r\n temporaryStyles.push([easeProp, easeVal]);\r\n node.style[easeProp] = easeVal;\r\n }\r\n if (flags.hasAnimations) {\r\n easeProp = ANIMATION_PROP + TIMING_KEY;\r\n temporaryStyles.push([easeProp, easeVal]);\r\n node.style[easeProp] = easeVal;\r\n }\r\n }\r\n\r\n if (timings.transitionDuration) {\r\n events.push(TRANSITIONEND_EVENT);\r\n }\r\n\r\n if (timings.animationDuration) {\r\n events.push(ANIMATIONEND_EVENT);\r\n }\r\n\r\n startTime = Date.now();\r\n var timerTime = maxDelayTime + CLOSING_TIME_BUFFER * maxDurationTime;\r\n var endTime = startTime + timerTime;\r\n\r\n var animationsData = element.data(ANIMATE_TIMER_KEY) || [];\r\n var setupFallbackTimer = true;\r\n if (animationsData.length) {\r\n var currentTimerData = animationsData[0];\r\n setupFallbackTimer = endTime > currentTimerData.expectedEndTime;\r\n if (setupFallbackTimer) {\r\n $timeout.cancel(currentTimerData.timer);\r\n } else {\r\n animationsData.push(close);\r\n }\r\n }\r\n\r\n if (setupFallbackTimer) {\r\n var timer = $timeout(onAnimationExpired, timerTime, false);\r\n animationsData[0] = {\r\n timer: timer,\r\n expectedEndTime: endTime\r\n };\r\n animationsData.push(close);\r\n element.data(ANIMATE_TIMER_KEY, animationsData);\r\n }\r\n\r\n if (events.length) {\r\n element.on(events.join(' '), onAnimationProgress);\r\n }\r\n\r\n if (options.to) {\r\n if (options.cleanupStyles) {\r\n registerRestorableStyles(restoreStyles, node, Object.keys(options.to));\r\n }\r\n applyAnimationToStyles(element, options);\r\n }\r\n }\r\n\r\n function onAnimationExpired() {\r\n var animationsData = element.data(ANIMATE_TIMER_KEY);\r\n\r\n // this will be false in the event that the element was\r\n // removed from the DOM (via a leave animation or something\r\n // similar)\r\n if (animationsData) {\r\n for (var i = 1; i < animationsData.length; i++) {\r\n animationsData[i]();\r\n }\r\n element.removeData(ANIMATE_TIMER_KEY);\r\n }\r\n }\r\n }\r\n };\r\n }];\r\n}];\r\n\r\nvar $$AnimateCssDriverProvider = ['$$animationProvider', /** @this */ function($$animationProvider) {\r\n $$animationProvider.drivers.push('$$animateCssDriver');\r\n\r\n var NG_ANIMATE_SHIM_CLASS_NAME = 'ng-animate-shim';\r\n var NG_ANIMATE_ANCHOR_CLASS_NAME = 'ng-anchor';\r\n\r\n var NG_OUT_ANCHOR_CLASS_NAME = 'ng-anchor-out';\r\n var NG_IN_ANCHOR_CLASS_NAME = 'ng-anchor-in';\r\n\r\n function isDocumentFragment(node) {\r\n return node.parentNode && node.parentNode.nodeType === 11;\r\n }\r\n\r\n this.$get = ['$animateCss', '$rootScope', '$$AnimateRunner', '$rootElement', '$sniffer', '$$jqLite', '$document',\r\n function($animateCss, $rootScope, $$AnimateRunner, $rootElement, $sniffer, $$jqLite, $document) {\r\n\r\n // only browsers that support these properties can render animations\r\n if (!$sniffer.animations && !$sniffer.transitions) return noop;\r\n\r\n var bodyNode = $document[0].body;\r\n var rootNode = getDomNode($rootElement);\r\n\r\n var rootBodyElement = jqLite(\r\n // this is to avoid using something that exists outside of the body\r\n // we also special case the doc fragment case because our unit test code\r\n // appends the $rootElement to the body after the app has been bootstrapped\r\n isDocumentFragment(rootNode) || bodyNode.contains(rootNode) ? rootNode : bodyNode\r\n );\r\n\r\n return function initDriverFn(animationDetails) {\r\n return animationDetails.from && animationDetails.to\r\n ? prepareFromToAnchorAnimation(animationDetails.from,\r\n animationDetails.to,\r\n animationDetails.classes,\r\n animationDetails.anchors)\r\n : prepareRegularAnimation(animationDetails);\r\n };\r\n\r\n function filterCssClasses(classes) {\r\n //remove all the `ng-` stuff\r\n return classes.replace(/\\bng-\\S+\\b/g, '');\r\n }\r\n\r\n function getUniqueValues(a, b) {\r\n if (isString(a)) a = a.split(' ');\r\n if (isString(b)) b = b.split(' ');\r\n return a.filter(function(val) {\r\n return b.indexOf(val) === -1;\r\n }).join(' ');\r\n }\r\n\r\n function prepareAnchoredAnimation(classes, outAnchor, inAnchor) {\r\n var clone = jqLite(getDomNode(outAnchor).cloneNode(true));\r\n var startingClasses = filterCssClasses(getClassVal(clone));\r\n\r\n outAnchor.addClass(NG_ANIMATE_SHIM_CLASS_NAME);\r\n inAnchor.addClass(NG_ANIMATE_SHIM_CLASS_NAME);\r\n\r\n clone.addClass(NG_ANIMATE_ANCHOR_CLASS_NAME);\r\n\r\n rootBodyElement.append(clone);\r\n\r\n var animatorIn, animatorOut = prepareOutAnimation();\r\n\r\n // the user may not end up using the `out` animation and\r\n // only making use of the `in` animation or vice-versa.\r\n // In either case we should allow this and not assume the\r\n // animation is over unless both animations are not used.\r\n if (!animatorOut) {\r\n animatorIn = prepareInAnimation();\r\n if (!animatorIn) {\r\n return end();\r\n }\r\n }\r\n\r\n var startingAnimator = animatorOut || animatorIn;\r\n\r\n return {\r\n start: function() {\r\n var runner;\r\n\r\n var currentAnimation = startingAnimator.start();\r\n currentAnimation.done(function() {\r\n currentAnimation = null;\r\n if (!animatorIn) {\r\n animatorIn = prepareInAnimation();\r\n if (animatorIn) {\r\n currentAnimation = animatorIn.start();\r\n currentAnimation.done(function() {\r\n currentAnimation = null;\r\n end();\r\n runner.complete();\r\n });\r\n return currentAnimation;\r\n }\r\n }\r\n // in the event that there is no `in` animation\r\n end();\r\n runner.complete();\r\n });\r\n\r\n runner = new $$AnimateRunner({\r\n end: endFn,\r\n cancel: endFn\r\n });\r\n\r\n return runner;\r\n\r\n function endFn() {\r\n if (currentAnimation) {\r\n currentAnimation.end();\r\n }\r\n }\r\n }\r\n };\r\n\r\n function calculateAnchorStyles(anchor) {\r\n var styles = {};\r\n\r\n var coords = getDomNode(anchor).getBoundingClientRect();\r\n\r\n // we iterate directly since safari messes up and doesn't return\r\n // all the keys for the coords object when iterated\r\n forEach(['width','height','top','left'], function(key) {\r\n var value = coords[key];\r\n switch (key) {\r\n case 'top':\r\n value += bodyNode.scrollTop;\r\n break;\r\n case 'left':\r\n value += bodyNode.scrollLeft;\r\n break;\r\n }\r\n styles[key] = Math.floor(value) + 'px';\r\n });\r\n return styles;\r\n }\r\n\r\n function prepareOutAnimation() {\r\n var animator = $animateCss(clone, {\r\n addClass: NG_OUT_ANCHOR_CLASS_NAME,\r\n delay: true,\r\n from: calculateAnchorStyles(outAnchor)\r\n });\r\n\r\n // read the comment within `prepareRegularAnimation` to understand\r\n // why this check is necessary\r\n return animator.$$willAnimate ? animator : null;\r\n }\r\n\r\n function getClassVal(element) {\r\n return element.attr('class') || '';\r\n }\r\n\r\n function prepareInAnimation() {\r\n var endingClasses = filterCssClasses(getClassVal(inAnchor));\r\n var toAdd = getUniqueValues(endingClasses, startingClasses);\r\n var toRemove = getUniqueValues(startingClasses, endingClasses);\r\n\r\n var animator = $animateCss(clone, {\r\n to: calculateAnchorStyles(inAnchor),\r\n addClass: NG_IN_ANCHOR_CLASS_NAME + ' ' + toAdd,\r\n removeClass: NG_OUT_ANCHOR_CLASS_NAME + ' ' + toRemove,\r\n delay: true\r\n });\r\n\r\n // read the comment within `prepareRegularAnimation` to understand\r\n // why this check is necessary\r\n return animator.$$willAnimate ? animator : null;\r\n }\r\n\r\n function end() {\r\n clone.remove();\r\n outAnchor.removeClass(NG_ANIMATE_SHIM_CLASS_NAME);\r\n inAnchor.removeClass(NG_ANIMATE_SHIM_CLASS_NAME);\r\n }\r\n }\r\n\r\n function prepareFromToAnchorAnimation(from, to, classes, anchors) {\r\n var fromAnimation = prepareRegularAnimation(from, noop);\r\n var toAnimation = prepareRegularAnimation(to, noop);\r\n\r\n var anchorAnimations = [];\r\n forEach(anchors, function(anchor) {\r\n var outElement = anchor['out'];\r\n var inElement = anchor['in'];\r\n var animator = prepareAnchoredAnimation(classes, outElement, inElement);\r\n if (animator) {\r\n anchorAnimations.push(animator);\r\n }\r\n });\r\n\r\n // no point in doing anything when there are no elements to animate\r\n if (!fromAnimation && !toAnimation && anchorAnimations.length === 0) return;\r\n\r\n return {\r\n start: function() {\r\n var animationRunners = [];\r\n\r\n if (fromAnimation) {\r\n animationRunners.push(fromAnimation.start());\r\n }\r\n\r\n if (toAnimation) {\r\n animationRunners.push(toAnimation.start());\r\n }\r\n\r\n forEach(anchorAnimations, function(animation) {\r\n animationRunners.push(animation.start());\r\n });\r\n\r\n var runner = new $$AnimateRunner({\r\n end: endFn,\r\n cancel: endFn // CSS-driven animations cannot be cancelled, only ended\r\n });\r\n\r\n $$AnimateRunner.all(animationRunners, function(status) {\r\n runner.complete(status);\r\n });\r\n\r\n return runner;\r\n\r\n function endFn() {\r\n forEach(animationRunners, function(runner) {\r\n runner.end();\r\n });\r\n }\r\n }\r\n };\r\n }\r\n\r\n function prepareRegularAnimation(animationDetails) {\r\n var element = animationDetails.element;\r\n var options = animationDetails.options || {};\r\n\r\n if (animationDetails.structural) {\r\n options.event = animationDetails.event;\r\n options.structural = true;\r\n options.applyClassesEarly = true;\r\n\r\n // we special case the leave animation since we want to ensure that\r\n // the element is removed as soon as the animation is over. Otherwise\r\n // a flicker might appear or the element may not be removed at all\r\n if (animationDetails.event === 'leave') {\r\n options.onDone = options.domOperation;\r\n }\r\n }\r\n\r\n // We assign the preparationClasses as the actual animation event since\r\n // the internals of $animateCss will just suffix the event token values\r\n // with `-active` to trigger the animation.\r\n if (options.preparationClasses) {\r\n options.event = concatWithSpace(options.event, options.preparationClasses);\r\n }\r\n\r\n var animator = $animateCss(element, options);\r\n\r\n // the driver lookup code inside of $$animation attempts to spawn a\r\n // driver one by one until a driver returns a.$$willAnimate animator object.\r\n // $animateCss will always return an object, however, it will pass in\r\n // a flag as a hint as to whether an animation was detected or not\r\n return animator.$$willAnimate ? animator : null;\r\n }\r\n }];\r\n}];\r\n\r\n// TODO(matsko): use caching here to speed things up for detection\r\n// TODO(matsko): add documentation\r\n// by the time...\r\n\r\nvar $$AnimateJsProvider = ['$animateProvider', /** @this */ function($animateProvider) {\r\n this.$get = ['$injector', '$$AnimateRunner', '$$jqLite',\r\n function($injector, $$AnimateRunner, $$jqLite) {\r\n\r\n var applyAnimationClasses = applyAnimationClassesFactory($$jqLite);\r\n // $animateJs(element, 'enter');\r\n return function(element, event, classes, options) {\r\n var animationClosed = false;\r\n\r\n // the `classes` argument is optional and if it is not used\r\n // then the classes will be resolved from the element's className\r\n // property as well as options.addClass/options.removeClass.\r\n if (arguments.length === 3 && isObject(classes)) {\r\n options = classes;\r\n classes = null;\r\n }\r\n\r\n options = prepareAnimationOptions(options);\r\n if (!classes) {\r\n classes = element.attr('class') || '';\r\n if (options.addClass) {\r\n classes += ' ' + options.addClass;\r\n }\r\n if (options.removeClass) {\r\n classes += ' ' + options.removeClass;\r\n }\r\n }\r\n\r\n var classesToAdd = options.addClass;\r\n var classesToRemove = options.removeClass;\r\n\r\n // the lookupAnimations function returns a series of animation objects that are\r\n // matched up with one or more of the CSS classes. These animation objects are\r\n // defined via the module.animation factory function. If nothing is detected then\r\n // we don't return anything which then makes $animation query the next driver.\r\n var animations = lookupAnimations(classes);\r\n var before, after;\r\n if (animations.length) {\r\n var afterFn, beforeFn;\r\n if (event === 'leave') {\r\n beforeFn = 'leave';\r\n afterFn = 'afterLeave'; // TODO(matsko): get rid of this\r\n } else {\r\n beforeFn = 'before' + event.charAt(0).toUpperCase() + event.substr(1);\r\n afterFn = event;\r\n }\r\n\r\n if (event !== 'enter' && event !== 'move') {\r\n before = packageAnimations(element, event, options, animations, beforeFn);\r\n }\r\n after = packageAnimations(element, event, options, animations, afterFn);\r\n }\r\n\r\n // no matching animations\r\n if (!before && !after) return;\r\n\r\n function applyOptions() {\r\n options.domOperation();\r\n applyAnimationClasses(element, options);\r\n }\r\n\r\n function close() {\r\n animationClosed = true;\r\n applyOptions();\r\n applyAnimationStyles(element, options);\r\n }\r\n\r\n var runner;\r\n\r\n return {\r\n $$willAnimate: true,\r\n end: function() {\r\n if (runner) {\r\n runner.end();\r\n } else {\r\n close();\r\n runner = new $$AnimateRunner();\r\n runner.complete(true);\r\n }\r\n return runner;\r\n },\r\n start: function() {\r\n if (runner) {\r\n return runner;\r\n }\r\n\r\n runner = new $$AnimateRunner();\r\n var closeActiveAnimations;\r\n var chain = [];\r\n\r\n if (before) {\r\n chain.push(function(fn) {\r\n closeActiveAnimations = before(fn);\r\n });\r\n }\r\n\r\n if (chain.length) {\r\n chain.push(function(fn) {\r\n applyOptions();\r\n fn(true);\r\n });\r\n } else {\r\n applyOptions();\r\n }\r\n\r\n if (after) {\r\n chain.push(function(fn) {\r\n closeActiveAnimations = after(fn);\r\n });\r\n }\r\n\r\n runner.setHost({\r\n end: function() {\r\n endAnimations();\r\n },\r\n cancel: function() {\r\n endAnimations(true);\r\n }\r\n });\r\n\r\n $$AnimateRunner.chain(chain, onComplete);\r\n return runner;\r\n\r\n function onComplete(success) {\r\n close(success);\r\n runner.complete(success);\r\n }\r\n\r\n function endAnimations(cancelled) {\r\n if (!animationClosed) {\r\n (closeActiveAnimations || noop)(cancelled);\r\n onComplete(cancelled);\r\n }\r\n }\r\n }\r\n };\r\n\r\n function executeAnimationFn(fn, element, event, options, onDone) {\r\n var args;\r\n switch (event) {\r\n case 'animate':\r\n args = [element, options.from, options.to, onDone];\r\n break;\r\n\r\n case 'setClass':\r\n args = [element, classesToAdd, classesToRemove, onDone];\r\n break;\r\n\r\n case 'addClass':\r\n args = [element, classesToAdd, onDone];\r\n break;\r\n\r\n case 'removeClass':\r\n args = [element, classesToRemove, onDone];\r\n break;\r\n\r\n default:\r\n args = [element, onDone];\r\n break;\r\n }\r\n\r\n args.push(options);\r\n\r\n var value = fn.apply(fn, args);\r\n if (value) {\r\n if (isFunction(value.start)) {\r\n value = value.start();\r\n }\r\n\r\n if (value instanceof $$AnimateRunner) {\r\n value.done(onDone);\r\n } else if (isFunction(value)) {\r\n // optional onEnd / onCancel callback\r\n return value;\r\n }\r\n }\r\n\r\n return noop;\r\n }\r\n\r\n function groupEventedAnimations(element, event, options, animations, fnName) {\r\n var operations = [];\r\n forEach(animations, function(ani) {\r\n var animation = ani[fnName];\r\n if (!animation) return;\r\n\r\n // note that all of these animations will run in parallel\r\n operations.push(function() {\r\n var runner;\r\n var endProgressCb;\r\n\r\n var resolved = false;\r\n var onAnimationComplete = function(rejected) {\r\n if (!resolved) {\r\n resolved = true;\r\n (endProgressCb || noop)(rejected);\r\n runner.complete(!rejected);\r\n }\r\n };\r\n\r\n runner = new $$AnimateRunner({\r\n end: function() {\r\n onAnimationComplete();\r\n },\r\n cancel: function() {\r\n onAnimationComplete(true);\r\n }\r\n });\r\n\r\n endProgressCb = executeAnimationFn(animation, element, event, options, function(result) {\r\n var cancelled = result === false;\r\n onAnimationComplete(cancelled);\r\n });\r\n\r\n return runner;\r\n });\r\n });\r\n\r\n return operations;\r\n }\r\n\r\n function packageAnimations(element, event, options, animations, fnName) {\r\n var operations = groupEventedAnimations(element, event, options, animations, fnName);\r\n if (operations.length === 0) {\r\n var a, b;\r\n if (fnName === 'beforeSetClass') {\r\n a = groupEventedAnimations(element, 'removeClass', options, animations, 'beforeRemoveClass');\r\n b = groupEventedAnimations(element, 'addClass', options, animations, 'beforeAddClass');\r\n } else if (fnName === 'setClass') {\r\n a = groupEventedAnimations(element, 'removeClass', options, animations, 'removeClass');\r\n b = groupEventedAnimations(element, 'addClass', options, animations, 'addClass');\r\n }\r\n\r\n if (a) {\r\n operations = operations.concat(a);\r\n }\r\n if (b) {\r\n operations = operations.concat(b);\r\n }\r\n }\r\n\r\n if (operations.length === 0) return;\r\n\r\n // TODO(matsko): add documentation\r\n return function startAnimation(callback) {\r\n var runners = [];\r\n if (operations.length) {\r\n forEach(operations, function(animateFn) {\r\n runners.push(animateFn());\r\n });\r\n }\r\n\r\n if (runners.length) {\r\n $$AnimateRunner.all(runners, callback);\r\n } else {\r\n callback();\r\n }\r\n\r\n return function endFn(reject) {\r\n forEach(runners, function(runner) {\r\n if (reject) {\r\n runner.cancel();\r\n } else {\r\n runner.end();\r\n }\r\n });\r\n };\r\n };\r\n }\r\n };\r\n\r\n function lookupAnimations(classes) {\r\n classes = isArray(classes) ? classes : classes.split(' ');\r\n var matches = [], flagMap = {};\r\n for (var i = 0; i < classes.length; i++) {\r\n var klass = classes[i],\r\n animationFactory = $animateProvider.$$registeredAnimations[klass];\r\n if (animationFactory && !flagMap[klass]) {\r\n matches.push($injector.get(animationFactory));\r\n flagMap[klass] = true;\r\n }\r\n }\r\n return matches;\r\n }\r\n }];\r\n}];\r\n\r\nvar $$AnimateJsDriverProvider = ['$$animationProvider', /** @this */ function($$animationProvider) {\r\n $$animationProvider.drivers.push('$$animateJsDriver');\r\n this.$get = ['$$animateJs', '$$AnimateRunner', function($$animateJs, $$AnimateRunner) {\r\n return function initDriverFn(animationDetails) {\r\n if (animationDetails.from && animationDetails.to) {\r\n var fromAnimation = prepareAnimation(animationDetails.from);\r\n var toAnimation = prepareAnimation(animationDetails.to);\r\n if (!fromAnimation && !toAnimation) return;\r\n\r\n return {\r\n start: function() {\r\n var animationRunners = [];\r\n\r\n if (fromAnimation) {\r\n animationRunners.push(fromAnimation.start());\r\n }\r\n\r\n if (toAnimation) {\r\n animationRunners.push(toAnimation.start());\r\n }\r\n\r\n $$AnimateRunner.all(animationRunners, done);\r\n\r\n var runner = new $$AnimateRunner({\r\n end: endFnFactory(),\r\n cancel: endFnFactory()\r\n });\r\n\r\n return runner;\r\n\r\n function endFnFactory() {\r\n return function() {\r\n forEach(animationRunners, function(runner) {\r\n // at this point we cannot cancel animations for groups just yet. 1.5+\r\n runner.end();\r\n });\r\n };\r\n }\r\n\r\n function done(status) {\r\n runner.complete(status);\r\n }\r\n }\r\n };\r\n } else {\r\n return prepareAnimation(animationDetails);\r\n }\r\n };\r\n\r\n function prepareAnimation(animationDetails) {\r\n // TODO(matsko): make sure to check for grouped animations and delegate down to normal animations\r\n var element = animationDetails.element;\r\n var event = animationDetails.event;\r\n var options = animationDetails.options;\r\n var classes = animationDetails.classes;\r\n return $$animateJs(element, event, classes, options);\r\n }\r\n }];\r\n}];\r\n\r\nvar NG_ANIMATE_ATTR_NAME = 'data-ng-animate';\r\nvar NG_ANIMATE_PIN_DATA = '$ngAnimatePin';\r\nvar $$AnimateQueueProvider = ['$animateProvider', /** @this */ function($animateProvider) {\r\n var PRE_DIGEST_STATE = 1;\r\n var RUNNING_STATE = 2;\r\n var ONE_SPACE = ' ';\r\n\r\n var rules = this.rules = {\r\n skip: [],\r\n cancel: [],\r\n join: []\r\n };\r\n\r\n function makeTruthyCssClassMap(classString) {\r\n if (!classString) {\r\n return null;\r\n }\r\n\r\n var keys = classString.split(ONE_SPACE);\r\n var map = Object.create(null);\r\n\r\n forEach(keys, function(key) {\r\n map[key] = true;\r\n });\r\n return map;\r\n }\r\n\r\n function hasMatchingClasses(newClassString, currentClassString) {\r\n if (newClassString && currentClassString) {\r\n var currentClassMap = makeTruthyCssClassMap(currentClassString);\r\n return newClassString.split(ONE_SPACE).some(function(className) {\r\n return currentClassMap[className];\r\n });\r\n }\r\n }\r\n\r\n function isAllowed(ruleType, currentAnimation, previousAnimation) {\r\n return rules[ruleType].some(function(fn) {\r\n return fn(currentAnimation, previousAnimation);\r\n });\r\n }\r\n\r\n function hasAnimationClasses(animation, and) {\r\n var a = (animation.addClass || '').length > 0;\r\n var b = (animation.removeClass || '').length > 0;\r\n return and ? a && b : a || b;\r\n }\r\n\r\n rules.join.push(function(newAnimation, currentAnimation) {\r\n // if the new animation is class-based then we can just tack that on\r\n return !newAnimation.structural && hasAnimationClasses(newAnimation);\r\n });\r\n\r\n rules.skip.push(function(newAnimation, currentAnimation) {\r\n // there is no need to animate anything if no classes are being added and\r\n // there is no structural animation that will be triggered\r\n return !newAnimation.structural && !hasAnimationClasses(newAnimation);\r\n });\r\n\r\n rules.skip.push(function(newAnimation, currentAnimation) {\r\n // why should we trigger a new structural animation if the element will\r\n // be removed from the DOM anyway?\r\n return currentAnimation.event === 'leave' && newAnimation.structural;\r\n });\r\n\r\n rules.skip.push(function(newAnimation, currentAnimation) {\r\n // if there is an ongoing current animation then don't even bother running the class-based animation\r\n return currentAnimation.structural && currentAnimation.state === RUNNING_STATE && !newAnimation.structural;\r\n });\r\n\r\n rules.cancel.push(function(newAnimation, currentAnimation) {\r\n // there can never be two structural animations running at the same time\r\n return currentAnimation.structural && newAnimation.structural;\r\n });\r\n\r\n rules.cancel.push(function(newAnimation, currentAnimation) {\r\n // if the previous animation is already running, but the new animation will\r\n // be triggered, but the new animation is structural\r\n return currentAnimation.state === RUNNING_STATE && newAnimation.structural;\r\n });\r\n\r\n rules.cancel.push(function(newAnimation, currentAnimation) {\r\n // cancel the animation if classes added / removed in both animation cancel each other out,\r\n // but only if the current animation isn't structural\r\n\r\n if (currentAnimation.structural) return false;\r\n\r\n var nA = newAnimation.addClass;\r\n var nR = newAnimation.removeClass;\r\n var cA = currentAnimation.addClass;\r\n var cR = currentAnimation.removeClass;\r\n\r\n // early detection to save the global CPU shortage :)\r\n if ((isUndefined(nA) && isUndefined(nR)) || (isUndefined(cA) && isUndefined(cR))) {\r\n return false;\r\n }\r\n\r\n return hasMatchingClasses(nA, cR) || hasMatchingClasses(nR, cA);\r\n });\r\n\r\n this.$get = ['$$rAF', '$rootScope', '$rootElement', '$document', '$$Map',\r\n '$$animation', '$$AnimateRunner', '$templateRequest', '$$jqLite', '$$forceReflow',\r\n '$$isDocumentHidden',\r\n function($$rAF, $rootScope, $rootElement, $document, $$Map,\r\n $$animation, $$AnimateRunner, $templateRequest, $$jqLite, $$forceReflow,\r\n $$isDocumentHidden) {\r\n\r\n var activeAnimationsLookup = new $$Map();\r\n var disabledElementsLookup = new $$Map();\r\n var animationsEnabled = null;\r\n\r\n function postDigestTaskFactory() {\r\n var postDigestCalled = false;\r\n return function(fn) {\r\n // we only issue a call to postDigest before\r\n // it has first passed. This prevents any callbacks\r\n // from not firing once the animation has completed\r\n // since it will be out of the digest cycle.\r\n if (postDigestCalled) {\r\n fn();\r\n } else {\r\n $rootScope.$$postDigest(function() {\r\n postDigestCalled = true;\r\n fn();\r\n });\r\n }\r\n };\r\n }\r\n\r\n // Wait until all directive and route-related templates are downloaded and\r\n // compiled. The $templateRequest.totalPendingRequests variable keeps track of\r\n // all of the remote templates being currently downloaded. If there are no\r\n // templates currently downloading then the watcher will still fire anyway.\r\n var deregisterWatch = $rootScope.$watch(\r\n function() { return $templateRequest.totalPendingRequests === 0; },\r\n function(isEmpty) {\r\n if (!isEmpty) return;\r\n deregisterWatch();\r\n\r\n // Now that all templates have been downloaded, $animate will wait until\r\n // the post digest queue is empty before enabling animations. By having two\r\n // calls to $postDigest calls we can ensure that the flag is enabled at the\r\n // very end of the post digest queue. Since all of the animations in $animate\r\n // use $postDigest, it's important that the code below executes at the end.\r\n // This basically means that the page is fully downloaded and compiled before\r\n // any animations are triggered.\r\n $rootScope.$$postDigest(function() {\r\n $rootScope.$$postDigest(function() {\r\n // we check for null directly in the event that the application already called\r\n // .enabled() with whatever arguments that it provided it with\r\n if (animationsEnabled === null) {\r\n animationsEnabled = true;\r\n }\r\n });\r\n });\r\n }\r\n );\r\n\r\n var callbackRegistry = Object.create(null);\r\n\r\n // remember that the `customFilter`/`classNameFilter` are set during the\r\n // provider/config stage therefore we can optimize here and setup helper functions\r\n var customFilter = $animateProvider.customFilter();\r\n var classNameFilter = $animateProvider.classNameFilter();\r\n var returnTrue = function() { return true; };\r\n\r\n var isAnimatableByFilter = customFilter || returnTrue;\r\n var isAnimatableClassName = !classNameFilter ? returnTrue : function(node, options) {\r\n var className = [node.getAttribute('class'), options.addClass, options.removeClass].join(' ');\r\n return classNameFilter.test(className);\r\n };\r\n\r\n var applyAnimationClasses = applyAnimationClassesFactory($$jqLite);\r\n\r\n function normalizeAnimationDetails(element, animation) {\r\n return mergeAnimationDetails(element, animation, {});\r\n }\r\n\r\n // IE9-11 has no method \"contains\" in SVG element and in Node.prototype. Bug #10259.\r\n var contains = window.Node.prototype.contains || /** @this */ function(arg) {\r\n // eslint-disable-next-line no-bitwise\r\n return this === arg || !!(this.compareDocumentPosition(arg) & 16);\r\n };\r\n\r\n function findCallbacks(targetParentNode, targetNode, event) {\r\n var matches = [];\r\n var entries = callbackRegistry[event];\r\n if (entries) {\r\n forEach(entries, function(entry) {\r\n if (contains.call(entry.node, targetNode)) {\r\n matches.push(entry.callback);\r\n } else if (event === 'leave' && contains.call(entry.node, targetParentNode)) {\r\n matches.push(entry.callback);\r\n }\r\n });\r\n }\r\n\r\n return matches;\r\n }\r\n\r\n function filterFromRegistry(list, matchContainer, matchCallback) {\r\n var containerNode = extractElementNode(matchContainer);\r\n return list.filter(function(entry) {\r\n var isMatch = entry.node === containerNode &&\r\n (!matchCallback || entry.callback === matchCallback);\r\n return !isMatch;\r\n });\r\n }\r\n\r\n function cleanupEventListeners(phase, node) {\r\n if (phase === 'close' && !node.parentNode) {\r\n // If the element is not attached to a parentNode, it has been removed by\r\n // the domOperation, and we can safely remove the event callbacks\r\n $animate.off(node);\r\n }\r\n }\r\n\r\n var $animate = {\r\n on: function(event, container, callback) {\r\n var node = extractElementNode(container);\r\n callbackRegistry[event] = callbackRegistry[event] || [];\r\n callbackRegistry[event].push({\r\n node: node,\r\n callback: callback\r\n });\r\n\r\n // Remove the callback when the element is removed from the DOM\r\n jqLite(container).on('$destroy', function() {\r\n var animationDetails = activeAnimationsLookup.get(node);\r\n\r\n if (!animationDetails) {\r\n // If there's an animation ongoing, the callback calling code will remove\r\n // the event listeners. If we'd remove here, the callbacks would be removed\r\n // before the animation ends\r\n $animate.off(event, container, callback);\r\n }\r\n });\r\n },\r\n\r\n off: function(event, container, callback) {\r\n if (arguments.length === 1 && !isString(arguments[0])) {\r\n container = arguments[0];\r\n for (var eventType in callbackRegistry) {\r\n callbackRegistry[eventType] = filterFromRegistry(callbackRegistry[eventType], container);\r\n }\r\n\r\n return;\r\n }\r\n\r\n var entries = callbackRegistry[event];\r\n if (!entries) return;\r\n\r\n callbackRegistry[event] = arguments.length === 1\r\n ? null\r\n : filterFromRegistry(entries, container, callback);\r\n },\r\n\r\n pin: function(element, parentElement) {\r\n assertArg(isElement(element), 'element', 'not an element');\r\n assertArg(isElement(parentElement), 'parentElement', 'not an element');\r\n element.data(NG_ANIMATE_PIN_DATA, parentElement);\r\n },\r\n\r\n push: function(element, event, options, domOperation) {\r\n options = options || {};\r\n options.domOperation = domOperation;\r\n return queueAnimation(element, event, options);\r\n },\r\n\r\n // this method has four signatures:\r\n // () - global getter\r\n // (bool) - global setter\r\n // (element) - element getter\r\n // (element, bool) - element setter\r\n enabled: function(element, bool) {\r\n var argCount = arguments.length;\r\n\r\n if (argCount === 0) {\r\n // () - Global getter\r\n bool = !!animationsEnabled;\r\n } else {\r\n var hasElement = isElement(element);\r\n\r\n if (!hasElement) {\r\n // (bool) - Global setter\r\n bool = animationsEnabled = !!element;\r\n } else {\r\n var node = getDomNode(element);\r\n\r\n if (argCount === 1) {\r\n // (element) - Element getter\r\n bool = !disabledElementsLookup.get(node);\r\n } else {\r\n // (element, bool) - Element setter\r\n disabledElementsLookup.set(node, !bool);\r\n }\r\n }\r\n }\r\n\r\n return bool;\r\n }\r\n };\r\n\r\n return $animate;\r\n\r\n function queueAnimation(originalElement, event, initialOptions) {\r\n // we always make a copy of the options since\r\n // there should never be any side effects on\r\n // the input data when running `$animateCss`.\r\n var options = copy(initialOptions);\r\n\r\n var element = stripCommentsFromElement(originalElement);\r\n var node = getDomNode(element);\r\n var parentNode = node && node.parentNode;\r\n\r\n options = prepareAnimationOptions(options);\r\n\r\n // we create a fake runner with a working promise.\r\n // These methods will become available after the digest has passed\r\n var runner = new $$AnimateRunner();\r\n\r\n // this is used to trigger callbacks in postDigest mode\r\n var runInNextPostDigestOrNow = postDigestTaskFactory();\r\n\r\n if (isArray(options.addClass)) {\r\n options.addClass = options.addClass.join(' ');\r\n }\r\n\r\n if (options.addClass && !isString(options.addClass)) {\r\n options.addClass = null;\r\n }\r\n\r\n if (isArray(options.removeClass)) {\r\n options.removeClass = options.removeClass.join(' ');\r\n }\r\n\r\n if (options.removeClass && !isString(options.removeClass)) {\r\n options.removeClass = null;\r\n }\r\n\r\n if (options.from && !isObject(options.from)) {\r\n options.from = null;\r\n }\r\n\r\n if (options.to && !isObject(options.to)) {\r\n options.to = null;\r\n }\r\n\r\n // If animations are hard-disabled for the whole application there is no need to continue.\r\n // There are also situations where a directive issues an animation for a jqLite wrapper that\r\n // contains only comment nodes. In this case, there is no way we can perform an animation.\r\n if (!animationsEnabled ||\r\n !node ||\r\n !isAnimatableByFilter(node, event, initialOptions) ||\r\n !isAnimatableClassName(node, options)) {\r\n close();\r\n return runner;\r\n }\r\n\r\n var isStructural = ['enter', 'move', 'leave'].indexOf(event) >= 0;\r\n\r\n var documentHidden = $$isDocumentHidden();\r\n\r\n // This is a hard disable of all animations the element itself, therefore there is no need to\r\n // continue further past this point if not enabled\r\n // Animations are also disabled if the document is currently hidden (page is not visible\r\n // to the user), because browsers slow down or do not flush calls to requestAnimationFrame\r\n var skipAnimations = documentHidden || disabledElementsLookup.get(node);\r\n var existingAnimation = (!skipAnimations && activeAnimationsLookup.get(node)) || {};\r\n var hasExistingAnimation = !!existingAnimation.state;\r\n\r\n // there is no point in traversing the same collection of parent ancestors if a followup\r\n // animation will be run on the same element that already did all that checking work\r\n if (!skipAnimations && (!hasExistingAnimation || existingAnimation.state !== PRE_DIGEST_STATE)) {\r\n skipAnimations = !areAnimationsAllowed(node, parentNode, event);\r\n }\r\n\r\n if (skipAnimations) {\r\n // Callbacks should fire even if the document is hidden (regression fix for issue #14120)\r\n if (documentHidden) notifyProgress(runner, event, 'start');\r\n close();\r\n if (documentHidden) notifyProgress(runner, event, 'close');\r\n return runner;\r\n }\r\n\r\n if (isStructural) {\r\n closeChildAnimations(node);\r\n }\r\n\r\n var newAnimation = {\r\n structural: isStructural,\r\n element: element,\r\n event: event,\r\n addClass: options.addClass,\r\n removeClass: options.removeClass,\r\n close: close,\r\n options: options,\r\n runner: runner\r\n };\r\n\r\n if (hasExistingAnimation) {\r\n var skipAnimationFlag = isAllowed('skip', newAnimation, existingAnimation);\r\n if (skipAnimationFlag) {\r\n if (existingAnimation.state === RUNNING_STATE) {\r\n close();\r\n return runner;\r\n } else {\r\n mergeAnimationDetails(element, existingAnimation, newAnimation);\r\n return existingAnimation.runner;\r\n }\r\n }\r\n var cancelAnimationFlag = isAllowed('cancel', newAnimation, existingAnimation);\r\n if (cancelAnimationFlag) {\r\n if (existingAnimation.state === RUNNING_STATE) {\r\n // this will end the animation right away and it is safe\r\n // to do so since the animation is already running and the\r\n // runner callback code will run in async\r\n existingAnimation.runner.end();\r\n } else if (existingAnimation.structural) {\r\n // this means that the animation is queued into a digest, but\r\n // hasn't started yet. Therefore it is safe to run the close\r\n // method which will call the runner methods in async.\r\n existingAnimation.close();\r\n } else {\r\n // this will merge the new animation options into existing animation options\r\n mergeAnimationDetails(element, existingAnimation, newAnimation);\r\n\r\n return existingAnimation.runner;\r\n }\r\n } else {\r\n // a joined animation means that this animation will take over the existing one\r\n // so an example would involve a leave animation taking over an enter. Then when\r\n // the postDigest kicks in the enter will be ignored.\r\n var joinAnimationFlag = isAllowed('join', newAnimation, existingAnimation);\r\n if (joinAnimationFlag) {\r\n if (existingAnimation.state === RUNNING_STATE) {\r\n normalizeAnimationDetails(element, newAnimation);\r\n } else {\r\n applyGeneratedPreparationClasses(element, isStructural ? event : null, options);\r\n\r\n event = newAnimation.event = existingAnimation.event;\r\n options = mergeAnimationDetails(element, existingAnimation, newAnimation);\r\n\r\n //we return the same runner since only the option values of this animation will\r\n //be fed into the `existingAnimation`.\r\n return existingAnimation.runner;\r\n }\r\n }\r\n }\r\n } else {\r\n // normalization in this case means that it removes redundant CSS classes that\r\n // already exist (addClass) or do not exist (removeClass) on the element\r\n normalizeAnimationDetails(element, newAnimation);\r\n }\r\n\r\n // when the options are merged and cleaned up we may end up not having to do\r\n // an animation at all, therefore we should check this before issuing a post\r\n // digest callback. Structural animations will always run no matter what.\r\n var isValidAnimation = newAnimation.structural;\r\n if (!isValidAnimation) {\r\n // animate (from/to) can be quickly checked first, otherwise we check if any classes are present\r\n isValidAnimation = (newAnimation.event === 'animate' && Object.keys(newAnimation.options.to || {}).length > 0)\r\n || hasAnimationClasses(newAnimation);\r\n }\r\n\r\n if (!isValidAnimation) {\r\n close();\r\n clearElementAnimationState(node);\r\n return runner;\r\n }\r\n\r\n // the counter keeps track of cancelled animations\r\n var counter = (existingAnimation.counter || 0) + 1;\r\n newAnimation.counter = counter;\r\n\r\n markElementAnimationState(node, PRE_DIGEST_STATE, newAnimation);\r\n\r\n $rootScope.$$postDigest(function() {\r\n // It is possible that the DOM nodes inside `originalElement` have been replaced. This can\r\n // happen if the animated element is a transcluded clone and also has a `templateUrl`\r\n // directive on it. Therefore, we must recreate `element` in order to interact with the\r\n // actual DOM nodes.\r\n // Note: We still need to use the old `node` for certain things, such as looking up in\r\n // HashMaps where it was used as the key.\r\n\r\n element = stripCommentsFromElement(originalElement);\r\n\r\n var animationDetails = activeAnimationsLookup.get(node);\r\n var animationCancelled = !animationDetails;\r\n animationDetails = animationDetails || {};\r\n\r\n // if addClass/removeClass is called before something like enter then the\r\n // registered parent element may not be present. The code below will ensure\r\n // that a final value for parent element is obtained\r\n var parentElement = element.parent() || [];\r\n\r\n // animate/structural/class-based animations all have requirements. Otherwise there\r\n // is no point in performing an animation. The parent node must also be set.\r\n var isValidAnimation = parentElement.length > 0\r\n && (animationDetails.event === 'animate'\r\n || animationDetails.structural\r\n || hasAnimationClasses(animationDetails));\r\n\r\n // this means that the previous animation was cancelled\r\n // even if the follow-up animation is the same event\r\n if (animationCancelled || animationDetails.counter !== counter || !isValidAnimation) {\r\n // if another animation did not take over then we need\r\n // to make sure that the domOperation and options are\r\n // handled accordingly\r\n if (animationCancelled) {\r\n applyAnimationClasses(element, options);\r\n applyAnimationStyles(element, options);\r\n }\r\n\r\n // if the event changed from something like enter to leave then we do\r\n // it, otherwise if it's the same then the end result will be the same too\r\n if (animationCancelled || (isStructural && animationDetails.event !== event)) {\r\n options.domOperation();\r\n runner.end();\r\n }\r\n\r\n // in the event that the element animation was not cancelled or a follow-up animation\r\n // isn't allowed to animate from here then we need to clear the state of the element\r\n // so that any future animations won't read the expired animation data.\r\n if (!isValidAnimation) {\r\n clearElementAnimationState(node);\r\n }\r\n\r\n return;\r\n }\r\n\r\n // this combined multiple class to addClass / removeClass into a setClass event\r\n // so long as a structural event did not take over the animation\r\n event = !animationDetails.structural && hasAnimationClasses(animationDetails, true)\r\n ? 'setClass'\r\n : animationDetails.event;\r\n\r\n markElementAnimationState(node, RUNNING_STATE);\r\n var realRunner = $$animation(element, event, animationDetails.options);\r\n\r\n // this will update the runner's flow-control events based on\r\n // the `realRunner` object.\r\n runner.setHost(realRunner);\r\n notifyProgress(runner, event, 'start', {});\r\n\r\n realRunner.done(function(status) {\r\n close(!status);\r\n var animationDetails = activeAnimationsLookup.get(node);\r\n if (animationDetails && animationDetails.counter === counter) {\r\n clearElementAnimationState(node);\r\n }\r\n notifyProgress(runner, event, 'close', {});\r\n });\r\n });\r\n\r\n return runner;\r\n\r\n function notifyProgress(runner, event, phase, data) {\r\n runInNextPostDigestOrNow(function() {\r\n var callbacks = findCallbacks(parentNode, node, event);\r\n if (callbacks.length) {\r\n // do not optimize this call here to RAF because\r\n // we don't know how heavy the callback code here will\r\n // be and if this code is buffered then this can\r\n // lead to a performance regression.\r\n $$rAF(function() {\r\n forEach(callbacks, function(callback) {\r\n callback(element, phase, data);\r\n });\r\n cleanupEventListeners(phase, node);\r\n });\r\n } else {\r\n cleanupEventListeners(phase, node);\r\n }\r\n });\r\n runner.progress(event, phase, data);\r\n }\r\n\r\n function close(reject) {\r\n clearGeneratedClasses(element, options);\r\n applyAnimationClasses(element, options);\r\n applyAnimationStyles(element, options);\r\n options.domOperation();\r\n runner.complete(!reject);\r\n }\r\n }\r\n\r\n function closeChildAnimations(node) {\r\n var children = node.querySelectorAll('[' + NG_ANIMATE_ATTR_NAME + ']');\r\n forEach(children, function(child) {\r\n var state = parseInt(child.getAttribute(NG_ANIMATE_ATTR_NAME), 10);\r\n var animationDetails = activeAnimationsLookup.get(child);\r\n if (animationDetails) {\r\n switch (state) {\r\n case RUNNING_STATE:\r\n animationDetails.runner.end();\r\n /* falls through */\r\n case PRE_DIGEST_STATE:\r\n activeAnimationsLookup.delete(child);\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n\r\n function clearElementAnimationState(node) {\r\n node.removeAttribute(NG_ANIMATE_ATTR_NAME);\r\n activeAnimationsLookup.delete(node);\r\n }\r\n\r\n /**\r\n * This fn returns false if any of the following is true:\r\n * a) animations on any parent element are disabled, and animations on the element aren't explicitly allowed\r\n * b) a parent element has an ongoing structural animation, and animateChildren is false\r\n * c) the element is not a child of the body\r\n * d) the element is not a child of the $rootElement\r\n */\r\n function areAnimationsAllowed(node, parentNode, event) {\r\n var bodyNode = $document[0].body;\r\n var rootNode = getDomNode($rootElement);\r\n\r\n var bodyNodeDetected = (node === bodyNode) || node.nodeName === 'HTML';\r\n var rootNodeDetected = (node === rootNode);\r\n var parentAnimationDetected = false;\r\n var elementDisabled = disabledElementsLookup.get(node);\r\n var animateChildren;\r\n\r\n var parentHost = jqLite.data(node, NG_ANIMATE_PIN_DATA);\r\n if (parentHost) {\r\n parentNode = getDomNode(parentHost);\r\n }\r\n\r\n while (parentNode) {\r\n if (!rootNodeDetected) {\r\n // angular doesn't want to attempt to animate elements outside of the application\r\n // therefore we need to ensure that the rootElement is an ancestor of the current element\r\n rootNodeDetected = (parentNode === rootNode);\r\n }\r\n\r\n if (parentNode.nodeType !== ELEMENT_NODE) {\r\n // no point in inspecting the #document element\r\n break;\r\n }\r\n\r\n var details = activeAnimationsLookup.get(parentNode) || {};\r\n // either an enter, leave or move animation will commence\r\n // therefore we can't allow any animations to take place\r\n // but if a parent animation is class-based then that's ok\r\n if (!parentAnimationDetected) {\r\n var parentNodeDisabled = disabledElementsLookup.get(parentNode);\r\n\r\n if (parentNodeDisabled === true && elementDisabled !== false) {\r\n // disable animations if the user hasn't explicitly enabled animations on the\r\n // current element\r\n elementDisabled = true;\r\n // element is disabled via parent element, no need to check anything else\r\n break;\r\n } else if (parentNodeDisabled === false) {\r\n elementDisabled = false;\r\n }\r\n parentAnimationDetected = details.structural;\r\n }\r\n\r\n if (isUndefined(animateChildren) || animateChildren === true) {\r\n var value = jqLite.data(parentNode, NG_ANIMATE_CHILDREN_DATA);\r\n if (isDefined(value)) {\r\n animateChildren = value;\r\n }\r\n }\r\n\r\n // there is no need to continue traversing at this point\r\n if (parentAnimationDetected && animateChildren === false) break;\r\n\r\n if (!bodyNodeDetected) {\r\n // we also need to ensure that the element is or will be a part of the body element\r\n // otherwise it is pointless to even issue an animation to be rendered\r\n bodyNodeDetected = (parentNode === bodyNode);\r\n }\r\n\r\n if (bodyNodeDetected && rootNodeDetected) {\r\n // If both body and root have been found, any other checks are pointless,\r\n // as no animation data should live outside the application\r\n break;\r\n }\r\n\r\n if (!rootNodeDetected) {\r\n // If `rootNode` is not detected, check if `parentNode` is pinned to another element\r\n parentHost = jqLite.data(parentNode, NG_ANIMATE_PIN_DATA);\r\n if (parentHost) {\r\n // The pin target element becomes the next parent element\r\n parentNode = getDomNode(parentHost);\r\n continue;\r\n }\r\n }\r\n\r\n parentNode = parentNode.parentNode;\r\n }\r\n\r\n var allowAnimation = (!parentAnimationDetected || animateChildren) && elementDisabled !== true;\r\n return allowAnimation && rootNodeDetected && bodyNodeDetected;\r\n }\r\n\r\n function markElementAnimationState(node, state, details) {\r\n details = details || {};\r\n details.state = state;\r\n\r\n node.setAttribute(NG_ANIMATE_ATTR_NAME, state);\r\n\r\n var oldValue = activeAnimationsLookup.get(node);\r\n var newValue = oldValue\r\n ? extend(oldValue, details)\r\n : details;\r\n activeAnimationsLookup.set(node, newValue);\r\n }\r\n }];\r\n}];\r\n\r\n/* exported $$AnimationProvider */\r\n\r\nvar $$AnimationProvider = ['$animateProvider', /** @this */ function($animateProvider) {\r\n var NG_ANIMATE_REF_ATTR = 'ng-animate-ref';\r\n\r\n var drivers = this.drivers = [];\r\n\r\n var RUNNER_STORAGE_KEY = '$$animationRunner';\r\n\r\n function setRunner(element, runner) {\r\n element.data(RUNNER_STORAGE_KEY, runner);\r\n }\r\n\r\n function removeRunner(element) {\r\n element.removeData(RUNNER_STORAGE_KEY);\r\n }\r\n\r\n function getRunner(element) {\r\n return element.data(RUNNER_STORAGE_KEY);\r\n }\r\n\r\n this.$get = ['$$jqLite', '$rootScope', '$injector', '$$AnimateRunner', '$$Map', '$$rAFScheduler',\r\n function($$jqLite, $rootScope, $injector, $$AnimateRunner, $$Map, $$rAFScheduler) {\r\n\r\n var animationQueue = [];\r\n var applyAnimationClasses = applyAnimationClassesFactory($$jqLite);\r\n\r\n function sortAnimations(animations) {\r\n var tree = { children: [] };\r\n var i, lookup = new $$Map();\r\n\r\n // this is done first beforehand so that the map\r\n // is filled with a list of the elements that will be animated\r\n for (i = 0; i < animations.length; i++) {\r\n var animation = animations[i];\r\n lookup.set(animation.domNode, animations[i] = {\r\n domNode: animation.domNode,\r\n fn: animation.fn,\r\n children: []\r\n });\r\n }\r\n\r\n for (i = 0; i < animations.length; i++) {\r\n processNode(animations[i]);\r\n }\r\n\r\n return flatten(tree);\r\n\r\n function processNode(entry) {\r\n if (entry.processed) return entry;\r\n entry.processed = true;\r\n\r\n var elementNode = entry.domNode;\r\n var parentNode = elementNode.parentNode;\r\n lookup.set(elementNode, entry);\r\n\r\n var parentEntry;\r\n while (parentNode) {\r\n parentEntry = lookup.get(parentNode);\r\n if (parentEntry) {\r\n if (!parentEntry.processed) {\r\n parentEntry = processNode(parentEntry);\r\n }\r\n break;\r\n }\r\n parentNode = parentNode.parentNode;\r\n }\r\n\r\n (parentEntry || tree).children.push(entry);\r\n return entry;\r\n }\r\n\r\n function flatten(tree) {\r\n var result = [];\r\n var queue = [];\r\n var i;\r\n\r\n for (i = 0; i < tree.children.length; i++) {\r\n queue.push(tree.children[i]);\r\n }\r\n\r\n var remainingLevelEntries = queue.length;\r\n var nextLevelEntries = 0;\r\n var row = [];\r\n\r\n for (i = 0; i < queue.length; i++) {\r\n var entry = queue[i];\r\n if (remainingLevelEntries <= 0) {\r\n remainingLevelEntries = nextLevelEntries;\r\n nextLevelEntries = 0;\r\n result.push(row);\r\n row = [];\r\n }\r\n row.push(entry.fn);\r\n entry.children.forEach(function(childEntry) {\r\n nextLevelEntries++;\r\n queue.push(childEntry);\r\n });\r\n remainingLevelEntries--;\r\n }\r\n\r\n if (row.length) {\r\n result.push(row);\r\n }\r\n\r\n return result;\r\n }\r\n }\r\n\r\n // TODO(matsko): document the signature in a better way\r\n return function(element, event, options) {\r\n options = prepareAnimationOptions(options);\r\n var isStructural = ['enter', 'move', 'leave'].indexOf(event) >= 0;\r\n\r\n // there is no animation at the current moment, however\r\n // these runner methods will get later updated with the\r\n // methods leading into the driver's end/cancel methods\r\n // for now they just stop the animation from starting\r\n var runner = new $$AnimateRunner({\r\n end: function() { close(); },\r\n cancel: function() { close(true); }\r\n });\r\n\r\n if (!drivers.length) {\r\n close();\r\n return runner;\r\n }\r\n\r\n setRunner(element, runner);\r\n\r\n var classes = mergeClasses(element.attr('class'), mergeClasses(options.addClass, options.removeClass));\r\n var tempClasses = options.tempClasses;\r\n if (tempClasses) {\r\n classes += ' ' + tempClasses;\r\n options.tempClasses = null;\r\n }\r\n\r\n var prepareClassName;\r\n if (isStructural) {\r\n prepareClassName = 'ng-' + event + PREPARE_CLASS_SUFFIX;\r\n $$jqLite.addClass(element, prepareClassName);\r\n }\r\n\r\n animationQueue.push({\r\n // this data is used by the postDigest code and passed into\r\n // the driver step function\r\n element: element,\r\n classes: classes,\r\n event: event,\r\n structural: isStructural,\r\n options: options,\r\n beforeStart: beforeStart,\r\n close: close\r\n });\r\n\r\n element.on('$destroy', handleDestroyedElement);\r\n\r\n // we only want there to be one function called within the post digest\r\n // block. This way we can group animations for all the animations that\r\n // were apart of the same postDigest flush call.\r\n if (animationQueue.length > 1) return runner;\r\n\r\n $rootScope.$$postDigest(function() {\r\n var animations = [];\r\n forEach(animationQueue, function(entry) {\r\n // the element was destroyed early on which removed the runner\r\n // form its storage. This means we can't animate this element\r\n // at all and it already has been closed due to destruction.\r\n if (getRunner(entry.element)) {\r\n animations.push(entry);\r\n } else {\r\n entry.close();\r\n }\r\n });\r\n\r\n // now any future animations will be in another postDigest\r\n animationQueue.length = 0;\r\n\r\n var groupedAnimations = groupAnimations(animations);\r\n var toBeSortedAnimations = [];\r\n\r\n forEach(groupedAnimations, function(animationEntry) {\r\n toBeSortedAnimations.push({\r\n domNode: getDomNode(animationEntry.from ? animationEntry.from.element : animationEntry.element),\r\n fn: function triggerAnimationStart() {\r\n // it's important that we apply the `ng-animate` CSS class and the\r\n // temporary classes before we do any driver invoking since these\r\n // CSS classes may be required for proper CSS detection.\r\n animationEntry.beforeStart();\r\n\r\n var startAnimationFn, closeFn = animationEntry.close;\r\n\r\n // in the event that the element was removed before the digest runs or\r\n // during the RAF sequencing then we should not trigger the animation.\r\n var targetElement = animationEntry.anchors\r\n ? (animationEntry.from.element || animationEntry.to.element)\r\n : animationEntry.element;\r\n\r\n if (getRunner(targetElement)) {\r\n var operation = invokeFirstDriver(animationEntry);\r\n if (operation) {\r\n startAnimationFn = operation.start;\r\n }\r\n }\r\n\r\n if (!startAnimationFn) {\r\n closeFn();\r\n } else {\r\n var animationRunner = startAnimationFn();\r\n animationRunner.done(function(status) {\r\n closeFn(!status);\r\n });\r\n updateAnimationRunners(animationEntry, animationRunner);\r\n }\r\n }\r\n });\r\n });\r\n\r\n // we need to sort each of the animations in order of parent to child\r\n // relationships. This ensures that the child classes are applied at the\r\n // right time.\r\n $$rAFScheduler(sortAnimations(toBeSortedAnimations));\r\n });\r\n\r\n return runner;\r\n\r\n // TODO(matsko): change to reference nodes\r\n function getAnchorNodes(node) {\r\n var SELECTOR = '[' + NG_ANIMATE_REF_ATTR + ']';\r\n var items = node.hasAttribute(NG_ANIMATE_REF_ATTR)\r\n ? [node]\r\n : node.querySelectorAll(SELECTOR);\r\n var anchors = [];\r\n forEach(items, function(node) {\r\n var attr = node.getAttribute(NG_ANIMATE_REF_ATTR);\r\n if (attr && attr.length) {\r\n anchors.push(node);\r\n }\r\n });\r\n return anchors;\r\n }\r\n\r\n function groupAnimations(animations) {\r\n var preparedAnimations = [];\r\n var refLookup = {};\r\n forEach(animations, function(animation, index) {\r\n var element = animation.element;\r\n var node = getDomNode(element);\r\n var event = animation.event;\r\n var enterOrMove = ['enter', 'move'].indexOf(event) >= 0;\r\n var anchorNodes = animation.structural ? getAnchorNodes(node) : [];\r\n\r\n if (anchorNodes.length) {\r\n var direction = enterOrMove ? 'to' : 'from';\r\n\r\n forEach(anchorNodes, function(anchor) {\r\n var key = anchor.getAttribute(NG_ANIMATE_REF_ATTR);\r\n refLookup[key] = refLookup[key] || {};\r\n refLookup[key][direction] = {\r\n animationID: index,\r\n element: jqLite(anchor)\r\n };\r\n });\r\n } else {\r\n preparedAnimations.push(animation);\r\n }\r\n });\r\n\r\n var usedIndicesLookup = {};\r\n var anchorGroups = {};\r\n forEach(refLookup, function(operations, key) {\r\n var from = operations.from;\r\n var to = operations.to;\r\n\r\n if (!from || !to) {\r\n // only one of these is set therefore we can't have an\r\n // anchor animation since all three pieces are required\r\n var index = from ? from.animationID : to.animationID;\r\n var indexKey = index.toString();\r\n if (!usedIndicesLookup[indexKey]) {\r\n usedIndicesLookup[indexKey] = true;\r\n preparedAnimations.push(animations[index]);\r\n }\r\n return;\r\n }\r\n\r\n var fromAnimation = animations[from.animationID];\r\n var toAnimation = animations[to.animationID];\r\n var lookupKey = from.animationID.toString();\r\n if (!anchorGroups[lookupKey]) {\r\n var group = anchorGroups[lookupKey] = {\r\n structural: true,\r\n beforeStart: function() {\r\n fromAnimation.beforeStart();\r\n toAnimation.beforeStart();\r\n },\r\n close: function() {\r\n fromAnimation.close();\r\n toAnimation.close();\r\n },\r\n classes: cssClassesIntersection(fromAnimation.classes, toAnimation.classes),\r\n from: fromAnimation,\r\n to: toAnimation,\r\n anchors: [] // TODO(matsko): change to reference nodes\r\n };\r\n\r\n // the anchor animations require that the from and to elements both have at least\r\n // one shared CSS class which effectively marries the two elements together to use\r\n // the same animation driver and to properly sequence the anchor animation.\r\n if (group.classes.length) {\r\n preparedAnimations.push(group);\r\n } else {\r\n preparedAnimations.push(fromAnimation);\r\n preparedAnimations.push(toAnimation);\r\n }\r\n }\r\n\r\n anchorGroups[lookupKey].anchors.push({\r\n 'out': from.element, 'in': to.element\r\n });\r\n });\r\n\r\n return preparedAnimations;\r\n }\r\n\r\n function cssClassesIntersection(a,b) {\r\n a = a.split(' ');\r\n b = b.split(' ');\r\n var matches = [];\r\n\r\n for (var i = 0; i < a.length; i++) {\r\n var aa = a[i];\r\n if (aa.substring(0,3) === 'ng-') continue;\r\n\r\n for (var j = 0; j < b.length; j++) {\r\n if (aa === b[j]) {\r\n matches.push(aa);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return matches.join(' ');\r\n }\r\n\r\n function invokeFirstDriver(animationDetails) {\r\n // we loop in reverse order since the more general drivers (like CSS and JS)\r\n // may attempt more elements, but custom drivers are more particular\r\n for (var i = drivers.length - 1; i >= 0; i--) {\r\n var driverName = drivers[i];\r\n var factory = $injector.get(driverName);\r\n var driver = factory(animationDetails);\r\n if (driver) {\r\n return driver;\r\n }\r\n }\r\n }\r\n\r\n function beforeStart() {\r\n element.addClass(NG_ANIMATE_CLASSNAME);\r\n if (tempClasses) {\r\n $$jqLite.addClass(element, tempClasses);\r\n }\r\n if (prepareClassName) {\r\n $$jqLite.removeClass(element, prepareClassName);\r\n prepareClassName = null;\r\n }\r\n }\r\n\r\n function updateAnimationRunners(animation, newRunner) {\r\n if (animation.from && animation.to) {\r\n update(animation.from.element);\r\n update(animation.to.element);\r\n } else {\r\n update(animation.element);\r\n }\r\n\r\n function update(element) {\r\n var runner = getRunner(element);\r\n if (runner) runner.setHost(newRunner);\r\n }\r\n }\r\n\r\n function handleDestroyedElement() {\r\n var runner = getRunner(element);\r\n if (runner && (event !== 'leave' || !options.$$domOperationFired)) {\r\n runner.end();\r\n }\r\n }\r\n\r\n function close(rejected) {\r\n element.off('$destroy', handleDestroyedElement);\r\n removeRunner(element);\r\n\r\n applyAnimationClasses(element, options);\r\n applyAnimationStyles(element, options);\r\n options.domOperation();\r\n\r\n if (tempClasses) {\r\n $$jqLite.removeClass(element, tempClasses);\r\n }\r\n\r\n element.removeClass(NG_ANIMATE_CLASSNAME);\r\n runner.complete(!rejected);\r\n }\r\n };\r\n }];\r\n}];\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name ngAnimateSwap\r\n * @restrict A\r\n * @scope\r\n *\r\n * @description\r\n *\r\n * ngAnimateSwap is a animation-oriented directive that allows for the container to\r\n * be removed and entered in whenever the associated expression changes. A\r\n * common usecase for this directive is a rotating banner or slider component which\r\n * contains one image being present at a time. When the active image changes\r\n * then the old image will perform a `leave` animation and the new element\r\n * will be inserted via an `enter` animation.\r\n *\r\n * @animations\r\n * | Animation | Occurs |\r\n * |----------------------------------|--------------------------------------|\r\n * | {@link ng.$animate#enter enter} | when the new element is inserted to the DOM |\r\n * | {@link ng.$animate#leave leave} | when the old element is removed from the DOM |\r\n *\r\n * @example\r\n * \r\n * \r\n *
    \r\n *
    \r\n * {{ number }}\r\n *
    \r\n *
    \r\n *
    \r\n * \r\n * angular.module('ngAnimateSwapExample', ['ngAnimate'])\r\n * .controller('AppCtrl', ['$scope', '$interval', function($scope, $interval) {\r\n * $scope.number = 0;\r\n * $interval(function() {\r\n * $scope.number++;\r\n * }, 1000);\r\n *\r\n * var colors = ['red','blue','green','yellow','orange'];\r\n * $scope.colorClass = function(number) {\r\n * return colors[number % colors.length];\r\n * };\r\n * }]);\r\n * \r\n * \r\n * .container {\r\n * height:250px;\r\n * width:250px;\r\n * position:relative;\r\n * overflow:hidden;\r\n * border:2px solid black;\r\n * }\r\n * .container .cell {\r\n * font-size:150px;\r\n * text-align:center;\r\n * line-height:250px;\r\n * position:absolute;\r\n * top:0;\r\n * left:0;\r\n * right:0;\r\n * border-bottom:2px solid black;\r\n * }\r\n * .swap-animation.ng-enter, .swap-animation.ng-leave {\r\n * transition:0.5s linear all;\r\n * }\r\n * .swap-animation.ng-enter {\r\n * top:-250px;\r\n * }\r\n * .swap-animation.ng-enter-active {\r\n * top:0px;\r\n * }\r\n * .swap-animation.ng-leave {\r\n * top:0px;\r\n * }\r\n * .swap-animation.ng-leave-active {\r\n * top:250px;\r\n * }\r\n * .red { background:red; }\r\n * .green { background:green; }\r\n * .blue { background:blue; }\r\n * .yellow { background:yellow; }\r\n * .orange { background:orange; }\r\n * \r\n *
    \r\n */\r\nvar ngAnimateSwapDirective = ['$animate', '$rootScope', function($animate, $rootScope) {\r\n return {\r\n restrict: 'A',\r\n transclude: 'element',\r\n terminal: true,\r\n priority: 600, // we use 600 here to ensure that the directive is caught before others\r\n link: function(scope, $element, attrs, ctrl, $transclude) {\r\n var previousElement, previousScope;\r\n scope.$watchCollection(attrs.ngAnimateSwap || attrs['for'], function(value) {\r\n if (previousElement) {\r\n $animate.leave(previousElement);\r\n }\r\n if (previousScope) {\r\n previousScope.$destroy();\r\n previousScope = null;\r\n }\r\n if (value || value === 0) {\r\n previousScope = scope.$new();\r\n $transclude(previousScope, function(element) {\r\n previousElement = element;\r\n $animate.enter(element, null, $element);\r\n });\r\n }\r\n });\r\n }\r\n };\r\n}];\r\n\r\n/**\r\n * @ngdoc module\r\n * @name ngAnimate\r\n * @description\r\n *\r\n * The `ngAnimate` module provides support for CSS-based animations (keyframes and transitions) as well as JavaScript-based animations via\r\n * callback hooks. Animations are not enabled by default, however, by including `ngAnimate` the animation hooks are enabled for an Angular app.\r\n *\r\n * ## Usage\r\n * Simply put, there are two ways to make use of animations when ngAnimate is used: by using **CSS** and **JavaScript**. The former works purely based\r\n * using CSS (by using matching CSS selectors/styles) and the latter triggers animations that are registered via `module.animation()`. For\r\n * both CSS and JS animations the sole requirement is to have a matching `CSS class` that exists both in the registered animation and within\r\n * the HTML element that the animation will be triggered on.\r\n *\r\n * ## Directive Support\r\n * The following directives are \"animation aware\":\r\n *\r\n * | Directive | Supported Animations |\r\n * |----------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------|\r\n * | {@link ng.directive:ngRepeat#animations ngRepeat} | enter, leave and move |\r\n * | {@link ngRoute.directive:ngView#animations ngView} | enter and leave |\r\n * | {@link ng.directive:ngInclude#animations ngInclude} | enter and leave |\r\n * | {@link ng.directive:ngSwitch#animations ngSwitch} | enter and leave |\r\n * | {@link ng.directive:ngIf#animations ngIf} | enter and leave |\r\n * | {@link ng.directive:ngClass#animations ngClass} | add and remove (the CSS class(es) present) |\r\n * | {@link ng.directive:ngShow#animations ngShow} & {@link ng.directive:ngHide#animations ngHide} | add and remove (the ng-hide class value) |\r\n * | {@link ng.directive:form#animations form} & {@link ng.directive:ngModel#animations ngModel} | add and remove (dirty, pristine, valid, invalid & all other validations) |\r\n * | {@link module:ngMessages#animations ngMessages} | add and remove (ng-active & ng-inactive) |\r\n * | {@link module:ngMessages#animations ngMessage} | enter and leave |\r\n *\r\n * (More information can be found by visiting each the documentation associated with each directive.)\r\n *\r\n * ## CSS-based Animations\r\n *\r\n * CSS-based animations with ngAnimate are unique since they require no JavaScript code at all. By using a CSS class that we reference between our HTML\r\n * and CSS code we can create an animation that will be picked up by Angular when an underlying directive performs an operation.\r\n *\r\n * The example below shows how an `enter` animation can be made possible on an element using `ng-if`:\r\n *\r\n * ```html\r\n *
    \r\n * Fade me in out\r\n *
    \r\n * \r\n * \r\n * ```\r\n *\r\n * Notice the CSS class **fade**? We can now create the CSS transition code that references this class:\r\n *\r\n * ```css\r\n * /* The starting CSS styles for the enter animation */\r\n * .fade.ng-enter {\r\n * transition:0.5s linear all;\r\n * opacity:0;\r\n * }\r\n *\r\n * /* The finishing CSS styles for the enter animation */\r\n * .fade.ng-enter.ng-enter-active {\r\n * opacity:1;\r\n * }\r\n * ```\r\n *\r\n * The key thing to remember here is that, depending on the animation event (which each of the directives above trigger depending on what's going on) two\r\n * generated CSS classes will be applied to the element; in the example above we have `.ng-enter` and `.ng-enter-active`. For CSS transitions, the transition\r\n * code **must** be defined within the starting CSS class (in this case `.ng-enter`). The destination class is what the transition will animate towards.\r\n *\r\n * If for example we wanted to create animations for `leave` and `move` (ngRepeat triggers move) then we can do so using the same CSS naming conventions:\r\n *\r\n * ```css\r\n * /* now the element will fade out before it is removed from the DOM */\r\n * .fade.ng-leave {\r\n * transition:0.5s linear all;\r\n * opacity:1;\r\n * }\r\n * .fade.ng-leave.ng-leave-active {\r\n * opacity:0;\r\n * }\r\n * ```\r\n *\r\n * We can also make use of **CSS Keyframes** by referencing the keyframe animation within the starting CSS class:\r\n *\r\n * ```css\r\n * /* there is no need to define anything inside of the destination\r\n * CSS class since the keyframe will take charge of the animation */\r\n * .fade.ng-leave {\r\n * animation: my_fade_animation 0.5s linear;\r\n * -webkit-animation: my_fade_animation 0.5s linear;\r\n * }\r\n *\r\n * @keyframes my_fade_animation {\r\n * from { opacity:1; }\r\n * to { opacity:0; }\r\n * }\r\n *\r\n * @-webkit-keyframes my_fade_animation {\r\n * from { opacity:1; }\r\n * to { opacity:0; }\r\n * }\r\n * ```\r\n *\r\n * Feel free also mix transitions and keyframes together as well as any other CSS classes on the same element.\r\n *\r\n * ### CSS Class-based Animations\r\n *\r\n * Class-based animations (animations that are triggered via `ngClass`, `ngShow`, `ngHide` and some other directives) have a slightly different\r\n * naming convention. Class-based animations are basic enough that a standard transition or keyframe can be referenced on the class being added\r\n * and removed.\r\n *\r\n * For example if we wanted to do a CSS animation for `ngHide` then we place an animation on the `.ng-hide` CSS class:\r\n *\r\n * ```html\r\n *
    \r\n * Show and hide me\r\n *
    \r\n * \r\n *\r\n * \r\n * ```\r\n *\r\n * All that is going on here with ngShow/ngHide behind the scenes is the `.ng-hide` class is added/removed (when the hidden state is valid). Since\r\n * ngShow and ngHide are animation aware then we can match up a transition and ngAnimate handles the rest.\r\n *\r\n * In addition the addition and removal of the CSS class, ngAnimate also provides two helper methods that we can use to further decorate the animation\r\n * with CSS styles.\r\n *\r\n * ```html\r\n *
    \r\n * Highlight this box\r\n *
    \r\n * \r\n *\r\n * \r\n * ```\r\n *\r\n * We can also make use of CSS keyframes by placing them within the CSS classes.\r\n *\r\n *\r\n * ### CSS Staggering Animations\r\n * A Staggering animation is a collection of animations that are issued with a slight delay in between each successive operation resulting in a\r\n * curtain-like effect. The ngAnimate module (versions >=1.2) supports staggering animations and the stagger effect can be\r\n * performed by creating a **ng-EVENT-stagger** CSS class and attaching that class to the base CSS class used for\r\n * the animation. The style property expected within the stagger class can either be a **transition-delay** or an\r\n * **animation-delay** property (or both if your animation contains both transitions and keyframe animations).\r\n *\r\n * ```css\r\n * .my-animation.ng-enter {\r\n * /* standard transition code */\r\n * transition: 1s linear all;\r\n * opacity:0;\r\n * }\r\n * .my-animation.ng-enter-stagger {\r\n * /* this will have a 100ms delay between each successive leave animation */\r\n * transition-delay: 0.1s;\r\n *\r\n * /* As of 1.4.4, this must always be set: it signals ngAnimate\r\n * to not accidentally inherit a delay property from another CSS class */\r\n * transition-duration: 0s;\r\n *\r\n * /* if you are using animations instead of transitions you should configure as follows:\r\n * animation-delay: 0.1s;\r\n * animation-duration: 0s; */\r\n * }\r\n * .my-animation.ng-enter.ng-enter-active {\r\n * /* standard transition styles */\r\n * opacity:1;\r\n * }\r\n * ```\r\n *\r\n * Staggering animations work by default in ngRepeat (so long as the CSS class is defined). Outside of ngRepeat, to use staggering animations\r\n * on your own, they can be triggered by firing multiple calls to the same event on $animate. However, the restrictions surrounding this\r\n * are that each of the elements must have the same CSS className value as well as the same parent element. A stagger operation\r\n * will also be reset if one or more animation frames have passed since the multiple calls to `$animate` were fired.\r\n *\r\n * The following code will issue the **ng-leave-stagger** event on the element provided:\r\n *\r\n * ```js\r\n * var kids = parent.children();\r\n *\r\n * $animate.leave(kids[0]); //stagger index=0\r\n * $animate.leave(kids[1]); //stagger index=1\r\n * $animate.leave(kids[2]); //stagger index=2\r\n * $animate.leave(kids[3]); //stagger index=3\r\n * $animate.leave(kids[4]); //stagger index=4\r\n *\r\n * window.requestAnimationFrame(function() {\r\n * //stagger has reset itself\r\n * $animate.leave(kids[5]); //stagger index=0\r\n * $animate.leave(kids[6]); //stagger index=1\r\n *\r\n * $scope.$digest();\r\n * });\r\n * ```\r\n *\r\n * Stagger animations are currently only supported within CSS-defined animations.\r\n *\r\n * ### The `ng-animate` CSS class\r\n *\r\n * When ngAnimate is animating an element it will apply the `ng-animate` CSS class to the element for the duration of the animation.\r\n * This is a temporary CSS class and it will be removed once the animation is over (for both JavaScript and CSS-based animations).\r\n *\r\n * Therefore, animations can be applied to an element using this temporary class directly via CSS.\r\n *\r\n * ```css\r\n * .zipper.ng-animate {\r\n * transition:0.5s linear all;\r\n * }\r\n * .zipper.ng-enter {\r\n * opacity:0;\r\n * }\r\n * .zipper.ng-enter.ng-enter-active {\r\n * opacity:1;\r\n * }\r\n * .zipper.ng-leave {\r\n * opacity:1;\r\n * }\r\n * .zipper.ng-leave.ng-leave-active {\r\n * opacity:0;\r\n * }\r\n * ```\r\n *\r\n * (Note that the `ng-animate` CSS class is reserved and it cannot be applied on an element directly since ngAnimate will always remove\r\n * the CSS class once an animation has completed.)\r\n *\r\n *\r\n * ### The `ng-[event]-prepare` class\r\n *\r\n * This is a special class that can be used to prevent unwanted flickering / flash of content before\r\n * the actual animation starts. The class is added as soon as an animation is initialized, but removed\r\n * before the actual animation starts (after waiting for a $digest).\r\n * It is also only added for *structural* animations (`enter`, `move`, and `leave`).\r\n *\r\n * In practice, flickering can appear when nesting elements with structural animations such as `ngIf`\r\n * into elements that have class-based animations such as `ngClass`.\r\n *\r\n * ```html\r\n *
    \r\n *
    \r\n *
    \r\n *
    \r\n *
    \r\n * ```\r\n *\r\n * It is possible that during the `enter` animation, the `.message` div will be briefly visible before it starts animating.\r\n * In that case, you can add styles to the CSS that make sure the element stays hidden before the animation starts:\r\n *\r\n * ```css\r\n * .message.ng-enter-prepare {\r\n * opacity: 0;\r\n * }\r\n *\r\n * ```\r\n *\r\n * ## JavaScript-based Animations\r\n *\r\n * ngAnimate also allows for animations to be consumed by JavaScript code. The approach is similar to CSS-based animations (where there is a shared\r\n * CSS class that is referenced in our HTML code) but in addition we need to register the JavaScript animation on the module. By making use of the\r\n * `module.animation()` module function we can register the animation.\r\n *\r\n * Let's see an example of a enter/leave animation using `ngRepeat`:\r\n *\r\n * ```html\r\n *
    \r\n * {{ item }}\r\n *
    \r\n * ```\r\n *\r\n * See the **slide** CSS class? Let's use that class to define an animation that we'll structure in our module code by using `module.animation`:\r\n *\r\n * ```js\r\n * myModule.animation('.slide', [function() {\r\n * return {\r\n * // make note that other events (like addClass/removeClass)\r\n * // have different function input parameters\r\n * enter: function(element, doneFn) {\r\n * jQuery(element).fadeIn(1000, doneFn);\r\n *\r\n * // remember to call doneFn so that angular\r\n * // knows that the animation has concluded\r\n * },\r\n *\r\n * move: function(element, doneFn) {\r\n * jQuery(element).fadeIn(1000, doneFn);\r\n * },\r\n *\r\n * leave: function(element, doneFn) {\r\n * jQuery(element).fadeOut(1000, doneFn);\r\n * }\r\n * }\r\n * }]);\r\n * ```\r\n *\r\n * The nice thing about JS-based animations is that we can inject other services and make use of advanced animation libraries such as\r\n * greensock.js and velocity.js.\r\n *\r\n * If our animation code class-based (meaning that something like `ngClass`, `ngHide` and `ngShow` triggers it) then we can still define\r\n * our animations inside of the same registered animation, however, the function input arguments are a bit different:\r\n *\r\n * ```html\r\n *
    \r\n * this box is moody\r\n *
    \r\n * \r\n * \r\n * \r\n * ```\r\n *\r\n * ```js\r\n * myModule.animation('.colorful', [function() {\r\n * return {\r\n * addClass: function(element, className, doneFn) {\r\n * // do some cool animation and call the doneFn\r\n * },\r\n * removeClass: function(element, className, doneFn) {\r\n * // do some cool animation and call the doneFn\r\n * },\r\n * setClass: function(element, addedClass, removedClass, doneFn) {\r\n * // do some cool animation and call the doneFn\r\n * }\r\n * }\r\n * }]);\r\n * ```\r\n *\r\n * ## CSS + JS Animations Together\r\n *\r\n * AngularJS 1.4 and higher has taken steps to make the amalgamation of CSS and JS animations more flexible. However, unlike earlier versions of Angular,\r\n * defining CSS and JS animations to work off of the same CSS class will not work anymore. Therefore the example below will only result in **JS animations taking\r\n * charge of the animation**:\r\n *\r\n * ```html\r\n *
    \r\n * Slide in and out\r\n *
    \r\n * ```\r\n *\r\n * ```js\r\n * myModule.animation('.slide', [function() {\r\n * return {\r\n * enter: function(element, doneFn) {\r\n * jQuery(element).slideIn(1000, doneFn);\r\n * }\r\n * }\r\n * }]);\r\n * ```\r\n *\r\n * ```css\r\n * .slide.ng-enter {\r\n * transition:0.5s linear all;\r\n * transform:translateY(-100px);\r\n * }\r\n * .slide.ng-enter.ng-enter-active {\r\n * transform:translateY(0);\r\n * }\r\n * ```\r\n *\r\n * Does this mean that CSS and JS animations cannot be used together? Do JS-based animations always have higher priority? We can make up for the\r\n * lack of CSS animations by using the `$animateCss` service to trigger our own tweaked-out, CSS-based animations directly from\r\n * our own JS-based animation code:\r\n *\r\n * ```js\r\n * myModule.animation('.slide', ['$animateCss', function($animateCss) {\r\n * return {\r\n * enter: function(element) {\r\n* // this will trigger `.slide.ng-enter` and `.slide.ng-enter-active`.\r\n * return $animateCss(element, {\r\n * event: 'enter',\r\n * structural: true\r\n * });\r\n * }\r\n * }\r\n * }]);\r\n * ```\r\n *\r\n * The nice thing here is that we can save bandwidth by sticking to our CSS-based animation code and we don't need to rely on a 3rd-party animation framework.\r\n *\r\n * The `$animateCss` service is very powerful since we can feed in all kinds of extra properties that will be evaluated and fed into a CSS transition or\r\n * keyframe animation. For example if we wanted to animate the height of an element while adding and removing classes then we can do so by providing that\r\n * data into `$animateCss` directly:\r\n *\r\n * ```js\r\n * myModule.animation('.slide', ['$animateCss', function($animateCss) {\r\n * return {\r\n * enter: function(element) {\r\n * return $animateCss(element, {\r\n * event: 'enter',\r\n * structural: true,\r\n * addClass: 'maroon-setting',\r\n * from: { height:0 },\r\n * to: { height: 200 }\r\n * });\r\n * }\r\n * }\r\n * }]);\r\n * ```\r\n *\r\n * Now we can fill in the rest via our transition CSS code:\r\n *\r\n * ```css\r\n * /* the transition tells ngAnimate to make the animation happen */\r\n * .slide.ng-enter { transition:0.5s linear all; }\r\n *\r\n * /* this extra CSS class will be absorbed into the transition\r\n * since the $animateCss code is adding the class */\r\n * .maroon-setting { background:red; }\r\n * ```\r\n *\r\n * And `$animateCss` will figure out the rest. Just make sure to have the `done()` callback fire the `doneFn` function to signal when the animation is over.\r\n *\r\n * To learn more about what's possible be sure to visit the {@link ngAnimate.$animateCss $animateCss service}.\r\n *\r\n * ## Animation Anchoring (via `ng-animate-ref`)\r\n *\r\n * ngAnimate in AngularJS 1.4 comes packed with the ability to cross-animate elements between\r\n * structural areas of an application (like views) by pairing up elements using an attribute\r\n * called `ng-animate-ref`.\r\n *\r\n * Let's say for example we have two views that are managed by `ng-view` and we want to show\r\n * that there is a relationship between two components situated in within these views. By using the\r\n * `ng-animate-ref` attribute we can identify that the two components are paired together and we\r\n * can then attach an animation, which is triggered when the view changes.\r\n *\r\n * Say for example we have the following template code:\r\n *\r\n * ```html\r\n * \r\n *
    \r\n *
    \r\n *\r\n * \r\n * \r\n * \r\n * \r\n *\r\n * \r\n * \r\n * ```\r\n *\r\n * Now, when the view changes (once the link is clicked), ngAnimate will examine the\r\n * HTML contents to see if there is a match reference between any components in the view\r\n * that is leaving and the view that is entering. It will scan both the view which is being\r\n * removed (leave) and inserted (enter) to see if there are any paired DOM elements that\r\n * contain a matching ref value.\r\n *\r\n * The two images match since they share the same ref value. ngAnimate will now create a\r\n * transport element (which is a clone of the first image element) and it will then attempt\r\n * to animate to the position of the second image element in the next view. For the animation to\r\n * work a special CSS class called `ng-anchor` will be added to the transported element.\r\n *\r\n * We can now attach a transition onto the `.banner.ng-anchor` CSS class and then\r\n * ngAnimate will handle the entire transition for us as well as the addition and removal of\r\n * any changes of CSS classes between the elements:\r\n *\r\n * ```css\r\n * .banner.ng-anchor {\r\n * /* this animation will last for 1 second since there are\r\n * two phases to the animation (an `in` and an `out` phase) */\r\n * transition:0.5s linear all;\r\n * }\r\n * ```\r\n *\r\n * We also **must** include animations for the views that are being entered and removed\r\n * (otherwise anchoring wouldn't be possible since the new view would be inserted right away).\r\n *\r\n * ```css\r\n * .view-animation.ng-enter, .view-animation.ng-leave {\r\n * transition:0.5s linear all;\r\n * position:fixed;\r\n * left:0;\r\n * top:0;\r\n * width:100%;\r\n * }\r\n * .view-animation.ng-enter {\r\n * transform:translateX(100%);\r\n * }\r\n * .view-animation.ng-leave,\r\n * .view-animation.ng-enter.ng-enter-active {\r\n * transform:translateX(0%);\r\n * }\r\n * .view-animation.ng-leave.ng-leave-active {\r\n * transform:translateX(-100%);\r\n * }\r\n * ```\r\n *\r\n * Now we can jump back to the anchor animation. When the animation happens, there are two stages that occur:\r\n * an `out` and an `in` stage. The `out` stage happens first and that is when the element is animated away\r\n * from its origin. Once that animation is over then the `in` stage occurs which animates the\r\n * element to its destination. The reason why there are two animations is to give enough time\r\n * for the enter animation on the new element to be ready.\r\n *\r\n * The example above sets up a transition for both the in and out phases, but we can also target the out or\r\n * in phases directly via `ng-anchor-out` and `ng-anchor-in`.\r\n *\r\n * ```css\r\n * .banner.ng-anchor-out {\r\n * transition: 0.5s linear all;\r\n *\r\n * /* the scale will be applied during the out animation,\r\n * but will be animated away when the in animation runs */\r\n * transform: scale(1.2);\r\n * }\r\n *\r\n * .banner.ng-anchor-in {\r\n * transition: 1s linear all;\r\n * }\r\n * ```\r\n *\r\n *\r\n *\r\n *\r\n * ### Anchoring Demo\r\n *\r\n \r\n \r\n Home\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n angular.module('anchoringExample', ['ngAnimate', 'ngRoute'])\r\n .config(['$routeProvider', function($routeProvider) {\r\n $routeProvider.when('/', {\r\n templateUrl: 'home.html',\r\n controller: 'HomeController as home'\r\n });\r\n $routeProvider.when('/profile/:id', {\r\n templateUrl: 'profile.html',\r\n controller: 'ProfileController as profile'\r\n });\r\n }])\r\n .run(['$rootScope', function($rootScope) {\r\n $rootScope.records = [\r\n { id: 1, title: 'Miss Beulah Roob' },\r\n { id: 2, title: 'Trent Morissette' },\r\n { id: 3, title: 'Miss Ava Pouros' },\r\n { id: 4, title: 'Rod Pouros' },\r\n { id: 5, title: 'Abdul Rice' },\r\n { id: 6, title: 'Laurie Rutherford Sr.' },\r\n { id: 7, title: 'Nakia McLaughlin' },\r\n { id: 8, title: 'Jordon Blanda DVM' },\r\n { id: 9, title: 'Rhoda Hand' },\r\n { id: 10, title: 'Alexandrea Sauer' }\r\n ];\r\n }])\r\n .controller('HomeController', [function() {\r\n //empty\r\n }])\r\n .controller('ProfileController', ['$rootScope', '$routeParams',\r\n function ProfileController($rootScope, $routeParams) {\r\n var index = parseInt($routeParams.id, 10);\r\n var record = $rootScope.records[index - 1];\r\n\r\n this.title = record.title;\r\n this.id = record.id;\r\n }]);\r\n \r\n \r\n

    Welcome to the home page

    \r\n

    Please click on an element

    \r\n \r\n {{ record.title }}\r\n \r\n
    \r\n \r\n
    \r\n {{ profile.title }}\r\n
    \r\n
    \r\n \r\n .record {\r\n display:block;\r\n font-size:20px;\r\n }\r\n .profile {\r\n background:black;\r\n color:white;\r\n font-size:100px;\r\n }\r\n .view-container {\r\n position:relative;\r\n }\r\n .view-container > .view.ng-animate {\r\n position:absolute;\r\n top:0;\r\n left:0;\r\n width:100%;\r\n min-height:500px;\r\n }\r\n .view.ng-enter, .view.ng-leave,\r\n .record.ng-anchor {\r\n transition:0.5s linear all;\r\n }\r\n .view.ng-enter {\r\n transform:translateX(100%);\r\n }\r\n .view.ng-enter.ng-enter-active, .view.ng-leave {\r\n transform:translateX(0%);\r\n }\r\n .view.ng-leave.ng-leave-active {\r\n transform:translateX(-100%);\r\n }\r\n .record.ng-anchor-out {\r\n background:red;\r\n }\r\n \r\n
    \r\n *\r\n * ### How is the element transported?\r\n *\r\n * When an anchor animation occurs, ngAnimate will clone the starting element and position it exactly where the starting\r\n * element is located on screen via absolute positioning. The cloned element will be placed inside of the root element\r\n * of the application (where ng-app was defined) and all of the CSS classes of the starting element will be applied. The\r\n * element will then animate into the `out` and `in` animations and will eventually reach the coordinates and match\r\n * the dimensions of the destination element. During the entire animation a CSS class of `.ng-animate-shim` will be applied\r\n * to both the starting and destination elements in order to hide them from being visible (the CSS styling for the class\r\n * is: `visibility:hidden`). Once the anchor reaches its destination then it will be removed and the destination element\r\n * will become visible since the shim class will be removed.\r\n *\r\n * ### How is the morphing handled?\r\n *\r\n * CSS Anchoring relies on transitions and keyframes and the internal code is intelligent enough to figure out\r\n * what CSS classes differ between the starting element and the destination element. These different CSS classes\r\n * will be added/removed on the anchor element and a transition will be applied (the transition that is provided\r\n * in the anchor class). Long story short, ngAnimate will figure out what classes to add and remove which will\r\n * make the transition of the element as smooth and automatic as possible. Be sure to use simple CSS classes that\r\n * do not rely on DOM nesting structure so that the anchor element appears the same as the starting element (since\r\n * the cloned element is placed inside of root element which is likely close to the body element).\r\n *\r\n * Note that if the root element is on the `` element then the cloned node will be placed inside of body.\r\n *\r\n *\r\n * ## Using $animate in your directive code\r\n *\r\n * So far we've explored how to feed in animations into an Angular application, but how do we trigger animations within our own directives in our application?\r\n * By injecting the `$animate` service into our directive code, we can trigger structural and class-based hooks which can then be consumed by animations. Let's\r\n * imagine we have a greeting box that shows and hides itself when the data changes\r\n *\r\n * ```html\r\n * Hi there\r\n * ```\r\n *\r\n * ```js\r\n * ngModule.directive('greetingBox', ['$animate', function($animate) {\r\n * return function(scope, element, attrs) {\r\n * attrs.$observe('active', function(value) {\r\n * value ? $animate.addClass(element, 'on') : $animate.removeClass(element, 'on');\r\n * });\r\n * });\r\n * }]);\r\n * ```\r\n *\r\n * Now the `on` CSS class is added and removed on the greeting box component. Now if we add a CSS class on top of the greeting box element\r\n * in our HTML code then we can trigger a CSS or JS animation to happen.\r\n *\r\n * ```css\r\n * /* normally we would create a CSS class to reference on the element */\r\n * greeting-box.on { transition:0.5s linear all; background:green; color:white; }\r\n * ```\r\n *\r\n * The `$animate` service contains a variety of other methods like `enter`, `leave`, `animate` and `setClass`. To learn more about what's\r\n * possible be sure to visit the {@link ng.$animate $animate service API page}.\r\n *\r\n *\r\n * ## Callbacks and Promises\r\n *\r\n * When `$animate` is called it returns a promise that can be used to capture when the animation has ended. Therefore if we were to trigger\r\n * an animation (within our directive code) then we can continue performing directive and scope related activities after the animation has\r\n * ended by chaining onto the returned promise that animation method returns.\r\n *\r\n * ```js\r\n * // somewhere within the depths of the directive\r\n * $animate.enter(element, parent).then(function() {\r\n * //the animation has completed\r\n * });\r\n * ```\r\n *\r\n * (Note that earlier versions of Angular prior to v1.4 required the promise code to be wrapped using `$scope.$apply(...)`. This is not the case\r\n * anymore.)\r\n *\r\n * In addition to the animation promise, we can also make use of animation-related callbacks within our directives and controller code by registering\r\n * an event listener using the `$animate` service. Let's say for example that an animation was triggered on our view\r\n * routing controller to hook into that:\r\n *\r\n * ```js\r\n * ngModule.controller('HomePageController', ['$animate', function($animate) {\r\n * $animate.on('enter', ngViewElement, function(element) {\r\n * // the animation for this route has completed\r\n * }]);\r\n * }])\r\n * ```\r\n *\r\n * (Note that you will need to trigger a digest within the callback to get angular to notice any scope-related changes.)\r\n */\r\n\r\nvar copy;\r\nvar extend;\r\nvar forEach;\r\nvar isArray;\r\nvar isDefined;\r\nvar isElement;\r\nvar isFunction;\r\nvar isObject;\r\nvar isString;\r\nvar isUndefined;\r\nvar jqLite;\r\nvar noop;\r\n\r\n/**\r\n * @ngdoc service\r\n * @name $animate\r\n * @kind object\r\n *\r\n * @description\r\n * The ngAnimate `$animate` service documentation is the same for the core `$animate` service.\r\n *\r\n * Click here {@link ng.$animate to learn more about animations with `$animate`}.\r\n */\r\nangular.module('ngAnimate', [], function initAngularHelpers() {\r\n // Access helpers from angular core.\r\n // Do it inside a `config` block to ensure `window.angular` is available.\r\n noop = angular.noop;\r\n copy = angular.copy;\r\n extend = angular.extend;\r\n jqLite = angular.element;\r\n forEach = angular.forEach;\r\n isArray = angular.isArray;\r\n isString = angular.isString;\r\n isObject = angular.isObject;\r\n isUndefined = angular.isUndefined;\r\n isDefined = angular.isDefined;\r\n isFunction = angular.isFunction;\r\n isElement = angular.isElement;\r\n})\r\n .info({ angularVersion: '1.6.7' })\r\n .directive('ngAnimateSwap', ngAnimateSwapDirective)\r\n\r\n .directive('ngAnimateChildren', $$AnimateChildrenDirective)\r\n .factory('$$rAFScheduler', $$rAFSchedulerFactory)\r\n\r\n .provider('$$animateQueue', $$AnimateQueueProvider)\r\n .provider('$$animation', $$AnimationProvider)\r\n\r\n .provider('$animateCss', $AnimateCssProvider)\r\n .provider('$$animateCssDriver', $$AnimateCssDriverProvider)\r\n\r\n .provider('$$animateJs', $$AnimateJsProvider)\r\n .provider('$$animateJsDriver', $$AnimateJsDriverProvider);\r\n\r\n\r\n})(window, window.angular);\r\n","/**\r\n * @license AngularJS v1.6.7\r\n * (c) 2010-2017 Google, Inc. http://angularjs.org\r\n * License: MIT\r\n */\r\n(function(window, angular) {'use strict';\r\n\r\n/* global shallowCopy: true */\r\n\r\n/**\r\n * Creates a shallow copy of an object, an array or a primitive.\r\n *\r\n * Assumes that there are no proto properties for objects.\r\n */\r\nfunction shallowCopy(src, dst) {\r\n if (isArray(src)) {\r\n dst = dst || [];\r\n\r\n for (var i = 0, ii = src.length; i < ii; i++) {\r\n dst[i] = src[i];\r\n }\r\n } else if (isObject(src)) {\r\n dst = dst || {};\r\n\r\n for (var key in src) {\r\n if (!(key.charAt(0) === '$' && key.charAt(1) === '$')) {\r\n dst[key] = src[key];\r\n }\r\n }\r\n }\r\n\r\n return dst || src;\r\n}\r\n\r\n/* global shallowCopy: false */\r\n\r\n// `isArray` and `isObject` are necessary for `shallowCopy()` (included via `src/shallowCopy.js`).\r\n// They are initialized inside the `$RouteProvider`, to ensure `window.angular` is available.\r\nvar isArray;\r\nvar isObject;\r\nvar isDefined;\r\nvar noop;\r\n\r\n/**\r\n * @ngdoc module\r\n * @name ngRoute\r\n * @description\r\n *\r\n * The `ngRoute` module provides routing and deeplinking services and directives for AngularJS apps.\r\n *\r\n * ## Example\r\n * See {@link ngRoute.$route#examples $route} for an example of configuring and using `ngRoute`.\r\n *\r\n */\r\n/* global -ngRouteModule */\r\nvar ngRouteModule = angular.\r\n module('ngRoute', []).\r\n info({ angularVersion: '1.6.7' }).\r\n provider('$route', $RouteProvider).\r\n // Ensure `$route` will be instantiated in time to capture the initial `$locationChangeSuccess`\r\n // event (unless explicitly disabled). This is necessary in case `ngView` is included in an\r\n // asynchronously loaded template.\r\n run(instantiateRoute);\r\nvar $routeMinErr = angular.$$minErr('ngRoute');\r\nvar isEagerInstantiationEnabled;\r\n\r\n\r\n/**\r\n * @ngdoc provider\r\n * @name $routeProvider\r\n * @this\r\n *\r\n * @description\r\n *\r\n * Used for configuring routes.\r\n *\r\n * ## Example\r\n * See {@link ngRoute.$route#examples $route} for an example of configuring and using `ngRoute`.\r\n *\r\n * ## Dependencies\r\n * Requires the {@link ngRoute `ngRoute`} module to be installed.\r\n */\r\nfunction $RouteProvider() {\r\n isArray = angular.isArray;\r\n isObject = angular.isObject;\r\n isDefined = angular.isDefined;\r\n noop = angular.noop;\r\n\r\n function inherit(parent, extra) {\r\n return angular.extend(Object.create(parent), extra);\r\n }\r\n\r\n var routes = {};\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $routeProvider#when\r\n *\r\n * @param {string} path Route path (matched against `$location.path`). If `$location.path`\r\n * contains redundant trailing slash or is missing one, the route will still match and the\r\n * `$location.path` will be updated to add or drop the trailing slash to exactly match the\r\n * route definition.\r\n *\r\n * * `path` can contain named groups starting with a colon: e.g. `:name`. All characters up\r\n * to the next slash are matched and stored in `$routeParams` under the given `name`\r\n * when the route matches.\r\n * * `path` can contain named groups starting with a colon and ending with a star:\r\n * e.g.`:name*`. All characters are eagerly stored in `$routeParams` under the given `name`\r\n * when the route matches.\r\n * * `path` can contain optional named groups with a question mark: e.g.`:name?`.\r\n *\r\n * For example, routes like `/color/:color/largecode/:largecode*\\/edit` will match\r\n * `/color/brown/largecode/code/with/slashes/edit` and extract:\r\n *\r\n * * `color: brown`\r\n * * `largecode: code/with/slashes`.\r\n *\r\n *\r\n * @param {Object} route Mapping information to be assigned to `$route.current` on route\r\n * match.\r\n *\r\n * Object properties:\r\n *\r\n * - `controller` – `{(string|Function)=}` – Controller fn that should be associated with\r\n * newly created scope or the name of a {@link angular.Module#controller registered\r\n * controller} if passed as a string.\r\n * - `controllerAs` – `{string=}` – An identifier name for a reference to the controller.\r\n * If present, the controller will be published to scope under the `controllerAs` name.\r\n * - `template` – `{(string|Function)=}` – html template as a string or a function that\r\n * returns an html template as a string which should be used by {@link\r\n * ngRoute.directive:ngView ngView} or {@link ng.directive:ngInclude ngInclude} directives.\r\n * This property takes precedence over `templateUrl`.\r\n *\r\n * If `template` is a function, it will be called with the following parameters:\r\n *\r\n * - `{Array.}` - route parameters extracted from the current\r\n * `$location.path()` by applying the current route\r\n *\r\n * One of `template` or `templateUrl` is required.\r\n *\r\n * - `templateUrl` – `{(string|Function)=}` – path or function that returns a path to an html\r\n * template that should be used by {@link ngRoute.directive:ngView ngView}.\r\n *\r\n * If `templateUrl` is a function, it will be called with the following parameters:\r\n *\r\n * - `{Array.}` - route parameters extracted from the current\r\n * `$location.path()` by applying the current route\r\n *\r\n * One of `templateUrl` or `template` is required.\r\n *\r\n * - `resolve` - `{Object.=}` - An optional map of dependencies which should\r\n * be injected into the controller. If any of these dependencies are promises, the router\r\n * will wait for them all to be resolved or one to be rejected before the controller is\r\n * instantiated.\r\n * If all the promises are resolved successfully, the values of the resolved promises are\r\n * injected and {@link ngRoute.$route#$routeChangeSuccess $routeChangeSuccess} event is\r\n * fired. If any of the promises are rejected the\r\n * {@link ngRoute.$route#$routeChangeError $routeChangeError} event is fired.\r\n * For easier access to the resolved dependencies from the template, the `resolve` map will\r\n * be available on the scope of the route, under `$resolve` (by default) or a custom name\r\n * specified by the `resolveAs` property (see below). This can be particularly useful, when\r\n * working with {@link angular.Module#component components} as route templates.
    \r\n *
    \r\n * **Note:** If your scope already contains a property with this name, it will be hidden\r\n * or overwritten. Make sure, you specify an appropriate name for this property, that\r\n * does not collide with other properties on the scope.\r\n *
    \r\n * The map object is:\r\n *\r\n * - `key` – `{string}`: a name of a dependency to be injected into the controller.\r\n * - `factory` - `{string|Function}`: If `string` then it is an alias for a service.\r\n * Otherwise if function, then it is {@link auto.$injector#invoke injected}\r\n * and the return value is treated as the dependency. If the result is a promise, it is\r\n * resolved before its value is injected into the controller. Be aware that\r\n * `ngRoute.$routeParams` will still refer to the previous route within these resolve\r\n * functions. Use `$route.current.params` to access the new route parameters, instead.\r\n *\r\n * - `resolveAs` - `{string=}` - The name under which the `resolve` map will be available on\r\n * the scope of the route. If omitted, defaults to `$resolve`.\r\n *\r\n * - `redirectTo` – `{(string|Function)=}` – value to update\r\n * {@link ng.$location $location} path with and trigger route redirection.\r\n *\r\n * If `redirectTo` is a function, it will be called with the following parameters:\r\n *\r\n * - `{Object.}` - route parameters extracted from the current\r\n * `$location.path()` by applying the current route templateUrl.\r\n * - `{string}` - current `$location.path()`\r\n * - `{Object}` - current `$location.search()`\r\n *\r\n * The custom `redirectTo` function is expected to return a string which will be used\r\n * to update `$location.url()`. If the function throws an error, no further processing will\r\n * take place and the {@link ngRoute.$route#$routeChangeError $routeChangeError} event will\r\n * be fired.\r\n *\r\n * Routes that specify `redirectTo` will not have their controllers, template functions\r\n * or resolves called, the `$location` will be changed to the redirect url and route\r\n * processing will stop. The exception to this is if the `redirectTo` is a function that\r\n * returns `undefined`. In this case the route transition occurs as though there was no\r\n * redirection.\r\n *\r\n * - `resolveRedirectTo` – `{Function=}` – a function that will (eventually) return the value\r\n * to update {@link ng.$location $location} URL with and trigger route redirection. In\r\n * contrast to `redirectTo`, dependencies can be injected into `resolveRedirectTo` and the\r\n * return value can be either a string or a promise that will be resolved to a string.\r\n *\r\n * Similar to `redirectTo`, if the return value is `undefined` (or a promise that gets\r\n * resolved to `undefined`), no redirection takes place and the route transition occurs as\r\n * though there was no redirection.\r\n *\r\n * If the function throws an error or the returned promise gets rejected, no further\r\n * processing will take place and the\r\n * {@link ngRoute.$route#$routeChangeError $routeChangeError} event will be fired.\r\n *\r\n * `redirectTo` takes precedence over `resolveRedirectTo`, so specifying both on the same\r\n * route definition, will cause the latter to be ignored.\r\n *\r\n * - `[reloadOnSearch=true]` - `{boolean=}` - reload route when only `$location.search()`\r\n * or `$location.hash()` changes.\r\n *\r\n * If the option is set to `false` and url in the browser changes, then\r\n * `$routeUpdate` event is broadcasted on the root scope.\r\n *\r\n * - `[caseInsensitiveMatch=false]` - `{boolean=}` - match routes without being case sensitive\r\n *\r\n * If the option is set to `true`, then the particular route can be matched without being\r\n * case sensitive\r\n *\r\n * @returns {Object} self\r\n *\r\n * @description\r\n * Adds a new route definition to the `$route` service.\r\n */\r\n this.when = function(path, route) {\r\n //copy original route object to preserve params inherited from proto chain\r\n var routeCopy = shallowCopy(route);\r\n if (angular.isUndefined(routeCopy.reloadOnSearch)) {\r\n routeCopy.reloadOnSearch = true;\r\n }\r\n if (angular.isUndefined(routeCopy.caseInsensitiveMatch)) {\r\n routeCopy.caseInsensitiveMatch = this.caseInsensitiveMatch;\r\n }\r\n routes[path] = angular.extend(\r\n routeCopy,\r\n path && pathRegExp(path, routeCopy)\r\n );\r\n\r\n // create redirection for trailing slashes\r\n if (path) {\r\n var redirectPath = (path[path.length - 1] === '/')\r\n ? path.substr(0, path.length - 1)\r\n : path + '/';\r\n\r\n routes[redirectPath] = angular.extend(\r\n {redirectTo: path},\r\n pathRegExp(redirectPath, routeCopy)\r\n );\r\n }\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * @ngdoc property\r\n * @name $routeProvider#caseInsensitiveMatch\r\n * @description\r\n *\r\n * A boolean property indicating if routes defined\r\n * using this provider should be matched using a case insensitive\r\n * algorithm. Defaults to `false`.\r\n */\r\n this.caseInsensitiveMatch = false;\r\n\r\n /**\r\n * @param path {string} path\r\n * @param opts {Object} options\r\n * @return {?Object}\r\n *\r\n * @description\r\n * Normalizes the given path, returning a regular expression\r\n * and the original path.\r\n *\r\n * Inspired by pathRexp in visionmedia/express/lib/utils.js.\r\n */\r\n function pathRegExp(path, opts) {\r\n var insensitive = opts.caseInsensitiveMatch,\r\n ret = {\r\n originalPath: path,\r\n regexp: path\r\n },\r\n keys = ret.keys = [];\r\n\r\n path = path\r\n .replace(/([().])/g, '\\\\$1')\r\n .replace(/(\\/)?:(\\w+)(\\*\\?|[?*])?/g, function(_, slash, key, option) {\r\n var optional = (option === '?' || option === '*?') ? '?' : null;\r\n var star = (option === '*' || option === '*?') ? '*' : null;\r\n keys.push({ name: key, optional: !!optional });\r\n slash = slash || '';\r\n return ''\r\n + (optional ? '' : slash)\r\n + '(?:'\r\n + (optional ? slash : '')\r\n + (star && '(.+?)' || '([^/]+)')\r\n + (optional || '')\r\n + ')'\r\n + (optional || '');\r\n })\r\n .replace(/([/$*])/g, '\\\\$1');\r\n\r\n ret.regexp = new RegExp('^' + path + '$', insensitive ? 'i' : '');\r\n return ret;\r\n }\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $routeProvider#otherwise\r\n *\r\n * @description\r\n * Sets route definition that will be used on route change when no other route definition\r\n * is matched.\r\n *\r\n * @param {Object|string} params Mapping information to be assigned to `$route.current`.\r\n * If called with a string, the value maps to `redirectTo`.\r\n * @returns {Object} self\r\n */\r\n this.otherwise = function(params) {\r\n if (typeof params === 'string') {\r\n params = {redirectTo: params};\r\n }\r\n this.when(null, params);\r\n return this;\r\n };\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $routeProvider#eagerInstantiationEnabled\r\n * @kind function\r\n *\r\n * @description\r\n * Call this method as a setter to enable/disable eager instantiation of the\r\n * {@link ngRoute.$route $route} service upon application bootstrap. You can also call it as a\r\n * getter (i.e. without any arguments) to get the current value of the\r\n * `eagerInstantiationEnabled` flag.\r\n *\r\n * Instantiating `$route` early is necessary for capturing the initial\r\n * {@link ng.$location#$locationChangeStart $locationChangeStart} event and navigating to the\r\n * appropriate route. Usually, `$route` is instantiated in time by the\r\n * {@link ngRoute.ngView ngView} directive. Yet, in cases where `ngView` is included in an\r\n * asynchronously loaded template (e.g. in another directive's template), the directive factory\r\n * might not be called soon enough for `$route` to be instantiated _before_ the initial\r\n * `$locationChangeSuccess` event is fired. Eager instantiation ensures that `$route` is always\r\n * instantiated in time, regardless of when `ngView` will be loaded.\r\n *\r\n * The default value is true.\r\n *\r\n * **Note**:
    \r\n * You may want to disable the default behavior when unit-testing modules that depend on\r\n * `ngRoute`, in order to avoid an unexpected request for the default route's template.\r\n *\r\n * @param {boolean=} enabled - If provided, update the internal `eagerInstantiationEnabled` flag.\r\n *\r\n * @returns {*} The current value of the `eagerInstantiationEnabled` flag if used as a getter or\r\n * itself (for chaining) if used as a setter.\r\n */\r\n isEagerInstantiationEnabled = true;\r\n this.eagerInstantiationEnabled = function eagerInstantiationEnabled(enabled) {\r\n if (isDefined(enabled)) {\r\n isEagerInstantiationEnabled = enabled;\r\n return this;\r\n }\r\n\r\n return isEagerInstantiationEnabled;\r\n };\r\n\r\n\r\n this.$get = ['$rootScope',\r\n '$location',\r\n '$routeParams',\r\n '$q',\r\n '$injector',\r\n '$templateRequest',\r\n '$sce',\r\n '$browser',\r\n function($rootScope, $location, $routeParams, $q, $injector, $templateRequest, $sce, $browser) {\r\n\r\n /**\r\n * @ngdoc service\r\n * @name $route\r\n * @requires $location\r\n * @requires $routeParams\r\n *\r\n * @property {Object} current Reference to the current route definition.\r\n * The route definition contains:\r\n *\r\n * - `controller`: The controller constructor as defined in the route definition.\r\n * - `locals`: A map of locals which is used by {@link ng.$controller $controller} service for\r\n * controller instantiation. The `locals` contain\r\n * the resolved values of the `resolve` map. Additionally the `locals` also contain:\r\n *\r\n * - `$scope` - The current route scope.\r\n * - `$template` - The current route template HTML.\r\n *\r\n * The `locals` will be assigned to the route scope's `$resolve` property. You can override\r\n * the property name, using `resolveAs` in the route definition. See\r\n * {@link ngRoute.$routeProvider $routeProvider} for more info.\r\n *\r\n * @property {Object} routes Object with all route configuration Objects as its properties.\r\n *\r\n * @description\r\n * `$route` is used for deep-linking URLs to controllers and views (HTML partials).\r\n * It watches `$location.url()` and tries to map the path to an existing route definition.\r\n *\r\n * Requires the {@link ngRoute `ngRoute`} module to be installed.\r\n *\r\n * You can define routes through {@link ngRoute.$routeProvider $routeProvider}'s API.\r\n *\r\n * The `$route` service is typically used in conjunction with the\r\n * {@link ngRoute.directive:ngView `ngView`} directive and the\r\n * {@link ngRoute.$routeParams `$routeParams`} service.\r\n *\r\n * @example\r\n * This example shows how changing the URL hash causes the `$route` to match a route against the\r\n * URL, and the `ngView` pulls in the partial.\r\n *\r\n * \r\n * \r\n *
    \r\n * Choose:\r\n * Moby |\r\n * Moby: Ch1 |\r\n * Gatsby |\r\n * Gatsby: Ch4 |\r\n * Scarlet Letter
    \r\n *\r\n *
    \r\n *\r\n *
    \r\n *\r\n *
    $location.path() = {{$location.path()}}
    \r\n *
    $route.current.templateUrl = {{$route.current.templateUrl}}
    \r\n *
    $route.current.params = {{$route.current.params}}
    \r\n *
    $route.current.scope.name = {{$route.current.scope.name}}
    \r\n *
    $routeParams = {{$routeParams}}
    \r\n *
    \r\n *
    \r\n *\r\n * \r\n * controller: {{name}}
    \r\n * Book Id: {{params.bookId}}
    \r\n *
    \r\n *\r\n * \r\n * controller: {{name}}
    \r\n * Book Id: {{params.bookId}}
    \r\n * Chapter Id: {{params.chapterId}}\r\n *
    \r\n *\r\n * \r\n * angular.module('ngRouteExample', ['ngRoute'])\r\n *\r\n * .controller('MainController', function($scope, $route, $routeParams, $location) {\r\n * $scope.$route = $route;\r\n * $scope.$location = $location;\r\n * $scope.$routeParams = $routeParams;\r\n * })\r\n *\r\n * .controller('BookController', function($scope, $routeParams) {\r\n * $scope.name = 'BookController';\r\n * $scope.params = $routeParams;\r\n * })\r\n *\r\n * .controller('ChapterController', function($scope, $routeParams) {\r\n * $scope.name = 'ChapterController';\r\n * $scope.params = $routeParams;\r\n * })\r\n *\r\n * .config(function($routeProvider, $locationProvider) {\r\n * $routeProvider\r\n * .when('/Book/:bookId', {\r\n * templateUrl: 'book.html',\r\n * controller: 'BookController',\r\n * resolve: {\r\n * // I will cause a 1 second delay\r\n * delay: function($q, $timeout) {\r\n * var delay = $q.defer();\r\n * $timeout(delay.resolve, 1000);\r\n * return delay.promise;\r\n * }\r\n * }\r\n * })\r\n * .when('/Book/:bookId/ch/:chapterId', {\r\n * templateUrl: 'chapter.html',\r\n * controller: 'ChapterController'\r\n * });\r\n *\r\n * // configure html5 to get links working on jsfiddle\r\n * $locationProvider.html5Mode(true);\r\n * });\r\n *\r\n * \r\n *\r\n * \r\n * it('should load and compile correct template', function() {\r\n * element(by.linkText('Moby: Ch1')).click();\r\n * var content = element(by.css('[ng-view]')).getText();\r\n * expect(content).toMatch(/controller: ChapterController/);\r\n * expect(content).toMatch(/Book Id: Moby/);\r\n * expect(content).toMatch(/Chapter Id: 1/);\r\n *\r\n * element(by.partialLinkText('Scarlet')).click();\r\n *\r\n * content = element(by.css('[ng-view]')).getText();\r\n * expect(content).toMatch(/controller: BookController/);\r\n * expect(content).toMatch(/Book Id: Scarlet/);\r\n * });\r\n * \r\n *
    \r\n */\r\n\r\n /**\r\n * @ngdoc event\r\n * @name $route#$routeChangeStart\r\n * @eventType broadcast on root scope\r\n * @description\r\n * Broadcasted before a route change. At this point the route services starts\r\n * resolving all of the dependencies needed for the route change to occur.\r\n * Typically this involves fetching the view template as well as any dependencies\r\n * defined in `resolve` route property. Once all of the dependencies are resolved\r\n * `$routeChangeSuccess` is fired.\r\n *\r\n * The route change (and the `$location` change that triggered it) can be prevented\r\n * by calling `preventDefault` method of the event. See {@link ng.$rootScope.Scope#$on}\r\n * for more details about event object.\r\n *\r\n * @param {Object} angularEvent Synthetic event object.\r\n * @param {Route} next Future route information.\r\n * @param {Route} current Current route information.\r\n */\r\n\r\n /**\r\n * @ngdoc event\r\n * @name $route#$routeChangeSuccess\r\n * @eventType broadcast on root scope\r\n * @description\r\n * Broadcasted after a route change has happened successfully.\r\n * The `resolve` dependencies are now available in the `current.locals` property.\r\n *\r\n * {@link ngRoute.directive:ngView ngView} listens for the directive\r\n * to instantiate the controller and render the view.\r\n *\r\n * @param {Object} angularEvent Synthetic event object.\r\n * @param {Route} current Current route information.\r\n * @param {Route|Undefined} previous Previous route information, or undefined if current is\r\n * first route entered.\r\n */\r\n\r\n /**\r\n * @ngdoc event\r\n * @name $route#$routeChangeError\r\n * @eventType broadcast on root scope\r\n * @description\r\n * Broadcasted if a redirection function fails or any redirection or resolve promises are\r\n * rejected.\r\n *\r\n * @param {Object} angularEvent Synthetic event object\r\n * @param {Route} current Current route information.\r\n * @param {Route} previous Previous route information.\r\n * @param {Route} rejection The thrown error or the rejection reason of the promise. Usually\r\n * the rejection reason is the error that caused the promise to get rejected.\r\n */\r\n\r\n /**\r\n * @ngdoc event\r\n * @name $route#$routeUpdate\r\n * @eventType broadcast on root scope\r\n * @description\r\n * The `reloadOnSearch` property has been set to false, and we are reusing the same\r\n * instance of the Controller.\r\n *\r\n * @param {Object} angularEvent Synthetic event object\r\n * @param {Route} current Current/previous route information.\r\n */\r\n\r\n var forceReload = false,\r\n preparedRoute,\r\n preparedRouteIsUpdateOnly,\r\n $route = {\r\n routes: routes,\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $route#reload\r\n *\r\n * @description\r\n * Causes `$route` service to reload the current route even if\r\n * {@link ng.$location $location} hasn't changed.\r\n *\r\n * As a result of that, {@link ngRoute.directive:ngView ngView}\r\n * creates new scope and reinstantiates the controller.\r\n */\r\n reload: function() {\r\n forceReload = true;\r\n\r\n var fakeLocationEvent = {\r\n defaultPrevented: false,\r\n preventDefault: function fakePreventDefault() {\r\n this.defaultPrevented = true;\r\n forceReload = false;\r\n }\r\n };\r\n\r\n $rootScope.$evalAsync(function() {\r\n prepareRoute(fakeLocationEvent);\r\n if (!fakeLocationEvent.defaultPrevented) commitRoute();\r\n });\r\n },\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $route#updateParams\r\n *\r\n * @description\r\n * Causes `$route` service to update the current URL, replacing\r\n * current route parameters with those specified in `newParams`.\r\n * Provided property names that match the route's path segment\r\n * definitions will be interpolated into the location's path, while\r\n * remaining properties will be treated as query params.\r\n *\r\n * @param {!Object} newParams mapping of URL parameter names to values\r\n */\r\n updateParams: function(newParams) {\r\n if (this.current && this.current.$$route) {\r\n newParams = angular.extend({}, this.current.params, newParams);\r\n $location.path(interpolate(this.current.$$route.originalPath, newParams));\r\n // interpolate modifies newParams, only query params are left\r\n $location.search(newParams);\r\n } else {\r\n throw $routeMinErr('norout', 'Tried updating route when with no current route');\r\n }\r\n }\r\n };\r\n\r\n $rootScope.$on('$locationChangeStart', prepareRoute);\r\n $rootScope.$on('$locationChangeSuccess', commitRoute);\r\n\r\n return $route;\r\n\r\n /////////////////////////////////////////////////////\r\n\r\n /**\r\n * @param on {string} current url\r\n * @param route {Object} route regexp to match the url against\r\n * @return {?Object}\r\n *\r\n * @description\r\n * Check if the route matches the current url.\r\n *\r\n * Inspired by match in\r\n * visionmedia/express/lib/router/router.js.\r\n */\r\n function switchRouteMatcher(on, route) {\r\n var keys = route.keys,\r\n params = {};\r\n\r\n if (!route.regexp) return null;\r\n\r\n var m = route.regexp.exec(on);\r\n if (!m) return null;\r\n\r\n for (var i = 1, len = m.length; i < len; ++i) {\r\n var key = keys[i - 1];\r\n\r\n var val = m[i];\r\n\r\n if (key && val) {\r\n params[key.name] = val;\r\n }\r\n }\r\n return params;\r\n }\r\n\r\n function prepareRoute($locationEvent) {\r\n var lastRoute = $route.current;\r\n\r\n preparedRoute = parseRoute();\r\n preparedRouteIsUpdateOnly = preparedRoute && lastRoute && preparedRoute.$$route === lastRoute.$$route\r\n && angular.equals(preparedRoute.pathParams, lastRoute.pathParams)\r\n && !preparedRoute.reloadOnSearch && !forceReload;\r\n\r\n if (!preparedRouteIsUpdateOnly && (lastRoute || preparedRoute)) {\r\n if ($rootScope.$broadcast('$routeChangeStart', preparedRoute, lastRoute).defaultPrevented) {\r\n if ($locationEvent) {\r\n $locationEvent.preventDefault();\r\n }\r\n }\r\n }\r\n }\r\n\r\n function commitRoute() {\r\n var lastRoute = $route.current;\r\n var nextRoute = preparedRoute;\r\n\r\n if (preparedRouteIsUpdateOnly) {\r\n lastRoute.params = nextRoute.params;\r\n angular.copy(lastRoute.params, $routeParams);\r\n $rootScope.$broadcast('$routeUpdate', lastRoute);\r\n } else if (nextRoute || lastRoute) {\r\n forceReload = false;\r\n $route.current = nextRoute;\r\n\r\n var nextRoutePromise = $q.resolve(nextRoute);\r\n\r\n $browser.$$incOutstandingRequestCount();\r\n\r\n nextRoutePromise.\r\n then(getRedirectionData).\r\n then(handlePossibleRedirection).\r\n then(function(keepProcessingRoute) {\r\n return keepProcessingRoute && nextRoutePromise.\r\n then(resolveLocals).\r\n then(function(locals) {\r\n // after route change\r\n if (nextRoute === $route.current) {\r\n if (nextRoute) {\r\n nextRoute.locals = locals;\r\n angular.copy(nextRoute.params, $routeParams);\r\n }\r\n $rootScope.$broadcast('$routeChangeSuccess', nextRoute, lastRoute);\r\n }\r\n });\r\n }).catch(function(error) {\r\n if (nextRoute === $route.current) {\r\n $rootScope.$broadcast('$routeChangeError', nextRoute, lastRoute, error);\r\n }\r\n }).finally(function() {\r\n // Because `commitRoute()` is called from a `$rootScope.$evalAsync` block (see\r\n // `$locationWatch`), this `$$completeOutstandingRequest()` call will not cause\r\n // `outstandingRequestCount` to hit zero. This is important in case we are redirecting\r\n // to a new route which also requires some asynchronous work.\r\n\r\n $browser.$$completeOutstandingRequest(noop);\r\n });\r\n }\r\n }\r\n\r\n function getRedirectionData(route) {\r\n var data = {\r\n route: route,\r\n hasRedirection: false\r\n };\r\n\r\n if (route) {\r\n if (route.redirectTo) {\r\n if (angular.isString(route.redirectTo)) {\r\n data.path = interpolate(route.redirectTo, route.params);\r\n data.search = route.params;\r\n data.hasRedirection = true;\r\n } else {\r\n var oldPath = $location.path();\r\n var oldSearch = $location.search();\r\n var newUrl = route.redirectTo(route.pathParams, oldPath, oldSearch);\r\n\r\n if (angular.isDefined(newUrl)) {\r\n data.url = newUrl;\r\n data.hasRedirection = true;\r\n }\r\n }\r\n } else if (route.resolveRedirectTo) {\r\n return $q.\r\n resolve($injector.invoke(route.resolveRedirectTo)).\r\n then(function(newUrl) {\r\n if (angular.isDefined(newUrl)) {\r\n data.url = newUrl;\r\n data.hasRedirection = true;\r\n }\r\n\r\n return data;\r\n });\r\n }\r\n }\r\n\r\n return data;\r\n }\r\n\r\n function handlePossibleRedirection(data) {\r\n var keepProcessingRoute = true;\r\n\r\n if (data.route !== $route.current) {\r\n keepProcessingRoute = false;\r\n } else if (data.hasRedirection) {\r\n var oldUrl = $location.url();\r\n var newUrl = data.url;\r\n\r\n if (newUrl) {\r\n $location.\r\n url(newUrl).\r\n replace();\r\n } else {\r\n newUrl = $location.\r\n path(data.path).\r\n search(data.search).\r\n replace().\r\n url();\r\n }\r\n\r\n if (newUrl !== oldUrl) {\r\n // Exit out and don't process current next value,\r\n // wait for next location change from redirect\r\n keepProcessingRoute = false;\r\n }\r\n }\r\n\r\n return keepProcessingRoute;\r\n }\r\n\r\n function resolveLocals(route) {\r\n if (route) {\r\n var locals = angular.extend({}, route.resolve);\r\n angular.forEach(locals, function(value, key) {\r\n locals[key] = angular.isString(value) ?\r\n $injector.get(value) :\r\n $injector.invoke(value, null, null, key);\r\n });\r\n var template = getTemplateFor(route);\r\n if (angular.isDefined(template)) {\r\n locals['$template'] = template;\r\n }\r\n return $q.all(locals);\r\n }\r\n }\r\n\r\n function getTemplateFor(route) {\r\n var template, templateUrl;\r\n if (angular.isDefined(template = route.template)) {\r\n if (angular.isFunction(template)) {\r\n template = template(route.params);\r\n }\r\n } else if (angular.isDefined(templateUrl = route.templateUrl)) {\r\n if (angular.isFunction(templateUrl)) {\r\n templateUrl = templateUrl(route.params);\r\n }\r\n if (angular.isDefined(templateUrl)) {\r\n route.loadedTemplateUrl = $sce.valueOf(templateUrl);\r\n template = $templateRequest(templateUrl);\r\n }\r\n }\r\n return template;\r\n }\r\n\r\n /**\r\n * @returns {Object} the current active route, by matching it against the URL\r\n */\r\n function parseRoute() {\r\n // Match a route\r\n var params, match;\r\n angular.forEach(routes, function(route, path) {\r\n if (!match && (params = switchRouteMatcher($location.path(), route))) {\r\n match = inherit(route, {\r\n params: angular.extend({}, $location.search(), params),\r\n pathParams: params});\r\n match.$$route = route;\r\n }\r\n });\r\n // No route matched; fallback to \"otherwise\" route\r\n return match || routes[null] && inherit(routes[null], {params: {}, pathParams:{}});\r\n }\r\n\r\n /**\r\n * @returns {string} interpolation of the redirect path with the parameters\r\n */\r\n function interpolate(string, params) {\r\n var result = [];\r\n angular.forEach((string || '').split(':'), function(segment, i) {\r\n if (i === 0) {\r\n result.push(segment);\r\n } else {\r\n var segmentMatch = segment.match(/(\\w+)(?:[?*])?(.*)/);\r\n var key = segmentMatch[1];\r\n result.push(params[key]);\r\n result.push(segmentMatch[2] || '');\r\n delete params[key];\r\n }\r\n });\r\n return result.join('');\r\n }\r\n }];\r\n}\r\n\r\ninstantiateRoute.$inject = ['$injector'];\r\nfunction instantiateRoute($injector) {\r\n if (isEagerInstantiationEnabled) {\r\n // Instantiate `$route`\r\n $injector.get('$route');\r\n }\r\n}\r\n\r\nngRouteModule.provider('$routeParams', $RouteParamsProvider);\r\n\r\n\r\n/**\r\n * @ngdoc service\r\n * @name $routeParams\r\n * @requires $route\r\n * @this\r\n *\r\n * @description\r\n * The `$routeParams` service allows you to retrieve the current set of route parameters.\r\n *\r\n * Requires the {@link ngRoute `ngRoute`} module to be installed.\r\n *\r\n * The route parameters are a combination of {@link ng.$location `$location`}'s\r\n * {@link ng.$location#search `search()`} and {@link ng.$location#path `path()`}.\r\n * The `path` parameters are extracted when the {@link ngRoute.$route `$route`} path is matched.\r\n *\r\n * In case of parameter name collision, `path` params take precedence over `search` params.\r\n *\r\n * The service guarantees that the identity of the `$routeParams` object will remain unchanged\r\n * (but its properties will likely change) even when a route change occurs.\r\n *\r\n * Note that the `$routeParams` are only updated *after* a route change completes successfully.\r\n * This means that you cannot rely on `$routeParams` being correct in route resolve functions.\r\n * Instead you can use `$route.current.params` to access the new route's parameters.\r\n *\r\n * @example\r\n * ```js\r\n * // Given:\r\n * // URL: http://server.com/index.html#/Chapter/1/Section/2?search=moby\r\n * // Route: /Chapter/:chapterId/Section/:sectionId\r\n * //\r\n * // Then\r\n * $routeParams ==> {chapterId:'1', sectionId:'2', search:'moby'}\r\n * ```\r\n */\r\nfunction $RouteParamsProvider() {\r\n this.$get = function() { return {}; };\r\n}\r\n\r\nngRouteModule.directive('ngView', ngViewFactory);\r\nngRouteModule.directive('ngView', ngViewFillContentFactory);\r\n\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name ngView\r\n * @restrict ECA\r\n *\r\n * @description\r\n * `ngView` is a directive that complements the {@link ngRoute.$route $route} service by\r\n * including the rendered template of the current route into the main layout (`index.html`) file.\r\n * Every time the current route changes, the included view changes with it according to the\r\n * configuration of the `$route` service.\r\n *\r\n * Requires the {@link ngRoute `ngRoute`} module to be installed.\r\n *\r\n * @animations\r\n * | Animation | Occurs |\r\n * |----------------------------------|-------------------------------------|\r\n * | {@link ng.$animate#enter enter} | when the new element is inserted to the DOM |\r\n * | {@link ng.$animate#leave leave} | when the old element is removed from to the DOM |\r\n *\r\n * The enter and leave animation occur concurrently.\r\n *\r\n * @scope\r\n * @priority 400\r\n * @param {string=} onload Expression to evaluate whenever the view updates.\r\n *\r\n * @param {string=} autoscroll Whether `ngView` should call {@link ng.$anchorScroll\r\n * $anchorScroll} to scroll the viewport after the view is updated.\r\n *\r\n * - If the attribute is not set, disable scrolling.\r\n * - If the attribute is set without value, enable scrolling.\r\n * - Otherwise enable scrolling only if the `autoscroll` attribute value evaluated\r\n * as an expression yields a truthy value.\r\n * @example\r\n \r\n \r\n
    \r\n Choose:\r\n Moby |\r\n Moby: Ch1 |\r\n Gatsby |\r\n Gatsby: Ch4 |\r\n Scarlet Letter
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    $location.path() = {{main.$location.path()}}
    \r\n
    $route.current.templateUrl = {{main.$route.current.templateUrl}}
    \r\n
    $route.current.params = {{main.$route.current.params}}
    \r\n
    $routeParams = {{main.$routeParams}}
    \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n controller: {{book.name}}
    \r\n Book Id: {{book.params.bookId}}
    \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n controller: {{chapter.name}}
    \r\n Book Id: {{chapter.params.bookId}}
    \r\n Chapter Id: {{chapter.params.chapterId}}\r\n
    \r\n
    \r\n\r\n \r\n .view-animate-container {\r\n position:relative;\r\n height:100px!important;\r\n background:white;\r\n border:1px solid black;\r\n height:40px;\r\n overflow:hidden;\r\n }\r\n\r\n .view-animate {\r\n padding:10px;\r\n }\r\n\r\n .view-animate.ng-enter, .view-animate.ng-leave {\r\n transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1.5s;\r\n\r\n display:block;\r\n width:100%;\r\n border-left:1px solid black;\r\n\r\n position:absolute;\r\n top:0;\r\n left:0;\r\n right:0;\r\n bottom:0;\r\n padding:10px;\r\n }\r\n\r\n .view-animate.ng-enter {\r\n left:100%;\r\n }\r\n .view-animate.ng-enter.ng-enter-active {\r\n left:0;\r\n }\r\n .view-animate.ng-leave.ng-leave-active {\r\n left:-100%;\r\n }\r\n \r\n\r\n \r\n angular.module('ngViewExample', ['ngRoute', 'ngAnimate'])\r\n .config(['$routeProvider', '$locationProvider',\r\n function($routeProvider, $locationProvider) {\r\n $routeProvider\r\n .when('/Book/:bookId', {\r\n templateUrl: 'book.html',\r\n controller: 'BookCtrl',\r\n controllerAs: 'book'\r\n })\r\n .when('/Book/:bookId/ch/:chapterId', {\r\n templateUrl: 'chapter.html',\r\n controller: 'ChapterCtrl',\r\n controllerAs: 'chapter'\r\n });\r\n\r\n $locationProvider.html5Mode(true);\r\n }])\r\n .controller('MainCtrl', ['$route', '$routeParams', '$location',\r\n function MainCtrl($route, $routeParams, $location) {\r\n this.$route = $route;\r\n this.$location = $location;\r\n this.$routeParams = $routeParams;\r\n }])\r\n .controller('BookCtrl', ['$routeParams', function BookCtrl($routeParams) {\r\n this.name = 'BookCtrl';\r\n this.params = $routeParams;\r\n }])\r\n .controller('ChapterCtrl', ['$routeParams', function ChapterCtrl($routeParams) {\r\n this.name = 'ChapterCtrl';\r\n this.params = $routeParams;\r\n }]);\r\n\r\n \r\n\r\n \r\n it('should load and compile correct template', function() {\r\n element(by.linkText('Moby: Ch1')).click();\r\n var content = element(by.css('[ng-view]')).getText();\r\n expect(content).toMatch(/controller: ChapterCtrl/);\r\n expect(content).toMatch(/Book Id: Moby/);\r\n expect(content).toMatch(/Chapter Id: 1/);\r\n\r\n element(by.partialLinkText('Scarlet')).click();\r\n\r\n content = element(by.css('[ng-view]')).getText();\r\n expect(content).toMatch(/controller: BookCtrl/);\r\n expect(content).toMatch(/Book Id: Scarlet/);\r\n });\r\n \r\n
    \r\n */\r\n\r\n\r\n/**\r\n * @ngdoc event\r\n * @name ngView#$viewContentLoaded\r\n * @eventType emit on the current ngView scope\r\n * @description\r\n * Emitted every time the ngView content is reloaded.\r\n */\r\nngViewFactory.$inject = ['$route', '$anchorScroll', '$animate'];\r\nfunction ngViewFactory($route, $anchorScroll, $animate) {\r\n return {\r\n restrict: 'ECA',\r\n terminal: true,\r\n priority: 400,\r\n transclude: 'element',\r\n link: function(scope, $element, attr, ctrl, $transclude) {\r\n var currentScope,\r\n currentElement,\r\n previousLeaveAnimation,\r\n autoScrollExp = attr.autoscroll,\r\n onloadExp = attr.onload || '';\r\n\r\n scope.$on('$routeChangeSuccess', update);\r\n update();\r\n\r\n function cleanupLastView() {\r\n if (previousLeaveAnimation) {\r\n $animate.cancel(previousLeaveAnimation);\r\n previousLeaveAnimation = null;\r\n }\r\n\r\n if (currentScope) {\r\n currentScope.$destroy();\r\n currentScope = null;\r\n }\r\n if (currentElement) {\r\n previousLeaveAnimation = $animate.leave(currentElement);\r\n previousLeaveAnimation.done(function(response) {\r\n if (response !== false) previousLeaveAnimation = null;\r\n });\r\n currentElement = null;\r\n }\r\n }\r\n\r\n function update() {\r\n var locals = $route.current && $route.current.locals,\r\n template = locals && locals.$template;\r\n\r\n if (angular.isDefined(template)) {\r\n var newScope = scope.$new();\r\n var current = $route.current;\r\n\r\n // Note: This will also link all children of ng-view that were contained in the original\r\n // html. If that content contains controllers, ... they could pollute/change the scope.\r\n // However, using ng-view on an element with additional content does not make sense...\r\n // Note: We can't remove them in the cloneAttchFn of $transclude as that\r\n // function is called before linking the content, which would apply child\r\n // directives to non existing elements.\r\n var clone = $transclude(newScope, function(clone) {\r\n $animate.enter(clone, null, currentElement || $element).done(function onNgViewEnter(response) {\r\n if (response !== false && angular.isDefined(autoScrollExp)\r\n && (!autoScrollExp || scope.$eval(autoScrollExp))) {\r\n $anchorScroll();\r\n }\r\n });\r\n cleanupLastView();\r\n });\r\n\r\n currentElement = clone;\r\n currentScope = current.scope = newScope;\r\n currentScope.$emit('$viewContentLoaded');\r\n currentScope.$eval(onloadExp);\r\n } else {\r\n cleanupLastView();\r\n }\r\n }\r\n }\r\n };\r\n}\r\n\r\n// This directive is called during the $transclude call of the first `ngView` directive.\r\n// It will replace and compile the content of the element with the loaded template.\r\n// We need this directive so that the element content is already filled when\r\n// the link function of another directive on the same element as ngView\r\n// is called.\r\nngViewFillContentFactory.$inject = ['$compile', '$controller', '$route'];\r\nfunction ngViewFillContentFactory($compile, $controller, $route) {\r\n return {\r\n restrict: 'ECA',\r\n priority: -400,\r\n link: function(scope, $element) {\r\n var current = $route.current,\r\n locals = current.locals;\r\n\r\n $element.html(locals.$template);\r\n\r\n var link = $compile($element.contents());\r\n\r\n if (current.controller) {\r\n locals.$scope = scope;\r\n var controller = $controller(current.controller, locals);\r\n if (current.controllerAs) {\r\n scope[current.controllerAs] = controller;\r\n }\r\n $element.data('$ngControllerController', controller);\r\n $element.children().data('$ngControllerController', controller);\r\n }\r\n scope[current.resolveAs || '$resolve'] = locals;\r\n\r\n link(scope);\r\n }\r\n };\r\n}\r\n\r\n\r\n})(window, window.angular);\r\n","(function () {\nangular.module(\"gulp-routes\", [])\n.constant(\"Routes\", [\n {\n \"Name\": \"SortedCategoryPage\",\n \"Controller\": \"Category\",\n \"Action\": \"ShowSortedPage\",\n \"fr\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}-{page:int}/{sortType:alpha}\"\n },\n \"en\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}-{page:int}/{sortType:alpha}\"\n }\n },\n {\n \"Name\": \"SortedCategory\",\n \"Controller\": \"Category\",\n \"Action\": \"ShowSorted\",\n \"fr\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}/{sortType:alpha}\"\n },\n \"en\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}/{sortType:alpha}\"\n }\n },\n {\n \"Name\": \"CategoryPage\",\n \"Controller\": \"Category\",\n \"Action\": \"ShowPage\",\n \"fr\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}-{page:int}\"\n },\n \"en\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}-{page:int}\"\n }\n },\n {\n \"Name\": \"Category\",\n \"Controller\": \"Category\",\n \"Action\": \"Show\",\n \"fr\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}\"\n },\n \"en\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}\"\n }\n },\n {\n \"Name\": \"CategoryWithElasticSearch\",\n \"Controller\": \"Category\",\n \"Action\": \"ShowWithElasticSearch\",\n \"fr\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}/es/{query}\"\n },\n \"en\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}/es/{query}\"\n }\n },\n {\n \"Name\": \"SortedCategoryPageWithElasticSearch\",\n \"Controller\": \"Category\",\n \"Action\": \"ShowSortedPageWithElasticSearch\",\n \"fr\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}/es/{query}-{page:int}/{sortType:alpha}\"\n },\n \"en\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}/es/{query}-{page:int}/{sortType:alpha}\"\n }\n },\n {\n \"Name\": \"CategoryMessage\",\n \"Controller\": \"CategoryMessage\",\n \"Action\": \"Show\",\n \"fr\": {\n \"URL\": \"{categoryName}-cmsg-{categoryId:int}\"\n },\n \"en\": {\n \"URL\": \"{categoryName}-cmsg-{categoryId:int}\"\n }\n },\n {\n \"Name\": \"CategoryMessagePage\",\n \"Controller\": \"CategoryMessage\",\n \"Action\": \"ShowPage\",\n \"fr\": {\n \"URL\": \"{categoryName}-cmsg-{categoryId:int}-{page:int}\"\n },\n \"en\": {\n \"URL\": \"{categoryName}-cmsg-{categoryId:int}-{page:int}\"\n }\n },\n {\n \"Name\": \"Product\",\n \"Controller\": \"Product\",\n \"Action\": \"Show\",\n \"fr\": {\n \"URL\": \"{productName}-p-{productId:int}\"\n },\n \"en\": {\n \"URL\": \"{productName}-p-{productId:int}\"\n }\n },\n {\n \"Name\": \"Product1Attribute\",\n \"Controller\": \"Product\",\n \"Action\": \"Show1Attribute\",\n \"fr\": {\n \"URL\": \"{productName}-p-{productId:int}/{keyAttribute1}\"\n },\n \"en\": {\n \"URL\": \"{productName}-p-{productId:int}/{keyAttribute1}\"\n }\n },\n {\n \"Name\": \"Product2Attributes\",\n \"Controller\": \"Product\",\n \"Action\": \"Show2Attributes\",\n \"fr\": {\n \"URL\": \"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}\"\n },\n \"en\": {\n \"URL\": \"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}\"\n }\n },\n {\n \"Name\": \"Product3Attributes\",\n \"Controller\": \"Product\",\n \"Action\": \"Show3Attributes\",\n \"fr\": {\n \"URL\": \"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}/{keyAttribute3}\"\n },\n \"en\": {\n \"URL\": \"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}/{keyAttribute3}\"\n }\n },\n {\n \"Name\": \"ProductWithElasticSearch\",\n \"Controller\": \"Product\",\n \"Action\": \"ShowWithElasticSearch\",\n \"fr\": {\n \"URL\": \"{productName}-p-{productId:int}/es/{query}\"\n },\n \"en\": {\n \"URL\": \"{productName}-p-{productId:int}/es/{query}\"\n }\n },\n {\n \"Name\": \"Product1AttributeWithElasticSearch\",\n \"Controller\": \"Product\",\n \"Action\": \"Show1AttributeWithElasticSearch\",\n \"fr\": {\n \"URL\": \"{productName}-p-{productId:int}/{keyAttribute1}/es/{query}\"\n },\n \"en\": {\n \"URL\": \"{productName}-p-{productId:int}/{keyAttribute1}/es/{query}\"\n }\n },\n {\n \"Name\": \"Product2AttributesWithElasticSearch\",\n \"Controller\": \"Product\",\n \"Action\": \"Show2AttributesWithElasticSearch\",\n \"fr\": {\n \"URL\": \"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}/es/{query}\"\n },\n \"en\": {\n \"URL\": \"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}/es/{query}\"\n }\n },\n {\n \"Name\": \"Product3AttributesWithElasticSearch\",\n \"Controller\": \"Product\",\n \"Action\": \"Show3AttributesWithElasticSearch\",\n \"fr\": {\n \"URL\": \"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}/{keyAttribute3}/es/{query}\"\n },\n \"en\": {\n \"URL\": \"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}/{keyAttribute3}/es/{query}\"\n }\n },\n {\n \"Name\": \"Cart\",\n \"Controller\": \"Cart\",\n \"Action\": \"Index\",\n \"fr\": {\n \"URL\": \"panier\"\n },\n \"en\": {\n \"URL\": \"cart\"\n }\n },\n {\n \"Name\": \"CartOutdated\",\n \"Controller\": \"Cart\",\n \"Action\": \"Index\",\n \"fr\": {\n \"URL\": \"panier-expire\"\n },\n \"en\": {\n \"URL\": \"outdated-cart\"\n }\n },\n {\n \"Name\": \"CartIdentification\",\n \"Controller\": \"Cart\",\n \"Action\": \"Index\",\n \"fr\": {\n \"URL\": \"panier/identification\"\n },\n \"en\": {\n \"URL\": \"cart/authentification\"\n }\n },\n {\n \"Name\": \"CartShipping\",\n \"Controller\": \"Cart\",\n \"Action\": \"Index\",\n \"fr\": {\n \"URL\": \"panier/livraison\"\n },\n \"en\": {\n \"URL\": \"cart/delivery\"\n }\n },\n {\n \"Name\": \"CartPayment\",\n \"Controller\": \"Cart\",\n \"Action\": \"Index\",\n \"fr\": {\n \"URL\": \"panier/paiement\"\n },\n \"en\": {\n \"URL\": \"cart/payment\"\n }\n },\n {\n \"Name\": \"CartValidation\",\n \"Controller\": \"Cart\",\n \"Action\": \"Index\",\n \"fr\": {\n \"URL\": \"panier/validation\"\n },\n \"en\": {\n \"URL\": \"cart/validation\"\n }\n },\n {\n \"Name\": \"CartOnePageCheckout\",\n \"Controller\": \"Cart\",\n \"Action\": \"Index\",\n \"fr\": {\n \"URL\": \"commander\"\n },\n \"en\": {\n \"URL\": \"checkout\"\n }\n },\n {\n \"Name\": \"CartOnePageCheckoutPayment\",\n \"Controller\": \"Cart\",\n \"Action\": \"Index\",\n \"fr\": {\n \"URL\": \"retour-paiement\"\n },\n \"en\": {\n \"URL\": \"back-to-payment\"\n }\n },\n {\n \"Name\": \"CartPaymentAction\",\n \"Controller\": \"Payment\",\n \"Action\": \"Payment\",\n \"fr\": {\n \"URL\": \"paiement\"\n },\n \"en\": {\n \"URL\": \"payment\"\n }\n },\n {\n \"Name\": \"CartRecognition\",\n \"Controller\": \"Cart\",\n \"Action\": \"Recognition\",\n \"fr\": {\n \"URL\": \"reconnaissance-panier/{idFolder:int}/{token}\"\n },\n \"en\": {\n \"URL\": \"cart-recognition/{idFolder:int}/{token}\"\n }\n },\n {\n \"Name\": \"CartPaymentRedirect\",\n \"Controller\": \"Cart\",\n \"Action\": \"Redirect\",\n \"fr\": {\n \"URL\": \"redirection-panier-paiement\"\n },\n \"en\": {\n \"URL\": \"cart-payment-redirect\"\n }\n },\n {\n \"Name\": \"QuotationPaymentError\",\n \"Controller\": \"Quotation\",\n \"Action\": \"PaymentError\",\n \"fr\": {\n \"URL\": \"paiement/erreur/{idFolder:int}\"\n },\n \"en\": {\n \"URL\": \"payment/error/{idFolder:int}\"\n }\n },\n {\n \"Name\": \"CartPaymentError\",\n \"Controller\": \"Cart\",\n \"Action\": \"PaymentError\",\n \"fr\": {\n \"URL\": \"paiement/erreur\"\n },\n \"en\": {\n \"URL\": \"payment/error\"\n }\n },\n {\n \"Name\": \"QuickOrder\",\n \"Controller\": \"Cart\",\n \"Action\": \"QuickOrder\",\n \"fr\": {\n \"URL\": \"commande-par-reference\"\n },\n \"en\": {\n \"URL\": \"order-by-reference\"\n }\n },\n {\n \"Name\": \"AccountValidationPage\",\n \"Controller\": \"Authentication\",\n \"Action\": \"AccountValidationPage\",\n \"fr\": {\n \"URL\": \"validation-compte/validation/{EncryptedIdCard}\"\n },\n \"en\": {\n \"URL\": \"account-validation/validate/{EncryptedIdCard}\"\n }\n },\n {\n \"Name\": \"ResendAccountValidationEmail\",\n \"Controller\": \"AccountCreate\",\n \"Action\": \"ResendAccountValidationEmail\",\n \"fr\": {\n \"URL\": \"validation-compte/renvoi/{EncryptedIdCard}\"\n },\n \"en\": {\n \"URL\": \"account-validation/resend/{EncryptedIdCard}\"\n }\n },\n {\n \"Name\": \"AccountValidateEmailToken\",\n \"Controller\": \"Authentication\",\n \"Action\": \"AccountValidateEmailToken\",\n \"fr\": {\n \"URL\": \"identification/{validEmailToken}\"\n },\n \"en\": {\n \"URL\": \"authentication/{validEmailToken}\"\n }\n },\n {\n \"Name\": \"Login\",\n \"Controller\": \"Authentication\",\n \"Action\": \"Login\",\n \"fr\": {\n \"URL\": \"identification\"\n },\n \"en\": {\n \"URL\": \"authentication\"\n }\n },\n {\n \"Name\": \"LoginFromFacebook\",\n \"Controller\": \"Authentication\",\n \"Action\": \"LoginFromFacebook\",\n \"fr\": {\n \"URL\": \"identification-facebook\"\n },\n \"en\": {\n \"URL\": \"authentication-facebook\"\n }\n },\n {\n \"Name\": \"AccountHome\",\n \"Controller\": \"AccountHome\",\n \"Action\": \"AccountHome\",\n \"fr\": {\n \"URL\": \"mon-compte\"\n },\n \"en\": {\n \"URL\": \"my-account\"\n }\n },\n {\n \"Name\": \"AccountUpdate\",\n \"Controller\": \"AccountUpdate\",\n \"Action\": \"AccountUpdate\",\n \"fr\": {\n \"URL\": \"profil\"\n },\n \"en\": {\n \"URL\": \"profile\"\n }\n },\n {\n \"Name\": \"AccountPasswordReset\",\n \"Controller\": \"AccountPasswordReset\",\n \"Action\": \"AccountPasswordReset\",\n \"fr\": {\n \"URL\": \"mot-de-passe\"\n },\n \"en\": {\n \"URL\": \"password\"\n }\n },\n {\n \"Name\": \"AccountOrderTracking\",\n \"Controller\": \"AccountOrderTracking\",\n \"Action\": \"AccountOrderTracking\",\n \"fr\": {\n \"URL\": \"suivi-de-commande\"\n },\n \"en\": {\n \"URL\": \"order-tracking\"\n }\n },\n {\n \"Name\": \"AccountInvoices\",\n \"Controller\": \"AccountInvoices\",\n \"Action\": \"AccountInvoices\",\n \"fr\": {\n \"URL\": \"factures\"\n },\n \"en\": {\n \"URL\": \"invoices\"\n }\n },\n {\n \"Name\": \"AccountClaim\",\n \"Controller\": \"AccountClaim\",\n \"Action\": \"AccountClaim\",\n \"fr\": {\n \"URL\": \"reclamation\"\n },\n \"en\": {\n \"URL\": \"claim\"\n }\n },\n {\n \"Name\": \"AccountReturns\",\n \"Controller\": \"AccountReturns\",\n \"Action\": \"AccountReturns\",\n \"fr\": {\n \"URL\": \"retours\"\n },\n \"en\": {\n \"URL\": \"returns\"\n }\n },\n {\n \"Name\": \"AccountSavedCarts\",\n \"Controller\": \"AccountSavedCarts\",\n \"Action\": \"AccountSavedCarts\",\n \"fr\": {\n \"URL\": \"paniers-sauvegardes\"\n },\n \"en\": {\n \"URL\": \"saved-cart\"\n }\n },\n {\n \"Name\": \"AccountNumericProducts\",\n \"Controller\": \"AccountNumericProducts\",\n \"Action\": \"Index\",\n \"fr\": {\n \"URL\": \"produits-numeriques\"\n },\n \"en\": {\n \"URL\": \"digital-products\"\n }\n },\n {\n \"Name\": \"AccountVouchers\",\n \"Controller\": \"AccountVouchers\",\n \"Action\": \"Index\",\n \"fr\": {\n \"URL\": \"bons-d-achat\"\n },\n \"en\": {\n \"URL\": \"vouchers\"\n }\n },\n {\n \"Name\": \"AccountLoyaltyPoints\",\n \"Controller\": \"AccountLoyaltyPoints\",\n \"Action\": \"AccountLoyaltyPoints\",\n \"fr\": {\n \"URL\": \"points-fidelite\"\n },\n \"en\": {\n \"URL\": \"loyalty-point\"\n }\n },\n {\n \"Name\": \"AccountWishList\",\n \"Controller\": \"AccountWishList\",\n \"Action\": \"WishList\",\n \"fr\": {\n \"URL\": \"liste-de-souhaits\"\n },\n \"en\": {\n \"URL\": \"wish-list\"\n }\n },\n {\n \"Name\": \"AccountMultiWishList\",\n \"Controller\": \"AccountWishList\",\n \"Action\": \"WishList\",\n \"fr\": {\n \"URL\": \"mes-listes-de-souhaits\"\n },\n \"en\": {\n \"URL\": \"my-wish-list\"\n }\n },\n {\n \"Name\": \"AccountQuotations\",\n \"Controller\": \"AccountQuotation\",\n \"Action\": \"Account\",\n \"fr\": {\n \"URL\": \"devis\"\n },\n \"en\": {\n \"URL\": \"quote\"\n }\n },\n {\n \"Name\": \"AccountAdvancedQuotations\",\n \"Controller\": \"AccountQuotation\",\n \"Action\": \"Account\",\n \"fr\": {\n \"URL\": \"mes-devis\"\n },\n \"en\": {\n \"URL\": \"my-quote\"\n }\n },\n {\n \"Name\": \"AccountCredits\",\n \"Controller\": \"AccountCredits\",\n \"Action\": \"Show\",\n \"fr\": {\n \"URL\": \"avoirs\"\n },\n \"en\": {\n \"URL\": \"credit-note\"\n }\n },\n {\n \"Name\": \"AccountGiftCards\",\n \"Controller\": \"AccountGiftCards\",\n \"Action\": \"AccountGiftCards\",\n \"fr\": {\n \"URL\": \"cheques-cadeaux\"\n },\n \"en\": {\n \"URL\": \"gift-voucher\"\n }\n },\n {\n \"Name\": \"AccountSponsorShip\",\n \"Controller\": \"AccountSponsorShip\",\n \"Action\": \"AccountSponsorShip\",\n \"fr\": {\n \"URL\": \"parrainage\"\n },\n \"en\": {\n \"URL\": \"sponsorship\"\n }\n },\n {\n \"Name\": \"Search\",\n \"Controller\": \"Search\",\n \"Action\": \"Search\",\n \"fr\": {\n \"URL\": \"recherche\"\n },\n \"en\": {\n \"URL\": \"research\"\n }\n },\n {\n \"Name\": \"SearchAngular\",\n \"Controller\": \"Search\",\n \"Action\": \"Search\",\n \"fr\": {\n \"URL\": \"recherche/{q}\"\n },\n \"en\": {\n \"URL\": \"research/{q}\"\n }\n },\n {\n \"Name\": \"SearchPageAngular\",\n \"Controller\": \"Search\",\n \"Action\": \"Search\",\n \"fr\": {\n \"URL\": \"recherche/{q}/{p:int}\"\n },\n \"en\": {\n \"URL\": \"research/{q}/{p:int}\"\n }\n },\n {\n \"Name\": \"SortedSearchPageAngular\",\n \"Controller\": \"Search\",\n \"Action\": \"Search\",\n \"fr\": {\n \"URL\": \"recherche/{q}/{p:int}/{sort:alpha}\"\n },\n \"en\": {\n \"URL\": \"research/{q}/{p:int}/{sort:alpha}\"\n }\n },\n {\n \"Name\": \"SortedSearchAngular\",\n \"Controller\": \"Search\",\n \"Action\": \"Search\",\n \"fr\": {\n \"URL\": \"recherche/{q}/{sort:alpha}\"\n },\n \"en\": {\n \"URL\": \"research/{q}/{sort:alpha}\"\n }\n },\n {\n \"Name\": \"SearchProducts\",\n \"Controller\": \"Search\",\n \"Action\": \"SearchProducts\",\n \"fr\": {\n \"URL\": \"produits\"\n },\n \"en\": {\n \"URL\": \"products\"\n }\n },\n {\n \"Name\": \"SearchProductsPageAngular\",\n \"Controller\": \"Search\",\n \"Action\": \"SearchProducts\",\n \"fr\": {\n \"URL\": \"produits/{p:int}\"\n },\n \"en\": {\n \"URL\": \"products/{p:int}\"\n }\n },\n {\n \"Name\": \"SortedSearchProductsAngular\",\n \"Controller\": \"Search\",\n \"Action\": \"SearchProducts\",\n \"fr\": {\n \"URL\": \"produits/{sort:alpha}\"\n },\n \"en\": {\n \"URL\": \"products/{sort:alpha}\"\n }\n },\n {\n \"Name\": \"SortedSearchProductsPageAngular\",\n \"Controller\": \"Search\",\n \"Action\": \"SearchProducts\",\n \"fr\": {\n \"URL\": \"produits/{p:int}/{sort:alpha}\"\n },\n \"en\": {\n \"URL\": \"products/{p:int}/{sort:alpha}\"\n }\n },\n {\n \"Name\": \"Stores\",\n \"Controller\": \"Stores\",\n \"Action\": \"Stores\",\n \"fr\": {\n \"URL\": \"magasins\"\n },\n \"en\": {\n \"URL\": \"stores\"\n }\n },\n {\n \"Name\": \"StoresWebsite\",\n \"Controller\": \"Stores\",\n \"Action\": \"StoresWebsite\",\n \"fr\": {\n \"URL\": \"liste-magasins\"\n },\n \"en\": {\n \"URL\": \"stores-list\"\n }\n },\n {\n \"Name\": \"Jobs\",\n \"Controller\": \"Form\",\n \"Action\": \"Jobs\",\n \"fr\": {\n \"URL\": \"jobs\"\n },\n \"en\": {\n \"URL\": \"jobs\"\n }\n },\n {\n \"Name\": \"MessageCatalogRequest\",\n \"Controller\": \"Message\",\n \"Action\": \"CatalogRequest\",\n \"fr\": {\n \"URL\": \"Message/Catalogue\"\n },\n \"en\": {\n \"URL\": \"Message/Catalog\"\n }\n },\n {\n \"Name\": \"MessageContact\",\n \"Controller\": \"Message\",\n \"Action\": \"Contact\",\n \"fr\": {\n \"URL\": \"Message/Contact\"\n },\n \"en\": {\n \"URL\": \"Message/Contact\"\n }\n },\n {\n \"Name\": \"MessageAccountClaim\",\n \"Controller\": \"Message\",\n \"Action\": \"Claim\",\n \"fr\": {\n \"URL\": \"Message/Claim\"\n },\n \"en\": {\n \"URL\": \"Message/Claim\"\n }\n },\n {\n \"Name\": \"MessageContactAdd\",\n \"Controller\": \"Message\",\n \"Action\": \"AddContact\",\n \"fr\": {\n \"URL\": \"Message/Add/Contact\"\n },\n \"en\": {\n \"URL\": \"Message/Add/Contact\"\n }\n },\n {\n \"Name\": \"MessageCatalogRequestAdd\",\n \"Controller\": \"Message\",\n \"Action\": \"AddCatalogRequest\",\n \"fr\": {\n \"URL\": \"Message/Add/CatalogRequest\"\n },\n \"en\": {\n \"URL\": \"Message/Add/CatalogRequest\"\n }\n },\n {\n \"Name\": \"MessageAccountClaimAdd\",\n \"Controller\": \"Message\",\n \"Action\": \"AddClaim\",\n \"fr\": {\n \"URL\": \"Message/Add/Reclamation\"\n },\n \"en\": {\n \"URL\": \"Message/Add/Claim\"\n }\n },\n {\n \"Name\": \"PaymentListAdvance\",\n \"Controller\": \"Payment\",\n \"Action\": \"PaymentListAdvance\",\n \"fr\": {\n \"URL\": \"acompte/choix-paiement/{idFolder:int}/{idAdvance:int}\"\n },\n \"en\": {\n \"URL\": \"advance/payment-choice/{idFolder:int}/{idAdvance:int}\"\n }\n },\n {\n \"Name\": \"SellerPage\",\n \"Controller\": \"Seller\",\n \"Action\": \"Seller\",\n \"fr\": {\n \"URL\": \"{sellerName}-v-{sellerId:int}/{keyMessageType?}\"\n },\n \"en\": {\n \"URL\": \"{sellerName}-v-{sellerId:int}/{keyMessageType?}\"\n }\n },\n {\n \"Name\": \"AppParams\",\n \"Controller\": \"App\",\n \"Action\": \"AppParams\",\n \"fr\": {\n \"URL\": \"appParams\"\n },\n \"en\": {\n \"URL\": \"appParams\"\n }\n },\n {\n \"Name\": \"AdvancedReviewsForm\",\n \"Controller\": \"AccountAdvancedReviews\",\n \"Action\": \"Form\",\n \"fr\": {\n \"URL\": \"avis-articles/{token}\"\n },\n \"en\": {\n \"URL\": \"product-reviews/{token}\"\n }\n },\n {\n \"Name\": \"AccountAdvancedReviews\",\n \"Controller\": \"AccountAdvancedReviews\",\n \"Action\": \"AccountAdvancedReviews\",\n \"fr\": {\n \"URL\": \"avis-articles\"\n },\n \"en\": {\n \"URL\": \"product-reviews\"\n }\n },\n {\n \"Name\": \"AccountDedicatedProducts\",\n \"Controller\": \"AccountDedicatedProducts\",\n \"Action\": \"Show\",\n \"fr\": {\n \"URL\": \"produits-personnalises\"\n },\n \"en\": {\n \"URL\": \"dedicated-products\"\n }\n },\n {\n \"Name\": \"UpdateLineQuantityCart\",\n \"Controller\": \"Cart\",\n \"Action\": \"UpdateLineQuantityCart\",\n \"fr\": {\n \"URL\": \"UpdateLineQuantityCart/{idLine:int}/{RemovedQuantity:int}\"\n },\n \"en\": {\n \"URL\": \"UpdateLineQuantityCart/{idLine:int}/{RemovedQuantity:int}\"\n }\n },\n {\n \"Name\": \"Click2Call\",\n \"Controller\": \"OVH\",\n \"Action\": \"Click2Call\",\n \"fr\": {\n \"URL\": \"clickToCall\"\n },\n \"en\": {\n \"URL\": \"clickToCall\"\n }\n },\n {\n \"Name\": \"AlmaCheckEligibility\",\n \"Controller\": \"Alma\",\n \"Action\": \"AlmaCheckEligibility\",\n \"fr\": {\n \"URL\": \"AlmaCheckEligibility\"\n },\n \"en\": {\n \"URL\": \"AlmaCheckEligibility\"\n }\n },\n {\n \"Name\": \"AlmaGetPaymentInfos\",\n \"Controller\": \"Alma\",\n \"Action\": \"AlmaGetPaymentInfos\",\n \"fr\": {\n \"URL\": \"AlmaGetPaymentInfos\"\n },\n \"en\": {\n \"URL\": \"AlmaGetPaymentInfos\"\n }\n },\n {\n \"Name\": \"AlmaGetApiInfos\",\n \"Controller\": \"Alma\",\n \"Action\": \"AlmaGetApiInfos\",\n \"fr\": {\n \"URL\": \"AlmaGetApiInfos\"\n },\n \"en\": {\n \"URL\": \"AlmaGetApiInfos\"\n }\n },\n {\n \"Name\": \"AlmaPrePaymentRequest\",\n \"Controller\": \"Alma\",\n \"Action\": \"AlmaPrePaymentRequest\",\n \"fr\": {\n \"URL\": \"AlmaPrePaymentRequest\"\n },\n \"en\": {\n \"URL\": \"AlmaPrePaymentRequest\"\n }\n },\n {\n \"Name\": \"AlmaConfirm\",\n \"Controller\": \"Alma\",\n \"Action\": \"AlmaConfirm\",\n \"fr\": {\n \"URL\": \"AlmaConfirm\"\n },\n \"en\": {\n \"URL\": \"AlmaConfirm\"\n }\n },\n {\n \"Name\": \"AlmaAsyncResponse\",\n \"Controller\": \"Alma\",\n \"Action\": \"AlmaAsyncResponse\",\n \"fr\": {\n \"URL\": \"AlmaAsyncResponse\"\n },\n \"en\": {\n \"URL\": \"AlmaAsyncResponse\"\n }\n },\n {\n \"Name\": \"NetWaveGetProducts\",\n \"Controller\": \"Netwave\",\n \"Action\": \"GetProducts\",\n \"fr\": {\n \"URL\": \"GetProducts\"\n },\n \"en\": {\n \"URL\": \"GetProducts\"\n }\n },\n {\n \"Name\": \"NetWaveGetCategoryProduct\",\n \"Controller\": \"Netwave\",\n \"Action\": \"GetCategoryProduct\",\n \"fr\": {\n \"URL\": \"GetCategoryProduct/{productId:int}\"\n },\n \"en\": {\n \"URL\": \"GetCategoryProduct/{productId:int}\"\n }\n },\n {\n \"Name\": \"GetNetWaveInfo\",\n \"Controller\": \"Netwave\",\n \"Action\": \"GetNetWaveInfo\",\n \"fr\": {\n \"URL\": \"GetNetWaveInfo\"\n },\n \"en\": {\n \"URL\": \"GetNetWaveInfo\"\n }\n },\n {\n \"Name\": \"Contact\",\n \"Controller\": \"TestoonForm\",\n \"Action\": \"Contact\",\n \"fr\": {\n \"URL\": \"contact\"\n },\n \"en\": {\n \"URL\": \"contact\"\n }\n },\n {\n \"Name\": \"CatalogRequest\",\n \"Controller\": \"Form\",\n \"Action\": \"CatalogRequest\",\n \"fr\": {\n \"URL\": \"catalogue\"\n },\n \"en\": {\n \"URL\": \"catalogue\"\n }\n },\n {\n \"Name\": \"AccountNumericFiles\",\n \"Controller\": \"AccountTestoonNumericFiles\",\n \"Action\": \"Index\",\n \"fr\": {\n \"URL\": \"compte/fiches-techniques\"\n },\n \"en\": {\n \"URL\": \"account/fact-sheets\"\n }\n },\n {\n \"Name\": \"ListNumericFiles\",\n \"Controller\": \"AccountTestoonNumericFiles\",\n \"Action\": \"List\",\n \"fr\": {\n \"URL\": \"compte/fiches-techniques/list\"\n },\n \"en\": {\n \"URL\": \"account/fact-sheets/list\"\n }\n },\n {\n \"Name\": \"AccountUseDelegation\",\n \"Controller\": \"AccountUseDelegation\",\n \"Action\": \"AccountUseDelegation\",\n \"fr\": {\n \"URL\": \"delegation\",\n \"NGRoute\": \"/delegation\"\n },\n \"en\": {\n \"URL\": \"delegation\",\n \"NGRoute\": \"/delegation\"\n }\n },\n {\n \"Name\": \"CartQuotationPaymentList\",\n \"Controller\": \"PaymentOverride\",\n \"Action\": \"PaymentListQuotation\",\n \"fr\": {\n \"URL\": \"devis/choix-paiement/{idFolder:int}\"\n },\n \"en\": {\n \"URL\": \"quote/payment-choice/{idFolder:int}\"\n }\n }\n]);\n})();\n","(function (ng) {\n'use strict';\nng.module('gulp-dependencies', ['angucomplete-alt','app.account-claim','app.account-create','app.account-credits','app.account-gift-card','app.account-home','app.account-invoices','app.account-loyalty-points','app.account-numeric-files','app.account-numeric-products','app.account-order-tracking','app.account-quotation','app.account-returns','app.account-saved-carts','app.account-sponsorship','app.account-use-delegation','app.account-user','app.account-wishlist','app.authentication','app.autocomplete','app.autocomplete-select','app.cart.confirmation','app.cart.display','app.cart.identification','app.cart.payment','app.cart.payment-error','app.cart.shipping','app.cart.testoonCodeVerification','app.cart.testoonPartialShipping','app.cart.validation','app.category','app.category.filters','app.category.service','app.category.vente-privee','app.comparator','app.directive.account','app.form','app.mini-cart','app.password-recovery','app.product','app.product-gallery','app.product-kit','app.product-share','app.product.customization','app.product.price','app.product.reviews','app.product.service','app.search','app.searchfinder','app.service.compare','app.static','app.store-detail','app.stores','app.stores-service','compare.checkbox','directive.account-activities','directive.steps','infinite-scroll','isFromVentePrivee','main.nav','minilogin','navminilogin','newsletter','service.authentication','services.cart','show.hide']);\n})(angular);","angular.module(\"gulp-templates\", []).run([\"$templateCache\", function($templateCache) {$templateCache.put(\"rzslider.tpl\",\"
    \");\n$templateCache.put(\"directive.video-player.tpl\",\"
    \");\n$templateCache.put(\"component.addtocart-quantity.tpl\",\"\");\n$templateCache.put(\"component.addtocart.tpl\",\"
    \");\n$templateCache.put(\"component.addtowishlist.tpl\",\"\");\n$templateCache.put(\"component.delete-cart-item.tpl\",\"\");\n$templateCache.put(\"component.input-quantity.tpl\",\"
    \");\n$templateCache.put(\"component.modify-cart-item.tpl\",\"\");\n$templateCache.put(\"toast.tpl\",\"
    {{::title}}
    {{::message}}
    \");\n$templateCache.put(\"toast_addtocart.tpl\",\"
    {{::title}}
    {{::message}}
    \");\n$templateCache.put(\"toast_message.tpl\",\"
    {{::title}}
    {{::message}}
    \");\n$templateCache.put(\"toast_progressbar.tpl\",\"
    \");\n$templateCache.put(\"toast_authentication.tpl\",\"
    {{::title}}
    {{::message}}
    \");\n$templateCache.put(\"gmap.tpl\",\"\");\n$templateCache.put(\"quick-order-popover.tpl\",\"
    \\\"{{
    {{ ::item.Text1 ? item.Text1 + \\' - \\' : \\'\\' }}{{ ::item.Designation }}
    -
    \");\n$templateCache.put(\"quick-order.tpl\",\"\");\n$templateCache.put(\"facet-accordion-group.tpl\",\"
    \");\n$templateCache.put(\"facet-accordion.tpl\",\"
    \");\n$templateCache.put(\"autocomplete-select.tpl\",\"\");\n$templateCache.put(\"autocomplete.tpl\",\"
    {{ ::ctrl.textCategories }}
    {{ ::ctrl.textAdvices }}
    • \\\"{{
    \");\n$templateCache.put(\"toast_comparator.tpl\",\"
    {{::title}}
    {{::message}}
    \");}]);","(function () {\nangular.module(\"gulp-client\", [])\n.constant(\"DefaultLocalization\", \"fr\");\n})();\n","/*\r\n*\r\n* Version : 1.0.0\r\n* 04/09/2016 - 10h18\r\n*\r\n*! Octave Web7 !*/\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular.module('app', [\r\n /* /angular */\r\n 'ngSanitize',\r\n 'ngAnimate',\r\n 'ngCookies',\r\n 'ngRoute',\r\n\r\n /* /lib */\r\n 'ui.bootstrap',\r\n 'module.lazy-img',\r\n 'toastr',\r\n 'bootstrap.angular.validation',\r\n 'hl.sticky',\r\n 'AngularGM',\r\n 'smoothScroll',\r\n 'module.spinner',\r\n\r\n /* /components */\r\n 'component.input.quantity',\r\n 'component.addtocart',\r\n 'component.addtocart-quantity',\r\n 'component.addtowishlist',\r\n\r\n /* /modules */\r\n 'module.products-grid',\r\n 'module.modal',\r\n 'module.modal-controllers',\r\n\r\n /* /directives */\r\n 'directive.page-head',\r\n 'directive.owl-carousel',\r\n 'directives.breadcrumb',\r\n 'directive.collapse-menu',\r\n 'directives.form',\r\n 'directive.bootstrap-select',\r\n 'directive.clear-uib-tab',\r\n 'directive.video-player',\r\n 'directive.flip',\r\n 'directive.back-to-top',\r\n 'directive.cdn',\r\n\r\n /* /services */\r\n 'service.app',\r\n 'service.account',\r\n 'service.http',\r\n 'service.window-events',\r\n 'service.responsive',\r\n 'service.cdn',\r\n 'service.date',\r\n\r\n /* /filters */\r\n 'filter.price',\r\n 'filter.discount',\r\n 'filter.format',\r\n 'filter.phone',\r\n 'filter.truncate-date',\r\n\r\n 'gulp-client',\r\n 'gulp-dependencies',\r\n 'gulp-routes',\r\n 'gulp-templates',\r\n\r\n 'directive.debug'\r\n ])\r\n\r\n /* Ne pas modifier, Gulp > master.min.js */\r\n .constant('Environment', 'dev')\r\n\r\n /* @ngInject */\r\n .controller('mainController', [\"$scope\", \"$rootScope\", \"$timeout\", \"$templateCache\", \"DeviceService\", \"HttpService\", function ($scope, $rootScope, $timeout, $templateCache, DeviceService, HttpService) {\r\n var ctrl = this;\r\n\r\n var x = angular.element(document.querySelector('#header a'));\r\n x.bind('click', function () {\r\n $rootScope.$broadcast('searchClose');\r\n });\r\n\r\n setTimeout(function () {\r\n loadModalAddToCart();\r\n });\r\n\r\n $scope.$on('pageTitle', function (event, checkout) {\r\n $timeout(function () {\r\n ctrl.checkout = checkout;\r\n });\r\n });\r\n\r\n $scope.showPageLoader = false;\r\n $scope.$on('showPageLoader', function (event, value) {\r\n $scope.showPageLoader = value;\r\n });\r\n\r\n $scope.device = {};\r\n\r\n $scope.device.size = DeviceService.getSize($scope, function (size) {\r\n $scope.device.size = size;\r\n $scope.$emit('lazyImg:refresh');\r\n });\r\n\r\n $scope.device.xxs = DeviceService.onChange($scope, 'xxs', function (match) {\r\n $scope.device.xxs = match;\r\n });\r\n $scope.device.xs = DeviceService.onChange($scope, 'xs', function (match) {\r\n $scope.device.xs = match;\r\n });\r\n $scope.device.sm = DeviceService.onChange($scope, 'sm', function (match) {\r\n $scope.device.sm = match;\r\n });\r\n $scope.device.md = DeviceService.onChange($scope, 'md', function (match) {\r\n $scope.device.md = match;\r\n });\r\n $scope.device.lg = DeviceService.onChange($scope, 'lg', function (match) {\r\n $scope.device.lg = match;\r\n });\r\n $scope.device.xl = DeviceService.onChange($scope, 'xl', function (match) {\r\n $scope.device.xl = match;\r\n });\r\n\r\n\r\n $scope.device.desktop = DeviceService.onChange($scope, 'md, lg, xl', function (match) {\r\n $scope.device.desktop = match;\r\n });\r\n $scope.device.tablet = DeviceService.onChange($scope, 'sm', function (match) {\r\n $scope.device.tablet = match;\r\n });\r\n $scope.device.mobile = DeviceService.onChange($scope, 'xxs, xs', function (match) {\r\n $scope.device.mobile = match;\r\n });\r\n\r\n $scope.device.isTouch = DeviceService.isTouch();\r\n\r\n $scope.device.isIe = DeviceService.isIE().isIE;\r\n $scope.device.ieVersion = DeviceService.isIE().isIE ? 'ie' + DeviceService.isIE().version : null;\r\n\r\n $scope.device.isFF = DeviceService.isFF().isFF;\r\n\r\n function loadModalAddToCart() {\r\n HttpService.get({\r\n url: '/Template/Modal/ModalAddToCart',\r\n cache: true\r\n })\r\n .then(function (data) {\r\n $templateCache.put('/Template/Modal/ModalAddToCart', data);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n }])\r\n\r\n /* @ngInject */\r\n .config([\"$compileProvider\", \"Environment\", function ($compileProvider, Environment) {\r\n // $qProvider.errorOnUnhandledRejections(false);\r\n $compileProvider.commentDirectivesEnabled(false);\r\n $compileProvider.cssClassDirectivesEnabled(false);\r\n if (Environment === 'prod') {\r\n $compileProvider.debugInfoEnabled(false);\r\n }\r\n }])\r\n\r\n /* @ngInject */\r\n .config([\"lazyImgConfigProvider\", function (lazyImgConfigProvider) {\r\n lazyImgConfigProvider.setOptions({\r\n offset: 300,\r\n errorClass: 'error',\r\n successClass: 'loaded'\r\n });\r\n }])\r\n\r\n /* @ngInject */\r\n .config([\"usSpinnerConfigProvider\", function (usSpinnerConfigProvider) {\r\n usSpinnerConfigProvider.setDefaults({\r\n color: '#344d65',\r\n lines: 15,\r\n length: 12,\r\n width: 2,\r\n radius: 10,\r\n opacity: 0\r\n });\r\n usSpinnerConfigProvider.setTheme('small', {\r\n length: 8,\r\n radius: 5\r\n });\r\n usSpinnerConfigProvider.setDelay(400);\r\n }])\r\n\r\n /* @ngInject */\r\n .config([\"toastrConfig\", function (toastrConfig) {\r\n angular.extend(toastrConfig, {\r\n timeOut: 3000,\r\n closeButton: true,\r\n closeHtml: '',\r\n iconClasses: {\r\n success: ['success', 'glyphicon glyphicon-ok'],\r\n error: ['error', 'glyphicon glyphicon-exclamation-sign'],\r\n info: ['info', 'glyphicon glyphicon-info-sign'],\r\n warning: ['warning', 'glyphicon glyphicon-exclamation-sign']\r\n },\r\n templates: {\r\n toast: 'toast.tpl',\r\n progressbar: 'toast_progressbar.tpl'\r\n }\r\n });\r\n }])\r\n\r\n /* @ngInject */\r\n .config([\"bsValidationConfigProvider\", function (bsValidationConfigProvider) {\r\n bsValidationConfigProvider.global.setValidateFieldsOn(['blur', 'submit']);\r\n bsValidationConfigProvider.global.setDisplayErrorsAs('tooltip');\r\n bsValidationConfigProvider.global.tooltipAppendToBody = false;\r\n bsValidationConfigProvider.global.errorMessagePrefix = '  ';\r\n }])\r\n\r\n .config([\"dropzoneOpsProvider\", function (dropzoneOpsProvider) {\r\n dropzoneOpsProvider.setOptions({\r\n url: '/Upload',\r\n uploadMultiple: true,\r\n parallelUploads: 10,\r\n maxFilesize: '4',\r\n addRemoveLinks: true,\r\n renameFilename: function (name) {\r\n return new Date().getTime() + '_!_' + name;\r\n },\r\n dictRemoveFile: ''\r\n });\r\n }])\r\n\r\n /* @ngInject */\r\n .run([\"AppService\", \"bsValidationConfig\", function (AppService, bsValidationConfig) {\r\n\r\n AppService.getParams();\r\n\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n _.each(translate.forms, function (value, key) {\r\n translate.forms[key] = value.replace('{validValue}', '{{validValue}}').replace('{matchName}', '{{matchName}}');\r\n });\r\n bsValidationConfig.setMessages(translate.forms);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n window.onunload = function () { };\r\n\r\n PointerEventsPolyfill.initialize({});\r\n }]);\r\n\r\n angular.element(function () {\r\n angular.bootstrap(document, ['app'], {\r\n strictDi: true\r\n });\r\n });\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('component.addtocart-quantity', [])\r\n\r\n .component('buttonAddToCartQuantity', {\r\n require: {\r\n productCtrl: '?^^productDetail'\r\n },\r\n bindings: {\r\n isProductButton: ' 0;\r\n ctrl.showLoader = false;\r\n ctrl.ready = true;\r\n if (ctrl.isProductButton) {\r\n ctrl.productCtrl.setInputQuantity(value);\r\n }\r\n }\r\n\r\n function setValue(val) {\r\n watchValue();\r\n if (val === '') {\r\n return val;\r\n }\r\n val = parseInt(val);\r\n if (!isNaN(val)) {\r\n if (min !== undefined && min > val) {\r\n val = min;\r\n return val;\r\n }\r\n return val;\r\n }\r\n val = min || 0;\r\n return val;\r\n\r\n }\r\n\r\n function watchValue() {\r\n if (ctrl.isChanged) return;\r\n ctrl.isChanged = true;\r\n unwatch = $scope.$watch('$ctrl.quantity', changedValue);\r\n }\r\n\r\n // eslint-disable-next-line\r\n function changedValue(qty, old, scope, delay) {\r\n delay = delay || 800;\r\n ctrl.active = ctrl.quantity > 0 || ctrl.quantity === '';\r\n $timeout.cancel(addTimeout);\r\n\r\n if (ctrl.quantity === '' || ctrl.quantity === ctrl.cartQuantity) return false;\r\n\r\n addTimeout = $timeout(function () {\r\n if (ctrl.isModalButton && ctrl.modalItem) {\r\n ctrl.modalItem.quantity = ctrl.quantity;\r\n if (ctrl.quantity === 0) {\r\n ModalService.close();\r\n }\r\n }\r\n var inc = ctrl.quantity - ctrl.cartQuantity;\r\n ctrl.cartQuantity = inc;\r\n if (typeof ctrl.action !== 'undefined') {\r\n ctrl.addToCart(ctrl.action({qty: ctrl.quantity, inc: inc}), ctrl.quantity);\r\n } else {\r\n ctrl.addToCart(getProductsToAdd(ctrl.quantity, inc), ctrl.quantity);\r\n }\r\n addTimeout = null;\r\n }, delay, false);\r\n }\r\n\r\n function getProductsToAdd(qty, inc) {\r\n return [\r\n {\r\n idLine: ctrl.idLine,\r\n Comment: ctrl.commentLine || '',\r\n idProduct: ctrl.id,\r\n Price: AppService.getProductPrice(ctrl.price, qty),\r\n costTTC: 0,\r\n costHT: 0,\r\n showTTCPrice: showTTCPrice,\r\n quantity: inc,\r\n designation: ctrl.designation,\r\n img: ctrl.img,\r\n URL: ctrl.url\r\n }\r\n ];\r\n }\r\n\r\n function addToCart(products, quantity) {\r\n ctrl.showLoader = true;\r\n ctrl.posLoader = ctrl.cartQuantity < 0 ? 'left' : '';\r\n\r\n if (!ctrl.isCartButton && !ctrl.isInCart && $location.path() !== '/' + RoutesService.getUrlByName('Cart')) {\r\n ModalService.close();\r\n ModalService.show(\r\n '/Template/Modal/ModalAddToCart',\r\n products,\r\n null,\r\n 'modalAddToCartCtrl',\r\n null,\r\n null,\r\n {\r\n cartLink: '/' + RoutesService.getUrlByName('Cart')\r\n }\r\n );\r\n } else {\r\n if (!ctrl.isModalButton) {\r\n ModalService.close();\r\n }\r\n var mess = quantity === 0 ? ctrl.titleDeleteOk : ctrl.titleModifyOk;\r\n toastr.success(ctrl.designation, mess, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_addtocart.tpl',\r\n data: {\r\n img: products[0].img\r\n }\r\n }\r\n });\r\n }\r\n\r\n AppService.addToCart(products)\r\n .then(function (response) {\r\n ctrl.showLoader = false;\r\n if (response.status === 'OK') {\r\n AppService.updateParams(response.results);\r\n } else {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n });\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n }]\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('component.addtocart', [])\r\n\r\n .component('buttonAddToCart', {\r\n require: {\r\n productCtrl: '?^^productDetail',\r\n comparatorCtrl: '?^^comparator'\r\n },\r\n bindings: {\r\n isProductButton: '.\r\n **/\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('component.input.quantity', [])\r\n\r\n .component('inputQuantity', {\r\n require: {\r\n productCtrl: '?^^productDetail'\r\n },\r\n bindings: {\r\n id: ' val) {\r\n val = ctrl.min;\r\n return val;\r\n }\r\n return val;\r\n }\r\n val = ctrl.min || 0;\r\n return val;\r\n\r\n }\r\n\r\n }]\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('component.modify-cart-item', [])\r\n\r\n .component('buttonModifyCartItem', {\r\n require: {\r\n productCtrl: '?^^productDetail'\r\n },\r\n bindings: {\r\n size: '@?',\r\n btnClass: '@',\r\n isPrimary: '<',\r\n addToCartActive: '<',\r\n allowAddToCart: '<',\r\n titleAdd: '@?',\r\n titleAlert: '@?',\r\n titleModifyOk: '@?',\r\n tooltip: '@',\r\n modalCtrl: '<',\r\n device: '<'\r\n },\r\n templateUrl: 'component.modify-cart-item.tpl',\r\n /* @ngInject */\r\n controller: [\"toastr\", \"AppService\", \"ModalService\", function (toastr, AppService, ModalService) {\r\n var ctrl = this;\r\n\r\n ctrl.addToCart = function () {\r\n var products = ctrl.productCtrl.getProductsToAdd(ctrl.modalCtrl.quantity, 0);\r\n products[0].idLine = ctrl.modalCtrl.idLine;\r\n\r\n ctrl.modalCtrl.showLoader = true;\r\n AppService.addToCart(products)\r\n .then(function (response) {\r\n ctrl.modalCtrl.showLoader = false;\r\n if (response.status === 'OK') {\r\n AppService.updateParams(response.results);\r\n toastr.success(ctrl.designation, ctrl.titleModifyOk, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_addtocart.tpl',\r\n data: {\r\n img: products[0].img\r\n }\r\n }\r\n });\r\n ModalService.close();\r\n } else {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n });\r\n };\r\n\r\n }]\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('directive.back-to-top', [])\r\n\r\n .directive('backToTop', function () {\r\n return {\r\n restrict: 'A',\r\n controllerAs: 'backToTopCtrl',\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$window\", \"WindowEventsService\", function ($scope, $window, WindowEventsService) {\r\n var ctrl = this,\r\n lastPos;\r\n ctrl.active = false;\r\n\r\n WindowEventsService.listen(true, 'scroll', handler, 500);\r\n\r\n function handler() {\r\n var sc = isNaN(window.pageYOffset) ? document.documentElement.scrollTop : window.pageYOffset;\r\n $scope.$apply(function () {\r\n ctrl.active = sc > $window.innerHeight && sc < lastPos ? true : false;\r\n });\r\n lastPos = sc;\r\n }\r\n }]\r\n };\r\n\r\n });\r\n\r\n})();\r\n","/*\r\n * Bootstrap Select directive\r\n * Version 1.0.0\r\n * Octave\r\n **/\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('directive.bootstrap-select', [])\r\n\r\n /* @ngInject */\r\n .directive('selectpicker', [\"$timeout\", function ($timeout) {\r\n return {\r\n restrict: 'A',\r\n scope: false,\r\n link: function (scope, element, attrs) {\r\n scope.$eval(attrs.ngModel + '=\"' + element.val() + '\"');\r\n $timeout(function () {\r\n element.selectpicker({\r\n mobile: scope.device ? scope.device.mobile : false\r\n });\r\n });\r\n\r\n scope.$on('$destroy', function () {\r\n element.selectpicker('destroy');\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n angular\r\n .module('directive.cdn', [])\r\n /* @ngInject */\r\n .directive('cdn', [\"CdnService\", function (CdnService) {\r\n return {\r\n restrict: 'A',\r\n priority: 100,\r\n scope: {\r\n cdnResponsiveSize: '@?',\r\n cdnSizes: '',\r\n controllerAs: 'debugCtrl',\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$document\", function ($scope, $document) {\r\n var ctrl = this,\r\n ctrlKey = false,\r\n altKey = false,\r\n active = false;\r\n\r\n ctrl.isMenuCollapse = false;\r\n ctrl.toggleMenuCollapse = function () {\r\n ctrl.isMenuCollapse = !ctrl.isMenuCollapse;\r\n };\r\n\r\n $document.on('keydown', function (event) {\r\n if (event.ctrlKey) ctrlKey = true;\r\n if (event.altKey) altKey = true;\r\n if (ctrlKey && altKey && event.keyCode === 68) {\r\n active = !active;\r\n $scope.$apply(function () {\r\n ctrl.template = active ? '/Template/Debug/Index' : '';\r\n });\r\n }\r\n });\r\n $document.on('keyup', function () {\r\n ctrlKey = altKey = false;\r\n });\r\n }]\r\n };\r\n\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('directive.flip', [])\r\n\r\n /* @ngInject */\r\n .directive('flip', [\"$timeout\", function ($timeout) {\r\n return {\r\n restrict: 'A',\r\n scope: true,\r\n link: function (scope, element, attrs) {\r\n\r\n var flip = attrs.flip;\r\n\r\n setTimeout(resize);\r\n\r\n scope.toggle = function () {\r\n scope.flipped = !scope.flipped;\r\n resize();\r\n };\r\n\r\n scope.$on('toggle_' + flip, function () {\r\n scope.toggle();\r\n });\r\n\r\n scope.$on('flipBack_' + flip, function () {\r\n scope.flipped = true;\r\n scope.direct = true;\r\n $timeout(function () {\r\n scope.direct = false;\r\n }, 500);\r\n });\r\n\r\n scope.$on('resize_' + flip, function () {\r\n setTimeout(resize);\r\n });\r\n\r\n scope.$on('watchResize', function () {\r\n var time = new Date().getTime();\r\n var inter = setInterval(function () {\r\n resize();\r\n var ntime = new Date().getTime();\r\n if (ntime > time + 700) {\r\n clearInterval(inter);\r\n }\r\n }, 50);\r\n });\r\n\r\n function resize() {\r\n scope.$emit('resized');\r\n var selector = !scope.flipped ? '.front' : '.back',\r\n height = Math.floor(element.find(selector).children().outerHeight(true)) + 1;\r\n element.css('min-height', height);\r\n }\r\n\r\n }\r\n };\r\n\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('directive.page-head', [])\r\n\r\n /* @ngInject */\r\n .directive('pageTitle', [\"$window\", function ($window) {\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n title: '@',\r\n checkout: '@?'\r\n },\r\n link: function (scope, element) {\r\n if (scope.checkout && scope.checkout === 'true') {\r\n $(document.body).addClass('checkout');\r\n } else {\r\n $(document.body).removeClass('checkout');\r\n }\r\n scope.$emit('pageTitle', scope.checkout && scope.checkout === 'true');\r\n $window.document.title = scope.title;\r\n }\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .directive('pageMetaDescription', function () {\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n content: '@'\r\n },\r\n link: function (scope, element) {\r\n $('meta[name=\"description\"]').attr('content', scope.content);\r\n }\r\n };\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('directive.responsive-img', [])\r\n\r\n /* @ngInject */\r\n .directive('responsiveImg', function () {\r\n return {\r\n restrict: 'A',\r\n priority: 100,\r\n scope: {\r\n sizes: '='\r\n },\r\n link: function (scope, element, attrs) {\r\n\r\n var deregister = attrs.$observe('responsiveImg', function (size) {\r\n\r\n var src = '/Image/' + scope.sizes.id + '/' + scope.sizes[size];\r\n if (angular.isDefined(attrs.lazyImg)) {\r\n if (element.hasClass('loaded')) {\r\n element.attr('src', src);\r\n } else {\r\n attrs.$set('lazyImg', src);\r\n }\r\n } else {\r\n element.attr('src', src);\r\n }\r\n });\r\n\r\n scope.$on('$destroy', deregister);\r\n\r\n }\r\n };\r\n\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('directive.video-player', [])\r\n\r\n /* @ngInject */\r\n .directive('videoPlayer', [\"$timeout\", function ($timeout) {\r\n\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n url: '@',\r\n autoplay: '<'\r\n },\r\n templateUrl: 'directive.video-player.tpl',\r\n link: function (scope, element) {\r\n scope.showLoader = true;\r\n\r\n var id = getYouTubeIdFromUrl(scope.url);\r\n\r\n element.children('.player').pPlayer({\r\n youtubeVideoId: id,\r\n autoplay: scope.autoplay ? 1 : 0,\r\n adapter: 'Youtube',\r\n showinfo: 0,\r\n features: [ 'playpause', 'progress', 'timer', 'quality', 'mute', 'fullscreen' ],\r\n resizeVideo: false,\r\n afterInit: function () {\r\n $timeout(function () {\r\n scope.showLoader = false;\r\n });\r\n var $mainVideo = element.parent().parent();\r\n if ($mainVideo.hasClass('main-video')) {\r\n $mainVideo.children('.inner').addClass('in');\r\n }\r\n }\r\n });\r\n }\r\n };\r\n\r\n // Functions\r\n\r\n function getYouTubeIdFromUrl(youtubeUrl) {\r\n var regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=)([^#\\&\\?]*).*/;\r\n var match = youtubeUrl.match(regExp);\r\n if (match && match[2].length === 11) {\r\n return match[2];\r\n }\r\n return false;\r\n }\r\n\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('directives.breadcrumb', [])\r\n\r\n /* @ngInject */\r\n .directive('breadcrumb', function () {\r\n return {\r\n restrict: 'A',\r\n link: function (scope, element) {\r\n $('#navMenu, #navSecondary, #navAside').find('li.active').removeClass('active');\r\n\r\n var $items = element.find('.item'),\r\n i,\r\n len = $items.length;\r\n\r\n for (i = 0; i < len; i++) {\r\n var id = $($items[i]).data('id');\r\n $('#navMenu, #navSecondary, #navAside').find('li[data-id=\"' + id + '\"]').addClass('active');\r\n }\r\n }\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .directive('breadcrumbAccount', [\"$timeout\", function ($timeout) {\r\n return {\r\n restrict: 'A',\r\n link: function (scope, element) {\r\n $('#navMenu, #navSecondary, #navAside').find('li.active').removeClass('active');\r\n\r\n var $items = element.find('.item-3'),\r\n i,\r\n len = $items.length;\r\n\r\n for (i = 0; i < len; i++) {\r\n var menu = $($items[i]).data('menu');\r\n $timeout(addActive, 0, true, menu);\r\n }\r\n }\r\n };\r\n\r\n // Functions\r\n\r\n function addActive(menu) {\r\n $('#navAside').find('li[data-menu=\"' + menu + '\"]').addClass('active');\r\n }\r\n\r\n }]);\r\n\r\n})();\r\n","/*\r\n * Input directive\r\n * Version 1.0.0\r\n * Octave\r\n * Modified from .\r\n **/\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n noZoomDirective.$inject = [\"$document\"];\r\n angular\r\n .module('directives.form', [])\r\n\r\n /* @ngInject */\r\n .directive('rbInput', function () {\r\n\r\n var template = ['',\r\n '',\r\n '',\r\n '',\r\n ''\r\n ].join('');\r\n\r\n return {\r\n restrict: 'A',\r\n /* require: 'ngModel',*/\r\n priority: 200,\r\n scope: {\r\n theme: '@',\r\n label: '@?',\r\n icon: '@',\r\n color: '@',\r\n ngRequired: '='\r\n /* ngRequired: '@valRequired',\r\n ngPattern: '@',\r\n ngMinlength: '=valMinlengthMin',\r\n ngMaxlength: '=',\r\n ngChange: '&ngChange',\r\n ngTrim: '=',\r\n ngModel: '=',\r\n trigger : '@focus'*/\r\n },\r\n link: function (scope, element, attrs) {\r\n\r\n var $wrapper = angular.element(template);\r\n element.after($wrapper);\r\n $wrapper.prepend(element);\r\n\r\n scope.input = element;\r\n\r\n // Default options\r\n attrs.theme = attrs.theme || 'default';\r\n attrs.type = attrs.type || 'text';\r\n attrs.color = attrs.color || '1';\r\n var optRequired = attrs.optRequired === 'true' ? ' opt-required' : '';\r\n\r\n var inputClass = 'input-filled';\r\n\r\n element\r\n .addClass('form-control input-field input-field-' + attrs.theme)\r\n .parent().addClass('input-' + attrs.theme + optRequired);\r\n\r\n var $label = element.parent().find('label');\r\n $label\r\n .attr('for', attrs.id)\r\n .addClass('input-label-' + attrs.theme)\r\n .find('.input-label-content').addClass('input-label-content-' + attrs.theme);\r\n\r\n if (angular.isDefined(attrs.label)) {\r\n if (attrs.required) {\r\n scope.label = scope.label + ' *';\r\n }\r\n $label.find('.input-label-content').html(scope.label);\r\n }\r\n\r\n if (angular.isDefined(attrs.placeholder)) {\r\n if (attrs.required) {\r\n element.attr('placeholder', attrs.placeholder + ' *');\r\n }\r\n }\r\n\r\n if (scope.icon && scope.icon !== '') {\r\n element.addClass('with-icon');\r\n $label.prepend('');\r\n }\r\n\r\n onInputChange();\r\n scope.input.on('focus', onInputFocus);\r\n scope.input.on('blur', onInputBlur);\r\n\r\n // To detect browser autofill\r\n scope.input.on('change', onInputChange);\r\n\r\n if (angular.isDefined(attrs.ngRequired)) {\r\n scope.$watch(function () { return scope.ngRequired; }, function (value) {\r\n if (angular.isDefined(attrs.label)) {\r\n scope.label = !value ? attrs.label : attrs.label + ' *';\r\n $label.find('.input-label-content').html(scope.label);\r\n }\r\n });\r\n }\r\n\r\n scope.$watch(function () { return scope.input.val(); }, function () {\r\n onInputChange();\r\n });\r\n\r\n function onInputChange() {\r\n if (scope.input.val().trim() !== '') addClass();\r\n }\r\n\r\n function onInputFocus() {\r\n addClass();\r\n }\r\n\r\n function onInputBlur() {\r\n if (scope.input.val().trim() === '') removeClass();\r\n }\r\n\r\n function addClass() {\r\n $wrapper.addClass(inputClass);\r\n }\r\n\r\n function removeClass() {\r\n $wrapper.removeClass(inputClass);\r\n }\r\n }\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .directive('ngModelInit', [\"$parse\", function ($parse) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n link: function (scope, element, attrs) {\r\n var value = attrs.ngModelInit || attrs.value || element.text();\r\n value = String(value).toLowerCase() === 'false' ? false : value;\r\n value = String(value).toLowerCase() === 'true' ? true : value;\r\n $parse(attrs.ngModel).assign(scope, value);\r\n }\r\n };\r\n }])\r\n\r\n .directive('input', noZoomDirective)\r\n .directive('textarea', noZoomDirective)\r\n .directive('select', noZoomDirective);\r\n\r\n /* @ngInject */\r\n function noZoomDirective($document) {\r\n var maxScale = ',maximum-scale=';\r\n\r\n var viewport = _.find($document[0].getElementsByTagName('meta'), function (tag) {\r\n return tag.name === 'viewport';\r\n });\r\n var content = viewport.content;\r\n\r\n function changeViewport(event) {\r\n if (event.type === 'blur') {\r\n viewport.content = content;\r\n } else {\r\n viewport.content = content + maxScale + 1;\r\n }\r\n }\r\n\r\n return {\r\n link: function (scope, element) {\r\n element.on('focus blur', changeViewport);\r\n }\r\n };\r\n }\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('filter.discount', [])\r\n\r\n /* @ngInject */\r\n .filter('discount', [\"AppService\", function (AppService) {\r\n var params = null;\r\n\r\n function discountFilter(value) {\r\n if (value === null) return value;\r\n\r\n if (params !== null) {\r\n return !angular.isFunction(params.then) ? getDiscountFilter(value) : undefined;\r\n }\r\n params = AppService.getParams()\r\n .then(function (data) {\r\n params = data;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n }\r\n\r\n function getDiscountFilter(value) {\r\n var loc = params.Localization,\r\n template = loc.DiscountHTMLFormat,\r\n render = template.replace('[%amount%]', Math.round(value))\r\n .replace(',', '##DiscountTSep##')\r\n .replace('.', loc.DiscountDecimalSeparator)\r\n .replace('##DiscountTSep##', loc.DiscountThousandSeparator);\r\n return render;\r\n }\r\n\r\n discountFilter.$stateful = true;\r\n return discountFilter;\r\n\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('filter.format', [])\r\n\r\n /* @ngInject */\r\n .filter('format', function () {\r\n return function (value) {\r\n if (!value) return value;\r\n if (arguments.length > 1) {\r\n var str = value;\r\n for (var i = 1; i < arguments.length; i++) {\r\n var reg = new RegExp('\\\\{' + (i - 1) + '\\\\}');\r\n str = str.replace(reg, arguments[i]);\r\n }\r\n return str;\r\n }\r\n return value;\r\n };\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('filter.phone', [])\r\n\r\n .filter('phoneNumber', function () {\r\n return function (num) {\r\n return _.replace(num, /\\./g, ' ');\r\n };\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('filter.price', [])\r\n\r\n /* @ngInject */\r\n .filter('price', [\"AppService\", function (AppService) {\r\n var params = null;\r\n\r\n function priceFilter(prices, str, ttc) {\r\n if (prices === null) return prices;\r\n ttc = ttc === 'ht' ? false : true;\r\n\r\n if (params !== null) {\r\n return !angular.isFunction(params.then) ? getPriceFilter(prices, str, ttc) : undefined;\r\n }\r\n params = AppService.getParams()\r\n .then(function (data) {\r\n params = data;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n function getPriceFilter(prices, str, ttc) {\r\n var loc = params.Localization,\r\n value,\r\n template = params.Visitor.CardType.ShowTTCPrice ? loc.PriceHTMLFormatVATincluded : loc.PriceHTMLFormatVATexcluded;\r\n\r\n switch (str) {\r\n case 'value':\r\n value = prices;\r\n template = ttc ? loc.PriceHTMLFormatVATincluded : loc.PriceHTMLFormatVATexcluded;\r\n break;\r\n\r\n case 'amount-price':\r\n value = params.Visitor.CardType.ShowTTCPrice ? prices.TTCAmount : prices.HTAmount; \r\n break;\r\n\r\n case 'amount-price-ttc':\r\n value = prices.TTCAmount;\r\n break;\r\n\r\n case 'price-by-quantity':\r\n value = params.Visitor.CardType.ShowTTCPrice ? prices.TTCDiscountedPriceByQuantity : prices.HTDiscountedPriceByQuantity; \r\n break;\r\n\r\n case 'final-price':\r\n value = params.Visitor.CardType.ShowTTCPrice ? prices.TTCDiscountedPrice : prices.HTDiscountedPrice;\r\n template = ttc ? loc.PriceHTMLFormatVATincluded : loc.PriceHTMLFormatVATexcluded;\r\n break;\r\n\r\n case 'final-price-ht':\r\n value = prices.HTDiscountedPrice;\r\n template = ttc ? loc.PriceHTMLFormatVATincluded : loc.PriceHTMLFormatVATexcluded;\r\n break;\r\n\r\n case 'final-price-ttc':\r\n value = prices.TTCDiscountedPrice;\r\n template = ttc ? loc.PriceHTMLFormatVATincluded : loc.PriceHTMLFormatVATexcluded;\r\n break;\r\n\r\n default:\r\n value = params.Visitor.CardType.ShowTTCPrice ? prices.TTCPrice : prices.HTPrice;\r\n }\r\n var render = template.replace('[%amount%]', format(loc.PriceFormat, parseFloat(value)))\r\n .replace(',', '##PriceTSep##')\r\n .replace('.', loc.PriceDecimalSeparator)\r\n .replace('[%amountCode%]', format(loc.PriceFormat, parseFloat(value)))\r\n .replace('##PriceTSep##', loc.PriceThousandSeparator)\r\n .replace('[%currency%]', params.Currency.Symbol)\r\n .replace('[%currencyCode%]', params.Currency.ISOCode);\r\n\r\n return render;\r\n }\r\n\r\n priceFilter.$stateful = true;\r\n return priceFilter;\r\n\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('filter.truncate-date', [])\r\n\r\n /* @ngInject */\r\n .filter('truncateDate', function () {\r\n return function (value) {\r\n if (value.indexOf('h00') === value.length - 3) {\r\n return value.slice(0, -2);\r\n }\r\n return value;\r\n };\r\n });\r\n\r\n})();\r\n","/**!\r\n * AngularJS dropzone directive\r\n * @author Uday Hiwarale \r\n * https://www.github.com/thatisuday/ngDropzone\r\n */\r\n\r\n(function(){\r\n 'use strict';\r\n\r\n\tangular.module('thatisuday.dropzone', []).provider('dropzoneOps', function(){\r\n\r\n\t\tvar defOps = {};\r\n\r\n\t\treturn {\r\n\t\t\tsetOptions : function(newOps){\r\n\t\t\t\tangular.extend(defOps, newOps);\r\n\t\t\t},\r\n\t\t\t$get : function(){\r\n\t\t\t\treturn defOps;\r\n\t\t\t}\r\n\t\t}\r\n\t}).directive('ngDropzone', ['$timeout', 'dropzoneOps', function($timeout, dropzoneOps){\r\n\t\treturn {\r\n\t\t\trestrict : 'AE',\r\n\t\t\ttemplate : '
    ',\r\n\t\t\treplace : true,\r\n\t\t\tscope : {\r\n\t\t\t\toptions : '=?', //http://www.dropzonejs.com/#configuration-options\r\n\t\t\t\tcallbacks : '=?', //http://www.dropzonejs.com/#events\r\n\t\t\t\tmethods : '=?', //http://www.dropzonejs.com/#dropzone-methods\r\n\t\t\t\tacceptedFiles: '@?',\r\n\t\t\t\tsuccess: '&?',\r\n\t\t\t\tremovedfile: '&?'\r\n\t\t\t},\r\n\t\t\tlink : function(scope, iElem, iAttr){\r\n\t\t\t\t//Set options for dropzone {override from dropzone options provider}\r\n\t\t\t\tscope.options = scope.options || {};\r\n\r\n\t\t\t\tif (scope.options.dictFileTooBig) {\r\n\t\t\t\t\tscope.options.dictFileTooBig = scope.options.dictFileTooBig.replace('{maxFilesize}', '{{maxFilesize}}');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (scope.options.maxFiles == 1) {\r\n\t\t\t\t\tscope.options.init = function() {\r\n\t\t\t\t\t\tthis.on(\"maxfilesexceeded\", function(file) {\r\n\t\t\t\t\t\t\tthis.removeAllFiles();\r\n\t\t\t\t\t\t\tthis.addFile(file);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (scope.acceptedFiles) {\r\n\t\t\t\t\tscope.options.acceptedFiles = scope.acceptedFiles;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar initOps = angular.extend({}, dropzoneOps, scope.options);\r\n\r\n\t\t\t\t//Instantiate dropzone with initOps\r\n\t\t\t\tvar dropzone = new Dropzone(iElem[0], initOps);\r\n\r\n\t\t\t\t/*********************************************/\r\n\r\n\t\t\t\t//Instantiate Dropzone methods (Control actions)\r\n\t\t\t\tscope.methods = scope.methods || {};\r\n\r\n\t\t\t\tscope.methods.getDropzone = function(){\r\n\t\t\t\t\treturn dropzone; //Return dropzone instance\r\n\t\t\t\t};\r\n\r\n\t\t\t\tscope.methods.getAllFiles = function(){\r\n\t\t\t\t\treturn dropzone.files; //Return all files\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvar controlMethods = [\r\n\t\t\t\t\t'removeFile', 'removeAllFiles', 'processQueue',\r\n\t\t\t\t\t'getAcceptedFiles', 'getRejectedFiles', 'getQueuedFiles', 'getUploadingFiles',\r\n\t\t\t\t\t'disable', 'enable', 'confirm', 'createThumbnailFromUrl'\r\n\t\t\t\t];\r\n\r\n\t\t\t\tangular.forEach(controlMethods, function(methodName){\r\n\t\t\t\t\tscope.methods[methodName] = function(){\r\n\t\t\t\t\t\tdropzone[methodName].apply(dropzone, arguments);\r\n\t\t\t\t\t\tif(!scope.$$phase && !scope.$root.$$phase) scope.$apply();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t/*********************************************/\r\n\r\n\t\t\t\t//Set invents (callbacks)\r\n\t\t\t\tif(scope.callbacks){\r\n\t\t\t\t\t/*var callbackMethods = [\r\n\t\t\t\t\t\t'drop', 'dragstart', 'dragend',\r\n\t\t\t\t\t\t'dragenter', 'dragover', 'dragleave', 'addedfile', 'removedfile',\r\n\t\t\t\t\t\t'thumbnail', 'error', 'processing', 'uploadprogress',\r\n\t\t\t\t\t\t'sending', 'success', 'complete', 'canceled', 'maxfilesreached',\r\n\t\t\t\t\t\t'maxfilesexceeded', 'processingmultiple', 'sendingmultiple', 'successmultiple',\r\n\t\t\t\t\t\t'completemultiple', 'canceledmultiple', 'totaluploadprogress', 'reset', 'queuecomplete'\r\n\t\t\t\t\t]; Hack */\r\n\t\t\t\t\tvar callbackMethods = ['addedfile', 'complete', 'success', 'successmultiple', 'removedfile'];\r\n\t\t\t\t\tangular.forEach(callbackMethods, function(method){\r\n\t\t\t\t\t\tvar callback = (scope.callbacks[method] || angular.noop);\r\n\t\t\t\t\t\tdropzone.on(method, function(){\r\n\t\t\t\t\t\t\tcallback.apply(null, arguments);\r\n\t\t\t\t\t\t\tif(!scope.$$phase && !scope.$root.$$phase) scope.$apply();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (scope.success) {\r\n\t\t\t\t\tdropzone.on('success', function(file){\r\n\t\t\t\t\t\tscope.$apply(function () {\r\n\t\t\t\t\t\t\tscope.success({\r\n\t\t\t\t\t\t\t\tfile: file\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tif (scope.removedfile) {\r\n\t\t\t\t\tdropzone.on('removedfile', function(file){\r\n\t\t\t\t\t\tscope.$apply(function () {\r\n\t\t\t\t\t\t\tscope.removedfile({\r\n\t\t\t\t\t\t\t\tfile: file\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n }\r\n dropzone.on('addedfile', function (file) {\r\n var self = this;\r\n window.loadImage.parseMetaData(file, function (data) {\r\n // use embedded thumbnail if exists.\r\n if (data.exif) {\r\n var thumbnail = data.exif.get('Thumbnail');\r\n var orientation = data.exif.get('Orientation');\r\n if (thumbnail && orientation) {\r\n window.loadImage(thumbnail, function (img) {\r\n self.emit('thumbnail', file, img.toDataURL());\r\n }, { orientation: orientation });\r\n return;\r\n }\r\n }\r\n // use default implementation for PNG, etc.\r\n self.createThumbnail(file);\r\n });\r\n });\r\n\r\n scope.$emit('dropzone', dropzone);\r\n\t\t\t}\r\n\t\t}\r\n\t}]);\r\n})();\r\n","/**\r\n * AngularGM - Google Maps Directives for AngularJS\r\n * @version v1.0.2 - 2016-11-19\r\n * @link https://github.com/dylanfprice/angular-gm\r\n * @author Dylan Price \r\n * @license MIT License, http://www.opensource.org/licenses/MIT\r\n */\r\n/**\r\n * @doc module\r\n * @name angulargm\r\n *\r\n * @description\r\n * Module for embedding Google Maps into AngularJS applications.\r\n *\r\n * # Example Plunkers ([fullscreen](http://embed.plnkr.co/PYDYjVuRHaJpdntoJtqL))\r\n *\r\n * \r\n *\r\n * Author: Dylan Price \r\n */\r\n(function() {\r\n'use strict';\r\n\r\n angular.module('AngularGM', []).\r\n\r\n /**\r\n * @ngdoc service\r\n * @name angulargm.service:angulargmDefaults\r\n *\r\n * @description\r\n * Default configuration.\r\n *\r\n * To provide your own default config, use the following\r\n * ```js\r\n * angular.module('myModule').config(function($provide) {\r\n * $provide.decorator('angulargmDefaults', function($delegate) {\r\n * return angular.extend($delegate, {\r\n * 'precision': 3,\r\n * 'markerConstructor': myCustomMarkerConstructor,\r\n * 'polylineConstructor': myCustomPolylineConstructor,\r\n * 'mapOptions': {\r\n * center: {lat: 55, lng: 111},\r\n * mapTypeId: google.maps.MapTypeId.SATELLITE,\r\n * ...\r\n * }\r\n * });\r\n * });\r\n * });\r\n * ```\r\n */\r\n factory('angulargmDefaults', function() {\r\n return {\r\n 'precision': 3,\r\n 'markerConstructor': google.maps.Marker,\r\n 'polylineConstructor': google.maps.Polyline,\r\n 'circleConstructor': google.maps.Circle,\r\n 'mapOptions': {\r\n zoom : 8,\r\n center : {lat: 46, lng: -120},\r\n mapTypeId : google.maps.MapTypeId.ROADMAP\r\n }\r\n };\r\n });\r\n\r\n})();\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name angulargm.directive:gmInfoWindow\r\n * @element ANY\r\n *\r\n * @description\r\n * A directive for creating a google.maps.InfoWindow.\r\n *\r\n * @param {expression} gm-info-window scope variable to store the\r\n * [google.maps.InfoWindow](https://developers.google.com/maps/documentation/javascript/reference#InfoWindow)\r\n * in. Does not have to already exist.\r\n *\r\n * @param {expression} gm-info-window-options object in the current scope\r\n * that is a\r\n * [google.maps.InfoWindowOptions](https://developers.google.com/maps/documentation/javascript/reference#InfoWindowOptions)\r\n * object. If unspecified, google maps api defaults will be used.\r\n *\r\n * @param {expression} gm-on-*event* an angular expression which evaluates to an\r\n * event handler. This handler will be attached to the InfoWindow's \\*event\\*\r\n * event. The variable `infoWindow` evaluates to the InfoWindow. For example:\r\n * ```html\r\n * gm-on-closeclick=\"myCloseclickFn(infoWindow)\"\r\n * ```\r\n * will call your myCloseclickFn whenever the InfoWindow is clicked closed. You\r\n * may have multiple `gm-on-*event*` handlers, but only one for each type of\r\n * event.\r\n */\r\n(function () {\r\n'use strict';\r\n\r\n angular.module('AngularGM').\r\n\r\n /*\r\n * Much of this code is taken from the Angular UI team, see:\r\n * https://github.com/angular-ui/ui-map/blob/master/ui-map.js\r\n */\r\n directive('gmInfoWindow',\r\n ['$parse', '$compile', '$timeout', 'angulargmUtils',\r\n function ($parse, $compile, $timeout, angulargmUtils) {\r\n\r\n /** aliases */\r\n var getEventHandlers = angulargmUtils.getEventHandlers;\r\n\r\n function link(scope, element, attrs, controller) {\r\n var opts = angular.extend({}, scope.$eval(attrs.gmInfoWindowOptions));\r\n opts.content = element[0];\r\n var model = $parse(attrs.gmInfoWindow);\r\n var infoWindow = model(scope);\r\n\r\n if (!infoWindow) {\r\n infoWindow = new google.maps.InfoWindow(opts);\r\n model.assign(scope, infoWindow);\r\n }\r\n\r\n var handlers = getEventHandlers(attrs);\r\n\r\n // set up info window event handlers\r\n angular.forEach(handlers, function(handler, event) {\r\n google.maps.event.addListener(infoWindow, event, function() {\r\n $timeout(function() {\r\n handler(scope, {\r\n infoWindow: infoWindow\r\n });\r\n });\r\n });\r\n });\r\n }\r\n\r\n return {\r\n restrict: 'A',\r\n priority: 100,\r\n scope: false,\r\n link: link\r\n };\r\n\r\n }]);\r\n})();\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name angulargm.directive:gmMap\r\n * @element ANY\r\n *\r\n * @description\r\n * A directive for embedding google maps into your app.\r\n *\r\n * `gm-map-id` is required. The `gm-center`, `gm-zoom`, `gm-bounds`, and\r\n * `gm-map-type-id` variables do not have to exist in the current scope--they\r\n * will be created if necessary. All three have bi-directional association,\r\n * i.e. drag or zoom the map and they will update, update them and the map\r\n * will change. However, any initial state of these three variables will be\r\n * ignored.\r\n *\r\n * If you need to get a handle on the google.maps.Map object, see\r\n * {@link angulargm.service:angulargmContainer angulargmContainer}\r\n *\r\n * @param {expression} gm-map-id angular expression that evaluates to a unique\r\n * string id for the map, e.g. `'map_canvas'` or `myMapId` where myMapId is a\r\n * variable in the current scope. This allows you to have multiple\r\n * maps/instances of the directive.\r\n *\r\n *\r\n * @param {expression} gm-center center variable in the current scope. The\r\n * value will be a google.maps.LatLngLiteral object.\r\n *\r\n *\r\n * @param {expression} gm-zoom zoom variable in the current scope. Value will\r\n * be an integer.\r\n *\r\n *\r\n * @param {expression} gm-bounds bounds variable in the current scope. Value\r\n * will be a google.maps.LatLngBounds object.\r\n *\r\n *\r\n * @param {expression} gm-map-type-id mapTypeId variable in the current scope.\r\n * Value will be a string.\r\n *\r\n *\r\n * @param {expression} gm-map-options object in the current scope that is a\r\n * google.maps.MapOptions object. If unspecified, will use the values in\r\n * angulargmDefaults.mapOptions. {@link angulargm.service:angulargmDefaults angulargmDefaults} is a service, so it is\r\n * both injectable and overrideable (using $provide.decorator).\r\n *\r\n * @param {expression} gm-on-*event* an angular expression which evaluates to\r\n * an event handler. This handler will be attached to each marker's \\*event\\*\r\n * event. The variables 'map' and 'event' evaluate to the map and the\r\n * [google.maps.MouseEvent](https://developers.google.com/maps/documentation/javascript/reference#MouseEvent),\r\n * respectively. The map is always passed in, but the MouseEvent is only passed in if the event emits it. For example:\r\n * ```html\r\n * gm-on-click=\"myClickFn(map, event)\"\r\n * ```\r\n * will call your `myClickFn` whenever the map is clicked. You may have\r\n * multiple `gm-on-*event*` handlers, but only one for each type of event. For events that have an underscore in their\r\n * name, such as 'center_changed', write it as 'gm-on-center-changed'.\r\n *\r\n *\r\n */\r\n\r\n/**\r\n * @ngdoc event\r\n * @name angulargm.directive:gmMap#gmMapResize\r\n * @eventOf angulargm.directive:gmMap\r\n * @eventType listen on current gmMap scope\r\n *\r\n * @description Alias for google.maps.event.trigger(map, 'resize')\r\n *\r\n * @param {string} mapId Required. The id of your map.\r\n * @example\r\n * ```js\r\n * $scope.$broadcast('gmMapResize', 'myMapId')\r\n * ```\r\n */\r\n\r\n/**\r\n * @ngdoc event\r\n * @name angulargm.directive:gmMap#gmMapIdle\r\n * @eventOf angulargm.directive:gmMap\r\n * @eventType emit on current gmMap scope\r\n *\r\n * @description Emitted when the map is finished loading (when the map fires\r\n * the 'idle' event).\r\n *\r\n * @param {string} mapId the id of the map which finished loading.\r\n *\r\n * @example\r\n * ```js\r\n * $scope.$on('gmMapIdle', function(event, mapId) {\r\n * if (mapId === 'myMapId') {\r\n * ...\r\n * }\r\n * });\r\n * ```\r\n */\r\n\r\n(function () {\r\n'use strict';\r\n\r\n angular.module('AngularGM').\r\n\r\n\r\n directive('gmMap', ['$timeout', 'angulargmUtils', 'debounce', function ($timeout, angulargmUtils, debounce) {\r\n\r\n /** aliases **/\r\n var getEventHandlers = angulargmUtils.getEventHandlers;\r\n var validateLatLng = angulargmUtils.validateLatLng;\r\n var latLngLiteralEqual = angulargmUtils.latLngLiteralEqual;\r\n\r\n /** link function **/\r\n function link(scope, element, attrs, controller) {\r\n // initialize scope\r\n if (!angular.isDefined(scope.gmCenter)) {\r\n scope.center = {};\r\n }\r\n if (!angular.isDefined(scope.gmBounds)) {\r\n scope.bounds = {};\r\n }\r\n\r\n // Make sure gmMapId is defined\r\n // Note: redundant check in MapController. Can't hurt.\r\n if (!angular.isDefined(scope.gmMapId)) {\r\n throw 'angulargm must have non-empty gmMapId attribute';\r\n }\r\n\r\n // Check what's defined in attrs\r\n // Note: this is also redundant since angular will throw an exception if\r\n // these attributes are not set. I may make these optional in the future\r\n // (pending angular support).\r\n var hasCenter = false;\r\n var hasZoom = false;\r\n var hasBounds = false;\r\n var hasMapTypeId = false;\r\n\r\n if (attrs.hasOwnProperty('gmCenter')) {\r\n hasCenter = true;\r\n }\r\n if (attrs.hasOwnProperty('gmZoom')) {\r\n hasZoom = true;\r\n }\r\n if (attrs.hasOwnProperty('gmBounds')) {\r\n hasBounds = true;\r\n }\r\n if (attrs.hasOwnProperty('gmMapTypeId')) {\r\n hasMapTypeId = true;\r\n }\r\n\r\n var _updateScope = function() {\r\n $timeout(function () {\r\n if (hasCenter || hasZoom || hasBounds || hasMapTypeId) {\r\n scope.$apply(function (s) {\r\n if (hasCenter) {\r\n scope.gmCenter = controller.center;\r\n }\r\n if (hasZoom) {\r\n scope.gmZoom = controller.zoom;\r\n }\r\n if (hasBounds) {\r\n var b = controller.bounds;\r\n if (b) {\r\n scope.gmBounds = b;\r\n }\r\n }\r\n if (hasMapTypeId) {\r\n scope.gmMapTypeId = controller.mapTypeId;\r\n }\r\n });\r\n }\r\n });\r\n };\r\n\r\n var updateScope = debounce(_updateScope, 100);\r\n\r\n // Add event listeners to the map\r\n controller.addMapListener('drag', updateScope);\r\n controller.addMapListener('zoom_changed', updateScope);\r\n controller.addMapListener('center_changed', updateScope);\r\n controller.addMapListener('bounds_changed', updateScope);\r\n controller.addMapListener('maptypeid_changed', updateScope);\r\n controller.addMapListener('resize', updateScope);\r\n\r\n // Add user supplied callbacks\r\n var map = controller.getMap(attrs.gmMapId);\r\n var handlers = getEventHandlers(attrs); // map events -> handlers\r\n angular.forEach(handlers, function(handler, event) {\r\n controller.addMapListener(event, function(ev) {\r\n // pass the map in\r\n var locals = {\r\n map: map\r\n };\r\n // And optionally a MouseEvent object if it exists\r\n if (ev !== undefined) {\r\n locals.event = ev;\r\n }\r\n\r\n $timeout(function() {\r\n handler(scope.$parent, locals);\r\n });\r\n });\r\n });\r\n\r\n\r\n\r\n if (hasCenter) {\r\n scope.$watch('gmCenter', function (newValue, oldValue) {\r\n var changed = (\r\n validateLatLng(newValue) != null &&\r\n !latLngLiteralEqual(newValue, oldValue)\r\n );\r\n if (changed && !controller.dragging) {\r\n controller.center = newValue;\r\n }\r\n }, true);\r\n }\r\n\r\n if (hasZoom) {\r\n scope.$watch('gmZoom', function (newValue, oldValue) {\r\n var ok = (newValue != null && !isNaN(newValue));\r\n if (ok && newValue !== oldValue) {\r\n controller.zoom = newValue;\r\n }\r\n });\r\n }\r\n\r\n if (hasBounds) {\r\n scope.$watch('gmBounds', function(newValue, oldValue) {\r\n var changed = (newValue !== oldValue);\r\n if (changed && !controller.dragging) {\r\n var bounds = newValue;\r\n if (bounds)\r\n controller.bounds = bounds;\r\n }\r\n });\r\n }\r\n\r\n if (hasMapTypeId) {\r\n scope.$watch('gmMapTypeId', function(newValue, oldValue) {\r\n var changed = (newValue !== oldValue);\r\n if (changed && newValue) {\r\n controller.mapTypeId = newValue;\r\n }\r\n });\r\n }\r\n\r\n scope.$on('gmMapResize', function(event, gmMapId) {\r\n if (scope.gmMapId() === gmMapId) {\r\n controller.mapTrigger('resize');\r\n }\r\n });\r\n\r\n controller.addMapListenerOnce('idle', function() {\r\n scope.$emit('gmMapIdle', scope.gmMapId());\r\n });\r\n controller.mapTrigger('resize');\r\n }\r\n\r\n\r\n return {\r\n restrict: 'E',\r\n priority: 100,\r\n template: '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ',\r\n transclude: true,\r\n replace: true,\r\n scope: {\r\n gmCenter: '=?',\r\n gmZoom: '=?',\r\n gmBounds: '=?',\r\n gmMapTypeId: '=?',\r\n gmMapOptions: '&',\r\n gmMapId: '&'\r\n },\r\n controller: 'angulargmMapController',\r\n link: link\r\n };\r\n }]);\r\n})();\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name angulargm.directive:gmMarkers\r\n * @element ANY\r\n *\r\n * @description\r\n * A directive for adding markers to a `gmMap`. You may have multiple per `gmMap`.\r\n *\r\n * To use, you specify an array of custom objects and tell the directive how to\r\n * extract an id and position from them. A marker will be created for each of\r\n * your objects. If you assign a new array to your scope variable or change the\r\n * array's length (i.e. add or remove an object), the markers will also update.\r\n * The one case where `gmMarkers` can not automatically detect changes to your\r\n * objects is when you mutate objects in the array. To inform the directive of\r\n * such changes, see the `gmMarkersUpdate` event below.\r\n *\r\n * Only the `gm-objects`, `gm-id` and `gm-position` attributes are required.\r\n *\r\n * @param {expression} gm-objects an array of objects in the current scope.\r\n * These can be any objects you wish to attach to markers, the only requirement\r\n * is that they have a uniform method of accessing an id and a position.\r\n *\r\n * @param {expression} gm-id an angular expression that given an object from\r\n * `gm-objects`, evaluates to a unique identifier for that object. Your object\r\n * can be accessed through the variable `object`. See `gm-position` below for\r\n * an example.\r\n *\r\n * @param {expression} gm-position an angular expression that given an object\r\n * from `gm-objects`, evaluates to google.maps.LatLngLiteral object. Your\r\n * object can be accessed through the variable `object`. For example, if your\r\n * controller has\r\n * ```js\r\n * ...\r\n * $scope.myObjects = [\r\n * { id: 0, location: { lat: 5, lng: 5} },\r\n * { id: 1, location: { lat: 6, lng: 6} }\r\n * ]\r\n * ...\r\n * ```\r\n * then in the `gm-markers` directive you would put\r\n * ```js\r\n * ...\r\n * gm-objects=\"myObjects\"\r\n * gm-id=\"object.id\"\r\n * gm-position=\"object.location\"\r\n * ...\r\n * ```\r\n *\r\n *\r\n * @param {expression} gm-marker-options an angular expression that given\r\n * an object from `gm-objects`, evaluates to a\r\n * [google.maps.MarkerOptions](https://developers.google.com/maps/documentation/javascript/reference#MarkerOptions)\r\n * object. Your object can be accessed through the variable `object`. If\r\n * unspecified, google maps api defaults will be used.\r\n *\r\n *\r\n * @param {expression} gm-events a variable in the current scope that is used to\r\n * simulate events on markers. Setting this variable to an object of the form\r\n * ```js\r\n * [\r\n * {\r\n * event: 'click',\r\n * ids: [id1, ...]\r\n * },\r\n * ...\r\n * ]\r\n * ```\r\n * will generate the named events on the markers with the given ids, if a\r\n * marker with each id exists. Note: when setting the `gm-events` variable, you\r\n * must set it to a new object for the changes to be detected. Code like\r\n * ```js\r\n * myEvents[0][\"ids\"] = [0]\r\n * ```\r\n * will not work.\r\n *\r\n *\r\n * @param {expression} gm-on-*event* an angular expression which evaluates to\r\n * an event handler. This handler will be attached to each marker's \\*event\\*\r\n * event. The variables 'object' and 'marker' evaluate to your object and the\r\n * [google.maps.Marker](https://developers.google.com/maps/documentation/javascript/reference#Marker),\r\n * respectively. For example:\r\n * ```html\r\n * gm-on-click=\"myClickFn(object, marker)\"\r\n * ```\r\n * will call your `myClickFn` whenever a marker is clicked. You may have\r\n * multiple `gm-on-*event*` handlers, but only one for each type of event.\r\n * For events that have an underscore in their name, such as\r\n * 'position_changed', write it as 'gm-on-position-changed'.\r\n */\r\n\r\n/**\r\n * @ngdoc event\r\n * @name angulargm.directive:gmMarkers#gmMarkersUpdate\r\n * @eventOf angulargm.directive:gmMarkers\r\n * @eventType listen on current gmMarkers scope\r\n *\r\n * @description Manually tell the `gmMarkers` directive to update the markers.\r\n * This is useful to tell the directive when an object from `gm-objects` is\r\n * mutated--`gmMarkers` can not pick up on such changes automatically.\r\n *\r\n * @param {string} objects Not required. The name of the scope variable which\r\n * holds the objects to update markers for, i.e. what you set `gm-objects` to.\r\n * It is useful because there may be multiple instances of the `gmMarkers`\r\n * directive. If not specified, all instances of `gmMarkers` which are child\r\n * scopes will update their markers.\r\n *\r\n * @example\r\n * ```js\r\n * $scope.$broadcast('gmMarkersUpdate', 'myObjects');\r\n * ```\r\n */\r\n\r\n/**\r\n * @ngdoc event\r\n * @name angulargm.directive:gmMarkers#gmMarkersRedraw\r\n * @eventOf angulargm.directive:gmMarkers\r\n * @eventType listen on current gmMarkers scope\r\n *\r\n * @description Force the `gmMarkers` directive to clear and redraw all markers.\r\n *\r\n * @param {string} objects Not required. The name of the scope variable which\r\n * holds the objects to redraw markers for, i.e. what you set `gm-objects` to.\r\n * It is useful because there may be multiple instances of the `gmMarkers`\r\n * directive. If not specified, all instances of `gmMarkers` which are child\r\n * scopes will redraw their markers.\r\n *\r\n * @example\r\n * ```js\r\n * $scope.$broadcast('gmMarkersRedraw', 'myObjects');\r\n * ```\r\n */\r\n\r\n/**\r\n * @ngdoc event\r\n * @name angulargm.directive:gmMarkers#gmMarkersUpdated\r\n * @eventOf angulargm.directive:gmMarkers\r\n * @eventType emit on current gmMarkers scope\r\n *\r\n * @description Emitted when markers are updated.\r\n *\r\n * @param {string} objects the name of the scope variable which holds the\r\n * objects the `gmMarkers` directive was constructed with. This is what\r\n * `gm-objects` was set to.\r\n *\r\n * @example\r\n * ```js\r\n * $scope.$on('gmMarkersUpdated', function(event, objects) {\r\n * if (objects === 'myObjects') {\r\n * ...\r\n * }\r\n * });\r\n * ```\r\n */\r\n\r\n(function () {\r\n'use strict';\r\n\r\n angular.module('AngularGM').\r\n\r\n directive('gmMarkers',\r\n ['$log', '$parse', '$timeout', 'angulargmUtils', 'angulargmShape',\r\n function($log, $parse, $timeout, angulargmUtils, angulargmShape) {\r\n\r\n /** aliases */\r\n var validateLatLng = angulargmUtils.validateLatLng;\r\n\r\n function link(scope, element, attrs, controller) {\r\n // check marker attrs\r\n if (!('gmPosition' in attrs)) {\r\n throw 'gmPosition attribute required';\r\n }\r\n\r\n var markerOptions = function(object) {\r\n var latLngObj = scope.gmPosition({object: object});\r\n var position = validateLatLng(latLngObj);\r\n if (position == null) {\r\n return null;\r\n }\r\n\r\n var markerOptions = scope.gmMarkerOptions({object: object});\r\n var options = {};\r\n angular.extend(options, markerOptions, {position: position});\r\n return options;\r\n };\r\n\r\n angulargmShape.createShapeDirective(\r\n 'marker', scope, attrs, controller, markerOptions\r\n );\r\n }\r\n\r\n return {\r\n restrict: 'AE',\r\n priority: 100,\r\n scope: {\r\n gmObjects: '&',\r\n gmId: '&',\r\n gmPosition: '&',\r\n gmMarkerOptions: '&',\r\n gmEvents: '&'\r\n },\r\n require: '^gmMap',\r\n link: link\r\n };\r\n }]);\r\n})();\r\n\r\n/**\r\n * @ngdoc service\r\n * @name angulargm.service:angulargmContainer\r\n *\r\n * @description\r\n * A container which maps mapIds to google.maps.Map instances, and additionally\r\n * allows getting a promise of a map for custom configuration of the map.\r\n *\r\n * If you want a handle to the map, you should use the `getMapPromise(mapId)`\r\n * method so you can guarantee the map will be initialized. For example,\r\n *\r\n * ```js\r\n * angular.module('myModule').\r\n *\r\n * run(function(angulargmContainer) {\r\n * var gmapPromise = angulargmContainer.getMapPromise('myMapid');\r\n *\r\n * gmapPromise.then(function(gmap) {\r\n * // google map configuration here\r\n * });\r\n * });\r\n * ```\r\n */\r\n(function () {\r\n'use strict';\r\n\r\n angular.module('AngularGM').\r\n\r\n factory('angulargmContainer', ['$q', function($q) {\r\n var maps = {};\r\n var defers = {};\r\n var markers = {};\r\n /**\r\n * Add a map to the container.\r\n * @param {string} mapId the unique identifier for the map\r\n * @param {google.maps.Map} map the google map\r\n * @throw if there is already a map with mapId, or if map is not a\r\n * google.maps.Map\r\n */\r\n function addMap(mapId, map) {\r\n if (!(map instanceof google.maps.Map)) {\r\n throw 'map not a google.maps.Map: ' + map;\r\n } else if (mapId in maps) {\r\n throw 'already contain map with id ' + mapId;\r\n }\r\n maps[mapId] = map;\r\n if (mapId in defers) {\r\n defers[mapId].resolve(map);\r\n }\r\n }\r\n\r\n /**\r\n * Get a map from the container.\r\n * @param {string} mapId the unique id of the map\r\n * @return {google.maps.Map|undefined} the map, or undefined if there is no\r\n * map for mapId\r\n */\r\n function getMaps() {\r\n return maps;\r\n }\r\n function getMap(mapId) {\r\n return maps[mapId];\r\n }\r\n\r\n /**\r\n * Adds markers hash to the container.\r\n * @param {string} mapId the unique id of the map\r\n * @param {[google.maps.Marker]} markers to be added to the container\r\n */\r\n function setMarker(mapId, newMarker) {\r\n if (!markers[mapId]) {\r\n markers[mapId] = [];\r\n }\r\n markers[mapId].push(newMarker);\r\n }\r\n /**\r\n * Get markers from the container.\r\n * @param {string} mapId the unique id of the map\r\n * @return {google.maps.Marker|undefined} the markers, or undefined if there are no\r\n * markers for mapId\r\n */\r\n function getMarkers(mapId) {\r\n return markers[mapId];\r\n }\r\n\r\n function clearMarkers(mapId) {\r\n markers[mapId] = [];\r\n }\r\n\r\n /**\r\n * Returns a promise of a map for the given mapId\r\n * @param {string} mapId the unique id of the map that may or may not have\r\n * been created yet\r\n * @return {angular.q.promise} a promise of a map that will be resolved\r\n * when the map is added\r\n */\r\n function getMapPromise(mapId) {\r\n var defer = defers[mapId] || $q.defer();\r\n var map = getMap(mapId);\r\n defers[mapId] = defer;\r\n if (map !== undefined) {\r\n defer.resolve(map);\r\n }\r\n return defer.promise;\r\n }\r\n\r\n /**\r\n * Removes map with given mapId from this container, and deletes the map.\r\n * In order for this to work you must ensure there are no references to the\r\n * map object. Note: this will likely cause a memory leak, see\r\n * http://stackoverflow.com/questions/10485582/what-is-the-proper-way-to-destroy-a-map-instance\r\n *\r\n * @param {string} mapId the unique id of the map to remove\r\n */\r\n function removeMap(mapId) {\r\n if (mapId in maps) {\r\n delete maps[mapId];\r\n }\r\n if (mapId in defers) {\r\n delete defers[mapId];\r\n }\r\n }\r\n\r\n /**\r\n * Removes all maps and unresolved map promises. Only for testing, see\r\n * #removeMap(mapId).\r\n */\r\n function clear() {\r\n maps = {};\r\n defers = {};\r\n markers = {};\r\n }\r\n\r\n return {\r\n addMap: addMap,\r\n getMaps: getMaps,\r\n getMap: getMap,\r\n getMapPromise: getMapPromise,\r\n setMarker: setMarker,\r\n getMarkers: getMarkers,\r\n clearMarkers: clearMarkers,\r\n removeMap: removeMap,\r\n clear: clear\r\n };\r\n }]);\r\n})();\r\n\r\n/**\r\n * @ngdoc service\r\n * @name angulargm.service:angulargmShape\r\n *\r\n * @description\r\n * Directive functions for map shapes (marker, polyline, etc.)\r\n */\r\n(function () {\r\n'use strict';\r\n\r\n angular.module('AngularGM').\r\n\r\n factory('angulargmShape',\r\n ['$timeout', 'angulargmUtils',\r\n function($timeout, angulargmUtils) {\r\n\r\n /**\r\n * Check required attributes of a shape.\r\n */\r\n function checkRequiredAttributes(attrs) {\r\n if (!('gmObjects' in attrs)) {\r\n throw 'gmObjects attribute required';\r\n } else if (!('gmId' in attrs)) {\r\n throw 'gmId attribute required';\r\n }\r\n }\r\n\r\n /**\r\n * Create a mapping from object id -> object.\r\n * The object id is retrieved using scope.gmId\r\n */\r\n function _generateObjectCache(scope, objects) {\r\n var objectCache = {};\r\n angular.forEach(objects, function(object) {\r\n // cache objects for quick access\r\n var id = scope.gmId({object: object});\r\n objectCache[id] = object;\r\n });\r\n return objectCache;\r\n }\r\n\r\n /**\r\n * Create new shapes and add them to the map for objects which are not\r\n * currently on the map.\r\n */\r\n function _addNewElements(type, scope, controller, handlers, objectCache, optionsFn) {\r\n angular.forEach(objectCache, function(object, id) {\r\n var element = controller.getElement(type, scope.$id, id);\r\n\r\n var options = optionsFn(object);\r\n if (options == null) {\r\n return;\r\n }\r\n\r\n if (element) {\r\n controller.updateElement(type, scope.$id, id, options);\r\n } else {\r\n controller.addElement(type, scope.$id, id, options);\r\n element = controller.getElement(type, scope.$id, id);\r\n\r\n // set up element event handlers\r\n angular.forEach(handlers, function(handler, event) {\r\n controller.addListener(element, event, function() {\r\n $timeout(function() {\r\n var context = {object: object};\r\n context[type] = element;\r\n if ((angular.version.major <= 1) && (angular.version.minor <= 2)) {\r\n // scope is this directive's isolate scope\r\n // scope.$parent is the scope of ng-transclude\r\n // scope.$parent.$parent is the one we want\r\n handler(scope.$parent.$parent, context);\r\n } else {\r\n handler(scope.$parent.$parent.$parent , context);\r\n }\r\n });\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Remove shape elements from the map which are no longer in objects.\r\n */\r\n function _removeOrphanedElements(type, scope, controller, objectCache) {\r\n var orphaned = [];\r\n\r\n controller.forEachElementInScope(type, scope.$id, function(element, id) {\r\n if (!(id in objectCache)) {\r\n orphaned.push(id);\r\n }\r\n });\r\n\r\n angular.forEach(orphaned, function(id) {\r\n controller.removeElement(type, scope.$id, id);\r\n });\r\n }\r\n\r\n /**\r\n * _formatEventName('gmShapesUpdated', 'marker') -> 'gmMarkersUpdated'\r\n */\r\n function _formatEventName(template, type) {\r\n var uppercasePluralType = type.charAt(0).toUpperCase() + type.slice(1) + 's';\r\n return template.replace('Shapes', uppercasePluralType);\r\n }\r\n\r\n /**\r\n * Attach necessary watchers and listeners to scope to deal with:\r\n * - updating objects\r\n * - handling gmEvents\r\n * - listening for events\r\n */\r\n function _attachEventListeners(type, scope, attrs, controller, updateElements) {\r\n\r\n // watch objects\r\n scope.$watch('gmObjects().length', function(newValue, oldValue) {\r\n if (newValue != null && newValue !== oldValue) {\r\n updateElements(scope, scope.gmObjects());\r\n }\r\n });\r\n\r\n scope.$watch('gmObjects()', function(newValue, oldValue) {\r\n if (newValue != null && newValue !== oldValue) {\r\n updateElements(scope, scope.gmObjects());\r\n }\r\n });\r\n\r\n // watch gmEvents\r\n scope.$watch('gmEvents()', function(newValue, oldValue) {\r\n if (newValue != null && newValue !== oldValue) {\r\n angular.forEach(newValue, function(eventObj) {\r\n var event = eventObj.event;\r\n var ids = eventObj.ids;\r\n angular.forEach(ids, function(id) {\r\n var element = controller.getElement(type, scope.$id, id);\r\n if (element != null) {\r\n $timeout(angular.bind(this, controller.trigger, element, event));\r\n }\r\n });\r\n });\r\n }\r\n });\r\n\r\n scope.$on(_formatEventName('gmShapesRedraw', type), function(event, objectsName) {\r\n if (objectsName == null || objectsName === attrs.gmObjects) {\r\n updateElements(scope);\r\n updateElements(scope, scope.gmObjects());\r\n }\r\n });\r\n\r\n scope.$on(_formatEventName('gmShapesUpdate', type), function(event, objectsName) {\r\n if (objectsName == null || objectsName === attrs.gmObjects) {\r\n updateElements(scope, scope.gmObjects());\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Takes care of setting up the directive for the given type of shape.\r\n * Assumes the following directive scope:\r\n * scope: {\r\n * gmId: '&',\r\n * gmObjects: '&',\r\n * gmEvents: '&'\r\n * },\r\n *\r\n * And the angulargmMapController:\r\n * require: '^gmMap',\r\n *\r\n * Also supports the following attributes:\r\n * gmOn* (though some of this knowledge is in angulargmUtils as well)\r\n *\r\n * As well as the following events\r\n * gmShapesUpdated\r\n * gmShapesRedraw\r\n *\r\n * (e.g. gmMarkersUpdated and gmMarkersRedraw)\r\n *\r\n * See gmMarkers for a complete example.\r\n */\r\n function createShapeDirective(type, scope, attrs, controller, elementOptions) {\r\n checkRequiredAttributes(attrs);\r\n\r\n var updateElements = function(scope, objects) {\r\n var objectCache = _generateObjectCache(scope, objects);\r\n var handlers = angulargmUtils.getEventHandlers(attrs); // map events -> handlers\r\n\r\n _addNewElements(\r\n type, scope, controller, handlers,\r\n objectCache, elementOptions\r\n );\r\n\r\n _removeOrphanedElements(type, scope, controller, objectCache);\r\n\r\n scope.$emit(_formatEventName('gmShapesUpdated', type), attrs.gmObjects);\r\n };\r\n\r\n _attachEventListeners(type, scope, attrs, controller, updateElements);\r\n\r\n // initialize elements\r\n $timeout(angular.bind(null, updateElements, scope, scope.gmObjects()));\r\n }\r\n\r\n return {\r\n createShapeDirective: createShapeDirective\r\n };\r\n }]);\r\n})();\r\n\r\n/**\r\n * @ngdoc service\r\n * @name angulargm.service:angulargmUtils\r\n *\r\n * @description\r\n * Common utility functions.\r\n */\r\n(function () {\r\n'use strict';\r\n\r\n angular.module('AngularGM').\r\n\r\n factory('angulargmUtils', ['$parse', function($parse) {\r\n\r\n /**\r\n * Check if two floating point numbers are equal.\r\n *\r\n * @param {number} f1 first number\r\n * @param {number} f2 second number\r\n * @return {boolean} true if f1 and f2 are 'very close' (within 0.000001)\r\n */\r\n function floatEqual (f1, f2) {\r\n return (Math.abs(f1 - f2) < 0.000001);\r\n }\r\n\r\n /**\r\n * @ngdoc function\r\n * @name #latLngEqual\r\n * @methodOf angulargm.service:angulargmUtils\r\n *\r\n * @param {google.maps.LatLng} l1 first\r\n * @param {google.maps.LatLng} l2 second\r\n * @return {boolean} true if l1 and l2 are 'very close'. If either are null\r\n * or not google.maps.LatLng objects returns false.\r\n */\r\n function latLngEqual(l1, l2) {\r\n if (!(l1 instanceof google.maps.LatLng &&\r\n l2 instanceof google.maps.LatLng)) {\r\n return false;\r\n }\r\n return floatEqual(l1.lat(), l2.lat()) && floatEqual(l1.lng(), l2.lng());\r\n }\r\n\r\n /**\r\n * @ngdoc function\r\n * @name #latLngLiteralEqual\r\n * @methodOf angulargm.service:angulargmUtils\r\n *\r\n * @param {google.maps.LatLngLiteral} l1 first\r\n * @param {google.maps.LatLngLiteral} l2 second\r\n * @return {boolean} true if l1 and l2 are 'very close'. If either are null\r\n * or not google.maps.LatLngLiteral objects returns false.\r\n */\r\n function latLngLiteralEqual(l1, l2) {\r\n if (\r\n !(l1 != null && l1.hasOwnProperty('lat') && l1.hasOwnProperty('lng')) ||\r\n !(l2 != null && l2.hasOwnProperty('lat') && l2.hasOwnProperty('lng'))\r\n ) {\r\n return false;\r\n }\r\n return floatEqual(l1.lat, l2.lat) && floatEqual(l1.lng, l2.lng);\r\n }\r\n\r\n /**\r\n * @ngdoc function\r\n * @name #boundsEqual\r\n * @methodOf angulargm.service:angulargmUtils\r\n *\r\n * @param {google.maps.LatLngBounds} b1 first\r\n * @param {google.maps.LatLngBounds} b2 second\r\n * @return {boolean} true if b1 and b2 are 'very close'. If either are null\r\n * or not google.maps.LatLngBounds objects returns false.\r\n */\r\n function boundsEqual(b1, b2) {\r\n if (!(b1 instanceof google.maps.LatLngBounds &&\r\n b2 instanceof google.maps.LatLngBounds)) {\r\n return false;\r\n }\r\n var sw1 = b1.getSouthWest();\r\n var sw2 = b2.getSouthWest();\r\n var ne1 = b1.getNorthEast();\r\n var ne2 = b2.getNorthEast();\r\n\r\n return latLngEqual(sw1, sw2) && latLngEqual(ne1, ne2);\r\n }\r\n\r\n /**\r\n * @ngdoc function\r\n * @name #latLngToObj\r\n * @methodOf angulargm.service:angulargmUtils\r\n *\r\n * @param {google.maps.LatLng} latLng the LatLng\r\n * @return {Object} object literal with 'lat' and 'lng' properties.\r\n * @throw if latLng not instanceof google.maps.LatLng\r\n */\r\n function latLngToObj(latLng) {\r\n if (!(latLng instanceof google.maps.LatLng))\r\n throw 'latLng not a google.maps.LatLng';\r\n\r\n return {\r\n lat: latLng.lat(),\r\n lng: latLng.lng()\r\n };\r\n }\r\n\r\n /**\r\n * @ngdoc function\r\n * @name #objToLatLng\r\n * @methodOf angulargm.service:angulargmUtils\r\n *\r\n * @param {Object} obj of the form { lat: 40, lng: -120 }\r\n * @return {google.maps.LatLng} returns null if problems with obj (null,\r\n * NaN, etc.)\r\n */\r\n function objToLatLng(obj) {\r\n if (obj != null) {\r\n var lat = obj.lat;\r\n var lng = obj.lng;\r\n var ok = !(lat == null || lng == null) && !(isNaN(lat) ||\r\n isNaN(lng));\r\n if (ok) {\r\n return new google.maps.LatLng(lat, lng);\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @ngdoc function\r\n * @name #validateLatLng\r\n * @methodOf angulargm.service:angulargmUtils\r\n *\r\n * @param {Object} obj of the form { lat: 40, lng: -120 }\r\n * @return {Object} obj or returns null if problems with obj (null,\r\n * NaN, etc.)\r\n */\r\n function validateLatLng(obj) {\r\n if (obj != null) {\r\n var lat = obj.lat;\r\n var lng = obj.lng;\r\n var ok = (\r\n !(lat == null || lng == null) &&\r\n !(isNaN(lat) || isNaN(lng))\r\n );\r\n if (ok) {\r\n return obj;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @ngdoc function\r\n * @name #hasNaN\r\n * @methodOf angulargm.service:angulargmUtils\r\n *\r\n * @param {google.maps.LatLng} latLng the LatLng\r\n * @return {boolean} true if either lat or lng of latLng is null or isNaN\r\n */\r\n function hasNaN(latLng) {\r\n if (!(latLng instanceof google.maps.LatLng))\r\n throw 'latLng must be a google.maps.LatLng';\r\n\r\n // google.maps.LatLng converts NaN to null, so check for both\r\n var isNull = (latLng.lat() == null || latLng.lng() == null);\r\n var isNotaN = isNaN(latLng.lat()) || isNaN(latLng.lng());\r\n return isNull || isNotaN;\r\n }\r\n\r\n /**\r\n * @param {Object} attrs directive attributes\r\n * @return {Object} mapping from event names to handler fns\r\n */\r\n function getEventHandlers(attrs) {\r\n var handlers = {};\r\n\r\n // retrieve gm-on-___ handlers\r\n angular.forEach(attrs, function(value, key) {\r\n if (key.lastIndexOf('gmOn', 0) === 0) {\r\n var event = angular.lowercase(\r\n key.substring(4)\r\n .replace(/(?!^)([A-Z])/g, '_$&')\r\n );\r\n var fn = $parse(value);\r\n handlers[event] = fn;\r\n }\r\n });\r\n\r\n return handlers;\r\n }\r\n\r\n function assertDefined(value, name) {\r\n if (value === undefined || value === null) {\r\n if (name) {\r\n throw name + ' was: ' + value;\r\n } else {\r\n throw 'value was: ' + value;\r\n }\r\n }\r\n }\r\n\r\n return {\r\n latLngEqual: latLngEqual,\r\n latLngLiteralEqual: latLngLiteralEqual,\r\n boundsEqual: boundsEqual,\r\n latLngToObj: latLngToObj,\r\n objToLatLng: objToLatLng,\r\n validateLatLng: validateLatLng,\r\n hasNaN: hasNaN,\r\n getEventHandlers: getEventHandlers,\r\n assertDefined: assertDefined\r\n };\r\n }]);\r\n})();\r\n\r\n/**\r\n * @ngdoc service\r\n * @name angulargm.service:debounce\r\n *\r\n * @description\r\n * Debounce function. Stolen from https://github.com/shahata/angular-debounce\r\n */\r\n(function () {\r\n'use strict';\r\n\r\n angular.module('AngularGM').\r\n\r\n factory('debounce', ['$timeout', function ($timeout) {\r\n return function (func, wait, immediate) {\r\n var timeout, args, context, result;\r\n function debounce() {\r\n /* jshint validthis:true */\r\n context = this;\r\n args = arguments;\r\n var later = function () {\r\n timeout = null;\r\n if (!immediate) {\r\n result = func.apply(context, args);\r\n }\r\n };\r\n var callNow = immediate && !timeout;\r\n if (timeout) {\r\n $timeout.cancel(timeout);\r\n }\r\n timeout = $timeout(later, wait);\r\n if (callNow) {\r\n result = func.apply(context, args);\r\n }\r\n return result;\r\n }\r\n debounce.cancel = function () {\r\n $timeout.cancel(timeout);\r\n timeout = null;\r\n };\r\n return debounce;\r\n };\r\n }]);\r\n\r\n})();\r\n\r\n/**\r\n * Directive controller which is owned by the [gmMap]{@link module:gmMap}\r\n * directive and shared among all other angulargm directives.\r\n */\r\n(function () {\r\n'use strict';\r\n\r\n angular.module('AngularGM').\r\n\r\n controller('angulargmMapController',\r\n ['$scope', '$element', 'angulargmUtils', 'angulargmDefaults',\r\n 'angulargmContainer',\r\n\r\n function ($scope, $element, angulargmUtils, angulargmDefaults,\r\n angulargmContainer) {\r\n\r\n /** aliases */\r\n var latLngToObj = angulargmUtils.latLngToObj;\r\n var validateLatLng = angulargmUtils.validateLatLng;\r\n var boundsEqual = angulargmUtils.boundsEqual;\r\n var hasNaN = angulargmUtils.hasNaN;\r\n var assertDefined = angulargmUtils.assertDefined;\r\n\r\n /*\r\n * Construct a new controller for the gmMap directive.\r\n * @param {angular.Scope} $scope\r\n * @param {angular.element} $element\r\n * @constructor\r\n */\r\n var constructor = function($scope, $element) {\r\n\r\n var mapId = $scope.gmMapId();\r\n if (!mapId) { throw 'angulargm must have non-empty gmMapId attribute'; }\r\n\r\n var mapDiv = angular.element($element[0].firstChild);\r\n mapDiv.attr('id', mapId);\r\n\r\n var config = this._getConfig($scope, angulargmDefaults);\r\n\r\n // 'private' properties\r\n this._map = this._createMap(mapId, mapDiv, config, angulargmContainer, $scope);\r\n this._elements = {};\r\n this._listeners = {};\r\n\r\n // 'public' properties\r\n this.dragging = false;\r\n\r\n Object.defineProperties(this, {\r\n 'precision': {\r\n value: angulargmDefaults.precision,\r\n writeable: false\r\n },\r\n\r\n 'center': {\r\n configurable: true, // for testing so we can mock\r\n get: function() {\r\n return latLngToObj(this._map.getCenter());\r\n },\r\n set: function(center) {\r\n if (validateLatLng(center) === null)\r\n throw 'center contains null or NaN';\r\n var changed = this.center !== center;\r\n if (changed) {\r\n this._map.panTo(center);\r\n }\r\n }\r\n },\r\n\r\n 'zoom': {\r\n configurable: true, // for testing so we can mock\r\n get: function() {\r\n return this._map.getZoom();\r\n },\r\n set: function(zoom) {\r\n if (!(zoom != null && !isNaN(zoom)))\r\n throw 'zoom was null or NaN';\r\n var changed = this.zoom !== zoom;\r\n if (changed) {\r\n this._map.setZoom(zoom);\r\n }\r\n }\r\n },\r\n\r\n 'bounds': {\r\n configurable: true, // for testing so we can mock\r\n get: function() {\r\n return this._map.getBounds();\r\n },\r\n set: function(bounds) {\r\n var numbers = !hasNaN(bounds.getSouthWest()) &&\r\n !hasNaN(bounds.getNorthEast());\r\n if (!numbers)\r\n throw 'bounds contains null or NaN';\r\n\r\n var changed = !(boundsEqual(this.bounds, bounds));\r\n if (changed) {\r\n this._map.fitBounds(bounds);\r\n }\r\n }\r\n },\r\n\r\n 'mapTypeId': {\r\n configurable: true, // for testing so we can mock\r\n get: function() {\r\n return this._map.getMapTypeId();\r\n },\r\n set: function(mapTypeId) {\r\n if (mapTypeId == null)\r\n throw 'mapTypeId was null or unknown';\r\n var changed = this.mapTypeId !== mapTypeId;\r\n if (changed) {\r\n this._map.setMapTypeId(mapTypeId);\r\n }\r\n }\r\n }\r\n });\r\n\r\n this._initDragListeners();\r\n $scope.$on('$destroy', angular.bind(this, this._destroy));\r\n };\r\n\r\n\r\n // Retrieve google.maps.MapOptions\r\n this._getConfig = function($scope, angulargmDefaults) {\r\n // Get config or defaults\r\n var defaults = angulargmDefaults.mapOptions;\r\n var config = {};\r\n angular.extend(config, defaults, $scope.gmMapOptions());\r\n return config;\r\n };\r\n\r\n\r\n // Create the map and add to angulargmContainer\r\n this._createMap = function(id, element, config, angulargmContainer) {\r\n var map = angulargmContainer.getMap(id);\r\n if (!map) {\r\n map = new google.maps.Map(element[0], config);\r\n angulargmContainer.addMap(id, map);\r\n } else {\r\n var div = map.getDiv();\r\n element.replaceWith(div);\r\n this._map = map;\r\n this.mapTrigger('resize');\r\n map.setOptions(config);\r\n }\r\n return map;\r\n };\r\n\r\n\r\n // Set up listeners to update this.dragging\r\n this._initDragListeners = function() {\r\n var self = this;\r\n this.addMapListener('dragstart', function () {\r\n self.dragging = true;\r\n });\r\n\r\n this.addMapListener('idle', function () {\r\n self.dragging = false;\r\n });\r\n };\r\n\r\n\r\n this._destroy = function() {\r\n angular.forEach(this._listeners, function(listener) {\r\n angular.forEach(listener, function(l) {\r\n google.maps.event.removeListener(l);\r\n });\r\n });\r\n this._listeners = {};\r\n\r\n var self = this;\r\n var types = Object.keys(this._elements);\r\n angular.forEach(types, function(type) {\r\n var scopeIds = Object.keys(self._getElements(type));\r\n angular.forEach(scopeIds, function(scopeId) {\r\n self.forEachElementInScope(type, scopeId, function(element, id) {\r\n self.removeElement(type, scopeId, id);\r\n });\r\n });\r\n });\r\n\r\n var streetView = this._map.getStreetView();\r\n if (streetView && streetView.getVisible()) {\r\n streetView.setVisible(false);\r\n }\r\n\r\n var maps = angulargmContainer.getMaps();\r\n _.each(maps, function (map, key) {\r\n angulargmContainer.removeMap(key);\r\n })\r\n angulargmContainer.clear()\r\n };\r\n\r\n\r\n /**\r\n * Alias for google.maps.event.addListener(map, event, handler)\r\n * @param {string} event an event defined on google.maps.Map\r\n * @param {Function} a handler for the event\r\n */\r\n this.addMapListener = function(event, handler) {\r\n var listener = google.maps.event.addListener(this._map, event, handler);\r\n\r\n if (this._listeners[event] === undefined) {\r\n this._listeners[event] = [];\r\n }\r\n\r\n this._listeners[event].push(listener);\r\n };\r\n\r\n\r\n /**\r\n * Alias for google.maps.event.addListenerOnce(map, event, handler)\r\n * @param {string} event an event defined on google.maps.Map\r\n * @param {Function} a handler for the event\r\n */\r\n this.addMapListenerOnce = function(event, handler) {\r\n var listener = google.maps.event.addListenerOnce(this._map, event, handler);\r\n\r\n if (this._listeners[event] === undefined) {\r\n this._listeners[event] = [];\r\n }\r\n\r\n this._listeners[event].push(listener);\r\n };\r\n\r\n\r\n /**\r\n * Alias for google.maps.event.addListener(object, event, handler)\r\n */\r\n this.addListener = function(object, event, handler) {\r\n google.maps.event.addListener(object, event, handler);\r\n };\r\n\r\n\r\n /**\r\n * Alias for google.maps.event.addListenerOnce(object, event, handler)\r\n */\r\n this.addListenerOnce = function(object, event, handler) {\r\n google.maps.event.addListenerOnce(object, event, handler);\r\n };\r\n\r\n\r\n /**\r\n * Alias for google.maps.event.trigger(map, event)\r\n * @param {string} event an event defined on google.maps.Map\r\n */\r\n this.mapTrigger = function(event) {\r\n google.maps.event.trigger(this._map, event);\r\n };\r\n\r\n\r\n /**\r\n * Alias for google.maps.event.trigger(object, event)\r\n */\r\n this.trigger = function(object, event) {\r\n google.maps.event.trigger(object, event);\r\n };\r\n\r\n this._newElement = function(type, opts) {\r\n if (type === 'marker') {\r\n return new angulargmDefaults.markerConstructor(opts);\r\n } else if (type === 'polyline') {\r\n if (!(opts.path instanceof Array)) {\r\n throw 'polylineOptions did not contain a path';\r\n }\r\n return new angulargmDefaults.polylineConstructor(opts);\r\n } else if (type === 'circle') {\r\n return new angulargmDefaults.circleConstructor(opts);\r\n }\r\n else {\r\n throw 'unrecognized type ' + type;\r\n }\r\n };\r\n\r\n this._getElements = function(type) {\r\n if (!(type in this._elements)) {\r\n this._elements[type] = {};\r\n }\r\n return this._elements[type];\r\n };\r\n\r\n /**\r\n * Adds a new element to the map.\r\n * @return {boolean} true if an element was added, false if there was already\r\n * an element with the given id\r\n * @throw if any arguments are null/undefined or elementOptions does not\r\n * have all the required options (i.e. position)\r\n */\r\n this.addElement = function(type, scopeId, id, elementOptions) {\r\n assertDefined(type, 'type');\r\n assertDefined(scopeId, 'scopeId');\r\n assertDefined(id, 'id');\r\n assertDefined(elementOptions, 'elementOptions');\r\n\r\n if (this.hasElement(type, scopeId, id)) {\r\n return false;\r\n }\r\n\r\n var elements = this._getElements(type);\r\n if (elements[scopeId] == null) {\r\n elements[scopeId] = {};\r\n }\r\n\r\n // google maps munges passed in options, so copy it first\r\n // extend instead of copy to preserve value objects\r\n var opts = {};\r\n angular.extend(opts, elementOptions);\r\n var element = this._newElement(type, opts);\r\n elements[scopeId][id] = element;\r\n element.setMap(this._map);\r\n\r\n var mapId = $scope.gmMapId();\r\n angulargmContainer.setMarker(mapId, element);\r\n\r\n return true;\r\n };\r\n\r\n /**\r\n * Updates an element on the map with new options.\r\n * @return {boolean} true if an element was updated, false if there was no\r\n * element with the given id to update\r\n * @throw if any arguments are null/undefined or elementOptions does not\r\n * have all the required options (i.e. position)\r\n */\r\n\r\n this.updateElement = function(type, scopeId, id, elementOptions) {\r\n assertDefined(type, 'type');\r\n assertDefined(scopeId, 'scopeId');\r\n assertDefined(id, 'id');\r\n assertDefined(elementOptions, 'elementOptions');\r\n\r\n var element = this.getElement(type, scopeId, id);\r\n if (element) {\r\n element.setOptions(elementOptions);\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n this.hasElement = function(type, scopeId, id) {\r\n assertDefined(type, 'type');\r\n assertDefined(scopeId, 'scopeId');\r\n assertDefined(id, 'id');\r\n return (this.getElement(type, scopeId, id) != null);\r\n };\r\n\r\n /**\r\n * @return {google maps element} the element with the given id, or null if no\r\n * such element exists\r\n */\r\n this.getElement = function (type, scopeId, id) {\r\n assertDefined(type, 'type');\r\n assertDefined(scopeId, 'scopeId');\r\n assertDefined(id, 'id');\r\n\r\n var elements = this._getElements(type);\r\n if (elements[scopeId] != null && id in elements[scopeId]) {\r\n return elements[scopeId][id];\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n /**\r\n * @return {boolean} true if an element was removed, false if nothing\r\n * happened\r\n */\r\n this.removeElement = function(type, scopeId, id) {\r\n assertDefined(type, 'type');\r\n assertDefined(scopeId, 'scopeId');\r\n assertDefined(id, 'id');\r\n\r\n var elements = this._getElements(type);\r\n var removed = false;\r\n var element = elements[scopeId][id];\r\n if (element) {\r\n element.setMap(null);\r\n removed = true;\r\n }\r\n elements[scopeId][id] = null;\r\n delete elements[scopeId][id];\r\n return removed;\r\n };\r\n\r\n /**\r\n * Applies a function to each element on the map.\r\n * @param {String} type of element, e.g. 'marker'\r\n * @param {Function} fn will be called with element as first argument\r\n * @throw if an argument is null or undefined\r\n */\r\n this.forEachElement = function(type, fn) {\r\n assertDefined(type, 'type');\r\n assertDefined(fn, 'fn');\r\n\r\n var elements = this._getElements(type);\r\n var scopeIds = Object.keys(elements);\r\n var allElements = scopeIds.reduce(function(accumulator, scopeId) {\r\n angular.forEach(elements[scopeId], function(element) {\r\n accumulator.push(element);\r\n });\r\n return accumulator;\r\n }, []);\r\n\r\n angular.forEach(allElements, function(element, id) {\r\n if (element != null) {\r\n fn(element, id);\r\n }\r\n });\r\n };\r\n\r\n\r\n /**\r\n * Applies a function to each element in a scope.\r\n * @param {String} type of element, e.g. 'marker'\r\n * @param {number} scope id\r\n * @param {Function} fn will called with marker as first argument\r\n * @throw if an argument is null or undefined\r\n */\r\n this.forEachElementInScope = function(type, scopeId, fn) {\r\n assertDefined(type, 'type');\r\n assertDefined(scopeId, 'scopeId');\r\n assertDefined(fn, 'fn');\r\n\r\n var elements = this._getElements(type);\r\n angular.forEach(elements[scopeId], function(element, id) {\r\n if (element != null) {\r\n fn(element, id);\r\n }\r\n });\r\n };\r\n\r\n this.getMap = function() {\r\n return this._map;\r\n };\r\n\r\n /** Instantiate controller */\r\n angular.bind(this, constructor)($scope, $element);\r\n\r\n }]);\r\n})();\r\n\r\n","/*!\r\n *\t Angular Smooth Scroll (ngSmoothScroll)\r\n *\t Animates scrolling to elements, by David Oliveros.\r\n *\r\n * https://github.com/d-oliveros/ngSmoothScroll\r\n *\r\n *\t Version: 2.0.0\r\n * \t License: MIT\r\n */\r\n\r\n(function () {\r\n\t'use strict';\r\n\r\n\tvar module = angular.module('smoothScroll', []);\r\n\r\n\r\n\t/**\r\n\t * Smooth scrolls the window/div to the provided element.\r\n\t *\r\n\t * 20150713 EDIT - zephinzer\r\n\t * \tAdded new option - containerId to account for scrolling within a DIV\r\n\t */\r\n\tvar smoothScroll = function (element, options) {\r\n\t\toptions = options || {};\r\n\r\n\t\t// Options\r\n\t\tvar duration = angular.isDefined(options.duration) ? options.duration : 350,\r\n\t\t\toffset = options.offset || 0,\r\n\t\t\teasing = options.easing || 'easeInOutQuart',\r\n\t\t\tcallbackBefore = options.callbackBefore || function() {},\r\n\t\t\tcallbackAfter = options.callbackAfter || function() {},\r\n\t\t\tcontainer = document.getElementById(options.containerId) || null,\r\n\t\t\tcontainerPresent = (container != undefined && container != null);\r\n\r\n\t\t/**\r\n\t\t * Retrieve current location\r\n\t\t */\r\n\t\tvar getScrollLocation = function() {\r\n\t\t\tif(containerPresent) {\r\n\t\t\t\treturn container.scrollTop;\r\n\t\t\t} else {\r\n\t\t\t\tif(window.pageYOffset) {\r\n\t\t\t\t\treturn window.pageYOffset;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn document.documentElement.scrollTop;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Calculate easing pattern.\r\n\t\t *\r\n\t\t * 20150713 edit - zephinzer\r\n\t\t * - changed if-else to switch\r\n\t\t * @see http://archive.oreilly.com/pub/a/server-administration/excerpts/even-faster-websites/writing-efficient-javascript.html\r\n\t\t */\r\n\t\tvar getEasingPattern = function(type, time) {\r\n\t\t\tswitch(type) {\r\n\t\t\t\tcase 'easeInQuad': \t\treturn time * time; // accelerating from zero velocity\r\n\t\t\t\tcase 'easeOutQuad': \treturn time * (2 - time); // decelerating to zero velocity\r\n\t\t\t\tcase 'easeInOutQuad': \treturn time < 0.5 ? 2 * time * time : -1 + (4 - 2 * time) * time; // acceleration until halfway, then deceleration\r\n\t\t\t\tcase 'easeInCubic': \treturn time * time * time; // accelerating from zero velocity\r\n\t\t\t\tcase 'easeOutCubic': \treturn (--time) * time * time + 1; // decelerating to zero velocity\r\n\t\t\t\tcase 'easeInOutCubic': \treturn time < 0.5 ? 4 * time * time * time : (time - 1) * (2 * time - 2) * (2 * time - 2) + 1; // acceleration until halfway, then deceleration\r\n\t\t\t\tcase 'easeInQuart': \treturn time * time * time * time; // accelerating from zero velocity\r\n\t\t\t\tcase 'easeOutQuart': \treturn 1 - (--time) * time * time * time; // decelerating to zero velocity\r\n\t\t\t\tcase 'easeInOutQuart': \treturn time < 0.5 ? 8 * time * time * time * time : 1 - 8 * (--time) * time * time * time; // acceleration until halfway, then deceleration\r\n\t\t\t\tcase 'easeInQuint': \treturn time * time * time * time * time; // accelerating from zero velocity\r\n\t\t\t\tcase 'easeOutQuint': \treturn 1 + (--time) * time * time * time * time; // decelerating to zero velocity\r\n\t\t\t\tcase 'easeInOutQuint': \treturn time < 0.5 ? 16 * time * time * time * time * time : 1 + 16 * (--time) * time * time * time * time; // acceleration until halfway, then deceleration\r\n\t\t\t\tdefault:\t\t\t\treturn time;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Calculate how far to scroll\r\n\t\t */\r\n\t\tvar getEndLocation = function(element) {\r\n\t\t\tvar location = 0;\r\n\t\t\tif (element && element.offsetParent) {\r\n\t\t\t\tdo {\r\n\t\t\t\t\tlocation += element.offsetTop;\r\n\t\t\t\t\telement = element.offsetParent;\r\n\t\t\t\t} while (element);\r\n\t\t\t}\r\n\t\t\tlocation = Math.max(location - offset, 0);\r\n\t\t\treturn location;\r\n\t\t};\r\n\r\n\t\t// Initialize the whole thing\r\n\t\tsetTimeout( function() {\r\n\t\t\tvar currentLocation = null,\r\n\t\t\t\tstartLocation \t= getScrollLocation(),\r\n\t\t\t\tendLocation \t= getEndLocation(element),\r\n\t\t\t\ttimeLapsed \t\t= 0,\r\n\t\t\t\tdistance \t\t= endLocation - startLocation,\r\n\t\t\t\tpercentage,\r\n\t\t\t\tposition,\r\n\t\t\t\tscrollHeight,\r\n\t\t\t\tinternalHeight;\r\n\r\n\t\t\t/**\r\n\t\t\t * Stop the scrolling animation when the anchor is reached (or at the top/bottom of the page)\r\n\t\t\t */\r\n\t\t\tvar stopAnimation = function () {\r\n\t\t\t\tcurrentLocation = getScrollLocation();\r\n\t\t\t\tif(containerPresent) {\r\n\t\t\t\t\tscrollHeight = container.scrollHeight;\r\n\t\t\t\t\tinternalHeight = container.clientHeight + currentLocation;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscrollHeight = document.body.scrollheight;\r\n\t\t\t\t\tinternalHeight = window.innerHeight + currentLocation;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\t( // condition 1\r\n\t\t\t\t\t\tposition == endLocation\r\n\t\t\t\t\t) ||\r\n\t\t\t\t\t( // condition 2\r\n\t\t\t\t\t\tcurrentLocation == endLocation\r\n\t\t\t\t\t) ||\r\n\t\t\t\t\t( // condition 3\r\n\t\t\t\t\t\tinternalHeight >= scrollHeight\r\n\t\t\t\t\t)\r\n\t\t\t\t) { // stop\r\n\t\t\t\t\tclearInterval(runAnimation);\r\n\t\t\t\t\tcallbackAfter(element);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\t/**\r\n\t\t\t * Scroll the page by an increment, and check if it's time to stop\r\n\t\t\t */\r\n\t\t\tvar animateScroll = function () {\r\n\t\t\t\ttimeLapsed += 16;\r\n\t\t\t\tpercentage = ( timeLapsed / duration );\r\n\t\t\t\tpercentage = ( percentage > 1 ) ? 1 : percentage;\r\n\t\t\t\tposition = startLocation + ( distance * getEasingPattern(easing, percentage) );\r\n\t\t\t\tif(containerPresent) {\r\n\t\t\t\t\tcontainer.scrollTop = position;\r\n\t\t\t\t} else {\r\n\t\t\t\t\twindow.scrollTo( 0, position );\r\n\t\t\t\t}\r\n\t\t\t\tstopAnimation();\r\n\t\t\t};\r\n\r\n\t\t\tcallbackBefore(element);\r\n\t\t\tvar runAnimation = setInterval(animateScroll, 16);\r\n\t\t}, 0);\r\n\t};\r\n\r\n\r\n\t// Expose the library in a factory\r\n\t//\r\n\tmodule.factory('smoothScroll', function() {\r\n\t\treturn smoothScroll;\r\n\t});\r\n\r\n\r\n\t/**\r\n\t * Scrolls the window to this element, optionally validating an expression\r\n\t *\r\n\t * 20150713 EDIT - zephinzer\r\n\t * \tAdded containerId to attributes for smooth scrolling within a DIV\r\n\t */\r\n\tmodule.directive('smoothScroll', ['smoothScroll', function(smoothScroll) {\r\n\t\treturn {\r\n\t\t\trestrict: 'A',\r\n\t\t\tscope: {\r\n\t\t\t\tcallbackBefore: '&',\r\n\t\t\t\tcallbackAfter: '&',\r\n\t\t\t},\r\n\t\t\tlink: function($scope, $elem, $attrs) {\r\n\t\t\t\tif ( typeof $attrs.scrollIf === 'undefined' || $attrs.scrollIf === 'true' ) {\r\n\t\t\t\t\tsetTimeout( function() {\r\n\r\n\t\t\t\t\t\tvar callbackBefore = function(element) {\r\n\t\t\t\t\t\t\tif ( $attrs.callbackBefore ) {\r\n\t\t\t\t\t\t\t\tvar exprHandler = $scope.callbackBefore({ element: element });\r\n\t\t\t\t\t\t\t\tif (typeof exprHandler === 'function') {\r\n\t\t\t\t\t\t\t\t\texprHandler(element);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tvar callbackAfter = function(element) {\r\n\t\t\t\t\t\t\tif ( $attrs.callbackAfter ) {\r\n\t\t\t\t\t\t\t\tvar exprHandler = $scope.callbackAfter({ element: element });\r\n\t\t\t\t\t\t\t\tif (typeof exprHandler === 'function') {\r\n\t\t\t\t\t\t\t\t\texprHandler(element);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tsmoothScroll($elem[0], {\r\n\t\t\t\t\t\t\tduration: $attrs.duration,\r\n\t\t\t\t\t\t\toffset: $attrs.offset,\r\n\t\t\t\t\t\t\teasing: $attrs.easing,\r\n\t\t\t\t\t\t\tcallbackBefore: callbackBefore,\r\n\t\t\t\t\t\t\tcallbackAfter: callbackAfter,\r\n\t\t\t\t\t\t\tcontainerId: $attrs.containerId\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}, 0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}]);\r\n\r\n\r\n\t/**\r\n\t * Scrolls to a specified element ID when this element is clicked\r\n\t *\r\n\t * 20150713 EDIT - zephinzer\r\n\t * \tAdded containerId to attributes for smooth scrolling within a DIV\r\n\t */\r\n\tmodule.directive('scrollTo', ['smoothScroll', function(smoothScroll) {\r\n\t\treturn {\r\n\t\t\trestrict: 'A',\r\n\t\t\tscope: {\r\n\t\t\t\tcallbackBefore: '&',\r\n\t\t\t\tcallbackAfter: '&',\r\n\t\t\t},\r\n\t\t\tlink: function($scope, $elem, $attrs) {\r\n\t\t\t\tvar targetElement;\r\n\r\n\t\t\t\t$elem.on('click', function(e) {\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\ttargetElement = document.getElementById($attrs.scrollTo);\r\n\t\t\t\t\tif ( !targetElement ) return;\r\n\r\n\t\t\t\t\tvar callbackBefore = function(element) {\r\n\t\t\t\t\t\tif ( $attrs.callbackBefore ) {\r\n\t\t\t\t\t\t\tvar exprHandler = $scope.callbackBefore({element: element});\r\n\t\t\t\t\t\t\tif (typeof exprHandler === 'function') {\r\n\t\t\t\t\t\t\t\texprHandler(element);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tvar callbackAfter = function(element) {\r\n\t\t\t\t\t\tif ( $attrs.callbackAfter ) {\r\n\t\t\t\t\t\t\tvar exprHandler = $scope.callbackAfter({element: element});\r\n\t\t\t\t\t\t\tif (typeof exprHandler === 'function') {\r\n\t\t\t\t\t\t\t\texprHandler(element);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tsmoothScroll(targetElement, {\r\n\t\t\t\t\t\tduration: $attrs.duration,\r\n\t\t\t\t\t\toffset: $attrs.offset,\r\n\t\t\t\t\t\teasing: $attrs.easing,\r\n\t\t\t\t\t\tcallbackBefore: callbackBefore,\r\n\t\t\t\t\t\tcallbackAfter: callbackAfter,\r\n\t\t\t\t\t\tcontainerId: $attrs.containerId\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\t}]);\r\n\r\n}());","/*\r\n * angular-sticky-plugin\r\n * https://github.com/harm-less/angular-sticky\r\n\r\n * Version: 0.4.1 - 2017-06-12\r\n * License: MIT\r\n */\r\n'use strict';\r\n\r\nangular.module('hl.sticky', [])\r\n\r\n\t.factory('mediaQuery', function () {\r\n\t\treturn {\r\n\t\t\tmatches: function (query) {\r\n\t\t\t\treturn (query && (matchMedia('(' + query + ')').matches || matchMedia(query).matches));\r\n\t\t\t}\r\n\t\t};\r\n\t})\r\n\r\n\t.factory('hlStickyStack', [\"$document\", \"DefaultStickyStackName\", function ($document, DefaultStickyStackName) {\r\n\r\n\t\tvar documentEl = $document[0].documentElement;\r\n\r\n\t\tvar stacks = {};\r\n\r\n\t\tfunction stickyStack(options) {\r\n\r\n\t\t\toptions = options || {};\r\n\r\n\t\t\tvar stackName = options.name || DefaultStickyStackName;\r\n\r\n\t\t\t// use existing sticky stack\r\n\t\t\tif (stacks[stackName]) {\r\n\t\t\t\treturn stacks[stackName];\r\n\t\t\t}\r\n\r\n\t\t\t// should be above all Bootstrap's z-indexes (but just before the modals)\r\n\t\t\tvar stickyZIndex = 1039;\r\n\t\t\tvar stack = [];\r\n\r\n\t\t\tvar $stack = {};\r\n\r\n\t\t\t$stack.options = options;\r\n\t\t\t$stack.stackName = stackName;\r\n\r\n\t\t\t$stack.add = function (id, sticky) {\r\n\t\t\t\tif (!angular.isString(id) || id === '') {\r\n\t\t\t\t\tid = $stack.length();\r\n\t\t\t\t}\r\n\t\t\t\tsticky.id = id;\r\n\t\t\t\tsticky.zIndex = stickyZIndex;\r\n\t\t\t\tstack.push(sticky);\r\n\r\n\t\t\t\tstickyZIndex -= 1;\r\n\t\t\t\treturn sticky;\r\n\t\t\t};\r\n\t\t\t$stack.get = function (id) {\r\n\t\t\t\tfor (var i = 0; i < stack.length; i++) {\r\n\t\t\t\t\tif (id == stack[i].id) { // jshint ignore:line\r\n\t\t\t\t\t\treturn stack[i];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t};\r\n\t\t\t$stack.index = function (id) {\r\n\t\t\t\tfor (var i = 0; i < stack.length; i++) {\r\n\t\t\t\t\tif (id == stack[i].id) { // jshint ignore:line\r\n\t\t\t\t\t\treturn i;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn -1;\r\n\t\t\t};\r\n\t\t\t$stack.range = function (start, end) {\r\n\t\t\t\treturn stack.slice(start, end);\r\n\t\t\t};\r\n\t\t\t$stack.all = function () {\r\n\t\t\t\treturn stack;\r\n\t\t\t};\r\n\t\t\t$stack.keys = function () {\r\n\t\t\t\tvar ids = [];\r\n\t\t\t\tfor (var i = 0; i < stack.length; i++) {\r\n\t\t\t\t\tids.push(stack[i].id);\r\n\t\t\t\t}\r\n\t\t\t\treturn ids;\r\n\t\t\t};\r\n\t\t\t$stack.top = function () {\r\n\t\t\t\treturn stack[stack.length - 1];\r\n\t\t\t};\r\n\t\t\t$stack.remove = function (id) {\r\n\t\t\t\tfor (var i = 0; i < stack.length; i++) {\r\n\t\t\t\t\tif (id == stack[i].id) { // jshint ignore:line\r\n\t\t\t\t\t\tstickyZIndex += 1;\r\n\t\t\t\t\t\treturn stack.splice(i, 1)[0];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t};\r\n\t\t\t$stack.removeTop = function () {\r\n\t\t\t\tstickyZIndex += 1;\r\n\t\t\t\treturn stack.splice(stack.length - 1, 1)[0];\r\n\t\t\t};\r\n\t\t\t$stack.length = function () {\r\n\t\t\t\treturn stack.length;\r\n\t\t\t};\r\n\r\n\t\t\t$stack.height = function (anchor) {\r\n\t\t\t\tvar height = {\r\n\t\t\t\t\ttop: 0,\r\n\t\t\t\t\tbottom: 0\r\n\t\t\t\t};\r\n\t\t\t\tangular.forEach(stack, function(item) {\r\n\t\t\t\t\theight[item.anchor()] += item.computedHeight(anchor);\r\n\t\t\t\t});\r\n\t\t\t\treturn height[anchor];\r\n\t\t\t};\r\n\t\t\t$stack.heightAt = function (anchor, at) {\r\n\t\t\t\tvar atAdjusted = at - 1;\r\n\t\t\t\tvar stick;\r\n\t\t\t\tvar computedHeight;\r\n\t\t\t\tvar height = {\r\n\t\t\t\t\ttop: 0,\r\n\t\t\t\t\tbottom: 0\r\n\t\t\t\t};\r\n\t\t\t\tfor (var i = 0; i < stack.length; i++) {\r\n\t\t\t\t\tstick = stack[i];\r\n\t\t\t\t\t// check if the sticky element sticks at the queried position minus 1 pixel if the position is at the same place\r\n\t\t\t\t\tif (stick.sticksAtPosition(anchor, atAdjusted)) {\r\n\t\t\t\t\t\tvar stickyAnchor = stick.anchor();\r\n\t\t\t\t\t\tcomputedHeight = stick.computedHeight(anchor, atAdjusted - height[stickyAnchor]);\r\n\r\n\t\t\t\t\t\t// add the height of the sticky element to the total\r\n\t\t\t\t\t\theight[stickyAnchor] += computedHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn height[anchor];\r\n\t\t\t};\r\n\t\t\t$stack.heightCurrent = function (anchor) {\r\n\t\t\t\treturn $stack.heightAt(anchor, window.pageYOffset || documentEl.scrollTop);\r\n\t\t\t};\r\n\r\n\t\t\tstacks[stackName] = $stack;\r\n\r\n\t\t\treturn $stack;\r\n\t\t}\r\n\r\n\t\treturn stickyStack;\r\n\t}])\r\n\r\n\t.factory('hlStickyElement', [\"$document\", \"$log\", \"hlStickyStack\", \"throttle\", \"mediaQuery\", function($document, $log, hlStickyStack, throttle, mediaQuery) {\r\n\t\treturn function(element, options) {\r\n\t\t\toptions = options || {};\r\n\r\n\t\t\tvar stickyLineTop;\r\n\t\t\tvar stickyLineBottom;\r\n\t\t\tvar placeholder;\r\n\r\n\t\t\tvar _isSticking = false;\r\n\r\n\t\t\t// elements\r\n\t\t\tvar bodyEl = angular.element($document[0].body);\r\n\t\t\tvar nativeEl = element[0];\r\n\t\t\tvar documentEl = $document[0].documentElement;\r\n\r\n\t\t\t// attributes\r\n\t\t\tvar id = options.id || null;\r\n\t\t\tvar stickyMediaQuery = angular.isDefined(options.mediaQuery) ? options.mediaQuery : false;\r\n\t\t\tvar stickyClass = angular.isString(options.stickyClass) && options.stickyClass !== '' ? options.stickyClass : 'is-sticky';\r\n\t\t\tvar usePlaceholder = angular.isDefined(options.usePlaceholder) ? options.usePlaceholder : true;\r\n\t\t\tvar offsetTop = options.offsetTop ? parseInt(options.offsetTop) : 0;\r\n\t\t\tvar offsetBottom = options.offsetBottom ? parseInt(options.offsetBottom) : 0;\r\n\t\t\tvar anchor = typeof options.anchor === 'string' ? options.anchor.toLowerCase().trim() : 'top';\r\n\t\t\tvar container = null;\r\n\t\t\tvar stack = options.stack === false ? null : options.stack || hlStickyStack();\r\n\r\n\t\t\tvar event = angular.isFunction(options.event) ? options.event : angular.noop;\r\n\t\t\tvar globalOffset = {\r\n\t\t\t\ttop: 0,\r\n\t\t\t\tbottom: 0\r\n\t\t\t};\r\n\r\n\t\t\t// initial style\r\n\t\t\tvar initialCSS = {\r\n\t\t\t\tstyle: element.attr('style') || ''\r\n\t\t\t};\r\n\r\n\t\t\t// Methods\r\n\t\t\t//\r\n\t\t\tfunction stickyLinePositionTop() {\r\n\t\t\t\tif (_isSticking) {\r\n\t\t\t\t\treturn stickyLineTop;\r\n\t\t\t\t}\r\n\t\t\t\tstickyLineTop = _getTopOffset(nativeEl) - offsetTop - _stackOffsetTop();\r\n\t\t\t\treturn stickyLineTop;\r\n\t\t\t}\r\n\t\t\tfunction stickyLinePositionBottom() {\r\n\t\t\t\tif (_isSticking) {\r\n\t\t\t\t\treturn stickyLineBottom;\r\n\t\t\t\t}\r\n\t\t\t\tstickyLineBottom = _getBottomOffset(nativeEl) + offsetBottom + _stackOffsetBottom();\r\n\t\t\t\treturn stickyLineBottom;\r\n\t\t\t}\r\n\t\t\tfunction isEnabled() {\r\n\t\t\t\treturn (!angular.isDefined(options.enable) || options.enable);\r\n\t\t\t}\r\n\t\t\tfunction isSticky() {\r\n\t\t\t\treturn (isEnabled() && _isSticking) || options.alwaysSticky;\r\n\t\t\t}\r\n\t\t\tfunction sticksAtPosition(anchor, scrolledDistance) {\r\n\t\t\t\tif (!matchesMediaQuery()) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tswitch (anchor) {\r\n\t\t\t\t\tcase 'top':\t{\r\n\t\t\t\t\t\treturn sticksAtPositionTop(scrolledDistance);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcase 'bottom': {\r\n\t\t\t\t\t\treturn sticksAtPositionBottom(scrolledDistance);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdefault: {\r\n\t\t\t\t\t\t$log.error('Unknown anchor \"' + anchor + '\"');\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tfunction sticksAtPositionTop(scrolledDistance) {\r\n\t\t\t\tscrolledDistance = scrolledDistance !== undefined ? scrolledDistance : window.pageYOffset || bodyEl.scrollTop;\r\n\t\t\t\tvar scrollTop = scrolledDistance - (documentEl.clientTop || 0);\r\n\t\t\t\treturn scrollTop >= stickyLinePositionTop();\r\n\t\t\t}\r\n\t\t\tfunction sticksAtPositionBottom(scrolledDistance) {\r\n\t\t\t\tscrolledDistance = scrolledDistance !== undefined ? scrolledDistance : (window.pageYOffset || bodyEl.scrollTop);\r\n\t\t\t\tvar scrollBottom = scrolledDistance + window.innerHeight;\r\n\t\t\t\treturn scrollBottom <= stickyLinePositionBottom();\r\n\t\t\t}\r\n\t\t\tfunction matchesMediaQuery() {\r\n\t\t\t\treturn stickyMediaQuery === false || mediaQuery.matches(stickyMediaQuery);\r\n\t\t\t}\r\n\r\n\t\t\tfunction render() {\r\n\t\t\t\tvar shouldStick = sticksAtPosition(anchor);\r\n\r\n\t\t\t\tif (angular.isDefined(options.enable) && !options.enable) {\r\n\t\t\t\t\tshouldStick = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (angular.isDefined(options.alwaysSticky) && options.alwaysSticky) {\r\n\t\t\t\t\tshouldStick = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Switch the sticky mode if the element crosses the sticky line\r\n\t\t\t\t// don't make the element sticky when it's already sticky\r\n\t\t\t\tif (shouldStick && !_isSticking) {\r\n\t\t\t\t\tstickElement();\r\n\t\t\t\t\tevent({event: 'stick'});\r\n\t\t\t\t}\r\n\t\t\t\t// don't unstick the element sticky when it isn't sticky already\r\n\t\t\t\telse if (!shouldStick && _isSticking) {\r\n\t\t\t\t\tunstickElement();\r\n\t\t\t\t\tevent({event: 'unstick'});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// stick after care\r\n\t\t\t\tif (_isSticking) {\r\n\t\t\t\t\t// update the top offset at an already sticking element\r\n\t\t\t\t\tif (anchor === 'top') {\r\n\t\t\t\t\t\telement.css('top', (offsetTop + _stackOffset(anchor) - containerBoundsBottom()) + 'px');\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (anchor === 'bottom') {\r\n\t\t\t\t\t\telement.css('bottom', (offsetBottom + _stackOffset(anchor) - containerBoundsTop()) + 'px');\r\n\t\t\t\t\t}\r\n\t\t\t\t\telement.css('width', elementWidth() + 'px');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction stickElement() {\r\n\t\t\t\t_isSticking = true;\r\n\r\n\t\t\t\telement.addClass(stickyClass);\r\n\r\n\t\t\t\t// create placeholder to avoid jump\r\n\t\t\t\tif (usePlaceholder) {\r\n\t\t\t\t\tplaceholder = placeholder || angular.element('
    ');\r\n\t\t\t\t\tplaceholder.css('height', elementHeight() + 'px');\r\n\t\t\t\t\telement.after(placeholder);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar rect = nativeEl.getBoundingClientRect();\r\n\t\t\t\tvar css = {\r\n\t\t\t\t\t'width': elementWidth() + 'px',\r\n\t\t\t\t\t'position': 'fixed',\r\n\t\t\t\t\t'left': rect.left + 'px',\r\n\t\t\t\t\t'z-index': stack ? stack.get(id).zIndex - (globalOffset.zIndex || 0) : null\r\n\t\t\t\t};\r\n\r\n\t\t\t\tcss['margin-' + anchor] = 0;\r\n\t\t\t\telement.css(css);\r\n\t\t\t}\r\n\t\t\tfunction unstickElement() {\r\n\t\t\t\t_isSticking = false;\r\n\r\n\t\t\t\telement.removeClass(stickyClass);\r\n\r\n\t\t\t\t// reset the original css we might have changed when the object was sticky\r\n\t\t\t\telement.attr('style', initialCSS.style);\r\n\r\n\t\t\t\t// if a placeholder was used, remove it from the DOM\r\n\t\t\t\tif (placeholder) {\r\n\t\t\t\t\tplaceholder.remove();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction elementWidth() {\r\n\t\t\t\treturn nativeEl.offsetWidth;\r\n\t\t\t}\r\n\t\t\tfunction elementHeight() {\r\n\t\t\t\treturn nativeEl.offsetHeight;\r\n\t\t\t}\r\n\r\n\t\t\tfunction _getTopOffset(element) {\r\n\t\t\t\tvar pixels = 0;\r\n\t\t\t\tif (element && element.offsetParent) {\r\n\t\t\t\t\tdo {\r\n\t\t\t\t\t\tpixels += element.offsetTop;\r\n\t\t\t\t\t\telement = element.offsetParent;\r\n\t\t\t\t\t} while (element);\r\n\t\t\t\t}\r\n\t\t\t\treturn pixels;\r\n\t\t\t}\r\n\r\n\t\t\tfunction _getBottomOffset (element) {\r\n\t\t\t\treturn _getTopOffset(element) + element.clientHeight;\r\n\t\t\t}\r\n\r\n\t\t\tfunction _stackOffset(anchor) {\r\n\t\t\t\tvar extraOffset = 0;\r\n\r\n\t\t\t\tif (anchor === 'top' && globalOffset.top > 0) {\r\n\t\t\t\t\textraOffset += globalOffset.top;\r\n\t\t\t\t}\r\n\t\t\t\tif (anchor === 'bottom' && globalOffset.bottom > 0) {\r\n\t\t\t\t\textraOffset += globalOffset.bottom;\r\n\t\t\t\t}\r\n\t\t\t\tif (stack) {\r\n\t\t\t\t\tvar stickIndex = stack.index(id);\r\n\t\t\t\t\tif (anchor === 'top') {\r\n\t\t\t\t\t\tif (stickIndex > 0) {\r\n\t\t\t\t\t\t\t// @todo the stack range calculation should be diverted to the stack\r\n\t\t\t\t\t\t\tstack.range(0, stickIndex).forEach(function (stick) {\r\n\t\t\t\t\t\t\t\tif (stick.isSticky()) {\r\n\t\t\t\t\t\t\t\t\textraOffset += stick.computedHeight(anchor);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (anchor === 'bottom') {\r\n\t\t\t\t\t\tif (stickIndex !== stack.length() - 1) {\r\n\t\t\t\t\t\t\t// @todo the stack range calculation should be diverted to the stack\r\n\t\t\t\t\t\t\tstack.range(stickIndex + 1, stack.length()).forEach(function (stick) {\r\n\t\t\t\t\t\t\t\tif (stick.isSticky()) {\r\n\t\t\t\t\t\t\t\t\textraOffset += stick.computedHeight(anchor);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn extraOffset;\r\n\t\t\t}\r\n\t\t\tfunction _stackOffsetTop() { return _stackOffset('top'); }\r\n\t\t\tfunction _stackOffsetBottom() { return _stackOffset('bottom'); }\r\n\r\n\t\t\tfunction computedHeight(anchor, scrolledDistance) {\r\n\t\t\t\tif (anchor === 'top') {\r\n\t\t\t\t\treturn Math.max(0, elementHeight() - containerBoundsBottom(scrolledDistance) + offsetTop);\r\n\t\t\t\t}\r\n\t\t\t\telse if (anchor === 'bottom') {\r\n\t\t\t\t\treturn Math.max(0, elementHeight() - containerBoundsTop(scrolledDistance) + offsetBottom);\r\n\t\t\t\t}\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t\t// @todo dffgdg\r\n\t\t\tfunction containerBoundsTop(scrolledDistance) {\r\n\t\t\t\tif (container === null) {\r\n\t\t\t\t\tcontainer = options.container !== undefined ? angular.isString(options.container) ? angular.element(documentEl.querySelector('#' + options.container))[0] : options.container : false;\r\n\t\t\t\t}\r\n\t\t\t\tif (container) {\r\n\t\t\t\t\tvar hasScrollDistance = !(scrolledDistance === null || scrolledDistance === undefined);\r\n\t\t\t\t\tvar containerRect = container.getBoundingClientRect();\r\n\t\t\t\t\tvar containerBottom = !hasScrollDistance ? containerRect.top - window.innerHeight + elementHeight() : (_getTopOffset(container) + containerRect.height) - scrolledDistance;\r\n\t\t\t\t\treturn Math.max(0, containerBottom - (offsetTop + _stackOffset(anchor)));\r\n\t\t\t\t}\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\t\t\tfunction containerBoundsBottom(scrolledDistance) {\r\n\t\t\t\tif (container === null) {\r\n\t\t\t\t\tcontainer = options.container !== undefined ? angular.isString(options.container) ? angular.element(documentEl.querySelector('#' + options.container))[0] : options.container : false;\r\n\t\t\t\t}\r\n\t\t\t\tif (container) {\r\n\t\t\t\t\tvar hasScrollDistance = !(scrolledDistance === null || scrolledDistance === undefined);\r\n\t\t\t\t\tvar containerRect = container.getBoundingClientRect();\r\n\t\t\t\t\tvar containerBottom = !hasScrollDistance ? containerRect.bottom : (_getTopOffset(container) + containerRect.height) - scrolledDistance;\r\n\t\t\t\t\treturn Math.max(0, (offsetTop + _stackOffset(anchor) + elementHeight()) - containerBottom);\r\n\t\t\t\t}\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t\tvar $api = {};\r\n\r\n\t\t\tif (stack) {\r\n\t\t\t\t// add element to the sticky stack and save the id\r\n\t\t\t\tvar stackItem = stack.add(id, $api);\r\n\t\t\t\tid = stackItem.id;\r\n\t\t\t}\r\n\r\n\t\t\t$api.draw = function(drawOptions) {\r\n\t\t\t\tdrawOptions = drawOptions || {};\r\n\t\t\t\tvar offset = drawOptions.offset;\r\n\t\t\t\tif (offset) {\r\n\t\t\t\t\t// setting global offsets added to the local offsets of the sticky element\r\n\t\t\t\t\tglobalOffset.top = offset.top || 0;\r\n\t\t\t\t\tglobalOffset.bottom = offset.bottom || 0;\r\n\t\t\t\t\tglobalOffset.zIndex = offset.zIndex;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// for resizing or other purposes that require a forced re-draw, we simply un-stick the element and re-stick it using the render method\r\n\t\t\t\tif (drawOptions.force === true) {\r\n\t\t\t\t\tunstickElement();\r\n\t\t\t\t}\r\n\t\t\t\trender();\r\n\t\t\t};\r\n\r\n\t\t\t$api.anchor = function() {\r\n\t\t\t\treturn anchor;\r\n\t\t\t};\r\n\r\n\t\t\t$api.isSticky = isSticky;\r\n\t\t\t$api.isEnabled = isEnabled;\r\n\t\t\t$api.computedHeight = computedHeight;\r\n\t\t\t$api.sticksAtPosition = sticksAtPosition;\r\n\r\n\t\t\t$api.destroy = function() {\r\n\t\t\t\tunstickElement();\r\n\t\t\t\tif (stack) {\r\n\t\t\t\t\tstack.remove(id);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\treturn $api;\r\n\t\t};\r\n\t}])\r\n\r\n\t.constant('DefaultStickyStackName', 'default-stack')\r\n\r\n\t.provider('hlStickyElementCollection', function() {\r\n\r\n\t\tvar $$count = 0;\r\n\r\n\t\tvar $stickyElement = {\r\n\t\t\tcollections: {},\r\n\t\t\tdefaults: {\r\n\t\t\t\tcheckDelay: 250\r\n\t\t\t},\r\n\t\t\telementsDefaults: {\r\n\r\n\t\t\t},\r\n\t\t\t$get: [\"$rootScope\", \"$window\", \"$document\", \"$log\", \"DefaultStickyStackName\", \"hlStickyElement\", \"hlStickyStack\", \"throttle\", function($rootScope, $window, $document, $log, DefaultStickyStackName, hlStickyElement, hlStickyStack, throttle) {\r\n\r\n\t\t\t\tvar windowEl = angular.element($window);\r\n\r\n\t\t\t\t// var unbindViewContentLoaded;\r\n\t\t\t\t// var unbindIncludeContentLoaded;\r\n\t\t\t\tvar throttledResize;\r\n\r\n\t\t\t\tfunction init() {\r\n\t\t\t\t\t$$count++;\r\n\r\n\t\t\t\t\t// make sure we can initialize it only once\r\n\t\t\t\t\tif ($$count > 1) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// bind events\r\n\t\t\t\t\tthrottledResize = throttle(resize, $stickyElement.defaults.checkDelay, {leading: false});\r\n\t\t\t\t\twindowEl.on('resize', throttledResize);\r\n\t\t\t\t\twindowEl.on('scroll', drawEvent);\r\n\r\n\t\t\t\t\t// unbindViewContentLoaded = $rootScope.$on('$viewContentLoaded', throttledResize);\r\n\t\t\t\t\t// unbindIncludeContentLoaded = $rootScope.$on('$includeContentLoaded', throttledResize);\r\n\t\t\t\t\tthrottledResize();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction destroy() {\r\n\t\t\t\t\t// check internal references counter\r\n\t\t\t\t\t$$count--;\r\n\t\t\t\t\tif ($$count > 0) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// unbind events\r\n\t\t\t\t\twindowEl.off('resize', throttledResize);\r\n\t\t\t\t\twindowEl.off('scroll', drawEvent);\r\n\t\t\t\t\t// unbindViewContentLoaded();\r\n\t\t\t\t\t// unbindIncludeContentLoaded();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction drawEvent() {\r\n\t\t\t\t\tdraw();\r\n\t\t\t\t}\r\n\t\t\t\tfunction resize() {\r\n\t\t\t\t\tdraw({force: true});\r\n\t\t\t\t}\r\n\t\t\t\tfunction draw(drawOptions) {\r\n\t\t\t\t\tangular.forEach($stickyElement.collections, function(collection) {\r\n\t\t\t\t\t\tcollection.draw(drawOptions);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction stickyElementFactory(options) {\r\n\r\n\t\t\t\t\tif (!options || !angular.isObject(options)) {\r\n\t\t\t\t\t\t$log.warn('Must supply an options object');\r\n\t\t\t\t\t\toptions = {};\r\n\t\t\t\t\t}\r\n\t\t\t\t\toptions = angular.extend({}, $stickyElement.elementsDefaults, options);\r\n\r\n\t\t\t\t\tvar collectionName = options.name || DefaultStickyStackName;\r\n\r\n\t\t\t\t\t// use existing element collection\r\n\t\t\t\t\tif ($stickyElement.collections[collectionName]) {\r\n\t\t\t\t\t\treturn $stickyElement.collections[collectionName];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar stickyStackFactory = hlStickyStack({\r\n\t\t\t\t\t\tname: collectionName\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tvar trackedElements = [];\r\n\r\n\t\t\t\t\tvar $sticky = {};\r\n\r\n\t\t\t\t\t$sticky.addElement = function (element, stickyOptions) {\r\n\t\t\t\t\t\tstickyOptions = stickyOptions || {};\r\n\t\t\t\t\t\tstickyOptions.stack = stickyStackFactory;\r\n\t\t\t\t\t\tvar sticky = hlStickyElement(element, stickyOptions);\r\n\t\t\t\t\t\ttrackedElements.push({\r\n\t\t\t\t\t\t\tstickyElement: sticky,\r\n\t\t\t\t\t\t\telement: element\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\treturn sticky;\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t$sticky.removeElement = function(element) {\r\n\r\n\t\t\t\t\t\tvar toDelete;\r\n\t\t\t\t\t\tfor (var i = trackedElements.length; i--;) {\r\n\t\t\t\t\t\t\tif ((angular.isString(element) && '#' + trackedElements[i].element.id === element) || trackedElements[i].element === element) {\r\n\t\t\t\t\t\t\t\ttoDelete = i;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvar deletedElement = trackedElements.splice(toDelete, 1)[0];\r\n\t\t\t\t\t\tif (deletedElement) {\r\n\t\t\t\t\t\t\tdeletedElement.stickyElement.destroy();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn deletedElement;\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t$sticky.draw = function(drawOptions) {\r\n\t\t\t\t\t\tvar _drawOptions = {};\r\n\t\t\t\t\t\tif (options.parent) {\r\n\t\t\t\t\t\t\tvar parentStack = hlStickyStack({\r\n\t\t\t\t\t\t\t\tname: options.parent\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t_drawOptions.offset = {\r\n\t\t\t\t\t\t\t\ttop: parentStack.heightCurrent('top'),\r\n\t\t\t\t\t\t\t\tzIndex: parentStack.length()\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tangular.extend(_drawOptions, drawOptions || {});\r\n\t\t\t\t\t\tangular.forEach(trackedElements, function(element) {\r\n\t\t\t\t\t\t\telement.stickyElement.draw(_drawOptions);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t$sticky.destroy = function() {\r\n\t\t\t\t\t\tangular.forEach(angular.copy(trackedElements), function(element) {\r\n\t\t\t\t\t\t\t$sticky.removeElement(element);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tdelete $stickyElement.collections[collectionName];\r\n\t\t\t\t\t\tdestroy();\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t$sticky.trackedElements = function() {\r\n\t\t\t\t\t\treturn trackedElements;\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// use new element collection\r\n\t\t\t\t\t$stickyElement.collections[collectionName] = $sticky;\r\n\t\t\t\t\tinit();\r\n\r\n\t\t\t\t\treturn $sticky;\r\n\t\t\t\t}\r\n\t\t\t\treturn stickyElementFactory;\r\n\t\t\t}]\r\n\t\t};\r\n\t\treturn $stickyElement;\r\n\t})\r\n\r\n\t.directive('hlSticky', [\"$log\", \"$window\", \"$document\", \"hlStickyElementCollection\", function($log, $window, $document, hlStickyElementCollection) {\r\n\t\treturn {\r\n\t\t\trestrict: 'A',\r\n\t\t\tscope: {\r\n\t\t\t\tcontainer: '@',\r\n\t\t\t\tanchor: '@',\r\n\t\t\t\tstickyClass: '@',\r\n\t\t\t\tmediaQuery: '@',\r\n\t\t\t\tcollection: '@',\r\n\t\t\t\tcollectionParent: '@',\r\n\t\t\t\tevent: '&',\r\n\t\t\t\tenable: '=',\r\n\t\t\t\talwaysSticky: '='\r\n\t\t\t},\r\n\t\t\tlink: function($scope, $element, $attrs) {\r\n\t\t\t\t$element.addClass('hl-sticky');\r\n\r\n\t\t\t\tvar stickyElementCollection = hlStickyElementCollection({\r\n\t\t\t\t\tname: $scope.collection,\r\n\t\t\t\t\tparent: $scope.collectionParent\r\n\t\t\t\t});\r\n\t\t\t\tvar options = {\r\n\t\t\t\t\tid: $attrs.hlSticky,\r\n\t\t\t\t\tevent: function(event) {\r\n\t\t\t\t\t\t$scope.event({\r\n\t\t\t\t\t\t\tevent: event\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tangular.forEach(['anchor', 'container', 'stickyClass', 'mediaQuery', 'enable', 'alwaysSticky'], function(option) {\r\n\t\t\t\t\tif (angular.isDefined($scope[option])) {\r\n\t\t\t\t\t\toptions[option] = $scope[option];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tangular.forEach(['usePlaceholder', 'offsetTop', 'offsetBottom'], function(option) {\r\n\t\t\t\t\tif (angular.isDefined($attrs[option])) {\r\n\t\t\t\t\t\toptions[option] = $scope.$parent.$eval($attrs[option]);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tstickyElementCollection.addElement($element, options);\r\n\r\n\t\t\t\t// listeners\r\n\t\t\t\t$scope.$watch('enable', function (newValue, oldValue) {\r\n\t\t\t\t\tif (newValue !== oldValue) {\r\n\t\t\t\t\t\toptions.enable = $scope.enable;\r\n\t\t\t\t\t\tstickyElementCollection.draw({force: true});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\t$scope.$watch('alwaysSticky', function (newValue, oldValue) {\r\n\t\t\t\t\tif (newValue !== oldValue) {\r\n\t\t\t\t\t\toptions.alwaysSticky = $scope.alwaysSticky;\r\n\t\t\t\t\t\tstickyElementCollection.draw({force: true});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\t$scope.$on('$destroy', function onDestroy() {\r\n\t\t\t\t\tstickyElementCollection.removeElement($element);\r\n\t\t\t\t\tif (!stickyElementCollection.trackedElements().length) {\r\n\t\t\t\t\t\tstickyElementCollection.destroy();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\t}])\r\n\r\n\t.factory('throttle', [\"$timeout\", function($timeout) {\r\n\t\treturn function(func, wait, options) {\r\n\t\t\tvar timeout = null;\r\n\t\t\toptions = options || {};\r\n\t\t\treturn function() {\r\n\t\t\t\tvar that = this;\r\n\t\t\t\tvar args = arguments;\r\n\r\n\t\t\t\tif (!timeout) {\r\n\t\t\t\t\tif (options.leading !== false) {\r\n\t\t\t\t\t\tfunc.apply(that, args);\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttimeout = $timeout(function later() {\r\n\t\t\t\t\t\ttimeout = null;\r\n\t\t\t\t\t\tif (options.trailing !== false) {\r\n\t\t\t\t\t\t\tfunc.apply(that, args);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, wait, false);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t};\r\n\t}]);","/*\r\nVersion 2.1.1\r\nhttps://github.com/Foxandxss/angular-toastr\r\n*/\r\n\r\n(function() {\r\n 'use strict';\r\n\r\n angular.module('toastr', [])\r\n .factory('toastr', toastr);\r\n\r\n toastr.$inject = ['$animate', '$injector', '$document', '$rootScope', '$sce', 'toastrConfig', '$q'];\r\n\r\n function toastr($animate, $injector, $document, $rootScope, $sce, toastrConfig, $q) {\r\n var container;\r\n var index = 0;\r\n var toasts = [];\r\n\r\n var previousToastMessage = '';\r\n var openToasts = {};\r\n\r\n var containerDefer = $q.defer();\r\n\r\n var toast = {\r\n active: active,\r\n clear: clear,\r\n error: error,\r\n info: info,\r\n remove: remove,\r\n success: success,\r\n warning: warning,\r\n refreshTimer: refreshTimer\r\n };\r\n\r\n return toast;\r\n\r\n /* Public API */\r\n function active() {\r\n return toasts.length;\r\n }\r\n\r\n function clear(toast) {\r\n // Bit of a hack, I will remove this soon with a BC\r\n if (arguments.length === 1 && !toast) { return; }\r\n\r\n if (toast) {\r\n remove(toast.toastId);\r\n } else {\r\n for (var i = 0; i < toasts.length; i++) {\r\n remove(toasts[i].toastId);\r\n }\r\n }\r\n }\r\n\r\n function error(message, title, optionsOverride) {\r\n var type = _getOptions().iconClasses.error[0];\r\n var icon = _getOptions().iconClasses.error[1];\r\n return _buildNotification(type, icon, message, title, optionsOverride);\r\n }\r\n\r\n function info(message, title, optionsOverride) {\r\n var type = _getOptions().iconClasses.info[0];\r\n var icon = _getOptions().iconClasses.info[1];\r\n return _buildNotification(type, icon, message, title, optionsOverride);\r\n }\r\n\r\n function success(message, title, optionsOverride) {\r\n var type = _getOptions().iconClasses.success[0];\r\n var icon = _getOptions().iconClasses.success[1];\r\n return _buildNotification(type, icon, message, title, optionsOverride);\r\n }\r\n\r\n function warning(message, title, optionsOverride) {\r\n var type = _getOptions().iconClasses.warning[0];\r\n var icon = _getOptions().iconClasses.warning[1];\r\n return _buildNotification(type, icon, message, title, optionsOverride);\r\n }\r\n\r\n function refreshTimer(toast, newTime) {\r\n if (toast && toast.isOpened && toasts.indexOf(toast) >= 0) {\r\n toast.scope.refreshTimer(newTime);\r\n }\r\n }\r\n\r\n function remove(toastId, wasClicked) {\r\n var toast = findToast(toastId);\r\n\r\n if (toast && ! toast.deleting) { // Avoid clicking when fading out\r\n toast.deleting = true;\r\n toast.isOpened = false;\r\n $animate.leave(toast.el).then(function() {\r\n if (toast.scope.options.onHidden) {\r\n toast.scope.options.onHidden(!!wasClicked, toast);\r\n }\r\n toast.scope.$destroy();\r\n var index = toasts.indexOf(toast);\r\n delete openToasts[toast.scope.message];\r\n toasts.splice(index, 1);\r\n var maxOpened = toastrConfig.maxOpened;\r\n if (maxOpened && toasts.length >= maxOpened) {\r\n toasts[maxOpened - 1].open.resolve();\r\n }\r\n if (lastToast()) {\r\n container.remove();\r\n container = null;\r\n containerDefer = $q.defer();\r\n }\r\n });\r\n }\r\n\r\n function findToast(toastId) {\r\n for (var i = 0; i < toasts.length; i++) {\r\n if (toasts[i].toastId === toastId) {\r\n return toasts[i];\r\n }\r\n }\r\n }\r\n\r\n function lastToast() {\r\n return !toasts.length;\r\n }\r\n }\r\n\r\n /* Internal functions */\r\n function _buildNotification(type, icon, message, title, optionsOverride) {\r\n if (angular.isObject(title)) {\r\n optionsOverride = title;\r\n title = null;\r\n }\r\n\r\n return _notify({\r\n typeClass: type,\r\n iconClass: icon,\r\n message: message,\r\n optionsOverride: optionsOverride,\r\n title: title\r\n });\r\n }\r\n\r\n function _getOptions() {\r\n return angular.extend({}, toastrConfig);\r\n }\r\n\r\n function _createOrGetContainer(options) {\r\n if(container) { return containerDefer.promise; }\r\n\r\n container = angular.element('
    ');\r\n container.attr('id', options.containerId);\r\n container.addClass(options.positionClass);\r\n container.css({'pointer-events': 'auto'});\r\n\r\n var target = angular.element(document.querySelector(options.target));\r\n\r\n if ( ! target || ! target.length) {\r\n throw 'Target for toasts doesn\\'t exist';\r\n }\r\n\r\n $animate.enter(container, target).then(function() {\r\n containerDefer.resolve();\r\n });\r\n\r\n return containerDefer.promise;\r\n }\r\n\r\n function _notify(map) {\r\n var options = _getOptions();\r\n\r\n if (shouldExit()) { return; }\r\n\r\n var newToast = createToast();\r\n\r\n toasts.push(newToast);\r\n\r\n if (ifMaxOpenedAndAutoDismiss()) {\r\n var oldToasts = toasts.slice(0, (toasts.length - options.maxOpened));\r\n for (var i = 0, len = oldToasts.length; i < len; i++) {\r\n remove(oldToasts[i].toastId);\r\n }\r\n }\r\n\r\n if (maxOpenedNotReached()) {\r\n newToast.open.resolve();\r\n }\r\n\r\n newToast.open.promise.then(function() {\r\n _createOrGetContainer(options).then(function() {\r\n newToast.isOpened = true;\r\n if (options.newestOnTop) {\r\n $animate.enter(newToast.el, container).then(function() {\r\n newToast.scope.init();\r\n });\r\n } else {\r\n var sibling = container[0].lastChild ? angular.element(container[0].lastChild) : null;\r\n $animate.enter(newToast.el, container, sibling).then(function() {\r\n newToast.scope.init();\r\n });\r\n }\r\n });\r\n });\r\n\r\n return newToast;\r\n\r\n function ifMaxOpenedAndAutoDismiss() {\r\n return options.autoDismiss && options.maxOpened && toasts.length > options.maxOpened;\r\n }\r\n\r\n function createScope(toast, map, options) {\r\n if (options.allowHtml) {\r\n toast.scope.allowHtml = true;\r\n toast.scope.title = $sce.trustAsHtml(map.title);\r\n toast.scope.message = $sce.trustAsHtml(map.message);\r\n } else {\r\n toast.scope.title = map.title;\r\n toast.scope.message = map.message;\r\n }\r\n\r\n toast.scope.toastType = toast.typeClass;\r\n toast.scope.toastIcon = toast.iconClass;\r\n toast.scope.toastId = toast.toastId;\r\n toast.scope.extraData = options.extraData;\r\n\r\n toast.scope.options = {\r\n extendedTimeOut: options.extendedTimeOut,\r\n messageClass: options.messageClass,\r\n onHidden: options.onHidden,\r\n onShown: generateEvent('onShown'),\r\n onTap: generateEvent('onTap'),\r\n progressBar: options.progressBar,\r\n tapToDismiss: options.tapToDismiss,\r\n timeOut: options.timeOut,\r\n titleClass: options.titleClass,\r\n toastClass: options.toastClass\r\n };\r\n\r\n if (options.closeButton) {\r\n toast.scope.options.closeHtml = options.closeHtml;\r\n }\r\n\r\n function generateEvent(event) {\r\n if (options[event]) {\r\n return function() {\r\n options[event](toast);\r\n };\r\n }\r\n }\r\n }\r\n\r\n function createToast() {\r\n var newToast = {\r\n toastId: index++,\r\n isOpened: false,\r\n scope: $rootScope.$new(),\r\n open: $q.defer()\r\n };\r\n newToast.iconClass = map.iconClass;\r\n if (map.optionsOverride) {\r\n angular.extend(options, cleanOptionsOverride(map.optionsOverride));\r\n newToast.iconClass = map.optionsOverride.iconClass || newToast.iconClass;\r\n }\r\n newToast.typeClass = map.typeClass;\r\n if (map.optionsOverride) {\r\n angular.extend(options, cleanOptionsOverride(map.optionsOverride));\r\n newToast.typeClass = map.optionsOverride.typeClass || newToast.typeClass;\r\n }\r\n\r\n createScope(newToast, map, options);\r\n\r\n newToast.el = createToastEl(newToast.scope);\r\n\r\n return newToast;\r\n\r\n function cleanOptionsOverride(options) {\r\n var badOptions = ['containerId', 'iconClasses', 'maxOpened', 'newestOnTop',\r\n 'positionClass', 'preventDuplicates', 'preventOpenDuplicates', 'templates'];\r\n for (var i = 0, l = badOptions.length; i < l; i++) {\r\n delete options[badOptions[i]];\r\n }\r\n\r\n return options;\r\n }\r\n }\r\n\r\n function createToastEl(scope) {\r\n var angularDomEl = angular.element('
    '),\r\n $compile = $injector.get('$compile');\r\n return $compile(angularDomEl)(scope);\r\n }\r\n\r\n function maxOpenedNotReached() {\r\n return options.maxOpened && toasts.length <= options.maxOpened || !options.maxOpened;\r\n }\r\n\r\n function shouldExit() {\r\n var isDuplicateOfLast = options.preventDuplicates && map.message === previousToastMessage;\r\n var isDuplicateOpen = options.preventOpenDuplicates && openToasts[map.message];\r\n\r\n if (isDuplicateOfLast || isDuplicateOpen) {\r\n return true;\r\n }\r\n\r\n previousToastMessage = map.message;\r\n openToasts[map.message] = true;\r\n\r\n return false;\r\n }\r\n }\r\n }\r\n}());\r\n\r\n(function() {\r\n 'use strict';\r\n\r\n angular.module('toastr')\r\n .constant('toastrConfig', {\r\n allowHtml: false,\r\n autoDismiss: false,\r\n closeButton: false,\r\n closeHtml: '',\r\n containerId: 'toast-container',\r\n extendedTimeOut: 1000,\r\n iconClasses: {\r\n error: ['toast-error', ''],\r\n info: ['toast-info', ''],\r\n success: ['toast-success', ''],\r\n warning: ['toast-warning', '']\r\n },\r\n maxOpened: 0,\r\n messageClass: 'toast-message',\r\n newestOnTop: true,\r\n onHidden: null,\r\n onShown: null,\r\n onTap: null,\r\n positionClass: 'toast-top-right',\r\n preventDuplicates: false,\r\n preventOpenDuplicates: false,\r\n progressBar: false,\r\n tapToDismiss: true,\r\n target: 'body',\r\n templates: {\r\n toast: 'directives/toast/toast.html',\r\n progressbar: 'directives/progressbar/progressbar.html'\r\n },\r\n timeOut: 5000,\r\n titleClass: 'toast-title',\r\n toastClass: 'toast'\r\n });\r\n}());\r\n\r\n(function() {\r\n 'use strict';\r\n\r\n angular.module('toastr')\r\n .directive('progressBar', progressBar);\r\n\r\n progressBar.$inject = ['toastrConfig'];\r\n\r\n function progressBar(toastrConfig) {\r\n return {\r\n require: '^toast',\r\n templateUrl: function() {\r\n return toastrConfig.templates.progressbar;\r\n },\r\n link: linkFunction\r\n };\r\n\r\n function linkFunction(scope, element, attrs, toastCtrl) {\r\n var intervalId, currentTimeOut, hideTime;\r\n\r\n toastCtrl.progressBar = scope;\r\n\r\n scope.start = function(duration) {\r\n if (intervalId) {\r\n clearInterval(intervalId);\r\n }\r\n\r\n currentTimeOut = parseFloat(duration);\r\n hideTime = new Date().getTime() + currentTimeOut;\r\n intervalId = setInterval(updateProgress, 10);\r\n };\r\n\r\n scope.stop = function() {\r\n if (intervalId) {\r\n clearInterval(intervalId);\r\n }\r\n };\r\n\r\n function updateProgress() {\r\n var percentage = ((hideTime - (new Date().getTime())) / currentTimeOut) * 100;\r\n element.css('width', percentage + '%');\r\n }\r\n\r\n scope.$on('$destroy', function() {\r\n // Failsafe stop\r\n clearInterval(intervalId);\r\n });\r\n }\r\n }\r\n}());\r\n\r\n(function() {\r\n 'use strict';\r\n\r\n angular.module('toastr')\r\n .controller('ToastController', ToastController);\r\n\r\n function ToastController() {\r\n this.progressBar = null;\r\n\r\n this.startProgressBar = function(duration) {\r\n if (this.progressBar) {\r\n this.progressBar.start(duration);\r\n }\r\n };\r\n\r\n this.stopProgressBar = function() {\r\n if (this.progressBar) {\r\n this.progressBar.stop();\r\n }\r\n };\r\n }\r\n}());\r\n\r\n(function() {\r\n 'use strict';\r\n\r\n angular.module('toastr')\r\n .directive('toast', toast);\r\n\r\n toast.$inject = ['$injector', '$interval', 'toastrConfig', 'toastr'];\r\n\r\n function toast($injector, $interval, toastrConfig, toastr) {\r\n return {\r\n templateUrl: function() {\r\n return toastrConfig.templates.toast;\r\n },\r\n controller: 'ToastController',\r\n link: toastLinkFunction\r\n };\r\n\r\n function toastLinkFunction(scope, element, attrs, toastCtrl) {\r\n var timeout;\r\n\r\n scope.toastClass = scope.options.toastClass;\r\n scope.titleClass = scope.options.titleClass;\r\n scope.messageClass = scope.options.messageClass;\r\n scope.progressBar = scope.options.progressBar;\r\n\r\n if (wantsCloseButton()) {\r\n var button = angular.element(scope.options.closeHtml),\r\n $compile = $injector.get('$compile');\r\n button.addClass('toast-close-button');\r\n button.attr('ng-click', 'close(true, $event)');\r\n $compile(button)(scope);\r\n element.children().prepend(button);\r\n }\r\n\r\n scope.init = function() {\r\n if (scope.options.timeOut) {\r\n timeout = createTimeout(scope.options.timeOut);\r\n }\r\n if (scope.options.onShown) {\r\n scope.options.onShown();\r\n }\r\n };\r\n\r\n element.on('mouseenter', function() {\r\n hideAndStopProgressBar();\r\n if (timeout) {\r\n $interval.cancel(timeout);\r\n }\r\n });\r\n\r\n scope.tapToast = function () {\r\n if (angular.isFunction(scope.options.onTap)) {\r\n scope.options.onTap();\r\n }\r\n if (scope.options.tapToDismiss) {\r\n scope.close(true);\r\n }\r\n };\r\n\r\n scope.close = function (wasClicked, $event) {\r\n if ($event && angular.isFunction($event.stopPropagation)) {\r\n $event.stopPropagation();\r\n }\r\n toastr.remove(scope.toastId, wasClicked);\r\n };\r\n\r\n scope.refreshTimer = function(newTime) {\r\n if (timeout) {\r\n $interval.cancel(timeout);\r\n timeout = createTimeout(newTime || scope.options.timeOut);\r\n }\r\n };\r\n\r\n element.on('mouseleave', function() {\r\n if (scope.options.timeOut === 0 && scope.options.extendedTimeOut === 0) { return; }\r\n scope.$apply(function() {\r\n scope.progressBar = scope.options.progressBar;\r\n });\r\n timeout = createTimeout(scope.options.extendedTimeOut);\r\n });\r\n\r\n function createTimeout(time) {\r\n toastCtrl.startProgressBar(time);\r\n return $interval(function() {\r\n toastCtrl.stopProgressBar();\r\n toastr.remove(scope.toastId);\r\n }, time, 1);\r\n }\r\n\r\n function hideAndStopProgressBar() {\r\n scope.progressBar = false;\r\n toastCtrl.stopProgressBar();\r\n }\r\n\r\n function wantsCloseButton() {\r\n return scope.options.closeHtml;\r\n }\r\n }\r\n }\r\n}());\r\n","/**\r\n * @license AngularJS v1.6.7\r\n * (c) 2010-2017 Google, Inc. http://angularjs.org\r\n * License: MIT\r\n */\r\n(function(window, angular) {'use strict';\r\n\r\n/**\r\n * @ngdoc module\r\n * @name ngCookies\r\n * @description\r\n *\r\n * The `ngCookies` module provides a convenient wrapper for reading and writing browser cookies.\r\n *\r\n * See {@link ngCookies.$cookies `$cookies`} for usage.\r\n */\r\n\r\n\r\nangular.module('ngCookies', ['ng']).\r\n info({ angularVersion: '1.6.7' }).\r\n /**\r\n * @ngdoc provider\r\n * @name $cookiesProvider\r\n * @description\r\n * Use `$cookiesProvider` to change the default behavior of the {@link ngCookies.$cookies $cookies} service.\r\n * */\r\n provider('$cookies', [/** @this */function $CookiesProvider() {\r\n /**\r\n * @ngdoc property\r\n * @name $cookiesProvider#defaults\r\n * @description\r\n *\r\n * Object containing default options to pass when setting cookies.\r\n *\r\n * The object may have following properties:\r\n *\r\n * - **path** - `{string}` - The cookie will be available only for this path and its\r\n * sub-paths. By default, this is the URL that appears in your `` tag.\r\n * - **domain** - `{string}` - The cookie will be available only for this domain and\r\n * its sub-domains. For security reasons the user agent will not accept the cookie\r\n * if the current domain is not a sub-domain of this domain or equal to it.\r\n * - **expires** - `{string|Date}` - String of the form \"Wdy, DD Mon YYYY HH:MM:SS GMT\"\r\n * or a Date object indicating the exact date/time this cookie will expire.\r\n * - **secure** - `{boolean}` - If `true`, then the cookie will only be available through a\r\n * secured connection.\r\n *\r\n * Note: By default, the address that appears in your `` tag will be used as the path.\r\n * This is important so that cookies will be visible for all routes when html5mode is enabled.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * angular.module('cookiesProviderExample', ['ngCookies'])\r\n * .config(['$cookiesProvider', function($cookiesProvider) {\r\n * // Setting default options\r\n * $cookiesProvider.defaults.domain = 'foo.com';\r\n * $cookiesProvider.defaults.secure = true;\r\n * }]);\r\n * ```\r\n **/\r\n var defaults = this.defaults = {};\r\n\r\n function calcOptions(options) {\r\n return options ? angular.extend({}, defaults, options) : defaults;\r\n }\r\n\r\n /**\r\n * @ngdoc service\r\n * @name $cookies\r\n *\r\n * @description\r\n * Provides read/write access to browser's cookies.\r\n *\r\n *
    \r\n * Up until Angular 1.3, `$cookies` exposed properties that represented the\r\n * current browser cookie values. In version 1.4, this behavior has changed, and\r\n * `$cookies` now provides a standard api of getters, setters etc.\r\n *
    \r\n *\r\n * Requires the {@link ngCookies `ngCookies`} module to be installed.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * angular.module('cookiesExample', ['ngCookies'])\r\n * .controller('ExampleController', ['$cookies', function($cookies) {\r\n * // Retrieving a cookie\r\n * var favoriteCookie = $cookies.get('myFavorite');\r\n * // Setting a cookie\r\n * $cookies.put('myFavorite', 'oatmeal');\r\n * }]);\r\n * ```\r\n */\r\n this.$get = ['$$cookieReader', '$$cookieWriter', function($$cookieReader, $$cookieWriter) {\r\n return {\r\n /**\r\n * @ngdoc method\r\n * @name $cookies#get\r\n *\r\n * @description\r\n * Returns the value of given cookie key\r\n *\r\n * @param {string} key Id to use for lookup.\r\n * @returns {string} Raw cookie value.\r\n */\r\n get: function(key) {\r\n return $$cookieReader()[key];\r\n },\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $cookies#getObject\r\n *\r\n * @description\r\n * Returns the deserialized value of given cookie key\r\n *\r\n * @param {string} key Id to use for lookup.\r\n * @returns {Object} Deserialized cookie value.\r\n */\r\n getObject: function(key) {\r\n var value = this.get(key);\r\n return value ? angular.fromJson(value) : value;\r\n },\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $cookies#getAll\r\n *\r\n * @description\r\n * Returns a key value object with all the cookies\r\n *\r\n * @returns {Object} All cookies\r\n */\r\n getAll: function() {\r\n return $$cookieReader();\r\n },\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $cookies#put\r\n *\r\n * @description\r\n * Sets a value for given cookie key\r\n *\r\n * @param {string} key Id for the `value`.\r\n * @param {string} value Raw value to be stored.\r\n * @param {Object=} options Options object.\r\n * See {@link ngCookies.$cookiesProvider#defaults $cookiesProvider.defaults}\r\n */\r\n put: function(key, value, options) {\r\n $$cookieWriter(key, value, calcOptions(options));\r\n },\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $cookies#putObject\r\n *\r\n * @description\r\n * Serializes and sets a value for given cookie key\r\n *\r\n * @param {string} key Id for the `value`.\r\n * @param {Object} value Value to be stored.\r\n * @param {Object=} options Options object.\r\n * See {@link ngCookies.$cookiesProvider#defaults $cookiesProvider.defaults}\r\n */\r\n putObject: function(key, value, options) {\r\n this.put(key, angular.toJson(value), options);\r\n },\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $cookies#remove\r\n *\r\n * @description\r\n * Remove given cookie\r\n *\r\n * @param {string} key Id of the key-value pair to delete.\r\n * @param {Object=} options Options object.\r\n * See {@link ngCookies.$cookiesProvider#defaults $cookiesProvider.defaults}\r\n */\r\n remove: function(key, options) {\r\n $$cookieWriter(key, undefined, calcOptions(options));\r\n }\r\n };\r\n }];\r\n }]);\r\n\r\nangular.module('ngCookies').\r\n/**\r\n * @ngdoc service\r\n * @name $cookieStore\r\n * @deprecated\r\n * sinceVersion=\"v1.4.0\"\r\n * Please use the {@link ngCookies.$cookies `$cookies`} service instead.\r\n *\r\n * @requires $cookies\r\n *\r\n * @description\r\n * Provides a key-value (string-object) storage, that is backed by session cookies.\r\n * Objects put or retrieved from this storage are automatically serialized or\r\n * deserialized by angular's toJson/fromJson.\r\n *\r\n * Requires the {@link ngCookies `ngCookies`} module to be installed.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * angular.module('cookieStoreExample', ['ngCookies'])\r\n * .controller('ExampleController', ['$cookieStore', function($cookieStore) {\r\n * // Put cookie\r\n * $cookieStore.put('myFavorite','oatmeal');\r\n * // Get cookie\r\n * var favoriteCookie = $cookieStore.get('myFavorite');\r\n * // Removing a cookie\r\n * $cookieStore.remove('myFavorite');\r\n * }]);\r\n * ```\r\n */\r\n factory('$cookieStore', ['$cookies', function($cookies) {\r\n\r\n return {\r\n /**\r\n * @ngdoc method\r\n * @name $cookieStore#get\r\n *\r\n * @description\r\n * Returns the value of given cookie key\r\n *\r\n * @param {string} key Id to use for lookup.\r\n * @returns {Object} Deserialized cookie value, undefined if the cookie does not exist.\r\n */\r\n get: function(key) {\r\n return $cookies.getObject(key);\r\n },\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $cookieStore#put\r\n *\r\n * @description\r\n * Sets a value for given cookie key\r\n *\r\n * @param {string} key Id for the `value`.\r\n * @param {Object} value Value to be stored.\r\n */\r\n put: function(key, value) {\r\n $cookies.putObject(key, value);\r\n },\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $cookieStore#remove\r\n *\r\n * @description\r\n * Remove given cookie\r\n *\r\n * @param {string} key Id of the key-value pair to delete.\r\n */\r\n remove: function(key) {\r\n $cookies.remove(key);\r\n }\r\n };\r\n\r\n }]);\r\n\r\n/**\r\n * @name $$cookieWriter\r\n * @requires $document\r\n *\r\n * @description\r\n * This is a private service for writing cookies\r\n *\r\n * @param {string} name Cookie name\r\n * @param {string=} value Cookie value (if undefined, cookie will be deleted)\r\n * @param {Object=} options Object with options that need to be stored for the cookie.\r\n */\r\nfunction $$CookieWriter($document, $log, $browser) {\r\n var cookiePath = $browser.baseHref();\r\n var rawDocument = $document[0];\r\n\r\n function buildCookieString(name, value, options) {\r\n var path, expires;\r\n options = options || {};\r\n expires = options.expires;\r\n path = angular.isDefined(options.path) ? options.path : cookiePath;\r\n if (angular.isUndefined(value)) {\r\n expires = 'Thu, 01 Jan 1970 00:00:00 GMT';\r\n value = '';\r\n }\r\n if (angular.isString(expires)) {\r\n expires = new Date(expires);\r\n }\r\n\r\n var str = encodeURIComponent(name) + '=' + encodeURIComponent(value);\r\n str += path ? ';path=' + path : '';\r\n str += options.domain ? ';domain=' + options.domain : '';\r\n str += expires ? ';expires=' + expires.toUTCString() : '';\r\n str += options.secure ? ';secure' : '';\r\n\r\n // per http://www.ietf.org/rfc/rfc2109.txt browser must allow at minimum:\r\n // - 300 cookies\r\n // - 20 cookies per unique domain\r\n // - 4096 bytes per cookie\r\n var cookieLength = str.length + 1;\r\n if (cookieLength > 4096) {\r\n $log.warn('Cookie \\'' + name +\r\n '\\' possibly not set or overflowed because it was too large (' +\r\n cookieLength + ' > 4096 bytes)!');\r\n }\r\n\r\n return str;\r\n }\r\n\r\n return function(name, value, options) {\r\n rawDocument.cookie = buildCookieString(name, value, options);\r\n };\r\n}\r\n\r\n$$CookieWriter.$inject = ['$document', '$log', '$browser'];\r\n\r\nangular.module('ngCookies').provider('$$cookieWriter', /** @this */ function $$CookieWriterProvider() {\r\n this.$get = $$CookieWriter;\r\n});\r\n\r\n\r\n})(window, window.angular);\r\n","'use strict';\r\nangular.module(\"ngLocale\", [], [\"$provide\", function($provide) {\r\nvar PLURAL_CATEGORY = {ZERO: \"zero\", ONE: \"one\", TWO: \"two\", FEW: \"few\", MANY: \"many\", OTHER: \"other\"};\r\n$provide.value(\"$locale\", {\r\n \"DATETIME_FORMATS\": {\r\n \"AMPMS\": [\r\n \"AM\",\r\n \"PM\"\r\n ],\r\n \"DAY\": [\r\n \"dimanche\",\r\n \"lundi\",\r\n \"mardi\",\r\n \"mercredi\",\r\n \"jeudi\",\r\n \"vendredi\",\r\n \"samedi\"\r\n ],\r\n \"ERANAMES\": [\r\n \"avant J\\u00e9sus-Christ\",\r\n \"apr\\u00e8s J\\u00e9sus-Christ\"\r\n ],\r\n \"ERAS\": [\r\n \"av. J.-C.\",\r\n \"ap. J.-C.\"\r\n ],\r\n \"FIRSTDAYOFWEEK\": 0,\r\n \"MONTH\": [\r\n \"janvier\",\r\n \"f\\u00e9vrier\",\r\n \"mars\",\r\n \"avril\",\r\n \"mai\",\r\n \"juin\",\r\n \"juillet\",\r\n \"ao\\u00fbt\",\r\n \"septembre\",\r\n \"octobre\",\r\n \"novembre\",\r\n \"d\\u00e9cembre\"\r\n ],\r\n \"SHORTDAY\": [\r\n \"dim.\",\r\n \"lun.\",\r\n \"mar.\",\r\n \"mer.\",\r\n \"jeu.\",\r\n \"ven.\",\r\n \"sam.\"\r\n ],\r\n \"SHORTMONTH\": [\r\n \"janv.\",\r\n \"f\\u00e9vr.\",\r\n \"mars\",\r\n \"avr.\",\r\n \"mai\",\r\n \"juin\",\r\n \"juil.\",\r\n \"ao\\u00fbt\",\r\n \"sept.\",\r\n \"oct.\",\r\n \"nov.\",\r\n \"d\\u00e9c.\"\r\n ],\r\n \"STANDALONEMONTH\": [\r\n \"janvier\",\r\n \"f\\u00e9vrier\",\r\n \"mars\",\r\n \"avril\",\r\n \"mai\",\r\n \"juin\",\r\n \"juillet\",\r\n \"ao\\u00fbt\",\r\n \"septembre\",\r\n \"octobre\",\r\n \"novembre\",\r\n \"d\\u00e9cembre\"\r\n ],\r\n \"WEEKENDRANGE\": [\r\n 5,\r\n 6\r\n ],\r\n \"fullDate\": \"EEEE d MMMM y\",\r\n \"longDate\": \"d MMMM y\",\r\n \"medium\": \"d MMM y HH:mm:ss\",\r\n \"mediumDate\": \"d MMM y\",\r\n \"mediumTime\": \"HH:mm:ss\",\r\n \"short\": \"dd/MM/y HH:mm\",\r\n \"shortDate\": \"dd/MM/y\",\r\n \"shortTime\": \"HH:mm\"\r\n },\r\n \"NUMBER_FORMATS\": {\r\n \"CURRENCY_SYM\": \"\\u20ac\",\r\n \"DECIMAL_SEP\": \",\",\r\n \"GROUP_SEP\": \"\\u00a0\",\r\n \"PATTERNS\": [\r\n {\r\n \"gSize\": 3,\r\n \"lgSize\": 3,\r\n \"maxFrac\": 3,\r\n \"minFrac\": 0,\r\n \"minInt\": 1,\r\n \"negPre\": \"-\",\r\n \"negSuf\": \"\",\r\n \"posPre\": \"\",\r\n \"posSuf\": \"\"\r\n },\r\n {\r\n \"gSize\": 3,\r\n \"lgSize\": 3,\r\n \"maxFrac\": 2,\r\n \"minFrac\": 2,\r\n \"minInt\": 1,\r\n \"negPre\": \"-\",\r\n \"negSuf\": \"\\u00a0\\u00a4\",\r\n \"posPre\": \"\",\r\n \"posSuf\": \"\\u00a0\\u00a4\"\r\n }\r\n ]\r\n },\r\n \"id\": \"fr\",\r\n \"localeID\": \"fr\",\r\n \"pluralCat\": function(n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}\r\n});\r\n}]);\r\n","/**\r\n * @license AngularJS v1.6.7\r\n * (c) 2010-2017 Google, Inc. http://angularjs.org\r\n * License: MIT\r\n */\r\n(function(window, angular) {'use strict';\r\n\r\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\r\n * Any commits to this file should be reviewed with security in mind. *\r\n * Changes to this file can potentially create security vulnerabilities. *\r\n * An approval from 2 Core members with history of modifying *\r\n * this file is required. *\r\n * *\r\n * Does the change somehow allow for arbitrary javascript to be executed? *\r\n * Or allows for someone to change the prototype of built-in objects? *\r\n * Or gives undesired access to variables likes document or window? *\r\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\r\n\r\nvar $sanitizeMinErr = angular.$$minErr('$sanitize');\r\nvar bind;\r\nvar extend;\r\nvar forEach;\r\nvar isDefined;\r\nvar lowercase;\r\nvar noop;\r\nvar nodeContains;\r\nvar htmlParser;\r\nvar htmlSanitizeWriter;\r\n\r\n/**\r\n * @ngdoc module\r\n * @name ngSanitize\r\n * @description\r\n *\r\n * The `ngSanitize` module provides functionality to sanitize HTML.\r\n *\r\n * See {@link ngSanitize.$sanitize `$sanitize`} for usage.\r\n */\r\n\r\n/**\r\n * @ngdoc service\r\n * @name $sanitize\r\n * @kind function\r\n *\r\n * @description\r\n * Sanitizes an html string by stripping all potentially dangerous tokens.\r\n *\r\n * The input is sanitized by parsing the HTML into tokens. All safe tokens (from a whitelist) are\r\n * then serialized back to properly escaped html string. This means that no unsafe input can make\r\n * it into the returned string.\r\n *\r\n * The whitelist for URL sanitization of attribute values is configured using the functions\r\n * `aHrefSanitizationWhitelist` and `imgSrcSanitizationWhitelist` of {@link ng.$compileProvider\r\n * `$compileProvider`}.\r\n *\r\n * The input may also contain SVG markup if this is enabled via {@link $sanitizeProvider}.\r\n *\r\n * @param {string} html HTML input.\r\n * @returns {string} Sanitized HTML.\r\n *\r\n * @example\r\n \r\n \r\n \r\n
    \r\n Snippet: \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    DirectiveHowSourceRendered
    ng-bind-htmlAutomatically uses $sanitize
    <div ng-bind-html=\"snippet\">
    </div>
    ng-bind-htmlBypass $sanitize by explicitly trusting the dangerous value\r\n
    <div ng-bind-html=\"deliberatelyTrustDangerousSnippet()\">\r\n</div>
    \r\n
    ng-bindAutomatically escapes
    <div ng-bind=\"snippet\">
    </div>
    \r\n
    \r\n
    \r\n \r\n it('should sanitize the html snippet by default', function() {\r\n expect(element(by.css('#bind-html-with-sanitize div')).getAttribute('innerHTML')).\r\n toBe('

    an html\\nclick here\\nsnippet

    ');\r\n });\r\n\r\n it('should inline raw snippet if bound to a trusted value', function() {\r\n expect(element(by.css('#bind-html-with-trust div')).getAttribute('innerHTML')).\r\n toBe(\"

    an html\\n\" +\r\n \"click here\\n\" +\r\n \"snippet

    \");\r\n });\r\n\r\n it('should escape snippet without any filter', function() {\r\n expect(element(by.css('#bind-default div')).getAttribute('innerHTML')).\r\n toBe(\"<p style=\\\"color:blue\\\">an html\\n\" +\r\n \"<em onmouseover=\\\"this.textContent='PWN3D!'\\\">click here</em>\\n\" +\r\n \"snippet</p>\");\r\n });\r\n\r\n it('should update', function() {\r\n element(by.model('snippet')).clear();\r\n element(by.model('snippet')).sendKeys('new text');\r\n expect(element(by.css('#bind-html-with-sanitize div')).getAttribute('innerHTML')).\r\n toBe('new text');\r\n expect(element(by.css('#bind-html-with-trust div')).getAttribute('innerHTML')).toBe(\r\n 'new text');\r\n expect(element(by.css('#bind-default div')).getAttribute('innerHTML')).toBe(\r\n \"new <b onclick=\\\"alert(1)\\\">text</b>\");\r\n });\r\n
    \r\n
    \r\n */\r\n\r\n\r\n/**\r\n * @ngdoc provider\r\n * @name $sanitizeProvider\r\n * @this\r\n *\r\n * @description\r\n * Creates and configures {@link $sanitize} instance.\r\n */\r\nfunction $SanitizeProvider() {\r\n var svgEnabled = false;\r\n\r\n this.$get = ['$$sanitizeUri', function($$sanitizeUri) {\r\n if (svgEnabled) {\r\n extend(validElements, svgElements);\r\n }\r\n return function(html) {\r\n var buf = [];\r\n htmlParser(html, htmlSanitizeWriter(buf, function(uri, isImage) {\r\n return !/^unsafe:/.test($$sanitizeUri(uri, isImage));\r\n }));\r\n return buf.join('');\r\n };\r\n }];\r\n\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $sanitizeProvider#enableSvg\r\n * @kind function\r\n *\r\n * @description\r\n * Enables a subset of svg to be supported by the sanitizer.\r\n *\r\n *
    \r\n *

    By enabling this setting without taking other precautions, you might expose your\r\n * application to click-hijacking attacks. In these attacks, sanitized svg elements could be positioned\r\n * outside of the containing element and be rendered over other elements on the page (e.g. a login\r\n * link). Such behavior can then result in phishing incidents.

    \r\n *\r\n *

    To protect against these, explicitly setup `overflow: hidden` css rule for all potential svg\r\n * tags within the sanitized content:

    \r\n *\r\n *
    \r\n *\r\n *
    \r\n   *   .rootOfTheIncludedContent svg {\r\n   *     overflow: hidden !important;\r\n   *   }\r\n   *   
    \r\n *
    \r\n *\r\n * @param {boolean=} flag Enable or disable SVG support in the sanitizer.\r\n * @returns {boolean|ng.$sanitizeProvider} Returns the currently configured value if called\r\n * without an argument or self for chaining otherwise.\r\n */\r\n this.enableSvg = function(enableSvg) {\r\n if (isDefined(enableSvg)) {\r\n svgEnabled = enableSvg;\r\n return this;\r\n } else {\r\n return svgEnabled;\r\n }\r\n };\r\n\r\n //////////////////////////////////////////////////////////////////////////////////////////////////\r\n // Private stuff\r\n //////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\n bind = angular.bind;\r\n extend = angular.extend;\r\n forEach = angular.forEach;\r\n isDefined = angular.isDefined;\r\n lowercase = angular.lowercase;\r\n noop = angular.noop;\r\n\r\n htmlParser = htmlParserImpl;\r\n htmlSanitizeWriter = htmlSanitizeWriterImpl;\r\n\r\n nodeContains = window.Node.prototype.contains || /** @this */ function(arg) {\r\n // eslint-disable-next-line no-bitwise\r\n return !!(this.compareDocumentPosition(arg) & 16);\r\n };\r\n\r\n // Regular Expressions for parsing tags and attributes\r\n var SURROGATE_PAIR_REGEXP = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g,\r\n // Match everything outside of normal chars and \" (quote character)\r\n NON_ALPHANUMERIC_REGEXP = /([^#-~ |!])/g;\r\n\r\n\r\n // Good source of info about elements and attributes\r\n // http://dev.w3.org/html5/spec/Overview.html#semantics\r\n // http://simon.html5.org/html-elements\r\n\r\n // Safe Void Elements - HTML5\r\n // http://dev.w3.org/html5/spec/Overview.html#void-elements\r\n var voidElements = toMap('area,br,col,hr,img,wbr');\r\n\r\n // Elements that you can, intentionally, leave open (and which close themselves)\r\n // http://dev.w3.org/html5/spec/Overview.html#optional-tags\r\n var optionalEndTagBlockElements = toMap('colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr'),\r\n optionalEndTagInlineElements = toMap('rp,rt'),\r\n optionalEndTagElements = extend({},\r\n optionalEndTagInlineElements,\r\n optionalEndTagBlockElements);\r\n\r\n // Safe Block Elements - HTML5\r\n var blockElements = extend({}, optionalEndTagBlockElements, toMap('address,article,' +\r\n 'aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,' +\r\n 'h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul'));\r\n\r\n // Inline Elements - HTML5\r\n var inlineElements = extend({}, optionalEndTagInlineElements, toMap('a,abbr,acronym,b,' +\r\n 'bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,' +\r\n 'samp,small,span,strike,strong,sub,sup,time,tt,u,var'));\r\n\r\n // SVG Elements\r\n // https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Elements\r\n // Note: the elements animate,animateColor,animateMotion,animateTransform,set are intentionally omitted.\r\n // They can potentially allow for arbitrary javascript to be executed. See #11290\r\n var svgElements = toMap('circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,' +\r\n 'hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,' +\r\n 'radialGradient,rect,stop,svg,switch,text,title,tspan');\r\n\r\n // Blocked Elements (will be stripped)\r\n var blockedElements = toMap('script,style');\r\n\r\n var validElements = extend({},\r\n voidElements,\r\n blockElements,\r\n inlineElements,\r\n optionalEndTagElements);\r\n\r\n //Attributes that have href and hence need to be sanitized\r\n var uriAttrs = toMap('background,cite,href,longdesc,src,xlink:href');\r\n\r\n var htmlAttrs = toMap('abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,' +\r\n 'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,' +\r\n 'ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,' +\r\n 'scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,' +\r\n 'valign,value,vspace,width');\r\n\r\n // SVG attributes (without \"id\" and \"name\" attributes)\r\n // https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Attributes\r\n var svgAttrs = toMap('accent-height,accumulate,additive,alphabetic,arabic-form,ascent,' +\r\n 'baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,' +\r\n 'cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,' +\r\n 'font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,' +\r\n 'height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,' +\r\n 'marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,' +\r\n 'max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,' +\r\n 'path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,' +\r\n 'requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,' +\r\n 'stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,' +\r\n 'stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,' +\r\n 'stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,' +\r\n 'underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,' +\r\n 'width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,' +\r\n 'xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan', true);\r\n\r\n var validAttrs = extend({},\r\n uriAttrs,\r\n svgAttrs,\r\n htmlAttrs);\r\n\r\n function toMap(str, lowercaseKeys) {\r\n var obj = {}, items = str.split(','), i;\r\n for (i = 0; i < items.length; i++) {\r\n obj[lowercaseKeys ? lowercase(items[i]) : items[i]] = true;\r\n }\r\n return obj;\r\n }\r\n\r\n /**\r\n * Create an inert document that contains the dirty HTML that needs sanitizing\r\n * Depending upon browser support we use one of three strategies for doing this.\r\n * Support: Safari 10.x -> XHR strategy\r\n * Support: Firefox -> DomParser strategy\r\n */\r\n var getInertBodyElement /* function(html: string): HTMLBodyElement */ = (function(window, document) {\r\n var inertDocument;\r\n if (document && document.implementation) {\r\n inertDocument = document.implementation.createHTMLDocument('inert');\r\n } else {\r\n throw $sanitizeMinErr('noinert', 'Can\\'t create an inert html document');\r\n }\r\n var inertBodyElement = (inertDocument.documentElement || inertDocument.getDocumentElement()).querySelector('body');\r\n\r\n // Check for the Safari 10.1 bug - which allows JS to run inside the SVG G element\r\n inertBodyElement.innerHTML = '';\r\n if (!inertBodyElement.querySelector('svg')) {\r\n return getInertBodyElement_XHR;\r\n } else {\r\n // Check for the Firefox bug - which prevents the inner img JS from being sanitized\r\n inertBodyElement.innerHTML = '

    ';\r\n if (inertBodyElement.querySelector('svg img')) {\r\n return getInertBodyElement_DOMParser;\r\n } else {\r\n return getInertBodyElement_InertDocument;\r\n }\r\n }\r\n\r\n function getInertBodyElement_XHR(html) {\r\n // We add this dummy element to ensure that the rest of the content is parsed as expected\r\n // e.g. leading whitespace is maintained and tags like `` do not get hoisted to the `` tag.\r\n html = '' + html;\r\n try {\r\n html = encodeURI(html);\r\n } catch (e) {\r\n return undefined;\r\n }\r\n var xhr = new window.XMLHttpRequest();\r\n xhr.responseType = 'document';\r\n xhr.open('GET', 'data:text/html;charset=utf-8,' + html, false);\r\n xhr.send(null);\r\n var body = xhr.response.body;\r\n body.firstChild.remove();\r\n return body;\r\n }\r\n\r\n function getInertBodyElement_DOMParser(html) {\r\n // We add this dummy element to ensure that the rest of the content is parsed as expected\r\n // e.g. leading whitespace is maintained and tags like `` do not get hoisted to the `` tag.\r\n html = '' + html;\r\n try {\r\n var body = new window.DOMParser().parseFromString(html, 'text/html').body;\r\n body.firstChild.remove();\r\n return body;\r\n } catch (e) {\r\n return undefined;\r\n }\r\n }\r\n\r\n function getInertBodyElement_InertDocument(html) {\r\n inertBodyElement.innerHTML = html;\r\n\r\n // Support: IE 9-11 only\r\n // strip custom-namespaced attributes on IE<=11\r\n if (document.documentMode) {\r\n stripCustomNsAttrs(inertBodyElement);\r\n }\r\n\r\n return inertBodyElement;\r\n }\r\n })(window, window.document);\r\n\r\n /**\r\n * @example\r\n * htmlParser(htmlString, {\r\n * start: function(tag, attrs) {},\r\n * end: function(tag) {},\r\n * chars: function(text) {},\r\n * comment: function(text) {}\r\n * });\r\n *\r\n * @param {string} html string\r\n * @param {object} handler\r\n */\r\n function htmlParserImpl(html, handler) {\r\n if (html === null || html === undefined) {\r\n html = '';\r\n } else if (typeof html !== 'string') {\r\n html = '' + html;\r\n }\r\n\r\n var inertBodyElement = getInertBodyElement(html);\r\n if (!inertBodyElement) return '';\r\n\r\n //mXSS protection\r\n var mXSSAttempts = 5;\r\n do {\r\n if (mXSSAttempts === 0) {\r\n throw $sanitizeMinErr('uinput', 'Failed to sanitize html because the input is unstable');\r\n }\r\n mXSSAttempts--;\r\n\r\n // trigger mXSS if it is going to happen by reading and writing the innerHTML\r\n html = inertBodyElement.innerHTML;\r\n inertBodyElement = getInertBodyElement(html);\r\n } while (html !== inertBodyElement.innerHTML);\r\n\r\n var node = inertBodyElement.firstChild;\r\n while (node) {\r\n switch (node.nodeType) {\r\n case 1: // ELEMENT_NODE\r\n handler.start(node.nodeName.toLowerCase(), attrToMap(node.attributes));\r\n break;\r\n case 3: // TEXT NODE\r\n handler.chars(node.textContent);\r\n break;\r\n }\r\n\r\n var nextNode;\r\n if (!(nextNode = node.firstChild)) {\r\n if (node.nodeType === 1) {\r\n handler.end(node.nodeName.toLowerCase());\r\n }\r\n nextNode = getNonDescendant('nextSibling', node);\r\n if (!nextNode) {\r\n while (nextNode == null) {\r\n node = getNonDescendant('parentNode', node);\r\n if (node === inertBodyElement) break;\r\n nextNode = getNonDescendant('nextSibling', node);\r\n if (node.nodeType === 1) {\r\n handler.end(node.nodeName.toLowerCase());\r\n }\r\n }\r\n }\r\n }\r\n node = nextNode;\r\n }\r\n\r\n while ((node = inertBodyElement.firstChild)) {\r\n inertBodyElement.removeChild(node);\r\n }\r\n }\r\n\r\n function attrToMap(attrs) {\r\n var map = {};\r\n for (var i = 0, ii = attrs.length; i < ii; i++) {\r\n var attr = attrs[i];\r\n map[attr.name] = attr.value;\r\n }\r\n return map;\r\n }\r\n\r\n\r\n /**\r\n * Escapes all potentially dangerous characters, so that the\r\n * resulting string can be safely inserted into attribute or\r\n * element text.\r\n * @param value\r\n * @returns {string} escaped text\r\n */\r\n function encodeEntities(value) {\r\n return value.\r\n replace(/&/g, '&').\r\n replace(SURROGATE_PAIR_REGEXP, function(value) {\r\n var hi = value.charCodeAt(0);\r\n var low = value.charCodeAt(1);\r\n return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';';\r\n }).\r\n replace(NON_ALPHANUMERIC_REGEXP, function(value) {\r\n return '&#' + value.charCodeAt(0) + ';';\r\n }).\r\n replace(//g, '>');\r\n }\r\n\r\n /**\r\n * create an HTML/XML writer which writes to buffer\r\n * @param {Array} buf use buf.join('') to get out sanitized html string\r\n * @returns {object} in the form of {\r\n * start: function(tag, attrs) {},\r\n * end: function(tag) {},\r\n * chars: function(text) {},\r\n * comment: function(text) {}\r\n * }\r\n */\r\n function htmlSanitizeWriterImpl(buf, uriValidator) {\r\n var ignoreCurrentElement = false;\r\n var out = bind(buf, buf.push);\r\n return {\r\n start: function(tag, attrs) {\r\n tag = lowercase(tag);\r\n if (!ignoreCurrentElement && blockedElements[tag]) {\r\n ignoreCurrentElement = tag;\r\n }\r\n if (!ignoreCurrentElement && validElements[tag] === true) {\r\n out('<');\r\n out(tag);\r\n forEach(attrs, function(value, key) {\r\n var lkey = lowercase(key);\r\n var isImage = (tag === 'img' && lkey === 'src') || (lkey === 'background');\r\n if (validAttrs[lkey] === true &&\r\n (uriAttrs[lkey] !== true || uriValidator(value, isImage))) {\r\n out(' ');\r\n out(key);\r\n out('=\"');\r\n out(encodeEntities(value));\r\n out('\"');\r\n }\r\n });\r\n out('>');\r\n }\r\n },\r\n end: function(tag) {\r\n tag = lowercase(tag);\r\n if (!ignoreCurrentElement && validElements[tag] === true && voidElements[tag] !== true) {\r\n out('');\r\n }\r\n // eslint-disable-next-line eqeqeq\r\n if (tag == ignoreCurrentElement) {\r\n ignoreCurrentElement = false;\r\n }\r\n },\r\n chars: function(chars) {\r\n if (!ignoreCurrentElement) {\r\n out(encodeEntities(chars));\r\n }\r\n }\r\n };\r\n }\r\n\r\n\r\n /**\r\n * When IE9-11 comes across an unknown namespaced attribute e.g. 'xlink:foo' it adds 'xmlns:ns1' attribute to declare\r\n * ns1 namespace and prefixes the attribute with 'ns1' (e.g. 'ns1:xlink:foo'). This is undesirable since we don't want\r\n * to allow any of these custom attributes. This method strips them all.\r\n *\r\n * @param node Root element to process\r\n */\r\n function stripCustomNsAttrs(node) {\r\n while (node) {\r\n if (node.nodeType === window.Node.ELEMENT_NODE) {\r\n var attrs = node.attributes;\r\n for (var i = 0, l = attrs.length; i < l; i++) {\r\n var attrNode = attrs[i];\r\n var attrName = attrNode.name.toLowerCase();\r\n if (attrName === 'xmlns:ns1' || attrName.lastIndexOf('ns1:', 0) === 0) {\r\n node.removeAttributeNode(attrNode);\r\n i--;\r\n l--;\r\n }\r\n }\r\n }\r\n\r\n var nextNode = node.firstChild;\r\n if (nextNode) {\r\n stripCustomNsAttrs(nextNode);\r\n }\r\n\r\n node = getNonDescendant('nextSibling', node);\r\n }\r\n }\r\n\r\n function getNonDescendant(propName, node) {\r\n // An element is clobbered if its `propName` property points to one of its descendants\r\n var nextNode = node[propName];\r\n if (nextNode && nodeContains.call(node, nextNode)) {\r\n throw $sanitizeMinErr('elclob', 'Failed to sanitize html because the element is clobbered: {0}', node.outerHTML || node.outerText);\r\n }\r\n return nextNode;\r\n }\r\n}\r\n\r\nfunction sanitizeText(chars) {\r\n var buf = [];\r\n var writer = htmlSanitizeWriter(buf, noop);\r\n writer.chars(chars);\r\n return buf.join('');\r\n}\r\n\r\n\r\n// define ngSanitize module and register $sanitize service\r\nangular.module('ngSanitize', [])\r\n .provider('$sanitize', $SanitizeProvider)\r\n .info({ angularVersion: '1.6.7' });\r\n\r\n/**\r\n * @ngdoc filter\r\n * @name linky\r\n * @kind function\r\n *\r\n * @description\r\n * Finds links in text input and turns them into html links. Supports `http/https/ftp/sftp/mailto` and\r\n * plain email address links.\r\n *\r\n * Requires the {@link ngSanitize `ngSanitize`} module to be installed.\r\n *\r\n * @param {string} text Input text.\r\n * @param {string} [target] Window (`_blank|_self|_parent|_top`) or named frame to open links in.\r\n * @param {object|function(url)} [attributes] Add custom attributes to the link element.\r\n *\r\n * Can be one of:\r\n *\r\n * - `object`: A map of attributes\r\n * - `function`: Takes the url as a parameter and returns a map of attributes\r\n *\r\n * If the map of attributes contains a value for `target`, it overrides the value of\r\n * the target parameter.\r\n *\r\n *\r\n * @returns {string} Html-linkified and {@link $sanitize sanitized} text.\r\n *\r\n * @usage\r\n \r\n *\r\n * @example\r\n \r\n \r\n

    \r\n Snippet: \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    FilterSourceRendered
    linky filter\r\n
    <div ng-bind-html=\"snippet | linky\">
    </div>
    \r\n
    \r\n
    \r\n
    linky target\r\n
    <div ng-bind-html=\"snippetWithSingleURL | linky:'_blank'\">
    </div>
    \r\n
    \r\n
    \r\n
    linky custom attributes\r\n
    <div ng-bind-html=\"snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}\">
    </div>
    \r\n
    \r\n
    \r\n
    no filter
    <div ng-bind=\"snippet\">
    </div>
    \r\n \r\n \r\n angular.module('linkyExample', ['ngSanitize'])\r\n .controller('ExampleController', ['$scope', function($scope) {\r\n $scope.snippet =\r\n 'Pretty text with some links:\\n' +\r\n 'http://angularjs.org/,\\n' +\r\n 'mailto:us@somewhere.org,\\n' +\r\n 'another@somewhere.org,\\n' +\r\n 'and one more: ftp://127.0.0.1/.';\r\n $scope.snippetWithSingleURL = 'http://angularjs.org/';\r\n }]);\r\n \r\n \r\n it('should linkify the snippet with urls', function() {\r\n expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).\r\n toBe('Pretty text with some links: http://angularjs.org/, us@somewhere.org, ' +\r\n 'another@somewhere.org, and one more: ftp://127.0.0.1/.');\r\n expect(element.all(by.css('#linky-filter a')).count()).toEqual(4);\r\n });\r\n\r\n it('should not linkify snippet without the linky filter', function() {\r\n expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()).\r\n toBe('Pretty text with some links: http://angularjs.org/, mailto:us@somewhere.org, ' +\r\n 'another@somewhere.org, and one more: ftp://127.0.0.1/.');\r\n expect(element.all(by.css('#escaped-html a')).count()).toEqual(0);\r\n });\r\n\r\n it('should update', function() {\r\n element(by.model('snippet')).clear();\r\n element(by.model('snippet')).sendKeys('new http://link.');\r\n expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).\r\n toBe('new http://link.');\r\n expect(element.all(by.css('#linky-filter a')).count()).toEqual(1);\r\n expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText())\r\n .toBe('new http://link.');\r\n });\r\n\r\n it('should work with the target property', function() {\r\n expect(element(by.id('linky-target')).\r\n element(by.binding(\"snippetWithSingleURL | linky:'_blank'\")).getText()).\r\n toBe('http://angularjs.org/');\r\n expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank');\r\n });\r\n\r\n it('should optionally add custom attributes', function() {\r\n expect(element(by.id('linky-custom-attributes')).\r\n element(by.binding(\"snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}\")).getText()).\r\n toBe('http://angularjs.org/');\r\n expect(element(by.css('#linky-custom-attributes a')).getAttribute('rel')).toEqual('nofollow');\r\n });\r\n \r\n \r\n */\r\nangular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) {\r\n var LINKY_URL_REGEXP =\r\n /((s?ftp|https?):\\/\\/|(www\\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\\S*[^\\s.;,(){}<>\"\\u201d\\u2019]/i,\r\n MAILTO_REGEXP = /^mailto:/i;\r\n\r\n var linkyMinErr = angular.$$minErr('linky');\r\n var isDefined = angular.isDefined;\r\n var isFunction = angular.isFunction;\r\n var isObject = angular.isObject;\r\n var isString = angular.isString;\r\n\r\n return function(text, target, attributes) {\r\n if (text == null || text === '') return text;\r\n if (!isString(text)) throw linkyMinErr('notstring', 'Expected string but received: {0}', text);\r\n\r\n var attributesFn =\r\n isFunction(attributes) ? attributes :\r\n isObject(attributes) ? function getAttributesObject() {return attributes;} :\r\n function getEmptyAttributesObject() {return {};};\r\n\r\n var match;\r\n var raw = text;\r\n var html = [];\r\n var url;\r\n var i;\r\n while ((match = raw.match(LINKY_URL_REGEXP))) {\r\n // We can not end in these as they are sometimes found at the end of the sentence\r\n url = match[0];\r\n // if we did not match ftp/http/www/mailto then assume mailto\r\n if (!match[2] && !match[4]) {\r\n url = (match[3] ? 'http://' : 'mailto:') + url;\r\n }\r\n i = match.index;\r\n addText(raw.substr(0, i));\r\n addLink(url, match[0].replace(MAILTO_REGEXP, ''));\r\n raw = raw.substring(i + match[0].length);\r\n }\r\n addText(raw);\r\n return $sanitize(html.join(''));\r\n\r\n function addText(text) {\r\n if (!text) {\r\n return;\r\n }\r\n html.push(sanitizeText(text));\r\n }\r\n\r\n function addLink(url, text) {\r\n var key, linkAttributes = attributesFn(url);\r\n html.push('');\r\n addText(text);\r\n html.push('');\r\n }\r\n };\r\n}]);\r\n\r\n\r\n})(window, window.angular);\r\n","/*\r\n * Bootstrap Validation\r\n * Version 1.0.7\r\n * Modified from .\r\n **/\r\n\r\n'use strict';\r\n\r\nangular.module('bootstrap.angular.validation', []);\r\n","'use strict';\r\n\r\nangular.module('bootstrap.angular.validation').provider('bsValidationConfig', function () {\r\n\r\n // Can be a string or list of any combination of \"blur\", \"submit\" & \"display\"\r\n var validateFieldsOn = 'blur';\r\n // Display the validation error message below the `input` field with class \"help-block\"\r\n var displayErrorsAs = 'simple';\r\n\r\n // Can be a string or list of any combination of filters; will be applied in order\r\n // For example: 'lowercase' or ['lowercase', 'reverse'] (So long as the filter(s) exists)\r\n var messageFilters = [];\r\n\r\n function shouldValidateOn(event) {\r\n if (angular.isString(validateFieldsOn)) {\r\n return validateFieldsOn === event;\r\n }\r\n\r\n return validateFieldsOn.indexOf(event) !== -1;\r\n }\r\n\r\n var _this = this;\r\n this.global = {};\r\n this.global.addSuccessClass = true;\r\n this.global.errorClass = 'has-error';\r\n this.global.successClass = 'has-success';\r\n this.global.errorMessagePrefix = '';\r\n this.global.tooltipPlacement = 'bottom-left';\r\n this.global.tooltipAppendToBody = false;\r\n this.global.suppressWarnings = false;\r\n\r\n this.global.messages = {};\r\n\r\n this.setMessages = function(data) {\r\n _this.global.messages = data;\r\n };\r\n\r\n this.global.setValidateFieldsOn = function (event) {\r\n if (!event) {\r\n throw 'Please provide an string or list of events to validate fields on';\r\n }\r\n\r\n if (!angular.isString(event) && !angular.isArray(event)) {\r\n throw 'Event should either be a string or a list';\r\n }\r\n\r\n validateFieldsOn = event;\r\n };\r\n\r\n this.global.setDisplayErrorsAs = function (type) {\r\n if (!type) {\r\n throw 'Please provide the way validation error should be displayed. In-built options are \"simple\" & \"tooltip\".';\r\n }\r\n\r\n displayErrorsAs = type;\r\n };\r\n\r\n this.global.useMessageFilters = function (filters) {\r\n if (!filters) {\r\n throw 'Please provide a string or list of filters to apply to messages';\r\n }\r\n\r\n if (!angular.isString(filters) && !angular.isArray(filters)) {\r\n throw 'Filters should either be a string or a list';\r\n }\r\n\r\n messageFilters = filters;\r\n\r\n if (!angular.isArray(messageFilters)) {\r\n messageFilters = [messageFilters];\r\n }\r\n };\r\n\r\n this.$get = [function () {\r\n return {\r\n messages: function (key) {\r\n return _this.global.messages[key];\r\n },\r\n errorClass: _this.global.errorClass,\r\n successClass: _this.global.successClass,\r\n suppressWarnings: _this.global.suppressWarnings,\r\n tooltipAppendToBody: _this.global.tooltipAppendToBody,\r\n\r\n getDisplayErrorsAs: function () {\r\n return displayErrorsAs;\r\n },\r\n\r\n getErrorMessagePrefix: function () {\r\n return _this.global.errorMessagePrefix || '';\r\n },\r\n\r\n getMessageFilters: function () {\r\n return messageFilters;\r\n },\r\n\r\n getTooltipPlacement: function () {\r\n return _this.global.tooltipPlacement;\r\n },\r\n\r\n shouldAddSuccessClass: function () {\r\n return _this.global.addSuccessClass;\r\n },\r\n\r\n shouldValidateOn: shouldValidateOn,\r\n\r\n setMessages: function (data) {\r\n return _this.setMessages(data);\r\n }\r\n };\r\n }];\r\n});\r\n","'use strict';\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name form\r\n * @description Using \"form\" element as directive so we don't require to put the \"bs-validation\" directive to every form\r\n * element.\r\n */\r\nangular.module('bootstrap.angular.validation').directive('form', [\r\n '$parse', 'BsValidationService', function ($parse, validationService) {\r\n return {\r\n restrict: 'E',\r\n require: 'form',\r\n priority: 1000, // Setting a higher priority so that this directive compiles first.\r\n compile: function ($formElement, $formAttributes) {\r\n if (validationService.isValidationDisabled($formElement)) {\r\n return;\r\n }\r\n\r\n // Disable HTML5 validation display\r\n $formElement.attr('novalidate', 'novalidate');\r\n validationService.addDirective($formElement);\r\n\r\n var ngSubmit = $formAttributes.ngSubmit;\r\n /*\r\n * Removing ngSubmit attribute if any since ngSubmit by default doesn't respects the validation errors\r\n * on the input fields.\r\n */\r\n delete $formAttributes.ngSubmit;\r\n\r\n var preLinkFunction = function ($scope, formElement, $attr, formController) {\r\n // Expose a method to manually show the validation state\r\n formController.$showValidation = function () {\r\n formController.$setSubmitted();\r\n // Tell form elements to show validation state\r\n $scope.$broadcast('onBsValidationStateChange', {showValidationState: true});\r\n };\r\n\r\n formController.$hideValidation = function () {\r\n formController.$setPristine();\r\n // Tell form elements to hide validation state\r\n $scope.$broadcast('onBsValidationStateChange', {showValidationState: false});\r\n };\r\n formController.$resetValidation = function () {\r\n $scope.$broadcast('onBsValidationReset');\r\n };\r\n\r\n\r\n var markPristineAfterSubmit = formElement[0].attributes.hasOwnProperty('bs-pristine-on-submit');\r\n\r\n formElement.on('submit', function (event) {\r\n // If any of the form element has not passed the validation\r\n if (formController.$invalid) {\r\n // Then focus the first invalid element\r\n formElement[0].querySelector('.ng-invalid[ng-model]').focus();\r\n return false;\r\n }\r\n\r\n // Parse the handler of ng-submit & execute it\r\n var submitHandler = $parse(ngSubmit);\r\n $scope.$apply(function () {\r\n submitHandler($scope, {$event: event});\r\n\r\n formController.$commitViewValue();\r\n formController.$setSubmitted();\r\n\r\n if (markPristineAfterSubmit) {\r\n formController.$hideValidation();\r\n }\r\n });\r\n\r\n if (markPristineAfterSubmit) {\r\n /**\r\n * Prevent other submit event listener registered via Angular so that we can mark the form with\r\n * the pristine state. Otherwise, that Angular's listener is getting called at the last and is again\r\n * setting form to the submitted.\r\n *\r\n * https://api.jquery.com/event.stopimmediatepropagation/\r\n */\r\n event.stopImmediatePropagation();\r\n event.preventDefault();\r\n }\r\n\r\n return true;\r\n });\r\n };\r\n\r\n return {\r\n pre: preLinkFunction\r\n };\r\n }\r\n };\r\n }]);\r\n","/* global angular */\r\n\r\n'use strict';\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name bsValidation\r\n * @requires BsValidationService\r\n */\r\nangular.module('bootstrap.angular.validation').directive('bsValidation', [\r\n 'BsValidationService', 'bsValidationConfig',\r\n function (validationService, bsValidationConfig) {\r\n return {\r\n restrict: 'A',\r\n require: ['?ngModel', '?^^form'],\r\n link: function ($scope, $element, $attr, controllers) {\r\n if (validationService.isValidationDisabled($element)) {\r\n return;\r\n }\r\n\r\n // Initialize controllers\r\n var ngModelController = controllers[0];\r\n var ngFormController = controllers[1];\r\n\r\n if (!ngModelController) {\r\n if (!bsValidationConfig.suppressWarnings) {\r\n console.warn('ng-model directive is required for the bs-validation directive to work.');\r\n }\r\n return;\r\n }\r\n\r\n var $formGroupElement = validationService.getFormGroupElement($element);\r\n if (!$formGroupElement) {\r\n if (!bsValidationConfig.suppressWarnings) {\r\n console.warn('No parent form group element found for input element');\r\n }\r\n return;\r\n }\r\n\r\n var displayValidationState = false;\r\n var shouldValidateOnBlur = validationService.shouldValidateOnBlur($element);\r\n var shouldValidateOnDisplay = validationService.shouldValidateOnDisplay($element);\r\n var shouldValidateOnSubmit = validationService.shouldValidateOnSubmit($element);\r\n\r\n var displayErrorAs = validationService.displayErrorPreference($element, $attr);\r\n var validationMessageService = validationService.getValidationMessageService(displayErrorAs);\r\n\r\n // Register generic custom validators if added to element\r\n angular.forEach(validationService.getValidators(), function (validator) {\r\n var key = validator.name;\r\n var attrValue = $element.attr(key);\r\n if ($attr[key] || (angular.isDefined(attrValue) && attrValue !== false)) {\r\n validationService.addValidator($scope, $element, $attr, ngModelController, validator);\r\n }\r\n });\r\n\r\n function addErrorClass() {\r\n validationService.addErrorClass($formGroupElement);\r\n }\r\n\r\n function removeSuccessClass() {\r\n validationService.removeSuccessClass($formGroupElement);\r\n }\r\n\r\n function displayError() {\r\n addErrorClass();\r\n validationMessageService.showErrorMessage($element, $attr, ngModelController, $formGroupElement);\r\n\r\n if($element.hasClass('show-and-hide')){ \r\n setTimeout(function () {\r\n $element.blur();\r\n hideSuccess();\r\n hideError();\r\n ngModelController.$setUntouched();\r\n ngModelController.$setPristine();\r\n watchBlur();\r\n },3000); \r\n }\r\n }\r\n\r\n function hideError() {\r\n validationMessageService.hideErrorMessage($element, $formGroupElement);\r\n }\r\n\r\n function addSuccessClass() {\r\n if (ngModelController.$$attr.required) {\r\n validationService.addSuccessClass($formGroupElement);\r\n }\r\n return hideError();\r\n }\r\n\r\n function displaySuccess() {\r\n addSuccessClass();\r\n }\r\n\r\n function hideSuccess() {\r\n removeSuccessClass();\r\n }\r\n\r\n function displayOrHideValidationState() {\r\n if (!ngModelController.$$attr.required && !ngModelController.$$attr.pattern) return;\r\n\r\n validationService.toggleErrorKeyClasses($formGroupElement, ngModelController.$error);\r\n\r\n if (!displayValidationState) {\r\n hideSuccess();\r\n return hideError();\r\n }\r\n\r\n if (ngModelController.$valid) {\r\n return displaySuccess();\r\n }\r\n if (ngModelController.$invalid) {\r\n return displayError();\r\n }\r\n }\r\n\r\n function showValidation() {\r\n displayValidationState = true;\r\n displayOrHideValidationState();\r\n }\r\n\r\n function hideValidation() {\r\n displayValidationState = false;\r\n displayOrHideValidationState();\r\n }\r\n\r\n function watchBlur() {\r\n var dewatcher = $scope.$watch(function () {\r\n return ngModelController.$touched;\r\n }, function (lostFocus) {\r\n if (lostFocus) {\r\n displayValidationState = true;\r\n displayOrHideValidationState();\r\n dewatcher();\r\n }\r\n });\r\n }\r\n\r\n if (shouldValidateOnBlur) {\r\n watchBlur();\r\n }\r\n\r\n if (shouldValidateOnSubmit && ngFormController) {\r\n // register watchers for submission touch and valid\r\n $scope.$watch(function () {\r\n return ngFormController.$submitted;\r\n }, function (submitted) {\r\n displayValidationState = submitted;\r\n displayOrHideValidationState();\r\n });\r\n }\r\n\r\n if (shouldValidateOnDisplay) {\r\n showValidation();\r\n }\r\n\r\n // TODO Find alternative for this watch\r\n /*$scope.$watch(function () {\r\n return ngModelController.$error;\r\n }, displayOrHideValidationState, true);*/\r\n\r\n $scope.$watch(function () {\r\n return ngModelController.$valid;\r\n }, displayOrHideValidationState, true);\r\n\r\n $scope.$watch(function () {\r\n return ngModelController.$$attr.required;\r\n }, function () {\r\n hideSuccess();\r\n hideError();\r\n displayOrHideValidationState();\r\n }, true);\r\n\r\n $scope.$on('onBsValidationStateChange', function (event, data) {\r\n displayValidationState = data.showValidationState;\r\n displayOrHideValidationState();\r\n });\r\n\r\n $scope.$on('onBsValidationReset', function (event) {\r\n $element.blur();\r\n hideSuccess();\r\n hideError();\r\n ngModelController.$setUntouched();\r\n ngModelController.$setPristine();\r\n watchBlur();\r\n });\r\n\r\n\r\n $scope.$on('$destroy', function () {\r\n validationMessageService.destroyMessage($element);\r\n });\r\n\r\n ngModelController.$showValidation = showValidation;\r\n ngModelController.$hideValidation = hideValidation;\r\n }\r\n };\r\n }\r\n]);\r\n","'use strict';\r\n\r\nangular.module('bootstrap.angular.validation').factory('simpleMessageService', ['BsValidationService', function (validationService) {\r\n\r\n var errorElementClass = '.bs-invalid-msg';\r\n\r\n function getErrorContainer($element, $formGroupElement) {\r\n var $errorContainer;\r\n\r\n // If input element has \"id\" attribute\r\n if ($element.attr('id')) {\r\n // Then first try to find the error container with the same id prefixed with \"bs-error-\"\r\n $errorContainer = $formGroupElement.find('#bs-error-' + $element.attr('id'));\r\n if ($errorContainer && $errorContainer.length) {\r\n return $errorContainer;\r\n }\r\n }\r\n\r\n $errorContainer = $formGroupElement.find(errorElementClass);\r\n if ($errorContainer && $errorContainer.length) {\r\n return $errorContainer;\r\n }\r\n\r\n var insertAfter;\r\n\r\n // Check if the container have any Bootstrap input group then append the error after it\r\n var groupElement = $formGroupElement.find('.input-group');\r\n if (groupElement.length > 0) {\r\n insertAfter = groupElement;\r\n } else {\r\n insertAfter = $element;\r\n }\r\n\r\n var errorContainerHTML = '
    ');\r\n}]);\r\n","'use strict';\r\n\r\n/**\r\n * @ngcode service\r\n * @name BsValidationService\r\n * @description Core service of this module to provide various default validations.\r\n */\r\nangular.module('bootstrap.angular.validation').factory('BsValidationService', ['$interpolate', 'bsValidationConfig',\r\n '$injector', '$filter',\r\n function ($interpolate, validationConfig, $injector, $filter) {\r\n\r\n var displayErrorAsAttrName = 'bsDisplayErrorAs';\r\n var customFormGroup = '[bs-form-group]';\r\n var formGroupClass = '.form-group';\r\n\r\n var _genericValidators = [{\r\n name: 'digits',\r\n validateFn: function (value) {\r\n return (/^\\d+$/).test(value);\r\n }\r\n }, {\r\n name: 'equalto',\r\n validateFn: function (value, $scope, attr) {\r\n return value + '' === $scope.$eval(attr.equalto) + '';\r\n }\r\n }, {\r\n name: 'number',\r\n validateFn: function (value) {\r\n return (/^-?(?:\\d+|\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/).test(value);\r\n }\r\n }, {\r\n name: 'min',\r\n validateFn: function (value, $scope, attr) {\r\n return parseFloat(value) >= parseFloat(attr.min);\r\n }\r\n }, {\r\n name: 'max',\r\n validateFn: function (value, $scope, attr) {\r\n return parseFloat(value) <= parseFloat(attr.max);\r\n }\r\n }, {\r\n name: 'length',\r\n validateFn: function (value, $scope, attr) {\r\n return value.length === parseInt(attr.length);\r\n }\r\n }, {\r\n name: 'strictemail',\r\n validateFn: function (value) {\r\n return new RegExp(/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{1,63}$/).test(value);\r\n }\r\n }];\r\n\r\n function getTrigger($element, triggerEvent) {\r\n var attributeName = 'bs-trigger';\r\n if ($element.attr(attributeName)) {\r\n return $element.attr(attributeName) === triggerEvent;\r\n }\r\n\r\n var parentForm = $element.parents('form');\r\n if (parentForm && parentForm.attr(attributeName)) {\r\n return parentForm.attr(attributeName) === triggerEvent;\r\n }\r\n\r\n // Use the global config\r\n return validationConfig.shouldValidateOn(triggerEvent);\r\n }\r\n\r\n function removeClassByPrefix(element, prefix) {\r\n var regx = new RegExp('\\\\b' + prefix + '.*\\\\b', 'g');\r\n element[0].className = element[0].className.replace(regx, '').replace(/\\s\\s+/g, ' ');\r\n return element;\r\n }\r\n\r\n var selectors = [];\r\n var elements = ['input', 'select', 'textarea'];\r\n\r\n angular.forEach(elements, function (element) {\r\n selectors.push(element + '[ng-model]');\r\n });\r\n\r\n var selector = selectors.join(',');\r\n var meta = ['matchName'];\r\n\r\n return {\r\n getValidators: function () {\r\n return _genericValidators;\r\n },\r\n\r\n getMetaInformation: function ($element) {\r\n var metaInformation = {};\r\n\r\n angular.forEach(meta, function (key) {\r\n metaInformation[key] = $element.attr(key) || $element.attr(key.camelCaseToDash());\r\n });\r\n\r\n return metaInformation;\r\n },\r\n\r\n addDirective: function ($element) {\r\n var validateableElements = $element.find(selector);\r\n validateableElements.attr('bs-validation', '');\r\n return validateableElements;\r\n },\r\n\r\n addErrorClass: function ($formGroupElement) {\r\n this.removeSuccessClass($formGroupElement);\r\n $formGroupElement.addClass(validationConfig.errorClass);\r\n },\r\n\r\n addSuccessClass: function ($formGroupElement) {\r\n this.removeErrorClass($formGroupElement);\r\n\r\n if (validationConfig.shouldAddSuccessClass()) {\r\n $formGroupElement.addClass(validationConfig.successClass);\r\n }\r\n },\r\n\r\n addValidator: function ($scope, $element, $attr, ngModelController, validator) {\r\n ngModelController.$validators[validator.name] = function (modelValue, viewValue) {\r\n var value = modelValue || viewValue;\r\n if (ngModelController.$isEmpty(value)) {\r\n return true;\r\n }\r\n\r\n // See https://github.com/sagrawal14/angular-extras/blob/v0.1.3/src/extras/array.js#L91 for \"find\" function\r\n return validator.validateFn(value, $scope, $attr);\r\n };\r\n },\r\n\r\n /**\r\n * Add a custom validator to the list of generic validators.\r\n * @param genericValidationObject for example, to a add a generic validator to accept either \"foo\" or \"bar\":\r\n * {\r\n * name: 'foobar',\r\n * validateFn: function(value, $scope, attr) {\r\n * return value === 'foo' || value === 'bar';\r\n * }\r\n * }\r\n */\r\n addGenericValidator: function (genericValidationObject) {\r\n _genericValidators.push(genericValidationObject);\r\n },\r\n\r\n displayErrorPreference: function ($element, $attr) {\r\n var attrName = displayErrorAsAttrName;\r\n if ($attr[attrName]) {\r\n return $attr[attrName];\r\n } else {\r\n var $parentForm = $element.parents('form');\r\n\r\n // .attr() method not accepting camelCase version of the attribute name. Converting it to dashed-case\r\n attrName = attrName.camelCaseToDash();\r\n\r\n if ($parentForm && $parentForm.attr(attrName)) {\r\n return $parentForm.attr(attrName);\r\n }\r\n }\r\n\r\n // Use the global preference\r\n return validationConfig.getDisplayErrorsAs();\r\n },\r\n\r\n getErrorMessage: function ($element, $attr, ngModelController) {\r\n var firstErrorKey = Object.keys(ngModelController.$error)[0];\r\n return validationConfig.getErrorMessagePrefix() + this.resolveMessage($element, $attr, firstErrorKey);\r\n },\r\n\r\n getFormGroupElement: function ($element) {\r\n // First search for an attribute with 'bs-form-group'\r\n var formGroupElement = $element.parents(customFormGroup);\r\n\r\n if (!formGroupElement || formGroupElement.length === 0) {\r\n // Then search for parent element with class form-group\r\n formGroupElement = $element.parents(formGroupClass);\r\n\r\n if (!formGroupElement || formGroupElement.length === 0) {\r\n return null;\r\n }\r\n }\r\n\r\n return formGroupElement;\r\n },\r\n\r\n getValidationMessageService: function (displayType) {\r\n var validationMessageService;\r\n\r\n try {\r\n validationMessageService = $injector.get(displayType + 'MessageService');\r\n } catch (e) {\r\n throw 'No message service found for type [' + displayType + '].';\r\n }\r\n\r\n if (displayType === 'tooltip' && !$injector.has('$uibPosition')) {\r\n throw '$uibPosition service required from the ui-bootstrap module in order to use the tooltip message.';\r\n }\r\n\r\n return validationMessageService;\r\n },\r\n\r\n isValidationDisabled: function ($element) {\r\n var attribute = 'bs-no-validation';\r\n if ($element[0].attributes.hasOwnProperty(attribute)) {\r\n return true;\r\n }\r\n\r\n var $parentForm = $element.parents('form');\r\n return $parentForm[0] && $parentForm[0].attributes.hasOwnProperty(attribute);\r\n },\r\n\r\n removeErrorClass: function ($formGroupElement) {\r\n $formGroupElement.removeClass(validationConfig.errorClass);\r\n },\r\n\r\n removeSuccessClass: function ($formGroupElement) {\r\n $formGroupElement.removeClass(validationConfig.successClass);\r\n },\r\n\r\n resolveMessage: function ($element, $attr, key) {\r\n var metaInformation = this.getMetaInformation($element);\r\n var messageFilters = $element.attr(key + '-notification-filter') || validationConfig.getMessageFilters();\r\n var message = $element.attr(key + '-notification') || validationConfig.messages(key);\r\n\r\n if (!message) {\r\n console.warn('No message found for the key [' + key + ']. Consider adding a global message or element' +\r\n ' specific message using attribute [' + key + '-notification=\"My custom message\"]');\r\n\r\n message = 'Please fix this field';\r\n }\r\n\r\n if (angular.isDefined(messageFilters)) {\r\n if (!angular.isArray(messageFilters)) {\r\n messageFilters = [messageFilters];\r\n }\r\n\r\n for (var i = 0; i < messageFilters.length; i++) {\r\n message = $filter(messageFilters[i])(message);\r\n }\r\n }\r\n\r\n var matchers = angular.extend({}, {\r\n validValue: $attr[key]\r\n }, metaInformation);\r\n return $interpolate(message)(matchers);\r\n },\r\n\r\n shouldValidateOnBlur: function ($element) {\r\n return getTrigger($element, 'blur');\r\n },\r\n\r\n shouldValidateOnDisplay: function ($element) {\r\n return getTrigger($element, 'display');\r\n },\r\n\r\n shouldValidateOnSubmit: function ($element) {\r\n return getTrigger($element, 'submit');\r\n },\r\n\r\n /**\r\n * Add or remove various classes on form-group element. For example, if an input has two errors \"required\" & \"min\"\r\n * then whenever the validation fails, form-group element will have classes like \"bs-has-error-required\" or\r\n * \"bs-has-error-min\".\r\n * @param $formGroupElement jQLite/jQuery form-group element\r\n * @param errors Errors object as returned by ngModelController.$error\r\n */\r\n toggleErrorKeyClasses: function ($formGroupElement, errors) {\r\n removeClassByPrefix($formGroupElement, 'bs-has-error-');\r\n\r\n angular.forEach(errors, function (value, key) {\r\n $formGroupElement.addClass('bs-has-error-' + key);\r\n });\r\n }\r\n\r\n };\r\n }\r\n]);","/* global document, window */\r\n\r\n'use strict';\r\n\r\nif (!String.prototype.camelCaseToDash) {\r\n String.prototype.camelCaseToDash = function () {\r\n return this.replace(/([A-Z])/g, function ($1) {\r\n return '-' + $1.toLowerCase();\r\n });\r\n };\r\n}\r\n","/*\r\n*\r\n* Version : 1.0.0\r\n* 04/09/2016 - 10h18\r\n*\r\n*! Octave Web7 !*/\r\n\r\n/*\r\n * angular-lazy-load\r\n *\r\n * Copyright(c) 2014 Paweł Wszoła \r\n * MIT Licensed\r\n * @author Paweł Wszoła (wszola.p@gmail.com)\r\n * https://github.com/Pentiado/angular-lazy-img\r\n */\r\n\r\nangular\r\n .module('module.lazy-img', [])\r\n\r\n /* @ngInject */\r\n .factory('LazyImgMagic', [\"$window\", \"$rootScope\", \"lazyImgConfig\", \"lazyImgHelpers\", function ($window, $rootScope, lazyImgConfig, lazyImgHelpers) {\r\n 'use strict';\r\n\r\n var winDimensions, $win, images, isListening, options;\r\n var checkImagesT, saveWinOffsetT, containers;\r\n\r\n images = [];\r\n isListening = false;\r\n options = lazyImgConfig.getOptions();\r\n $win = angular.element($window);\r\n winDimensions = lazyImgHelpers.getWinDimensions();\r\n saveWinOffsetT = lazyImgHelpers.throttle(function () {\r\n winDimensions = lazyImgHelpers.getWinDimensions();\r\n }, 60);\r\n containers = [options.container || $win];\r\n\r\n function checkImages() {\r\n for (var i = images.length - 1; i >= 0; i--) {\r\n var image = images[i];\r\n\r\n if (image) {\r\n var _isInView = !image.$elem.is(':visible') ? false : lazyImgHelpers.isElementInView(image.$elem[0], options.offset, winDimensions);\r\n if (_isInView) {\r\n loadImage(image);\r\n images.splice(i, 1);\r\n }\r\n }\r\n }\r\n if (images.length === 0) stopListening();\r\n }\r\n\r\n checkImagesT = lazyImgHelpers.throttle(checkImages, 30);\r\n\r\n function listen(param) {\r\n containers.forEach(function (container) {\r\n container[param]('scroll', checkImagesT);\r\n container[param]('touchmove', checkImagesT);\r\n });\r\n $win[param]('resize', checkImagesT);\r\n $win[param]('resize', saveWinOffsetT);\r\n }\r\n\r\n function startListening() {\r\n isListening = true;\r\n setTimeout(function () {\r\n checkImages();\r\n listen('on');\r\n }, 1);\r\n }\r\n\r\n function stopListening() {\r\n isListening = false;\r\n listen('off');\r\n }\r\n\r\n function removeImage(image) {\r\n var index = images.indexOf(image);\r\n if (index !== -1) {\r\n images.splice(index, 1);\r\n }\r\n }\r\n\r\n function loadImage(photo) {\r\n if (photo.loaded || photo.src === '') return;\r\n if (photo.addClassToParent) {\r\n photo.$elem.parent().removeClass(options.successClass);\r\n }\r\n var img = new Image();\r\n img.onerror = function () {\r\n if (options.errorClass) {\r\n photo.$elem.addClass(options.errorClass);\r\n }\r\n $rootScope.$emit('lazyImg:error', photo);\r\n options.onError(photo);\r\n };\r\n img.onload = function () {\r\n photo.loaded = true;\r\n setPhotoSrc(photo.$elem, photo.src);\r\n if (options.loadingClass) {\r\n photo.$elem.removeClass(options.loadingClass);\r\n }\r\n if (options.successClass) {\r\n photo.$elem.addClass(options.successClass);\r\n if (photo.addClassToParent) {\r\n photo.$elem.parent().addClass(options.successClass);\r\n }\r\n }\r\n if (typeof photo.spinner !== 'undefined') {\r\n stopSpinner(photo);\r\n }\r\n $rootScope.$emit('lazyImg:success', photo);\r\n options.onSuccess(photo);\r\n };\r\n if (options.loadingClass) {\r\n photo.$elem.addClass(options.loadingClass);\r\n }\r\n options.onLoading(photo);\r\n\r\n if (typeof photo.spinner !== 'undefined') {\r\n startSpinner(photo);\r\n }\r\n\r\n img.src = photo.src;\r\n }\r\n\r\n function startSpinner(photo) {\r\n var spinner = photo.spinner;\r\n $(spinner.el).removeClass('out');\r\n spinner.spin(photo.$elem.parent()[0]);\r\n setTimeout(function () {\r\n $(spinner.el).addClass('in');\r\n });\r\n }\r\n function stopSpinner(photo) {\r\n var spinner = photo.spinner;\r\n $(spinner.el).removeClass('in').addClass('out');\r\n setTimeout(function () {\r\n spinner.stop();\r\n photo.spinner = null;\r\n }, spinner.delay);\r\n }\r\n\r\n function setPhotoSrc($elem, src) {\r\n if ($elem[0].nodeName.toLowerCase() === 'img') {\r\n $elem[0].src = src;\r\n } else {\r\n $elem.css('background-image', 'url(\"' + src + '\")');\r\n }\r\n }\r\n\r\n // PHOTO\r\n function Photo($elem) {\r\n this.$elem = $elem;\r\n }\r\n\r\n Photo.prototype.setAddClassToParent = function () {\r\n this.addClassToParent = true;\r\n };\r\n\r\n Photo.prototype.setSpinner = function (spinner) {\r\n this.spinner = spinner;\r\n };\r\n\r\n Photo.prototype.setSource = function (source) {\r\n this.src = source;\r\n images.unshift(this);\r\n if (!isListening) { startListening(); }\r\n if (images.length !== 1) {\r\n setTimeout(function () {\r\n checkImages();\r\n }, 1);\r\n }\r\n };\r\n\r\n Photo.prototype.removeImage = function () {\r\n removeImage(this);\r\n if (images.length === 0) stopListening();\r\n };\r\n\r\n Photo.prototype.checkImages = function () {\r\n checkImages();\r\n };\r\n\r\n Photo.addContainer = function (container) {\r\n stopListening();\r\n containers.push(container);\r\n startListening();\r\n };\r\n\r\n Photo.removeContainer = function (container) {\r\n stopListening();\r\n containers.splice(containers.indexOf(container), 1);\r\n startListening();\r\n };\r\n\r\n return Photo;\r\n\r\n }])\r\n\r\n /* @ngInject */\r\n .provider('lazyImgConfig', function () {\r\n 'use strict';\r\n\r\n this.options = {\r\n offset: 100,\r\n errorClass: null,\r\n loadingClass: null,\r\n successClass: null,\r\n onError: function () {},\r\n onLoading: function () {},\r\n onSuccess: function () {}\r\n };\r\n\r\n this.$get = function () {\r\n var options = this.options;\r\n return {\r\n getOptions: function () {\r\n return options;\r\n }\r\n };\r\n };\r\n\r\n this.setOptions = function (options) {\r\n angular.extend(this.options, options);\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .factory('lazyImgHelpers', [\"$window\", function ($window) {\r\n 'use strict';\r\n\r\n function getWinDimensions() {\r\n return {\r\n height: $window.innerHeight,\r\n width: $window.innerWidth\r\n };\r\n }\r\n\r\n function isElementInView(elem, offset, winDimensions) {\r\n var rect = elem.getBoundingClientRect();\r\n var bottomline = winDimensions.height + offset;\r\n return (\r\n rect.left >= 0 && rect.right <= winDimensions.width + offset && (\r\n rect.top >= 0 && rect.top <= bottomline ||\r\n rect.bottom <= bottomline && rect.bottom >= 0 - offset\r\n )\r\n );\r\n }\r\n\r\n // http://remysharp.com/2010/07/21/throttling-function-calls/\r\n function throttle(fn, threshhold, scope) {\r\n var last, deferTimer;\r\n return function () {\r\n var context = scope || this;\r\n var now = +new Date(),\r\n args = arguments;\r\n if (last && now < last + threshhold) {\r\n clearTimeout(deferTimer);\r\n deferTimer = setTimeout(function () {\r\n last = now;\r\n fn.apply(context, args);\r\n }, threshhold);\r\n } else {\r\n last = now;\r\n fn.apply(context, args);\r\n }\r\n };\r\n }\r\n\r\n return {\r\n isElementInView: isElementInView,\r\n getWinDimensions: getWinDimensions,\r\n throttle: throttle\r\n };\r\n\r\n }])\r\n\r\n /* @ngInject */\r\n .directive('lazyImg', [\"$rootScope\", \"LazyImgMagic\", \"usSpinnerConfig\", function ($rootScope, LazyImgMagic, usSpinnerConfig) {\r\n 'use strict';\r\n\r\n function link(scope, element, attrs) {\r\n\r\n if (angular.isDefined(attrs.lazyIf) && attrs.lazyIf === 'false') {\r\n return;\r\n }\r\n\r\n var lazyImage = new LazyImgMagic(element);\r\n\r\n if (angular.isDefined(attrs.parentLoadedClass)) {\r\n lazyImage.setAddClassToParent();\r\n }\r\n\r\n var deregister = attrs.$observe('lazyImg', function (newSource) {\r\n if (newSource && newSource !== '') {\r\n deregister();\r\n lazyImage.setSource(newSource);\r\n }\r\n });\r\n\r\n // Spinner\r\n if (!angular.isDefined(attrs.noSpinner)) {\r\n var theme = angular.isDefined(attrs.spinnerTheme) ? attrs.spinnerTheme : 'small';\r\n var options = angular.extend({},\r\n usSpinnerConfig.config,\r\n usSpinnerConfig.themes[theme]);\r\n var spinner = new Spinner(options);\r\n spinner.delay = usSpinnerConfig.delay;\r\n lazyImage.setSpinner(spinner);\r\n }\r\n\r\n scope.$on('$destroy', function () {\r\n lazyImage.removeImage();\r\n });\r\n\r\n $rootScope.$on('lazyImg.runCheck', function () {\r\n lazyImage.checkImages();\r\n });\r\n\r\n $rootScope.$on('lazyImg:refresh', function () {\r\n lazyImage.checkImages();\r\n });\r\n }\r\n\r\n return {\r\n link: link,\r\n restrict: 'A'\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .directive('lazyImgContainer', [\"LazyImgMagic\", function (LazyImgMagic) {\r\n 'use strict';\r\n\r\n function link(scope, element) {\r\n LazyImgMagic.addContainer(element);\r\n scope.$on('$destroy', function () {\r\n LazyImgMagic.removeContainer(element);\r\n });\r\n }\r\n\r\n return {\r\n link: link,\r\n restrict: 'A'\r\n };\r\n }]);\r\n","/*\r\n*\r\n* Version : 1.0.0\r\n* 04/09/2016 - 10h18\r\n*\r\n*! Octave Web7 !*/\r\n\r\n/**\r\n * angular-spinner version 0.8.1\r\n * License: MIT.\r\n * Copyright (C) 2013, 2014, 2015, 2016, Uri Shaked and contributors.\r\n * https://github.com/urish/angular-spinner\r\n */\r\n\r\n(function (root) {\r\n\t'use strict';\r\n\r\n\tfunction factory(angular, Spinner) {\r\n\r\n\t\treturn angular\r\n\t\t\t.module('module.spinner', [])\r\n\r\n\t\t\t.constant('SpinJSSpinner', Spinner)\r\n\r\n\t\t\t.provider('usSpinnerConfig', function () {\r\n\t\t\t\tvar _config = {}, _themes = {}, _delay = 0;\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tsetDefaults: function (config) {\r\n\t\t\t\t\t\t_config = config || _config;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsetTheme: function(name, config) {\r\n\t\t\t\t\t\t_themes[name] = config;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsetDelay: function(delay) {\r\n\t\t\t\t\t\t_delay = delay;\r\n\t\t\t\t\t},\r\n\t\t\t\t\t$get: function () {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tconfig: _config,\r\n\t\t\t\t\t\t\tthemes: _themes,\r\n\t\t\t\t\t\t\tdelay: _delay\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t})\r\n\r\n\t\t\t.directive('usSpinner', ['SpinJSSpinner', 'usSpinnerConfig', function (SpinJSSpinner, usSpinnerConfig) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tscope: true,\r\n\t\t\t\t\tlink: function (scope, element, attr) {\r\n\t\t\t\t\t\tscope.spinner = null;\r\n\r\n\t\t\t\t\t\tfunction stopSpinner() {\r\n\t\t\t\t\t\t\tif (scope.spinner) {\r\n\t\t\t\t\t\t\t\telement.children().removeClass('in').addClass('out');\r\n\t\t\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\t\t\tif (scope.spinner) {\r\n\t\t\t\t\t\t\t\t\t\tscope.spinner.stop();\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telement.children('.overlay').remove();\r\n\t\t\t\t\t\t\t\t}, scope.delay);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tscope.spin = function () {\r\n\t\t\t\t\t\t\tif (scope.spinner) {\r\n\t\t\t\t\t\t\t\telement.children().removeClass('out');\r\n\t\t\t\t\t\t\t\tscope.spinner.spin(element[0]);\r\n\t\t\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\t\t\telement.children().addClass('in');\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t$('
    ').appendTo(element);\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tscope.stop = function () {\r\n\t\t\t\t\t\t\tstopSpinner();\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tvar options = angular.extend(\r\n\t\t\t\t\t\t\t{},\r\n\t\t\t\t\t\t\tusSpinnerConfig.config,\r\n\t\t\t\t\t\t\tusSpinnerConfig.themes[attr.spinnerTheme]);\r\n\t\t\t\t\t\tscope.delay = usSpinnerConfig.delay;\r\n\t\t\t\t\t\tscope.spinner = new SpinJSSpinner(options);\r\n\t\t\t\t\t\tif (!scope.key && !attr.spinnerOn) {\r\n\t\t\t\t\t\t\tscope.spinner.spin(element[0]);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tscope.$watch(attr.spinnerOn, function (spin) {\r\n\t\t\t\t\t\t\tif (spin) {\r\n\t\t\t\t\t\t\t\tscope.spin();\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tscope.stop();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tscope.$on('$destroy', function () {\r\n\t\t\t\t\t\t\tscope.stop();\r\n\t\t\t\t\t\t\tscope.spinner = null;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t}]);\r\n\t}\r\n\r\n factory(root.angular, root.Spinner);\r\n\r\n}(this));\r\n","/*! ngclipboard - v1.1.1 - 2016-02-26\r\n* https://github.com/sachinchoolur/ngclipboard\r\n* Copyright (c) 2016 Sachin; Licensed MIT */\r\n\r\n(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t.module('directive.ngclipboard', [])\r\n\r\n\t/* @ngInject */\r\n\t.directive('ngclipboard', function() {\r\n\t\treturn {\r\n\t\t\trestrict: 'A',\r\n\t\t\tscope: {\r\n\t\t\t\tngclipboardSuccess: '&',\r\n\t\t\t\tngclipboardError: '&'\r\n\t\t\t},\r\n\t\t\tlink: function(scope, element) {\r\n\t\t\t\tvar clipboard = new window.Clipboard(element[0]);\r\n\r\n\t\t\t\tclipboard.on('success', function(e) {\r\n\t\t\t\t\tscope.$apply(function () {\r\n\t\t\t\t\t\tscope.ngclipboardSuccess({\r\n\t\t\t\t\t\t\te: e\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tclipboard.on('error', function(e) {\r\n\t\t\t\t\tscope.$apply(function () {\r\n\t\t\t\t\t\tscope.ngclipboardError({\r\n\t\t\t\t\t\t\te: e\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t}\r\n\t\t};\r\n\t});\r\n\r\n})();","/*! angularjs-slider - v6.1.1 -\r\n (c) Rafal Zajac , Valentin Hervieu , Jussi Saarivirta , Angelin Sirbu -\r\n https://github.com/angular-slider/angularjs-slider -\r\n 2017-03-29 */\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('rzModule', [])\r\n\r\n .factory('RzSliderOptions', function () {\r\n var defaultOptions = {\r\n floor: 0,\r\n ceil: null, // defaults to rz-slider-model\r\n step: 1,\r\n precision: 0,\r\n minRange: null,\r\n maxRange: null,\r\n pushRange: false,\r\n minLimit: null,\r\n maxLimit: null,\r\n id: null,\r\n translate: null,\r\n getLegend: null,\r\n stepsArray: null,\r\n bindIndexForStepsArray: false,\r\n draggableRange: false,\r\n draggableRangeOnly: false,\r\n showSelectionBar: false,\r\n showSelectionBarEnd: false,\r\n showSelectionBarFromValue: null,\r\n hidePointerLabels: false,\r\n hideLimitLabels: false,\r\n autoHideLimitLabels: true,\r\n readOnly: false,\r\n disabled: false,\r\n interval: 350,\r\n showTicks: false,\r\n showTicksValues: false,\r\n ticksArray: null,\r\n ticksTooltip: null,\r\n ticksValuesTooltip: null,\r\n vertical: false,\r\n /*getSelectionBarColor: null,*/\r\n getTickColor: null,\r\n /*getPointerColor: null,*/\r\n keyboardSupport: true,\r\n scale: 1,\r\n enforceStep: true,\r\n enforceRange: false,\r\n noSwitching: false,\r\n onlyBindHandles: false,\r\n onStart: null,\r\n onChange: null,\r\n onEnd: null,\r\n rightToLeft: false,\r\n boundPointerLabels: true,\r\n mergeRangeLabelsIfSame: false,\r\n customTemplateScope: null,\r\n logScale: false,\r\n customValueToPosition: null,\r\n customPositionToValue: null,\r\n /*selectionBarGradient: null,*/\r\n ariaLabel: null,\r\n ariaLabelledBy: null,\r\n ariaLabelHigh: null,\r\n ariaLabelledByHigh: null\r\n };\r\n var globalOptions = {};\r\n\r\n var factory = {};\r\n\r\n factory.options = function (value) {\r\n angular.extend(globalOptions, value);\r\n };\r\n\r\n factory.getOptions = function (options) {\r\n return angular.extend({}, defaultOptions, globalOptions, options);\r\n };\r\n\r\n return factory;\r\n })\r\n\r\n /* @ngInject */\r\n .factory('rzThrottle', [\"$timeout\", function ($timeout) {\r\n return function (func, wait, options) {\r\n var getTime = (Date.now || function () {\r\n return new Date().getTime();\r\n });\r\n var context, args, result;\r\n var timeout = null;\r\n var previous = 0;\r\n options = options || {};\r\n var later = function () {\r\n previous = getTime();\r\n timeout = null;\r\n result = func.apply(context, args);\r\n context = args = null;\r\n };\r\n return function () {\r\n var now = getTime();\r\n var remaining = wait - (now - previous);\r\n context = this;\r\n args = arguments;\r\n if (remaining <= 0) {\r\n $timeout.cancel(timeout);\r\n timeout = null;\r\n previous = now;\r\n result = func.apply(context, args);\r\n context = args = null;\r\n } else if (!timeout && options.trailing !== false) {\r\n timeout = $timeout(later, remaining);\r\n }\r\n return result;\r\n };\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .factory('RzSlider', [\"$timeout\", \"$document\", \"$window\", \"$compile\", \"RzSliderOptions\", \"rzThrottle\", function ($timeout, $document, $window, $compile, RzSliderOptions, rzThrottle) {\r\n var Slider = function (scope, sliderElem) {\r\n\r\n this.scope = scope;\r\n this.lowValue = 0;\r\n this.highValue = 0;\r\n this.sliderElem = sliderElem;\r\n this.range = this.scope.rzSliderModel !== undefined && this.scope.rzSliderHigh !== undefined;\r\n this.dragging = {\r\n active: false,\r\n value: 0,\r\n difference: 0,\r\n position: 0,\r\n lowLimit: 0,\r\n highLimit: 0\r\n };\r\n this.positionProperty = 'left';\r\n this.dimensionProperty = 'width';\r\n this.handleHalfDim = 0;\r\n this.maxPos = 0;\r\n this.precision = 0;\r\n this.step = 1;\r\n this.tracking = '';\r\n this.minValue = 0;\r\n this.maxValue = 0;\r\n this.valueRange = 0;\r\n this.intermediateTicks = false;\r\n this.initHasRun = false;\r\n this.firstKeyDown = false;\r\n this.internalChange = false;\r\n this.cmbLabelShown = false;\r\n this.currentFocusElement = null;\r\n\r\n // Slider DOM elements wrapped in jqLite\r\n this.fullBar = null; // The whole slider bar\r\n this.selBar = null; // Highlight between two handles\r\n this.minH = null; // Left slider handle\r\n this.maxH = null; // Right slider handle\r\n this.flrLab = null; // Floor label\r\n this.ceilLab = null; // Ceiling label\r\n this.minLab = null; // Label above the low value\r\n this.maxLab = null; // Label above the high value\r\n this.cmbLab = null; // Combined label\r\n this.ticks = null; // The ticks\r\n\r\n // Initialize slider\r\n this.init();\r\n };\r\n\r\n // Add instance methods\r\n Slider.prototype = {\r\n init: function () {\r\n var thrLow, thrHigh,\r\n self = this;\r\n\r\n var calcDimFn = function () {\r\n self.calcViewDimensions();\r\n };\r\n\r\n this.applyOptions();\r\n this.syncLowValue();\r\n if (this.range) {\r\n this.syncHighValue();\r\n }\r\n this.initElemHandles();\r\n this.manageElementsStyle();\r\n this.setDisabledState();\r\n this.calcViewDimensions();\r\n this.setMinAndMax();\r\n this.addAccessibility();\r\n this.updateCeilLab();\r\n this.updateFloorLab();\r\n this.initHandles();\r\n this.manageEventsBindings();\r\n\r\n // Recalculate slider view dimensions\r\n this.scope.$on('reCalcViewDimensions', calcDimFn);\r\n\r\n // Recalculate stuff if view port dimensions have changed\r\n angular.element($window).on('resize', calcDimFn);\r\n\r\n this.initHasRun = true;\r\n\r\n // Watch for changes to the model\r\n thrLow = rzThrottle(function () {\r\n self.onLowHandleChange();\r\n }, self.options.interval);\r\n\r\n thrHigh = rzThrottle(function () {\r\n self.onHighHandleChange();\r\n }, self.options.interval);\r\n\r\n this.scope.$on('rzSliderForceRender', function () {\r\n self.resetLabelsValue();\r\n thrLow();\r\n if (self.range) {\r\n thrHigh();\r\n }\r\n self.resetSlider();\r\n });\r\n\r\n // Watchers (order is important because in case of simultaneous change,\r\n // watchers will be called in the same order)\r\n this.scope.$watch('rzSliderOptions()', function (newValue, oldValue) {\r\n if (newValue === oldValue) return;\r\n self.applyOptions(); // need to be called before synchronizing the values\r\n self.syncLowValue();\r\n if (self.range) {self.syncHighValue();}\r\n self.resetSlider();\r\n }, true);\r\n\r\n this.scope.$watch('rzSliderModel', function (newValue, oldValue) {\r\n if (self.internalChange) return;\r\n if (newValue === oldValue) return;\r\n thrLow();\r\n });\r\n\r\n this.scope.$watch('rzSliderHigh', function (newValue, oldValue) {\r\n if (self.internalChange) return;\r\n if (newValue === oldValue) return;\r\n if (newValue != null) {thrHigh();}\r\n if (self.range && newValue == null || !self.range && newValue != null) {\r\n self.applyOptions();\r\n self.resetSlider();\r\n }\r\n });\r\n\r\n this.scope.$on('$destroy', function () {\r\n self.unbindEvents();\r\n angular.element($window).off('resize', calcDimFn);\r\n self.currentFocusElement = null;\r\n });\r\n },\r\n\r\n findStepIndex: function (modelValue) {\r\n var index = 0;\r\n for (var i = 0; i < this.options.stepsArray.length; i++) {\r\n var step = this.options.stepsArray[i];\r\n if (step === modelValue) {\r\n index = i;\r\n break;\r\n } else if (angular.isDate(step)) {\r\n if (step.getTime() === modelValue.getTime()) {\r\n index = i;\r\n break;\r\n }\r\n } else if (angular.isObject(step)) {\r\n if (angular.isDate(step.value) && step.value.getTime() === modelValue.getTime() || step.value === modelValue) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n }\r\n return index;\r\n },\r\n\r\n syncLowValue: function () {\r\n if (this.options.stepsArray) {\r\n if (!this.options.bindIndexForStepsArray) {\r\n this.lowValue = this.findStepIndex(this.scope.rzSliderModel);\r\n } else {\r\n this.lowValue = this.scope.rzSliderModel;\r\n }\r\n } else {\r\n this.lowValue = this.scope.rzSliderModel;\r\n }\r\n },\r\n\r\n syncHighValue: function () {\r\n if (this.options.stepsArray) {\r\n if (!this.options.bindIndexForStepsArray) {\r\n this.highValue = this.findStepIndex(this.scope.rzSliderHigh);\r\n } else {\r\n this.highValue = this.scope.rzSliderHigh;\r\n }\r\n } else {\r\n this.highValue = this.scope.rzSliderHigh;\r\n }\r\n },\r\n\r\n getStepValue: function (sliderValue) {\r\n var step = this.options.stepsArray[sliderValue];\r\n if (angular.isDate(step)) return step;\r\n if (angular.isObject(step)) return step.value;\r\n return step;\r\n },\r\n\r\n applyLowValue: function () {\r\n if (this.options.stepsArray) {\r\n if (!this.options.bindIndexForStepsArray) {\r\n this.scope.rzSliderModel = this.getStepValue(this.lowValue);\r\n } else {\r\n this.scope.rzSliderModel = this.lowValue;\r\n }\r\n } else {\r\n this.scope.rzSliderModel = this.lowValue;\r\n }\r\n },\r\n\r\n applyHighValue: function () {\r\n if (this.options.stepsArray) {\r\n if (!this.options.bindIndexForStepsArray) {\r\n this.scope.rzSliderHigh = this.getStepValue(this.highValue);\r\n } else {\r\n this.scope.rzSliderHigh = this.highValue;\r\n }\r\n } else {\r\n this.scope.rzSliderHigh = this.highValue;\r\n }\r\n },\r\n\r\n /*\r\n * Reflow the slider when the low handle changes (called with throttle)\r\n */\r\n onLowHandleChange: function () {\r\n this.syncLowValue();\r\n if (this.range) {this.syncHighValue();}\r\n this.setMinAndMax();\r\n this.updateLowHandle(this.valueToPosition(this.lowValue));\r\n this.updateSelectionBar();\r\n this.updateTicksScale();\r\n this.updateAriaAttributes();\r\n if (this.range) {\r\n this.updateCmbLabel();\r\n }\r\n },\r\n\r\n /*\r\n * Reflow the slider when the high handle changes (called with throttle)\r\n */\r\n onHighHandleChange: function () {\r\n this.syncLowValue();\r\n this.syncHighValue();\r\n this.setMinAndMax();\r\n this.updateHighHandle(this.valueToPosition(this.highValue));\r\n this.updateSelectionBar();\r\n this.updateTicksScale();\r\n this.updateCmbLabel();\r\n this.updateAriaAttributes();\r\n },\r\n\r\n /**\r\n * Read the user options and apply them to the slider model\r\n */\r\n applyOptions: function () {\r\n var sliderOptions;\r\n if (this.scope.rzSliderOptions) {\r\n sliderOptions = this.scope.rzSliderOptions();\r\n } else {\r\n sliderOptions = {};\r\n }\r\n\r\n this.options = RzSliderOptions.getOptions(sliderOptions);\r\n\r\n if (this.options.step <= 0) {\r\n this.options.step = 1;\r\n }\r\n\r\n this.range = this.scope.rzSliderModel !== undefined && this.scope.rzSliderHigh !== undefined;\r\n this.options.draggableRange = this.range && this.options.draggableRange;\r\n this.options.draggableRangeOnly = this.range && this.options.draggableRangeOnly;\r\n if (this.options.draggableRangeOnly) {\r\n this.options.draggableRange = true;\r\n }\r\n\r\n this.options.showTicks = this.options.showTicks || this.options.showTicksValues || !!this.options.ticksArray;\r\n this.scope.showTicks = this.options.showTicks; // scope is used in the template\r\n if (angular.isNumber(this.options.showTicks) || this.options.ticksArray) {this.intermediateTicks = true;}\r\n\r\n this.options.showSelectionBar = this.options.showSelectionBar || this.options.showSelectionBarEnd\r\n || this.options.showSelectionBarFromValue !== null;\r\n\r\n if (this.options.stepsArray) {\r\n this.parseStepsArray();\r\n } else {\r\n if (this.options.translate) {\r\n this.customTrFn = this.options.translate;\r\n } else {\r\n this.customTrFn = function (value) {\r\n return String(value);\r\n };\r\n }\r\n\r\n this.getLegend = this.options.getLegend;\r\n }\r\n\r\n if (this.options.vertical) {\r\n this.positionProperty = 'bottom';\r\n this.dimensionProperty = 'height';\r\n }\r\n\r\n if (this.options.customTemplateScope) {\r\n this.scope.custom = this.options.customTemplateScope;\r\n }\r\n },\r\n\r\n parseStepsArray: function () {\r\n this.options.floor = 0;\r\n this.options.ceil = this.options.stepsArray.length - 1;\r\n this.options.step = 1;\r\n\r\n if (this.options.translate) {\r\n this.customTrFn = this.options.translate;\r\n } else {\r\n this.customTrFn = function (modelValue) {\r\n if (this.options.bindIndexForStepsArray) {\r\n return this.getStepValue(modelValue);\r\n }\r\n return modelValue;\r\n };\r\n }\r\n\r\n this.getLegend = function (index) {\r\n var step = this.options.stepsArray[index];\r\n if (angular.isObject(step)) {\r\n return step.legend;\r\n }\r\n return null;\r\n };\r\n },\r\n\r\n /**\r\n * Resets slider\r\n *\r\n * @returns {undefined}\r\n */\r\n resetSlider: function () {\r\n this.manageElementsStyle();\r\n this.addAccessibility();\r\n this.setMinAndMax();\r\n this.updateCeilLab();\r\n this.updateFloorLab();\r\n this.unbindEvents();\r\n this.manageEventsBindings();\r\n this.setDisabledState();\r\n this.calcViewDimensions();\r\n this.refocusPointerIfNeeded();\r\n },\r\n\r\n refocusPointerIfNeeded: function () {\r\n if (this.currentFocusElement) {\r\n this.onPointerFocus(this.currentFocusElement.pointer, this.currentFocusElement.ref);\r\n this.focusElement(this.currentFocusElement.pointer);\r\n }\r\n },\r\n\r\n /**\r\n * Set the slider children to variables for easy access\r\n *\r\n * Run only once during initialization\r\n *\r\n * @returns {undefined}\r\n */\r\n initElemHandles: function () {\r\n // Assign all slider elements to object properties for easy access\r\n angular.forEach(this.sliderElem.children(), function (elem, index) {\r\n var jElem = angular.element(elem);\r\n\r\n switch (index) {\r\n case 0:\r\n this.fullBar = jElem;\r\n break;\r\n case 1:\r\n this.selBar = jElem;\r\n break;\r\n case 2:\r\n this.minH = jElem;\r\n break;\r\n case 3:\r\n this.maxH = jElem;\r\n break;\r\n case 4:\r\n this.flrLab = jElem;\r\n break;\r\n case 5:\r\n this.ceilLab = jElem;\r\n break;\r\n case 6:\r\n this.minLab = jElem;\r\n break;\r\n case 7:\r\n this.maxLab = jElem;\r\n break;\r\n case 8:\r\n this.cmbLab = jElem;\r\n break;\r\n case 9:\r\n this.ticks = jElem;\r\n break;\r\n }\r\n\r\n }, this);\r\n\r\n // Initialize position cache properties\r\n this.selBar.rzsp = 0;\r\n this.minH.rzsp = 0;\r\n this.maxH.rzsp = 0;\r\n this.flrLab.rzsp = 0;\r\n this.ceilLab.rzsp = 0;\r\n this.minLab.rzsp = 0;\r\n this.maxLab.rzsp = 0;\r\n this.cmbLab.rzsp = 0;\r\n },\r\n\r\n /**\r\n * Update each elements style based on options\r\n */\r\n manageElementsStyle: function () {\r\n\r\n if (!this.range) {\r\n this.maxH.css('display', 'none');\r\n } else {\r\n this.maxH.css('display', '');\r\n }\r\n\r\n\r\n this.alwaysHide(this.flrLab, this.options.showTicksValues || this.options.hideLimitLabels);\r\n this.alwaysHide(this.ceilLab, this.options.showTicksValues || this.options.hideLimitLabels);\r\n\r\n var hideLabelsForTicks = this.options.showTicksValues && !this.intermediateTicks;\r\n this.alwaysHide(this.minLab, hideLabelsForTicks || this.options.hidePointerLabels);\r\n this.alwaysHide(this.maxLab, hideLabelsForTicks || !this.range || this.options.hidePointerLabels);\r\n this.alwaysHide(this.cmbLab, hideLabelsForTicks || !this.range || this.options.hidePointerLabels);\r\n this.alwaysHide(this.selBar, !this.range && !this.options.showSelectionBar);\r\n\r\n if (this.options.vertical) {\r\n this.sliderElem.addClass('rz-vertical');\r\n }\r\n\r\n if (this.options.draggableRange) {\r\n this.selBar.addClass('rz-draggable');\r\n } else {\r\n this.selBar.removeClass('rz-draggable');\r\n }\r\n\r\n if (this.intermediateTicks && this.options.showTicksValues) {\r\n this.ticks.addClass('rz-ticks-values-under');\r\n }\r\n },\r\n\r\n alwaysHide: function (el, hide) {\r\n el.rzAlwaysHide = hide;\r\n if (hide) {\r\n this.hideEl(el);\r\n } else {\r\n this.showEl(el);\r\n }\r\n },\r\n\r\n /**\r\n * Manage the events bindings based on readOnly and disabled options\r\n *\r\n * @returns {undefined}\r\n */\r\n manageEventsBindings: function () {\r\n if (this.options.disabled || this.options.readOnly) {\r\n this.unbindEvents();\r\n } else {\r\n this.bindEvents();\r\n }\r\n },\r\n\r\n /**\r\n * Set the disabled state based on rzSliderDisabled\r\n *\r\n * @returns {undefined}\r\n */\r\n setDisabledState: function () {\r\n if (this.options.disabled) {\r\n this.sliderElem.attr('disabled', 'disabled');\r\n } else {\r\n this.sliderElem.attr('disabled', null);\r\n }\r\n },\r\n\r\n /**\r\n * Reset label values\r\n *\r\n * @return {undefined}\r\n */\r\n resetLabelsValue: function () {\r\n this.minLab.rzsv = undefined;\r\n this.maxLab.rzsv = undefined;\r\n },\r\n\r\n /**\r\n * Initialize slider handles positions and labels\r\n *\r\n * Run only once during initialization and every time view port changes size\r\n *\r\n * @returns {undefined}\r\n */\r\n initHandles: function () {\r\n this.updateLowHandle(this.valueToPosition(this.lowValue));\r\n\r\n /*\r\n the order here is important since the selection bar should be\r\n updated after the high handle but before the combined label\r\n */\r\n if (this.range) {\r\n this.updateHighHandle(this.valueToPosition(this.highValue));\r\n }\r\n this.updateSelectionBar();\r\n if (this.range) {\r\n this.updateCmbLabel();\r\n }\r\n\r\n this.updateTicksScale();\r\n },\r\n\r\n /**\r\n * Translate value to human readable format\r\n *\r\n * @param {number|string} value\r\n * @param {jqLite} label\r\n * @param {String} which\r\n * @param {boolean} [useCustomTr]\r\n * @returns {undefined}\r\n */\r\n translateFn: function (value, label, which, useCustomTr) {\r\n useCustomTr = useCustomTr === undefined ? true : useCustomTr;\r\n\r\n var valStr = '',\r\n getDimension = false,\r\n noLabelInjection = label.hasClass('no-label-injection');\r\n\r\n if (useCustomTr) {\r\n if (this.options.stepsArray && !this.options.bindIndexForStepsArray) {\r\n value = this.getStepValue(value);\r\n }\r\n valStr = String(this.customTrFn(value, this.options.id, which));\r\n } else {\r\n valStr = String(value);\r\n }\r\n\r\n if (label.rzsv === undefined || label.rzsv.length !== valStr.length || (label.rzsv.length > 0 && label.rzsd === 0)) {\r\n getDimension = true;\r\n label.rzsv = valStr;\r\n }\r\n\r\n if (!noLabelInjection) {\r\n label.html(valStr);\r\n }\r\n\r\n\r\n this.scope[which + 'Label'] = valStr;\r\n\r\n // Update width only when length of the label have changed\r\n if (getDimension) {\r\n this.getDimension(label);\r\n }\r\n },\r\n\r\n /**\r\n * Set maximum and minimum values for the slider and ensure the model and high\r\n * value match these limits\r\n * @returns {undefined}\r\n */\r\n setMinAndMax: function () {\r\n\r\n this.step = +this.options.step;\r\n this.precision = +this.options.precision;\r\n\r\n this.minValue = this.options.floor;\r\n if (this.options.logScale && this.minValue === 0) {\r\n throw Error(\"Can't use floor=0 with logarithmic scale\");\r\n }\r\n\r\n if (this.options.enforceStep) {\r\n this.lowValue = this.roundStep(this.lowValue);\r\n if (this.range) {\r\n this.highValue = this.roundStep(this.highValue);\r\n }\r\n }\r\n\r\n if (this.options.ceil != null) {\r\n this.maxValue = this.options.ceil;\r\n } else {\r\n this.maxValue = this.options.ceil = this.range ? this.highValue : this.lowValue;\r\n }\r\n\r\n if (this.options.enforceRange) {\r\n this.lowValue = this.sanitizeValue(this.lowValue);\r\n if (this.range) {\r\n this.highValue = this.sanitizeValue(this.highValue);\r\n }\r\n }\r\n\r\n this.applyLowValue();\r\n if (this.range) {\r\n this.applyHighValue();\r\n }\r\n\r\n this.valueRange = this.maxValue - this.minValue;\r\n },\r\n\r\n /**\r\n * Adds accessibility attributes\r\n *\r\n * Run only once during initialization\r\n *\r\n * @returns {undefined}\r\n */\r\n addAccessibility: function () {\r\n this.minH.attr('role', 'slider');\r\n this.updateAriaAttributes();\r\n if (this.options.keyboardSupport && !(this.options.readOnly || this.options.disabled)) {\r\n this.minH.attr('tabindex', '0');\r\n } else {\r\n this.minH.attr('tabindex', '');\r\n }\r\n if (this.options.vertical) {\r\n this.minH.attr('aria-orientation', 'vertical');\r\n }\r\n if (this.options.ariaLabel) {\r\n this.minH.attr('aria-label', this.options.ariaLabel);\r\n } else if (this.options.ariaLabelledBy) {\r\n this.minH.attr('aria-labelledby', this.options.ariaLabelledBy);\r\n }\r\n\r\n if (this.range) {\r\n this.maxH.attr('role', 'slider');\r\n if (this.options.keyboardSupport && !(this.options.readOnly || this.options.disabled)) {\r\n this.maxH.attr('tabindex', '0');\r\n } else {\r\n this.maxH.attr('tabindex', '');\r\n }\r\n if (this.options.vertical) {\r\n this.maxH.attr('aria-orientation', 'vertical');\r\n }\r\n if (this.options.ariaLabelHigh) {\r\n this.maxH.attr('aria-label', this.options.ariaLabelHigh);\r\n } else if (this.options.ariaLabelledByHigh) {\r\n this.maxH.attr('aria-labelledby', this.options.ariaLabelledByHigh);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Updates aria attributes according to current values\r\n */\r\n updateAriaAttributes: function () {\r\n this.minH.attr({\r\n 'aria-valuenow': this.scope.rzSliderModel,\r\n 'aria-valuetext': this.customTrFn(this.scope.rzSliderModel, this.options.id, 'model'),\r\n 'aria-valuemin': this.minValue,\r\n 'aria-valuemax': this.maxValue\r\n });\r\n if (this.range) {\r\n this.maxH.attr({\r\n 'aria-valuenow': this.scope.rzSliderHigh,\r\n 'aria-valuetext': this.customTrFn(this.scope.rzSliderHigh, this.options.id, 'high'),\r\n 'aria-valuemin': this.minValue,\r\n 'aria-valuemax': this.maxValue\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * Calculate dimensions that are dependent on view port size\r\n *\r\n * Run once during initialization and every time view port changes size.\r\n *\r\n * @returns {undefined}\r\n */\r\n calcViewDimensions: function () {\r\n var handleWidth = this.getDimension(this.minH);\r\n\r\n this.handleHalfDim = handleWidth / 2;\r\n this.barDimension = this.getDimension(this.fullBar);\r\n\r\n this.maxPos = this.barDimension - handleWidth;\r\n\r\n this.getDimension(this.sliderElem);\r\n this.sliderElem.rzsp = this.sliderElem[0].getBoundingClientRect()[this.positionProperty];\r\n\r\n if (this.initHasRun) {\r\n this.updateFloorLab();\r\n this.updateCeilLab();\r\n this.initHandles();\r\n var self = this;\r\n $timeout(function () {\r\n self.updateTicksScale();\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * Update the ticks position\r\n *\r\n * @returns {undefined}\r\n */\r\n updateTicksScale: function () {\r\n if (!this.options.showTicks) return;\r\n\r\n var ticksArray = this.options.ticksArray || this.getTicksArray(),\r\n translate = this.options.vertical ? 'translateY' : 'translateX',\r\n self = this;\r\n\r\n if (this.options.rightToLeft) {\r\n ticksArray.reverse();\r\n }\r\n\r\n this.scope.ticks = ticksArray.map(function (value) {\r\n var position = self.valueToPosition(value);\r\n\r\n if (self.options.vertical) {\r\n position = self.maxPos - position;\r\n }\r\n\r\n var translation = translate + '(' + Math.round(position) + 'px)';\r\n var tick = {\r\n selected: self.isTickSelected(value),\r\n style: {\r\n '-webkit-transform': translation,\r\n '-moz-transform': translation,\r\n '-o-transform': translation,\r\n '-ms-transform': translation,\r\n 'transform': translation\r\n }\r\n };\r\n if (!tick.selected && self.options.getTickColor) {\r\n tick.style['background-color'] = self.getTickColor(value);\r\n }\r\n if (self.options.ticksTooltip) {\r\n tick.tooltip = self.options.ticksTooltip(value);\r\n tick.tooltipPlacement = self.options.vertical ? 'right' : 'top';\r\n }\r\n if (self.options.showTicksValues) {\r\n tick.value = self.getDisplayValue(value, 'tick-value');\r\n if (self.options.ticksValuesTooltip) {\r\n tick.valueTooltip = self.options.ticksValuesTooltip(value);\r\n tick.valueTooltipPlacement = self.options.vertical ? 'right' : 'top';\r\n }\r\n }\r\n if (self.getLegend) {\r\n var legend = self.getLegend(value, self.options.id);\r\n if (legend) {\r\n tick.legend = legend;\r\n }\r\n }\r\n return tick;\r\n });\r\n },\r\n\r\n getTicksArray: function () {\r\n var step = this.step,\r\n ticksArray = [];\r\n if (this.intermediateTicks) {\r\n step = this.options.showTicks;\r\n }\r\n for (var value = this.minValue; value <= this.maxValue; value += step) {\r\n ticksArray.push(value);\r\n }\r\n return ticksArray;\r\n },\r\n\r\n isTickSelected: function (value) {\r\n if (!this.range) {\r\n if (this.options.showSelectionBarFromValue !== null) {\r\n var center = this.options.showSelectionBarFromValue;\r\n if (this.lowValue > center && value >= center && value <= this.lowValue) {\r\n return true;\r\n } else if (this.lowValue < center && value <= center && value >= this.lowValue) {\r\n return true;\r\n }\r\n } else if (this.options.showSelectionBarEnd) {\r\n if (value >= this.lowValue) {\r\n return true;\r\n }\r\n } else if (this.options.showSelectionBar && value <= this.lowValue) {\r\n return true;\r\n }\r\n }\r\n if (this.range && value >= this.lowValue && value <= this.highValue) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n\r\n /**\r\n * Update position of the floor label\r\n *\r\n * @returns {undefined}\r\n */\r\n updateFloorLab: function () {\r\n this.translateFn(this.minValue, this.flrLab, 'floor');\r\n this.getDimension(this.flrLab);\r\n var position = this.options.rightToLeft ? this.barDimension - this.flrLab.rzsd : 0;\r\n this.setPosition(this.flrLab, position);\r\n },\r\n\r\n /**\r\n * Update position of the ceiling label\r\n *\r\n * @returns {undefined}\r\n */\r\n updateCeilLab: function () {\r\n this.translateFn(this.maxValue, this.ceilLab, 'ceil');\r\n this.getDimension(this.ceilLab);\r\n var position = this.options.rightToLeft ? 0 : this.barDimension - this.ceilLab.rzsd;\r\n this.setPosition(this.ceilLab, position);\r\n },\r\n\r\n /**\r\n * Update slider handles and label positions\r\n *\r\n * @param {string} which\r\n * @param {number} newPos\r\n */\r\n updateHandles: function (which, newPos) {\r\n if (which === 'lowValue') {\r\n this.updateLowHandle(newPos);\r\n } else {\r\n this.updateHighHandle(newPos);\r\n }\r\n\r\n this.updateSelectionBar();\r\n this.updateTicksScale();\r\n if (this.range) {\r\n this.updateCmbLabel();\r\n }\r\n },\r\n\r\n /**\r\n * Helper function to work out the position for handle labels depending on RTL or not\r\n *\r\n * @param {string} labelName maxLab or minLab\r\n * @param newPos\r\n *\r\n * @returns {number}\r\n */\r\n getHandleLabelPos: function (labelName, newPos) {\r\n var labelRzsd = this[labelName].rzsd,\r\n nearHandlePos = newPos - labelRzsd / 2 + this.handleHalfDim,\r\n endOfBarPos = this.barDimension - labelRzsd;\r\n\r\n if (!this.options.boundPointerLabels) {\r\n return nearHandlePos;\r\n }\r\n\r\n if (this.options.rightToLeft && labelName === 'minLab' || !this.options.rightToLeft && labelName === 'maxLab') {\r\n return Math.min(nearHandlePos, endOfBarPos);\r\n }\r\n return Math.min(Math.max(nearHandlePos, 0), endOfBarPos);\r\n\r\n },\r\n\r\n /**\r\n * Update low slider handle position and label\r\n *\r\n * @param {number} newPos\r\n * @returns {undefined}\r\n */\r\n updateLowHandle: function (newPos) {\r\n this.setPosition(this.minH, newPos);\r\n this.translateFn(this.lowValue, this.minLab, 'model');\r\n this.setPosition(this.minLab, this.getHandleLabelPos('minLab', newPos));\r\n\r\n if (this.options.autoHideLimitLabels) {\r\n this.shFloorCeil();\r\n }\r\n },\r\n\r\n /**\r\n * Update high slider handle position and label\r\n *\r\n * @param {number} newPos\r\n * @returns {undefined}\r\n */\r\n updateHighHandle: function (newPos) {\r\n this.setPosition(this.maxH, newPos);\r\n this.translateFn(this.highValue, this.maxLab, 'high');\r\n this.setPosition(this.maxLab, this.getHandleLabelPos('maxLab', newPos));\r\n\r\n if (this.options.autoHideLimitLabels) {\r\n this.shFloorCeil();\r\n }\r\n\r\n },\r\n\r\n /**\r\n * Show/hide floor/ceiling label\r\n *\r\n * @returns {undefined}\r\n */\r\n shFloorCeil: function () {\r\n // Show based only on hideLimitLabels if pointer labels are hidden\r\n if (this.options.hidePointerLabels) {\r\n return;\r\n }\r\n var flHidden = false,\r\n clHidden = false,\r\n isMinLabAtFloor = this.isLabelBelowFloorLab(this.minLab),\r\n isMinLabAtCeil = this.isLabelAboveCeilLab(this.minLab),\r\n isMaxLabAtCeil = this.isLabelAboveCeilLab(this.maxLab),\r\n isCmbLabAtFloor = this.isLabelBelowFloorLab(this.cmbLab),\r\n isCmbLabAtCeil = this.isLabelAboveCeilLab(this.cmbLab);\r\n\r\n if (isMinLabAtFloor) {\r\n flHidden = true;\r\n this.hideEl(this.flrLab);\r\n } else {\r\n flHidden = false;\r\n this.showEl(this.flrLab);\r\n }\r\n\r\n if (isMinLabAtCeil) {\r\n clHidden = true;\r\n this.hideEl(this.ceilLab);\r\n } else {\r\n clHidden = false;\r\n this.showEl(this.ceilLab);\r\n }\r\n\r\n if (this.range) {\r\n var hideCeil = this.cmbLabelShown ? isCmbLabAtCeil : isMaxLabAtCeil;\r\n var hideFloor = this.cmbLabelShown ? isCmbLabAtFloor : isMinLabAtFloor;\r\n\r\n if (hideCeil) {\r\n this.hideEl(this.ceilLab);\r\n } else if (!clHidden) {\r\n this.showEl(this.ceilLab);\r\n }\r\n\r\n // Hide or show floor label\r\n if (hideFloor) {\r\n this.hideEl(this.flrLab);\r\n } else if (!flHidden) {\r\n this.showEl(this.flrLab);\r\n }\r\n }\r\n },\r\n\r\n isLabelBelowFloorLab: function (label) {\r\n var isRTL = this.options.rightToLeft,\r\n pos = label.rzsp,\r\n dim = label.rzsd,\r\n floorPos = this.flrLab.rzsp,\r\n floorDim = this.flrLab.rzsd;\r\n return isRTL ?\r\n pos + dim >= floorPos - 2 :\r\n pos <= floorPos + floorDim + 2;\r\n },\r\n\r\n isLabelAboveCeilLab: function (label) {\r\n var isRTL = this.options.rightToLeft,\r\n pos = label.rzsp,\r\n dim = label.rzsd,\r\n ceilPos = this.ceilLab.rzsp,\r\n ceilDim = this.ceilLab.rzsd;\r\n return isRTL ?\r\n pos <= ceilPos + ceilDim + 2 :\r\n pos + dim >= ceilPos - 2;\r\n },\r\n\r\n /**\r\n * Update slider selection bar, combined label and range label\r\n *\r\n * @returns {undefined}\r\n */\r\n updateSelectionBar: function () {\r\n var position = 0,\r\n dimension = 0,\r\n isSelectionBarFromRight = this.options.rightToLeft ? !this.options.showSelectionBarEnd : this.options.showSelectionBarEnd,\r\n positionForRange = this.options.rightToLeft ? this.maxH.rzsp + this.handleHalfDim : this.minH.rzsp + this.handleHalfDim;\r\n\r\n if (this.range) {\r\n dimension = Math.abs(this.maxH.rzsp - this.minH.rzsp);\r\n position = positionForRange;\r\n } else if (this.options.showSelectionBarFromValue !== null) {\r\n var center = this.options.showSelectionBarFromValue,\r\n centerPosition = this.valueToPosition(center),\r\n isModelGreaterThanCenter = this.options.rightToLeft ? this.lowValue <= center : this.lowValue > center;\r\n if (isModelGreaterThanCenter) {\r\n dimension = this.minH.rzsp - centerPosition;\r\n position = centerPosition + this.handleHalfDim;\r\n } else {\r\n dimension = centerPosition - this.minH.rzsp;\r\n position = this.minH.rzsp + this.handleHalfDim;\r\n }\r\n } else if (isSelectionBarFromRight) {\r\n dimension = Math.abs(this.maxPos - this.minH.rzsp) + this.handleHalfDim;\r\n position = this.minH.rzsp + this.handleHalfDim;\r\n } else {\r\n dimension = Math.abs(this.maxH.rzsp - this.minH.rzsp) + this.handleHalfDim;\r\n position = 0;\r\n }\r\n this.setDimension(this.selBar, dimension);\r\n this.setPosition(this.selBar, position);\r\n },\r\n\r\n /**\r\n * Wrapper around the getTickColor of the user to pass to\r\n * correct parameters\r\n */\r\n getTickColor: function (value) {\r\n return this.options.getTickColor(value);\r\n },\r\n\r\n /**\r\n * Update combined label position and value\r\n *\r\n * @returns {undefined}\r\n */\r\n updateCmbLabel: function () {\r\n var isLabelOverlap = null;\r\n if (this.options.rightToLeft) {\r\n isLabelOverlap = this.minLab.rzsp - this.minLab.rzsd - 10 <= this.maxLab.rzsp;\r\n } else {\r\n isLabelOverlap = this.minLab.rzsp + this.minLab.rzsd + 10 >= this.maxLab.rzsp;\r\n }\r\n\r\n if (isLabelOverlap) {\r\n var lowTr = this.getDisplayValue(this.lowValue, 'model'),\r\n highTr = this.getDisplayValue(this.highValue, 'high'),\r\n labelVal = '';\r\n if (this.options.mergeRangeLabelsIfSame && lowTr === highTr) {\r\n labelVal = lowTr;\r\n } else {\r\n labelVal = this.options.rightToLeft ? highTr + ' - ' + lowTr : lowTr + ' - ' + highTr;\r\n }\r\n\r\n this.translateFn(labelVal, this.cmbLab, 'cmb', false);\r\n var pos = this.options.boundPointerLabels ? Math.min(\r\n Math.max(\r\n this.selBar.rzsp + this.selBar.rzsd / 2 - this.cmbLab.rzsd / 2,\r\n 0\r\n ),\r\n this.barDimension - this.cmbLab.rzsd\r\n ) : this.selBar.rzsp + this.selBar.rzsd / 2 - this.cmbLab.rzsd / 2;\r\n\r\n this.setPosition(this.cmbLab, pos);\r\n this.cmbLabelShown = true;\r\n this.hideEl(this.minLab);\r\n this.hideEl(this.maxLab);\r\n this.showEl(this.cmbLab);\r\n } else {\r\n this.cmbLabelShown = false;\r\n this.updateHighHandle(this.valueToPosition(this.highValue));\r\n this.updateLowHandle(this.valueToPosition(this.lowValue));\r\n this.showEl(this.maxLab);\r\n this.showEl(this.minLab);\r\n this.hideEl(this.cmbLab);\r\n }\r\n if (this.options.autoHideLimitLabels) {\r\n this.shFloorCeil();\r\n }\r\n },\r\n\r\n /**\r\n * Return the translated value if a translate function is provided else the original value\r\n * @param value\r\n * @param which if it's min or max handle\r\n * @returns {*}\r\n */\r\n getDisplayValue: function (value, which) {\r\n if (this.options.stepsArray && !this.options.bindIndexForStepsArray) {\r\n value = this.getStepValue(value);\r\n }\r\n return this.customTrFn(value, this.options.id, which);\r\n },\r\n\r\n /**\r\n * Round value to step and precision based on minValue\r\n *\r\n * @param {number} value\r\n * @param {number} customStep a custom step to override the defined step\r\n * @returns {number}\r\n */\r\n roundStep: function (value, customStep) {\r\n var step = customStep ? customStep : this.step,\r\n steppedDifference = parseFloat((value - this.minValue) / step).toPrecision(12);\r\n steppedDifference = Math.round(+steppedDifference) * step;\r\n var newValue = (this.minValue + steppedDifference).toFixed(this.precision);\r\n return +newValue;\r\n },\r\n\r\n /**\r\n * Hide element\r\n *\r\n * @param element\r\n * @returns {jqLite} The jqLite wrapped DOM element\r\n */\r\n hideEl: function (element) {\r\n return element.css({\r\n visibility: 'hidden'\r\n });\r\n },\r\n\r\n /**\r\n * Show element\r\n *\r\n * @param element The jqLite wrapped DOM element\r\n * @returns {jqLite} The jqLite\r\n */\r\n showEl: function (element) {\r\n if (!!element.rzAlwaysHide) {\r\n return element;\r\n }\r\n\r\n return element.css({\r\n visibility: 'visible'\r\n });\r\n },\r\n\r\n /**\r\n * Set element left/top position depending on whether slider is horizontal or vertical\r\n *\r\n * @param {jqLite} elem The jqLite wrapped DOM element\r\n * @param {number} pos\r\n * @returns {number}\r\n */\r\n setPosition: function (elem, pos) {\r\n elem.rzsp = pos;\r\n var css = {};\r\n css[this.positionProperty] = Math.round(pos) + 'px';\r\n elem.css(css);\r\n return pos;\r\n },\r\n\r\n /**\r\n * Get element width/height depending on whether slider is horizontal or vertical\r\n *\r\n * @param {jqLite} elem The jqLite wrapped DOM element\r\n * @returns {number}\r\n */\r\n getDimension: function (elem) {\r\n var val = elem[0].getBoundingClientRect();\r\n if (this.options.vertical) {\r\n elem.rzsd = (val.bottom - val.top) * this.options.scale;\r\n } else {\r\n elem.rzsd = (val.right - val.left) * this.options.scale;\r\n }\r\n return elem.rzsd;\r\n },\r\n\r\n /**\r\n * Set element width/height depending on whether slider is horizontal or vertical\r\n *\r\n * @param {jqLite} elem The jqLite wrapped DOM element\r\n * @param {number} dim\r\n * @returns {number}\r\n */\r\n setDimension: function (elem, dim) {\r\n elem.rzsd = dim;\r\n var css = {};\r\n css[this.dimensionProperty] = Math.round(dim) + 'px';\r\n elem.css(css);\r\n return dim;\r\n },\r\n\r\n /**\r\n * Returns a value that is within slider range\r\n *\r\n * @param {number} val\r\n * @returns {number}\r\n */\r\n sanitizeValue: function (val) {\r\n return Math.min(Math.max(val, this.minValue), this.maxValue);\r\n },\r\n\r\n /**\r\n * Translate value to pixel position\r\n *\r\n * @param {number} val\r\n * @returns {number}\r\n */\r\n valueToPosition: function (val) {\r\n var fn = this.linearValueToPosition;\r\n if (this.options.customValueToPosition) {\r\n fn = this.options.customValueToPosition;\r\n } else if (this.options.logScale) {\r\n fn = this.logValueToPosition;\r\n }\r\n\r\n val = this.sanitizeValue(val);\r\n var percent = fn(val, this.minValue, this.maxValue) || 0;\r\n if (this.options.rightToLeft) {\r\n percent = 1 - percent;\r\n }\r\n return percent * this.maxPos;\r\n },\r\n\r\n linearValueToPosition: function (val, minVal, maxVal) {\r\n var range = maxVal - minVal;\r\n return (val - minVal) / range;\r\n },\r\n\r\n logValueToPosition: function (val, minVal, maxVal) {\r\n val = Math.log(val);\r\n minVal = Math.log(minVal);\r\n maxVal = Math.log(maxVal);\r\n var range = maxVal - minVal;\r\n return (val - minVal) / range;\r\n },\r\n\r\n /**\r\n * Translate position to model value\r\n *\r\n * @param {number} position\r\n * @returns {number}\r\n */\r\n positionToValue: function (position) {\r\n var percent = position / this.maxPos;\r\n if (this.options.rightToLeft) {\r\n percent = 1 - percent;\r\n }\r\n var fn = this.linearPositionToValue;\r\n if (this.options.customPositionToValue) {\r\n fn = this.options.customPositionToValue;\r\n } else if (this.options.logScale) {\r\n fn = this.logPositionToValue;\r\n }\r\n return fn(percent, this.minValue, this.maxValue) || 0;\r\n },\r\n\r\n linearPositionToValue: function (percent, minVal, maxVal) {\r\n return percent * (maxVal - minVal) + minVal;\r\n },\r\n\r\n logPositionToValue: function (percent, minVal, maxVal) {\r\n minVal = Math.log(minVal);\r\n maxVal = Math.log(maxVal);\r\n var value = percent * (maxVal - minVal) + minVal;\r\n return Math.exp(value);\r\n },\r\n\r\n // Events\r\n /**\r\n * Get the X-coordinate or Y-coordinate of an event\r\n *\r\n * @param {Object} event The event\r\n * @returns {number}\r\n */\r\n getEventXY: function (event) {\r\n /* http://stackoverflow.com/a/12336075/282882 */\r\n // noinspection JSLint\r\n var clientXY = this.options.vertical ? 'clientY' : 'clientX';\r\n if (event[clientXY] !== undefined) {\r\n return event[clientXY];\r\n }\r\n\r\n return event.originalEvent === undefined ?\r\n event.touches[0][clientXY] : event.originalEvent.touches[0][clientXY];\r\n },\r\n\r\n /**\r\n * Compute the event position depending on whether the slider is horizontal or vertical\r\n * @param event\r\n * @returns {number}\r\n */\r\n getEventPosition: function (event) {\r\n var sliderPos = this.sliderElem.rzsp,\r\n eventPos = 0;\r\n if (this.options.vertical) {\r\n eventPos = -this.getEventXY(event) + sliderPos;\r\n } else {\r\n eventPos = this.getEventXY(event) - sliderPos;\r\n }\r\n return eventPos * this.options.scale - this.handleHalfDim; // #346 handleHalfDim is already scaled\r\n },\r\n\r\n /**\r\n * Get event names for move and event end\r\n *\r\n * @param {Event} event The event\r\n *\r\n * @return {{moveEvent: string, endEvent: string}}\r\n */\r\n getEventNames: function (event) {\r\n var eventNames = {\r\n moveEvent: '',\r\n endEvent: ''\r\n };\r\n\r\n if (event.touches || (event.originalEvent !== undefined && event.originalEvent.touches)) {\r\n eventNames.moveEvent = 'touchmove';\r\n eventNames.endEvent = 'touchend';\r\n } else {\r\n eventNames.moveEvent = 'mousemove';\r\n eventNames.endEvent = 'mouseup';\r\n }\r\n\r\n return eventNames;\r\n },\r\n\r\n /**\r\n * Get the handle closest to an event.\r\n *\r\n * @param event {Event} The event\r\n * @returns {jqLite} The handle closest to the event.\r\n */\r\n getNearestHandle: function (event) {\r\n if (!this.range) {\r\n return this.minH;\r\n }\r\n var position = this.getEventPosition(event),\r\n distanceMin = Math.abs(position - this.minH.rzsp),\r\n distanceMax = Math.abs(position - this.maxH.rzsp);\r\n if (distanceMin < distanceMax) {\r\n return this.minH;\r\n } else if (distanceMin > distanceMax) {\r\n return this.maxH;\r\n } else if (!this.options.rightToLeft) {\r\n return position < this.minH.rzsp ? this.minH : this.maxH;\r\n }\r\n return position > this.minH.rzsp ? this.minH : this.maxH;\r\n },\r\n\r\n /**\r\n * Wrapper function to focus an angular element\r\n *\r\n * @param el {AngularElement} the element to focus\r\n */\r\n focusElement: function (el) {\r\n var DOM_ELEMENT = 0;\r\n el[DOM_ELEMENT].focus();\r\n },\r\n\r\n /**\r\n * Bind mouse and touch events to slider handles\r\n *\r\n * @returns {undefined}\r\n */\r\n bindEvents: function () {\r\n var barTracking, barStart, barMove;\r\n\r\n if (this.options.draggableRange) {\r\n barTracking = 'rzSliderDrag';\r\n barStart = this.onDragStart;\r\n barMove = this.onDragMove;\r\n } else {\r\n barTracking = 'lowValue';\r\n barStart = this.onStart;\r\n barMove = this.onMove;\r\n }\r\n\r\n if (!this.options.onlyBindHandles) {\r\n this.selBar.on('mousedown', angular.bind(this, barStart, null, barTracking));\r\n this.selBar.on('mousedown', angular.bind(this, barMove, this.selBar));\r\n }\r\n\r\n if (this.options.draggableRangeOnly) {\r\n this.minH.on('mousedown', angular.bind(this, barStart, null, barTracking));\r\n this.maxH.on('mousedown', angular.bind(this, barStart, null, barTracking));\r\n } else {\r\n this.minH.on('mousedown', angular.bind(this, this.onStart, this.minH, 'lowValue'));\r\n if (this.range) {\r\n this.maxH.on('mousedown', angular.bind(this, this.onStart, this.maxH, 'highValue'));\r\n }\r\n if (!this.options.onlyBindHandles) {\r\n this.fullBar.on('mousedown', angular.bind(this, this.onStart, null, null));\r\n this.fullBar.on('mousedown', angular.bind(this, this.onMove, this.fullBar));\r\n this.ticks.on('mousedown', angular.bind(this, this.onStart, null, null));\r\n this.ticks.on('mousedown', angular.bind(this, this.onTickClick, this.ticks));\r\n }\r\n }\r\n\r\n if (!this.options.onlyBindHandles) {\r\n this.selBar.on('touchstart', angular.bind(this, barStart, null, barTracking));\r\n this.selBar.on('touchstart', angular.bind(this, barMove, this.selBar));\r\n }\r\n if (this.options.draggableRangeOnly) {\r\n this.minH.on('touchstart', angular.bind(this, barStart, null, barTracking));\r\n this.maxH.on('touchstart', angular.bind(this, barStart, null, barTracking));\r\n } else {\r\n this.minH.on('touchstart', angular.bind(this, this.onStart, this.minH, 'lowValue'));\r\n if (this.range) {\r\n this.maxH.on('touchstart', angular.bind(this, this.onStart, this.maxH, 'highValue'));\r\n }\r\n if (!this.options.onlyBindHandles) {\r\n this.fullBar.on('touchstart', angular.bind(this, this.onStart, null, null));\r\n this.fullBar.on('touchstart', angular.bind(this, this.onMove, this.fullBar));\r\n this.ticks.on('touchstart', angular.bind(this, this.onStart, null, null));\r\n this.ticks.on('touchstart', angular.bind(this, this.onTickClick, this.ticks));\r\n }\r\n }\r\n\r\n if (this.options.keyboardSupport) {\r\n this.minH.on('focus', angular.bind(this, this.onPointerFocus, this.minH, 'lowValue'));\r\n if (this.range) {\r\n this.maxH.on('focus', angular.bind(this, this.onPointerFocus, this.maxH, 'highValue'));\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Unbind mouse and touch events to slider handles\r\n *\r\n * @returns {undefined}\r\n */\r\n unbindEvents: function () {\r\n this.minH.off();\r\n this.maxH.off();\r\n this.fullBar.off();\r\n this.selBar.off();\r\n this.ticks.off();\r\n },\r\n\r\n /**\r\n * onStart event handler\r\n *\r\n * @param {?Object} pointer The jqLite wrapped DOM element; if null, the closest handle is used\r\n * @param {?string} ref The name of the handle being changed; if null, the closest handle's value is modified\r\n * @param {Event} event The event\r\n * @returns {undefined}\r\n */\r\n onStart: function (pointer, ref, event) {\r\n var ehMove, ehEnd,\r\n eventNames = this.getEventNames(event);\r\n\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n // We have to do this in case the HTML where the sliders are on\r\n // have been animated into view.\r\n this.calcViewDimensions();\r\n\r\n if (pointer) {\r\n this.tracking = ref;\r\n } else {\r\n pointer = this.getNearestHandle(event);\r\n this.tracking = pointer === this.minH ? 'lowValue' : 'highValue';\r\n }\r\n\r\n pointer.addClass('rz-active');\r\n\r\n if (this.options.keyboardSupport) {\r\n this.focusElement(pointer);\r\n }\r\n\r\n ehMove = angular.bind(this, this.dragging.active ? this.onDragMove : this.onMove, pointer);\r\n ehEnd = angular.bind(this, this.onEnd, ehMove);\r\n\r\n $document.on(eventNames.moveEvent, ehMove);\r\n $document.one(eventNames.endEvent, ehEnd);\r\n this.callOnStart();\r\n },\r\n\r\n /**\r\n * onMove event handler\r\n *\r\n * @param {jqLite} pointer\r\n * @param {Event} event The event\r\n * @param {boolean} fromTick if the event occured on a tick or not\r\n * @returns {undefined}\r\n */\r\n onMove: function (pointer, event, fromTick) {\r\n var newPos = this.getEventPosition(event),\r\n newValue,\r\n ceilValue = this.options.rightToLeft ? this.minValue : this.maxValue,\r\n flrValue = this.options.rightToLeft ? this.maxValue : this.minValue;\r\n\r\n if (newPos <= 0) {\r\n newValue = flrValue;\r\n } else if (newPos >= this.maxPos) {\r\n newValue = ceilValue;\r\n } else {\r\n newValue = this.positionToValue(newPos);\r\n if (fromTick && angular.isNumber(this.options.showTicks)) {\r\n newValue = this.roundStep(newValue, this.options.showTicks);\r\n } else {\r\n newValue = this.roundStep(newValue);\r\n }\r\n }\r\n this.positionTrackingHandle(newValue);\r\n },\r\n\r\n /**\r\n * onEnd event handler\r\n *\r\n * @param {Event} event The event\r\n * @param {Function} ehMove The the bound move event handler\r\n * @returns {undefined}\r\n */\r\n onEnd: function (ehMove, event) {\r\n var moveEventName = this.getEventNames(event).moveEvent;\r\n\r\n if (!this.options.keyboardSupport) {\r\n this.minH.removeClass('rz-active');\r\n this.maxH.removeClass('rz-active');\r\n this.tracking = '';\r\n }\r\n this.dragging.active = false;\r\n\r\n $document.off(moveEventName, ehMove);\r\n this.callOnEnd();\r\n },\r\n\r\n onTickClick: function (pointer, event) {\r\n this.onMove(pointer, event, true);\r\n },\r\n\r\n onPointerFocus: function (pointer, ref) {\r\n this.tracking = ref;\r\n pointer.one('blur', angular.bind(this, this.onPointerBlur, pointer));\r\n pointer.on('keydown', angular.bind(this, this.onKeyboardEvent));\r\n pointer.on('keyup', angular.bind(this, this.onKeyUp));\r\n this.firstKeyDown = true;\r\n pointer.addClass('rz-active');\r\n\r\n this.currentFocusElement = {\r\n pointer: pointer,\r\n ref: ref\r\n };\r\n },\r\n\r\n onKeyUp: function () {\r\n this.firstKeyDown = true;\r\n this.callOnEnd();\r\n },\r\n\r\n onPointerBlur: function (pointer) {\r\n pointer.off('keydown');\r\n pointer.off('keyup');\r\n this.tracking = '';\r\n pointer.removeClass('rz-active');\r\n this.currentFocusElement = null;\r\n },\r\n\r\n /**\r\n * Key actions helper function\r\n *\r\n * @param {number} currentValue value of the slider\r\n *\r\n * @returns {?Object} action value mappings\r\n */\r\n getKeyActions: function (currentValue) {\r\n var increaseStep = currentValue + this.step,\r\n decreaseStep = currentValue - this.step,\r\n increasePage = currentValue + this.valueRange / 10,\r\n decreasePage = currentValue - this.valueRange / 10;\r\n\r\n // Left to right default actions\r\n var actions = {\r\n 'UP': increaseStep,\r\n 'DOWN': decreaseStep,\r\n 'LEFT': decreaseStep,\r\n 'RIGHT': increaseStep,\r\n 'PAGEUP': increasePage,\r\n 'PAGEDOWN': decreasePage,\r\n 'HOME': this.minValue,\r\n 'END': this.maxValue\r\n };\r\n // right to left means swapping right and left arrows\r\n if (this.options.rightToLeft) {\r\n actions.LEFT = increaseStep;\r\n actions.RIGHT = decreaseStep;\r\n // right to left and vertical means we also swap up and down\r\n if (this.options.vertical) {\r\n actions.UP = decreaseStep;\r\n actions.DOWN = increaseStep;\r\n }\r\n }\r\n return actions;\r\n },\r\n\r\n onKeyboardEvent: function (event) {\r\n var currentValue = this[this.tracking],\r\n keyCode = event.keyCode || event.which,\r\n keys = {\r\n 38: 'UP',\r\n 40: 'DOWN',\r\n 37: 'LEFT',\r\n 39: 'RIGHT',\r\n 33: 'PAGEUP',\r\n 34: 'PAGEDOWN',\r\n 36: 'HOME',\r\n 35: 'END'\r\n },\r\n actions = this.getKeyActions(currentValue),\r\n key = keys[keyCode],\r\n action = actions[key];\r\n if (action == null || this.tracking === '') return;\r\n event.preventDefault();\r\n\r\n if (this.firstKeyDown) {\r\n this.firstKeyDown = false;\r\n this.callOnStart();\r\n }\r\n\r\n var self = this;\r\n $timeout(function () {\r\n var newValue = self.roundStep(self.sanitizeValue(action));\r\n if (!self.options.draggableRangeOnly) {\r\n self.positionTrackingHandle(newValue);\r\n } else {\r\n var difference = self.highValue - self.lowValue,\r\n newMinValue, newMaxValue;\r\n if (self.tracking === 'lowValue') {\r\n newMinValue = newValue;\r\n newMaxValue = newValue + difference;\r\n if (newMaxValue > self.maxValue) {\r\n newMaxValue = self.maxValue;\r\n newMinValue = newMaxValue - difference;\r\n }\r\n } else {\r\n newMaxValue = newValue;\r\n newMinValue = newValue - difference;\r\n if (newMinValue < self.minValue) {\r\n newMinValue = self.minValue;\r\n newMaxValue = newMinValue + difference;\r\n }\r\n }\r\n self.positionTrackingBar(newMinValue, newMaxValue);\r\n }\r\n });\r\n },\r\n\r\n /**\r\n * onDragStart event handler\r\n *\r\n * Handles dragging of the middle bar.\r\n *\r\n * @param {Object} pointer The jqLite wrapped DOM element\r\n * @param {string} ref One of the refLow, refHigh values\r\n * @param {Event} event The event\r\n * @returns {undefined}\r\n */\r\n onDragStart: function (pointer, ref, event) {\r\n var position = this.getEventPosition(event);\r\n this.dragging = {\r\n active: true,\r\n value: this.positionToValue(position),\r\n difference: this.highValue - this.lowValue,\r\n lowLimit: this.options.rightToLeft ? this.minH.rzsp - position : position - this.minH.rzsp,\r\n highLimit: this.options.rightToLeft ? position - this.maxH.rzsp : this.maxH.rzsp - position\r\n };\r\n\r\n this.onStart(pointer, ref, event);\r\n },\r\n\r\n /**\r\n * getValue helper function\r\n *\r\n * gets max or min value depending on whether the newPos is outOfBounds above or below the bar and rightToLeft\r\n *\r\n * @param {string} type 'max' || 'min' The value we are calculating\r\n * @param {number} newPos The new position\r\n * @param {boolean} outOfBounds Is the new position above or below the max/min?\r\n * @param {boolean} isAbove Is the new position above the bar if out of bounds?\r\n *\r\n * @returns {number}\r\n */\r\n getValue: function (type, newPos, outOfBounds, isAbove) {\r\n var isRTL = this.options.rightToLeft,\r\n value = null;\r\n\r\n if (type === 'min') {\r\n if (outOfBounds) {\r\n if (isAbove) {\r\n value = isRTL ? this.minValue : this.maxValue - this.dragging.difference;\r\n } else {\r\n value = isRTL ? this.maxValue - this.dragging.difference : this.minValue;\r\n }\r\n } else {\r\n value = isRTL ? this.positionToValue(newPos + this.dragging.lowLimit) : this.positionToValue(newPos - this.dragging.lowLimit);\r\n }\r\n } else if (outOfBounds) {\r\n if (isAbove) {\r\n value = isRTL ? this.minValue + this.dragging.difference : this.maxValue;\r\n } else {\r\n value = isRTL ? this.maxValue : this.minValue + this.dragging.difference;\r\n }\r\n } else if (isRTL) {\r\n value = this.positionToValue(newPos + this.dragging.lowLimit) + this.dragging.difference;\r\n } else {\r\n value = this.positionToValue(newPos - this.dragging.lowLimit) + this.dragging.difference;\r\n }\r\n return this.roundStep(value);\r\n },\r\n\r\n /**\r\n * onDragMove event handler\r\n *\r\n * Handles dragging of the middle bar.\r\n *\r\n * @param {jqLite} pointer\r\n * @param {Event} event The event\r\n * @returns {undefined}\r\n */\r\n onDragMove: function (pointer, event) {\r\n var newPos = this.getEventPosition(event),\r\n newMinValue, newMaxValue,\r\n ceilLimit, flrLimit,\r\n isUnderFlrLimit, isOverCeilLimit,\r\n flrH, ceilH;\r\n\r\n if (this.options.rightToLeft) {\r\n ceilLimit = this.dragging.lowLimit;\r\n flrLimit = this.dragging.highLimit;\r\n flrH = this.maxH;\r\n ceilH = this.minH;\r\n } else {\r\n ceilLimit = this.dragging.highLimit;\r\n flrLimit = this.dragging.lowLimit;\r\n flrH = this.minH;\r\n ceilH = this.maxH;\r\n }\r\n isUnderFlrLimit = newPos <= flrLimit;\r\n isOverCeilLimit = newPos >= this.maxPos - ceilLimit;\r\n\r\n if (isUnderFlrLimit) {\r\n if (flrH.rzsp === 0) {\r\n return;\r\n }\r\n newMinValue = this.getValue('min', newPos, true, false);\r\n newMaxValue = this.getValue('max', newPos, true, false);\r\n } else if (isOverCeilLimit) {\r\n if (ceilH.rzsp === this.maxPos) {\r\n return;\r\n }\r\n newMaxValue = this.getValue('max', newPos, true, true);\r\n newMinValue = this.getValue('min', newPos, true, true);\r\n } else {\r\n newMinValue = this.getValue('min', newPos, false);\r\n newMaxValue = this.getValue('max', newPos, false);\r\n }\r\n this.positionTrackingBar(newMinValue, newMaxValue);\r\n },\r\n\r\n /**\r\n * Set the new value and position for the entire bar\r\n *\r\n * @param {number} newMinValue the new minimum value\r\n * @param {number} newMaxValue the new maximum value\r\n */\r\n positionTrackingBar: function (newMinValue, newMaxValue) {\r\n\r\n if (this.options.minLimit != null && newMinValue < this.options.minLimit) {\r\n newMinValue = this.options.minLimit;\r\n newMaxValue = newMinValue + this.dragging.difference;\r\n }\r\n if (this.options.maxLimit != null && newMaxValue > this.options.maxLimit) {\r\n newMaxValue = this.options.maxLimit;\r\n newMinValue = newMaxValue - this.dragging.difference;\r\n }\r\n\r\n this.lowValue = newMinValue;\r\n this.highValue = newMaxValue;\r\n this.applyLowValue();\r\n if (this.range) {this.applyHighValue();}\r\n this.applyModel(true);\r\n this.updateHandles('lowValue', this.valueToPosition(newMinValue));\r\n this.updateHandles('highValue', this.valueToPosition(newMaxValue));\r\n },\r\n\r\n /**\r\n * Set the new value and position to the current tracking handle\r\n *\r\n * @param {number} newValue new model value\r\n */\r\n positionTrackingHandle: function (newValue) {\r\n var valueChanged = false;\r\n newValue = this.applyMinMaxLimit(newValue);\r\n if (this.range) {\r\n if (this.options.pushRange) {\r\n newValue = this.applyPushRange(newValue);\r\n valueChanged = true;\r\n } else {\r\n if (this.options.noSwitching) {\r\n if (this.tracking === 'lowValue' && newValue > this.highValue) {\r\n newValue = this.applyMinMaxRange(this.highValue);\r\n } else if (this.tracking === 'highValue' && newValue < this.lowValue) {\r\n newValue = this.applyMinMaxRange(this.lowValue);\r\n }\r\n }\r\n newValue = this.applyMinMaxRange(newValue);\r\n /* This is to check if we need to switch the min and max handles */\r\n if (this.tracking === 'lowValue' && newValue > this.highValue) {\r\n this.lowValue = this.highValue;\r\n this.applyLowValue();\r\n this.applyModel();\r\n this.updateHandles(this.tracking, this.maxH.rzsp);\r\n this.updateAriaAttributes();\r\n this.tracking = 'highValue';\r\n this.minH.removeClass('rz-active');\r\n this.maxH.addClass('rz-active');\r\n if (this.options.keyboardSupport) {\r\n this.focusElement(this.maxH);\r\n }\r\n valueChanged = true;\r\n } else if (this.tracking === 'highValue' && newValue < this.lowValue) {\r\n this.highValue = this.lowValue;\r\n this.applyHighValue();\r\n this.applyModel();\r\n this.updateHandles(this.tracking, this.minH.rzsp);\r\n this.updateAriaAttributes();\r\n this.tracking = 'lowValue';\r\n this.maxH.removeClass('rz-active');\r\n this.minH.addClass('rz-active');\r\n if (this.options.keyboardSupport) {\r\n this.focusElement(this.minH);\r\n }\r\n valueChanged = true;\r\n }\r\n }\r\n }\r\n\r\n if (this[this.tracking] !== newValue) {\r\n this[this.tracking] = newValue;\r\n if (this.tracking === 'lowValue') {\r\n this.applyLowValue();\r\n } else {\r\n this.applyHighValue();\r\n }\r\n this.applyModel();\r\n this.updateHandles(this.tracking, this.valueToPosition(newValue));\r\n this.updateAriaAttributes();\r\n valueChanged = true;\r\n }\r\n\r\n if (valueChanged) {this.applyModel(true);}\r\n },\r\n\r\n applyMinMaxLimit: function (newValue) {\r\n if (this.options.minLimit != null && newValue < this.options.minLimit) {\r\n return this.options.minLimit;\r\n }\r\n if (this.options.maxLimit != null && newValue > this.options.maxLimit) {\r\n return this.options.maxLimit;\r\n }\r\n return newValue;\r\n },\r\n\r\n applyMinMaxRange: function (newValue) {\r\n var oppositeValue = this.tracking === 'lowValue' ? this.highValue : this.lowValue,\r\n difference = Math.abs(newValue - oppositeValue);\r\n if (this.options.minRange != null) {\r\n if (difference < this.options.minRange) {\r\n if (this.tracking === 'lowValue') {\r\n return this.highValue - this.options.minRange;\r\n }\r\n return this.lowValue + this.options.minRange;\r\n }\r\n }\r\n if (this.options.maxRange != null) {\r\n if (difference > this.options.maxRange) {\r\n if (this.tracking === 'lowValue') {\r\n return this.highValue - this.options.maxRange;\r\n }\r\n return this.lowValue + this.options.maxRange;\r\n }\r\n }\r\n return newValue;\r\n },\r\n\r\n applyPushRange: function (newValue) {\r\n var difference = this.tracking === 'lowValue' ? this.highValue - newValue : newValue - this.lowValue,\r\n minRange = this.options.minRange !== null ? this.options.minRange : this.options.step,\r\n maxRange = this.options.maxRange;\r\n // if smaller than minRange\r\n if (difference < minRange) {\r\n if (this.tracking === 'lowValue') {\r\n this.highValue = Math.min(newValue + minRange, this.maxValue);\r\n newValue = this.highValue - minRange;\r\n this.applyHighValue();\r\n this.updateHandles('highValue', this.valueToPosition(this.highValue));\r\n } else {\r\n this.lowValue = Math.max(newValue - minRange, this.minValue);\r\n newValue = this.lowValue + minRange;\r\n this.applyLowValue();\r\n this.updateHandles('lowValue', this.valueToPosition(this.lowValue));\r\n }\r\n this.updateAriaAttributes();\r\n }\r\n // if greater than maxRange\r\n else if (maxRange !== null && difference > maxRange) {\r\n if (this.tracking === 'lowValue') {\r\n this.highValue = newValue + maxRange;\r\n this.applyHighValue();\r\n this.updateHandles('highValue', this.valueToPosition(this.highValue));\r\n } else {\r\n this.lowValue = newValue - maxRange;\r\n this.applyLowValue();\r\n this.updateHandles('lowValue', this.valueToPosition(this.lowValue));\r\n }\r\n this.updateAriaAttributes();\r\n }\r\n return newValue;\r\n },\r\n\r\n /**\r\n * Apply the model values using scope.$apply.\r\n * We wrap it with the internalChange flag to avoid the watchers to be called\r\n */\r\n applyModel: function (callOnChange) {\r\n this.internalChange = true;\r\n this.scope.$apply();\r\n callOnChange && this.callOnChange();\r\n this.internalChange = false;\r\n },\r\n\r\n /**\r\n * Call the onStart callback if defined\r\n * The callback call is wrapped in a $evalAsync to ensure that its result will be applied to the scope.\r\n *\r\n * @returns {undefined}\r\n */\r\n callOnStart: function () {\r\n if (this.options.onStart) {\r\n var self = this,\r\n pointerType = this.tracking === 'lowValue' ? 'min' : 'max';\r\n this.scope.$evalAsync(function () {\r\n self.options.onStart(self.options.id, self.scope.rzSliderModel, self.scope.rzSliderHigh, pointerType);\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * Call the onChange callback if defined\r\n * The callback call is wrapped in a $evalAsync to ensure that its result will be applied to the scope.\r\n *\r\n * @returns {undefined}\r\n */\r\n callOnChange: function () {\r\n if (this.options.onChange) {\r\n var self = this,\r\n pointerType = this.tracking === 'lowValue' ? 'min' : 'max';\r\n this.scope.$evalAsync(function () {\r\n self.options.onChange(self.options.id, self.scope.rzSliderModel, self.scope.rzSliderHigh, pointerType);\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * Call the onEnd callback if defined\r\n * The callback call is wrapped in a $evalAsync to ensure that its result will be applied to the scope.\r\n *\r\n * @returns {undefined}\r\n */\r\n callOnEnd: function () {\r\n if (this.options.onEnd) {\r\n var self = this,\r\n pointerType = this.tracking === 'lowValue' ? 'min' : 'max';\r\n this.scope.$evalAsync(function () {\r\n self.options.onEnd(self.options.id, self.scope.rzSliderModel, self.scope.rzSliderHigh, pointerType);\r\n });\r\n }\r\n this.scope.$emit('slideEnded');\r\n }\r\n };\r\n\r\n return Slider;\r\n }])\r\n\r\n .directive('rzslider', ['RzSlider', function (RzSlider) {\r\n 'use strict';\r\n\r\n return {\r\n restrict: 'AE',\r\n replace: true,\r\n scope: {\r\n rzSliderModel: '=?',\r\n rzSliderHigh: '=?',\r\n rzSliderOptions: '&?',\r\n rzSliderTplUrl: '@'\r\n },\r\n\r\n /**\r\n * Return template URL\r\n *\r\n * @param {jqLite} elem\r\n * @param {Object} attrs\r\n * @return {string}\r\n */\r\n templateUrl: function (elem, attrs) {\r\n // noinspection JSUnresolvedVariable\r\n return attrs.rzSliderTplUrl || 'rzSliderTpl.html';\r\n },\r\n\r\n link: function (scope, elem) {\r\n scope.slider = new RzSlider(scope, elem); // attach on scope so we can test it\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n","/*\r\n * angular-ui-bootstrap\r\n * http://angular-ui.github.io/bootstrap/\r\n\r\n * Version: 2.5.0 - 2017-01-28\r\n * License: MIT\r\n */angular.module(\"ui.bootstrap\", [\"ui.bootstrap.tpls\",\"ui.bootstrap.collapse\",\"ui.bootstrap.tabindex\",\"ui.bootstrap.accordion\",\"ui.bootstrap.alert\",\"ui.bootstrap.buttons\",\"ui.bootstrap.dateparser\",\"ui.bootstrap.datepicker\",\"ui.bootstrap.isClass\",\"ui.bootstrap.position\",\"ui.bootstrap.multiMap\",\"ui.bootstrap.modal\",\"ui.bootstrap.stackedMap\",\"ui.bootstrap.paging\",\"ui.bootstrap.pagination\",\"ui.bootstrap.tooltip\",\"ui.bootstrap.popover\",\"ui.bootstrap.tabs\",\"ui.bootstrap.rating\",\"ui.bootstrap.dropdown\",\"ui.bootstrap.datepickerPopup\"]);\r\nangular.module(\"ui.bootstrap.tpls\", [\"uib/template/accordion/accordion-group.html\",\"uib/template/accordion/accordion.html\",\"uib/template/alert/alert.html\",\"uib/template/datepicker/datepicker.html\",\"uib/template/datepicker/day.html\",\"uib/template/datepicker/month.html\",\"uib/template/datepicker/year.html\",\"uib/template/modal/window.html\",\"uib/template/pagination/pagination.html\",\"uib/template/tooltip/tooltip-html-popup.html\",\"uib/template/tooltip/tooltip-popup.html\",\"uib/template/tooltip/tooltip-template-popup.html\",\"uib/template/popover/popover-html.html\",\"uib/template/popover/popover-template.html\",\"uib/template/popover/popover.html\",\"uib/template/tabs/tab.html\",\"uib/template/tabs/tabset.html\",\"uib/template/rating/rating.html\",\"uib/template/datepickerPopup/popup.html\"]);\r\nangular.module('ui.bootstrap.collapse', [])\r\n\r\n .directive('uibCollapse', ['$animate', '$q', '$parse', '$injector', function($animate, $q, $parse, $injector) {\r\n var $animateCss = $injector.has('$animateCss') ? $injector.get('$animateCss') : null;\r\n return {\r\n link: function(scope, element, attrs) {\r\n var expandingExpr = $parse(attrs.expanding),\r\n expandedExpr = $parse(attrs.expanded),\r\n collapsingExpr = $parse(attrs.collapsing),\r\n collapsedExpr = $parse(attrs.collapsed),\r\n horizontal = false,\r\n css = {},\r\n cssTo = {};\r\n\r\n init();\r\n\r\n function init() {\r\n horizontal = !!('horizontal' in attrs);\r\n if (horizontal) {\r\n css = {\r\n width: ''\r\n };\r\n cssTo = {width: '0'};\r\n } else {\r\n css = {\r\n height: ''\r\n };\r\n cssTo = {height: '0'};\r\n }\r\n if (!scope.$eval(attrs.uibCollapse)) {\r\n element.addClass('in')\r\n .addClass('collapse')\r\n .attr('aria-expanded', true)\r\n .attr('aria-hidden', false)\r\n .css(css);\r\n }\r\n }\r\n\r\n function getScrollFromElement(element) {\r\n if (horizontal) {\r\n return {width: element.scrollWidth + 'px'};\r\n }\r\n // hack\r\n $(element).css({'display': 'block', 'height': 'auto'});\r\n var h = $(element).outerHeight(true);\r\n $(element).css({'display': '', 'height': ''});\r\n return {height: h + 'px'};\r\n // return {height: element.scrollHeight + 'px'};\r\n // hack end\r\n }\r\n\r\n function expand() {\r\n if (element.hasClass('collapse') && element.hasClass('in')) {\r\n return;\r\n }\r\n\r\n $q.resolve(expandingExpr(scope))\r\n .then(function() {\r\n element.removeClass('collapse')\r\n .addClass('collapsing')\r\n .attr('aria-expanded', true)\r\n .attr('aria-hidden', false);\r\n\r\n if ($animateCss) {\r\n $animateCss(element, {\r\n addClass: 'in',\r\n easing: 'ease',\r\n css: {\r\n overflow: 'hidden'\r\n },\r\n to: getScrollFromElement(element[0])\r\n }).start()['finally'](expandDone);\r\n } else {\r\n $animate.addClass(element, 'in', {\r\n css: {\r\n overflow: 'hidden'\r\n },\r\n to: getScrollFromElement(element[0])\r\n }).then(expandDone);\r\n }\r\n }, angular.noop);\r\n }\r\n\r\n function expandDone() {\r\n element.removeClass('collapsing')\r\n .addClass('collapse')\r\n .css(css);\r\n expandedExpr(scope);\r\n }\r\n\r\n function collapse() {\r\n if (!element.hasClass('collapse') && !element.hasClass('in')) {\r\n return collapseDone();\r\n }\r\n\r\n $q.resolve(collapsingExpr(scope))\r\n .then(function() {\r\n element\r\n // IMPORTANT: The width must be set before adding \"collapsing\" class.\r\n // Otherwise, the browser attempts to animate from width 0 (in\r\n // collapsing class) to the given width here.\r\n .css(getScrollFromElement(element[0]))\r\n // initially all panel collapse have the collapse class, this removal\r\n // prevents the animation from jumping to collapsed state\r\n .removeClass('collapse')\r\n .addClass('collapsing')\r\n .attr('aria-expanded', false)\r\n .attr('aria-hidden', true);\r\n\r\n if ($animateCss) {\r\n $animateCss(element, {\r\n removeClass: 'in',\r\n to: cssTo\r\n }).start()['finally'](collapseDone);\r\n } else {\r\n $animate.removeClass(element, 'in', {\r\n to: cssTo\r\n }).then(collapseDone);\r\n }\r\n }, angular.noop);\r\n }\r\n\r\n function collapseDone() {\r\n element.css(cssTo); // Required so that collapse works when animation is disabled\r\n element.removeClass('collapsing')\r\n .addClass('collapse');\r\n collapsedExpr(scope);\r\n }\r\n\r\n scope.$watch(attrs.uibCollapse, function(shouldCollapse) {\r\n if (shouldCollapse) {\r\n collapse();\r\n } else {\r\n expand();\r\n }\r\n });\r\n }\r\n };\r\n }]);\r\n\r\nangular.module('ui.bootstrap.tabindex', [])\r\n\r\n.directive('uibTabindexToggle', function() {\r\n return {\r\n restrict: 'A',\r\n link: function(scope, elem, attrs) {\r\n attrs.$observe('disabled', function(disabled) {\r\n attrs.$set('tabindex', disabled ? -1 : null);\r\n });\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.accordion', ['ui.bootstrap.collapse', 'ui.bootstrap.tabindex'])\r\n\r\n.constant('uibAccordionConfig', {\r\n closeOthers: true\r\n})\r\n\r\n.controller('UibAccordionController', ['$scope', '$attrs', 'uibAccordionConfig', function($scope, $attrs, accordionConfig) {\r\n // This array keeps track of the accordion groups\r\n this.groups = [];\r\n\r\n // Ensure that all the groups in this accordion are closed, unless close-others explicitly says not to\r\n this.closeOthers = function(openGroup) {\r\n var closeOthers = angular.isDefined($attrs.closeOthers) ?\r\n $scope.$eval($attrs.closeOthers) : accordionConfig.closeOthers;\r\n if (closeOthers) {\r\n angular.forEach(this.groups, function(group) {\r\n if (group !== openGroup) {\r\n group.isOpen = false;\r\n }\r\n });\r\n }\r\n };\r\n\r\n // This is called from the accordion-group directive to add itself to the accordion\r\n this.addGroup = function(groupScope) {\r\n var that = this;\r\n this.groups.push(groupScope);\r\n\r\n groupScope.$on('$destroy', function(event) {\r\n that.removeGroup(groupScope);\r\n });\r\n };\r\n\r\n // This is called from the accordion-group directive when to remove itself\r\n this.removeGroup = function(group) {\r\n var index = this.groups.indexOf(group);\r\n if (index !== -1) {\r\n this.groups.splice(index, 1);\r\n }\r\n };\r\n}])\r\n\r\n// The accordion directive simply sets up the directive controller\r\n// and adds an accordion CSS class to itself element.\r\n.directive('uibAccordion', function() {\r\n return {\r\n controller: 'UibAccordionController',\r\n controllerAs: 'accordion',\r\n transclude: true,\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/accordion/accordion.html';\r\n }\r\n };\r\n})\r\n\r\n// The accordion-group directive indicates a block of html that will expand and collapse in an accordion\r\n.directive('uibAccordionGroup', function() {\r\n return {\r\n require: '^uibAccordion', // We need this directive to be inside an accordion\r\n transclude: true, // It transcludes the contents of the directive into the template\r\n restrict: 'A',\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/accordion/accordion-group.html';\r\n },\r\n scope: {\r\n heading: '@', // Interpolate the heading attribute onto this scope\r\n panelClass: '@?', // Ditto with panelClass\r\n isOpen: '=?',\r\n isDisabled: '=?'\r\n },\r\n controller: function() {\r\n this.setHeading = function(element) {\r\n this.heading = element;\r\n };\r\n },\r\n link: function(scope, element, attrs, accordionCtrl) {\r\n element.addClass('panel');\r\n accordionCtrl.addGroup(scope);\r\n\r\n scope.openClass = attrs.openClass || 'panel-open';\r\n scope.panelClass = attrs.panelClass || 'panel-default';\r\n scope.$watch('isOpen', function(value) {\r\n element.toggleClass(scope.openClass, !!value);\r\n if (value) {\r\n accordionCtrl.closeOthers(scope);\r\n }\r\n });\r\n\r\n scope.toggleOpen = function($event) {\r\n if (!scope.isDisabled) {\r\n if (!$event || $event.which === 32) {\r\n scope.isOpen = !scope.isOpen;\r\n }\r\n }\r\n };\r\n\r\n var id = 'accordiongroup-' + scope.$id + '-' + Math.floor(Math.random() * 10000);\r\n scope.headingId = id + '-tab';\r\n scope.panelId = id + '-panel';\r\n }\r\n };\r\n})\r\n\r\n// Use accordion-heading below an accordion-group to provide a heading containing HTML\r\n.directive('uibAccordionHeading', function() {\r\n return {\r\n transclude: true, // Grab the contents to be used as the heading\r\n template: '', // In effect remove this element!\r\n replace: true,\r\n require: '^uibAccordionGroup',\r\n link: function(scope, element, attrs, accordionGroupCtrl, transclude) {\r\n // Pass the heading to the accordion-group controller\r\n // so that it can be transcluded into the right place in the template\r\n // [The second parameter to transclude causes the elements to be cloned so that they work in ng-repeat]\r\n accordionGroupCtrl.setHeading(transclude(scope, angular.noop));\r\n }\r\n };\r\n})\r\n\r\n// Use in the accordion-group template to indicate where you want the heading to be transcluded\r\n// You must provide the property on the accordion-group controller that will hold the transcluded element\r\n.directive('uibAccordionTransclude', function() {\r\n return {\r\n require: '^uibAccordionGroup',\r\n link: function(scope, element, attrs, controller) {\r\n scope.$watch(function() { return controller[attrs.uibAccordionTransclude]; }, function(heading) {\r\n if (heading) {\r\n var elem = angular.element(element[0].querySelector(getHeaderSelectors()));\r\n elem.html('');\r\n elem.append(heading);\r\n }\r\n });\r\n }\r\n };\r\n\r\n function getHeaderSelectors() {\r\n return 'uib-accordion-header,' +\r\n 'data-uib-accordion-header,' +\r\n 'x-uib-accordion-header,' +\r\n 'uib\\\\:accordion-header,' +\r\n '[uib-accordion-header],' +\r\n '[data-uib-accordion-header],' +\r\n '[x-uib-accordion-header]';\r\n }\r\n});\r\n\r\nangular.module('ui.bootstrap.alert', [])\r\n\r\n.controller('UibAlertController', ['$scope', '$element', '$attrs', '$interpolate', '$timeout', function($scope, $element, $attrs, $interpolate, $timeout) {\r\n $scope.closeable = !!$attrs.close;\r\n $element.addClass('alert');\r\n $attrs.$set('role', 'alert');\r\n if ($scope.closeable) {\r\n $element.addClass('alert-dismissible');\r\n }\r\n\r\n var dismissOnTimeout = angular.isDefined($attrs.dismissOnTimeout) ?\r\n $interpolate($attrs.dismissOnTimeout)($scope.$parent) : null;\r\n\r\n if (dismissOnTimeout) {\r\n $timeout(function() {\r\n $scope.close();\r\n }, parseInt(dismissOnTimeout, 10));\r\n }\r\n}])\r\n\r\n.directive('uibAlert', function() {\r\n return {\r\n controller: 'UibAlertController',\r\n controllerAs: 'alert',\r\n restrict: 'A',\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/alert/alert.html';\r\n },\r\n transclude: true,\r\n scope: {\r\n close: '&'\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.buttons', [])\r\n\r\n.constant('uibButtonConfig', {\r\n activeClass: 'active',\r\n toggleEvent: 'click'\r\n})\r\n\r\n.controller('UibButtonsController', ['uibButtonConfig', function(buttonConfig) {\r\n this.activeClass = buttonConfig.activeClass || 'active';\r\n this.toggleEvent = buttonConfig.toggleEvent || 'click';\r\n}])\r\n\r\n.directive('uibBtnRadio', ['$parse', function($parse) {\r\n return {\r\n require: ['uibBtnRadio', 'ngModel'],\r\n controller: 'UibButtonsController',\r\n controllerAs: 'buttons',\r\n link: function(scope, element, attrs, ctrls) {\r\n var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n var uncheckableExpr = $parse(attrs.uibUncheckable);\r\n\r\n element.find('input').css({display: 'none'});\r\n\r\n //model -> UI\r\n ngModelCtrl.$render = function() {\r\n element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, scope.$eval(attrs.uibBtnRadio)));\r\n };\r\n\r\n //ui->model\r\n element.on(buttonsCtrl.toggleEvent, function() {\r\n if (attrs.disabled) {\r\n return;\r\n }\r\n\r\n var isActive = element.hasClass(buttonsCtrl.activeClass);\r\n\r\n if (!isActive || angular.isDefined(attrs.uncheckable)) {\r\n scope.$apply(function() {\r\n ngModelCtrl.$setViewValue(isActive ? null : scope.$eval(attrs.uibBtnRadio));\r\n ngModelCtrl.$render();\r\n });\r\n }\r\n });\r\n\r\n if (attrs.uibUncheckable) {\r\n scope.$watch(uncheckableExpr, function(uncheckable) {\r\n attrs.$set('uncheckable', uncheckable ? '' : undefined);\r\n });\r\n }\r\n }\r\n };\r\n}])\r\n\r\n.directive('uibBtnCheckbox', function() {\r\n return {\r\n require: ['uibBtnCheckbox', 'ngModel'],\r\n controller: 'UibButtonsController',\r\n controllerAs: 'button',\r\n link: function(scope, element, attrs, ctrls) {\r\n var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n\r\n element.find('input').css({display: 'none'});\r\n\r\n function getTrueValue() {\r\n return getCheckboxValue(attrs.btnCheckboxTrue, true);\r\n }\r\n\r\n function getFalseValue() {\r\n return getCheckboxValue(attrs.btnCheckboxFalse, false);\r\n }\r\n\r\n function getCheckboxValue(attribute, defaultValue) {\r\n return angular.isDefined(attribute) ? scope.$eval(attribute) : defaultValue;\r\n }\r\n\r\n //model -> UI\r\n ngModelCtrl.$render = function() {\r\n element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, getTrueValue()));\r\n };\r\n\r\n //ui->model\r\n element.on(buttonsCtrl.toggleEvent, function() {\r\n if (attrs.disabled) {\r\n return;\r\n }\r\n\r\n scope.$apply(function() {\r\n ngModelCtrl.$setViewValue(element.hasClass(buttonsCtrl.activeClass) ? getFalseValue() : getTrueValue());\r\n ngModelCtrl.$render();\r\n });\r\n });\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.dateparser', [])\r\n\r\n.service('uibDateParser', ['$log', '$locale', 'dateFilter', 'orderByFilter', 'filterFilter', function($log, $locale, dateFilter, orderByFilter, filterFilter) {\r\n // Pulled from https://github.com/mbostock/d3/blob/master/src/format/requote.js\r\n var SPECIAL_CHARACTERS_REGEXP = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\r\n\r\n var localeId;\r\n var formatCodeToRegex;\r\n\r\n this.init = function() {\r\n localeId = $locale.id;\r\n\r\n this.parsers = {};\r\n this.formatters = {};\r\n\r\n formatCodeToRegex = [\r\n {\r\n key: 'yyyy',\r\n regex: '\\\\d{4}',\r\n apply: function(value) { this.year = +value; },\r\n formatter: function(date) {\r\n var _date = new Date();\r\n _date.setFullYear(Math.abs(date.getFullYear()));\r\n return dateFilter(_date, 'yyyy');\r\n }\r\n },\r\n {\r\n key: 'yy',\r\n regex: '\\\\d{2}',\r\n apply: function(value) { value = +value; this.year = value < 69 ? value + 2000 : value + 1900; },\r\n formatter: function(date) {\r\n var _date = new Date();\r\n _date.setFullYear(Math.abs(date.getFullYear()));\r\n return dateFilter(_date, 'yy');\r\n }\r\n },\r\n {\r\n key: 'y',\r\n regex: '\\\\d{1,4}',\r\n apply: function(value) { this.year = +value; },\r\n formatter: function(date) {\r\n var _date = new Date();\r\n _date.setFullYear(Math.abs(date.getFullYear()));\r\n return dateFilter(_date, 'y');\r\n }\r\n },\r\n {\r\n key: 'M!',\r\n regex: '0?[1-9]|1[0-2]',\r\n apply: function(value) { this.month = value - 1; },\r\n formatter: function(date) {\r\n var value = date.getMonth();\r\n if (/^[0-9]$/.test(value)) {\r\n return dateFilter(date, 'MM');\r\n }\r\n\r\n return dateFilter(date, 'M');\r\n }\r\n },\r\n {\r\n key: 'MMMM',\r\n regex: $locale.DATETIME_FORMATS.MONTH.join('|'),\r\n apply: function(value) { this.month = $locale.DATETIME_FORMATS.MONTH.indexOf(value); },\r\n formatter: function(date) { return dateFilter(date, 'MMMM'); }\r\n },\r\n {\r\n key: 'MMM',\r\n regex: $locale.DATETIME_FORMATS.SHORTMONTH.join('|'),\r\n apply: function(value) { this.month = $locale.DATETIME_FORMATS.SHORTMONTH.indexOf(value); },\r\n formatter: function(date) { return dateFilter(date, 'MMM'); }\r\n },\r\n {\r\n key: 'MM',\r\n regex: '0[1-9]|1[0-2]',\r\n apply: function(value) { this.month = value - 1; },\r\n formatter: function(date) { return dateFilter(date, 'MM'); }\r\n },\r\n {\r\n key: 'M',\r\n regex: '[1-9]|1[0-2]',\r\n apply: function(value) { this.month = value - 1; },\r\n formatter: function(date) { return dateFilter(date, 'M'); }\r\n },\r\n {\r\n key: 'd!',\r\n regex: '[0-2]?[0-9]{1}|3[0-1]{1}',\r\n apply: function(value) { this.date = +value; },\r\n formatter: function(date) {\r\n var value = date.getDate();\r\n if (/^[1-9]$/.test(value)) {\r\n return dateFilter(date, 'dd');\r\n }\r\n\r\n return dateFilter(date, 'd');\r\n }\r\n },\r\n {\r\n key: 'dd',\r\n regex: '[0-2][0-9]{1}|3[0-1]{1}',\r\n apply: function(value) { this.date = +value; },\r\n formatter: function(date) { return dateFilter(date, 'dd'); }\r\n },\r\n {\r\n key: 'd',\r\n regex: '[1-2]?[0-9]{1}|3[0-1]{1}',\r\n apply: function(value) { this.date = +value; },\r\n formatter: function(date) { return dateFilter(date, 'd'); }\r\n },\r\n {\r\n key: 'EEEE',\r\n regex: $locale.DATETIME_FORMATS.DAY.join('|'),\r\n formatter: function(date) { return dateFilter(date, 'EEEE'); }\r\n },\r\n {\r\n key: 'EEE',\r\n regex: $locale.DATETIME_FORMATS.SHORTDAY.join('|'),\r\n formatter: function(date) { return dateFilter(date, 'EEE'); }\r\n },\r\n {\r\n key: 'HH',\r\n regex: '(?:0|1)[0-9]|2[0-3]',\r\n apply: function(value) { this.hours = +value; },\r\n formatter: function(date) { return dateFilter(date, 'HH'); }\r\n },\r\n {\r\n key: 'hh',\r\n regex: '0[0-9]|1[0-2]',\r\n apply: function(value) { this.hours = +value; },\r\n formatter: function(date) { return dateFilter(date, 'hh'); }\r\n },\r\n {\r\n key: 'H',\r\n regex: '1?[0-9]|2[0-3]',\r\n apply: function(value) { this.hours = +value; },\r\n formatter: function(date) { return dateFilter(date, 'H'); }\r\n },\r\n {\r\n key: 'h',\r\n regex: '[0-9]|1[0-2]',\r\n apply: function(value) { this.hours = +value; },\r\n formatter: function(date) { return dateFilter(date, 'h'); }\r\n },\r\n {\r\n key: 'mm',\r\n regex: '[0-5][0-9]',\r\n apply: function(value) { this.minutes = +value; },\r\n formatter: function(date) { return dateFilter(date, 'mm'); }\r\n },\r\n {\r\n key: 'm',\r\n regex: '[0-9]|[1-5][0-9]',\r\n apply: function(value) { this.minutes = +value; },\r\n formatter: function(date) { return dateFilter(date, 'm'); }\r\n },\r\n {\r\n key: 'sss',\r\n regex: '[0-9][0-9][0-9]',\r\n apply: function(value) { this.milliseconds = +value; },\r\n formatter: function(date) { return dateFilter(date, 'sss'); }\r\n },\r\n {\r\n key: 'ss',\r\n regex: '[0-5][0-9]',\r\n apply: function(value) { this.seconds = +value; },\r\n formatter: function(date) { return dateFilter(date, 'ss'); }\r\n },\r\n {\r\n key: 's',\r\n regex: '[0-9]|[1-5][0-9]',\r\n apply: function(value) { this.seconds = +value; },\r\n formatter: function(date) { return dateFilter(date, 's'); }\r\n },\r\n {\r\n key: 'a',\r\n regex: $locale.DATETIME_FORMATS.AMPMS.join('|'),\r\n apply: function(value) {\r\n if (this.hours === 12) {\r\n this.hours = 0;\r\n }\r\n\r\n if (value === 'PM') {\r\n this.hours += 12;\r\n }\r\n },\r\n formatter: function(date) { return dateFilter(date, 'a'); }\r\n },\r\n {\r\n key: 'Z',\r\n regex: '[+-]\\\\d{4}',\r\n apply: function(value) {\r\n var matches = value.match(/([+-])(\\d{2})(\\d{2})/),\r\n sign = matches[1],\r\n hours = matches[2],\r\n minutes = matches[3];\r\n this.hours += toInt(sign + hours);\r\n this.minutes += toInt(sign + minutes);\r\n },\r\n formatter: function(date) {\r\n return dateFilter(date, 'Z');\r\n }\r\n },\r\n {\r\n key: 'ww',\r\n regex: '[0-4][0-9]|5[0-3]',\r\n formatter: function(date) { return dateFilter(date, 'ww'); }\r\n },\r\n {\r\n key: 'w',\r\n regex: '[0-9]|[1-4][0-9]|5[0-3]',\r\n formatter: function(date) { return dateFilter(date, 'w'); }\r\n },\r\n {\r\n key: 'GGGG',\r\n regex: $locale.DATETIME_FORMATS.ERANAMES.join('|').replace(/\\s/g, '\\\\s'),\r\n formatter: function(date) { return dateFilter(date, 'GGGG'); }\r\n },\r\n {\r\n key: 'GGG',\r\n regex: $locale.DATETIME_FORMATS.ERAS.join('|'),\r\n formatter: function(date) { return dateFilter(date, 'GGG'); }\r\n },\r\n {\r\n key: 'GG',\r\n regex: $locale.DATETIME_FORMATS.ERAS.join('|'),\r\n formatter: function(date) { return dateFilter(date, 'GG'); }\r\n },\r\n {\r\n key: 'G',\r\n regex: $locale.DATETIME_FORMATS.ERAS.join('|'),\r\n formatter: function(date) { return dateFilter(date, 'G'); }\r\n }\r\n ];\r\n\r\n if (angular.version.major >= 1 && angular.version.minor > 4) {\r\n formatCodeToRegex.push({\r\n key: 'LLLL',\r\n regex: $locale.DATETIME_FORMATS.STANDALONEMONTH.join('|'),\r\n apply: function(value) { this.month = $locale.DATETIME_FORMATS.STANDALONEMONTH.indexOf(value); },\r\n formatter: function(date) { return dateFilter(date, 'LLLL'); }\r\n });\r\n }\r\n };\r\n\r\n this.init();\r\n\r\n function getFormatCodeToRegex(key) {\r\n return filterFilter(formatCodeToRegex, {key: key}, true)[0];\r\n }\r\n\r\n this.getParser = function (key) {\r\n var f = getFormatCodeToRegex(key);\r\n return f && f.apply || null;\r\n };\r\n\r\n this.overrideParser = function (key, parser) {\r\n var f = getFormatCodeToRegex(key);\r\n if (f && angular.isFunction(parser)) {\r\n this.parsers = {};\r\n f.apply = parser;\r\n }\r\n }.bind(this);\r\n\r\n function createParser(format) {\r\n var map = [], regex = format.split('');\r\n\r\n // check for literal values\r\n var quoteIndex = format.indexOf('\\'');\r\n if (quoteIndex > -1) {\r\n var inLiteral = false;\r\n format = format.split('');\r\n for (var i = quoteIndex; i < format.length; i++) {\r\n if (inLiteral) {\r\n if (format[i] === '\\'') {\r\n if (i + 1 < format.length && format[i+1] === '\\'') { // escaped single quote\r\n format[i+1] = '$';\r\n regex[i+1] = '';\r\n } else { // end of literal\r\n regex[i] = '';\r\n inLiteral = false;\r\n }\r\n }\r\n format[i] = '$';\r\n } else {\r\n if (format[i] === '\\'') { // start of literal\r\n format[i] = '$';\r\n regex[i] = '';\r\n inLiteral = true;\r\n }\r\n }\r\n }\r\n\r\n format = format.join('');\r\n }\r\n\r\n angular.forEach(formatCodeToRegex, function(data) {\r\n var index = format.indexOf(data.key);\r\n\r\n if (index > -1) {\r\n format = format.split('');\r\n\r\n regex[index] = '(' + data.regex + ')';\r\n format[index] = '$'; // Custom symbol to define consumed part of format\r\n for (var i = index + 1, n = index + data.key.length; i < n; i++) {\r\n regex[i] = '';\r\n format[i] = '$';\r\n }\r\n format = format.join('');\r\n\r\n map.push({\r\n index: index,\r\n key: data.key,\r\n apply: data.apply,\r\n matcher: data.regex\r\n });\r\n }\r\n });\r\n\r\n return {\r\n regex: new RegExp('^' + regex.join('') + '$'),\r\n map: orderByFilter(map, 'index')\r\n };\r\n }\r\n\r\n function createFormatter(format) {\r\n var formatters = [];\r\n var i = 0;\r\n var formatter, literalIdx;\r\n while (i < format.length) {\r\n if (angular.isNumber(literalIdx)) {\r\n if (format.charAt(i) === '\\'') {\r\n if (i + 1 >= format.length || format.charAt(i + 1) !== '\\'') {\r\n formatters.push(constructLiteralFormatter(format, literalIdx, i));\r\n literalIdx = null;\r\n }\r\n } else if (i === format.length) {\r\n while (literalIdx < format.length) {\r\n formatter = constructFormatterFromIdx(format, literalIdx);\r\n formatters.push(formatter);\r\n literalIdx = formatter.endIdx;\r\n }\r\n }\r\n\r\n i++;\r\n continue;\r\n }\r\n\r\n if (format.charAt(i) === '\\'') {\r\n literalIdx = i;\r\n i++;\r\n continue;\r\n }\r\n\r\n formatter = constructFormatterFromIdx(format, i);\r\n\r\n formatters.push(formatter.parser);\r\n i = formatter.endIdx;\r\n }\r\n\r\n return formatters;\r\n }\r\n\r\n function constructLiteralFormatter(format, literalIdx, endIdx) {\r\n return function() {\r\n return format.substr(literalIdx + 1, endIdx - literalIdx - 1);\r\n };\r\n }\r\n\r\n function constructFormatterFromIdx(format, i) {\r\n var currentPosStr = format.substr(i);\r\n for (var j = 0; j < formatCodeToRegex.length; j++) {\r\n if (new RegExp('^' + formatCodeToRegex[j].key).test(currentPosStr)) {\r\n var data = formatCodeToRegex[j];\r\n return {\r\n endIdx: i + data.key.length,\r\n parser: data.formatter\r\n };\r\n }\r\n }\r\n\r\n return {\r\n endIdx: i + 1,\r\n parser: function() {\r\n return currentPosStr.charAt(0);\r\n }\r\n };\r\n }\r\n\r\n this.filter = function(date, format) {\r\n if (!angular.isDate(date) || isNaN(date) || !format) {\r\n return '';\r\n }\r\n\r\n format = $locale.DATETIME_FORMATS[format] || format;\r\n\r\n if ($locale.id !== localeId) {\r\n this.init();\r\n }\r\n\r\n if (!this.formatters[format]) {\r\n this.formatters[format] = createFormatter(format);\r\n }\r\n\r\n var formatters = this.formatters[format];\r\n\r\n return formatters.reduce(function(str, formatter) {\r\n return str + formatter(date);\r\n }, '');\r\n };\r\n\r\n this.parse = function(input, format, baseDate) {\r\n if (!angular.isString(input) || !format) {\r\n return input;\r\n }\r\n\r\n format = $locale.DATETIME_FORMATS[format] || format;\r\n format = format.replace(SPECIAL_CHARACTERS_REGEXP, '\\\\$&');\r\n\r\n if ($locale.id !== localeId) {\r\n this.init();\r\n }\r\n\r\n if (!this.parsers[format]) {\r\n this.parsers[format] = createParser(format, 'apply');\r\n }\r\n\r\n var parser = this.parsers[format],\r\n regex = parser.regex,\r\n map = parser.map,\r\n results = input.match(regex),\r\n tzOffset = false;\r\n if (results && results.length) {\r\n var fields, dt;\r\n if (angular.isDate(baseDate) && !isNaN(baseDate.getTime())) {\r\n fields = {\r\n year: baseDate.getFullYear(),\r\n month: baseDate.getMonth(),\r\n date: baseDate.getDate(),\r\n hours: baseDate.getHours(),\r\n minutes: baseDate.getMinutes(),\r\n seconds: baseDate.getSeconds(),\r\n milliseconds: baseDate.getMilliseconds()\r\n };\r\n } else {\r\n if (baseDate) {\r\n $log.warn('dateparser:', 'baseDate is not a valid date');\r\n }\r\n fields = { year: 1900, month: 0, date: 1, hours: 0, minutes: 0, seconds: 0, milliseconds: 0 };\r\n }\r\n\r\n for (var i = 1, n = results.length; i < n; i++) {\r\n var mapper = map[i - 1];\r\n if (mapper.matcher === 'Z') {\r\n tzOffset = true;\r\n }\r\n\r\n if (mapper.apply) {\r\n mapper.apply.call(fields, results[i]);\r\n }\r\n }\r\n\r\n var datesetter = tzOffset ? Date.prototype.setUTCFullYear :\r\n Date.prototype.setFullYear;\r\n var timesetter = tzOffset ? Date.prototype.setUTCHours :\r\n Date.prototype.setHours;\r\n\r\n if (isValid(fields.year, fields.month, fields.date)) {\r\n if (angular.isDate(baseDate) && !isNaN(baseDate.getTime()) && !tzOffset) {\r\n dt = new Date(baseDate);\r\n datesetter.call(dt, fields.year, fields.month, fields.date);\r\n timesetter.call(dt, fields.hours, fields.minutes,\r\n fields.seconds, fields.milliseconds);\r\n } else {\r\n dt = new Date(0);\r\n datesetter.call(dt, fields.year, fields.month, fields.date);\r\n timesetter.call(dt, fields.hours || 0, fields.minutes || 0,\r\n fields.seconds || 0, fields.milliseconds || 0);\r\n }\r\n }\r\n\r\n return dt;\r\n }\r\n };\r\n\r\n // Check if date is valid for specific month (and year for February).\r\n // Month: 0 = Jan, 1 = Feb, etc\r\n function isValid(year, month, date) {\r\n if (date < 1) {\r\n return false;\r\n }\r\n\r\n if (month === 1 && date > 28) {\r\n return date === 29 && (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0);\r\n }\r\n\r\n if (month === 3 || month === 5 || month === 8 || month === 10) {\r\n return date < 31;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function toInt(str) {\r\n return parseInt(str, 10);\r\n }\r\n\r\n this.toTimezone = toTimezone;\r\n this.fromTimezone = fromTimezone;\r\n this.timezoneToOffset = timezoneToOffset;\r\n this.addDateMinutes = addDateMinutes;\r\n this.convertTimezoneToLocal = convertTimezoneToLocal;\r\n\r\n function toTimezone(date, timezone) {\r\n return date && timezone ? convertTimezoneToLocal(date, timezone) : date;\r\n }\r\n\r\n function fromTimezone(date, timezone) {\r\n return date && timezone ? convertTimezoneToLocal(date, timezone, true) : date;\r\n }\r\n\r\n //https://github.com/angular/angular.js/blob/622c42169699ec07fc6daaa19fe6d224e5d2f70e/src/Angular.js#L1207\r\n function timezoneToOffset(timezone, fallback) {\r\n timezone = timezone.replace(/:/g, '');\r\n var requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;\r\n return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset;\r\n }\r\n\r\n function addDateMinutes(date, minutes) {\r\n date = new Date(date.getTime());\r\n date.setMinutes(date.getMinutes() + minutes);\r\n return date;\r\n }\r\n\r\n function convertTimezoneToLocal(date, timezone, reverse) {\r\n reverse = reverse ? -1 : 1;\r\n var dateTimezoneOffset = date.getTimezoneOffset();\r\n var timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\r\n return addDateMinutes(date, reverse * (timezoneOffset - dateTimezoneOffset));\r\n }\r\n}]);\r\n\r\nangular.module('ui.bootstrap.datepicker', ['ui.bootstrap.dateparser', 'ui.bootstrap.isClass'])\r\n\r\n.value('$datepickerSuppressError', false)\r\n\r\n.value('$datepickerLiteralWarning', true)\r\n\r\n.constant('uibDatepickerConfig', {\r\n datepickerMode: 'day',\r\n formatDay: 'dd',\r\n formatMonth: 'MMMM',\r\n formatYear: 'yyyy',\r\n formatDayHeader: 'EEE',\r\n formatDayTitle: 'MMMM yyyy',\r\n formatMonthTitle: 'yyyy',\r\n maxDate: null,\r\n maxMode: 'year',\r\n minDate: null,\r\n minMode: 'day',\r\n monthColumns: 3,\r\n ngModelOptions: {},\r\n shortcutPropagation: false,\r\n showWeeks: true,\r\n yearColumns: 5,\r\n yearRows: 4\r\n})\r\n\r\n.controller('UibDatepickerController', ['$scope', '$element', '$attrs', '$parse', '$interpolate', '$locale', '$log', 'dateFilter', 'uibDatepickerConfig', '$datepickerLiteralWarning', '$datepickerSuppressError', 'uibDateParser',\r\n function($scope, $element, $attrs, $parse, $interpolate, $locale, $log, dateFilter, datepickerConfig, $datepickerLiteralWarning, $datepickerSuppressError, dateParser) {\r\n var self = this,\r\n ngModelCtrl = { $setViewValue: angular.noop }, // nullModelCtrl;\r\n ngModelOptions = {},\r\n watchListeners = [];\r\n\r\n $element.addClass('uib-datepicker');\r\n $attrs.$set('role', 'application');\r\n\r\n if (!$scope.datepickerOptions) {\r\n $scope.datepickerOptions = {};\r\n }\r\n\r\n // Modes chain\r\n this.modes = ['day', 'month', 'year'];\r\n\r\n [\r\n 'customClass',\r\n 'dateDisabled',\r\n 'datepickerMode',\r\n 'formatDay',\r\n 'formatDayHeader',\r\n 'formatDayTitle',\r\n 'formatMonth',\r\n 'formatMonthTitle',\r\n 'formatYear',\r\n 'maxDate',\r\n 'maxMode',\r\n 'minDate',\r\n 'minMode',\r\n 'monthColumns',\r\n 'showWeeks',\r\n 'shortcutPropagation',\r\n 'startingDay',\r\n 'yearColumns',\r\n 'yearRows'\r\n ].forEach(function(key) {\r\n switch (key) {\r\n case 'customClass':\r\n case 'dateDisabled':\r\n $scope[key] = $scope.datepickerOptions[key] || angular.noop;\r\n break;\r\n case 'datepickerMode':\r\n $scope.datepickerMode = angular.isDefined($scope.datepickerOptions.datepickerMode) ?\r\n $scope.datepickerOptions.datepickerMode : datepickerConfig.datepickerMode;\r\n break;\r\n case 'formatDay':\r\n case 'formatDayHeader':\r\n case 'formatDayTitle':\r\n case 'formatMonth':\r\n case 'formatMonthTitle':\r\n case 'formatYear':\r\n self[key] = angular.isDefined($scope.datepickerOptions[key]) ?\r\n $interpolate($scope.datepickerOptions[key])($scope.$parent) :\r\n datepickerConfig[key];\r\n break;\r\n case 'monthColumns':\r\n case 'showWeeks':\r\n case 'shortcutPropagation':\r\n case 'yearColumns':\r\n case 'yearRows':\r\n self[key] = angular.isDefined($scope.datepickerOptions[key]) ?\r\n $scope.datepickerOptions[key] : datepickerConfig[key];\r\n break;\r\n case 'startingDay':\r\n if (angular.isDefined($scope.datepickerOptions.startingDay)) {\r\n self.startingDay = $scope.datepickerOptions.startingDay;\r\n } else if (angular.isNumber(datepickerConfig.startingDay)) {\r\n self.startingDay = datepickerConfig.startingDay;\r\n } else {\r\n self.startingDay = ($locale.DATETIME_FORMATS.FIRSTDAYOFWEEK + 8) % 7;\r\n }\r\n\r\n break;\r\n case 'maxDate':\r\n case 'minDate':\r\n $scope.$watch('datepickerOptions.' + key, function(value) {\r\n if (value) {\r\n if (angular.isDate(value)) {\r\n self[key] = dateParser.fromTimezone(new Date(value), ngModelOptions.getOption('timezone'));\r\n } else {\r\n if ($datepickerLiteralWarning) {\r\n $log.warn('Literal date support has been deprecated, please switch to date object usage');\r\n }\r\n\r\n self[key] = new Date(dateFilter(value, 'medium'));\r\n }\r\n } else {\r\n self[key] = datepickerConfig[key] ?\r\n dateParser.fromTimezone(new Date(datepickerConfig[key]), ngModelOptions.getOption('timezone')) :\r\n null;\r\n }\r\n\r\n self.refreshView();\r\n });\r\n\r\n break;\r\n case 'maxMode':\r\n case 'minMode':\r\n if ($scope.datepickerOptions[key]) {\r\n $scope.$watch(function() { return $scope.datepickerOptions[key]; }, function(value) {\r\n self[key] = $scope[key] = angular.isDefined(value) ? value : $scope.datepickerOptions[key];\r\n if (key === 'minMode' && self.modes.indexOf($scope.datepickerOptions.datepickerMode) < self.modes.indexOf(self[key]) ||\r\n key === 'maxMode' && self.modes.indexOf($scope.datepickerOptions.datepickerMode) > self.modes.indexOf(self[key])) {\r\n $scope.datepickerMode = self[key];\r\n $scope.datepickerOptions.datepickerMode = self[key];\r\n }\r\n });\r\n } else {\r\n self[key] = $scope[key] = datepickerConfig[key] || null;\r\n }\r\n\r\n break;\r\n }\r\n });\r\n\r\n $scope.uniqueId = 'datepicker-' + $scope.$id + '-' + Math.floor(Math.random() * 10000);\r\n\r\n $scope.disabled = angular.isDefined($attrs.disabled) || false;\r\n if (angular.isDefined($attrs.ngDisabled)) {\r\n watchListeners.push($scope.$parent.$watch($attrs.ngDisabled, function(disabled) {\r\n $scope.disabled = disabled;\r\n self.refreshView();\r\n }));\r\n }\r\n\r\n $scope.isActive = function(dateObject) {\r\n if (self.compare(dateObject.date, self.activeDate) === 0) {\r\n $scope.activeDateId = dateObject.uid;\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n this.init = function(ngModelCtrl_) {\r\n ngModelCtrl = ngModelCtrl_;\r\n ngModelOptions = extractOptions(ngModelCtrl);\r\n\r\n if ($scope.datepickerOptions.initDate) {\r\n self.activeDate = dateParser.fromTimezone($scope.datepickerOptions.initDate, ngModelOptions.getOption('timezone')) || new Date();\r\n $scope.$watch('datepickerOptions.initDate', function(initDate) {\r\n if (initDate && (ngModelCtrl.$isEmpty(ngModelCtrl.$modelValue) || ngModelCtrl.$invalid)) {\r\n self.activeDate = dateParser.fromTimezone(initDate, ngModelOptions.getOption('timezone'));\r\n self.refreshView();\r\n }\r\n });\r\n } else {\r\n self.activeDate = new Date();\r\n }\r\n\r\n var date = ngModelCtrl.$modelValue ? new Date(ngModelCtrl.$modelValue) : new Date();\r\n this.activeDate = !isNaN(date) ?\r\n dateParser.fromTimezone(date, ngModelOptions.getOption('timezone')) :\r\n dateParser.fromTimezone(new Date(), ngModelOptions.getOption('timezone'));\r\n\r\n ngModelCtrl.$render = function() {\r\n self.render();\r\n };\r\n };\r\n\r\n this.render = function() {\r\n if (ngModelCtrl.$viewValue) {\r\n var date = new Date(ngModelCtrl.$viewValue),\r\n isValid = !isNaN(date);\r\n\r\n if (isValid) {\r\n this.activeDate = dateParser.fromTimezone(date, ngModelOptions.getOption('timezone'));\r\n } else if (!$datepickerSuppressError) {\r\n $log.error('Datepicker directive: \"ng-model\" value must be a Date object');\r\n }\r\n }\r\n this.refreshView();\r\n };\r\n\r\n this.refreshView = function() {\r\n if (this.element) {\r\n $scope.selectedDt = null;\r\n this._refreshView();\r\n if ($scope.activeDt) {\r\n $scope.activeDateId = $scope.activeDt.uid;\r\n }\r\n\r\n var date = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : null;\r\n date = dateParser.fromTimezone(date, ngModelOptions.getOption('timezone'));\r\n ngModelCtrl.$setValidity('dateDisabled', !date ||\r\n this.element && !this.isDisabled(date));\r\n }\r\n };\r\n\r\n this.createDateObject = function(date, format) {\r\n var model = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : null;\r\n model = dateParser.fromTimezone(model, ngModelOptions.getOption('timezone'));\r\n var today = new Date();\r\n today = dateParser.fromTimezone(today, ngModelOptions.getOption('timezone'));\r\n var time = this.compare(date, today);\r\n var dt = {\r\n date: date,\r\n label: dateParser.filter(date, format),\r\n selected: model && this.compare(date, model) === 0,\r\n disabled: this.isDisabled(date),\r\n past: time < 0,\r\n current: time === 0,\r\n future: time > 0,\r\n customClass: this.customClass(date) || null\r\n };\r\n\r\n if (model && this.compare(date, model) === 0) {\r\n $scope.selectedDt = dt;\r\n }\r\n\r\n if (self.activeDate && this.compare(dt.date, self.activeDate) === 0) {\r\n $scope.activeDt = dt;\r\n }\r\n\r\n return dt;\r\n };\r\n\r\n this.isDisabled = function(date) {\r\n return $scope.disabled ||\r\n this.minDate && this.compare(date, this.minDate) < 0 ||\r\n this.maxDate && this.compare(date, this.maxDate) > 0 ||\r\n $scope.dateDisabled && $scope.dateDisabled({date: date, mode: $scope.datepickerMode});\r\n };\r\n\r\n this.customClass = function(date) {\r\n return $scope.customClass({date: date, mode: $scope.datepickerMode});\r\n };\r\n\r\n // Split array into smaller arrays\r\n this.split = function(arr, size) {\r\n var arrays = [];\r\n while (arr.length > 0) {\r\n arrays.push(arr.splice(0, size));\r\n }\r\n return arrays;\r\n };\r\n\r\n $scope.select = function(date) {\r\n if ($scope.datepickerMode === self.minMode) {\r\n var dt = ngModelCtrl.$viewValue ? dateParser.fromTimezone(new Date(ngModelCtrl.$viewValue), ngModelOptions.getOption('timezone')) : new Date(0, 0, 0, 0, 0, 0, 0);\r\n dt.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\r\n dt = dateParser.toTimezone(dt, ngModelOptions.getOption('timezone'));\r\n ngModelCtrl.$setViewValue(dt);\r\n ngModelCtrl.$render();\r\n } else {\r\n self.activeDate = date;\r\n setMode(self.modes[self.modes.indexOf($scope.datepickerMode) - 1]);\r\n\r\n $scope.$emit('uib:datepicker.mode');\r\n }\r\n\r\n $scope.$broadcast('uib:datepicker.focus');\r\n };\r\n\r\n $scope.move = function(direction) {\r\n var year = self.activeDate.getFullYear() + direction * (self.step.years || 0),\r\n month = self.activeDate.getMonth() + direction * (self.step.months || 0);\r\n self.activeDate.setFullYear(year, month, 1);\r\n self.refreshView();\r\n };\r\n\r\n $scope.toggleMode = function(direction) {\r\n direction = direction || 1;\r\n\r\n if ($scope.datepickerMode === self.maxMode && direction === 1 ||\r\n $scope.datepickerMode === self.minMode && direction === -1) {\r\n return;\r\n }\r\n\r\n setMode(self.modes[self.modes.indexOf($scope.datepickerMode) + direction]);\r\n\r\n $scope.$emit('uib:datepicker.mode');\r\n };\r\n\r\n // Key event mapper\r\n $scope.keys = { 13: 'enter', 32: 'space', 33: 'pageup', 34: 'pagedown', 35: 'end', 36: 'home', 37: 'left', 38: 'up', 39: 'right', 40: 'down' };\r\n\r\n var focusElement = function() {\r\n self.element[0].focus();\r\n };\r\n\r\n // Listen for focus requests from popup directive\r\n $scope.$on('uib:datepicker.focus', focusElement);\r\n\r\n $scope.keydown = function(evt) {\r\n var key = $scope.keys[evt.which];\r\n\r\n if (!key || evt.shiftKey || evt.altKey || $scope.disabled) {\r\n return;\r\n }\r\n\r\n evt.preventDefault();\r\n if (!self.shortcutPropagation) {\r\n evt.stopPropagation();\r\n }\r\n\r\n if (key === 'enter' || key === 'space') {\r\n if (self.isDisabled(self.activeDate)) {\r\n return; // do nothing\r\n }\r\n $scope.select(self.activeDate);\r\n } else if (evt.ctrlKey && (key === 'up' || key === 'down')) {\r\n $scope.toggleMode(key === 'up' ? 1 : -1);\r\n } else {\r\n self.handleKeyDown(key, evt);\r\n self.refreshView();\r\n }\r\n };\r\n\r\n $element.on('keydown', function(evt) {\r\n $scope.$apply(function() {\r\n $scope.keydown(evt);\r\n });\r\n });\r\n\r\n $scope.$on('$destroy', function() {\r\n //Clear all watch listeners on destroy\r\n while (watchListeners.length) {\r\n watchListeners.shift()();\r\n }\r\n });\r\n\r\n function setMode(mode) {\r\n $scope.datepickerMode = mode;\r\n $scope.datepickerOptions.datepickerMode = mode;\r\n }\r\n\r\n function extractOptions(ngModelCtrl) {\r\n var ngModelOptions;\r\n\r\n if (angular.version.minor < 6) { // in angular < 1.6 $options could be missing\r\n // guarantee a value\r\n ngModelOptions = ngModelCtrl.$options ||\r\n $scope.datepickerOptions.ngModelOptions ||\r\n datepickerConfig.ngModelOptions ||\r\n {};\r\n\r\n // mimic 1.6+ api\r\n ngModelOptions.getOption = function (key) {\r\n return ngModelOptions[key];\r\n };\r\n } else { // in angular >=1.6 $options is always present\r\n // ng-model-options defaults timezone to null; don't let its precedence squash a non-null value\r\n var timezone = ngModelCtrl.$options.getOption('timezone') ||\r\n ($scope.datepickerOptions.ngModelOptions ? $scope.datepickerOptions.ngModelOptions.timezone : null) ||\r\n (datepickerConfig.ngModelOptions ? datepickerConfig.ngModelOptions.timezone : null);\r\n\r\n // values passed to createChild override existing values\r\n ngModelOptions = ngModelCtrl.$options // start with a ModelOptions instance\r\n .createChild(datepickerConfig.ngModelOptions) // lowest precedence\r\n .createChild($scope.datepickerOptions.ngModelOptions)\r\n .createChild(ngModelCtrl.$options) // highest precedence\r\n .createChild({timezone: timezone}); // to keep from squashing a non-null value\r\n }\r\n\r\n return ngModelOptions;\r\n }\r\n}])\r\n\r\n.controller('UibDaypickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) {\r\n var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\r\n\r\n this.step = { months: 1 };\r\n this.element = $element;\r\n function getDaysInMonth(year, month) {\r\n return month === 1 && year % 4 === 0 &&\r\n (year % 100 !== 0 || year % 400 === 0) ? 29 : DAYS_IN_MONTH[month];\r\n }\r\n\r\n this.init = function(ctrl) {\r\n angular.extend(ctrl, this);\r\n scope.showWeeks = ctrl.showWeeks;\r\n ctrl.refreshView();\r\n };\r\n\r\n this.getDates = function(startDate, n) {\r\n var dates = new Array(n), current = new Date(startDate), i = 0, date;\r\n while (i < n) {\r\n date = new Date(current);\r\n dates[i++] = date;\r\n current.setDate(current.getDate() + 1);\r\n }\r\n return dates;\r\n };\r\n\r\n this._refreshView = function() {\r\n var year = this.activeDate.getFullYear(),\r\n month = this.activeDate.getMonth(),\r\n firstDayOfMonth = new Date(this.activeDate);\r\n\r\n firstDayOfMonth.setFullYear(year, month, 1);\r\n\r\n var difference = this.startingDay - firstDayOfMonth.getDay(),\r\n numDisplayedFromPreviousMonth = difference > 0 ?\r\n 7 - difference : - difference,\r\n firstDate = new Date(firstDayOfMonth);\r\n\r\n if (numDisplayedFromPreviousMonth > 0) {\r\n firstDate.setDate(-numDisplayedFromPreviousMonth + 1);\r\n }\r\n\r\n // 42 is the number of days on a six-week calendar\r\n var days = this.getDates(firstDate, 42);\r\n for (var i = 0; i < 42; i ++) {\r\n days[i] = angular.extend(this.createDateObject(days[i], this.formatDay), {\r\n secondary: days[i].getMonth() !== month,\r\n uid: scope.uniqueId + '-' + i\r\n });\r\n }\r\n\r\n scope.labels = new Array(7);\r\n for (var j = 0; j < 7; j++) {\r\n scope.labels[j] = {\r\n abbr: dateFilter(days[j].date, this.formatDayHeader),\r\n full: dateFilter(days[j].date, 'EEEE')\r\n };\r\n }\r\n\r\n scope.title = dateFilter(this.activeDate, this.formatDayTitle);\r\n scope.rows = this.split(days, 7);\r\n\r\n if (scope.showWeeks) {\r\n scope.weekNumbers = [];\r\n var thursdayIndex = (4 + 7 - this.startingDay) % 7,\r\n numWeeks = scope.rows.length;\r\n for (var curWeek = 0; curWeek < numWeeks; curWeek++) {\r\n scope.weekNumbers.push(\r\n getISO8601WeekNumber(scope.rows[curWeek][thursdayIndex].date));\r\n }\r\n }\r\n };\r\n\r\n this.compare = function(date1, date2) {\r\n var _date1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\r\n var _date2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\r\n _date1.setFullYear(date1.getFullYear());\r\n _date2.setFullYear(date2.getFullYear());\r\n return _date1 - _date2;\r\n };\r\n\r\n function getISO8601WeekNumber(date) {\r\n var checkDate = new Date(date);\r\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)); // Thursday\r\n var time = checkDate.getTime();\r\n checkDate.setMonth(0); // Compare with Jan 1\r\n checkDate.setDate(1);\r\n return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;\r\n }\r\n\r\n this.handleKeyDown = function(key, evt) {\r\n var date = this.activeDate.getDate();\r\n\r\n if (key === 'left') {\r\n date = date - 1;\r\n } else if (key === 'up') {\r\n date = date - 7;\r\n } else if (key === 'right') {\r\n date = date + 1;\r\n } else if (key === 'down') {\r\n date = date + 7;\r\n } else if (key === 'pageup' || key === 'pagedown') {\r\n var month = this.activeDate.getMonth() + (key === 'pageup' ? - 1 : 1);\r\n this.activeDate.setMonth(month, 1);\r\n date = Math.min(getDaysInMonth(this.activeDate.getFullYear(), this.activeDate.getMonth()), date);\r\n } else if (key === 'home') {\r\n date = 1;\r\n } else if (key === 'end') {\r\n date = getDaysInMonth(this.activeDate.getFullYear(), this.activeDate.getMonth());\r\n }\r\n this.activeDate.setDate(date);\r\n };\r\n}])\r\n\r\n.controller('UibMonthpickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) {\r\n this.step = { years: 1 };\r\n this.element = $element;\r\n\r\n this.init = function(ctrl) {\r\n angular.extend(ctrl, this);\r\n ctrl.refreshView();\r\n };\r\n\r\n this._refreshView = function() {\r\n var months = new Array(12),\r\n year = this.activeDate.getFullYear(),\r\n date;\r\n\r\n for (var i = 0; i < 12; i++) {\r\n date = new Date(this.activeDate);\r\n date.setFullYear(year, i, 1);\r\n months[i] = angular.extend(this.createDateObject(date, this.formatMonth), {\r\n uid: scope.uniqueId + '-' + i\r\n });\r\n }\r\n\r\n scope.title = dateFilter(this.activeDate, this.formatMonthTitle);\r\n scope.rows = this.split(months, this.monthColumns);\r\n scope.yearHeaderColspan = this.monthColumns > 3 ? this.monthColumns - 2 : 1;\r\n };\r\n\r\n this.compare = function(date1, date2) {\r\n var _date1 = new Date(date1.getFullYear(), date1.getMonth());\r\n var _date2 = new Date(date2.getFullYear(), date2.getMonth());\r\n _date1.setFullYear(date1.getFullYear());\r\n _date2.setFullYear(date2.getFullYear());\r\n return _date1 - _date2;\r\n };\r\n\r\n this.handleKeyDown = function(key, evt) {\r\n var date = this.activeDate.getMonth();\r\n\r\n if (key === 'left') {\r\n date = date - 1;\r\n } else if (key === 'up') {\r\n date = date - this.monthColumns;\r\n } else if (key === 'right') {\r\n date = date + 1;\r\n } else if (key === 'down') {\r\n date = date + this.monthColumns;\r\n } else if (key === 'pageup' || key === 'pagedown') {\r\n var year = this.activeDate.getFullYear() + (key === 'pageup' ? - 1 : 1);\r\n this.activeDate.setFullYear(year);\r\n } else if (key === 'home') {\r\n date = 0;\r\n } else if (key === 'end') {\r\n date = 11;\r\n }\r\n this.activeDate.setMonth(date);\r\n };\r\n}])\r\n\r\n.controller('UibYearpickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) {\r\n var columns, range;\r\n this.element = $element;\r\n\r\n function getStartingYear(year) {\r\n return parseInt((year - 1) / range, 10) * range + 1;\r\n }\r\n\r\n this.yearpickerInit = function() {\r\n columns = this.yearColumns;\r\n range = this.yearRows * columns;\r\n this.step = { years: range };\r\n };\r\n\r\n this._refreshView = function() {\r\n var years = new Array(range), date;\r\n\r\n for (var i = 0, start = getStartingYear(this.activeDate.getFullYear()); i < range; i++) {\r\n date = new Date(this.activeDate);\r\n date.setFullYear(start + i, 0, 1);\r\n years[i] = angular.extend(this.createDateObject(date, this.formatYear), {\r\n uid: scope.uniqueId + '-' + i\r\n });\r\n }\r\n\r\n scope.title = [years[0].label, years[range - 1].label].join(' - ');\r\n scope.rows = this.split(years, columns);\r\n scope.columns = columns;\r\n };\r\n\r\n this.compare = function(date1, date2) {\r\n return date1.getFullYear() - date2.getFullYear();\r\n };\r\n\r\n this.handleKeyDown = function(key, evt) {\r\n var date = this.activeDate.getFullYear();\r\n\r\n if (key === 'left') {\r\n date = date - 1;\r\n } else if (key === 'up') {\r\n date = date - columns;\r\n } else if (key === 'right') {\r\n date = date + 1;\r\n } else if (key === 'down') {\r\n date = date + columns;\r\n } else if (key === 'pageup' || key === 'pagedown') {\r\n date += (key === 'pageup' ? - 1 : 1) * range;\r\n } else if (key === 'home') {\r\n date = getStartingYear(this.activeDate.getFullYear());\r\n } else if (key === 'end') {\r\n date = getStartingYear(this.activeDate.getFullYear()) + range - 1;\r\n }\r\n this.activeDate.setFullYear(date);\r\n };\r\n}])\r\n\r\n.directive('uibDatepicker', function() {\r\n return {\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/datepicker/datepicker.html';\r\n },\r\n scope: {\r\n datepickerOptions: '=?'\r\n },\r\n require: ['uibDatepicker', '^ngModel'],\r\n restrict: 'A',\r\n controller: 'UibDatepickerController',\r\n controllerAs: 'datepicker',\r\n link: function(scope, element, attrs, ctrls) {\r\n var datepickerCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n\r\n datepickerCtrl.init(ngModelCtrl);\r\n }\r\n };\r\n})\r\n\r\n.directive('uibDaypicker', function() {\r\n return {\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/datepicker/day.html';\r\n },\r\n require: ['^uibDatepicker', 'uibDaypicker'],\r\n restrict: 'A',\r\n controller: 'UibDaypickerController',\r\n link: function(scope, element, attrs, ctrls) {\r\n var datepickerCtrl = ctrls[0],\r\n daypickerCtrl = ctrls[1];\r\n\r\n daypickerCtrl.init(datepickerCtrl);\r\n }\r\n };\r\n})\r\n\r\n.directive('uibMonthpicker', function() {\r\n return {\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/datepicker/month.html';\r\n },\r\n require: ['^uibDatepicker', 'uibMonthpicker'],\r\n restrict: 'A',\r\n controller: 'UibMonthpickerController',\r\n link: function(scope, element, attrs, ctrls) {\r\n var datepickerCtrl = ctrls[0],\r\n monthpickerCtrl = ctrls[1];\r\n\r\n monthpickerCtrl.init(datepickerCtrl);\r\n }\r\n };\r\n})\r\n\r\n.directive('uibYearpicker', function() {\r\n return {\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/datepicker/year.html';\r\n },\r\n require: ['^uibDatepicker', 'uibYearpicker'],\r\n restrict: 'A',\r\n controller: 'UibYearpickerController',\r\n link: function(scope, element, attrs, ctrls) {\r\n var ctrl = ctrls[0];\r\n angular.extend(ctrl, ctrls[1]);\r\n ctrl.yearpickerInit();\r\n\r\n ctrl.refreshView();\r\n }\r\n };\r\n});\r\n\r\n// Avoiding use of ng-class as it creates a lot of watchers when a class is to be applied to\r\n// at most one element.\r\nangular.module('ui.bootstrap.isClass', [])\r\n.directive('uibIsClass', [\r\n '$animate',\r\nfunction ($animate) {\r\n // 11111111 22222222\r\n var ON_REGEXP = /^\\s*([\\s\\S]+?)\\s+on\\s+([\\s\\S]+?)\\s*$/;\r\n // 11111111 22222222\r\n var IS_REGEXP = /^\\s*([\\s\\S]+?)\\s+for\\s+([\\s\\S]+?)\\s*$/;\r\n\r\n var dataPerTracked = {};\r\n\r\n return {\r\n restrict: 'A',\r\n compile: function(tElement, tAttrs) {\r\n var linkedScopes = [];\r\n var instances = [];\r\n var expToData = {};\r\n var lastActivated = null;\r\n var onExpMatches = tAttrs.uibIsClass.match(ON_REGEXP);\r\n var onExp = onExpMatches[2];\r\n var expsStr = onExpMatches[1];\r\n var exps = expsStr.split(',');\r\n\r\n return linkFn;\r\n\r\n function linkFn(scope, element, attrs) {\r\n linkedScopes.push(scope);\r\n instances.push({\r\n scope: scope,\r\n element: element\r\n });\r\n\r\n exps.forEach(function(exp, k) {\r\n addForExp(exp, scope);\r\n });\r\n\r\n scope.$on('$destroy', removeScope);\r\n }\r\n\r\n function addForExp(exp, scope) {\r\n var matches = exp.match(IS_REGEXP);\r\n var clazz = scope.$eval(matches[1]);\r\n var compareWithExp = matches[2];\r\n var data = expToData[exp];\r\n if (!data) {\r\n var watchFn = function(compareWithVal) {\r\n var newActivated = null;\r\n instances.some(function(instance) {\r\n var thisVal = instance.scope.$eval(onExp);\r\n if (thisVal === compareWithVal) {\r\n newActivated = instance;\r\n return true;\r\n }\r\n });\r\n if (data.lastActivated !== newActivated) {\r\n if (data.lastActivated) {\r\n $animate.removeClass(data.lastActivated.element, clazz);\r\n }\r\n if (newActivated) {\r\n $animate.addClass(newActivated.element, clazz);\r\n }\r\n data.lastActivated = newActivated;\r\n }\r\n };\r\n expToData[exp] = data = {\r\n lastActivated: null,\r\n scope: scope,\r\n watchFn: watchFn,\r\n compareWithExp: compareWithExp,\r\n watcher: scope.$watch(compareWithExp, watchFn)\r\n };\r\n }\r\n data.watchFn(scope.$eval(compareWithExp));\r\n }\r\n\r\n function removeScope(e) {\r\n var removedScope = e.targetScope;\r\n var index = linkedScopes.indexOf(removedScope);\r\n linkedScopes.splice(index, 1);\r\n instances.splice(index, 1);\r\n if (linkedScopes.length) {\r\n var newWatchScope = linkedScopes[0];\r\n angular.forEach(expToData, function(data) {\r\n if (data.scope === removedScope) {\r\n data.watcher = newWatchScope.$watch(data.compareWithExp, data.watchFn);\r\n data.scope = newWatchScope;\r\n }\r\n });\r\n } else {\r\n expToData = {};\r\n }\r\n }\r\n }\r\n };\r\n}]);\r\nangular.module('ui.bootstrap.position', [])\r\n\r\n/**\r\n * A set of utility methods for working with the DOM.\r\n * It is meant to be used where we need to absolute-position elements in\r\n * relation to another element (this is the case for tooltips, popovers,\r\n * typeahead suggestions etc.).\r\n */\r\n .factory('$uibPosition', ['$document', '$window', function($document, $window) {\r\n /**\r\n * Used by scrollbarWidth() function to cache scrollbar's width.\r\n * Do not access this variable directly, use scrollbarWidth() instead.\r\n */\r\n var SCROLLBAR_WIDTH;\r\n /**\r\n * scrollbar on body and html element in IE and Edge overlay\r\n * content and should be considered 0 width.\r\n */\r\n var BODY_SCROLLBAR_WIDTH;\r\n var OVERFLOW_REGEX = {\r\n normal: /(auto|scroll)/,\r\n hidden: /(auto|scroll|hidden)/\r\n };\r\n var PLACEMENT_REGEX = {\r\n auto: /\\s?auto?\\s?/i,\r\n primary: /^(top|bottom|left|right)$/,\r\n secondary: /^(top|bottom|left|right|center)$/,\r\n vertical: /^(top|bottom)$/\r\n };\r\n var BODY_REGEX = /(HTML|BODY)/;\r\n\r\n return {\r\n\r\n /**\r\n * Provides a raw DOM element from a jQuery/jQLite element.\r\n *\r\n * @param {element} elem - The element to convert.\r\n *\r\n * @returns {element} A HTML element.\r\n */\r\n getRawNode: function(elem) {\r\n return elem.nodeName ? elem : elem[0] || elem;\r\n },\r\n\r\n /**\r\n * Provides a parsed number for a style property. Strips\r\n * units and casts invalid numbers to 0.\r\n *\r\n * @param {string} value - The style value to parse.\r\n *\r\n * @returns {number} A valid number.\r\n */\r\n parseStyle: function(value) {\r\n value = parseFloat(value);\r\n return isFinite(value) ? value : 0;\r\n },\r\n\r\n /**\r\n * Provides the closest positioned ancestor.\r\n *\r\n * @param {element} element - The element to get the offest parent for.\r\n *\r\n * @returns {element} The closest positioned ancestor.\r\n */\r\n offsetParent: function(elem) {\r\n elem = this.getRawNode(elem);\r\n\r\n var offsetParent = elem.offsetParent || $document[0].documentElement;\r\n\r\n function isStaticPositioned(el) {\r\n return ($window.getComputedStyle(el).position || 'static') === 'static';\r\n }\r\n\r\n while (offsetParent && offsetParent !== $document[0].documentElement && isStaticPositioned(offsetParent)) {\r\n offsetParent = offsetParent.offsetParent;\r\n }\r\n\r\n return offsetParent || $document[0].documentElement;\r\n },\r\n\r\n /**\r\n * Provides the scrollbar width, concept from TWBS measureScrollbar()\r\n * function in https://github.com/twbs/bootstrap/blob/master/js/modal.js\r\n * In IE and Edge, scollbar on body and html element overlay and should\r\n * return a width of 0.\r\n *\r\n * @returns {number} The width of the browser scollbar.\r\n */\r\n scrollbarWidth: function(isBody) {\r\n if (isBody) {\r\n if (angular.isUndefined(BODY_SCROLLBAR_WIDTH)) {\r\n var bodyElem = $document.find('body');\r\n bodyElem.addClass('uib-position-body-scrollbar-measure');\r\n BODY_SCROLLBAR_WIDTH = $window.innerWidth - bodyElem[0].clientWidth;\r\n BODY_SCROLLBAR_WIDTH = isFinite(BODY_SCROLLBAR_WIDTH) ? BODY_SCROLLBAR_WIDTH : 0;\r\n bodyElem.removeClass('uib-position-body-scrollbar-measure');\r\n }\r\n return BODY_SCROLLBAR_WIDTH;\r\n }\r\n\r\n if (angular.isUndefined(SCROLLBAR_WIDTH)) {\r\n var scrollElem = angular.element('
    ');\r\n $document.find('body').append(scrollElem);\r\n SCROLLBAR_WIDTH = scrollElem[0].offsetWidth - scrollElem[0].clientWidth;\r\n SCROLLBAR_WIDTH = isFinite(SCROLLBAR_WIDTH) ? SCROLLBAR_WIDTH : 0;\r\n scrollElem.remove();\r\n }\r\n\r\n return SCROLLBAR_WIDTH;\r\n },\r\n\r\n /**\r\n * Provides the padding required on an element to replace the scrollbar.\r\n *\r\n * @returns {object} An object with the following properties:\r\n *
      \r\n *
    • **scrollbarWidth**: the width of the scrollbar
    • \r\n *
    • **widthOverflow**: whether the the width is overflowing
    • \r\n *
    • **right**: the amount of right padding on the element needed to replace the scrollbar
    • \r\n *
    • **rightOriginal**: the amount of right padding currently on the element
    • \r\n *
    • **heightOverflow**: whether the the height is overflowing
    • \r\n *
    • **bottom**: the amount of bottom padding on the element needed to replace the scrollbar
    • \r\n *
    • **bottomOriginal**: the amount of bottom padding currently on the element
    • \r\n *
    \r\n */\r\n scrollbarPadding: function(elem) {\r\n elem = this.getRawNode(elem);\r\n\r\n var elemStyle = $window.getComputedStyle(elem);\r\n var paddingRight = this.parseStyle(elemStyle.paddingRight);\r\n var paddingBottom = this.parseStyle(elemStyle.paddingBottom);\r\n var scrollParent = this.scrollParent(elem, false, true);\r\n var scrollbarWidth = this.scrollbarWidth(BODY_REGEX.test(scrollParent.tagName));\r\n\r\n return {\r\n scrollbarWidth: scrollbarWidth,\r\n widthOverflow: scrollParent.scrollWidth > scrollParent.clientWidth,\r\n right: paddingRight + scrollbarWidth,\r\n originalRight: paddingRight,\r\n heightOverflow: scrollParent.scrollHeight > scrollParent.clientHeight,\r\n bottom: paddingBottom + scrollbarWidth,\r\n originalBottom: paddingBottom\r\n };\r\n },\r\n\r\n /**\r\n * Checks to see if the element is scrollable.\r\n *\r\n * @param {element} elem - The element to check.\r\n * @param {boolean=} [includeHidden=false] - Should scroll style of 'hidden' be considered,\r\n * default is false.\r\n *\r\n * @returns {boolean} Whether the element is scrollable.\r\n */\r\n isScrollable: function(elem, includeHidden) {\r\n elem = this.getRawNode(elem);\r\n\r\n var overflowRegex = includeHidden ? OVERFLOW_REGEX.hidden : OVERFLOW_REGEX.normal;\r\n var elemStyle = $window.getComputedStyle(elem);\r\n return overflowRegex.test(elemStyle.overflow + elemStyle.overflowY + elemStyle.overflowX);\r\n },\r\n\r\n /**\r\n * Provides the closest scrollable ancestor.\r\n * A port of the jQuery UI scrollParent method:\r\n * https://github.com/jquery/jquery-ui/blob/master/ui/scroll-parent.js\r\n *\r\n * @param {element} elem - The element to find the scroll parent of.\r\n * @param {boolean=} [includeHidden=false] - Should scroll style of 'hidden' be considered,\r\n * default is false.\r\n * @param {boolean=} [includeSelf=false] - Should the element being passed be\r\n * included in the scrollable llokup.\r\n *\r\n * @returns {element} A HTML element.\r\n */\r\n scrollParent: function(elem, includeHidden, includeSelf) {\r\n elem = this.getRawNode(elem);\r\n\r\n var overflowRegex = includeHidden ? OVERFLOW_REGEX.hidden : OVERFLOW_REGEX.normal;\r\n var documentEl = $document[0].documentElement;\r\n var elemStyle = $window.getComputedStyle(elem);\r\n if (includeSelf && overflowRegex.test(elemStyle.overflow + elemStyle.overflowY + elemStyle.overflowX)) {\r\n return elem;\r\n }\r\n var excludeStatic = elemStyle.position === 'absolute';\r\n var scrollParent = elem.parentElement || documentEl;\r\n\r\n if (scrollParent === documentEl || elemStyle.position === 'fixed') {\r\n return documentEl;\r\n }\r\n\r\n while (scrollParent.parentElement && scrollParent !== documentEl) {\r\n var spStyle = $window.getComputedStyle(scrollParent);\r\n if (excludeStatic && spStyle.position !== 'static') {\r\n excludeStatic = false;\r\n }\r\n\r\n if (!excludeStatic && overflowRegex.test(spStyle.overflow + spStyle.overflowY + spStyle.overflowX)) {\r\n break;\r\n }\r\n scrollParent = scrollParent.parentElement;\r\n }\r\n\r\n return scrollParent;\r\n },\r\n\r\n /**\r\n * Provides read-only equivalent of jQuery's position function:\r\n * http://api.jquery.com/position/ - distance to closest positioned\r\n * ancestor. Does not account for margins by default like jQuery position.\r\n *\r\n * @param {element} elem - The element to caclulate the position on.\r\n * @param {boolean=} [includeMargins=false] - Should margins be accounted\r\n * for, default is false.\r\n *\r\n * @returns {object} An object with the following properties:\r\n *
      \r\n *
    • **width**: the width of the element
    • \r\n *
    • **height**: the height of the element
    • \r\n *
    • **top**: distance to top edge of offset parent
    • \r\n *
    • **left**: distance to left edge of offset parent
    • \r\n *
    \r\n */\r\n position: function(elem, includeMagins) {\r\n elem = this.getRawNode(elem);\r\n\r\n var elemOffset = this.offset(elem);\r\n if (includeMagins) {\r\n var elemStyle = $window.getComputedStyle(elem);\r\n elemOffset.top -= this.parseStyle(elemStyle.marginTop);\r\n elemOffset.left -= this.parseStyle(elemStyle.marginLeft);\r\n }\r\n var parent = this.offsetParent(elem);\r\n var parentOffset = {top: 0, left: 0};\r\n\r\n if (parent !== $document[0].documentElement) {\r\n parentOffset = this.offset(parent);\r\n parentOffset.top += parent.clientTop - parent.scrollTop;\r\n parentOffset.left += parent.clientLeft - parent.scrollLeft;\r\n }\r\n\r\n return {\r\n width: Math.round(angular.isNumber(elemOffset.width) ? elemOffset.width : elem.offsetWidth),\r\n height: Math.round(angular.isNumber(elemOffset.height) ? elemOffset.height : elem.offsetHeight),\r\n top: Math.round(elemOffset.top - parentOffset.top),\r\n left: Math.round(elemOffset.left - parentOffset.left)\r\n };\r\n },\r\n\r\n /**\r\n * Provides read-only equivalent of jQuery's offset function:\r\n * http://api.jquery.com/offset/ - distance to viewport. Does\r\n * not account for borders, margins, or padding on the body\r\n * element.\r\n *\r\n * @param {element} elem - The element to calculate the offset on.\r\n *\r\n * @returns {object} An object with the following properties:\r\n *
      \r\n *
    • **width**: the width of the element
    • \r\n *
    • **height**: the height of the element
    • \r\n *
    • **top**: distance to top edge of viewport
    • \r\n *
    • **right**: distance to bottom edge of viewport
    • \r\n *
    \r\n */\r\n offset: function(elem) {\r\n elem = this.getRawNode(elem);\r\n\r\n var elemBCR = elem.getBoundingClientRect();\r\n return {\r\n width: Math.round(angular.isNumber(elemBCR.width) ? elemBCR.width : elem.offsetWidth),\r\n height: Math.round(angular.isNumber(elemBCR.height) ? elemBCR.height : elem.offsetHeight),\r\n top: Math.round(elemBCR.top + ($window.pageYOffset || $document[0].documentElement.scrollTop)),\r\n left: Math.round(elemBCR.left + ($window.pageXOffset || $document[0].documentElement.scrollLeft))\r\n };\r\n },\r\n\r\n /**\r\n * Provides offset distance to the closest scrollable ancestor\r\n * or viewport. Accounts for border and scrollbar width.\r\n *\r\n * Right and bottom dimensions represent the distance to the\r\n * respective edge of the viewport element. If the element\r\n * edge extends beyond the viewport, a negative value will be\r\n * reported.\r\n *\r\n * @param {element} elem - The element to get the viewport offset for.\r\n * @param {boolean=} [useDocument=false] - Should the viewport be the document element instead\r\n * of the first scrollable element, default is false.\r\n * @param {boolean=} [includePadding=true] - Should the padding on the offset parent element\r\n * be accounted for, default is true.\r\n *\r\n * @returns {object} An object with the following properties:\r\n *
      \r\n *
    • **top**: distance to the top content edge of viewport element
    • \r\n *
    • **bottom**: distance to the bottom content edge of viewport element
    • \r\n *
    • **left**: distance to the left content edge of viewport element
    • \r\n *
    • **right**: distance to the right content edge of viewport element
    • \r\n *
    \r\n */\r\n viewportOffset: function(elem, useDocument, includePadding) {\r\n elem = this.getRawNode(elem);\r\n includePadding = includePadding !== false ? true : false;\r\n\r\n var elemBCR = elem.getBoundingClientRect();\r\n var offsetBCR = {top: 0, left: 0, bottom: 0, right: 0};\r\n\r\n var offsetParent = useDocument ? $document[0].documentElement : this.scrollParent(elem);\r\n var offsetParentBCR = offsetParent.getBoundingClientRect();\r\n\r\n offsetBCR.top = offsetParentBCR.top + offsetParent.clientTop;\r\n offsetBCR.left = offsetParentBCR.left + offsetParent.clientLeft;\r\n if (offsetParent === $document[0].documentElement) {\r\n offsetBCR.top += $window.pageYOffset;\r\n offsetBCR.left += $window.pageXOffset;\r\n }\r\n offsetBCR.bottom = offsetBCR.top + offsetParent.clientHeight;\r\n offsetBCR.right = offsetBCR.left + offsetParent.clientWidth;\r\n\r\n if (includePadding) {\r\n var offsetParentStyle = $window.getComputedStyle(offsetParent);\r\n offsetBCR.top += this.parseStyle(offsetParentStyle.paddingTop);\r\n offsetBCR.bottom -= this.parseStyle(offsetParentStyle.paddingBottom);\r\n offsetBCR.left += this.parseStyle(offsetParentStyle.paddingLeft);\r\n offsetBCR.right -= this.parseStyle(offsetParentStyle.paddingRight);\r\n }\r\n\r\n return {\r\n top: Math.round(elemBCR.top - offsetBCR.top),\r\n bottom: Math.round(offsetBCR.bottom - elemBCR.bottom),\r\n left: Math.round(elemBCR.left - offsetBCR.left),\r\n right: Math.round(offsetBCR.right - elemBCR.right)\r\n };\r\n },\r\n\r\n /**\r\n * Provides an array of placement values parsed from a placement string.\r\n * Along with the 'auto' indicator, supported placement strings are:\r\n *
      \r\n *
    • top: element on top, horizontally centered on host element.
    • \r\n *
    • top-left: element on top, left edge aligned with host element left edge.
    • \r\n *
    • top-right: element on top, lerightft edge aligned with host element right edge.
    • \r\n *
    • bottom: element on bottom, horizontally centered on host element.
    • \r\n *
    • bottom-left: element on bottom, left edge aligned with host element left edge.
    • \r\n *
    • bottom-right: element on bottom, right edge aligned with host element right edge.
    • \r\n *
    • left: element on left, vertically centered on host element.
    • \r\n *
    • left-top: element on left, top edge aligned with host element top edge.
    • \r\n *
    • left-bottom: element on left, bottom edge aligned with host element bottom edge.
    • \r\n *
    • right: element on right, vertically centered on host element.
    • \r\n *
    • right-top: element on right, top edge aligned with host element top edge.
    • \r\n *
    • right-bottom: element on right, bottom edge aligned with host element bottom edge.
    • \r\n *
    \r\n * A placement string with an 'auto' indicator is expected to be\r\n * space separated from the placement, i.e: 'auto bottom-left' If\r\n * the primary and secondary placement values do not match 'top,\r\n * bottom, left, right' then 'top' will be the primary placement and\r\n * 'center' will be the secondary placement. If 'auto' is passed, true\r\n * will be returned as the 3rd value of the array.\r\n *\r\n * @param {string} placement - The placement string to parse.\r\n *\r\n * @returns {array} An array with the following values\r\n *
      \r\n *
    • **[0]**: The primary placement.
    • \r\n *
    • **[1]**: The secondary placement.
    • \r\n *
    • **[2]**: If auto is passed: true, else undefined.
    • \r\n *
    \r\n */\r\n parsePlacement: function(placement) {\r\n var autoPlace = PLACEMENT_REGEX.auto.test(placement);\r\n if (autoPlace) {\r\n placement = placement.replace(PLACEMENT_REGEX.auto, '');\r\n }\r\n\r\n placement = placement.split('-');\r\n\r\n placement[0] = placement[0] || 'top';\r\n if (!PLACEMENT_REGEX.primary.test(placement[0])) {\r\n placement[0] = 'top';\r\n }\r\n\r\n placement[1] = placement[1] || 'center';\r\n if (!PLACEMENT_REGEX.secondary.test(placement[1])) {\r\n placement[1] = 'center';\r\n }\r\n\r\n if (autoPlace) {\r\n placement[2] = true;\r\n } else {\r\n placement[2] = false;\r\n }\r\n\r\n return placement;\r\n },\r\n\r\n /**\r\n * Provides coordinates for an element to be positioned relative to\r\n * another element. Passing 'auto' as part of the placement parameter\r\n * will enable smart placement - where the element fits. i.e:\r\n * 'auto left-top' will check to see if there is enough space to the left\r\n * of the hostElem to fit the targetElem, if not place right (same for secondary\r\n * top placement). Available space is calculated using the viewportOffset\r\n * function.\r\n *\r\n * @param {element} hostElem - The element to position against.\r\n * @param {element} targetElem - The element to position.\r\n * @param {string=} [placement=top] - The placement for the targetElem,\r\n * default is 'top'. 'center' is assumed as secondary placement for\r\n * 'top', 'left', 'right', and 'bottom' placements. Available placements are:\r\n *
      \r\n *
    • top
    • \r\n *
    • top-right
    • \r\n *
    • top-left
    • \r\n *
    • bottom
    • \r\n *
    • bottom-left
    • \r\n *
    • bottom-right
    • \r\n *
    • left
    • \r\n *
    • left-top
    • \r\n *
    • left-bottom
    • \r\n *
    • right
    • \r\n *
    • right-top
    • \r\n *
    • right-bottom
    • \r\n *
    \r\n * @param {boolean=} [appendToBody=false] - Should the top and left values returned\r\n * be calculated from the body element, default is false.\r\n *\r\n * @returns {object} An object with the following properties:\r\n *
      \r\n *
    • **top**: Value for targetElem top.
    • \r\n *
    • **left**: Value for targetElem left.
    • \r\n *
    • **placement**: The resolved placement.
    • \r\n *
    \r\n */\r\n positionElements: function(hostElem, targetElem, placement, appendToBody) {\r\n hostElem = this.getRawNode(hostElem);\r\n targetElem = this.getRawNode(targetElem);\r\n\r\n // need to read from prop to support tests.\r\n var targetWidth = angular.isDefined(targetElem.offsetWidth) ? targetElem.offsetWidth : targetElem.prop('offsetWidth');\r\n var targetHeight = angular.isDefined(targetElem.offsetHeight) ? targetElem.offsetHeight : targetElem.prop('offsetHeight');\r\n\r\n placement = this.parsePlacement(placement);\r\n\r\n var hostElemPos = appendToBody ? this.offset(hostElem) : this.position(hostElem);\r\n var targetElemPos = {top: 0, left: 0, placement: ''};\r\n\r\n if (placement[2]) {\r\n var viewportOffset = this.viewportOffset(hostElem, appendToBody);\r\n\r\n var targetElemStyle = $window.getComputedStyle(targetElem);\r\n var adjustedSize = {\r\n width: targetWidth + Math.round(Math.abs(this.parseStyle(targetElemStyle.marginLeft) + this.parseStyle(targetElemStyle.marginRight))),\r\n height: targetHeight + Math.round(Math.abs(this.parseStyle(targetElemStyle.marginTop) + this.parseStyle(targetElemStyle.marginBottom)))\r\n };\r\n\r\n placement[0] = placement[0] === 'top' && adjustedSize.height > viewportOffset.top && adjustedSize.height <= viewportOffset.bottom ? 'bottom' :\r\n placement[0] === 'bottom' && adjustedSize.height > viewportOffset.bottom && adjustedSize.height <= viewportOffset.top ? 'top' :\r\n placement[0] === 'left' && adjustedSize.width > viewportOffset.left && adjustedSize.width <= viewportOffset.right ? 'right' :\r\n placement[0] === 'right' && adjustedSize.width > viewportOffset.right && adjustedSize.width <= viewportOffset.left ? 'left' :\r\n placement[0];\r\n\r\n placement[1] = placement[1] === 'top' && adjustedSize.height - hostElemPos.height > viewportOffset.bottom && adjustedSize.height - hostElemPos.height <= viewportOffset.top ? 'bottom' :\r\n placement[1] === 'bottom' && adjustedSize.height - hostElemPos.height > viewportOffset.top && adjustedSize.height - hostElemPos.height <= viewportOffset.bottom ? 'top' :\r\n placement[1] === 'left' && adjustedSize.width - hostElemPos.width > viewportOffset.right && adjustedSize.width - hostElemPos.width <= viewportOffset.left ? 'right' :\r\n placement[1] === 'right' && adjustedSize.width - hostElemPos.width > viewportOffset.left && adjustedSize.width - hostElemPos.width <= viewportOffset.right ? 'left' :\r\n placement[1];\r\n\r\n if (placement[1] === 'center') {\r\n if (PLACEMENT_REGEX.vertical.test(placement[0])) {\r\n var xOverflow = hostElemPos.width / 2 - targetWidth / 2;\r\n if (viewportOffset.left + xOverflow < 0 && adjustedSize.width - hostElemPos.width <= viewportOffset.right) {\r\n placement[1] = 'left';\r\n } else if (viewportOffset.right + xOverflow < 0 && adjustedSize.width - hostElemPos.width <= viewportOffset.left) {\r\n placement[1] = 'right';\r\n }\r\n } else {\r\n var yOverflow = hostElemPos.height / 2 - adjustedSize.height / 2;\r\n if (viewportOffset.top + yOverflow < 0 && adjustedSize.height - hostElemPos.height <= viewportOffset.bottom) {\r\n placement[1] = 'top';\r\n } else if (viewportOffset.bottom + yOverflow < 0 && adjustedSize.height - hostElemPos.height <= viewportOffset.top) {\r\n placement[1] = 'bottom';\r\n }\r\n }\r\n }\r\n }\r\n\r\n switch (placement[0]) {\r\n case 'top':\r\n targetElemPos.top = hostElemPos.top - targetHeight;\r\n break;\r\n case 'bottom':\r\n targetElemPos.top = hostElemPos.top + hostElemPos.height;\r\n break;\r\n case 'left':\r\n targetElemPos.left = hostElemPos.left - targetWidth;\r\n break;\r\n case 'right':\r\n targetElemPos.left = hostElemPos.left + hostElemPos.width;\r\n break;\r\n }\r\n\r\n switch (placement[1]) {\r\n case 'top':\r\n targetElemPos.top = hostElemPos.top;\r\n break;\r\n case 'bottom':\r\n targetElemPos.top = hostElemPos.top + hostElemPos.height - targetHeight;\r\n break;\r\n case 'left':\r\n targetElemPos.left = hostElemPos.left;\r\n break;\r\n case 'right':\r\n targetElemPos.left = hostElemPos.left + hostElemPos.width - targetWidth;\r\n break;\r\n case 'center':\r\n if (PLACEMENT_REGEX.vertical.test(placement[0])) {\r\n targetElemPos.left = hostElemPos.left + hostElemPos.width / 2 - targetWidth / 2;\r\n } else {\r\n targetElemPos.top = hostElemPos.top + hostElemPos.height / 2 - targetHeight / 2;\r\n }\r\n break;\r\n }\r\n\r\n targetElemPos.top = Math.round(targetElemPos.top);\r\n targetElemPos.left = Math.round(targetElemPos.left);\r\n targetElemPos.placement = placement[1] === 'center' ? placement[0] : placement[0] + '-' + placement[1];\r\n\r\n return targetElemPos;\r\n },\r\n\r\n /**\r\n * Provides a way to adjust the top positioning after first\r\n * render to correctly align element to top after content\r\n * rendering causes resized element height\r\n *\r\n * @param {array} placementClasses - The array of strings of classes\r\n * element should have.\r\n * @param {object} containerPosition - The object with container\r\n * position information\r\n * @param {number} initialHeight - The initial height for the elem.\r\n * @param {number} currentHeight - The current height for the elem.\r\n */\r\n adjustTop: function(placementClasses, containerPosition, initialHeight, currentHeight) {\r\n if (placementClasses.indexOf('top') !== -1 && initialHeight !== currentHeight) {\r\n return {\r\n top: containerPosition.top - currentHeight + 'px'\r\n };\r\n }\r\n },\r\n\r\n /**\r\n * Provides a way for positioning tooltip & dropdown\r\n * arrows when using placement options beyond the standard\r\n * left, right, top, or bottom.\r\n *\r\n * @param {element} elem - The tooltip/dropdown element.\r\n * @param {string} placement - The placement for the elem.\r\n */\r\n positionArrow: function(elem, placement) {\r\n elem = this.getRawNode(elem);\r\n\r\n var innerElem = elem.querySelector('.tooltip-inner, .popover-inner');\r\n if (!innerElem) {\r\n return;\r\n }\r\n\r\n var isTooltip = angular.element(innerElem).hasClass('tooltip-inner');\r\n\r\n var arrowElem = isTooltip ? elem.querySelector('.tooltip-arrow') : elem.querySelector('.arrow');\r\n if (!arrowElem) {\r\n return;\r\n }\r\n\r\n var arrowCss = {\r\n top: '',\r\n bottom: '',\r\n left: '',\r\n right: ''\r\n };\r\n\r\n placement = this.parsePlacement(placement);\r\n if (placement[1] === 'center') {\r\n // no adjustment necessary - just reset styles\r\n angular.element(arrowElem).css(arrowCss);\r\n return;\r\n }\r\n\r\n var borderProp = 'border-' + placement[0] + '-width';\r\n var borderWidth = $window.getComputedStyle(arrowElem)[borderProp];\r\n\r\n var borderRadiusProp = 'border-';\r\n if (PLACEMENT_REGEX.vertical.test(placement[0])) {\r\n borderRadiusProp += placement[0] + '-' + placement[1];\r\n } else {\r\n borderRadiusProp += placement[1] + '-' + placement[0];\r\n }\r\n borderRadiusProp += '-radius';\r\n var borderRadius = $window.getComputedStyle(isTooltip ? innerElem : elem)[borderRadiusProp];\r\n\r\n switch (placement[0]) {\r\n case 'top':\r\n arrowCss.bottom = isTooltip ? '0' : '-' + borderWidth;\r\n break;\r\n case 'bottom':\r\n arrowCss.top = isTooltip ? '0' : '-' + borderWidth;\r\n break;\r\n case 'left':\r\n arrowCss.right = isTooltip ? '0' : '-' + borderWidth;\r\n break;\r\n case 'right':\r\n arrowCss.left = isTooltip ? '0' : '-' + borderWidth;\r\n break;\r\n }\r\n\r\n arrowCss[placement[1]] = borderRadius;\r\n\r\n angular.element(arrowElem).css(arrowCss);\r\n }\r\n };\r\n }]);\r\n\r\nangular.module('ui.bootstrap.multiMap', [])\r\n/**\r\n * A helper, internal data structure that stores all references attached to key\r\n */\r\n .factory('$$multiMap', function() {\r\n return {\r\n createNew: function() {\r\n var map = {};\r\n\r\n return {\r\n entries: function() {\r\n return Object.keys(map).map(function(key) {\r\n return {\r\n key: key,\r\n value: map[key]\r\n };\r\n });\r\n },\r\n get: function(key) {\r\n return map[key];\r\n },\r\n hasKey: function(key) {\r\n return !!map[key];\r\n },\r\n keys: function() {\r\n return Object.keys(map);\r\n },\r\n put: function(key, value) {\r\n if (!map[key]) {\r\n map[key] = [];\r\n }\r\n\r\n map[key].push(value);\r\n },\r\n remove: function(key, value) {\r\n var values = map[key];\r\n\r\n if (!values) {\r\n return;\r\n }\r\n\r\n var idx = values.indexOf(value);\r\n\r\n if (idx !== -1) {\r\n values.splice(idx, 1);\r\n }\r\n\r\n if (!values.length) {\r\n delete map[key];\r\n }\r\n }\r\n };\r\n }\r\n };\r\n });\r\n\r\nangular.module('ui.bootstrap.modal', ['ui.bootstrap.multiMap', 'ui.bootstrap.stackedMap', 'ui.bootstrap.position'])\r\n/**\r\n * Pluggable resolve mechanism for the modal resolve resolution\r\n * Supports UI Router's $resolve service\r\n */\r\n .provider('$uibResolve', function() {\r\n var resolve = this;\r\n this.resolver = null;\r\n\r\n this.setResolver = function(resolver) {\r\n this.resolver = resolver;\r\n };\r\n\r\n this.$get = ['$injector', '$q', function($injector, $q) {\r\n var resolver = resolve.resolver ? $injector.get(resolve.resolver) : null;\r\n return {\r\n resolve: function(invocables, locals, parent, self) {\r\n if (resolver) {\r\n return resolver.resolve(invocables, locals, parent, self);\r\n }\r\n\r\n var promises = [];\r\n\r\n angular.forEach(invocables, function(value) {\r\n if (angular.isFunction(value) || angular.isArray(value)) {\r\n promises.push($q.resolve($injector.invoke(value)));\r\n } else if (angular.isString(value)) {\r\n promises.push($q.resolve($injector.get(value)));\r\n } else {\r\n promises.push($q.resolve(value));\r\n }\r\n });\r\n\r\n return $q.all(promises).then(function(resolves) {\r\n var resolveObj = {};\r\n var resolveIter = 0;\r\n angular.forEach(invocables, function(value, key) {\r\n resolveObj[key] = resolves[resolveIter++];\r\n });\r\n\r\n return resolveObj;\r\n });\r\n }\r\n };\r\n }];\r\n })\r\n\r\n/**\r\n * A helper directive for the $modal service. It creates a backdrop element.\r\n */\r\n .directive('uibModalBackdrop', ['$animate', '$injector', '$uibModalStack',\r\n function($animate, $injector, $modalStack) {\r\n return {\r\n restrict: 'A',\r\n compile: function(tElement, tAttrs) {\r\n tElement.addClass(tAttrs.backdropClass);\r\n return linkFn;\r\n }\r\n };\r\n\r\n function linkFn(scope, element, attrs) {\r\n if (attrs.modalInClass) {\r\n $animate.addClass(element, attrs.modalInClass);\r\n\r\n scope.$on($modalStack.NOW_CLOSING_EVENT, function(e, setIsAsync) {\r\n var done = setIsAsync();\r\n if (scope.modalOptions.animation) {\r\n $animate.removeClass(element, attrs.modalInClass).then(done);\r\n } else {\r\n done();\r\n }\r\n });\r\n }\r\n }\r\n }])\r\n\r\n .directive('uibModalWindow', ['$uibModalStack', '$q', '$animateCss', '$document',\r\n function($modalStack, $q, $animateCss, $document) {\r\n return {\r\n scope: {\r\n index: '@'\r\n },\r\n restrict: 'A',\r\n transclude: true,\r\n templateUrl: function(tElement, tAttrs) {\r\n return tAttrs.templateUrl || 'uib/template/modal/window.html';\r\n },\r\n link: function(scope, element, attrs) {\r\n element.addClass(attrs.windowTopClass || '');\r\n scope.size = attrs.size;\r\n\r\n scope.close = function(evt) {\r\n var modal = $modalStack.getTop();\r\n if (modal && modal.value.backdrop &&\r\n modal.value.backdrop !== 'static' &&\r\n evt.target === evt.currentTarget) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n $modalStack.dismiss(modal.key, 'backdrop click');\r\n }\r\n };\r\n\r\n // moved from template to fix issue #2280\r\n element.on('click', scope.close);\r\n\r\n // This property is only added to the scope for the purpose of detecting when this directive is rendered.\r\n // We can detect that by using this property in the template associated with this directive and then use\r\n // {@link Attribute#$observe} on it. For more details please see {@link TableColumnResize}.\r\n scope.$isRendered = true;\r\n\r\n // Deferred object that will be resolved when this modal is rendered.\r\n var modalRenderDeferObj = $q.defer();\r\n // Resolve render promise post-digest\r\n scope.$$postDigest(function() {\r\n modalRenderDeferObj.resolve();\r\n });\r\n\r\n modalRenderDeferObj.promise.then(function() {\r\n var animationPromise = null;\r\n\r\n if (attrs.modalInClass) {\r\n animationPromise = $animateCss(element, {\r\n addClass: attrs.modalInClass\r\n }).start();\r\n\r\n scope.$on($modalStack.NOW_CLOSING_EVENT, function(e, setIsAsync) {\r\n var done = setIsAsync();\r\n $animateCss(element, {\r\n removeClass: attrs.modalInClass\r\n }).start().then(done);\r\n });\r\n }\r\n\r\n\r\n $q.when(animationPromise).then(function() {\r\n // Notify {@link $modalStack} that modal is rendered.\r\n var modal = $modalStack.getTop();\r\n if (modal) {\r\n $modalStack.modalRendered(modal.key);\r\n }\r\n\r\n /**\r\n * If something within the freshly-opened modal already has focus (perhaps via a\r\n * directive that causes focus) then there's no need to try to focus anything.\r\n */\r\n if (!($document[0].activeElement && element[0].contains($document[0].activeElement))) {\r\n var inputWithAutofocus = element[0].querySelector('[autofocus]');\r\n /**\r\n * Auto-focusing of a freshly-opened modal element causes any child elements\r\n * with the autofocus attribute to lose focus. This is an issue on touch\r\n * based devices which will show and then hide the onscreen keyboard.\r\n * Attempts to refocus the autofocus element via JavaScript will not reopen\r\n * the onscreen keyboard. Fixed by updated the focusing logic to only autofocus\r\n * the modal element if the modal does not contain an autofocus element.\r\n */\r\n if (inputWithAutofocus) {\r\n inputWithAutofocus.focus();\r\n } else {\r\n element[0].focus();\r\n }\r\n }\r\n });\r\n });\r\n }\r\n };\r\n }])\r\n\r\n .directive('uibModalAnimationClass', function() {\r\n return {\r\n compile: function(tElement, tAttrs) {\r\n if (tAttrs.modalAnimation) {\r\n tElement.addClass(tAttrs.uibModalAnimationClass);\r\n }\r\n }\r\n };\r\n })\r\n\r\n .directive('uibModalTransclude', ['$animate', function($animate) {\r\n return {\r\n link: function(scope, element, attrs, controller, transclude) {\r\n transclude(scope.$parent, function(clone) {\r\n element.empty();\r\n $animate.enter(clone, element);\r\n });\r\n }\r\n };\r\n }])\r\n\r\n .factory('$uibModalStack', ['$animate', '$animateCss', '$document',\r\n '$compile', '$rootScope', '$q', '$$multiMap', '$$stackedMap', '$uibPosition',\r\n function($animate, $animateCss, $document, $compile, $rootScope, $q, $$multiMap, $$stackedMap, $uibPosition) {\r\n var OPENED_MODAL_CLASS = 'modal-open';\r\n\r\n var backdropDomEl, backdropScope;\r\n var openedWindows = $$stackedMap.createNew();\r\n var openedClasses = $$multiMap.createNew();\r\n var $modalStack = {\r\n NOW_CLOSING_EVENT: 'modal.stack.now-closing'\r\n };\r\n var topModalIndex = 0;\r\n var previousTopOpenedModal = null;\r\n var ARIA_HIDDEN_ATTRIBUTE_NAME = 'data-bootstrap-modal-aria-hidden-count';\r\n\r\n //Modal focus behavior\r\n var tabbableSelector = 'a[href], area[href], input:not([disabled]):not([tabindex=\\'-1\\']), ' +\r\n 'button:not([disabled]):not([tabindex=\\'-1\\']),select:not([disabled]):not([tabindex=\\'-1\\']), textarea:not([disabled]):not([tabindex=\\'-1\\']), ' +\r\n 'iframe, object, embed, *[tabindex]:not([tabindex=\\'-1\\']), *[contenteditable=true]';\r\n var scrollbarPadding;\r\n var SNAKE_CASE_REGEXP = /[A-Z]/g;\r\n\r\n // TODO: extract into common dependency with tooltip\r\n function snake_case(name) {\r\n var separator = '-';\r\n return name.replace(SNAKE_CASE_REGEXP, function(letter, pos) {\r\n return (pos ? separator : '') + letter.toLowerCase();\r\n });\r\n }\r\n\r\n function isVisible(element) {\r\n return !!(element.offsetWidth ||\r\n element.offsetHeight ||\r\n element.getClientRects().length);\r\n }\r\n\r\n function backdropIndex() {\r\n var topBackdropIndex = -1;\r\n var opened = openedWindows.keys();\r\n for (var i = 0; i < opened.length; i++) {\r\n if (openedWindows.get(opened[i]).value.backdrop) {\r\n topBackdropIndex = i;\r\n }\r\n }\r\n\r\n // If any backdrop exist, ensure that it's index is always\r\n // right below the top modal\r\n if (topBackdropIndex > -1 && topBackdropIndex < topModalIndex) {\r\n topBackdropIndex = topModalIndex;\r\n }\r\n return topBackdropIndex;\r\n }\r\n\r\n $rootScope.$watch(backdropIndex, function(newBackdropIndex) {\r\n if (backdropScope) {\r\n backdropScope.index = newBackdropIndex;\r\n }\r\n });\r\n\r\n function removeModalWindow(modalInstance, elementToReceiveFocus) {\r\n var modalWindow = openedWindows.get(modalInstance).value;\r\n var appendToElement = modalWindow.appendTo;\r\n\r\n //clean up the stack\r\n openedWindows.remove(modalInstance);\r\n previousTopOpenedModal = openedWindows.top();\r\n if (previousTopOpenedModal) {\r\n topModalIndex = parseInt(previousTopOpenedModal.value.modalDomEl.attr('index'), 10);\r\n }\r\n\r\n removeAfterAnimate(modalWindow.modalDomEl, modalWindow.modalScope, function() {\r\n var modalBodyClass = modalWindow.openedClass || OPENED_MODAL_CLASS;\r\n openedClasses.remove(modalBodyClass, modalInstance);\r\n var areAnyOpen = openedClasses.hasKey(modalBodyClass);\r\n appendToElement.toggleClass(modalBodyClass, areAnyOpen);\r\n if (!areAnyOpen && scrollbarPadding && scrollbarPadding.heightOverflow && scrollbarPadding.scrollbarWidth) {\r\n if (scrollbarPadding.originalRight) {\r\n appendToElement.css({paddingRight: scrollbarPadding.originalRight + 'px'});\r\n } else {\r\n appendToElement.css({paddingRight: ''});\r\n }\r\n scrollbarPadding = null;\r\n }\r\n toggleTopWindowClass(true);\r\n }, modalWindow.closedDeferred);\r\n checkRemoveBackdrop();\r\n\r\n //move focus to specified element if available, or else to body\r\n if (elementToReceiveFocus && elementToReceiveFocus.focus) {\r\n elementToReceiveFocus.focus();\r\n } else if (appendToElement.focus) {\r\n appendToElement.focus();\r\n }\r\n }\r\n\r\n // Add or remove \"windowTopClass\" from the top window in the stack\r\n function toggleTopWindowClass(toggleSwitch) {\r\n var modalWindow;\r\n\r\n if (openedWindows.length() > 0) {\r\n modalWindow = openedWindows.top().value;\r\n modalWindow.modalDomEl.toggleClass(modalWindow.windowTopClass || '', toggleSwitch);\r\n }\r\n }\r\n\r\n function checkRemoveBackdrop() {\r\n //remove backdrop if no longer needed\r\n if (backdropDomEl && backdropIndex() === -1) {\r\n var backdropScopeRef = backdropScope;\r\n removeAfterAnimate(backdropDomEl, backdropScope, function() {\r\n backdropScopeRef = null;\r\n });\r\n backdropDomEl = undefined;\r\n backdropScope = undefined;\r\n }\r\n }\r\n\r\n function removeAfterAnimate(domEl, scope, done, closedDeferred) {\r\n var asyncDeferred;\r\n var asyncPromise = null;\r\n var setIsAsync = function() {\r\n if (!asyncDeferred) {\r\n asyncDeferred = $q.defer();\r\n asyncPromise = asyncDeferred.promise;\r\n }\r\n\r\n return function asyncDone() {\r\n asyncDeferred.resolve();\r\n };\r\n };\r\n scope.$broadcast($modalStack.NOW_CLOSING_EVENT, setIsAsync);\r\n\r\n // Note that it's intentional that asyncPromise might be null.\r\n // That's when setIsAsync has not been called during the\r\n // NOW_CLOSING_EVENT broadcast.\r\n return $q.when(asyncPromise).then(afterAnimating);\r\n\r\n function afterAnimating() {\r\n if (afterAnimating.done) {\r\n return;\r\n }\r\n afterAnimating.done = true;\r\n\r\n $animate.leave(domEl).then(function() {\r\n if (done) {\r\n done();\r\n }\r\n\r\n domEl.remove();\r\n if (closedDeferred) {\r\n closedDeferred.resolve();\r\n }\r\n });\r\n\r\n scope.$destroy();\r\n }\r\n }\r\n\r\n $document.on('keydown', keydownListener);\r\n\r\n $rootScope.$on('$destroy', function() {\r\n $document.off('keydown', keydownListener);\r\n });\r\n\r\n function keydownListener(evt) {\r\n if (evt.isDefaultPrevented()) {\r\n return evt;\r\n }\r\n\r\n var modal = openedWindows.top();\r\n if (modal) {\r\n switch (evt.which) {\r\n case 27: {\r\n if (modal.value.keyboard) {\r\n evt.preventDefault();\r\n $rootScope.$apply(function() {\r\n $modalStack.dismiss(modal.key, 'escape key press');\r\n });\r\n }\r\n break;\r\n }\r\n case 9: {\r\n var list = $modalStack.loadFocusElementList(modal);\r\n var focusChanged = false;\r\n if (evt.shiftKey) {\r\n if ($modalStack.isFocusInFirstItem(evt, list) || $modalStack.isModalFocused(evt, modal)) {\r\n focusChanged = $modalStack.focusLastFocusableElement(list);\r\n }\r\n } else {\r\n if ($modalStack.isFocusInLastItem(evt, list)) {\r\n focusChanged = $modalStack.focusFirstFocusableElement(list);\r\n }\r\n }\r\n\r\n if (focusChanged) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n $modalStack.open = function(modalInstance, modal) {\r\n var modalOpener = $document[0].activeElement,\r\n modalBodyClass = modal.openedClass || OPENED_MODAL_CLASS;\r\n\r\n toggleTopWindowClass(false);\r\n\r\n // Store the current top first, to determine what index we ought to use\r\n // for the current top modal\r\n previousTopOpenedModal = openedWindows.top();\r\n\r\n openedWindows.add(modalInstance, {\r\n deferred: modal.deferred,\r\n renderDeferred: modal.renderDeferred,\r\n closedDeferred: modal.closedDeferred,\r\n modalScope: modal.scope,\r\n backdrop: modal.backdrop,\r\n keyboard: modal.keyboard,\r\n openedClass: modal.openedClass,\r\n windowTopClass: modal.windowTopClass,\r\n animation: modal.animation,\r\n appendTo: modal.appendTo\r\n });\r\n\r\n openedClasses.put(modalBodyClass, modalInstance);\r\n\r\n var appendToElement = modal.appendTo,\r\n currBackdropIndex = backdropIndex();\r\n\r\n if (currBackdropIndex >= 0 && !backdropDomEl) {\r\n backdropScope = $rootScope.$new(true);\r\n backdropScope.modalOptions = modal;\r\n backdropScope.index = currBackdropIndex;\r\n backdropDomEl = angular.element('
    ');\r\n backdropDomEl.attr({\r\n 'class': 'modal-backdrop',\r\n 'ng-style': '{\\'z-index\\': 1040 + (index && 1 || 0) + index*10}',\r\n 'uib-modal-animation-class': 'fade',\r\n 'modal-in-class': 'in'\r\n });\r\n if (modal.backdropClass) {\r\n backdropDomEl.addClass(modal.backdropClass);\r\n }\r\n\r\n if (modal.animation) {\r\n backdropDomEl.attr('modal-animation', 'true');\r\n }\r\n $compile(backdropDomEl)(backdropScope);\r\n $animate.enter(backdropDomEl, appendToElement);\r\n // Hack !! scrollbar width\r\n //if ($uibPosition.isScrollable(appendToElement)) {\r\n scrollbarPadding = $uibPosition.scrollbarPadding(appendToElement);\r\n if (scrollbarPadding.heightOverflow && scrollbarPadding.scrollbarWidth) {\r\n appendToElement.css({paddingRight: scrollbarPadding.right + 'px'});\r\n }\r\n //}\r\n }\r\n\r\n var content;\r\n if (modal.component) {\r\n content = document.createElement(snake_case(modal.component.name));\r\n content = angular.element(content);\r\n content.attr({\r\n resolve: '$resolve',\r\n 'modal-instance': '$uibModalInstance',\r\n close: '$close($value)',\r\n dismiss: '$dismiss($value)'\r\n });\r\n } else {\r\n content = modal.content;\r\n }\r\n\r\n // Set the top modal index based on the index of the previous top modal\r\n topModalIndex = previousTopOpenedModal ? parseInt(previousTopOpenedModal.value.modalDomEl.attr('index'), 10) + 1 : 0;\r\n var angularDomEl = angular.element('
    ');\r\n angularDomEl.attr({\r\n 'class': 'modal',\r\n 'template-url': modal.windowTemplateUrl,\r\n 'window-top-class': modal.windowTopClass,\r\n 'role': 'dialog',\r\n 'aria-labelledby': modal.ariaLabelledBy,\r\n 'aria-describedby': modal.ariaDescribedBy,\r\n 'size': modal.size,\r\n 'index': topModalIndex,\r\n 'animate': 'animate',\r\n 'ng-style': '{\\'z-index\\': 1070 + $$topModalIndex*10, display: \\'block\\'}',\r\n 'tabindex': -1,\r\n 'uib-modal-animation-class': 'fade',\r\n 'modal-in-class': 'in'\r\n }).append(content);\r\n if (modal.windowClass) {\r\n angularDomEl.addClass(modal.windowClass);\r\n }\r\n\r\n if (modal.animation) {\r\n angularDomEl.attr('modal-animation', 'true');\r\n }\r\n\r\n appendToElement.addClass(modalBodyClass);\r\n if (modal.scope) {\r\n // we need to explicitly add the modal index to the modal scope\r\n // because it is needed by ngStyle to compute the zIndex property.\r\n modal.scope.$$topModalIndex = topModalIndex;\r\n }\r\n $animate.enter($compile(angularDomEl)(modal.scope), appendToElement);\r\n\r\n openedWindows.top().value.modalDomEl = angularDomEl;\r\n openedWindows.top().value.modalOpener = modalOpener;\r\n\r\n applyAriaHidden(angularDomEl);\r\n\r\n function applyAriaHidden(el) {\r\n if (!el || el[0].tagName === 'BODY') {\r\n return;\r\n }\r\n\r\n getSiblings(el).forEach(function(sibling) {\r\n var elemIsAlreadyHidden = sibling.getAttribute('aria-hidden') === 'true',\r\n ariaHiddenCount = parseInt(sibling.getAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME), 10);\r\n\r\n if (!ariaHiddenCount) {\r\n ariaHiddenCount = elemIsAlreadyHidden ? 1 : 0;\r\n }\r\n\r\n sibling.setAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME, ariaHiddenCount + 1);\r\n sibling.setAttribute('aria-hidden', 'true');\r\n });\r\n\r\n return applyAriaHidden(el.parent());\r\n\r\n function getSiblings(el) {\r\n var children = el.parent() ? el.parent().children() : [];\r\n\r\n return Array.prototype.filter.call(children, function(child) {\r\n return child !== el[0];\r\n });\r\n }\r\n }\r\n };\r\n\r\n function broadcastClosing(modalWindow, resultOrReason, closing) {\r\n return !modalWindow.value.modalScope.$broadcast('modal.closing', resultOrReason, closing).defaultPrevented;\r\n }\r\n\r\n function unhideBackgroundElements() {\r\n Array.prototype.forEach.call(\r\n document.querySelectorAll('[' + ARIA_HIDDEN_ATTRIBUTE_NAME + ']'),\r\n function(hiddenEl) {\r\n var ariaHiddenCount = parseInt(hiddenEl.getAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME), 10),\r\n newHiddenCount = ariaHiddenCount - 1;\r\n hiddenEl.setAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME, newHiddenCount);\r\n\r\n if (!newHiddenCount) {\r\n hiddenEl.removeAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME);\r\n hiddenEl.removeAttribute('aria-hidden');\r\n }\r\n }\r\n );\r\n }\r\n\r\n $modalStack.close = function(modalInstance, result) {\r\n var modalWindow = openedWindows.get(modalInstance);\r\n unhideBackgroundElements();\r\n if (modalWindow && broadcastClosing(modalWindow, result, true)) {\r\n modalWindow.value.modalScope.$$uibDestructionScheduled = true;\r\n modalWindow.value.deferred.resolve(result);\r\n removeModalWindow(modalInstance, modalWindow.value.modalOpener);\r\n return true;\r\n }\r\n\r\n return !modalWindow;\r\n };\r\n\r\n $modalStack.dismiss = function(modalInstance, reason) {\r\n var modalWindow = openedWindows.get(modalInstance);\r\n unhideBackgroundElements();\r\n if (modalWindow && broadcastClosing(modalWindow, reason, false)) {\r\n modalWindow.value.modalScope.$$uibDestructionScheduled = true;\r\n modalWindow.value.deferred.reject(reason);\r\n removeModalWindow(modalInstance, modalWindow.value.modalOpener);\r\n return true;\r\n }\r\n return !modalWindow;\r\n };\r\n\r\n $modalStack.dismissAll = function(reason) {\r\n var topModal = this.getTop();\r\n while (topModal && this.dismiss(topModal.key, reason)) {\r\n topModal = this.getTop();\r\n }\r\n };\r\n\r\n $modalStack.getTop = function() {\r\n return openedWindows.top();\r\n };\r\n\r\n $modalStack.modalRendered = function(modalInstance) {\r\n var modalWindow = openedWindows.get(modalInstance);\r\n if (modalWindow) {\r\n modalWindow.value.renderDeferred.resolve();\r\n }\r\n };\r\n\r\n $modalStack.focusFirstFocusableElement = function(list) {\r\n if (list.length > 0) {\r\n list[0].focus();\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n $modalStack.focusLastFocusableElement = function(list) {\r\n if (list.length > 0) {\r\n list[list.length - 1].focus();\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n $modalStack.isModalFocused = function(evt, modalWindow) {\r\n if (evt && modalWindow) {\r\n var modalDomEl = modalWindow.value.modalDomEl;\r\n if (modalDomEl && modalDomEl.length) {\r\n return (evt.target || evt.srcElement) === modalDomEl[0];\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n $modalStack.isFocusInFirstItem = function(evt, list) {\r\n if (list.length > 0) {\r\n return (evt.target || evt.srcElement) === list[0];\r\n }\r\n return false;\r\n };\r\n\r\n $modalStack.isFocusInLastItem = function(evt, list) {\r\n if (list.length > 0) {\r\n return (evt.target || evt.srcElement) === list[list.length - 1];\r\n }\r\n return false;\r\n };\r\n\r\n $modalStack.loadFocusElementList = function(modalWindow) {\r\n if (modalWindow) {\r\n var modalDomE1 = modalWindow.value.modalDomEl;\r\n if (modalDomE1 && modalDomE1.length) {\r\n var elements = modalDomE1[0].querySelectorAll(tabbableSelector);\r\n return elements ?\r\n Array.prototype.filter.call(elements, function(element) {\r\n return isVisible(element);\r\n }) : elements;\r\n }\r\n }\r\n };\r\n\r\n return $modalStack;\r\n }])\r\n\r\n .provider('$uibModal', function() {\r\n var $modalProvider = {\r\n options: {\r\n animation: true,\r\n backdrop: true, //can also be false or 'static'\r\n keyboard: true\r\n },\r\n $get: ['$rootScope', '$q', '$document', '$templateRequest', '$controller', '$uibResolve', '$uibModalStack',\r\n function ($rootScope, $q, $document, $templateRequest, $controller, $uibResolve, $modalStack) {\r\n var $modal = {};\r\n\r\n function getTemplatePromise(options) {\r\n return options.template ? $q.when(options.template) :\r\n $templateRequest(angular.isFunction(options.templateUrl) ?\r\n options.templateUrl() : options.templateUrl);\r\n }\r\n\r\n var promiseChain = null;\r\n $modal.getPromiseChain = function() {\r\n return promiseChain;\r\n };\r\n\r\n $modal.open = function(modalOptions) {\r\n var modalResultDeferred = $q.defer();\r\n var modalOpenedDeferred = $q.defer();\r\n var modalClosedDeferred = $q.defer();\r\n var modalRenderDeferred = $q.defer();\r\n\r\n //prepare an instance of a modal to be injected into controllers and returned to a caller\r\n var modalInstance = {\r\n result: modalResultDeferred.promise,\r\n opened: modalOpenedDeferred.promise,\r\n closed: modalClosedDeferred.promise,\r\n rendered: modalRenderDeferred.promise,\r\n close: function (result) {\r\n return $modalStack.close(modalInstance, result);\r\n },\r\n dismiss: function (reason) {\r\n return $modalStack.dismiss(modalInstance, reason);\r\n }\r\n };\r\n\r\n //merge and clean up options\r\n modalOptions = angular.extend({}, $modalProvider.options, modalOptions);\r\n modalOptions.resolve = modalOptions.resolve || {};\r\n modalOptions.appendTo = modalOptions.appendTo || $document.find('body').eq(0);\r\n\r\n if (!modalOptions.appendTo.length) {\r\n throw new Error('appendTo element not found. Make sure that the element passed is in DOM.');\r\n }\r\n\r\n //verify options\r\n if (!modalOptions.component && !modalOptions.template && !modalOptions.templateUrl) {\r\n throw new Error('One of component or template or templateUrl options is required.');\r\n }\r\n\r\n var templateAndResolvePromise;\r\n if (modalOptions.component) {\r\n templateAndResolvePromise = $q.when($uibResolve.resolve(modalOptions.resolve, {}, null, null));\r\n } else {\r\n templateAndResolvePromise =\r\n $q.all([getTemplatePromise(modalOptions), $uibResolve.resolve(modalOptions.resolve, {}, null, null)]);\r\n }\r\n\r\n function resolveWithTemplate() {\r\n return templateAndResolvePromise;\r\n }\r\n\r\n // Wait for the resolution of the existing promise chain.\r\n // Then switch to our own combined promise dependency (regardless of how the previous modal fared).\r\n // Then add to $modalStack and resolve opened.\r\n // Finally clean up the chain variable if no subsequent modal has overwritten it.\r\n var samePromise;\r\n samePromise = promiseChain = $q.all([promiseChain])\r\n .then(resolveWithTemplate, resolveWithTemplate)\r\n .then(function resolveSuccess(tplAndVars) {\r\n var providedScope = modalOptions.scope || $rootScope;\r\n\r\n var modalScope = providedScope.$new();\r\n modalScope.$close = modalInstance.close;\r\n modalScope.$dismiss = modalInstance.dismiss;\r\n\r\n modalScope.$on('$destroy', function() {\r\n if (!modalScope.$$uibDestructionScheduled) {\r\n modalScope.$dismiss('$uibUnscheduledDestruction');\r\n }\r\n });\r\n\r\n var modal = {\r\n scope: modalScope,\r\n deferred: modalResultDeferred,\r\n renderDeferred: modalRenderDeferred,\r\n closedDeferred: modalClosedDeferred,\r\n animation: modalOptions.animation,\r\n backdrop: modalOptions.backdrop,\r\n keyboard: modalOptions.keyboard,\r\n backdropClass: modalOptions.backdropClass,\r\n windowTopClass: modalOptions.windowTopClass,\r\n windowClass: modalOptions.windowClass,\r\n windowTemplateUrl: modalOptions.windowTemplateUrl,\r\n ariaLabelledBy: modalOptions.ariaLabelledBy,\r\n ariaDescribedBy: modalOptions.ariaDescribedBy,\r\n size: modalOptions.size,\r\n openedClass: modalOptions.openedClass,\r\n appendTo: modalOptions.appendTo\r\n };\r\n\r\n var component = {};\r\n var ctrlInstance, ctrlInstantiate, ctrlLocals = {};\r\n\r\n if (modalOptions.component) {\r\n constructLocals(component, false, true, false);\r\n component.name = modalOptions.component;\r\n modal.component = component;\r\n } else if (modalOptions.controller) {\r\n constructLocals(ctrlLocals, true, false, true);\r\n\r\n // the third param will make the controller instantiate later,private api\r\n // @see https://github.com/angular/angular.js/blob/master/src/ng/controller.js#L126\r\n ctrlInstantiate = $controller(modalOptions.controller, ctrlLocals, true, modalOptions.controllerAs);\r\n if (modalOptions.controllerAs && modalOptions.bindToController) {\r\n ctrlInstance = ctrlInstantiate.instance;\r\n ctrlInstance.$close = modalScope.$close;\r\n ctrlInstance.$dismiss = modalScope.$dismiss;\r\n angular.extend(ctrlInstance, {\r\n $resolve: ctrlLocals.$scope.$resolve\r\n }, providedScope);\r\n }\r\n\r\n ctrlInstance = ctrlInstantiate();\r\n\r\n if (angular.isFunction(ctrlInstance.$onInit)) {\r\n ctrlInstance.$onInit();\r\n }\r\n }\r\n\r\n if (!modalOptions.component) {\r\n modal.content = tplAndVars[0];\r\n }\r\n\r\n $modalStack.open(modalInstance, modal);\r\n modalOpenedDeferred.resolve(true);\r\n\r\n function constructLocals(obj, template, instanceOnScope, injectable) {\r\n obj.$scope = modalScope;\r\n obj.$scope.$resolve = {};\r\n if (instanceOnScope) {\r\n obj.$scope.$uibModalInstance = modalInstance;\r\n } else {\r\n obj.$uibModalInstance = modalInstance;\r\n }\r\n\r\n var resolves = template ? tplAndVars[1] : tplAndVars;\r\n angular.forEach(resolves, function(value, key) {\r\n if (injectable) {\r\n obj[key] = value;\r\n }\r\n\r\n obj.$scope.$resolve[key] = value;\r\n });\r\n }\r\n }, function resolveError(reason) {\r\n modalOpenedDeferred.reject(reason);\r\n modalResultDeferred.reject(reason);\r\n })['finally'](function() {\r\n if (promiseChain === samePromise) {\r\n promiseChain = null;\r\n }\r\n });\r\n\r\n return modalInstance;\r\n };\r\n\r\n return $modal;\r\n }\r\n ]\r\n };\r\n\r\n return $modalProvider;\r\n });\r\n\r\nangular.module('ui.bootstrap.stackedMap', [])\r\n/**\r\n * A helper, internal data structure that acts as a map but also allows getting / removing\r\n * elements in the LIFO order\r\n */\r\n .factory('$$stackedMap', function() {\r\n return {\r\n createNew: function() {\r\n var stack = [];\r\n\r\n return {\r\n add: function(key, value) {\r\n stack.push({\r\n key: key,\r\n value: value\r\n });\r\n },\r\n get: function(key) {\r\n for (var i = 0; i < stack.length; i++) {\r\n if (key === stack[i].key) {\r\n return stack[i];\r\n }\r\n }\r\n },\r\n keys: function() {\r\n var keys = [];\r\n for (var i = 0; i < stack.length; i++) {\r\n keys.push(stack[i].key);\r\n }\r\n return keys;\r\n },\r\n top: function() {\r\n return stack[stack.length - 1];\r\n },\r\n remove: function(key) {\r\n var idx = -1;\r\n for (var i = 0; i < stack.length; i++) {\r\n if (key === stack[i].key) {\r\n idx = i;\r\n break;\r\n }\r\n }\r\n return stack.splice(idx, 1)[0];\r\n },\r\n removeTop: function() {\r\n return stack.pop();\r\n },\r\n length: function() {\r\n return stack.length;\r\n }\r\n };\r\n }\r\n };\r\n });\r\nangular.module('ui.bootstrap.paging', [])\r\n/**\r\n * Helper internal service for generating common controller code between the\r\n * pager and pagination components\r\n */\r\n.factory('uibPaging', ['$parse', function($parse) {\r\n return {\r\n create: function(ctrl, $scope, $attrs) {\r\n ctrl.setNumPages = $attrs.numPages ? $parse($attrs.numPages).assign : angular.noop;\r\n ctrl.ngModelCtrl = { $setViewValue: angular.noop }; // nullModelCtrl\r\n ctrl._watchers = [];\r\n\r\n ctrl.init = function(ngModelCtrl, config) {\r\n ctrl.ngModelCtrl = ngModelCtrl;\r\n ctrl.config = config;\r\n\r\n ngModelCtrl.$render = function() {\r\n ctrl.render();\r\n };\r\n\r\n if ($attrs.itemsPerPage) {\r\n ctrl._watchers.push($scope.$parent.$watch($attrs.itemsPerPage, function(value) {\r\n ctrl.itemsPerPage = parseInt(value, 10);\r\n $scope.totalPages = ctrl.calculateTotalPages();\r\n ctrl.updatePage();\r\n }));\r\n } else {\r\n ctrl.itemsPerPage = config.itemsPerPage;\r\n }\r\n\r\n $scope.$watch('totalItems', function(newTotal, oldTotal) {\r\n if (angular.isDefined(newTotal) || newTotal !== oldTotal) {\r\n $scope.totalPages = ctrl.calculateTotalPages();\r\n ctrl.updatePage();\r\n }\r\n });\r\n };\r\n\r\n ctrl.calculateTotalPages = function() {\r\n var totalPages = ctrl.itemsPerPage < 1 ? 1 : Math.ceil($scope.totalItems / ctrl.itemsPerPage);\r\n return Math.max(totalPages || 0, 1);\r\n };\r\n\r\n ctrl.render = function() {\r\n $scope.page = parseInt(ctrl.ngModelCtrl.$viewValue, 10) || 1;\r\n };\r\n\r\n $scope.selectPage = function(page, evt) {\r\n if (evt) {\r\n evt.preventDefault();\r\n }\r\n\r\n var clickAllowed = !$scope.ngDisabled || !evt;\r\n if (clickAllowed && $scope.page !== page && page > 0 && page <= $scope.totalPages) {\r\n if (evt && evt.target) {\r\n evt.target.blur();\r\n }\r\n ctrl.ngModelCtrl.$setViewValue(page);\r\n ctrl.ngModelCtrl.$render();\r\n }\r\n };\r\n\r\n $scope.getText = function(key) {\r\n return $scope[key + 'Text'] || ctrl.config[key + 'Text'];\r\n };\r\n\r\n $scope.noPrevious = function() {\r\n return $scope.page === 1;\r\n };\r\n\r\n $scope.noNext = function() {\r\n return $scope.page === $scope.totalPages;\r\n };\r\n\r\n ctrl.updatePage = function() {\r\n ctrl.setNumPages($scope.$parent, $scope.totalPages); // Readonly variable\r\n\r\n if ($scope.page > $scope.totalPages) {\r\n $scope.selectPage($scope.totalPages);\r\n } else {\r\n ctrl.ngModelCtrl.$render();\r\n }\r\n };\r\n\r\n $scope.$on('$destroy', function() {\r\n while (ctrl._watchers.length) {\r\n ctrl._watchers.shift()();\r\n }\r\n });\r\n }\r\n };\r\n}]);\r\n\r\nangular.module('ui.bootstrap.pagination', ['ui.bootstrap.paging', 'ui.bootstrap.tabindex'])\r\n.controller('UibPaginationController', ['$scope', '$attrs', '$parse', 'uibPaging', 'uibPaginationConfig', function($scope, $attrs, $parse, uibPaging, uibPaginationConfig) {\r\n var ctrl = this;\r\n // Setup configuration parameters\r\n var maxSize = angular.isDefined($attrs.maxSize) ? $scope.$parent.$eval($attrs.maxSize) : uibPaginationConfig.maxSize,\r\n rotate = angular.isDefined($attrs.rotate) ? $scope.$parent.$eval($attrs.rotate) : uibPaginationConfig.rotate,\r\n forceEllipses = angular.isDefined($attrs.forceEllipses) ? $scope.$parent.$eval($attrs.forceEllipses) : uibPaginationConfig.forceEllipses,\r\n boundaryLinkNumbers = angular.isDefined($attrs.boundaryLinkNumbers) ? $scope.$parent.$eval($attrs.boundaryLinkNumbers) : uibPaginationConfig.boundaryLinkNumbers,\r\n pageLabel = angular.isDefined($attrs.pageLabel) ? function(idx) { return $scope.$parent.$eval($attrs.pageLabel, {$page: idx}); } : angular.identity;\r\n $scope.boundaryLinks = angular.isDefined($attrs.boundaryLinks) ? $scope.$parent.$eval($attrs.boundaryLinks) : uibPaginationConfig.boundaryLinks;\r\n $scope.directionLinks = angular.isDefined($attrs.directionLinks) ? $scope.$parent.$eval($attrs.directionLinks) : uibPaginationConfig.directionLinks;\r\n $attrs.$set('role', 'menu');\r\n\r\n uibPaging.create(this, $scope, $attrs);\r\n\r\n if ($attrs.maxSize) {\r\n ctrl._watchers.push($scope.$parent.$watch($parse($attrs.maxSize), function(value) {\r\n maxSize = parseInt(value, 10);\r\n ctrl.render();\r\n }));\r\n }\r\n\r\n // Create page object used in template\r\n function makePage(number, text, isActive) {\r\n return {\r\n number: number,\r\n text: text,\r\n active: isActive\r\n };\r\n }\r\n\r\n function getPages(currentPage, totalPages) {\r\n var pages = [];\r\n\r\n // Default page limits\r\n var startPage = 1, endPage = totalPages;\r\n var isMaxSized = angular.isDefined(maxSize) && maxSize < totalPages;\r\n\r\n // recompute if maxSize\r\n if (isMaxSized) {\r\n if (rotate) {\r\n // Current page is displayed in the middle of the visible ones\r\n startPage = Math.max(currentPage - Math.floor(maxSize / 2), 1);\r\n endPage = startPage + maxSize - 1;\r\n\r\n // Adjust if limit is exceeded\r\n if (endPage > totalPages) {\r\n endPage = totalPages;\r\n startPage = endPage - maxSize + 1;\r\n }\r\n } else {\r\n // Visible pages are paginated with maxSize\r\n startPage = (Math.ceil(currentPage / maxSize) - 1) * maxSize + 1;\r\n\r\n // Adjust last page if limit is exceeded\r\n endPage = Math.min(startPage + maxSize - 1, totalPages);\r\n }\r\n }\r\n\r\n // Add page number links\r\n for (var number = startPage; number <= endPage; number++) {\r\n var page = makePage(number, pageLabel(number), number === currentPage);\r\n pages.push(page);\r\n }\r\n\r\n // Add links to move between page sets\r\n if (isMaxSized && maxSize > 0 && (!rotate || forceEllipses || boundaryLinkNumbers)) {\r\n if (startPage > 1) {\r\n if (!boundaryLinkNumbers || startPage > 3) { //need ellipsis for all options unless range is too close to beginning\r\n var previousPageSet = makePage(startPage - 1, '...', false);\r\n pages.unshift(previousPageSet);\r\n }\r\n if (boundaryLinkNumbers) {\r\n if (startPage === 3) { //need to replace ellipsis when the buttons would be sequential\r\n var secondPageLink = makePage(2, '2', false);\r\n pages.unshift(secondPageLink);\r\n }\r\n //add the first page\r\n var firstPageLink = makePage(1, '1', false);\r\n pages.unshift(firstPageLink);\r\n }\r\n }\r\n\r\n if (endPage < totalPages) {\r\n if (!boundaryLinkNumbers || endPage < totalPages - 2) { //need ellipsis for all options unless range is too close to end\r\n var nextPageSet = makePage(endPage + 1, '...', false);\r\n pages.push(nextPageSet);\r\n }\r\n if (boundaryLinkNumbers) {\r\n if (endPage === totalPages - 2) { //need to replace ellipsis when the buttons would be sequential\r\n var secondToLastPageLink = makePage(totalPages - 1, totalPages - 1, false);\r\n pages.push(secondToLastPageLink);\r\n }\r\n //add the last page\r\n var lastPageLink = makePage(totalPages, totalPages, false);\r\n pages.push(lastPageLink);\r\n }\r\n }\r\n }\r\n return pages;\r\n }\r\n\r\n var originalRender = this.render;\r\n this.render = function() {\r\n originalRender();\r\n if ($scope.page > 0 && $scope.page <= $scope.totalPages) {\r\n $scope.pages = getPages($scope.page, $scope.totalPages);\r\n }\r\n };\r\n}])\r\n\r\n.constant('uibPaginationConfig', {\r\n itemsPerPage: 10,\r\n boundaryLinks: false,\r\n boundaryLinkNumbers: false,\r\n directionLinks: true,\r\n firstText: 'First',\r\n previousText: 'Previous',\r\n nextText: 'Next',\r\n lastText: 'Last',\r\n rotate: true,\r\n forceEllipses: false\r\n})\r\n\r\n.directive('uibPagination', ['$parse', 'uibPaginationConfig', function($parse, uibPaginationConfig) {\r\n return {\r\n scope: {\r\n totalItems: '=',\r\n firstText: '@',\r\n previousText: '@',\r\n nextText: '@',\r\n lastText: '@',\r\n ngDisabled:'='\r\n },\r\n require: ['uibPagination', '?ngModel'],\r\n restrict: 'A',\r\n controller: 'UibPaginationController',\r\n controllerAs: 'pagination',\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/pagination/pagination.html';\r\n },\r\n link: function(scope, element, attrs, ctrls) {\r\n element.addClass('pagination');\r\n var paginationCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n\r\n if (!ngModelCtrl) {\r\n return; // do nothing if no ng-model\r\n }\r\n\r\n paginationCtrl.init(ngModelCtrl, uibPaginationConfig);\r\n }\r\n };\r\n}]);\r\n\r\n/**\r\n * The following features are still outstanding: animation as a\r\n * function, placement as a function, inside, support for more triggers than\r\n * just mouse enter/leave, html tooltips, and selector delegation.\r\n */\r\nangular.module('ui.bootstrap.tooltip', ['ui.bootstrap.position', 'ui.bootstrap.stackedMap'])\r\n\r\n/**\r\n * The $tooltip service creates tooltip- and popover-like directives as well as\r\n * houses global options for them.\r\n */\r\n.provider('$uibTooltip', function() {\r\n // The default options tooltip and popover.\r\n var defaultOptions = {\r\n placement: 'top',\r\n placementClassPrefix: '',\r\n animation: true,\r\n popupDelay: 0,\r\n popupCloseDelay: 0,\r\n useContentExp: false\r\n };\r\n\r\n // Default hide triggers for each show trigger\r\n var triggerMap = {\r\n 'mouseenter': 'mouseleave',\r\n 'click': 'click',\r\n 'outsideClick': 'outsideClick',\r\n 'focus': 'blur',\r\n 'none': ''\r\n };\r\n\r\n // The options specified to the provider globally.\r\n var globalOptions = {};\r\n\r\n /**\r\n * `options({})` allows global configuration of all tooltips in the\r\n * application.\r\n *\r\n * var app = angular.module( 'App', ['ui.bootstrap.tooltip'], function( $tooltipProvider ) {\r\n * // place tooltips left instead of top by default\r\n * $tooltipProvider.options( { placement: 'left' } );\r\n * });\r\n */\r\n\tthis.options = function(value) {\r\n\t\tangular.extend(globalOptions, value);\r\n\t};\r\n\r\n /**\r\n * This allows you to extend the set of trigger mappings available. E.g.:\r\n *\r\n * $tooltipProvider.setTriggers( { 'openTrigger': 'closeTrigger' } );\r\n */\r\n this.setTriggers = function setTriggers(triggers) {\r\n angular.extend(triggerMap, triggers);\r\n };\r\n\r\n /**\r\n * This is a helper function for translating camel-case to snake_case.\r\n */\r\n function snake_case(name) {\r\n var regexp = /[A-Z]/g;\r\n var separator = '-';\r\n return name.replace(regexp, function(letter, pos) {\r\n return (pos ? separator : '') + letter.toLowerCase();\r\n });\r\n }\r\n\r\n /**\r\n * Returns the actual instance of the $tooltip service.\r\n * TODO support multiple triggers\r\n */\r\n this.$get = ['$window', '$compile', '$timeout', '$document', '$uibPosition', '$interpolate', '$rootScope', '$parse', '$$stackedMap', function($window, $compile, $timeout, $document, $position, $interpolate, $rootScope, $parse, $$stackedMap) {\r\n var openedTooltips = $$stackedMap.createNew();\r\n $document.on('keyup', keypressListener);\r\n\r\n $rootScope.$on('$destroy', function() {\r\n $document.off('keyup', keypressListener);\r\n });\r\n\r\n function keypressListener(e) {\r\n if (e.which === 27) {\r\n var last = openedTooltips.top();\r\n if (last) {\r\n last.value.close();\r\n last = null;\r\n }\r\n }\r\n }\r\n\r\n return function $tooltip(ttType, prefix, defaultTriggerShow, options) {\r\n options = angular.extend({}, defaultOptions, globalOptions, options);\r\n\r\n /**\r\n * Returns an object of show and hide triggers.\r\n *\r\n * If a trigger is supplied,\r\n * it is used to show the tooltip; otherwise, it will use the `trigger`\r\n * option passed to the `$tooltipProvider.options` method; else it will\r\n * default to the trigger supplied to this directive factory.\r\n *\r\n * The hide trigger is based on the show trigger. If the `trigger` option\r\n * was passed to the `$tooltipProvider.options` method, it will use the\r\n * mapped trigger from `triggerMap` or the passed trigger if the map is\r\n * undefined; otherwise, it uses the `triggerMap` value of the show\r\n * trigger; else it will just use the show trigger.\r\n */\r\n function getTriggers(trigger) {\r\n var show = (trigger || options.trigger || defaultTriggerShow).split(' ');\r\n var hide = show.map(function(trigger) {\r\n return triggerMap[trigger] || trigger;\r\n });\r\n return {\r\n show: show,\r\n hide: hide\r\n };\r\n }\r\n\r\n var directiveName = snake_case(ttType);\r\n\r\n var startSym = $interpolate.startSymbol();\r\n var endSym = $interpolate.endSymbol();\r\n var template =\r\n '
    ' +\r\n '
    ';\r\n\r\n return {\r\n compile: function(tElem, tAttrs) {\r\n var tooltipLinker = $compile(template);\r\n\r\n return function link(scope, element, attrs, tooltipCtrl) {\r\n var tooltip;\r\n var tooltipLinkedScope;\r\n var transitionTimeout;\r\n var showTimeout;\r\n var hideTimeout;\r\n var positionTimeout;\r\n var adjustmentTimeout;\r\n var appendToBody = angular.isDefined(options.appendToBody) ? options.appendToBody : false;\r\n var triggers = getTriggers(undefined);\r\n var hasEnableExp = angular.isDefined(attrs[prefix + 'Enable']);\r\n var ttScope = scope.$new(true);\r\n var repositionScheduled = false;\r\n var isOpenParse = angular.isDefined(attrs[prefix + 'IsOpen']) ? $parse(attrs[prefix + 'IsOpen']) : false;\r\n var contentParse = options.useContentExp ? $parse(attrs[ttType]) : false;\r\n var observers = [];\r\n var lastPlacement;\r\n\r\n var positionTooltip = function() {\r\n // check if tooltip exists and is not empty\r\n if (!tooltip || !tooltip.html()) { return; }\r\n\r\n if (!positionTimeout) {\r\n positionTimeout = $timeout(function() {\r\n var ttPosition = $position.positionElements(element, tooltip, ttScope.placement, appendToBody);\r\n var initialHeight = angular.isDefined(tooltip.offsetHeight) ? tooltip.offsetHeight : tooltip.prop('offsetHeight');\r\n var elementPos = appendToBody ? $position.offset(element) : $position.position(element);\r\n tooltip.css({ top: ttPosition.top + 'px', left: ttPosition.left + 'px' });\r\n var placementClasses = ttPosition.placement.split('-');\r\n\r\n if (!tooltip.hasClass(placementClasses[0])) {\r\n tooltip.removeClass(lastPlacement.split('-')[0]);\r\n tooltip.addClass(placementClasses[0]);\r\n }\r\n\r\n if (!tooltip.hasClass(options.placementClassPrefix + ttPosition.placement)) {\r\n tooltip.removeClass(options.placementClassPrefix + lastPlacement);\r\n tooltip.addClass(options.placementClassPrefix + ttPosition.placement);\r\n }\r\n\r\n adjustmentTimeout = $timeout(function() {\r\n var currentHeight = angular.isDefined(tooltip.offsetHeight) ? tooltip.offsetHeight : tooltip.prop('offsetHeight');\r\n var adjustment = $position.adjustTop(placementClasses, elementPos, initialHeight, currentHeight);\r\n if (adjustment) {\r\n tooltip.css(adjustment);\r\n }\r\n adjustmentTimeout = null;\r\n }, 0, false);\r\n\r\n // first time through tt element will have the\r\n // uib-position-measure class or if the placement\r\n // has changed we need to position the arrow.\r\n if (tooltip.hasClass('uib-position-measure')) {\r\n $position.positionArrow(tooltip, ttPosition.placement);\r\n tooltip.removeClass('uib-position-measure');\r\n } else if (lastPlacement !== ttPosition.placement) {\r\n $position.positionArrow(tooltip, ttPosition.placement);\r\n }\r\n lastPlacement = ttPosition.placement;\r\n\r\n positionTimeout = null;\r\n }, 0, false);\r\n }\r\n };\r\n\r\n // Set up the correct scope to allow transclusion later\r\n ttScope.origScope = scope;\r\n\r\n // By default, the tooltip is not open.\r\n // TODO add ability to start tooltip opened\r\n ttScope.isOpen = false;\r\n\r\n function toggleTooltipBind() {\r\n if (!ttScope.isOpen) {\r\n showTooltipBind();\r\n } else {\r\n hideTooltipBind();\r\n }\r\n }\r\n\r\n // Show the tooltip with delay if specified, otherwise show it immediately\r\n function showTooltipBind() {\r\n if (hasEnableExp && !scope.$eval(attrs[prefix + 'Enable'])) {\r\n return;\r\n }\r\n\r\n cancelHide();\r\n prepareTooltip();\r\n\r\n if (ttScope.popupDelay) {\r\n // Do nothing if the tooltip was already scheduled to pop-up.\r\n // This happens if show is triggered multiple times before any hide is triggered.\r\n if (!showTimeout) {\r\n showTimeout = $timeout(show, ttScope.popupDelay, false);\r\n }\r\n } else {\r\n show();\r\n }\r\n }\r\n\r\n function hideTooltipBind() {\r\n cancelShow();\r\n\r\n if (ttScope.popupCloseDelay) {\r\n if (!hideTimeout) {\r\n hideTimeout = $timeout(hide, ttScope.popupCloseDelay, false);\r\n }\r\n } else {\r\n hide();\r\n }\r\n }\r\n\r\n // Show the tooltip popup element.\r\n function show() {\r\n cancelShow();\r\n cancelHide();\r\n\r\n // Don't show empty tooltips.\r\n if (!ttScope.content) {\r\n return angular.noop;\r\n }\r\n\r\n createTooltip();\r\n\r\n // And show the tooltip.\r\n ttScope.$evalAsync(function() {\r\n ttScope.isOpen = true;\r\n assignIsOpen(true);\r\n positionTooltip();\r\n });\r\n }\r\n\r\n function cancelShow() {\r\n if (showTimeout) {\r\n $timeout.cancel(showTimeout);\r\n showTimeout = null;\r\n }\r\n\r\n if (positionTimeout) {\r\n $timeout.cancel(positionTimeout);\r\n positionTimeout = null;\r\n }\r\n }\r\n\r\n // Hide the tooltip popup element.\r\n function hide() {\r\n if (!ttScope) {\r\n return;\r\n }\r\n\r\n // First things first: we don't show it anymore.\r\n ttScope.$evalAsync(function() {\r\n if (ttScope) {\r\n ttScope.isOpen = false;\r\n assignIsOpen(false);\r\n // And now we remove it from the DOM. However, if we have animation, we\r\n // need to wait for it to expire beforehand.\r\n // FIXME: this is a placeholder for a port of the transitions library.\r\n // The fade transition in TWBS is 150ms.\r\n if (ttScope.animation) {\r\n if (!transitionTimeout) {\r\n transitionTimeout = $timeout(removeTooltip, 150, false);\r\n }\r\n } else {\r\n removeTooltip();\r\n }\r\n }\r\n });\r\n }\r\n\r\n function cancelHide() {\r\n if (hideTimeout) {\r\n $timeout.cancel(hideTimeout);\r\n hideTimeout = null;\r\n }\r\n\r\n if (transitionTimeout) {\r\n $timeout.cancel(transitionTimeout);\r\n transitionTimeout = null;\r\n }\r\n }\r\n\r\n function createTooltip() {\r\n // There can only be one tooltip element per directive shown at once.\r\n if (tooltip) {\r\n return;\r\n }\r\n\r\n tooltipLinkedScope = ttScope.$new();\r\n tooltip = tooltipLinker(tooltipLinkedScope, function(tooltip) {\r\n if (appendToBody) {\r\n $document.find('body').append(tooltip);\r\n } else {\r\n element.after(tooltip);\r\n }\r\n });\r\n\r\n openedTooltips.add(ttScope, {\r\n close: hide\r\n });\r\n\r\n prepObservers();\r\n }\r\n\r\n function removeTooltip() {\r\n cancelShow();\r\n cancelHide();\r\n unregisterObservers();\r\n\r\n if (tooltip) {\r\n tooltip.remove();\r\n\r\n tooltip = null;\r\n if (adjustmentTimeout) {\r\n $timeout.cancel(adjustmentTimeout);\r\n }\r\n }\r\n\r\n openedTooltips.remove(ttScope);\r\n\r\n if (tooltipLinkedScope) {\r\n tooltipLinkedScope.$destroy();\r\n tooltipLinkedScope = null;\r\n }\r\n }\r\n\r\n /**\r\n * Set the initial scope values. Once\r\n * the tooltip is created, the observers\r\n * will be added to keep things in sync.\r\n */\r\n function prepareTooltip() {\r\n ttScope.title = attrs[prefix + 'Title'];\r\n if (contentParse) {\r\n ttScope.content = contentParse(scope);\r\n } else {\r\n ttScope.content = attrs[ttType];\r\n }\r\n\r\n ttScope.popupClass = attrs[prefix + 'Class'];\r\n ttScope.placement = angular.isDefined(attrs[prefix + 'Placement']) ? attrs[prefix + 'Placement'] : options.placement;\r\n var placement = $position.parsePlacement(ttScope.placement);\r\n lastPlacement = placement[1] ? placement[0] + '-' + placement[1] : placement[0];\r\n\r\n var delay = parseInt(attrs[prefix + 'PopupDelay'], 10);\r\n var closeDelay = parseInt(attrs[prefix + 'PopupCloseDelay'], 10);\r\n ttScope.popupDelay = !isNaN(delay) ? delay : options.popupDelay;\r\n ttScope.popupCloseDelay = !isNaN(closeDelay) ? closeDelay : options.popupCloseDelay;\r\n }\r\n\r\n function assignIsOpen(isOpen) {\r\n if (isOpenParse && angular.isFunction(isOpenParse.assign)) {\r\n isOpenParse.assign(scope, isOpen);\r\n }\r\n }\r\n\r\n ttScope.contentExp = function() {\r\n return ttScope.content;\r\n };\r\n\r\n /**\r\n * Observe the relevant attributes.\r\n */\r\n attrs.$observe('disabled', function(val) {\r\n if (val) {\r\n cancelShow();\r\n }\r\n\r\n if (val && ttScope.isOpen) {\r\n hide();\r\n }\r\n });\r\n\r\n if (isOpenParse) {\r\n scope.$watch(isOpenParse, function(val) {\r\n if (ttScope && !val === ttScope.isOpen) {\r\n toggleTooltipBind();\r\n }\r\n });\r\n }\r\n\r\n function prepObservers() {\r\n observers.length = 0;\r\n\r\n if (contentParse) {\r\n observers.push(\r\n scope.$watch(contentParse, function(val) {\r\n ttScope.content = val;\r\n if (!val && ttScope.isOpen) {\r\n hide();\r\n }\r\n })\r\n );\r\n\r\n observers.push(\r\n tooltipLinkedScope.$watch(function() {\r\n if (!repositionScheduled) {\r\n repositionScheduled = true;\r\n tooltipLinkedScope.$$postDigest(function() {\r\n repositionScheduled = false;\r\n if (ttScope && ttScope.isOpen) {\r\n positionTooltip();\r\n }\r\n });\r\n }\r\n })\r\n );\r\n } else {\r\n observers.push(\r\n attrs.$observe(ttType, function(val) {\r\n ttScope.content = val;\r\n if (!val && ttScope.isOpen) {\r\n hide();\r\n } else {\r\n positionTooltip();\r\n }\r\n })\r\n );\r\n }\r\n\r\n observers.push(\r\n attrs.$observe(prefix + 'Title', function(val) {\r\n ttScope.title = val;\r\n if (ttScope.isOpen) {\r\n positionTooltip();\r\n }\r\n })\r\n );\r\n\r\n observers.push(\r\n attrs.$observe(prefix + 'Placement', function(val) {\r\n ttScope.placement = val ? val : options.placement;\r\n if (ttScope.isOpen) {\r\n positionTooltip();\r\n }\r\n })\r\n );\r\n }\r\n\r\n function unregisterObservers() {\r\n if (observers.length) {\r\n angular.forEach(observers, function(observer) {\r\n observer();\r\n });\r\n observers.length = 0;\r\n }\r\n }\r\n\r\n // hide tooltips/popovers for outsideClick trigger\r\n function bodyHideTooltipBind(e) {\r\n if (!ttScope || !ttScope.isOpen || !tooltip) {\r\n return;\r\n }\r\n // make sure the tooltip/popover link or tool tooltip/popover itself were not clicked\r\n if (!element[0].contains(e.target) && !tooltip[0].contains(e.target)) {\r\n hideTooltipBind();\r\n }\r\n }\r\n\r\n // KeyboardEvent handler to hide the tooltip on Escape key press\r\n function hideOnEscapeKey(e) {\r\n if (e.which === 27) {\r\n hideTooltipBind();\r\n }\r\n }\r\n\r\n var unregisterTriggers = function() {\r\n triggers.show.forEach(function(trigger) {\r\n if (trigger === 'outsideClick') {\r\n element.off('click', toggleTooltipBind);\r\n } else {\r\n element.off(trigger, showTooltipBind);\r\n element.off(trigger, toggleTooltipBind);\r\n }\r\n element.off('keypress', hideOnEscapeKey);\r\n });\r\n triggers.hide.forEach(function(trigger) {\r\n if (trigger === 'outsideClick') {\r\n $document.off('click', bodyHideTooltipBind);\r\n } else {\r\n element.off(trigger, hideTooltipBind);\r\n }\r\n });\r\n };\r\n\r\n function prepTriggers() {\r\n var showTriggers = [], hideTriggers = [];\r\n var val = scope.$eval(attrs[prefix + 'Trigger']);\r\n unregisterTriggers();\r\n\r\n if (angular.isObject(val)) {\r\n Object.keys(val).forEach(function(key) {\r\n showTriggers.push(key);\r\n hideTriggers.push(val[key]);\r\n });\r\n triggers = {\r\n show: showTriggers,\r\n hide: hideTriggers\r\n };\r\n } else {\r\n triggers = getTriggers(val);\r\n }\r\n\r\n if (triggers.show !== 'none') {\r\n triggers.show.forEach(function(trigger, idx) {\r\n if (trigger === 'outsideClick') {\r\n element.on('click', toggleTooltipBind);\r\n $document.on('click', bodyHideTooltipBind);\r\n } else if (trigger === triggers.hide[idx]) {\r\n element.on(trigger, toggleTooltipBind);\r\n } else if (trigger) {\r\n element.on(trigger, showTooltipBind);\r\n element.on(triggers.hide[idx], hideTooltipBind);\r\n }\r\n element.on('keypress', hideOnEscapeKey);\r\n });\r\n }\r\n }\r\n\r\n prepTriggers();\r\n\r\n var animation = scope.$eval(attrs[prefix + 'Animation']);\r\n ttScope.animation = angular.isDefined(animation) ? !!animation : options.animation;\r\n\r\n var appendToBodyVal;\r\n var appendKey = prefix + 'AppendToBody';\r\n if (appendKey in attrs && attrs[appendKey] === undefined) {\r\n appendToBodyVal = true;\r\n } else {\r\n appendToBodyVal = scope.$eval(attrs[appendKey]);\r\n }\r\n\r\n appendToBody = angular.isDefined(appendToBodyVal) ? appendToBodyVal : appendToBody;\r\n\r\n // Make sure tooltip is destroyed and removed.\r\n scope.$on('$destroy', function onDestroyTooltip() {\r\n unregisterTriggers();\r\n removeTooltip();\r\n ttScope = null;\r\n });\r\n };\r\n }\r\n };\r\n };\r\n }];\r\n})\r\n\r\n// This is mostly ngInclude code but with a custom scope\r\n.directive('uibTooltipTemplateTransclude', [\r\n '$animate', '$sce', '$compile', '$templateRequest',\r\nfunction ($animate, $sce, $compile, $templateRequest) {\r\n return {\r\n link: function(scope, elem, attrs) {\r\n var origScope = scope.$eval(attrs.tooltipTemplateTranscludeScope);\r\n\r\n var changeCounter = 0,\r\n currentScope,\r\n previousElement,\r\n currentElement;\r\n\r\n var cleanupLastIncludeContent = function() {\r\n if (previousElement) {\r\n previousElement.remove();\r\n previousElement = null;\r\n }\r\n\r\n if (currentScope) {\r\n currentScope.$destroy();\r\n currentScope = null;\r\n }\r\n\r\n if (currentElement) {\r\n $animate.leave(currentElement).then(function() {\r\n previousElement = null;\r\n });\r\n previousElement = currentElement;\r\n currentElement = null;\r\n }\r\n };\r\n\r\n scope.$watch($sce.parseAsResourceUrl(attrs.uibTooltipTemplateTransclude), function(src) {\r\n var thisChangeId = ++changeCounter;\r\n\r\n if (src) {\r\n //set the 2nd param to true to ignore the template request error so that the inner\r\n //contents and scope can be cleaned up.\r\n $templateRequest(src, true).then(function(response) {\r\n if (thisChangeId !== changeCounter) { return; }\r\n var newScope = origScope.$new();\r\n var template = response;\r\n\r\n var clone = $compile(template)(newScope, function(clone) {\r\n cleanupLastIncludeContent();\r\n $animate.enter(clone, elem);\r\n });\r\n\r\n currentScope = newScope;\r\n currentElement = clone;\r\n\r\n currentScope.$emit('$includeContentLoaded', src);\r\n }, function() {\r\n if (thisChangeId === changeCounter) {\r\n cleanupLastIncludeContent();\r\n scope.$emit('$includeContentError', src);\r\n }\r\n });\r\n scope.$emit('$includeContentRequested', src);\r\n } else {\r\n cleanupLastIncludeContent();\r\n }\r\n });\r\n\r\n scope.$on('$destroy', cleanupLastIncludeContent);\r\n }\r\n };\r\n}])\r\n\r\n/**\r\n * Note that it's intentional that these classes are *not* applied through $animate.\r\n * They must not be animated as they're expected to be present on the tooltip on\r\n * initialization.\r\n */\r\n.directive('uibTooltipClasses', ['$uibPosition', function($uibPosition) {\r\n return {\r\n restrict: 'A',\r\n link: function(scope, element, attrs) {\r\n // need to set the primary position so the\r\n // arrow has space during position measure.\r\n // tooltip.positionTooltip()\r\n if (scope.placement) {\r\n // // There are no top-left etc... classes\r\n // // in TWBS, so we need the primary position.\r\n var position = $uibPosition.parsePlacement(scope.placement);\r\n element.addClass(position[0]);\r\n }\r\n\r\n if (scope.popupClass) {\r\n element.addClass(scope.popupClass);\r\n }\r\n\r\n if (scope.animation) {\r\n element.addClass(attrs.tooltipAnimationClass);\r\n }\r\n }\r\n };\r\n}])\r\n\r\n.directive('uibTooltipPopup', function() {\r\n return {\r\n restrict: 'A',\r\n scope: { content: '@' },\r\n templateUrl: 'uib/template/tooltip/tooltip-popup.html'\r\n };\r\n})\r\n\r\n.directive('uibTooltip', [ '$uibTooltip', function($uibTooltip) {\r\n return $uibTooltip('uibTooltip', 'tooltip', 'mouseenter');\r\n}])\r\n\r\n.directive('uibTooltipTemplatePopup', function() {\r\n return {\r\n restrict: 'A',\r\n scope: { contentExp: '&', originScope: '&' },\r\n templateUrl: 'uib/template/tooltip/tooltip-template-popup.html'\r\n };\r\n})\r\n\r\n.directive('uibTooltipTemplate', ['$uibTooltip', function($uibTooltip) {\r\n return $uibTooltip('uibTooltipTemplate', 'tooltip', 'mouseenter', {\r\n useContentExp: true\r\n });\r\n}])\r\n\r\n.directive('uibTooltipHtmlPopup', function() {\r\n return {\r\n restrict: 'A',\r\n scope: { contentExp: '&' },\r\n templateUrl: 'uib/template/tooltip/tooltip-html-popup.html'\r\n };\r\n})\r\n\r\n.directive('uibTooltipHtml', ['$uibTooltip', function($uibTooltip) {\r\n return $uibTooltip('uibTooltipHtml', 'tooltip', 'mouseenter', {\r\n useContentExp: true\r\n });\r\n}]);\r\n\r\n/**\r\n * The following features are still outstanding: popup delay, animation as a\r\n * function, placement as a function, inside, support for more triggers than\r\n * just mouse enter/leave, and selector delegatation.\r\n */\r\nangular.module('ui.bootstrap.popover', ['ui.bootstrap.tooltip'])\r\n\r\n.directive('uibPopoverTemplatePopup', function() {\r\n return {\r\n restrict: 'A',\r\n scope: { uibTitle: '@', contentExp: '&', originScope: '&' },\r\n templateUrl: 'uib/template/popover/popover-template.html'\r\n };\r\n})\r\n\r\n.directive('uibPopoverTemplate', ['$uibTooltip', function($uibTooltip) {\r\n return $uibTooltip('uibPopoverTemplate', 'popover', 'click', {\r\n useContentExp: true\r\n });\r\n}])\r\n\r\n.directive('uibPopoverHtmlPopup', function() {\r\n return {\r\n restrict: 'A',\r\n scope: { contentExp: '&', uibTitle: '@' },\r\n templateUrl: 'uib/template/popover/popover-html.html'\r\n };\r\n})\r\n\r\n.directive('uibPopoverHtml', ['$uibTooltip', function($uibTooltip) {\r\n return $uibTooltip('uibPopoverHtml', 'popover', 'click', {\r\n useContentExp: true\r\n });\r\n}])\r\n\r\n.directive('uibPopoverPopup', function() {\r\n return {\r\n restrict: 'A',\r\n scope: { uibTitle: '@', content: '@' },\r\n templateUrl: 'uib/template/popover/popover.html'\r\n };\r\n})\r\n\r\n.directive('uibPopover', ['$uibTooltip', function($uibTooltip) {\r\n return $uibTooltip('uibPopover', 'popover', 'click');\r\n}]);\r\n\r\nangular.module('ui.bootstrap.tabs', [])\r\n\r\n.controller('UibTabsetController', ['$scope', function ($scope) {\r\n var ctrl = this,\r\n oldIndex;\r\n ctrl.tabs = [];\r\n\r\n ctrl.select = function(index, evt) {\r\n if (!destroyed) {\r\n var previousIndex = findTabIndex(oldIndex);\r\n var previousSelected = ctrl.tabs[previousIndex];\r\n if (previousSelected) {\r\n previousSelected.tab.onDeselect({\r\n $event: evt,\r\n $selectedIndex: index\r\n });\r\n if (evt && evt.isDefaultPrevented()) {\r\n return;\r\n }\r\n previousSelected.tab.active = false;\r\n }\r\n\r\n var selected = ctrl.tabs[index];\r\n if (selected) {\r\n selected.tab.onSelect({\r\n $event: evt\r\n });\r\n selected.tab.active = true;\r\n ctrl.active = selected.index;\r\n oldIndex = selected.index;\r\n } else if (!selected && angular.isDefined(oldIndex)) {\r\n ctrl.active = null;\r\n oldIndex = null;\r\n }\r\n }\r\n };\r\n\r\n ctrl.addTab = function addTab(tab) {\r\n ctrl.tabs.push({\r\n tab: tab,\r\n index: tab.index\r\n });\r\n ctrl.tabs.sort(function(t1, t2) {\r\n if (t1.index > t2.index) {\r\n return 1;\r\n }\r\n\r\n if (t1.index < t2.index) {\r\n return -1;\r\n }\r\n\r\n return 0;\r\n });\r\n\r\n if (tab.index === ctrl.active || !angular.isDefined(ctrl.active) && ctrl.tabs.length === 1) {\r\n var newActiveIndex = findTabIndex(tab.index);\r\n ctrl.select(newActiveIndex);\r\n }\r\n };\r\n\r\n ctrl.removeTab = function removeTab(tab) {\r\n var index;\r\n for (var i = 0; i < ctrl.tabs.length; i++) {\r\n if (ctrl.tabs[i].tab === tab) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n\r\n if (ctrl.tabs[index].index === ctrl.active) {\r\n var newActiveTabIndex = index === ctrl.tabs.length - 1 ?\r\n index - 1 : index + 1 % ctrl.tabs.length;\r\n ctrl.select(newActiveTabIndex);\r\n }\r\n\r\n ctrl.tabs.splice(index, 1);\r\n };\r\n\r\n $scope.$watch('tabset.active', function(val) {\r\n if (angular.isDefined(val) && val !== oldIndex) {\r\n ctrl.select(findTabIndex(val));\r\n }\r\n });\r\n\r\n var destroyed;\r\n $scope.$on('$destroy', function() {\r\n destroyed = true;\r\n });\r\n\r\n function findTabIndex(index) {\r\n for (var i = 0; i < ctrl.tabs.length; i++) {\r\n if (ctrl.tabs[i].index === index) {\r\n return i;\r\n }\r\n }\r\n }\r\n}])\r\n\r\n.directive('uibTabset', function() {\r\n return {\r\n transclude: true,\r\n replace: true,\r\n scope: {},\r\n bindToController: {\r\n active: '=?',\r\n type: '@'\r\n },\r\n controller: 'UibTabsetController',\r\n controllerAs: 'tabset',\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/tabs/tabset.html';\r\n },\r\n link: function(scope, element, attrs) {\r\n scope.vertical = angular.isDefined(attrs.vertical) ?\r\n scope.$parent.$eval(attrs.vertical) : false;\r\n scope.justified = angular.isDefined(attrs.justified) ?\r\n scope.$parent.$eval(attrs.justified) : false;\r\n scope.centered = angular.isDefined(attrs.centered) ?\r\n scope.$parent.$eval(attrs.centered) : false;\r\n }\r\n };\r\n})\r\n\r\n.directive('uibTab', ['$parse', function($parse) {\r\n return {\r\n require: '^uibTabset',\r\n replace: true,\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/tabs/tab.html';\r\n },\r\n transclude: true,\r\n scope: {\r\n heading: '@',\r\n index: '=?',\r\n classes: '@?',\r\n onSelect: '&select', //This callback is called in contentHeadingTransclude\r\n //once it inserts the tab's content into the dom\r\n onDeselect: '&deselect'\r\n },\r\n controller: function() {\r\n //Empty controller so other directives can require being 'under' a tab\r\n },\r\n controllerAs: 'tab',\r\n link: function(scope, elm, attrs, tabsetCtrl, transclude) {\r\n scope.disabled = false;\r\n if (attrs.disable) {\r\n scope.$parent.$watch($parse(attrs.disable), function(value) {\r\n scope.disabled = !! value;\r\n });\r\n }\r\n\r\n scope.hide = false;\r\n if (attrs.hide) {\r\n scope.$parent.$watch($parse(attrs.hide), function(value) {\r\n scope.hide = !! value;\r\n });\r\n }\r\n\r\n if (angular.isUndefined(attrs.index)) {\r\n if (tabsetCtrl.tabs && tabsetCtrl.tabs.length) {\r\n scope.index = Math.max.apply(null, tabsetCtrl.tabs.map(function(t) { return t.index; })) + 1;\r\n } else {\r\n scope.index = 0;\r\n }\r\n }\r\n\r\n if (angular.isUndefined(attrs.classes)) {\r\n scope.classes = '';\r\n }\r\n\r\n scope.select = function(evt) {\r\n if (!scope.disabled) {\r\n var index;\r\n for (var i = 0; i < tabsetCtrl.tabs.length; i++) {\r\n if (tabsetCtrl.tabs[i].tab === scope) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n\r\n tabsetCtrl.select(index, evt);\r\n }\r\n };\r\n\r\n tabsetCtrl.addTab(scope);\r\n scope.$on('$destroy', function() {\r\n tabsetCtrl.removeTab(scope);\r\n });\r\n\r\n //We need to transclude later, once the content container is ready.\r\n //when this link happens, we're inside a tab heading.\r\n scope.$transcludeFn = transclude;\r\n }\r\n };\r\n}])\r\n\r\n.directive('uibTabHeadingTransclude', function() {\r\n return {\r\n restrict: 'A',\r\n require: '^uibTab',\r\n link: function(scope, elm) {\r\n scope.$watch('headingElement', function updateHeadingElement(heading) {\r\n if (heading) {\r\n elm.html('');\r\n elm.append(heading);\r\n }\r\n });\r\n }\r\n };\r\n})\r\n\r\n.directive('uibTabContentTransclude', function() {\r\n return {\r\n restrict: 'A',\r\n require: '^uibTabset',\r\n link: function(scope, elm, attrs) {\r\n var tab = scope.$eval(attrs.uibTabContentTransclude).tab;\r\n\r\n //Now our tab is ready to be transcluded: both the tab heading area\r\n //and the tab content area are loaded. Transclude 'em both.\r\n tab.$transcludeFn(tab.$parent, function(contents) {\r\n angular.forEach(contents, function(node) {\r\n if (isTabHeading(node)) {\r\n //Let tabHeadingTransclude know.\r\n tab.headingElement = node;\r\n } else {\r\n elm.append(node);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n\r\n function isTabHeading(node) {\r\n return node.tagName && (\r\n node.hasAttribute('uib-tab-heading') ||\r\n node.hasAttribute('data-uib-tab-heading') ||\r\n node.hasAttribute('x-uib-tab-heading') ||\r\n node.tagName.toLowerCase() === 'uib-tab-heading' ||\r\n node.tagName.toLowerCase() === 'data-uib-tab-heading' ||\r\n node.tagName.toLowerCase() === 'x-uib-tab-heading' ||\r\n node.tagName.toLowerCase() === 'uib:tab-heading'\r\n );\r\n }\r\n});\r\n\r\nangular.module('ui.bootstrap.rating', [])\r\n\r\n.constant('uibRatingConfig', {\r\n max: 5,\r\n stateOn: null,\r\n stateOff: null,\r\n enableReset: true,\r\n titles: ['one', 'two', 'three', 'four', 'five']\r\n})\r\n\r\n.controller('UibRatingController', ['$scope', '$attrs', 'uibRatingConfig', function($scope, $attrs, ratingConfig) {\r\n var ngModelCtrl = { $setViewValue: angular.noop },\r\n self = this;\r\n\r\n this.init = function(ngModelCtrl_) {\r\n ngModelCtrl = ngModelCtrl_;\r\n ngModelCtrl.$render = this.render;\r\n\r\n ngModelCtrl.$formatters.push(function(value) {\r\n if (angular.isNumber(value) && value << 0 !== value) {\r\n value = Math.round(value);\r\n }\r\n\r\n return value;\r\n });\r\n\r\n this.stateOn = angular.isDefined($attrs.stateOn) ? $scope.$parent.$eval($attrs.stateOn) : ratingConfig.stateOn;\r\n this.stateOff = angular.isDefined($attrs.stateOff) ? $scope.$parent.$eval($attrs.stateOff) : ratingConfig.stateOff;\r\n this.enableReset = angular.isDefined($attrs.enableReset) ?\r\n $scope.$parent.$eval($attrs.enableReset) : ratingConfig.enableReset;\r\n var tmpTitles = angular.isDefined($attrs.titles) ? $scope.$parent.$eval($attrs.titles) : ratingConfig.titles;\r\n this.titles = angular.isArray(tmpTitles) && tmpTitles.length > 0 ?\r\n tmpTitles : ratingConfig.titles;\r\n\r\n var ratingStates = angular.isDefined($attrs.ratingStates) ?\r\n $scope.$parent.$eval($attrs.ratingStates) :\r\n new Array(angular.isDefined($attrs.max) ? $scope.$parent.$eval($attrs.max) : ratingConfig.max);\r\n $scope.range = this.buildTemplateObjects(ratingStates);\r\n };\r\n\r\n this.buildTemplateObjects = function(states) {\r\n for (var i = 0, n = states.length; i < n; i++) {\r\n states[i] = angular.extend({ index: i }, { stateOn: this.stateOn, stateOff: this.stateOff, title: this.getTitle(i) }, states[i]);\r\n }\r\n return states;\r\n };\r\n\r\n this.getTitle = function(index) {\r\n if (index >= this.titles.length) {\r\n return index + 1;\r\n }\r\n\r\n return this.titles[index];\r\n };\r\n\r\n $scope.rate = function(value) {\r\n if (!$scope.readonly && value >= 0 && value <= $scope.range.length) {\r\n var newViewValue = self.enableReset && ngModelCtrl.$viewValue === value ? 0 : value;\r\n ngModelCtrl.$setViewValue(newViewValue);\r\n ngModelCtrl.$render();\r\n }\r\n };\r\n\r\n $scope.enter = function(value) {\r\n if (!$scope.readonly) {\r\n $scope.value = value;\r\n }\r\n $scope.onHover({value: value});\r\n };\r\n\r\n $scope.reset = function() {\r\n $scope.value = ngModelCtrl.$viewValue;\r\n $scope.onLeave();\r\n };\r\n\r\n $scope.onKeydown = function(evt) {\r\n if (/(37|38|39|40)/.test(evt.which)) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n $scope.rate($scope.value + (evt.which === 38 || evt.which === 39 ? 1 : -1));\r\n }\r\n };\r\n\r\n this.render = function() {\r\n $scope.value = ngModelCtrl.$viewValue;\r\n $scope.title = self.getTitle($scope.value - 1);\r\n };\r\n}])\r\n\r\n.directive('uibRating', function() {\r\n return {\r\n require: ['uibRating', 'ngModel'],\r\n restrict: 'A',\r\n scope: {\r\n readonly: '=?readOnly',\r\n onHover: '&',\r\n onLeave: '&'\r\n },\r\n controller: 'UibRatingController',\r\n templateUrl: 'uib/template/rating/rating.html',\r\n link: function(scope, element, attrs, ctrls) {\r\n var ratingCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n ratingCtrl.init(ngModelCtrl);\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.dropdown', ['ui.bootstrap.multiMap', 'ui.bootstrap.position'])\r\n\r\n.constant('uibDropdownConfig', {\r\n appendToOpenClass: 'uib-dropdown-open',\r\n openClass: 'open'\r\n})\r\n\r\n.service('uibDropdownService', ['$document', '$rootScope', '$$multiMap', function($document, $rootScope, $$multiMap) {\r\n var openScope = null;\r\n var openedContainers = $$multiMap.createNew();\r\n\r\n this.isOnlyOpen = function(dropdownScope, appendTo) {\r\n var openedDropdowns = openedContainers.get(appendTo);\r\n if (openedDropdowns) {\r\n var openDropdown = openedDropdowns.reduce(function(toClose, dropdown) {\r\n if (dropdown.scope === dropdownScope) {\r\n return dropdown;\r\n }\r\n\r\n return toClose;\r\n }, {});\r\n if (openDropdown) {\r\n return openedDropdowns.length === 1;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n this.open = function(dropdownScope, element, appendTo) {\r\n if (!openScope) {\r\n $document.on('click', closeDropdown);\r\n }\r\n\r\n if (openScope && openScope !== dropdownScope) {\r\n openScope.isOpen = false;\r\n }\r\n\r\n openScope = dropdownScope;\r\n\r\n if (!appendTo) {\r\n return;\r\n }\r\n\r\n var openedDropdowns = openedContainers.get(appendTo);\r\n if (openedDropdowns) {\r\n var openedScopes = openedDropdowns.map(function(dropdown) {\r\n return dropdown.scope;\r\n });\r\n if (openedScopes.indexOf(dropdownScope) === -1) {\r\n openedContainers.put(appendTo, {\r\n scope: dropdownScope\r\n });\r\n }\r\n } else {\r\n openedContainers.put(appendTo, {\r\n scope: dropdownScope\r\n });\r\n }\r\n };\r\n\r\n this.close = function(dropdownScope, element, appendTo) {\r\n if (openScope === dropdownScope) {\r\n $document.off('click', closeDropdown);\r\n $document.off('keydown', this.keybindFilter);\r\n openScope = null;\r\n }\r\n\r\n if (!appendTo) {\r\n return;\r\n }\r\n\r\n var openedDropdowns = openedContainers.get(appendTo);\r\n if (openedDropdowns) {\r\n var dropdownToClose = openedDropdowns.reduce(function(toClose, dropdown) {\r\n if (dropdown.scope === dropdownScope) {\r\n return dropdown;\r\n }\r\n\r\n return toClose;\r\n }, {});\r\n if (dropdownToClose) {\r\n openedContainers.remove(appendTo, dropdownToClose);\r\n }\r\n }\r\n };\r\n\r\n var closeDropdown = function(evt) {\r\n // This method may still be called during the same mouse event that\r\n // unbound this event handler. So check openScope before proceeding.\r\n if (!openScope || !openScope.isOpen) { return; }\r\n\r\n if (evt && openScope.getAutoClose() === 'disabled') { return; }\r\n\r\n if (evt && evt.which === 3) { return; }\r\n\r\n var toggleElement = openScope.getToggleElement();\r\n if (evt && toggleElement && toggleElement[0].contains(evt.target)) {\r\n return;\r\n }\r\n\r\n var dropdownElement = openScope.getDropdownElement();\r\n if (evt && openScope.getAutoClose() === 'outsideClick' &&\r\n dropdownElement && dropdownElement[0].contains(evt.target)) {\r\n return;\r\n }\r\n\r\n openScope.focusToggleElement();\r\n openScope.isOpen = false;\r\n\r\n if (!$rootScope.$$phase) {\r\n openScope.$apply();\r\n }\r\n };\r\n\r\n this.keybindFilter = function(evt) {\r\n if (!openScope) {\r\n // see this.close as ESC could have been pressed which kills the scope so we can not proceed\r\n return;\r\n }\r\n\r\n var dropdownElement = openScope.getDropdownElement();\r\n var toggleElement = openScope.getToggleElement();\r\n var dropdownElementTargeted = dropdownElement && dropdownElement[0].contains(evt.target);\r\n var toggleElementTargeted = toggleElement && toggleElement[0].contains(evt.target);\r\n if (evt.which === 27) {\r\n evt.stopPropagation();\r\n openScope.focusToggleElement();\r\n closeDropdown();\r\n } else if (openScope.isKeynavEnabled() && [38, 40].indexOf(evt.which) !== -1 && openScope.isOpen && (dropdownElementTargeted || toggleElementTargeted)) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n openScope.focusDropdownEntry(evt.which);\r\n }\r\n };\r\n}])\r\n\r\n.controller('UibDropdownController', ['$scope', '$element', '$attrs', '$parse', 'uibDropdownConfig', 'uibDropdownService', '$animate', '$uibPosition', '$document', '$compile', '$templateRequest', function($scope, $element, $attrs, $parse, dropdownConfig, uibDropdownService, $animate, $position, $document, $compile, $templateRequest) {\r\n var self = this,\r\n scope = $scope.$new(), // create a child scope so we are not polluting original one\r\n templateScope,\r\n appendToOpenClass = dropdownConfig.appendToOpenClass,\r\n openClass = dropdownConfig.openClass,\r\n getIsOpen,\r\n setIsOpen = angular.noop,\r\n toggleInvoker = $attrs.onToggle ? $parse($attrs.onToggle) : angular.noop,\r\n keynavEnabled = false,\r\n selectedOption = null,\r\n body = $document.find('body');\r\n\r\n $element.addClass('dropdown');\r\n\r\n this.init = function() {\r\n if ($attrs.isOpen) {\r\n getIsOpen = $parse($attrs.isOpen);\r\n setIsOpen = getIsOpen.assign;\r\n\r\n $scope.$watch(getIsOpen, function(value) {\r\n scope.isOpen = !!value;\r\n });\r\n }\r\n\r\n keynavEnabled = angular.isDefined($attrs.keyboardNav);\r\n };\r\n\r\n this.toggle = function(open) {\r\n scope.isOpen = arguments.length ? !!open : !scope.isOpen;\r\n if (angular.isFunction(setIsOpen)) {\r\n setIsOpen(scope, scope.isOpen);\r\n }\r\n\r\n return scope.isOpen;\r\n };\r\n\r\n // Allow other directives to watch status\r\n this.isOpen = function() {\r\n return scope.isOpen;\r\n };\r\n\r\n scope.getToggleElement = function() {\r\n return self.toggleElement;\r\n };\r\n\r\n scope.getAutoClose = function() {\r\n return $attrs.autoClose || 'always'; //or 'outsideClick' or 'disabled'\r\n };\r\n\r\n scope.getElement = function() {\r\n return $element;\r\n };\r\n\r\n scope.isKeynavEnabled = function() {\r\n return keynavEnabled;\r\n };\r\n\r\n scope.focusDropdownEntry = function(keyCode) {\r\n var elems = self.dropdownMenu ? //If append to body is used.\r\n angular.element(self.dropdownMenu).find('a') :\r\n $element.find('ul').eq(0).find('a');\r\n\r\n switch (keyCode) {\r\n case 40: {\r\n if (!angular.isNumber(self.selectedOption)) {\r\n self.selectedOption = 0;\r\n } else {\r\n self.selectedOption = self.selectedOption === elems.length - 1 ?\r\n self.selectedOption :\r\n self.selectedOption + 1;\r\n }\r\n break;\r\n }\r\n case 38: {\r\n if (!angular.isNumber(self.selectedOption)) {\r\n self.selectedOption = elems.length - 1;\r\n } else {\r\n self.selectedOption = self.selectedOption === 0 ?\r\n 0 : self.selectedOption - 1;\r\n }\r\n break;\r\n }\r\n }\r\n elems[self.selectedOption].focus();\r\n };\r\n\r\n scope.getDropdownElement = function() {\r\n return self.dropdownMenu;\r\n };\r\n\r\n scope.focusToggleElement = function() {\r\n if (self.toggleElement) {\r\n self.toggleElement[0].focus();\r\n }\r\n };\r\n\r\n function removeDropdownMenu() {\r\n $element.append(self.dropdownMenu);\r\n }\r\n\r\n scope.$watch('isOpen', function(isOpen, wasOpen) {\r\n var appendTo = null,\r\n appendToBody = false;\r\n\r\n if (angular.isDefined($attrs.dropdownAppendTo)) {\r\n var appendToEl = $parse($attrs.dropdownAppendTo)(scope);\r\n if (appendToEl) {\r\n appendTo = angular.element(appendToEl);\r\n }\r\n }\r\n\r\n if (angular.isDefined($attrs.dropdownAppendToBody)) {\r\n var appendToBodyValue = $parse($attrs.dropdownAppendToBody)(scope);\r\n if (appendToBodyValue !== false) {\r\n appendToBody = true;\r\n }\r\n }\r\n\r\n if (appendToBody && !appendTo) {\r\n appendTo = body;\r\n }\r\n\r\n if (appendTo && self.dropdownMenu) {\r\n if (isOpen) {\r\n appendTo.append(self.dropdownMenu);\r\n $element.on('$destroy', removeDropdownMenu);\r\n } else {\r\n $element.off('$destroy', removeDropdownMenu);\r\n removeDropdownMenu();\r\n }\r\n }\r\n\r\n if (appendTo && self.dropdownMenu) {\r\n var pos = $position.positionElements($element, self.dropdownMenu, 'bottom-left', true),\r\n css,\r\n rightalign,\r\n scrollbarPadding,\r\n scrollbarWidth = 0;\r\n\r\n css = {\r\n top: pos.top + 'px',\r\n display: isOpen ? 'block' : 'none'\r\n };\r\n\r\n rightalign = self.dropdownMenu.hasClass('dropdown-menu-right');\r\n if (!rightalign) {\r\n css.left = pos.left + 'px';\r\n css.right = 'auto';\r\n } else {\r\n css.left = 'auto';\r\n scrollbarPadding = $position.scrollbarPadding(appendTo);\r\n\r\n if (scrollbarPadding.heightOverflow && scrollbarPadding.scrollbarWidth) {\r\n scrollbarWidth = scrollbarPadding.scrollbarWidth;\r\n }\r\n\r\n css.right = window.innerWidth - scrollbarWidth -\r\n (pos.left + $element.prop('offsetWidth')) + 'px';\r\n }\r\n\r\n // Need to adjust our positioning to be relative to the appendTo container\r\n // if it's not the body element\r\n if (!appendToBody) {\r\n var appendOffset = $position.offset(appendTo);\r\n\r\n css.top = pos.top - appendOffset.top + 'px';\r\n\r\n if (!rightalign) {\r\n css.left = pos.left - appendOffset.left + 'px';\r\n } else {\r\n css.right = window.innerWidth -\r\n (pos.left - appendOffset.left + $element.prop('offsetWidth')) + 'px';\r\n }\r\n }\r\n\r\n self.dropdownMenu.css(css);\r\n }\r\n\r\n var openContainer = appendTo ? appendTo : $element;\r\n var dropdownOpenClass = appendTo ? appendToOpenClass : openClass;\r\n var hasOpenClass = openContainer.hasClass(dropdownOpenClass);\r\n var isOnlyOpen = uibDropdownService.isOnlyOpen($scope, appendTo);\r\n\r\n if (hasOpenClass === !isOpen) {\r\n var toggleClass;\r\n if (appendTo) {\r\n toggleClass = !isOnlyOpen ? 'addClass' : 'removeClass';\r\n } else {\r\n toggleClass = isOpen ? 'addClass' : 'removeClass';\r\n }\r\n $animate[toggleClass](openContainer, dropdownOpenClass).then(function() {\r\n if (angular.isDefined(isOpen) && isOpen !== wasOpen) {\r\n toggleInvoker($scope, { open: !!isOpen });\r\n }\r\n });\r\n }\r\n\r\n if (isOpen) {\r\n if (self.dropdownMenuTemplateUrl) {\r\n $templateRequest(self.dropdownMenuTemplateUrl).then(function(tplContent) {\r\n templateScope = scope.$new();\r\n $compile(tplContent.trim())(templateScope, function(dropdownElement) {\r\n var newEl = dropdownElement;\r\n self.dropdownMenu.replaceWith(newEl);\r\n self.dropdownMenu = newEl;\r\n $document.on('keydown', uibDropdownService.keybindFilter);\r\n });\r\n });\r\n } else {\r\n $document.on('keydown', uibDropdownService.keybindFilter);\r\n }\r\n\r\n scope.focusToggleElement();\r\n uibDropdownService.open(scope, $element, appendTo);\r\n } else {\r\n uibDropdownService.close(scope, $element, appendTo);\r\n if (self.dropdownMenuTemplateUrl) {\r\n if (templateScope) {\r\n templateScope.$destroy();\r\n }\r\n var newEl = angular.element('
      ');\r\n self.dropdownMenu.replaceWith(newEl);\r\n self.dropdownMenu = newEl;\r\n }\r\n\r\n self.selectedOption = null;\r\n }\r\n\r\n if (angular.isFunction(setIsOpen)) {\r\n setIsOpen($scope, isOpen);\r\n }\r\n });\r\n}])\r\n\r\n.directive('uibDropdown', function() {\r\n return {\r\n controller: 'UibDropdownController',\r\n link: function(scope, element, attrs, dropdownCtrl) {\r\n dropdownCtrl.init();\r\n }\r\n };\r\n})\r\n\r\n.directive('uibDropdownMenu', function() {\r\n return {\r\n restrict: 'A',\r\n require: '?^uibDropdown',\r\n link: function(scope, element, attrs, dropdownCtrl) {\r\n if (!dropdownCtrl || angular.isDefined(attrs.dropdownNested)) {\r\n return;\r\n }\r\n\r\n element.addClass('dropdown-menu');\r\n\r\n var tplUrl = attrs.templateUrl;\r\n if (tplUrl) {\r\n dropdownCtrl.dropdownMenuTemplateUrl = tplUrl;\r\n }\r\n\r\n if (!dropdownCtrl.dropdownMenu) {\r\n dropdownCtrl.dropdownMenu = element;\r\n }\r\n }\r\n };\r\n})\r\n\r\n.directive('uibDropdownToggle', function() {\r\n return {\r\n require: '?^uibDropdown',\r\n link: function(scope, element, attrs, dropdownCtrl) {\r\n if (!dropdownCtrl) {\r\n return;\r\n }\r\n\r\n element.addClass('dropdown-toggle');\r\n\r\n dropdownCtrl.toggleElement = element;\r\n\r\n var toggleDropdown = function(event) {\r\n event.preventDefault();\r\n\r\n if (!element.hasClass('disabled') && !attrs.disabled) {\r\n scope.$apply(function() {\r\n dropdownCtrl.toggle();\r\n });\r\n }\r\n };\r\n\r\n element.on('click', toggleDropdown);\r\n\r\n // WAI-ARIA\r\n element.attr({ 'aria-haspopup': true, 'aria-expanded': false });\r\n scope.$watch(dropdownCtrl.isOpen, function(isOpen) {\r\n element.attr('aria-expanded', !!isOpen);\r\n });\r\n\r\n scope.$on('$destroy', function() {\r\n element.off('click', toggleDropdown);\r\n });\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.datepickerPopup', ['ui.bootstrap.datepicker', 'ui.bootstrap.position'])\r\n\r\n.value('$datepickerPopupLiteralWarning', true)\r\n\r\n.constant('uibDatepickerPopupConfig', {\r\n altInputFormats: [],\r\n appendToBody: false,\r\n clearText: 'Clear',\r\n closeOnDateSelection: true,\r\n closeText: 'Done',\r\n currentText: 'Today',\r\n datepickerPopup: 'yyyy-MM-dd',\r\n datepickerPopupTemplateUrl: 'uib/template/datepickerPopup/popup.html',\r\n datepickerTemplateUrl: 'uib/template/datepicker/datepicker.html',\r\n html5Types: {\r\n date: 'yyyy-MM-dd',\r\n 'datetime-local': 'yyyy-MM-ddTHH:mm:ss.sss',\r\n 'month': 'yyyy-MM'\r\n },\r\n onOpenFocus: true,\r\n showButtonBar: true,\r\n placement: 'auto bottom-left'\r\n})\r\n\r\n.controller('UibDatepickerPopupController', ['$scope', '$element', '$attrs', '$compile', '$log', '$parse', '$window', '$document', '$rootScope', '$uibPosition', 'dateFilter', 'uibDateParser', 'uibDatepickerPopupConfig', '$timeout', 'uibDatepickerConfig', '$datepickerPopupLiteralWarning',\r\nfunction($scope, $element, $attrs, $compile, $log, $parse, $window, $document, $rootScope, $position, dateFilter, dateParser, datepickerPopupConfig, $timeout, datepickerConfig, $datepickerPopupLiteralWarning) {\r\n var cache = {},\r\n isHtml5DateInput = false;\r\n var dateFormat, closeOnDateSelection, appendToBody, onOpenFocus,\r\n datepickerPopupTemplateUrl, datepickerTemplateUrl, popupEl, datepickerEl, scrollParentEl,\r\n ngModel, ngModelOptions, $popup, altInputFormats, watchListeners = [];\r\n\r\n this.init = function(_ngModel_) {\r\n ngModel = _ngModel_;\r\n ngModelOptions = extractOptions(ngModel);\r\n closeOnDateSelection = angular.isDefined($attrs.closeOnDateSelection) ?\r\n $scope.$parent.$eval($attrs.closeOnDateSelection) :\r\n datepickerPopupConfig.closeOnDateSelection;\r\n appendToBody = angular.isDefined($attrs.datepickerAppendToBody) ?\r\n $scope.$parent.$eval($attrs.datepickerAppendToBody) :\r\n datepickerPopupConfig.appendToBody;\r\n onOpenFocus = angular.isDefined($attrs.onOpenFocus) ?\r\n $scope.$parent.$eval($attrs.onOpenFocus) : datepickerPopupConfig.onOpenFocus;\r\n datepickerPopupTemplateUrl = angular.isDefined($attrs.datepickerPopupTemplateUrl) ?\r\n $attrs.datepickerPopupTemplateUrl :\r\n datepickerPopupConfig.datepickerPopupTemplateUrl;\r\n datepickerTemplateUrl = angular.isDefined($attrs.datepickerTemplateUrl) ?\r\n $attrs.datepickerTemplateUrl : datepickerPopupConfig.datepickerTemplateUrl;\r\n altInputFormats = angular.isDefined($attrs.altInputFormats) ?\r\n $scope.$parent.$eval($attrs.altInputFormats) :\r\n datepickerPopupConfig.altInputFormats;\r\n\r\n $scope.showButtonBar = angular.isDefined($attrs.showButtonBar) ?\r\n $scope.$parent.$eval($attrs.showButtonBar) :\r\n datepickerPopupConfig.showButtonBar;\r\n\r\n if (datepickerPopupConfig.html5Types[$attrs.type]) {\r\n dateFormat = datepickerPopupConfig.html5Types[$attrs.type];\r\n isHtml5DateInput = true;\r\n } else {\r\n dateFormat = $attrs.uibDatepickerPopup || datepickerPopupConfig.datepickerPopup;\r\n $attrs.$observe('uibDatepickerPopup', function(value, oldValue) {\r\n var newDateFormat = value || datepickerPopupConfig.datepickerPopup;\r\n // Invalidate the $modelValue to ensure that formatters re-run\r\n // FIXME: Refactor when PR is merged: https://github.com/angular/angular.js/pull/10764\r\n if (newDateFormat !== dateFormat) {\r\n dateFormat = newDateFormat;\r\n ngModel.$modelValue = null;\r\n\r\n if (!dateFormat) {\r\n throw new Error('uibDatepickerPopup must have a date format specified.');\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (!dateFormat) {\r\n throw new Error('uibDatepickerPopup must have a date format specified.');\r\n }\r\n\r\n if (isHtml5DateInput && $attrs.uibDatepickerPopup) {\r\n throw new Error('HTML5 date input types do not support custom formats.');\r\n }\r\n\r\n // popup element used to display calendar\r\n popupEl = angular.element('
      ');\r\n\r\n popupEl.attr({\r\n 'ng-model': 'date',\r\n 'ng-change': 'dateSelection(date)',\r\n 'template-url': datepickerPopupTemplateUrl\r\n });\r\n\r\n // datepicker element\r\n datepickerEl = angular.element(popupEl.children()[0]);\r\n datepickerEl.attr('template-url', datepickerTemplateUrl);\r\n\r\n if (!$scope.datepickerOptions) {\r\n $scope.datepickerOptions = {};\r\n }\r\n\r\n if (isHtml5DateInput) {\r\n if ($attrs.type === 'month') {\r\n $scope.datepickerOptions.datepickerMode = 'month';\r\n $scope.datepickerOptions.minMode = 'month';\r\n }\r\n }\r\n\r\n datepickerEl.attr('datepicker-options', 'datepickerOptions');\r\n\r\n if (!isHtml5DateInput) {\r\n // Internal API to maintain the correct ng-invalid-[key] class\r\n ngModel.$$parserName = 'date';\r\n ngModel.$validators.date = validator;\r\n ngModel.$parsers.unshift(parseDate);\r\n ngModel.$formatters.push(function(value) {\r\n if (ngModel.$isEmpty(value)) {\r\n $scope.date = value;\r\n return value;\r\n }\r\n\r\n if (angular.isNumber(value)) {\r\n value = new Date(value);\r\n }\r\n\r\n $scope.date = dateParser.fromTimezone(value, ngModelOptions.getOption('timezone'));\r\n\r\n return dateParser.filter($scope.date, dateFormat);\r\n });\r\n } else {\r\n ngModel.$formatters.push(function(value) {\r\n $scope.date = dateParser.fromTimezone(value, ngModelOptions.getOption('timezone'));\r\n return value;\r\n });\r\n }\r\n\r\n // Detect changes in the view from the text box\r\n ngModel.$viewChangeListeners.push(function() {\r\n $scope.date = parseDateString(ngModel.$viewValue);\r\n });\r\n\r\n $element.on('keydown', inputKeydownBind);\r\n\r\n $popup = $compile(popupEl)($scope);\r\n // Prevent jQuery cache memory leak (template is now redundant after linking)\r\n popupEl.remove();\r\n\r\n if (appendToBody) {\r\n $document.find('body').append($popup);\r\n } else {\r\n $element.after($popup);\r\n }\r\n\r\n $scope.$on('$destroy', function() {\r\n if ($scope.isOpen === true) {\r\n if (!$rootScope.$$phase) {\r\n $scope.$apply(function() {\r\n $scope.isOpen = false;\r\n });\r\n }\r\n }\r\n\r\n $popup.remove();\r\n $element.off('keydown', inputKeydownBind);\r\n $document.off('click', documentClickBind);\r\n if (scrollParentEl) {\r\n scrollParentEl.off('scroll', positionPopup);\r\n }\r\n angular.element($window).off('resize', positionPopup);\r\n\r\n //Clear all watch listeners on destroy\r\n while (watchListeners.length) {\r\n watchListeners.shift()();\r\n }\r\n });\r\n };\r\n\r\n $scope.getText = function(key) {\r\n return $scope[key + 'Text'] || datepickerPopupConfig[key + 'Text'];\r\n };\r\n\r\n $scope.isDisabled = function(date) {\r\n if (date === 'today') {\r\n date = dateParser.fromTimezone(new Date(), ngModelOptions.getOption('timezone'));\r\n }\r\n\r\n var dates = {};\r\n angular.forEach(['minDate', 'maxDate'], function(key) {\r\n if (!$scope.datepickerOptions[key]) {\r\n dates[key] = null;\r\n } else if (angular.isDate($scope.datepickerOptions[key])) {\r\n dates[key] = new Date($scope.datepickerOptions[key]);\r\n } else {\r\n if ($datepickerPopupLiteralWarning) {\r\n $log.warn('Literal date support has been deprecated, please switch to date object usage');\r\n }\r\n\r\n dates[key] = new Date(dateFilter($scope.datepickerOptions[key], 'medium'));\r\n }\r\n });\r\n\r\n return $scope.datepickerOptions &&\r\n dates.minDate && $scope.compare(date, dates.minDate) < 0 ||\r\n dates.maxDate && $scope.compare(date, dates.maxDate) > 0;\r\n };\r\n\r\n $scope.compare = function(date1, date2) {\r\n return new Date(date1.getFullYear(), date1.getMonth(), date1.getDate()) - new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\r\n };\r\n\r\n // Inner change\r\n $scope.dateSelection = function(dt) {\r\n $scope.date = dt;\r\n var date = $scope.date ? dateParser.filter($scope.date, dateFormat) : null; // Setting to NULL is necessary for form validators to function\r\n $element.val(date);\r\n ngModel.$setViewValue(date);\r\n\r\n if (closeOnDateSelection) {\r\n $scope.isOpen = false;\r\n $element[0].focus();\r\n }\r\n };\r\n\r\n $scope.keydown = function(evt) {\r\n if (evt.which === 27) {\r\n evt.stopPropagation();\r\n $scope.isOpen = false;\r\n $element[0].focus();\r\n }\r\n };\r\n\r\n $scope.select = function(date, evt) {\r\n evt.stopPropagation();\r\n\r\n if (date === 'today') {\r\n var today = new Date();\r\n if (angular.isDate($scope.date)) {\r\n date = new Date($scope.date);\r\n date.setFullYear(today.getFullYear(), today.getMonth(), today.getDate());\r\n } else {\r\n date = dateParser.fromTimezone(today, ngModelOptions.getOption('timezone'));\r\n date.setHours(0, 0, 0, 0);\r\n }\r\n }\r\n $scope.dateSelection(date);\r\n };\r\n\r\n $scope.close = function(evt) {\r\n evt.stopPropagation();\r\n\r\n $scope.isOpen = false;\r\n $element[0].focus();\r\n };\r\n\r\n $scope.disabled = angular.isDefined($attrs.disabled) || false;\r\n if ($attrs.ngDisabled) {\r\n watchListeners.push($scope.$parent.$watch($parse($attrs.ngDisabled), function(disabled) {\r\n $scope.disabled = disabled;\r\n }));\r\n }\r\n\r\n $scope.$watch('isOpen', function(value) {\r\n if (value) {\r\n if (!$scope.disabled) {\r\n $timeout(function() {\r\n positionPopup();\r\n\r\n if (onOpenFocus) {\r\n $scope.$broadcast('uib:datepicker.focus');\r\n }\r\n\r\n $document.on('click', documentClickBind);\r\n\r\n var placement = $attrs.popupPlacement ? $attrs.popupPlacement : datepickerPopupConfig.placement;\r\n if (appendToBody || $position.parsePlacement(placement)[2]) {\r\n scrollParentEl = scrollParentEl || angular.element($position.scrollParent($element));\r\n if (scrollParentEl) {\r\n scrollParentEl.on('scroll', positionPopup);\r\n }\r\n } else {\r\n scrollParentEl = null;\r\n }\r\n\r\n angular.element($window).on('resize', positionPopup);\r\n }, 0, false);\r\n } else {\r\n $scope.isOpen = false;\r\n }\r\n } else {\r\n $document.off('click', documentClickBind);\r\n if (scrollParentEl) {\r\n scrollParentEl.off('scroll', positionPopup);\r\n }\r\n angular.element($window).off('resize', positionPopup);\r\n }\r\n });\r\n\r\n function cameltoDash(string) {\r\n return string.replace(/([A-Z])/g, function($1) { return '-' + $1.toLowerCase(); });\r\n }\r\n\r\n function parseDateString(viewValue) {\r\n var date = dateParser.parse(viewValue, dateFormat, $scope.date);\r\n if (isNaN(date)) {\r\n for (var i = 0; i < altInputFormats.length; i++) {\r\n date = dateParser.parse(viewValue, altInputFormats[i], $scope.date);\r\n if (!isNaN(date)) {\r\n return date;\r\n }\r\n }\r\n }\r\n return date;\r\n }\r\n\r\n function parseDate(viewValue) {\r\n if (angular.isNumber(viewValue)) {\r\n // presumably timestamp to date object\r\n viewValue = new Date(viewValue);\r\n }\r\n\r\n if (!viewValue) {\r\n return null;\r\n }\r\n\r\n if (angular.isDate(viewValue) && !isNaN(viewValue)) {\r\n return viewValue;\r\n }\r\n\r\n if (angular.isString(viewValue)) {\r\n var date = parseDateString(viewValue);\r\n if (!isNaN(date)) {\r\n return dateParser.toTimezone(date, ngModelOptions.getOption('timezone'));\r\n }\r\n }\r\n\r\n return ngModelOptions.getOption('allowInvalid') ? viewValue : undefined;\r\n }\r\n\r\n function validator(modelValue, viewValue) {\r\n var value = modelValue || viewValue;\r\n\r\n if (!$attrs.ngRequired && !value) {\r\n return true;\r\n }\r\n\r\n if (angular.isNumber(value)) {\r\n value = new Date(value);\r\n }\r\n\r\n if (!value) {\r\n return true;\r\n }\r\n\r\n if (angular.isDate(value) && !isNaN(value)) {\r\n return true;\r\n }\r\n\r\n if (angular.isString(value)) {\r\n return !isNaN(parseDateString(value));\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function documentClickBind(event) {\r\n if (!$scope.isOpen && $scope.disabled) {\r\n return;\r\n }\r\n\r\n var popup = $popup[0];\r\n var dpContainsTarget = $element[0].contains(event.target);\r\n // The popup node may not be an element node\r\n // In some browsers (IE) only element nodes have the 'contains' function\r\n var popupContainsTarget = popup.contains !== undefined && popup.contains(event.target);\r\n if ($scope.isOpen && !(dpContainsTarget || popupContainsTarget)) {\r\n $scope.$apply(function() {\r\n $scope.isOpen = false;\r\n });\r\n }\r\n }\r\n\r\n function inputKeydownBind(evt) {\r\n if (evt.which === 27 && $scope.isOpen) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n $scope.$apply(function() {\r\n $scope.isOpen = false;\r\n });\r\n $element[0].focus();\r\n } else if (evt.which === 40 && !$scope.isOpen) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n $scope.$apply(function() {\r\n $scope.isOpen = true;\r\n });\r\n }\r\n }\r\n\r\n function positionPopup() {\r\n if ($scope.isOpen) {\r\n var dpElement = angular.element($popup[0].querySelector('.uib-datepicker-popup'));\r\n var placement = $attrs.popupPlacement ? $attrs.popupPlacement : datepickerPopupConfig.placement;\r\n // hack\r\n /*var position = $position.positionElements($element, dpElement, placement, appendToBody);*/\r\n var position = $position.positionElements($element.parent(), dpElement, placement, appendToBody);\r\n // hack end\r\n dpElement.css({top: position.top + 'px', left: position.left + 'px'});\r\n if (dpElement.hasClass('uib-position-measure')) {\r\n dpElement.removeClass('uib-position-measure');\r\n }\r\n }\r\n }\r\n\r\n function extractOptions(ngModelCtrl) {\r\n var ngModelOptions;\r\n\r\n if (angular.version.minor < 6) { // in angular < 1.6 $options could be missing\r\n // guarantee a value\r\n ngModelOptions = angular.isObject(ngModelCtrl.$options) ?\r\n ngModelCtrl.$options :\r\n {\r\n timezone: null\r\n };\r\n\r\n // mimic 1.6+ api\r\n ngModelOptions.getOption = function (key) {\r\n return ngModelOptions[key];\r\n };\r\n } else { // in angular >=1.6 $options is always present\r\n ngModelOptions = ngModelCtrl.$options;\r\n }\r\n\r\n return ngModelOptions;\r\n }\r\n\r\n $scope.$on('uib:datepicker.mode', function() {\r\n $timeout(positionPopup, 0, false);\r\n });\r\n}])\r\n\r\n.directive('uibDatepickerPopup', function() {\r\n return {\r\n require: ['ngModel', 'uibDatepickerPopup'],\r\n controller: 'UibDatepickerPopupController',\r\n scope: {\r\n datepickerOptions: '=?',\r\n isOpen: '=?',\r\n currentText: '@',\r\n clearText: '@',\r\n closeText: '@'\r\n },\r\n link: function(scope, element, attrs, ctrls) {\r\n var ngModel = ctrls[0],\r\n ctrl = ctrls[1];\r\n\r\n ctrl.init(ngModel);\r\n }\r\n };\r\n})\r\n\r\n.directive('uibDatepickerPopupWrap', function() {\r\n return {\r\n restrict: 'A',\r\n transclude: true,\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/datepickerPopup/popup.html';\r\n }\r\n };\r\n});\r\n\r\nangular.module(\"uib/template/accordion/accordion-group.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/accordion/accordion-group.html\",\r\n \"
      \\n\" +\r\n \"

      \\n\" +\r\n \" {{heading}}\\n\" +\r\n \"

      \\n\" +\r\n \"
      \\n\" +\r\n \"
      \\n\" +\r\n \"
      \\n\" +\r\n \"
      \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/accordion/accordion.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/accordion/accordion.html\",\r\n \"
      \");\r\n}]);\r\n\r\nangular.module(\"uib/template/alert/alert.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/alert/alert.html\",\r\n \"\\n\" +\r\n \"
      \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/datepicker/datepicker.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/datepicker/datepicker.html\",\r\n \"
      \\n\" +\r\n \"
      \\n\" +\r\n \"
      \\n\" +\r\n \"
      \\n\" +\r\n \"
      \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/datepicker/day.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/datepicker/day.html\",\r\n \"\\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \"
      {{::label.abbr}}
      {{ weekNumbers[$index] }}\\n\" +\r\n \" \\n\" +\r\n \"
      \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/datepicker/month.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/datepicker/month.html\",\r\n \"\\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \"
      \\n\" +\r\n \" \\n\" +\r\n \"
      \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/datepicker/year.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/datepicker/year.html\",\r\n \"\\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \"
      \\n\" +\r\n \" \\n\" +\r\n \"
      \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/modal/window.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/modal/window.html\",\r\n \"
      \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/pagination/pagination.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/pagination/pagination.html\",\r\n \"
    • {{::getText('first')}}
    • \\n\" +\r\n \"
    • {{::getText('previous')}}
    • \\n\" +\r\n \"
    • {{page.text}}
    • \\n\" +\r\n \"
    • {{::getText('next')}}
    • \\n\" +\r\n \"
    • {{::getText('last')}}
    • \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/tooltip/tooltip-html-popup.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/tooltip/tooltip-html-popup.html\",\r\n \"
      \\n\" +\r\n \"
      \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/tooltip/tooltip-popup.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/tooltip/tooltip-popup.html\",\r\n \"
      \\n\" +\r\n \"
      \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/tooltip/tooltip-template-popup.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/tooltip/tooltip-template-popup.html\",\r\n \"
      \\n\" +\r\n \"
      \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/popover/popover-html.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/popover/popover-html.html\",\r\n \"
      \\n\" +\r\n \"\\n\" +\r\n \"
      \\n\" +\r\n \"

      \\n\" +\r\n \"
      \\n\" +\r\n \"
      \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/popover/popover-template.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/popover/popover-template.html\",\r\n \"
      \\n\" +\r\n \"\\n\" +\r\n \"
      \\n\" +\r\n \"

      \\n\" +\r\n \"
      \\n\" +\r\n \"
      \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/popover/popover.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/popover/popover.html\",\r\n \"
      \\n\" +\r\n \"\\n\" +\r\n \"
      \\n\" +\r\n \"

      \\n\" +\r\n \"
      \\n\" +\r\n \"
      \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/tabs/tab.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/tabs/tab.html\",\r\n \"
    • \\n\" +\r\n \" {{heading}}\\n\" +\r\n \"
    • \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/tabs/tabset.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/tabs/tabset.html\",\r\n \"
      \\n\" +\r\n \"
        \\n\" +\r\n \"
        \\n\" +\r\n \"
        \\n\" +\r\n \"
        \\n\" +\r\n \"
        \\n\" +\r\n \"
        \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/rating/rating.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/rating/rating.html\",\r\n \"\\n\" +\r\n \" ({{ $index < value ? '*' : ' ' }})\\n\" +\r\n \" \\n\" +\r\n \"\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/datepickerPopup/popup.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/datepickerPopup/popup.html\",\r\n \"
          \\n\" +\r\n \"
        • \\n\" +\r\n \"
        • \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \"
        • \\n\" +\r\n \"
        \\n\" +\r\n \"\");\r\n}]);","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('module.modal-controllers', [])\r\n\r\n /* @ngInject */\r\n .controller('modalCtrl', [\"data\", \"device\", \"options\", \"$scope\", function (data, device, options, $scope) {\r\n var ctrl = this;\r\n ctrl.data = data;\r\n ctrl.device = device;\r\n ctrl.options = options;\r\n ctrl.showLoader = true;\r\n $scope.device = device;\r\n\r\n ctrl.onLoad = function () {\r\n ctrl.showLoader = false;\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('modalSendByEMailCtrl', [\"data\", \"device\", \"options\", \"HttpService\", \"AppService\", \"ModalService\", \"toastr\", function (data, device, options, HttpService, AppService, ModalService, toastr) {\r\n var ctrl = this;\r\n\r\n ctrl.data = data;\r\n ctrl.data.Message = '';\r\n ctrl.data.Recipients = [{}];\r\n ctrl.modalTitle = options.modalTitle;\r\n\r\n ctrl.addRecipient = function () {\r\n ctrl.data.Recipients.push({});\r\n };\r\n ctrl.removeRecipient = function (index) {\r\n ctrl.data.Recipients.splice(index, 1);\r\n };\r\n\r\n AppService.getParams()\r\n .then(function (params) {\r\n if (params.IsLogged) {\r\n ctrl.data.Email = params.Visitor.Email;\r\n ctrl.data.FirstName = params.Visitor.FirstName;\r\n ctrl.data.LastName = params.Visitor.LastName;\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n ctrl.submit = function () {\r\n ctrl.loading = true;\r\n\r\n HttpService.post({\r\n url: '/SendByEmail',\r\n data: ctrl.data\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n ModalService.close();\r\n toastr.success('', options.resultMessage, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n } else {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n ctrl.loading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('modalAddToCartCtrl', [\"data\", \"device\", \"options\", \"$scope\", function (data, device, options, $scope) {\r\n var ctrl = this;\r\n ctrl.data = data;\r\n ctrl.device = device;\r\n ctrl.options = options;\r\n $scope.device = device;\r\n\r\n if (ctrl.data.length === 1) {\r\n ctrl.suggestionsUrl = 'GetLinkedProducts/Modal/ModalAddToCartSuggestions/' + ctrl.data[0].idProduct + '?' + (new Date().getTime());\r\n }\r\n\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('uploadCropModalCtrl', [\"data\", \"device\", \"options\", \"$scope\", \"ModalService\", \"$uibModalInstance\", function (data, device, options, $scope, ModalService, $uibModalInstance) {\r\n var ctrl = this;\r\n ctrl.data = data;\r\n ctrl.device = device;\r\n ctrl.options = options;\r\n ctrl.showLoader = true;\r\n $scope.device = device;\r\n\r\n var cropper;\r\n\r\n $uibModalInstance.rendered.then(function () {\r\n init();\r\n });\r\n\r\n ctrl.plus = function () {\r\n cropper.zoom(0.1);\r\n };\r\n ctrl.minus = function () {\r\n cropper.zoom(-0.1);\r\n };\r\n ctrl.rotate = function () {\r\n cropper.rotate(90);\r\n };\r\n\r\n ctrl.save = function () {\r\n var dropzone = ctrl.data.ctrlFrom.dzMethods.getDropzone();\r\n dropzone.options.url = '/Upload';\r\n var blob = cropper.getCroppedCanvas(\r\n {\r\n width: 240,\r\n height: 240,\r\n fillColor: '#fff',\r\n imageSmoothingEnabled: true,\r\n imageSmoothingQuality: 'high'\r\n })\r\n .toDataURL('image/jpeg');\r\n var croppedFile = dataURItoBlob(blob);\r\n croppedFile.name = ctrl.data.name;\r\n\r\n ctrl.data.ctrlFrom.tmpFileName = ctrl.data.name;\r\n dropzone.removeAllFiles();\r\n dropzone.addFile(croppedFile);\r\n\r\n ctrl.data.ctrlFrom.deleteTmpFile(ctrl.data.serverName);\r\n ModalService.close();\r\n };\r\n\r\n function init() {\r\n if (typeof Cropper === 'undefined') {\r\n $.ajax({\r\n url: '/js/cropper.min.js',\r\n dataType: 'script',\r\n cache: true,\r\n success: function () {\r\n ctrl.showLoader = false;\r\n initCropper();\r\n }\r\n });\r\n } else {\r\n initCropper();\r\n }\r\n }\r\n\r\n function initCropper() {\r\n cropper = new Cropper(document.getElementById('img_' + ctrl.data.tmpId), {\r\n aspectRatio: 1,\r\n movable: true,\r\n cropBoxResizable: true,\r\n rotatable: true,\r\n ready: function () {\r\n $(this.cropper.cropper).addClass('cropper-circle');\r\n }\r\n });\r\n }\r\n\r\n function dataURItoBlob(dataURI) {\r\n var byteString = atob(dataURI.split(',')[1]);\r\n var ab = new ArrayBuffer(byteString.length);\r\n var ia = new Uint8Array(ab);\r\n for (var i = 0; i < byteString.length; i++) {\r\n ia[i] = byteString.charCodeAt(i);\r\n }\r\n return new Blob([ab], { type: 'image/jpeg' });\r\n }\r\n\r\n }]);\r\n\r\n})();\r\n","/*\r\n * Modal directive\r\n * Version 1.0\r\n * Octave\r\n * Modified from .\r\n **/\r\n\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('module.modal', [])\r\n\r\n /* @ngInject */\r\n .factory('ModalService', [\"$uibModal\", function ($uibModal) {\r\n var modalInstance = [];\r\n return {\r\n show: function (template, data, size, ctrl, ctrlAs, device, options, onClosed, onOpened) {\r\n var modal = $uibModal.open({\r\n size: size,\r\n templateUrl: template,\r\n controller: ctrl || 'modalCtrl',\r\n controllerAs: ctrlAs || 'modalCtrl',\r\n bindToController: true,\r\n resolve: {\r\n data: function () { return data; },\r\n device: function () { return device; },\r\n options: function () { return options; }\r\n },\r\n windowClass: data && data.windowClass || null\r\n });\r\n modal.result.catch(function (error) {\r\n if (!(error === 'cancel' || error === 'backdrop click' || error === 'escape key press')) {\r\n console.error(error);\r\n }\r\n });\r\n modal.id = new Date().getTime();\r\n modal.closed.then(function () {\r\n modalInstance = _.filter(modalInstance, function (o) {\r\n return o.id !== modal.id;\r\n });\r\n if (onClosed) {\r\n onClosed();\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n modal.opened.then(function () {\r\n if (onOpened) {\r\n onOpened();\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n modalInstance.push(modal);\r\n return modal;\r\n },\r\n close: function () {\r\n _.each(modalInstance, function (modal) {\r\n modal.close();\r\n });\r\n modalInstance = [];\r\n }\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .directive('openModal', [\"ModalService\", function (ModalService) {\r\n var directive = {\r\n restrict: 'A',\r\n transclude: true,\r\n replace: true,\r\n template: '{{name}}',\r\n scope: {\r\n openModal: '@',\r\n module: '@',\r\n class: '@',\r\n ctrl: '@?',\r\n data: '{{name}}',\r\n scope: {\r\n openCmsModal: '@',\r\n class: '@',\r\n autoScroll: '@?',\r\n title: '@?',\r\n ctrl: '@?',\r\n size: '@?',\r\n device: '',\r\n resolve: resolve,\r\n name: route.Controller,\r\n ngRoute: true\r\n });\r\n } else if (route.Controller.indexOf('Cart') !== -1) { // Panier\r\n if (route.Name === 'QuickOrder') {\r\n when(route, {\r\n templateUrl: '/Template/Cart/QuickOrderForm',\r\n name: route.Name,\r\n cart: true,\r\n ngRoute: true\r\n });\r\n } else if (route.Name === 'Cart' || route.Name === 'CartRecognition') {\r\n when(route, {\r\n templateUrl: '/Template/Cart/Display',\r\n name: route.Name,\r\n cart: true,\r\n ngRoute: true\r\n });\r\n } else {\r\n when(route, {\r\n templateUrl: function () {\r\n return '/Template/Cart/' + route.Name.split('Cart')[1];\r\n },\r\n name: route.Name,\r\n cart: true,\r\n authorize: true,\r\n ngRoute: true\r\n });\r\n }\r\n } else if (route.Name === 'CartQuotationPaymentList') {\r\n when(route, {\r\n templateUrl: function () {\r\n return routingService.getLocation();\r\n },\r\n name: route.Name,\r\n cart: true,\r\n ngRoute: true\r\n });\r\n } else {\r\n when(route, {\r\n templateUrl: function () {\r\n return routingService.getLocation();\r\n },\r\n name: route.Name\r\n });\r\n }\r\n });\r\n\r\n if (window.isBot || window.isCache) {\r\n $locationProvider.html5Mode({\r\n enabled: true,\r\n requireBase: true,\r\n rewriteLinks: false\r\n });\r\n // désactivation du routing pour Google\r\n return;\r\n }\r\n\r\n $routeProvider.otherwise({\r\n templateUrl: function () {\r\n return routingService.getLocation();\r\n }\r\n });\r\n\r\n $routeProvider.when('/404', {\r\n templateUrl: '/Template/Error/Error',\r\n name: '404'\r\n });\r\n\r\n $locationProvider.html5Mode({\r\n enabled: true,\r\n requireBase: false\r\n });\r\n\r\n }])\r\n\r\n /* @ngInject */\r\n .factory('RoutesService', function () {\r\n var routesService = {};\r\n return {\r\n set: function (value) {\r\n if (!_.isEmpty(routesService)) return;\r\n routesService = value;\r\n return routesService;\r\n },\r\n get: function () {\r\n return routesService;\r\n },\r\n getUrlByName: function (name) {\r\n return routesService[name] && routesService[name].url ? routesService[name].url : '';\r\n }\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .factory('RoutingService', [\"$timeout\", \"$location\", \"$window\", function ($timeout, $location, $window) {\r\n var _this = this;\r\n this.routing = {};\r\n this.scrollCache = {};\r\n\r\n this.set = function (value) {\r\n _this.routing = value;\r\n };\r\n this.get = function () {\r\n return _this.routing;\r\n };\r\n this.getLocation = function () {\r\n return $location.path() + '?t';\r\n };\r\n this.getRoute = function (url) {\r\n return '/' + url.replace(/\\:(\\S+?)\\}/g, '}').replace(/\\{(\\S+?)\\}/g, ':$1');\r\n };\r\n this.getPath = function (url) {\r\n var path = url || $window.location.pathname;\r\n path = path.indexOf('http') !== -1 && $window.location && $window.location.origin ? path.substr($window.location.origin.length).split('?')[0] : path;\r\n // Pour les articles, on récupère l'url du regroupement\r\n if (path.indexOf('-p-') !== -1 && path.indexOf('-p-') > path.indexOf('-c-')) {\r\n var arr = path.split('-p-');\r\n path = arr[0] + '-p-' + arr[1].split('/')[0];\r\n }\r\n return path;\r\n };\r\n this.windowScroll = function (getScrollPos) {\r\n var top = !getScrollPos ? 0 : _this.scrollCache[_this.getPath()] || 0;\r\n\r\n $('html, body').scrollTop(top);\r\n $timeout(function () {\r\n $('html, body').scrollTop(top);\r\n }, 400);\r\n };\r\n\r\n return {\r\n set: this.set,\r\n get: this.get,\r\n getLocation: this.getLocation,\r\n getRoute: this.getRoute,\r\n getPath: this.getPath,\r\n windowScroll: this.windowScroll,\r\n scrollCache: this.scrollCache\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .service('authService', [\"AppService\", function (AppService) {\r\n this.authorize = function (isCart) {\r\n return AppService.getParams()\r\n .then(function (params) {\r\n if (params.IsLogged && (!isCart || (isCart && params.HasCart))) return true;\r\n throw new Error(isCart && !params.HasCart ? 'noCart' : '');\r\n });\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .factory('httpRequestInterceptor', [\"$q\", \"$location\", \"RoutingService\", function ($q, $location, RoutingService) {\r\n return {\r\n 'responseError': function (rejection) {\r\n if (rejection.status === 404) {\r\n RoutingService.set({\r\n to: undefined,\r\n from: undefined\r\n });\r\n $location.path('/404/');\r\n }\r\n return $q.reject(rejection);\r\n }\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .run([\"RoutesService\", \"RoutingService\", function (RoutesService, RoutingService) {\r\n routes.Cart.step = 1;\r\n routes.CartIdentification.step = 2;\r\n routes.CartShipping.step = 3;\r\n routes.CartPayment.step = 4;\r\n routes.CartValidation.step = 5;\r\n routes.CartOnePageCheckout.step = 2;\r\n RoutesService.set(routes);\r\n\r\n routingService = RoutingService;\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('service.account', [])\r\n\r\n /* @ngInject */\r\n .factory('AccountService', [\"$rootScope\", \"AppService\", \"HttpService\", \"RoutesService\", function ($rootScope, AppService, HttpService, RoutesService) {\r\n var _this = this;\r\n this.getLinks = function () {\r\n var _routes = RoutesService.get(),\r\n links = {};\r\n\r\n _.each(_routes, function (route, key) {\r\n if (key.indexOf('Account') === 0 || key === 'Quotation') {\r\n links[key] = '/' + route.url;\r\n }\r\n });\r\n\r\n return links;\r\n };\r\n this.initAccount = function (ctrl) {\r\n ctrl.links = _this.getLinks();\r\n ctrl.logout = function () {\r\n $rootScope.$broadcast('logout');\r\n };\r\n _this.setManagement(ctrl);\r\n\t\t$rootScope.$broadcast('showPageLoader', false);\r\n // Delegation\r\n _this.setVisitor(ctrl);\r\n // End Delegation\r\n };\r\n // Delegation\r\n this.setVisitor = function (ctrl) {\r\n AppService.getParams()\r\n .then(function (params) {\r\n ctrl.Visitor = params.Visitor;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n // End Delegation\r\n this.setManagement = function (ctrl) {\r\n AppService.getParams()\r\n .then(function (params) {\r\n ctrl.Account = _.cloneDeep(params.Account);\r\n ctrl.Account.hasServices = params.Account.IsManagementGiftCards || params.Account.IsManagementCredits || params.Account.IsManagementLoyaltyPoints || params.Account.IsManagementWishlistTracking || params.Account.IsManagementInvoicesAndCreditsTracking;\r\n ctrl.Account.hasOrders = params.Account.IsManagementOrderTracking || params.Account.IsManagementInvoicesAndCreditsTracking || params.Account.IsManagementWebCartTracking || params.Account.IsManagementReturns || params.Account.IsManagementComplaint || params.Account.IsManagementNumericProducts;\r\n // Delegation\r\n ctrl.Delegation = _.cloneDeep(params.Delegation);\r\n // End Delegation\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n this.getOrders = function () {\r\n return HttpService.get({\r\n url: '/Account/GetOrders',\r\n cache: false\r\n })\r\n .then(function (response) {\r\n return response.results;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n this.getOrder = function (id) {\r\n return HttpService.post({\r\n url: '/Account/GetOrder',\r\n data: id\r\n })\r\n .then(function (response) {\r\n return response.results;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n this.getEligibleReturnFolders = function () {\r\n return HttpService.get({\r\n url: '/AccountReturns/EligibleFolders',\r\n cache: false\r\n })\r\n .then(function (response) {\r\n return response.results;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n this.getReturnFolders = function () {\r\n return HttpService.get({\r\n url: '/AccountReturns/ReturnFolders',\r\n cache: false\r\n })\r\n .then(function (response) {\r\n return response.results;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n this.getShippingAddresses = function () {\r\n return HttpService.get({\r\n url: '/AccountGetUserShippingAddresses',\r\n cache: false\r\n })\r\n .then(function (response) {\r\n return response.results;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n return {\r\n getLinks: this.getLinks,\r\n initAccount: this.initAccount,\r\n setManagement: this.setManagement,\r\n getOrders: this.getOrders,\r\n getOrder: this.getOrder,\r\n getEligibleReturnFolders: this.getEligibleReturnFolders,\r\n getReturnFolders: this.getReturnFolders,\r\n getShippingAddresses: this.getShippingAddresses\r\n };\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('service.app', [])\r\n\r\n /* @ngInject */\r\n .factory('AppService', [\"$http\", \"$rootScope\", \"$timeout\", \"HttpService\", \"toastr\", function ($http, $rootScope, $timeout, HttpService, toastr) {\r\n var _this = this,\r\n appPromise,\r\n cartRequests = [],\r\n translate;\r\n this.getParams = function (refresh) {\r\n refresh = refresh || false;\r\n if (refresh || typeof appPromise === 'undefined') {\r\n appPromise = $http({\r\n method: 'GET',\r\n url: '/App' + (refresh ? '?' + (new Date().getTime()) : ''), // Fix IE11 cache\r\n headers: {\r\n 'Content-type': 'application/json',\r\n 'X-Requested-With': 'jsonHttpRequest'\r\n }\r\n })\r\n .then(function (response) {\r\n var data = _.cloneDeep(response.data.VisitorContext);\r\n data.Visitor.isPro = false;\r\n if (response.data.WebsiteVisitorContext && response.data.WebsiteVisitorContext.VisitorIsPro) {\r\n data.Visitor.isPro = response.data.WebsiteVisitorContext.VisitorIsPro;\r\n }\r\n return data;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n }\r\n return appPromise;\r\n };\r\n this.updateParams = function (data, noevent) {\r\n appPromise.$$state.value = data;\r\n if (noevent) return;\r\n $rootScope.$broadcast('cartUpdate');\r\n };\r\n this.getTranslate = function () {\r\n if (typeof translate === 'undefined') {\r\n translate = $http({\r\n method: 'GET',\r\n url: '/Template/Translate/Translate',\r\n headers: {\r\n 'Content-type': 'application/json',\r\n 'X-Requested-With': 'jsonHttpRequest'\r\n }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n }\r\n return translate;\r\n };\r\n this.getCart = function (refresh) {\r\n refresh = refresh || false;\r\n return this.getParams(refresh)\r\n .then(function (data) {\r\n return data;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n this.addToCart = function (products) {\r\n var url = '/Product/AddToCart';\r\n var productsToCart = {\r\n Products: []\r\n };\r\n\r\n _.each(products, function (product) {\r\n productsToCart.Products.push({\r\n IDLine: product.idLine || 0,\r\n IDProduct: product.idProduct || 0,\r\n Reference: product.Reference || '',\r\n Quantity: product.quantity,\r\n Comment: product.Comment || '',\r\n Elements: product.Elements || null,\r\n Customization: product.Customization || null\r\n });\r\n });\r\n var tmpId = new Date().getTime();\r\n cartRequests.push({id: tmpId});\r\n return $http({\r\n method: 'POST',\r\n url: url,\r\n headers: {\r\n 'Content-type': 'application/json',\r\n 'X-Requested-With': 'jsonHttpRequest'\r\n },\r\n data: productsToCart\r\n })\r\n .then(function (response) {\r\n _.pullAllBy(cartRequests, [{ id: tmpId }], 'id');\r\n return response.data;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n };\r\n this.deleteLine = function (idLine, designation, img, message, fromCart) {\r\n $rootScope.$broadcast('showPageLoader', true);\r\n HttpService.get({\r\n url: '/RemoveCartLine/' + idLine,\r\n cache: false\r\n })\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n _this.updateParams(response.results);\r\n toastr.success(designation, message, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_addtocart.tpl',\r\n data: {\r\n img: img\r\n }\r\n }\r\n });\r\n if (fromCart && !response.results.Cart.Products.length) {\r\n $rootScope.$broadcast('showPageLoader', true);\r\n $timeout(function () {\r\n $rootScope.$broadcast('showPageLoader', true);\r\n }, 450);\r\n window.location = $rootScope.backToStore;\r\n }\r\n } else {\r\n _this.getTranslate()\r\n .then(function (messages) {\r\n toastr.warning(messages.errors.TryLater, messages.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n $rootScope.$broadcast('showPageLoader', false);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n this.itemQuantityInCart = function (id, hash) {\r\n hash = hash || '';\r\n return this.getParams()\r\n .then(function (data) {\r\n if (!data.HasCart) return 0;\r\n var qty = 0;\r\n _.each(data.Cart.Products, function (product) {\r\n if (product.IDProduct === id) {\r\n if (hash !== '') {\r\n if (product.Comment === hash) {\r\n qty = product.Quantity;\r\n return false;\r\n }\r\n } else {\r\n qty = product.Quantity;\r\n return false;\r\n }\r\n }\r\n });\r\n return qty;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n this.checkAvailability = function () {\r\n return HttpService.post({\r\n url: '/Cart/checkAvailability'\r\n })\r\n .then(function (response) {\r\n return response;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n this.getProductPrice = function (priceObj, qty) {\r\n if (!priceObj.prices) {\r\n var prices = [{\r\n qty: 1,\r\n range: [0],\r\n HasDiscount: priceObj.HasDiscount,\r\n Discount: priceObj.Discount,\r\n HTDiscountedPrice: priceObj.HTDiscountedPrice,\r\n TTCDiscountedPrice: priceObj.TTCDiscountedPrice,\r\n HTPrice: priceObj.HTPrice,\r\n TTCPrice: priceObj.TTCPrice\r\n }];\r\n if (priceObj.DegressivePrice) {\r\n var i = 0;\r\n _.each(priceObj.DegressivePrice, function (item, key) {\r\n\r\n prices[i].range.push(Number(key));\r\n\r\n prices.push({\r\n qty: Number(key),\r\n range: [Number(key)],\r\n HasDiscount: item.HasDiscount,\r\n Discount: item.Discount,\r\n HTDiscountedPrice: item.HTDiscountedPrice,\r\n TTCDiscountedPrice: item.TTCDiscountedPrice,\r\n HTPrice: item.HTPrice,\r\n TTCPrice: item.TTCPrice\r\n });\r\n\r\n i++;\r\n });\r\n }\r\n priceObj.prices = prices;\r\n }\r\n var current = {};\r\n _.each(priceObj.prices, function (price) {\r\n if (_.inRange(qty, price.range[0], price.range[1] || 10000)) {\r\n current = price;\r\n return false;\r\n }\r\n });\r\n return current;\r\n };\r\n return {\r\n getParams: this.getParams,\r\n updateParams: this.updateParams,\r\n getTranslate: this.getTranslate,\r\n getCart: this.getCart,\r\n addToCart: this.addToCart,\r\n deleteLine: this.deleteLine,\r\n itemQuantityInCart: this.itemQuantityInCart,\r\n checkAvailability: this.checkAvailability,\r\n getProductPrice: this.getProductPrice,\r\n cartRequests: cartRequests\r\n };\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('service.cdn', [])\r\n\r\n /* @ngInject */\r\n .factory('CdnService', [\"AppService\", function (AppService) {\r\n this.get = function (id, size, designation, extension, quality, absolute) {\r\n if (size === undefined) {\r\n size = '1200x1200';\r\n }\r\n if (designation === undefined) {\r\n designation = 'Image';\r\n }\r\n if (extension === undefined) {\r\n extension = 'jpg';\r\n }\r\n if (quality === undefined) {\r\n quality = 80;\r\n }\r\n if (absolute === undefined) {\r\n absolute = false;\r\n }\r\n\r\n return AppService.getParams()\r\n .then(function (params) {\r\n var split1 = params.Localization.UrlImages.substr(0, params.Localization.UrlImages.indexOf('.'));\r\n var split2 = params.Localization.UrlImages.substr(params.Localization.UrlImages.indexOf('.') + 1);\r\n var url = split1 === '' ? split2 : (split1 + id % 5 + '.' + split2);\r\n\r\n if (absolute && url.substr(0, 6) === '/Image') {\r\n url = params.Localization.URLSite.substr(0, params.Localization.URLSite.length - 1) + url;\r\n }\r\n\r\n if (quality <= 0) {\r\n quality = 1;\r\n }\r\n\r\n if (quality > 100) {\r\n quality = 100;\r\n }\r\n\r\n return quality === 80 ? url + '/' + id + '/' + size + '/' + _.kebabCase(_.deburr(designation)) + '.' + extension : url + '/' + id + '/' + size + '/' + _.kebabCase(_.deburr(designation)) + '.' + extension + '?quality=' + quality;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n };\r\n\r\n return {\r\n get: this.get\r\n };\r\n }]);\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('service.date', [])\r\n\r\n /* @ngInject */\r\n .factory('DateService', function () {\r\n return {\r\n stringToDate: function (value) {\r\n return new Date(value.replace('T', ' ').replace(/-/g, '/'));\r\n },\r\n today: function () {\r\n var now = new Date();\r\n return new Date(now.getFullYear(), now.getMonth(), now.getDate());\r\n },\r\n tomorrow: function () {\r\n var now = new Date();\r\n return new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1);\r\n },\r\n nextYear: function () {\r\n var now = new Date();\r\n return new Date(now.getFullYear() + 1, now.getMonth(), now.getDate());\r\n },\r\n dateDay: function (date) {\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n }\r\n };\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('service.gmap', [])\r\n\r\n /* @ngInject */\r\n .factory('GMaps', [\"$window\", \"$q\", \"AppService\", function ($window, $q, AppService) {\r\n var _this = this,\r\n getDefer = $q.defer(),\r\n getClustererDefer = $q.defer();\r\n this.get = function () {\r\n if (typeof google === 'undefined' || typeof google.maps === 'undefined') {\r\n AppService.getParams()\r\n .then(function (params) {\r\n var url = 'https://maps.googleapis.com/maps/api/js?key=' + params.Localization.GMAPKey + '&libraries=geometry,places&callback=';\r\n $window.gMapsInit = function () {\r\n getDefer.resolve();\r\n };\r\n var script = document.createElement('script');\r\n script.src = url + 'gMapsInit';\r\n document.body.appendChild(script);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n return getDefer.promise;\r\n };\r\n this.getClusterer = function () {\r\n if (typeof MarkerClusterer === 'undefined') {\r\n $.ajax({\r\n url: '/js/markerclusterer.min.js',\r\n dataType: 'script',\r\n cache: true,\r\n success: function () {\r\n getClustererDefer.resolve();\r\n }\r\n });\r\n }\r\n return getClustererDefer.promise;\r\n };\r\n this.getGeoCode = function (address) {\r\n var defer = $q.defer();\r\n _this.get()\r\n .then(function () {\r\n var geocoder = new google.maps.Geocoder();\r\n geocoder.geocode( { 'address': address}, function (results, status) {\r\n if (status === 'OK') {\r\n var country = _.filter(results[0].address_components, function (item) {\r\n return item.types[0] === 'country';\r\n });\r\n country = country[0].long_name;\r\n defer.resolve(\r\n {\r\n Latitude: results[0].geometry.location.lat(),\r\n Longitude: results[0].geometry.location.lng(),\r\n Country: country\r\n }\r\n );\r\n } else {\r\n defer.reject({\r\n status: status\r\n });\r\n }\r\n });\r\n })\r\n .catch(function (error) {\r\n return error;\r\n });\r\n return defer.promise;\r\n };\r\n this.getGeoCodeByGps = function (gps) {\r\n var defer = $q.defer();\r\n _this.get()\r\n .then(function () {\r\n var geocoder = new google.maps.Geocoder();\r\n geocoder.geocode( { 'location': {lat: gps.lat, lng: gps.lng}}, function (results, status) {\r\n if (status === 'OK') {\r\n var country = _.filter(results[0].address_components, function (item) {\r\n return item.types[0] === 'country';\r\n });\r\n defer.resolve(\r\n {\r\n gps: {\r\n Latitude: results[0].geometry.location.lat(),\r\n Longitude: results[0].geometry.location.lng(),\r\n Country: country[0].long_name,\r\n CountryCode: country[0].short_name\r\n },\r\n address: results[0].formatted_address\r\n }\r\n );\r\n } else {\r\n defer.reject('error');\r\n }\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n return defer.promise;\r\n };\r\n return {\r\n get: this.get,\r\n getClusterer: this.getClusterer,\r\n getGeoCode: this.getGeoCode,\r\n getGeoCodeByGps: this.getGeoCodeByGps\r\n };\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('service.http', [])\r\n\r\n /* @ngInject */\r\n .factory('HttpService', [\"$http\", function ($http) {\r\n return {\r\n get: function (object) {\r\n return $http({\r\n method: 'GET',\r\n url: object.url,\r\n cache: object.cache,\r\n headers: {\r\n 'Content-type': 'application/json',\r\n 'X-Requested-With': 'jsonHttpRequest'\r\n }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n },\r\n post: function (object) {\r\n return $http({\r\n method: 'POST',\r\n data: object.data,\r\n url: object.url,\r\n headers: {\r\n 'Content-type': 'application/json',\r\n 'X-Requested-With': 'jsonHttpRequest'\r\n }\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n","/*!\r\n * Angular responsive Module\r\n * Version 1.0.0\r\n * Uses Bootstrap 3 breakpoint sizes with HTML CSS font-family value\r\n * Exposes service \"device\" which returns true if breakpoint(s) matches.\r\n *\r\n * Modified from © Jack Tarantino .\r\n **/\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('service.responsive', [])\r\n\r\n /* @ngInject */\r\n .service('DeviceService', [\"WindowEventsService\", \"$rootScope\", function (WindowEventsService, $rootScope) {\r\n\r\n this.isTouch = function () {\r\n var cantouch = ('ontouchstart' in document.documentElement) || ('ontouchstart' in window), // with detection for Chrome Touch Emulation\r\n hasw3ctouch = (window.PointerEvent || false) && ((navigator.maxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0)), // IE11 pointer events\r\n istouch = cantouch || hasw3ctouch;\r\n return istouch;\r\n };\r\n\r\n this.isIE = function () {\r\n var _el = document.createElement('DIV'),\r\n d = {};\r\n\r\n d.isOpera = ('opera' in window); // 12-\r\n d.isIE = (('all' in document) && ('attachEvent' in _el) && !d.isOpera); // IE10-\r\n d.isIE9 = d.isIE && ('performance' in window) && (document.documentMode === 9);\r\n d.isIE10 = d.isIE && ('performance' in window) && (document.documentMode === 10);\r\n d.isIE11 = ('msRequestFullscreen' in _el) && (document.documentMode >= 11); // IE11+\r\n d.isIEEdge = (navigator.userAgent.match(/Edge\\/12\\./)); // IE Edge 12\r\n\r\n d.isIE = d.isIE11 ? true : d.isIE;\r\n d.isIE = d.isIEEdge ? true : d.isIE;\r\n\r\n d.version = null;\r\n d.version = d.isIE ? 12 : d.version;\r\n d.version = d.isIE11 ? 11 : d.version;\r\n d.version = d.isIE10 ? 10 : d.version;\r\n d.version = d.isIE9 ? 9 : d.version;\r\n\r\n return d;\r\n };\r\n\r\n this.isFF = function () {\r\n var _el = document.createElement('DIV'),\r\n _style = _el.style,\r\n _agent = navigator.userAgent,\r\n d = {};\r\n d.isFF = (\"MozAppearance\" in _style);\r\n return d;\r\n };\r\n\r\n var that = this;\r\n\r\n // Executes Angular $apply in a safe way\r\n var safeApply = function (fn, scope) {\r\n scope = scope || $rootScope;\r\n var phase = scope.$root.$$phase;\r\n if (phase === '$apply' || phase === '$digest') {\r\n if (fn && (angular.isFunction(fn))) {\r\n fn();\r\n }\r\n } else {\r\n scope.$apply(fn);\r\n }\r\n };\r\n\r\n // Validates that we're getting a string or array.\r\n // When string: converts string(comma seperated) to an array.\r\n var assureList = function (list) {\r\n if (!angular.isString(list) && !angular.isArray(list)) {\r\n throw new Error('device requires array or comma-separated list');\r\n }\r\n\r\n return angular.isString(list) ? list.split(/\\s*,\\s*/) : list;\r\n };\r\n\r\n var getCurrentMatch = function () {\r\n if (!window.getComputedStyle) return document.documentElement.currentStyle.fontFamily.replace(/['\",]/g, '');\r\n return window.getComputedStyle(document.documentElement, null).getPropertyValue('font-family').replace(/['\",]/g, '');\r\n };\r\n\r\n // Return the actual size (it's string name defined in the rules)\r\n this.get = getCurrentMatch;\r\n\r\n this.is = function (list) {\r\n list = assureList(list);\r\n return list.indexOf(getCurrentMatch()) !== -1;\r\n };\r\n\r\n this.getSize = function (scope, callback) {\r\n\r\n WindowEventsService.listen(true, 'resize', listenerFunc, 500);\r\n\r\n if (scope) {\r\n scope.$on('$destroy', function () {\r\n WindowEventsService.listen(false, 'resize', listenerFunc);\r\n });\r\n }\r\n\r\n return that.get();\r\n\r\n function listenerFunc() {\r\n safeApply(callback(that.get()), scope);\r\n }\r\n };\r\n\r\n // Executes the callback function on window resize with the match truthiness as the first argument.\r\n // Returns the current match truthiness.\r\n // The 'scope' parameter is optional. If it's not passed in, '$rootScope' is used.\r\n this.on = function (list, callback, scope) {\r\n\r\n WindowEventsService.listen(true, 'resize', listenerFunc, 500);\r\n\r\n if (scope) {\r\n scope.$on('$destroy', function () {\r\n WindowEventsService.listen(false, 'resize', listenerFunc);\r\n });\r\n }\r\n\r\n return that.is(list);\r\n\r\n function listenerFunc() {\r\n safeApply(callback(that.is(list)), scope);\r\n }\r\n };\r\n\r\n // Executes the callback function ONLY when the match differs from previous match.\r\n // Returns the current match truthiness.\r\n // The 'scope' parameter is required for cleanup reasons (destroy event).\r\n this.onChange = function (scope, list, callback) {\r\n var currentMatch = getCurrentMatch();\r\n list = assureList(list);\r\n if (!scope) {\r\n throw new Error('scope has to be applied for cleanup reasons. (destroy)');\r\n }\r\n\r\n WindowEventsService.listen(true, 'resize', listenerFunc, 500);\r\n\r\n scope.$on('$destroy', function () {\r\n WindowEventsService.listen(false, 'resize', listenerFunc);\r\n });\r\n\r\n return that.is(list);\r\n\r\n function listenerFunc() {\r\n var previousMatch = currentMatch;\r\n currentMatch = getCurrentMatch();\r\n\r\n var wasPreviousMatch = list.indexOf(previousMatch) !== -1;\r\n var doesCurrentMatch = list.indexOf(currentMatch) !== -1;\r\n if (wasPreviousMatch !== doesCurrentMatch) {\r\n safeApply(callback(doesCurrentMatch), scope);\r\n }\r\n }\r\n };\r\n\r\n // Executes the callback only when inside of the particular screensize.\r\n // The 'scope' parameter is optional. If it's not passed in, '$rootScope' is used.\r\n this.when = function (list, callback, scope) {\r\n WindowEventsService.listen(true, 'resize', function () {\r\n if (that.is(list) === true) {\r\n safeApply(callback(that.is(list)), scope);\r\n }\r\n }, 500);\r\n\r\n return that.is(list);\r\n };\r\n }]);\r\n\r\n})();\r\n","/*\r\n*\r\n* Version : 1.0.0\r\n* 04/09/2016 - 10h18\r\n*\r\n*! Octave Web7 !*/\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('service.window-events', [])\r\n\r\n /* @ngInject */\r\n .service('WindowEventsService', [\"$window\", function ($window) {\r\n\r\n var api = {\r\n throttleTime: 200,\r\n listen: listen,\r\n fn: {}\r\n };\r\n\r\n function listen(isOn, type, method, time) {\r\n var debounceTime = isNaN(time) ? api.throttleTime : time,\r\n listenerType = isOn ? 'addEventListener' : 'removeEventListener';\r\n if (isOn) {\r\n api.fn[method] = _.throttle(method, debounceTime);\r\n }\r\n $window[listenerType](type, api.fn[method]);\r\n if (!isOn) {\r\n delete api.fn[method];\r\n }\r\n }\r\n\r\n return api;\r\n\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.account-claim', ['thatisuday.dropzone'])\r\n\r\n .component('accountClaim', {\r\n bindings: {\r\n device: '<'\r\n },\r\n /* @ngInject */\r\n templateUrl: [\"AccountService\", function (AccountService) {\r\n return AccountService.getLinks().AccountClaim;\r\n }],\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$rootScope\", \"$timeout\", \"AppService\", \"AccountService\", \"HttpService\", \"smoothScroll\", function ($scope, $rootScope, $timeout, AppService, AccountService, HttpService, smoothScroll) {\r\n var ctrl = this,\r\n unwatch;\r\n\r\n AccountService.initAccount(ctrl);\r\n\r\n ctrl.formData = {\r\n Attachments: [],\r\n errors: {}\r\n };\r\n\r\n ctrl.$onDestroy = function () {\r\n if (typeof unwatch !== 'undefined') {\r\n unwatch();\r\n }\r\n };\r\n\r\n ctrl.focus = function () {\r\n ctrl.formData.errors.Global = null;\r\n };\r\n\r\n ctrl.init = function (object) {\r\n $scope.device = ctrl.device;\r\n ctrl.formData.CustomerPro = object.CustomerPro === 'True' ? true : false;\r\n\r\n unwatch = $scope.$watch('accountCtrl.formData.CustomerPro', function (value) {\r\n if (!value) {\r\n ctrl.formData.IDCompanyTitle = '';\r\n ctrl.formData.Company = '';\r\n $timeout(function () {\r\n $('#IDCompanyTitle').selectpicker('val', '');\r\n });\r\n }\r\n $('#Company').blur();\r\n });\r\n };\r\n\r\n ctrl.dzOptions = {\r\n paramName: 'files',\r\n acceptedFiles: 'image/jpeg, images/jpg, image/png, image/gif, .pdf, .doc, .docx, .xls, .xlsx, .zip',\r\n uploadMultiple: true,\r\n renameFilename: function (name) {\r\n return new Date().getTime() + '_!_' + name;\r\n }\r\n };\r\n\r\n ctrl.dzCallbacks = {\r\n successmultiple: function (files) {\r\n _.each(files, function (file) {\r\n ctrl.formData.Attachments.push({\r\n Name: file.name,\r\n ServerName: file.serverName\r\n });\r\n });\r\n },\r\n removedfile: function (file) {\r\n _.remove(ctrl.formData.Attachments, {Name: file.Name});\r\n }\r\n };\r\n\r\n ctrl.submit = function () {\r\n\r\n $rootScope.$broadcast('showPageLoader', true);\r\n\r\n ctrl.formData.errors = {};\r\n\r\n HttpService.post({\r\n url: ctrl.links.AccountClaim,\r\n data: ctrl.formData\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n smoothScroll(document.body);\r\n ctrl.messageSent = true;\r\n $timeout(function () {\r\n ctrl.messageSentOK = true;\r\n }, 350);\r\n } else {\r\n _.each(response.errors, function (error, key) {\r\n if (key === 'Global') {\r\n ctrl.formData.errors[key] = translate.errors[error.Errors[0].ErrorMessage];\r\n }\r\n });\r\n }\r\n $rootScope.$broadcast('showPageLoader', false);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n }],\r\n controllerAs: 'accountCtrl'\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.account-create', [])\r\n\r\n /* @ngInject */\r\n .controller('accountCreateCtrl', [\"$scope\", \"$rootScope\", \"$timeout\", \"$location\", \"HttpService\", \"AppService\", \"ModalService\", \"LogService\", \"Routes\", \"DefaultLocalization\", function ($scope, $rootScope, $timeout, $location, HttpService, AppService, ModalService, LogService, Routes, DefaultLocalization) {\r\n var ctrl = this,\r\n unwatch,\r\n dropzone;\r\n\r\n ctrl.formData = {\r\n RememberMe: false,\r\n CustomerPro: true,\r\n errors: {},\r\n returnUrl: '/Account',\r\n Address: ' ',\r\n AddressApartment: ' ',\r\n AddressBuilding: ' ',\r\n AddressLocality: ' ',\r\n Phone: ' ',\r\n MobilePhone: ' ',\r\n ProfilePicture: null\r\n };\r\n\r\n\r\n $timeout(function () {\r\n ctrl.formData.Address = '';\r\n ctrl.formData.AddressApartment = '';\r\n ctrl.formData.AddressBuilding = '';\r\n ctrl.formData.AddressLocality = '';\r\n ctrl.formData.MobilePhone = '';\r\n ctrl.formData.Phone = '';\r\n \r\n });\r\n\r\n\r\n ctrl.focus = function () {\r\n ctrl.formData.errors.Global = null;\r\n };\r\n\r\n ctrl.submit = function () {\r\n\r\n ctrl.formData.ConfirmEmail = ctrl.formData.Email;\r\n\r\n $rootScope.$broadcast('showPageLoader', true);\r\n\r\n if (ctrl.formData.CustomerPro) {\r\n ctrl.formData.Properties = [\r\n {\r\n 'Key': 'testoon_type',\r\n 'Values': [ctrl.formData.testoon_type]\r\n },\r\n {\r\n 'Key': 'testoon_fonction',\r\n 'Values': [ctrl.formData.testoon_fonction]\r\n },\r\n {\r\n 'Key': 'testoon_domaine',\r\n 'Values': [ctrl.formData.testoon_domaine]\r\n }\r\n ];\r\n }\r\n\r\n \r\n ctrl.formData.errors = {};\r\n\r\n HttpService.post({\r\n url: '/AccountCreate',\r\n data: ctrl.formData\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n AppService.getParams(true)\r\n .then(function () {\r\n $rootScope.$broadcast('login');\r\n window.dataLayer = window.dataLayer || []\r\n dataLayer.push({\r\n 'event': 'userLogged',\r\n 'userMail': ctrl.formData.Email\r\n });\r\n\r\n if (LogService.redirect) {\r\n if (LogService.redirect.url) $location.path(LogService.redirect.url).replace();\r\n if (LogService.redirect.action) LogService.redirect.action();\r\n LogService.redirect = null;\r\n } else {\r\n $location.path('/' + Routes.filter(function (route) { return route.Name === 'AccountHome'; })[0][DefaultLocalization].URL).replace();\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n } else {\r\n _.each(response.errors, function (error, key) {\r\n if (key === 'Global') {\r\n ctrl.formData.errors[key] = translate.errors[error.Errors[0].ErrorMessage];\r\n }\r\n });\r\n $rootScope.$broadcast('showPageLoader', false);\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n };\r\n\r\n ctrl.$onDestroy = function () {\r\n if (typeof unwatch !== 'undefined') {\r\n unwatch();\r\n }\r\n };\r\n\r\n unwatch = $scope.$watch('accountCtrl.formData.CustomerPro', function (value) {\r\n\r\n if (!value) {\r\n ctrl.formData.errors = {};\r\n ctrl.formData.IDCompanyTitle = '';\r\n ctrl.formData.Company = '';\r\n ctrl.formData.Siret = '';\r\n ctrl.formData.IDActivity = '';\r\n ctrl.formData.IDActivityDomain = '';\r\n $('#IDCompanyTitle').selectpicker('val', '');\r\n } else {\r\n $timeout(function () {\r\n //ctrl.formData.$resetValidation();\r\n //ctrl.formData.CustomerPro = true;\r\n //ctrl.formData.CustomerPro = true;\r\n //ctrl.formCreate.$resetValidation();\r\n });\r\n }\r\n });\r\n\r\n ctrl.toggleCustomerPro = function (event) {\r\n \r\n if (event.which === 13) {\r\n event.preventDefault();\r\n }\r\n };\r\n\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.account-credits', [])\r\n\r\n .component('accountCredits', {\r\n bindings: {\r\n device: '<'\r\n },\r\n /* @ngInject */\r\n templateUrl: [\"AccountService\", function (AccountService) {\r\n return AccountService.getLinks().AccountCredits;\r\n }],\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$location\", \"AppService\", \"AccountService\", \"HttpService\", function ($scope, $location, AppService, AccountService, HttpService) {\r\n var ctrl = this;\r\n\r\n AccountService.initAccount(ctrl);\r\n\r\n ctrl.$onInit = function () {\r\n\r\n $scope.device = ctrl.device;\r\n ctrl.loading = true;\r\n\r\n AppService.getParams()\r\n .then(function (params) {\r\n if (!params.Account.IsManagementCredits) {\r\n $location.path(ctrl.links.AccountHome);\r\n } else {\r\n loadData();\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n };\r\n\r\n function loadData() {\r\n HttpService.get({\r\n url: '/Cart/Credit/Get',\r\n cache: false\r\n })\r\n .then(function (response) {\r\n ctrl.credits = response.results;\r\n ctrl.loading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n }],\r\n controllerAs: 'accountCtrl'\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.account-gift-card', [])\r\n\r\n .component('accountGiftCards', {\r\n bindings: {\r\n device: '<'\r\n },\r\n /* @ngInject */\r\n templateUrl: [\"AccountService\", function (AccountService) {\r\n return AccountService.getLinks().AccountGiftCards;\r\n }],\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$location\", \"AppService\", \"AccountService\", \"HttpService\", function ($scope, $location, AppService, AccountService, HttpService) {\r\n var ctrl = this;\r\n\r\n AccountService.initAccount(ctrl);\r\n\r\n ctrl.$onInit = function () {\r\n\r\n $scope.device = ctrl.device;\r\n ctrl.loading = true;\r\n\r\n AppService.getParams()\r\n .then(function (params) {\r\n if (!params.Account.IsManagementGiftCards) {\r\n $location.path(ctrl.links.AccountHome);\r\n } else {\r\n loadData();\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n };\r\n\r\n function loadData() {\r\n HttpService.get({\r\n url: '/AccountGiftCards/Get',\r\n cache: false\r\n })\r\n .then(function (response) {\r\n ctrl.giftCards = response.results;\r\n ctrl.loading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n }],\r\n controllerAs: 'accountCtrl'\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.account-home', [])\r\n\r\n .component('accountHome', {\r\n bindings: {\r\n device: '<'\r\n },\r\n /* @ngInject */\r\n templateUrl: [\"AccountService\", function (AccountService) {\r\n return AccountService.getLinks().AccountHome;\r\n }],\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$q\", \"AccountService\", \"AppService\", \"CdnService\", function ($scope, $q, AccountService, AppService, CdnService) {\r\n var ctrl = this;\r\n\r\n AccountService.initAccount(ctrl);\r\n\r\n // common account end\r\n\r\n AppService.getParams()\r\n .then(function (data) {\r\n if (data.Visitor.IDPicture === 0) {\r\n ctrl.userPicture = '/img/user-' + (data.Visitor.Title.IDTitle === 'M.' ? 'man' : 'woman') + '.gif';\r\n } else {\r\n CdnService.get(data.Visitor.IDPicture, '60x60')\r\n .then(function (res) {\r\n ctrl.userPicture = res;\r\n })\r\n .catch(function (err) {\r\n console.error(err);\r\n });\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n var loadOrders = function () {\r\n var deferred = $q.defer();\r\n AccountService.getOrders()\r\n .then(function (response) {\r\n var orders = _.filter(response.Orders, function (order) {\r\n return order.IDState !== 390;\r\n });\r\n deferred.resolve({ ordersCount: orders.length });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n return deferred.promise;\r\n };\r\n\r\n var loadLoyalty = function () {\r\n var deferred = $q.defer();\r\n AppService.getParams()\r\n .then(function (response) {\r\n deferred.resolve({ visitor: response.Visitor });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n return deferred.promise;\r\n };\r\n\r\n ctrl.$onInit = function () {\r\n $scope.device = ctrl.device;\r\n\r\n ctrl.loading = true;\r\n\r\n $q.all([loadOrders(), loadLoyalty()])\r\n .then(function (results) {\r\n ctrl.ordersCount = results[0].ordersCount;\r\n ctrl.Visitor = results[1].visitor;\r\n ctrl.loading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n }],\r\n controllerAs: 'accountCtrl'\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.account-invoices', [])\r\n\r\n .component('accountInvoices', {\r\n bindings: {\r\n device: '<'\r\n },\r\n /* @ngInject */\r\n templateUrl: [\"AccountService\", function (AccountService) {\r\n return AccountService.getLinks().AccountInvoices;\r\n }],\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$timeout\", \"$location\", \"AppService\", \"AccountService\", \"HttpService\", function ($scope, $timeout, $location, AppService, AccountService, HttpService) {\r\n var ctrl = this;\r\n\r\n AccountService.initAccount(ctrl);\r\n\r\n ctrl.$onInit = function () {\r\n $scope.device = ctrl.device;\r\n ctrl.loading = true;\r\n\r\n AppService.getParams()\r\n .then(function (params) {\r\n if (!params.Account.IsManagementInvoicesAndCreditsTracking) {\r\n $location.path(ctrl.links.AccountHome);\r\n } else {\r\n loadData();\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n };\r\n\r\n function loadData() {\r\n HttpService.get({\r\n url: '/Account/GetInvoices',\r\n cache: false\r\n })\r\n .then(function (response) {\r\n ctrl.invoices = response.results.Invoices;\r\n _.each(ctrl.invoices, function (invoice) {\r\n $timeout(function () {\r\n invoice.init = true;\r\n }, 350);\r\n });\r\n ctrl.loading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n }],\r\n controllerAs: 'accountCtrl'\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.account-loyalty-points', [])\r\n\r\n .component('accountLoyaltyPoints', {\r\n bindings: {\r\n device: '<'\r\n },\r\n /* @ngInject */\r\n templateUrl: [\"AccountService\", function (AccountService) {\r\n return AccountService.getLinks().AccountLoyaltyPoints;\r\n }],\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$location\", \"AccountService\", \"HttpService\", \"AppService\", function ($scope, $location, AccountService, HttpService, AppService) {\r\n var ctrl = this;\r\n\r\n AccountService.initAccount(ctrl);\r\n\r\n this.$onInit = function () {\r\n\r\n $scope.device = ctrl.device;\r\n ctrl.loading = true;\r\n\r\n AppService.getParams()\r\n .then(function (params) {\r\n if (!params.Account.IsManagementLoyaltyPoints) {\r\n $location.path(ctrl.links.AccountHome);\r\n } else {\r\n loadData();\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n // Functions\r\n function loadData() {\r\n HttpService.get({\r\n url: '/AccountLoyaltyPoints/Get',\r\n cache: false\r\n })\r\n .then(function (response) {\r\n\r\n ctrl.Visitor = response.results.Visitor;\r\n ctrl.LoyaltyPointsAcquired = [];\r\n var now = new Date();\r\n _.each(response.results.LoyaltyPointsAcquired, function (item) {\r\n item.endDate = new Date(item.DateEndValidity.replace('T', ' ').replace(/-/g, '/'));\r\n if (item.endDate > now) {\r\n var soon = new Date();\r\n soon.setMonth(soon.getMonth() + 1);\r\n if (item.endDate < soon) {\r\n item.expiresSoon = true;\r\n }\r\n ctrl.LoyaltyPointsAcquired.push(item);\r\n }\r\n });\r\n\r\n AppService.getParams()\r\n .then(function (params) {\r\n ctrl.Visitor.LoyaltyProgram.AmountForOnePoint = getPrice(ctrl.Visitor.LoyaltyProgram.AmountForOnePoint, params);\r\n ctrl.Visitor.LoyaltyProgram.TriggerValue = getPrice((ctrl.Visitor.LoyaltyProgram.ValuePerPoint * ctrl.Visitor.LoyaltyProgram.TriggerPointNumber).toFixed(2), params, true);\r\n ctrl.Visitor.LoyaltyProgram.ValuePerPoint = getPrice(ctrl.Visitor.LoyaltyProgram.ValuePerPoint, params);\r\n ctrl.init = true;\r\n ctrl.loading = false;\r\n });\r\n\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n function getPrice(value, params, noDecimal) {\r\n var loc = params.Localization,\r\n template = loc.PriceHTMLFormatVATincluded,\r\n priceFormat = noDecimal ? '0.##' : loc.PriceFormat;\r\n var render = template.replace('[%amount%]', format(priceFormat, parseFloat(value)))\r\n .replace(',', '##PriceTSep##')\r\n .replace('.', loc.PriceDecimalSeparator)\r\n .replace('[%amountCode%]', format(loc.PriceFormat, parseFloat(value)))\r\n .replace('##PriceTSep##', loc.PriceThousandSeparator)\r\n .replace('[%currency%]', params.Currency.Symbol)\r\n .replace('[%currencyCode%]', params.Currency.ISOCode);\r\n return render;\r\n }\r\n\r\n }],\r\n controllerAs: 'accountCtrl'\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.account-numeric-files', [])\r\n\r\n .component('accountNumericFiles', {\r\n bindings: {\r\n device: '<'\r\n },\r\n /* @ngInject */\r\n templateUrl: [\"AccountService\", function (AccountService) {\r\n return AccountService.getLinks().AccountNumericFiles;\r\n }],\r\n\r\n controllerAs: 'accountCtrl',\r\n /* @ngInject */\r\n controller: [\"$scope\", \"HttpService\", \"AccountService\", \"$timeout\", function ($scope, HttpService, AccountService, $timeout) {\r\n var ctrl = this;\r\n\r\n AccountService.initAccount(ctrl);\r\n\r\n ctrl.$onInit = function () {\r\n\r\n $scope.device = ctrl.device;\r\n ctrl.loading = true;\r\n\r\n HttpService.get({\r\n url: '/compte/fiches-techniques/list',\r\n cache: false\r\n })\r\n .then(function (response) {\r\n\r\n ctrl.products = response;\r\n console.log(response);\r\n\r\n if (ctrl.products.length > 0) {\r\n $timeout(function () {\r\n ctrl.products[0].isOpen = true;\r\n }, 1000);\r\n }\r\n\r\n ctrl.loading = false;\r\n \r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n }]\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.account-numeric-products', [])\r\n\r\n .component('accountNumericProducts', {\r\n bindings: {\r\n device: '<'\r\n },\r\n /* @ngInject */\r\n templateUrl: [\"AccountService\", function (AccountService) {\r\n return AccountService.getLinks().AccountNumericProducts;\r\n }],\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$location\", \"AppService\", \"HttpService\", \"AccountService\", function ($scope, $location, AppService, HttpService, AccountService) {\r\n var ctrl = this;\r\n\r\n AccountService.initAccount(ctrl);\r\n\r\n ctrl.$onInit = function () {\r\n\r\n $scope.device = ctrl.device;\r\n ctrl.loading = true;\r\n\r\n AppService.getParams()\r\n .then(function (params) {\r\n if (!params.Account.IsManagementNumericProducts) {\r\n $location.path(ctrl.links.AccountHome);\r\n } else {\r\n loadData();\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n function loadData() {\r\n HttpService.get({\r\n url: '/AccountNumericProducts/Get',\r\n cache: false\r\n })\r\n .then(function (response) {\r\n\r\n ctrl.orders = response.results.orders;\r\n\r\n _.each(ctrl.orders, function (order) {\r\n order.isOpen = true;\r\n order.count = order.Products.length;\r\n _.each(order.Products, function (line) {\r\n line.MaxDownloadDate = new Date(line.MaxDownloadDate.replace('T', ' ').replace(/-/g, '/'));\r\n line.disableDownload = line.MaxDownloadDate < (new Date());\r\n });\r\n order.init = true;\r\n });\r\n\r\n\r\n ctrl.loading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n }],\r\n controllerAs: 'accountCtrl'\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.account-order-tracking', [])\r\n\r\n .component('accountOrderTracking', {\r\n bindings: {\r\n result: '<',\r\n device: '<'\r\n },\r\n /* @ngInject */\r\n templateUrl: [\"AccountService\", function (AccountService) {\r\n return AccountService.getLinks().AccountOrderTracking;\r\n }],\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$timeout\", \"$location\", \"AppService\", \"AccountService\", \"DateService\", function ($scope, $timeout, $location, AppService, AccountService, DateService) {\r\n var ctrl = this;\r\n\r\n AccountService.initAccount(ctrl);\r\n\r\n ctrl.$onInit = function () {\r\n\r\n $scope.device = ctrl.device;\r\n\r\n ctrl.loading = true;\r\n\r\n AppService.getParams()\r\n .then(function (params) {\r\n if (!params.Account.IsManagementOrderTracking) {\r\n $location.path(ctrl.links.AccountHome);\r\n } else {\r\n ctrl.showTTCPrice = params.Visitor.CardType.ShowTTCPrice;\r\n AccountService.getOrders()\r\n .then(function (response) {\r\n _.each(response.Orders, function (order) {\r\n var date = DateService.stringToDate(order.CreationDate);\r\n order.timestamp = date.getTime();\r\n order.isOpen = false;\r\n $timeout(function () {\r\n order.init = true;\r\n }, 350);\r\n });\r\n ctrl.orders = _.filter(response.Orders, function (order) {\r\n return order.IDState !== 390 // 390 for settled order\r\n && order.IDState !== 430 // 430 for settled order partially sended\r\n && order.IDState !== 630 // 630 for settled order totally sended\r\n && order.IDState !== 610 // 610 for for settled order totally sended\r\n && order.IDState !== 410 // 410 for temp order\r\n && order.IDState !== 2410 // 2410 for temp order\r\n && order.IDState !== 490; // 490 for invoice\r\n // TODO : Find a way to only select useful IDState instead of eliminate useless ones.\r\n });\r\n ctrl.orderHistory = _.filter(response.Orders, function (order) {\r\n return order.IDState === 390;\r\n });\r\n ctrl.count = ctrl.orders.length;\r\n $timeout(function () {\r\n if (ctrl.count) {\r\n ctrl.orders[0].isOpen = true;\r\n }\r\n }, 1000);\r\n\r\n ctrl.loading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n };\r\n\r\n ctrl.getOrder = function (order) {\r\n if (order.loaded) return;\r\n getOrder(order);\r\n };\r\n\r\n ctrl.setFilterOptions = function (options) {\r\n ctrl.filterOptions = options;\r\n ctrl.setFilterHistory(ctrl.filterOptions[1]);\r\n if (!ctrl.orderHistoryFiltered.length) {\r\n ctrl.setFilterHistory(ctrl.filterOptions[2]);\r\n if (!ctrl.orderHistoryFiltered.length) {\r\n ctrl.setFilterHistory(ctrl.filterOptions[ctrl.filterOptions.length - 1]);\r\n }\r\n }\r\n };\r\n\r\n ctrl.setFilterHistory = function (option) {\r\n ctrl.filterSelected = option;\r\n if (option.months === -1) {\r\n ctrl.orderHistoryFiltered = ctrl.orderHistory;\r\n return;\r\n }\r\n var limit = new Date();\r\n limit.setMonth(limit.getMonth() - option.months);\r\n limit = limit.getTime();\r\n\r\n ctrl.orderHistoryFiltered = _.filter(ctrl.orderHistory, function (order) {\r\n return order.timestamp > limit;\r\n });\r\n };\r\n\r\n // Functions\r\n\r\n function getOrder(order) {\r\n AccountService.getOrder(order.IDFolder)\r\n .then(function (data) {\r\n order.loaded = true;\r\n angular.extend(order, data.Order);\r\n order.pendingLines = [];\r\n order.canceledLines = [];\r\n _.each(order.Products, function (line) {\r\n if (line.State === 2) {\r\n order.pendingLines.push(line);\r\n }\r\n if (line.State === 3) {\r\n order.canceledLines.push(line);\r\n }\r\n getCustom(line);\r\n });\r\n var tradeActions = [];\r\n var actionsCo = [];\r\n _.each(order.TradeActions, function (tradeAction) {\r\n if (tradeAction.TradeActionKey === 'PortOffert') {\r\n if (order.Shipping.Key !== 'ENLEVEMENT') order.Shipping.free = true;\r\n } else if (tradeAction.TradeActionKey === 'BonReduction') {\r\n actionsCo.push(tradeAction);\r\n } else {\r\n tradeActions.push(tradeAction);\r\n }\r\n });\r\n order.TradeActions = tradeActions;\r\n order.ActionsCo = actionsCo;\r\n _.each(order.FoldersShipping, function (folderShipping) {\r\n _.each(folderShipping.TradeActions, function (tradeAction) {\r\n if (tradeAction.TradeActionKey === 'PortOffert') {\r\n if (order.Shipping.Key !== 'ENLEVEMENT') order.Shipping.free = true;\r\n return false;\r\n }\r\n });\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n function getCustom(line) {\r\n if (line.Product.Customization) {\r\n _.each(line.Product.Customization.Items, function (item) {\r\n if (!item.Group) {\r\n if (item.Field.Code === 'DateEnvoi') {\r\n item.Field.Value = item.Field.Value.split('T')[0];\r\n }\r\n }\r\n if (item.Group) {\r\n _.each(item.Group.Fields, function (field) {\r\n if (field.Code === 'DateEnvoi') {\r\n field.Value = field.Value.split('T')[0];\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n }],\r\n controllerAs: 'accountCtrl'\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.password-recovery', [])\r\n\r\n .directive('accountPasswordRecovery', function () {\r\n return {\r\n restrict: 'E',\r\n bindToController: {\r\n token: '@',\r\n isTokenValid: '<'\r\n },\r\n controllerAs: 'passwordRecoveryCtrl',\r\n /* @ngInject */\r\n controller: [\"$element\", \"$scope\", \"$rootScope\", \"$location\", \"HttpService\", \"AppService\", \"ModalService\", \"toastr\", function ($element, $scope, $rootScope, $location, HttpService, AppService, ModalService, toastr) {\r\n\r\n var ctrl = this;\r\n\r\n ctrl.$onInit = function () {\r\n\r\n $scope.device = ctrl.device;\r\n console.log(ctrl.device + 'ctrl device'); \r\n \r\n ctrl.formData = { \r\n Token: ctrl\r\n .token,\r\n errors: {}\r\n };\r\n\r\n\r\n if (!ctrl.isTokenValid) {\r\n $element.find('.invalid-token').find('a')\r\n .attr({\r\n 'class': 'btn-underline',\r\n 'href': ''\r\n })\r\n .click(function () {\r\n ModalService.show(\r\n '/Template/Authentication/ModalForgotPassword',\r\n null,\r\n null,\r\n 'forgotPasswordModalCtrl'\r\n );\r\n });\r\n }\r\n };\r\n\r\n ctrl.submit = function () {\r\n $rootScope.$broadcast('showPageLoader', true);\r\n\r\n ctrl.formData.errors = {};\r\n\r\n HttpService.post({\r\n url: '/ChangePassword',\r\n data: ctrl.formData\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n toastr.success('', translate.messages.PasswordModified, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n $location.path('/').replace();\r\n } else {\r\n _.each(response.errors, function (error, key) {\r\n if (key === 'Global') {\r\n ctrl.formData.errors[key] = translate.errors[error.Errors[0].ErrorMessage];\r\n }\r\n });\r\n $rootScope.$broadcast('showPageLoader', false);\r\n }\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n }]\r\n };\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.account-quotation', [])\r\n\r\n .component('accountQuotations', {\r\n bindings: {\r\n device: '<'\r\n },\r\n /* @ngInject */\r\n templateUrl: [\"AccountService\", function (AccountService) {\r\n return AccountService.getLinks().AccountQuotations;\r\n }],\r\n\r\n controllerAs: 'accountCtrl',\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$rootScope\", \"$element\", \"$location\", \"$timeout\", \"AccountService\", \"HttpService\", function ($scope, $rootScope, $element, $location, $timeout, AccountService, HttpService) {\r\n var ctrl = this;\r\n\r\n AccountService.initAccount(ctrl);\r\n\r\n ctrl.$onInit = function () {\r\n $scope.device = ctrl.device;\r\n ctrl.loading = true;\r\n HttpService.get({\r\n url: '/AccountQuotations/Get',\r\n cache: false\r\n }).then(function (response) {\r\n\r\n ctrl.quotations = response.results.quotations;\r\n\r\n _.each(ctrl.quotations, function (quotation) {\r\n quotation.addAllEnabled = true;\r\n _.each(quotation.WebFolderLines, function (line) {\r\n if (!line.Product.AllowAddToCart) {\r\n quotation.addAllEnabled = false;\r\n }\r\n });\r\n $timeout(function () {\r\n quotation.init = true;\r\n }, 350);\r\n });\r\n\r\n $timeout(function () {\r\n ctrl.quotations[0].isOpen = true;\r\n }, 1000);\r\n\r\n ctrl.loading = false;\r\n\r\n })\r\n };\r\n\r\n ctrl.quotationPayment = function (event) {\r\n //ng - click=\"accountCtrl.quotationPayment($event)\"\r\n //window.history.replaceState({}, '', $(event.target).attr('href'));\r\n };\r\n }]\r\n })\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.account-returns', [])\r\n\r\n .component('accountReturns', {\r\n bindings: {\r\n result: '<',\r\n device: '<'\r\n },\r\n /* @ngInject */\r\n templateUrl: [\"AccountService\", function (AccountService) {\r\n return AccountService.getLinks().AccountReturns;\r\n }],\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$rootScope\", \"$element\", \"$timeout\", \"$route\", \"$location\", \"ModalService\", \"AccountService\", \"HttpService\", \"AppService\", \"toastr\", \"smoothScroll\", function ($scope, $rootScope, $element, $timeout, $route, $location, ModalService, AccountService, HttpService, AppService, toastr, smoothScroll) {\r\n var ctrl = this;\r\n\r\n AccountService.initAccount(ctrl);\r\n \r\n ctrl.$onInit = function () {\r\n\r\n $scope.device = ctrl.device;\r\n\r\n AppService.getParams()\r\n .then(function (params) {\r\n if (!params.Account.IsManagementReturns) {\r\n $location.path(ctrl.links.AccountHome);\r\n } else {\r\n ctrl.activeTab = 0;\r\n ctrl.requests = ctrl.result.requests;\r\n ctrl.result = null;\r\n if (!ctrl.requests.length) ctrl.activeTab = 1;\r\n loadFolders();\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n // Translate\r\n var tplTranslate = {};\r\n $element.children('.translate').children().each(function () {\r\n var $this = $(this);\r\n tplTranslate[$this.attr('key')] = $this.html();\r\n });\r\n\r\n ctrl.removeReturn = function (event, id) {\r\n event.stopPropagation();\r\n ModalService.show(\r\n '/Template/Account/ModalReturnsDeleteConfirm',\r\n {\r\n action: function () {\r\n ctrl.cancelRequest(id);\r\n }\r\n },\r\n null,\r\n 'modalRemoveReturnCtrl'\r\n );\r\n };\r\n\r\n // Requests\r\n ctrl.cancelRequest = function (idFolder) {\r\n $rootScope.$broadcast('showPageLoader', true);\r\n HttpService.post({\r\n url: 'AccountReturns/CancelReturnFolder',\r\n data: {\r\n idFolder: idFolder\r\n }\r\n })\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n $route.reload();\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n // Orders\r\n ctrl.getOrder = function (order) {\r\n if (order.loaded) return;\r\n getFolderProducts(order);\r\n };\r\n\r\n ctrl.selectLine = function (order, line) {\r\n ctrl.orders = _.cloneDeep(ctrl.ordersList);\r\n ctrl.ordersList = [order];\r\n ctrl.idOrderSelected = order.IDFolder;\r\n line.selected = !line.selected;\r\n checkReturnDisabled();\r\n line.step = 1;\r\n if (line.Quantity === 1) {\r\n line.ReturnQuantity = 1;\r\n ctrl.quantityChange(line);\r\n }\r\n $timeout(function () {\r\n smoothScroll(document.getElementById('ordersTop'), {offset: 50});\r\n });\r\n };\r\n\r\n ctrl.backToOrders = function () {\r\n ctrl.idOrderSelected = null;\r\n ctrl.ordersList = _.cloneDeep(ctrl.orders);\r\n $timeout(function () {\r\n smoothScroll(document.getElementById('ordersTop'), {offset: 50});\r\n });\r\n };\r\n\r\n ctrl.refreshSelect = function () {\r\n refreshSelects();\r\n };\r\n\r\n ctrl.getQuantities = function (num) {\r\n return new Array(num);\r\n };\r\n ctrl.quantityChange = function (line) {\r\n unfocusSelects();\r\n line.step = 1;\r\n if (line.ReturnQuantity !== '') {\r\n if (!line.reasons) {\r\n line.loading = true;\r\n HttpService.post({\r\n url: 'AccountReturns/ReturnReasons',\r\n data: {\r\n IDLine: line.IDLine\r\n }\r\n })\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n line.reasons = response.results.reasons;\r\n }\r\n line.step = 2;\r\n line.loading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n } else {\r\n line.step = 2;\r\n }\r\n }\r\n };\r\n\r\n ctrl.reasonChange = function (line) {\r\n unfocusSelects();\r\n line.step = 2;\r\n\r\n line.InputComment = null;\r\n line.ReturnReason = {\r\n InputComment: false,\r\n IDReturnReason: ''\r\n };\r\n _.each(line.reasons, function (reason) {\r\n if (reason.IDReturnReason === line.Reason) {\r\n line.ReturnReason = reason;\r\n return false;\r\n }\r\n });\r\n line.InputComment = line.ReturnReason.InputComment;\r\n if (line.Reason !== '') {\r\n line.loading = true;\r\n HttpService.post({\r\n url: 'AccountReturns/ReturnActions',\r\n data: {\r\n IDLine: line.IDLine,\r\n IDReturnReason: line.Reason\r\n }\r\n })\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n line.actions = response.results.actions;\r\n refreshSelects();\r\n }\r\n line.step = 3;\r\n line.loading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n checkReturnDisabled();\r\n };\r\n\r\n ctrl.actionChange = function (line) {\r\n unfocusSelects();\r\n line.ReturnAction = {\r\n ReturnActionKey: ''\r\n };\r\n _.each(line.actions, function (action) {\r\n if (action.ReturnActionKey === line.ActionValue) {\r\n line.ReturnAction = action;\r\n return false;\r\n }\r\n });\r\n checkReturnDisabled();\r\n\r\n line.IDExchangeProduct = null;\r\n if (line.ActionValue === 'EchangeAutreProduit') {\r\n ModalService.show(\r\n '/Template/Modal/ModalQuickView',\r\n {\r\n url: 'choose-p-' + line.Product.IDGroupingProduct,\r\n selectPrimary: true,\r\n idGroupingProduct: line.Product.IDGroupingProduct,\r\n originalId: line.Product.IDProduct,\r\n line: line,\r\n action: ctrl.productExchange\r\n },\r\n 'lg',\r\n 'modalReturnController',\r\n null,\r\n ctrl.device,\r\n {\r\n translate: tplTranslate\r\n },\r\n function () {\r\n ctrl.closeProductExchange(line);\r\n }\r\n );\r\n }\r\n };\r\n\r\n ctrl.productExchange = function (line, id) {\r\n line.IDExchangeProduct = id;\r\n };\r\n ctrl.closeProductExchange = function (line) {\r\n if (!line.IDExchangeProduct) {\r\n line.ActionValue = '';\r\n line.ReturnAction = null;\r\n line.InputComment = null;\r\n $timeout(function () {\r\n $element.find('select.action').val('');\r\n refreshSelects();\r\n });\r\n checkReturnDisabled();\r\n }\r\n };\r\n\r\n ctrl.submitReturnProducts = function () {\r\n $rootScope.$broadcast('showPageLoader', true);\r\n var items = [];\r\n _.each(ctrl.ordersList, function (order) {\r\n _.each(order.Products, function (line) {\r\n if (line.selected === true) {\r\n items.push({\r\n IDLine: line.IDLine,\r\n Comment: line.Comment,\r\n IDProduct: line.IDProduct,\r\n IDReturnReason: parseInt(line.Reason),\r\n IDExchangeProduct: line.IDExchangeProduct || 0,\r\n Quantity: line.ReturnQuantity,\r\n ReturnActionKey: line.ReturnAction.ReturnActionKey\r\n });\r\n }\r\n });\r\n });\r\n\r\n if (items.length) {\r\n HttpService.post({\r\n url: 'AccountReturns/ReturnProductsSend',\r\n data: {\r\n items: items,\r\n IDFolder: ctrl.idOrderSelected\r\n }\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n $route.reload();\r\n toastr.success('', translate.messages.DemandOk, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n } else {\r\n $rootScope.$broadcast('showPageLoader', false);\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n };\r\n\r\n // Functions\r\n\r\n function loadFolders() {\r\n ctrl.ordersLoading = true;\r\n AccountService.getEligibleReturnFolders()\r\n .then(function (data) {\r\n ctrl.orders = data.orders;\r\n _.each(ctrl.orders, function (order) {\r\n order.Products = [];\r\n order.init = true;\r\n });\r\n ctrl.ordersList = _.cloneDeep(ctrl.orders);\r\n _.each(ctrl.ordersList, function (order) {\r\n order.Products = [];\r\n order.init = false;\r\n $timeout(function () {\r\n order.init = true;\r\n }, 350);\r\n });\r\n\r\n ctrl.ordersLoading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n function getFolderProducts(order) {\r\n HttpService.post({\r\n url: 'AccountReturns/ReturnFolderProducts',\r\n data: order.IDFolder\r\n })\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n order.Products = response.results.products;\r\n }\r\n order.loaded = true;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n function refreshSelects() {\r\n setTimeout(function () {\r\n $element.find('select.refresh').each(function (index, el) {\r\n $(el).selectpicker('refresh');\r\n });\r\n });\r\n }\r\n\r\n function unfocusSelects() {\r\n setTimeout(function () {\r\n $element.find('div.refresh').each(function (index, el) {\r\n $(el).find('.dropdown-toggle').blur();\r\n });\r\n });\r\n }\r\n\r\n function checkReturnDisabled() {\r\n ctrl.submitReturnDisabled = true;\r\n _.each(ctrl.ordersList, function (order) {\r\n _.each(order.Products, function (line) {\r\n if (line.selected === true) {\r\n ctrl.submitReturnDisabled = false;\r\n if (!line.Reason || line.Reason === '') {\r\n ctrl.submitReturnDisabled = true;\r\n return false;\r\n }\r\n if (!line.ReturnAction) {\r\n ctrl.submitReturnDisabled = true;\r\n return false;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n }],\r\n controllerAs: 'accountCtrl'\r\n })\r\n\r\n /* @ngInject */\r\n .controller('modalRemoveReturnCtrl', [\"data\", \"device\", \"options\", \"ModalService\", function (data, device, options, ModalService) {\r\n var ctrl = this;\r\n ctrl.submit = function () {\r\n ModalService.close();\r\n data.action();\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('modalReturnController', [\"data\", \"device\", \"options\", \"ModalService\", function (data, device, options, ModalService) {\r\n var ctrl = this;\r\n ctrl.data = data;\r\n ctrl.device = device;\r\n ctrl.options = options;\r\n ctrl.showLoader = true;\r\n\r\n ctrl.onLoad = function () {\r\n ctrl.showLoader = false;\r\n };\r\n\r\n ctrl.selectPrimary = function (event) {\r\n if ($(event.currentTarget).attr('disabled')) {\r\n return;\r\n }\r\n ctrl.data.action(ctrl.data.line, ctrl.data.id);\r\n ModalService.close();\r\n };\r\n\r\n ctrl.choiceButton = function () {\r\n if (!ctrl.data.id || ctrl.data.id === ctrl.data.idGroupingProduct) {\r\n ctrl.tooltip = ctrl.options.translate.ChooseElementary;\r\n return true;\r\n }\r\n if (ctrl.data.id === ctrl.data.originalId) {\r\n ctrl.tooltip = ctrl.options.translate.IsTheSame;\r\n return true;\r\n }\r\n ctrl.tooltip = '';\r\n return false;\r\n };\r\n\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.account-saved-carts', [])\r\n\r\n .component('accountSavedCarts', {\r\n bindings: {\r\n device: '<'\r\n },\r\n /* @ngInject */\r\n templateUrl: [\"AccountService\", function (AccountService) {\r\n return AccountService.getLinks().AccountSavedCarts;\r\n }],\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$rootScope\", \"$element\", \"$location\", \"$timeout\", \"AccountService\", \"HttpService\", \"AppService\", \"ModalService\", \"RoutesService\", \"toastr\", function ($scope, $rootScope, $element, $location, $timeout, AccountService, HttpService, AppService, ModalService, RoutesService, toastr) {\r\n var ctrl = this;\r\n\r\n AccountService.initAccount(ctrl);\r\n\r\n ctrl.$onInit = function () {\r\n $scope.device = ctrl.device;\r\n ctrl.loading = true;\r\n\r\n AppService.getParams()\r\n .then(function (params) {\r\n if (!params.Account.IsManagementWebCartTracking) {\r\n $location.path(ctrl.links.AccountHome);\r\n } else {\r\n loadData();\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n // Translate\r\n var tplTranslate = {};\r\n $element.children('.translate').children().each(function () {\r\n var $this = $(this);\r\n tplTranslate[$this.attr('key')] = $this.html();\r\n });\r\n\r\n ctrl.remove = function (idWebFolder) {\r\n $rootScope.$broadcast('showPageLoader', true);\r\n HttpService.post({\r\n url: 'AccountSavedCarts/Remove',\r\n data: {\r\n IDWebFolder: idWebFolder\r\n }\r\n })\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n _.pullAllBy(ctrl.carts, [{ IDWebFolder: idWebFolder }], 'IDWebFolder');\r\n if (!ctrl.carts.length) {\r\n $rootScope.$broadcast('userUpdate');\r\n $location.path(ctrl.links.AccountHome);\r\n }\r\n toastr.success('', tplTranslate.removeOK, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n } else {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n });\r\n }\r\n $rootScope.$broadcast('showPageLoader', false);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n ctrl.addAllToCart = function (cart) {\r\n $rootScope.$broadcast('showPageLoader', true);\r\n AppService.getParams()\r\n .then(function (params) {\r\n $rootScope.$broadcast('showPageLoader', false);\r\n var products = [];\r\n _.each(cart.WebFolderLines, function (line) {\r\n if (line.Product.AllowAddToCart) {\r\n products.push({\r\n idProduct: line.Product.IDProduct,\r\n Price: AppService.getProductPrice(line.Product.Price, line.Quantity),\r\n showTTCPrice: params.Visitor.CardType.ShowTTCPrice,\r\n quantity: line.Quantity,\r\n designation: line.Product.Designation,\r\n img: line.Product.IDPicture,\r\n URL: line.Product.URL\r\n });\r\n }\r\n });\r\n\r\n ModalService.close();\r\n ModalService.show(\r\n '/Template/Modal/ModalAddToCart',\r\n products,\r\n null,\r\n 'modalAddToCartCtrl',\r\n null,\r\n null,\r\n {\r\n cartLink: '/' + RoutesService.getUrlByName('Cart')\r\n }\r\n );\r\n\r\n AppService.addToCart(products)\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n AppService.updateParams(response.results);\r\n } else {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n });\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n function loadData() {\r\n HttpService.get({\r\n url: '/AccountSavedCarts/Get',\r\n cache: false\r\n })\r\n .then(function (response) {\r\n ctrl.carts = response.results.carts;\r\n _.each(ctrl.carts, function (cart) {\r\n cart.addAllEnabled = true;\r\n\r\n _.each(cart.WebFolderLines, function (line) {\r\n getCustom(line);\r\n if (!line.Product.AllowAddToCart) {\r\n cart.addAllEnabled = false;\r\n }\r\n });\r\n $timeout(function () {\r\n cart.init = true;\r\n }, 350);\r\n });\r\n $timeout(function () {\r\n ctrl.carts[0].isOpen = true;\r\n }, 1000);\r\n\r\n ctrl.loading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n function getCustom(line) {\r\n if (line.Product.Customization) {\r\n _.each(line.Product.Customization.Items, function (item) {\r\n if (!item.Group) {\r\n if (item.Field.Value && item.Field.Code === 'DateEnvoi') {\r\n item.Field.Value = item.Field.Value.split('T')[0];\r\n }\r\n }\r\n if (item.Group) {\r\n _.each(item.Group.Fields, function (field) {\r\n if (field.Value && field.Code === 'DateEnvoi') {\r\n field.Value = field.Value.split('T')[0];\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n }],\r\n controllerAs: 'accountCtrl'\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.account-sponsorship', [])\r\n\r\n .component('accountSponsorShip', {\r\n bindings: {\r\n device: '<'\r\n },\r\n /* @ngInject */\r\n templateUrl: [\"AccountService\", function (AccountService) {\r\n return AccountService.getLinks().AccountSponsorShip;\r\n }],\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$rootScope\", \"$element\", \"$timeout\", \"$location\", \"AppService\", \"AccountService\", \"HttpService\", \"toastr\", function ($scope, $rootScope, $element, $timeout, $location, AppService, AccountService, HttpService, toastr) {\r\n var ctrl = this;\r\n\r\n AccountService.initAccount(ctrl);\r\n\r\n ctrl.$onInit = function () {\r\n\r\n $scope.device = ctrl.device;\r\n\r\n ctrl.loading = true;\r\n\r\n AppService.getParams()\r\n .then(function (params) {\r\n if (!params.Account.IsManagementSponsorShip) {\r\n $location.path(ctrl.links.AccountHome);\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n // Translate\r\n var tplTranslate = {};\r\n $element.children('.translate').children().each(function () {\r\n var $this = $(this);\r\n tplTranslate[$this.attr('key')] = $this.html();\r\n });\r\n\r\n ctrl.formData = {\r\n Sponsors: [{}],\r\n Message: ''\r\n };\r\n\r\n ctrl.addSponsor = function () {\r\n ctrl.formData.Sponsors.push({});\r\n };\r\n ctrl.removeSponsor = function (index) {\r\n ctrl.formData.Sponsors.splice(index, 1);\r\n };\r\n\r\n ctrl.getSponsors = function (id) {\r\n ctrl.IDCampaign = id;\r\n ctrl.loading = true;\r\n HttpService.post({\r\n url: 'AccountSponsorShip/Get',\r\n data: {\r\n idCampaign: id\r\n }\r\n })\r\n .then(function (response) {\r\n ctrl.sponsors = response.results.sponsors;\r\n ctrl.loading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n ctrl.submit = function () {\r\n\r\n $rootScope.$broadcast('showPageLoader', true);\r\n\r\n ctrl.formData.errors = {};\r\n\r\n HttpService.post({\r\n url: ctrl.links.AccountSponsorShip,\r\n data: ctrl.formData\r\n })\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n ctrl.formData = {\r\n Sponsors: [{}],\r\n Message: ''\r\n };\r\n toastr.success('', ctrl.formData.Sponsors.length > 1 ? tplTranslate.multiCallOK : tplTranslate.singleCallOK, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n } else {\r\n // Traitement des erreurs\r\n var sponsors = [];\r\n _.each(response.errors, function (error) {\r\n if (error.Error === 'GODSON_ALREADY_CUSTOMER') {\r\n toastr.warning('', error.Name + ' ' + tplTranslate.Error_GODSON_ALREADY_CUSTOMER, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n } else if (error.Error === 'ONE_PAID_ORDER_REQUIRED') {\r\n toastr.warning('', tplTranslate.Error_ONE_PAID_ORDER_REQUIRED, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n sponsors.push({\r\n Name: error.Name,\r\n Email: error.Email\r\n });\r\n });\r\n\r\n // Confirmation si certaines invitations sont envoyées\r\n var diff = ctrl.formData.Sponsors.length - sponsors.length;\r\n if (diff > 0) {\r\n toastr.success('', diff > 1 ? tplTranslate.multiCallOK : tplTranslate.singleCallOK, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n\r\n // Mise à jour du model, les invitations envoyées sont supprimées\r\n var message = sponsors.length ? ctrl.formData.Message : '';\r\n ctrl.formData = {\r\n Sponsors: sponsors.length ? sponsors : [{}],\r\n Message: message\r\n };\r\n }\r\n // Reset de la validation du formulaire\r\n $timeout(function () {\r\n ctrl.form.$resetValidation();\r\n });\r\n ctrl.getSponsors(ctrl.IDCampaign);\r\n $rootScope.$broadcast('showPageLoader', false);\r\n })\r\n .catch(function (response) {\r\n console.error(response);\r\n });\r\n };\r\n\r\n }],\r\n controllerAs: 'accountCtrl'\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.account-use-delegation', [])\r\n\r\n .component('accountUseDelegation', {\r\n\r\n bindings: {\r\n device: '<'\r\n },\r\n\r\n /* @ngInject */\r\n templateUrl: [\"AccountService\", function (AccountService) {\r\n return AccountService.getLinks().AccountUseDelegation;\r\n }],\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$rootScope\", \"$location\", \"$window\", \"AccountService\", \"AppService\", \"HttpService\", \"toastr\", function ($scope, $rootScope, $location, $window, AccountService, AppService, HttpService, toastr) {\r\n var ctrl = this;\r\n ctrl.formData = {};\r\n\r\n AccountService.initAccount(ctrl);\r\n\r\n ctrl.$onInit = function () {\r\n $scope.device = ctrl.device;\r\n ctrl.loading = true;\r\n\r\n AppService.getParams()\r\n .then(function (data) {\r\n ctrl.Visitor = data.Visitor;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n HttpService.get({\r\n url: '/Account/GetDelegations',\r\n cache: false\r\n })\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n ctrl.delegations = response.results.Delegations;\r\n } else {\r\n ctrl.delegations = [];\r\n }\r\n ctrl.loading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n ctrl.submit = function () {\r\n HttpService.post({\r\n url: '/Account/ChangeDelegation',\r\n data: '\"' + ctrl.formData.DelegationID + '\"'\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n toastr.success('', translate.messages.DelegationModified, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n $window.location.assign(ctrl.links.AccountHome).reload();\r\n } else {\r\n console.error('Unable to change delegation with delegationID', ctrl.formData.DelegationID);\r\n toastr.error('', 'Error while changing profile', {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n }],\r\n controllerAs: 'accountCtrl'\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.account-user', [])\r\n\r\n .component('accountUpdate', {\r\n bindings: {\r\n result: '<',\r\n device: '<'\r\n },\r\n /* @ngInject */\r\n templateUrl: [\"AccountService\", function (AccountService) {\r\n return AccountService.getLinks().AccountUpdate + '?' + (new Date().getTime());\r\n }],\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$rootScope\", \"$element\", \"$timeout\", \"toastr\", \"HttpService\", \"AppService\", \"AccountService\", \"ModalService\", \"productsGridService\", \"CdnService\", function ($scope, $rootScope, $element, $timeout, toastr, HttpService, AppService, AccountService, ModalService, productsGridService, CdnService) {\r\n var ctrl = this,\r\n unwatch;\r\n\r\n AccountService.initAccount(ctrl);\r\n\r\n var tmpId = 'pg_' + productsGridService.getId();\r\n $element.find('.addresses').attr('id', tmpId);\r\n\r\n ctrl.formData = {\r\n RememberMe: false\r\n };\r\n\r\n AppService.getParams()\r\n .then(function (params) {\r\n ctrl.visitor = params.Visitor;\r\n ctrl.initUserPicture();\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n ctrl.$onInit = function () {\r\n $scope.device = ctrl.device;\r\n setShippingAddresses(ctrl.result);\r\n ctrl.result = null;\r\n };\r\n\r\n ctrl.$onDestroy = function () {\r\n if (typeof unwatch !== 'undefined') {\r\n unwatch();\r\n }\r\n };\r\n\r\n ctrl.initUserPicture = function (refresh) {\r\n refresh = refresh || false;\r\n AppService.getParams(refresh)\r\n .then(function (data) {\r\n if (data.Visitor.IDPicture === 0) {\r\n ctrl.userPicture = '/img/user-' + (data.Visitor.Title.IDTitle === 'M.' ? 'man' : 'woman') + '.gif';\r\n } else {\r\n CdnService.get(data.Visitor.IDPicture, '60x60')\r\n .then(function (res) {\r\n ctrl.userPicture = res;\r\n })\r\n .catch(function (err) {\r\n console.error(err);\r\n });\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n ctrl.initBirthDate = function (year, month, day) {\r\n if (day) {\r\n ctrl.birthDate = new Date(parseInt(year), parseInt(month) - 1, parseInt(day));\r\n }\r\n };\r\n\r\n ctrl.init = function (isPro) {\r\n ctrl.formData.CustomerPro = isPro === 'True' ? true : false;\r\n unwatch = $scope.$watch('accountCtrl.formData.CustomerPro', function (value) {\r\n if (!value) {\r\n ctrl.formData.IDCompanyTitle = '';\r\n ctrl.formData.Company = '';\r\n ctrl.formData.Siret = '';\r\n ctrl.formData.IDActivity = '';\r\n ctrl.formData.IDActivityDomain = '';\r\n ctrl.formData.EUTVANumber = '';\r\n ctrl.formData.Function = '';\r\n ctrl.formData.testoon_domaine = '';\r\n ctrl.formData.testoon_fonction = '';\r\n ctrl.formData.testoon_type = '';\r\n $('#IDCompanyTitle').selectpicker('val', '');\r\n $('#IDActivityDomain').selectpicker('val', '');\r\n }\r\n $timeout(function () {\r\n ctrl.formProfile.$resetValidation();\r\n });\r\n\r\n $scope.$broadcast('watchResize');\r\n });\r\n };\r\n\r\n ctrl.toggleCustomerPro = function (event) {\r\n if (event.which === 13) {\r\n event.preventDefault();\r\n ctrl.formData.CustomerPro = !ctrl.formData.CustomerPro;\r\n }\r\n };\r\n\r\n ctrl.submitProfil = function () {\r\n ctrl.loadingProfile = true;\r\n\r\n if (ctrl.formData.CustomerPro) {\r\n ctrl.formData.Properties = [\r\n {\r\n 'Key': 'testoon_type',\r\n 'Values': [ctrl.formData.testoon_type]\r\n },\r\n {\r\n 'Key': 'testoon_fonction',\r\n 'Values': [ctrl.formData.testoon_fonction]\r\n },\r\n {\r\n 'Key': 'testoon_domaine',\r\n 'Values': [ctrl.formData.testoon_domaine]\r\n }\r\n ];\r\n }\r\n\r\n ctrl.formData.errors = {};\r\n\r\n HttpService.post({\r\n url: '/AccountUpdateProfile',\r\n data: ctrl.formData\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n toastr.success('', translate.messages.AccountModified, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n ctrl.initBirthDate(ctrl.formData.BirthYear, ctrl.formData.BirthMonth, ctrl.formData.BirthDay);\r\n ctrl.initUserPicture(true);\r\n $rootScope.$broadcast('userUpdate');\r\n\r\n $timeout(function () {\r\n ctrl.formProfile.$resetValidation();\r\n }, 400);\r\n $scope.$broadcast('toggle_profile');\r\n } else {\r\n _.each(response.errors, function (error, key) {\r\n if (key === 'Global') {\r\n ctrl.formData.errors[key] = translate.errors[error.Errors[0].ErrorMessage];\r\n }\r\n });\r\n }\r\n ctrl.loadingProfile = false;\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n ctrl.submitAddress = function () {\r\n var data = {\r\n IDCard: ctrl.visitor.IDCard,\r\n Function: '',\r\n IDTitle: ctrl.visitor.Title.IDTitle,\r\n FirstName: ctrl.visitor.FirstName,\r\n LastName: ctrl.visitor.LastName,\r\n EUTVANumber: ctrl.formData.EUTVANumber,\r\n Address: ctrl.formData.Address,\r\n AddressApartment: ctrl.formData.AddressApartment,\r\n AddressBuilding: ctrl.formData.AddressBuilding,\r\n AddressLocality: ctrl.formData.AddressLocality,\r\n PostCode: ctrl.formData.PostCode,\r\n City: ctrl.formData.City,\r\n IDCountry: ctrl.formData.IDCountry,\r\n Phone: ctrl.formData.Phone,\r\n MobilePhone: ctrl.formData.MobilePhone\r\n };\r\n updateAddress(data, ctrl.visitor);\r\n };\r\n\r\n ctrl.submitShippingAddress = function (address) {\r\n address.FullName = address.FirstName + ' ' + address.LastName;\r\n if (address.Company !== '' && address.FirstName !== '' && address.LastName !== '') {\r\n address.FullName = address.Company + ' (' + address.FirstName + ' ' + address.LastName + ')';\r\n } else if (address.Company !== '' && address.FirstName === '' && address.LastName !== '') {\r\n address.FullName = address.Company + ' (' + address.LastName + ')';\r\n } else if (address.Company !== '' && address.LastName === '') {\r\n address.FullName = address.Company;\r\n }\r\n\r\n var data = {\r\n IDCard: address.IDCard,\r\n Function: address.Function,\r\n Company: address.Company || '',\r\n IDTitle: address.selectTitle || '',\r\n FirstName: address.FirstName || '',\r\n LastName: address.LastName || '',\r\n EUTVANumber: address.EUTVANumber || '',\r\n Address: address.Address,\r\n AddressApartment: address.AddressApartment,\r\n AddressBuilding: address.AddressBuilding,\r\n AddressLocality: address.AddressLocality,\r\n PostCode: address.PostCode,\r\n City: address.City,\r\n IDCountry: address.selectCountry.IDCountry,\r\n Phone: address.Phone,\r\n MobilePhone: address.MobilePhone\r\n };\r\n updateAddress(data, address);\r\n };\r\n\r\n ctrl.removeAddress = function (address) {\r\n ModalService.show(\r\n '/Template/Account/ModalRemoveAddressConfirm',\r\n {\r\n action: function () {\r\n removeAddress(address);\r\n }\r\n },\r\n null,\r\n 'modalRemoveAddressConfirmCtrl'\r\n );\r\n };\r\n\r\n ctrl.addAddress = function () {\r\n ModalService.show(\r\n '/Template/Account/ModalAddAddress',\r\n {\r\n titles: ctrl.titles,\r\n countries: ctrl.countries,\r\n country: ctrl.visitor.Country,\r\n action: function () {\r\n updateShippingAddresses();\r\n }\r\n },\r\n null,\r\n 'modalAddAddressCtrl'\r\n );\r\n };\r\n\r\n var n = $element.find('.flip-container').length;\r\n var i = 0;\r\n $scope.$on('resized', function () {\r\n i++;\r\n if (i === n) {\r\n ctrl.active = true;\r\n }\r\n });\r\n\r\n // Functions\r\n\r\n function updateAddress(data, address) {\r\n ctrl['loading' + data.IDCard] = true;\r\n HttpService.post({\r\n url: '/AccountUpdateAddress',\r\n data: data\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n toastr.success('', translate.messages.AccountModified, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n if (data.IDCard === ctrl.visitor.IDCard) {\r\n address.Title.IDTitle = data.IDTitle;\r\n ctrl.visitor.Country.Designation = response.country;\r\n AppService.getParams(true)\r\n .then(function (params) {\r\n ctrl.visitor = params.Visitor;\r\n });\r\n } else if (data.Function === '') {\r\n updateShippingAddresses();\r\n return;\r\n } else {\r\n address.Title.IDTitle = data.IDTitle;\r\n address.Country.Designation = response.country;\r\n resizeShippingAddresses();\r\n }\r\n $timeout(function () {\r\n ctrl['formAddress' + data.IDCard].$resetValidation();\r\n }, 400);\r\n $scope.$broadcast('toggle_address' + data.IDCard);\r\n } else {\r\n _.each(response.errors, function (error) {\r\n toastr.warning('', translate.errors[error.Errors[0].ErrorMessage], {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n });\r\n }\r\n ctrl['loading' + data.IDCard] = false;\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n function removeAddress(address) {\r\n _.pullAllBy(ctrl.shippingAddresses, [{ IDCard: address.IDCard }], 'IDCard');\r\n address.Function = '';\r\n ctrl.submitShippingAddress(address);\r\n }\r\n\r\n function setShippingAddresses(results) {\r\n\r\n ctrl.shippingAddresses = _.filter(results.addresses, {IDCardType:7});\r\n\r\n ctrl.titles = results.titles;\r\n ctrl.countries = results.countries;\r\n _.each(ctrl.shippingAddresses, function (address) {\r\n address.titles = results.titles;\r\n address.countries = results.countries;\r\n $timeout(function () {\r\n address.selectTitle = address.Title.IDTitle || '';\r\n address.selectCountry = address.Country;\r\n ctrl['formAddress' + address.IDCard].$resetValidation();\r\n $element.find('select.refresh').selectpicker('refresh');\r\n });\r\n });\r\n $timeout(refreshSelects, 1000);\r\n resizeShippingAddresses();\r\n $rootScope.$broadcast('showPageLoader', false);\r\n }\r\n\r\n function updateShippingAddresses() {\r\n $rootScope.$broadcast('showPageLoader', true);\r\n ctrl.shippingAddresses = null;\r\n AccountService.getShippingAddresses()\r\n .then(function (results) {\r\n setShippingAddresses(results);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n function resizeShippingAddresses() {\r\n setTimeout(function () {\r\n productsGridService.resizeGrid(tmpId, ctrl.device.size, false);\r\n });\r\n }\r\n\r\n function refreshSelects() {\r\n setTimeout(function () {\r\n $element.find('select.refresh').each(function (index, el) {\r\n $(el).selectpicker('refresh');\r\n });\r\n });\r\n }\r\n\r\n }],\r\n controllerAs: 'accountCtrl'\r\n })\r\n\r\n /* @ngInject */\r\n .controller('modalRemoveAddressConfirmCtrl', [\"data\", \"device\", \"options\", \"ModalService\", function (data, device, options, ModalService) {\r\n var ctrl = this;\r\n ctrl.submit = function () {\r\n ModalService.close();\r\n data.action();\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('modalAddAddressCtrl', [\"data\", \"device\", \"options\", \"$timeout\", \"HttpService\", \"AppService\", \"ModalService\", \"toastr\", function (data, device, options, $timeout, HttpService, AppService, ModalService, toastr) {\r\n var ctrl = this;\r\n ctrl.data = data;\r\n\r\n ctrl.data.Function = '';\r\n $timeout(function () {\r\n ctrl.data.selectCountry = ctrl.data.country;\r\n setTimeout(function () {\r\n $('.modal').find('select.refresh').selectpicker('refresh');\r\n });\r\n });\r\n\r\n var messageTitle;\r\n\r\n ctrl.successMessage = function (title) {\r\n messageTitle = title;\r\n };\r\n\r\n ctrl.submit = function () {\r\n ctrl.loading = true;\r\n\r\n HttpService.post({\r\n url: '/AccountAddAddress',\r\n data: {\r\n Function: ctrl.data.Function,\r\n IDTitle: ctrl.data.selectTitle || '',\r\n FirstName: ctrl.data.FirstName || '',\r\n LastName: ctrl.data.LastName || '',\r\n EUTVANumber: ctrl.data.EUTVANumber || '',\r\n Address: ctrl.data.Address || '',\r\n AddressApartment: ctrl.data.AddressApartment || '',\r\n AddressBuilding: ctrl.data.AddressBuilding || '',\r\n AddressLocality: ctrl.data.AddressLocality || '',\r\n PostCode: ctrl.data.PostCode || '',\r\n City: ctrl.data.City || '',\r\n IDCountry: ctrl.data.selectCountry.IDCountry || '',\r\n Company: ctrl.data.Company || '',\r\n Phone: ctrl.data.Phone || '',\r\n MobilePhone: ctrl.data.MobilePhone || ''\r\n }\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n ModalService.close();\r\n toastr.success('', messageTitle, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n ctrl.data.action();\r\n } else {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n ctrl.loading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n }])\r\n\r\n .component('accountPasswordReset', {\r\n bindings: {\r\n device: '<'\r\n },\r\n /* @ngInject */\r\n templateUrl: [\"AccountService\", function (AccountService) {\r\n return AccountService.getLinks().AccountPasswordReset;\r\n }],\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$rootScope\", \"$timeout\", \"$location\", \"toastr\", \"HttpService\", \"AppService\", \"AccountService\", \"Routes\", \"DefaultLocalization\", function ($scope, $rootScope, $timeout, $location, toastr, HttpService, AppService, AccountService, Routes, DefaultLocalization) {\r\n var ctrl = this;\r\n\r\n AccountService.initAccount(ctrl); \r\n\r\n ctrl.$onInit = function () { \r\n $scope.device = ctrl.device;\r\n //console.log(ctrl.device + 'ctrl device');\r\n }\r\n\r\n // common account end\r\n\r\n ctrl.formData = {\r\n errors: {}\r\n };\r\n\r\n ctrl.focus = function () {\r\n ctrl.formData.errors = {};\r\n };\r\n\r\n ctrl.submit = function () {\r\n\r\n $rootScope.$broadcast('showPageLoader', true);\r\n\r\n ctrl.formData.errors = {};\r\n\r\n HttpService.post({\r\n url: AccountService.getLinks().AccountPasswordReset,\r\n data: ctrl.formData\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n toastr.success('', translate.messages.PasswordModified, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n $timeout(function () {\r\n $location.path('/' + Routes.filter(function (route) { return route.Name === 'AccountHome'; })[0][DefaultLocalization].URL).replace();\r\n }, 2000);\r\n } else {\r\n _.each(response.errors, function (error, key) {\r\n if (key === 'Global') {\r\n ctrl.formData.errors[key] = translate.errors[error.Errors[0].ErrorMessage];\r\n }\r\n });\r\n $rootScope.$broadcast('showPageLoader', false);\r\n }\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n }],\r\n controllerAs: 'accountCtrl'\r\n })\r\n\r\n /* @ngInject */\r\n .controller('modalAccountUpdateController', [\"$scope\", \"$rootScope\", \"$templateCache\", \"HttpService\", \"AppService\", \"AccountService\", function ($scope, $rootScope, $templateCache, HttpService, AppService, AccountService) {\r\n var ctrl = this;\r\n $rootScope.$broadcast('showPageLoader', false);\r\n ctrl.links = AccountService.getLinks();\r\n\r\n ctrl.formData = {\r\n errors: {}\r\n };\r\n\r\n ctrl.focus = function () {\r\n ctrl.formData.errors.Global = null;\r\n };\r\n\r\n ctrl.submit = function () {\r\n ctrl.loading = true;\r\n\r\n ctrl.formData.errors = {};\r\n\r\n _.replace(ctrl.formData.Phone, / /g, '');\r\n _.replace(ctrl.formData.MobilePhone, / /g, '');\r\n\r\n HttpService.post({\r\n url: '/AccountUpdateInvoiceAddress',\r\n data: ctrl.formData\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n $templateCache.remove(AccountService.getLinks().AccountUpdate);\r\n AppService.updateParams(response.results);\r\n $rootScope.$broadcast('invoiceUpdate');\r\n } else {\r\n ctrl.loading = false;\r\n _.each(response.errors, function (error, key) {\r\n if (key === 'Global') {\r\n ctrl.formData.errors[key] = translate.errors[error.Errors[0].ErrorMessage];\r\n }\r\n });\r\n }\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.account-wishlist', ['directive.ngclipboard'])\r\n\r\n .component('accountWishList', {\r\n bindings: {\r\n device: '<'\r\n },\r\n /* @ngInject */\r\n templateUrl: [\"AccountService\", function (AccountService) {\r\n return AccountService.getLinks().AccountWishList;\r\n }],\r\n /* @ngInject */\r\n controller: [\"$element\", \"$scope\", \"$rootScope\", \"$timeout\", \"$window\", \"whishListService\", \"AppService\", \"AccountService\", \"RoutesService\", \"HttpService\", \"productsGridService\", \"ModalService\", \"toastr\", function ($element, $scope, $rootScope, $timeout, $window, whishListService, AppService, AccountService, RoutesService, HttpService, productsGridService, ModalService, toastr) {\r\n var ctrl = this;\r\n\r\n AccountService.initAccount(ctrl);\r\n\r\n var tmpId = 'pg_' + productsGridService.getId();\r\n $element.find('.products-list').attr('id', tmpId);\r\n\r\n ctrl.commentPopover = '/Template/Account/AccountWishListComment';\r\n\r\n ctrl.$onInit = function () {\r\n ctrl.loading = true;\r\n $scope.device = ctrl.device;\r\n loadData();\r\n };\r\n\r\n // Translate\r\n var tplTranslate = {};\r\n $element.children('.translate').children().each(function () {\r\n var $this = $(this);\r\n tplTranslate[$this.attr('key')] = $this.html();\r\n });\r\n\r\n ctrl.empty = function () {\r\n $rootScope.$broadcast('showPageLoader', true);\r\n HttpService.post({\r\n url: '/WishList/Empty',\r\n data: {}\r\n })\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n ctrl.Products = [];\r\n ctrl.count = 0;\r\n whishListService.reset();\r\n }\r\n $rootScope.$broadcast('showPageLoader', false);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n ctrl.removeProduct = function (id) {\r\n ModalService.show(\r\n '/Template/Account/ModalRemoveWishListProduct',\r\n {\r\n action: function () {\r\n removeProduct(id);\r\n }\r\n },\r\n null,\r\n 'modalRemoveWishListProductCtrl'\r\n );\r\n };\r\n\r\n ctrl.saveRate = function (item) {\r\n item.rateLoading = true;\r\n HttpService.post({\r\n url: '/WishList/Rating',\r\n data: {\r\n IDProduct: item.Product.IDProduct,\r\n Rate: item.Rate\r\n }\r\n })\r\n .then(function (response) {\r\n if (response.satus === 'OK') {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n toastr.success('', translate.messages.SavedChanges, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n });\r\n }\r\n item.rateLoading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n ctrl.editComment = function (item) {\r\n item.editedComment = item.Comment;\r\n item.commentIsOpen = true;\r\n };\r\n ctrl.saveComment = function (item) {\r\n item.commentLoading = true;\r\n HttpService.post({\r\n url: '/WishList/Comment',\r\n data: {\r\n IDProduct: item.Product.IDProduct,\r\n Comment: item.editedComment\r\n }\r\n })\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n item.Comment = item.editedComment;\r\n item.commentIsOpen = false;\r\n item.hasComment = item.Comment !== '';\r\n $timeout(function () {\r\n productsGridService.resizeGrid(tmpId, ctrl.device.size, false);\r\n });\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n toastr.success('', translate.messages.SavedChanges, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n });\r\n }\r\n item.commentLoading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n ctrl.addAllToCart = function () {\r\n $rootScope.$broadcast('showPageLoader', true);\r\n AppService.getParams()\r\n .then(function (params) {\r\n $rootScope.$broadcast('showPageLoader', false);\r\n var products = [];\r\n _.each(ctrl.Products, function (item) {\r\n if (item.Product.AllowAddToCart) {\r\n products.push({\r\n idProduct: item.Product.IDProduct,\r\n Price: AppService.getProductPrice(item.Product.Price, item.Quantity),\r\n showTTCPrice: params.Visitor.CardType.ShowTTCPrice,\r\n quantity: item.Quantity,\r\n designation: item.Product.Designation,\r\n img: item.Product.IDPicture,\r\n URL: item.Product.URL\r\n });\r\n }\r\n });\r\n\r\n ModalService.close();\r\n ModalService.show(\r\n '/Template/Modal/ModalAddToCart',\r\n products,\r\n null,\r\n 'modalAddToCartCtrl',\r\n null,\r\n null,\r\n {\r\n cartLink: '/' + RoutesService.getUrlByName('Cart')\r\n }\r\n );\r\n\r\n AppService.addToCart(products)\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n AppService.updateParams(response.results);\r\n } else {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n });\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n };\r\n\r\n ctrl.onSuccess = function (e, message) {\r\n e.clearSelection();\r\n toastr.success('', decodeURI(message), {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n };\r\n\r\n ctrl.addProduct = function (product) {\r\n if (!product.IsGroupingProduct) {\r\n $rootScope.$broadcast('showPageLoader', true);\r\n HttpService.post({\r\n url: '/WishList/Add',\r\n data: product.IDProduct\r\n })\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n toastr.success('', tplTranslate.addedToList, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n reloadProducts();\r\n whishListService.reset();\r\n }\r\n $rootScope.$broadcast('showPageLoader', false);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n } else {\r\n ModalService.show(\r\n '/Template/Modal/ModalQuickView',\r\n {\r\n url: 'choose-p-' + product.IDProduct,\r\n selectPrimary: true,\r\n idGroupingProduct: product.IDProduct,\r\n action: ctrl.addPrimary\r\n },\r\n 'lg',\r\n 'modalWishlistSelectController',\r\n null,\r\n ctrl.device,\r\n {\r\n translate: tplTranslate\r\n }\r\n );\r\n }\r\n };\r\n\r\n ctrl.addPrimary = function (id) {\r\n ctrl.addProduct({\r\n IDProduct: id,\r\n IsGroupingProduct: false\r\n });\r\n };\r\n\r\n // Functions\r\n function loadData() {\r\n getProducts()\r\n .then(function () {\r\n ctrl.loading = false;\r\n });\r\n }\r\n\r\n function reloadProducts() {\r\n ctrl.loadingProducts = true;\r\n getProducts()\r\n .then(function () {\r\n $timeout(function () {\r\n productsGridService.resizeGrid(tmpId, ctrl.device.size, false);\r\n ctrl.loadingProducts = false;\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n function getProducts() {\r\n return HttpService.get({\r\n url: '/WishList/Products',\r\n cache: false\r\n })\r\n .then(function (response) {\r\n ctrl.Products = response.results.Products;\r\n ctrl.Total = response.results.Total;\r\n ctrl.PublicLink = response.results.PublicLink;\r\n\r\n ctrl.count = ctrl.Products.length;\r\n\r\n ctrl.addAllEnabled = true;\r\n _.each(ctrl.Products, function (line) {\r\n line.hasComment = line.Comment !== undefined && line.Comment !== '';\r\n if (!line.Product.AllowAddToCart) {\r\n ctrl.addAllEnabled = false;\r\n }\r\n });\r\n\r\n return true;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n function removeProduct(id) {\r\n $rootScope.$broadcast('showPageLoader', true);\r\n HttpService.post({\r\n url: '/WishList/Remove',\r\n data: id\r\n })\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n whishListService.reset();\r\n ctrl.Products = response.results.Products;\r\n ctrl.Total = response.results.Total;\r\n ctrl.count = ctrl.Products.length;\r\n ctrl.addAllEnabled = true;\r\n _.each(ctrl.Products, function (line) {\r\n if (!line.Product.AllowAddToCart) {\r\n ctrl.addAllEnabled = false;\r\n }\r\n });\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n toastr.success('', translate.messages.SavedChanges, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n setTimeout(function () {\r\n $window.dispatchEvent(new Event('resize'));\r\n });\r\n }\r\n $rootScope.$broadcast('showPageLoader', false);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n }],\r\n controllerAs: 'accountCtrl'\r\n })\r\n\r\n /* @ngInject */\r\n .controller('modalRemoveWishListProductCtrl', [\"data\", \"device\", \"options\", \"ModalService\", function (data, device, options, ModalService) {\r\n var ctrl = this;\r\n ctrl.submit = function () {\r\n ModalService.close();\r\n data.action();\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('modalWishlistSelectController', [\"data\", \"device\", \"options\", \"$scope\", \"ModalService\", function (data, device, options, $scope, ModalService) {\r\n var ctrl = this;\r\n ctrl.data = data;\r\n ctrl.device = device;\r\n ctrl.options = options;\r\n ctrl.showLoader = true;\r\n $scope.device = device;\r\n\r\n ctrl.onLoad = function () {\r\n ctrl.showLoader = false;\r\n };\r\n\r\n ctrl.selectPrimary = function () {\r\n ctrl.data.action(ctrl.data.id);\r\n ModalService.close();\r\n };\r\n\r\n ctrl.choiceButton = function () {\r\n if (!ctrl.data.id || ctrl.data.id === ctrl.data.idGroupingProduct) {\r\n ctrl.tooltip = ctrl.options.translate.ChooseElementary;\r\n return true;\r\n }\r\n ctrl.tooltip = '';\r\n return false;\r\n };\r\n\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('wishlistPublicController', [\"$rootScope\", \"AppService\", \"toastr\", function ($rootScope, AppService, toastr) {\r\n var ctrl = this;\r\n ctrl.productsToCart = [];\r\n\r\n ctrl.init = function (lines) {\r\n ctrl.addAllEnabled = true;\r\n _.each(lines, function (line) {\r\n if (!line.Product.AllowAddToCart) {\r\n ctrl.addAllEnabled = false;\r\n }\r\n });\r\n };\r\n\r\n ctrl.addProduct = function (idProduct) {\r\n ctrl.productsToCart.push({\r\n idProduct: idProduct,\r\n quantity: 1\r\n });\r\n };\r\n\r\n ctrl.addAllProducts = function (event) {\r\n $rootScope.$broadcast('showPageLoader', true);\r\n\r\n var message = $(event.currentTarget).attr('message');\r\n\r\n AppService.addToCart(ctrl.productsToCart)\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n AppService.updateParams(response.results);\r\n toastr.success('', message, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n } else {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n });\r\n }\r\n $rootScope.$broadcast('showPageLoader', false);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n }]);\r\n\r\n})();\r\n","/**\r\n * Account activities directive\r\n * Version 1.0\r\n * Octave\r\n */\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('directive.account-activities', [])\r\n\r\n /* @ngInject */\r\n .directive('accountActivities', function () {\r\n return {\r\n restrict: 'E',\r\n bindToController: {\r\n activitiesJson: '<',\r\n formData: '='\r\n },\r\n controllerAs: 'activitiesCtrl',\r\n /* @ngInject */\r\n controller: [\"$element\", \"$timeout\", function ($element, $timeout) {\r\n var ctrl = this;\r\n\r\n ctrl.$onInit = function () {\r\n refreshSelects();\r\n };\r\n\r\n ctrl.initActivity = function (IDActivity) {\r\n $timeout(function () {\r\n ctrl.formData.IDActivity = IDActivity.toString();\r\n\r\n ctrl.activities = _.find(ctrl.activitiesJson, {\r\n Activities: [{\r\n IDActivity: Number(ctrl.formData.IDActivity)\r\n }]\r\n });\r\n\r\n ctrl.formData.IDActivityDomain = ctrl.activities.IDActivityDomain.toString();\r\n\r\n refreshSelects();\r\n });\r\n\r\n };\r\n\r\n ctrl.domainSelected = function () {\r\n if (ctrl.formData.IDActivityDomain) {\r\n ctrl.activities = _.find(ctrl.activitiesJson, { IDActivityDomain: Number(ctrl.formData.IDActivityDomain) });\r\n refreshSelects();\r\n }\r\n };\r\n\r\n function refreshSelects() {\r\n setTimeout(function () {\r\n $element.find('select').each(function (index, el) {\r\n $(el).selectpicker('refresh');\r\n });\r\n });\r\n }\r\n }]\r\n };\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.directive.account', [])\r\n\r\n .directive('ordersFilter', function () {\r\n return {\r\n restrict: 'A',\r\n require: {\r\n accountOrderTrackingCtrl: '?^^accountOrderTracking',\r\n accountReturnsCtrl: '?^^accountReturns'\r\n },\r\n bindToController: {\r\n options: '<'\r\n },\r\n controller: function () {\r\n var ctrl = this;\r\n\r\n ctrl.$onInit = function () {\r\n var i = 0;\r\n _.each(ctrl.options, function (option) {\r\n option.index = i;\r\n option.caption = _.unescape(option.caption);\r\n i++;\r\n });\r\n var parentCtrl = ctrl.accountOrderTrackingCtrl || ctrl.accountReturnsCtrl;\r\n parentCtrl.setFilterOptions(ctrl.options);\r\n };\r\n }\r\n };\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.authentication', [])\r\n\r\n /* @ngInject */\r\n .controller('authenticationCtrl', [\"$scope\", \"$timeout\", \"AppService\", function ($scope, $timeout, AppService) {\r\n var ctrl = this;\r\n ctrl.newClient = {};\r\n ctrl.templateCreate = '';\r\n ctrl.createOpen = false;\r\n\r\n ctrl.loadedAccountCreate = function () {\r\n $scope.$emit('showPageLoader', false);\r\n $timeout(function () {\r\n ctrl.createOpen = true;\r\n });\r\n };\r\n ctrl.toggleAccountCreate = function () {\r\n ctrl.createOpen = !ctrl.createOpen;\r\n };\r\n\r\n AppService.getTranslate()\r\n .then(function () {\r\n ctrl.active = true;\r\n $timeout(function () {\r\n ctrl.activeIn = true;\r\n }, 100);\r\n });\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('loginCtrl', [\"$scope\", \"$rootScope\", \"$timeout\", \"$location\", \"$uibModal\", \"AccountService\", \"AppService\", \"LogService\", function ($scope, $rootScope, $timeout, $location, $uibModal, AccountService, AppService, LogService) {\r\n\r\n $timeout(function () {\r\n $rootScope.$broadcast('showPageLoader', false);\r\n }, 500);\r\n\r\n $scope.formData = {\r\n RememberMe: false,\r\n errors: {}\r\n };\r\n\r\n $scope.focus = function () {\r\n $scope.formData.errors.Global = null;\r\n };\r\n\r\n $scope.submit = function (event) {\r\n $(event.target).find('input').blur();\r\n $scope.showLoader = true;\r\n\r\n $scope.formData.errors = {};\r\n\r\n if ($scope.returnUrl) {\r\n $scope.formData.ReturnUrl = $scope.returnUrl;\r\n }\r\n\r\n LogService.login($scope.formData)\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n AppService.getParams(true)\r\n .then(function (data) {\r\n $rootScope.$broadcast('login');\r\n if (LogService.redirect) {\r\n if (LogService.redirect.action) {\r\n LogService.redirect.action(LogService.redirect.url);\r\n } else if (LogService.redirect.url) {\r\n $location.path(LogService.redirect.url).replace();\r\n }\r\n LogService.redirect = null;\r\n } else {\r\n $location.path(AccountService.getLinks().AccountHome).replace();\r\n }\r\n $scope.showLoader = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n } else if (response.status === 'WaitingForDelegation') {\r\n // Delegation\r\n $scope.delegations = response.delegations;\r\n $scope.showLoader = false;\r\n } else if (response.status !== undefined) {\r\n // End Delegation\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n _.each(response.errors, function (error, key) {\r\n if (key === 'Global') {\r\n $scope.formData.errors[key] = translate.errors[error.Errors[0].ErrorMessage];\r\n }\r\n });\r\n $scope.showLoader = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n } else {\r\n location = $scope.returnUrl;\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n $scope.openForgotPassword = function () {\r\n LogService.email = $scope.formData.Login;\r\n $uibModal.open({\r\n templateUrl: '/Template/Authentication/ModalForgotPassword',\r\n controller: 'forgotPasswordModalCtrl'\r\n });\r\n };\r\n\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('loginModalCtrl', [\"data\", \"device\", \"options\", \"$scope\", \"$rootScope\", \"$location\", \"$uibModal\", \"$uibModalInstance\", \"$route\", \"$templateCache\", \"$window\", \"AppService\", \"LogService\", \"RoutesService\", \"AccountService\", function (data, device, options, $scope, $rootScope, $location, $uibModal, $uibModalInstance, $route, $templateCache, $window, AppService, LogService, RoutesService, AccountService) {\r\n var ctrl = this;\r\n ctrl.data = data;\r\n ctrl.device = device;\r\n ctrl.options = options;\r\n $scope.device = device;\r\n\r\n if (data && data.mailRecognized) {\r\n setTimeout(function () {\r\n $('.modal').find('[ng-model=\"formData.Password\"]').focus();\r\n });\r\n }\r\n\r\n if (data && data.action) {\r\n LogService.redirect = {\r\n url: data.url || null,\r\n action: data.action\r\n };\r\n }\r\n\r\n $scope.linkCreate = '/' + RoutesService.get().Login.url;\r\n\r\n $scope.formData = {\r\n RememberMe: false,\r\n errors: {},\r\n returnUrl: '/'\r\n };\r\n\r\n $scope.focus = function () {\r\n $scope.formData.errors.Global = null;\r\n };\r\n\r\n $scope.submit = function (event) {\r\n $(event.target).find('input').blur();\r\n $scope.showLoader = true;\r\n\r\n $scope.formData.errors = {};\r\n\r\n LogService.login($scope.formData)\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n AppService.getParams(true)\r\n .then(function () {\r\n $rootScope.$broadcast('login');\r\n if (LogService.redirect) {\r\n if (LogService.redirect.action) {\r\n LogService.redirect.action(LogService.redirect.url);\r\n } else if (LogService.redirect.url) {\r\n $location.path(LogService.redirect.url);\r\n }\r\n LogService.redirect = null;\r\n } else {\r\n //$templateCache.remove('/contact?view=Contact');\r\n //$route.reload();\r\n // Notes : le système de suppression du cache qui a marché à partir du 10 janvier ne fonctionne plus depuis le 23 janvier. Pourtant aucune évolution n'a été apportée, ni au cache angular, ni au routing (hormis un override avec le même nom de route). Hack proposé : recharger la page.\r\n $window.location.href = window.location.href;\r\n }\r\n $scope.showLoader = false;\r\n $uibModalInstance.close();\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n // Delegation\r\n else if (response.status === 'WaitingForDelegation') {\r\n $scope.delegations = response.delegations;\r\n $scope.showLoader = false;\r\n }\r\n // End Delegation\r\n else {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n _.each(response.errors, function (error, key) {\r\n if (key === 'Global') {\r\n $scope.formData.errors[key] = translate.errors[error.Errors[0].ErrorMessage];\r\n }\r\n });\r\n $scope.showLoader = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n $scope.openForgotPassword = function () {\r\n LogService.email = $scope.formData.Login;\r\n $uibModalInstance.closed.then(function () {\r\n $uibModal.open({\r\n templateUrl: '/Template/Authentication/ModalForgotPassword',\r\n controller: 'forgotPasswordModalCtrl'\r\n });\r\n });\r\n $uibModalInstance.close();\r\n };\r\n\r\n }])\r\n\r\n\r\n /* @ngInject */\r\n .controller('loginModalCtrlVentePrivee', [\"$scope\", \"$rootScope\", \"$location\", \"$uibModal\", \"$uibModalInstance\", \"$route\", \"AppService\", \"LogService\", \"RoutesService\", function ($scope, $rootScope, $location, $uibModal, $uibModalInstance, $route, AppService, LogService, RoutesService) {\r\n\r\n\r\n //if ($cookies.get('cookiesVP')) {\r\n // $cookie.remove('cookiesVP');\r\n //}\r\n\r\n $scope.linkCreate = '/' + RoutesService.get().Login.url;\r\n\r\n $scope.formData = {\r\n RememberMe: false,\r\n errors: {},\r\n returnUrl: '/'\r\n };\r\n\r\n $scope.focus = function () {\r\n $scope.formData.errors.Global = null;\r\n };\r\n\r\n $scope.submit = function (event) {\r\n $(event.target).find('input').blur();\r\n $scope.showLoader = true;\r\n LogService.login($scope.formData)\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n $uibModalInstance.close();\r\n $rootScope.$broadcast('login');\r\n AppService.getParams(true)\r\n .then(function (data) {\r\n if (LogService.redirect2) {\r\n if (LogService.redirect2.url) $location.path(LogService.redirect2.url).replace();\r\n if (LogService.redirect2.action) LogService.redirect2.action();\r\n LogService.redirect2 = null;\r\n } else {\r\n $route.reload();\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n } else if (response.status === 'WaitingForDelegation') {\r\n $scope.delegations = response.delegations;\r\n $scope.showLoader = false;\r\n } else {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n _.each(response.errors, function (error, key) {\r\n if (key === 'Global') {\r\n $scope.formData.errors[key] = translate.errors[error.Errors[0].ErrorMessage];\r\n }\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n $scope.showLoader = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n $scope.openForgotPassword = function () {\r\n LogService.email = $scope.formData.Login;\r\n $uibModalInstance.closed.then(function () {\r\n $uibModal.open({\r\n templateUrl: '/Template/Authentication/ModalForgotPassword',\r\n controller: 'forgotPasswordModalCtrl'\r\n });\r\n });\r\n $uibModalInstance.close();\r\n };\r\n\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('newClientCtrl', [\"$scope\", \"HttpService\", \"AppService\", function ($scope, HttpService, AppService) {\r\n\r\n $scope.formData = {\r\n errors: {}\r\n };\r\n\r\n $scope.focus = function () {\r\n $scope.formData.errors.Global = null;\r\n };\r\n\r\n $scope.submit = function (event) {\r\n\r\n $(event.target).find('input').blur();\r\n $scope.$emit('showPageLoader', true);\r\n\r\n $scope.formData.errors = {};\r\n\r\n HttpService.post({\r\n url: '/TestMailExist',\r\n data: $scope.authCtrl.newClient\r\n })\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n $scope.showCreate();\r\n } else {\r\n $scope.$emit('showPageLoader', false);\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n _.each(response.errors, function (error, key) {\r\n if (key === 'Global') {\r\n $scope.formData.errors[key] = translate.errors[error.Errors[0].ErrorMessage];\r\n }\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n };\r\n\r\n $scope.showCreate = function () {\r\n if ($scope.authCtrl.templateCreate === '') {\r\n $scope.$emit('showPageLoader', true);\r\n $scope.authCtrl.templateCreate = '/AccountCreate';\r\n } else {\r\n $scope.$emit('showPageLoader', false);\r\n $scope.authCtrl.createOpen = true;\r\n }\r\n };\r\n\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('forgotPasswordModalCtrl', [\"$scope\", \"HttpService\", \"$uibModal\", \"$uibModalInstance\", \"AppService\", \"LogService\", function ($scope, HttpService, $uibModal, $uibModalInstance, AppService, LogService) {\r\n\r\n $scope.formData = {\r\n errors: {}\r\n };\r\n $scope.formData.Email = LogService.email;\r\n\r\n $scope.focus = function () {\r\n $scope.formData.errors.Global = null;\r\n };\r\n\r\n $scope.submit = function () {\r\n\r\n $scope.showLoader = true;\r\n\r\n $scope.formData.errors = {};\r\n\r\n HttpService.post({\r\n url: '/ForgotPassword',\r\n data: $scope.formData\r\n })\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n $uibModalInstance.closed.then(function () {\r\n $uibModal.open({\r\n templateUrl: '/Template/Authentication/ModalForgotPasswordConfirm'\r\n });\r\n });\r\n $uibModalInstance.close();\r\n } else {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n _.each(response.errors, function (error, key) {\r\n if (key === 'Global') {\r\n $scope.formData.errors[key] = translate.errors[error.Errors[0].ErrorMessage];\r\n }\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n $scope.showLoader = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n };\r\n\r\n }]);\r\n\r\n})();\r\n","/**\r\n * Account activities directive\r\n * Version 1.0\r\n * Octave\r\n */\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('directive.account-activities', [])\r\n\r\n /* @ngInject */\r\n .directive('accountActivities', function () {\r\n return {\r\n restrict: 'E',\r\n bindToController: {\r\n activitiesJson: '<',\r\n formData: '='\r\n },\r\n controllerAs: 'activitiesCtrl',\r\n /* @ngInject */\r\n controller: [\"$element\", \"$timeout\", function ($element, $timeout) {\r\n var ctrl = this;\r\n\r\n ctrl.$onInit = function () {\r\n refreshSelects();\r\n };\r\n\r\n ctrl.initActivity = function (IDActivity) {\r\n $timeout(function () {\r\n ctrl.formData.IDActivity = IDActivity.toString();\r\n\r\n ctrl.activities = _.find(ctrl.activitiesJson, {\r\n Activities: [{\r\n IDActivity: Number(ctrl.formData.IDActivity)\r\n }]\r\n });\r\n\r\n ctrl.formData.IDActivityDomain = ctrl.activities.IDActivityDomain.toString();\r\n\r\n refreshSelects();\r\n });\r\n\r\n };\r\n\r\n ctrl.domainSelected = function () {\r\n if (ctrl.formData.IDActivityDomain) {\r\n ctrl.activities = _.find(ctrl.activitiesJson, { IDActivityDomain: Number(ctrl.formData.IDActivityDomain) });\r\n refreshSelects();\r\n }\r\n };\r\n\r\n function refreshSelects() {\r\n setTimeout(function () {\r\n $element.find('select').each(function (index, el) {\r\n $(el).selectpicker('refresh');\r\n });\r\n });\r\n }\r\n }]\r\n };\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('minilogin', [])\r\n\r\n /* @ngInject */\r\n .directive('miniLogin', function () {\r\n return {\r\n restrict: 'E',\r\n bindToController: {\r\n titleLogin: '@',\r\n titleLogout: '@'\r\n },\r\n controllerAs: 'miniLoginCtrl',\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$rootScope\", \"$element\", \"$document\", \"$location\", \"$route\", \"toastr\", \"AccountService\", \"LogService\", \"AppService\", function ($scope, $rootScope, $element, $document, $location, $route, toastr, AccountService, LogService, AppService) {\r\n var ctrl = this;\r\n\r\n ctrl.links = AccountService.getLinks();\r\n\r\n update();\r\n\r\n var $body = $(document.body);\r\n $body.addClass('offcanvas');\r\n\r\n ctrl.toggle = function () {\r\n toggle();\r\n };\r\n\r\n ctrl.logout = function () {\r\n ctrl.isLogged = false;\r\n toggle();\r\n $rootScope.$broadcast('showPageLoader', true);\r\n LogService.logout()\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n update(true);\r\n toastr.success('', ctrl.titleLogout, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_authentication.tpl'\r\n }\r\n });\r\n if ($route.current && $route.current.resolve && $route.current.resolve.authorize) $location.path('/');\r\n\r\n $rootScope.$broadcast('delogUpdate');\r\n }\r\n $rootScope.$broadcast('showPageLoader', false);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n // Functions\r\n\r\n $scope.$on('userUpdate', function () {\r\n update(true);\r\n });\r\n\r\n $scope.$on('login', function () {\r\n $rootScope.$broadcast('logUpdate');\r\n update(true);\r\n toastr.success('', ctrl.titleLogin, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_authentication.tpl'\r\n }\r\n });\r\n });\r\n\r\n $scope.$on('logout', function () {\r\n ctrl.logout();\r\n });\r\n\r\n // Functions\r\n\r\n function toggle() {\r\n if ($body.hasClass('offcanvas-right')) {\r\n $body.removeClass('offcanvas-right');\r\n $document.off('click', onBodyClick);\r\n } else {\r\n $body.addClass('offcanvas-right');\r\n $document.on('click', onBodyClick);\r\n }\r\n }\r\n\r\n function onBodyClick(event) {\r\n if (!$element[0].contains(event.target)) {\r\n toggle();\r\n }\r\n }\r\n\r\n function update(refresh) {\r\n refresh = refresh || false;\r\n AppService.getParams(refresh)\r\n .then(function (params) {\r\n ctrl.isLogged = params.IsLogged ? 1 : 0;\r\n if (ctrl.isLogged) {\r\n // Delegation\r\n ctrl.visitor = params.Visitor;\r\n // End Delegation\r\n }\r\n AccountService.setManagement(ctrl);\r\n $rootScope.$broadcast('cartUpdate');\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n }]\r\n };\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('service.authentication', [])\r\n\r\n /* @ngInject */\r\n .factory('LogService', [\"$templateCache\", \"AccountService\", \"HttpService\", \"Routes\", \"DefaultLocalization\", function ($templateCache, AccountService, HttpService, Routes, DefaultLocalization) {\r\n var redirect,\r\n redirect2,\r\n email;\r\n\r\n return {\r\n login: function (data) {\r\n return HttpService.post({\r\n url: '/' + Routes.filter(function (r) { return r.Name === 'Login'; })[0][DefaultLocalization].URL,\r\n data: data\r\n })\r\n .then(function (response) {\r\n window.dataLayer = window.dataLayer || [];\r\n dataLayer.push({\r\n 'event': 'userLogged',\r\n 'userMail': data.Login\r\n });\r\n\r\n return response;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n },\r\n logout: function () {\r\n return HttpService.post({\r\n url: '/Logout',\r\n data: {}\r\n })\r\n .then(function (response) {\r\n $templateCache.remove(AccountService.getLinks().AccountUpdate);\r\n $templateCache.remove(AccountService.getLinks().AccountHome);\r\n return response;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n },\r\n redirect: redirect,\r\n redirect2: redirect2,\r\n email: email\r\n };\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.autocomplete', [])\r\n\r\n .directive('autoCompleteSearch', function () {\r\n return {\r\n restrict: 'E',\r\n scope: true,\r\n bindToController: {\r\n textAdvices: '@'\r\n },\r\n controllerAs: 'searchCtrl',\r\n /* @ngInject */\r\n controller: [\"$rootScope\", \"$element\", \"searchFinderService\", \"$location\", \"RoutesService\", function ($rootScope, $element, searchFinderService, $location, RoutesService) {\r\n\r\n // $element, $http, $location, $timeout, $sce, RoutesService\r\n\r\n var ctrl = this;\r\n\r\n ctrl.goSearch = function (str) {\r\n if (str) {\r\n var url = RoutesService.get().Search.route + '/' + encodeURI(str.split(' ').join('+'));\r\n $location.path(url);\r\n\r\n $rootScope.$broadcast('searchClose');\r\n }\r\n };\r\n\r\n ctrl.inputChangeHandler = function () {\r\n $rootScope.$broadcast('searchUpdate');\r\n };\r\n\r\n ctrl.$onInit = function () {\r\n searchFinderService.setCtrl(ctrl);\r\n };\r\n\r\n ctrl.submitSearch = function () {\r\n // console.log('submit submit' + ctrl.searchStr);\r\n\r\n /* if (ctrl.searchStr && ctrl.searchStr !== '') {\r\n var url = RoutesService.get().Search.route + '/' + encodeURI(ctrl.searchStr.split(' ').join('+'));\r\n $location.path(url);\r\n $rootScope.$broadcast('searchClose');\r\n }*/\r\n\r\n ctrl.goSearch(ctrl.searchStr);\r\n\r\n event.preventDefault();\r\n $(event.target).find('.search-query').blur();\r\n };\r\n }]\r\n };\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.searchfinder', [])\r\n\r\n /* @ngInject */\r\n .factory('searchFinderService', [\"$http\", \"$q\", function ($http, $q) {\r\n var canceler = $q.defer(),\r\n ctrl;\r\n\r\n return {\r\n setCtrl: function (value) {\r\n ctrl = value;\r\n },\r\n getCtrl: function () {\r\n return ctrl;\r\n },\r\n get: function (str, page, nbPerPage, prices, categories, facets, brands, reviews, types) {\r\n canceler.resolve('cancel');\r\n canceler = $q.defer();\r\n\r\n var filters = [];\r\n _.each(categories, function (category) {\r\n filters.push({\r\n FieldName: 'IDCatalogueTheme',\r\n FieldValue: String(category.IDCategory)\r\n });\r\n });\r\n\r\n return $http({\r\n url: '/Search/Query',\r\n method: 'POST',\r\n headers: {\r\n 'Content-type': 'application/json',\r\n 'X-Requested-With': 'jsonHttpRequest'\r\n },\r\n data: {\r\n QueryFullText: str,\r\n NbFrom: (page - 1) * nbPerPage,\r\n NbSize: nbPerPage,\r\n FiltersSelected: filters,\r\n FacetsSelected: facets,\r\n BrandsSelected: brands,\r\n ReviewsSelected: reviews,\r\n ProductTypesSelected: types,\r\n PriceRangeSelected: prices,\r\n withCatalogs: true,\r\n withFacets: false,\r\n Sort: null\r\n },\r\n timeout: canceler.promise\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n }\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .factory('SearchFinderApi', [\"$timeout\", \"searchFinderService\", \"AppService\", function ($timeout, searchFinderService, AppService) {\r\n var api = function () {\r\n this.ctrl = null;\r\n this.items = [];\r\n this.advices = [];\r\n this.filters = {};\r\n this.total = 0;\r\n this.busy = false;\r\n this.page = 0;\r\n this.search = '';\r\n this.PriceRange = {};\r\n this.CategoriesSelected = [];\r\n this.BrandsSelected = [];\r\n this.FacetsSelected = [];\r\n this.ReviewsSelected = [];\r\n this.ProductTypesSelected = [];\r\n this.getSearch = function () {\r\n return this.search;\r\n };\r\n };\r\n\r\n api.prototype.nextPage = function () {\r\n var _this = this;\r\n if ((!this.update && this.busy) || (!this.update && this.page === this.maxPage)) return;\r\n\r\n this.busy = true;\r\n\r\n var facets = _.filter(this.FacetsSelected, function (item) {\r\n return item.Values.length;\r\n });\r\n\r\n searchFinderService.get(this.search, ++this.page, this.nbPerPage, this.PriceRange, this.CategoriesSelected, facets, this.BrandsSelected, this.ReviewsSelected, this.ProductTypesSelected)\r\n .then(function (data) {\r\n if (_this.update) {\r\n _this.items = [];\r\n _this.advices = [];\r\n }\r\n $timeout(function () {\r\n _this.items = _this.items.concat(_.filter(data.products, { KeyWebAspect: 'Default' }));\r\n _this.advices = _this.ctrl.device.xxs ? [] : _this.advices.concat(_.filter(data.products, { KeyWebAspect: 'Advice' }));\r\n\r\n _.each(_this.items, function (item) {\r\n item.isWithoutPrice = _.filter(item.Themes, { 'KeyTheme': 'WithOutPrice' }).length > 0;\r\n });\r\n\r\n if (!_this.FacetsSelected.length) {\r\n _.each(data.facets, function (item) {\r\n _this.FacetsSelected.push({ Id: item.Id, Name: item.Name, Key: item.Key, Values: [] });\r\n });\r\n }\r\n _this.setDataFilters(data)\r\n .then(function (filters) {\r\n _this.filters = filters;\r\n _this.setSelectedFilters();\r\n });\r\n\r\n _this.total = data.total;\r\n _this.maxPage = Math.ceil(_this.total / _this.nbPerPage) ? Math.ceil(_this.total / _this.nbPerPage) : 1;\r\n _this.busy = false;\r\n _this.update = false;\r\n _this.searchCtrl.searching = false;\r\n\r\n\r\n _this.ctrl.updateSearchApi();\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n api.prototype.setSelectedFilters = function () {\r\n var _this = this;\r\n\r\n _this.filters.categories.open = false;\r\n _.each(_this.filters.categories.items, function (item) {\r\n item.Selected = typeof _.find(_this.CategoriesSelected, { IDCategory: item.IDCategory }) != 'undefined';\r\n if (item.Selected) _this.filters.categories.open = true;\r\n });\r\n\r\n _this.filters.brands.open = false;\r\n _.each(_this.filters.brands.items, function (item) {\r\n item.selected = typeof _.find(_this.BrandsSelected, { Id: item.Id }) != 'undefined';\r\n if (item.selected) _this.filters.brands.open = true;\r\n });\r\n\r\n _.each(_this.filters.facets, function (facet) {\r\n facet.open = false;\r\n var sel = _.find(_this.FacetsSelected, { Id: facet.Id });\r\n _.each(facet.Values, function (itemValue) {\r\n itemValue.selected = _.includes(sel.Values, itemValue.Value);\r\n if (itemValue.selected) facet.open = true;\r\n // itemValue.selected = facet.isColor ? !itemValue.selected : itemValue.selected;\r\n });\r\n });\r\n\r\n _this.filters.reviews.open = false;\r\n _.each(_this.filters.reviews.items, function (item) {\r\n item.selected = _.includes(_this.ReviewsSelected, String(item.Name));\r\n if (item.selected) _this.filters.reviews.open = true;\r\n });\r\n\r\n _this.filters.types.open = false;\r\n _.each(_this.filters.types.items, function (item) {\r\n item.selected = typeof _.find(_this.ProductTypesSelected, { Id: item.Id }) != 'undefined';\r\n if (item.selected) _this.filters.types.open = true;\r\n });\r\n\r\n };\r\n\r\n api.prototype.selectPrices = function (min, max) {\r\n var _this = this;\r\n\r\n _this.PriceRange = {};\r\n _this.filters.prices.selectedMinPrice = min >= _this.filters.prices.minPrice ? min : _this.filters.prices.minPrice;\r\n _this.filters.prices.selectedMaxPrice = max <= _this.filters.prices.maxPrice ? max : _this.filters.prices.maxPrice;\r\n\r\n if (min !== _this.filters.prices.minPrice || max !== _this.filters.prices.maxPrice) {\r\n _this.PriceRange = {\r\n Gte: min,\r\n Lte: max\r\n };\r\n }\r\n };\r\n\r\n api.prototype.setDataFilters = function (data) {\r\n var _this = this;\r\n return AppService.getTranslate()\r\n .then(function (translate) {\r\n var filters = {};\r\n\r\n filters.prices = {\r\n open: false,\r\n minPrice: data.prices.minPrice,\r\n maxPrice: data.prices.maxPrice,\r\n options: {},\r\n selectedMinPrice: null,\r\n selectedMaxPrice: null\r\n };\r\n filters.pricesActive = false;\r\n if (filters.prices.minPrice !== filters.prices.maxPrice) {\r\n filters.prices.minPrice = Math.floor(filters.prices.minPrice / 10) * 10;\r\n filters.prices.maxPrice = Math.ceil(filters.prices.maxPrice / 10) * 10;\r\n\r\n if (typeof _this.PriceRange.Gte === 'undefined') {\r\n filters.prices.selectedMinPrice = filters.prices.minPrice;\r\n filters.prices.selectedMaxPrice = filters.prices.maxPrice;\r\n } else {\r\n filters.prices.selectedMinPrice = _this.PriceRange.Gte;\r\n filters.prices.selectedMaxPrice = _this.PriceRange.Lte;\r\n }\r\n\r\n if (filters.prices.selectedMinPrice < filters.prices.minPrice) {\r\n filters.prices.selectedMinPrice = filters.prices.minPrice;\r\n }\r\n if (filters.prices.selectedMaxPrice > filters.prices.maxPrice) {\r\n filters.prices.selectedMaxPrice = filters.prices.maxPrice;\r\n }\r\n\r\n var startMin,\r\n startMax;\r\n filters.prices.options = {\r\n floor: filters.prices.minPrice,\r\n ceil: filters.prices.maxPrice,\r\n step: 10,\r\n minRange: 10,\r\n translate: function (value) {\r\n return value + ' €';\r\n },\r\n onStart: function () {\r\n startMin = filters.prices.selectedMinPrice;\r\n startMax = filters.prices.selectedMaxPrice;\r\n },\r\n // eslint-disable-next-line\r\n onEnd: function (sliderId, min, max) {\r\n if (min !== startMin || max !== startMax) {\r\n _this.selectPrices(min, max);\r\n _this.update = true;\r\n _this.page = 0;\r\n _this.nextPage();\r\n }\r\n startMin = null;\r\n startMax = null;\r\n }\r\n };\r\n filters.pricesActive = true;\r\n }\r\n\r\n filters.categories = {\r\n open: false,\r\n items: data.categories\r\n };\r\n\r\n filters.brands = {\r\n open: false,\r\n items: data.brands\r\n };\r\n\r\n filters.facets = data.facets;\r\n _.each(filters.facets, function (facet) {\r\n facet.open = false;\r\n _.each(facet.Values, function (itemValue) {\r\n itemValue.checkValue = itemValue.Value;\r\n itemValue.selectedValue = itemValue.Value;\r\n itemValue.ref = _.camelCase(itemValue.Value);\r\n itemValue.selected = false;\r\n if (facet.Name.indexOf('Couleur') !== -1) {\r\n facet.isColor = true;\r\n itemValue.colorImg = '/img/colors/21x21/' + _.kebabCase(itemValue.Value) + '.png';\r\n }\r\n if (facet.Type === 'Vrai/Faux') {\r\n itemValue.checkValue = parseInt(itemValue.Value) === 0 ? translate.messages.No : translate.messages.Yes;\r\n itemValue.selectedValue = parseInt(itemValue.Value) === 0 ? facet.Name + translate.messages.Colon + ' ' + translate.messages.No : facet.Name + translate.messages.Colon + ' ' + translate.messages.Yes;\r\n itemValue.ref = _.camelCase(itemValue.checkValue);\r\n }\r\n });\r\n });\r\n\r\n filters.reviews = {\r\n open: false,\r\n items: _.filter(data.reviews, function (item) {\r\n return item.Name > 0;\r\n })\r\n };\r\n\r\n filters.types = {\r\n open: false,\r\n items: data.types\r\n };\r\n\r\n return filters;\r\n })\r\n .catch(function (response) {\r\n console.error(response);\r\n });\r\n };\r\n\r\n return api;\r\n }])\r\n\r\n /* @ngInject */\r\n .component('searchFinder', {\r\n bindings: {\r\n device: '<',\r\n nbPerPage: '<'\r\n },\r\n templateUrl: '/Template/Autocomplete/SearchFinder',\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$element\", \"$timeout\", \"$location\", \"WindowEventsService\", \"productsGridService\", \"searchFinderService\", \"SearchFinderApi\", function ($scope, $element, $timeout, $location, WindowEventsService, productsGridService, searchFinderService, SearchFinderApi) {\r\n var ctrl = this;\r\n\r\n ctrl.$onInit = function () {\r\n ctrl.api = new SearchFinderApi();\r\n ctrl.api.ctrl = ctrl;\r\n ctrl.api.nbPerPage = ctrl.nbPerPage;\r\n ctrl.api.searchCtrl = searchFinderService.getCtrl();\r\n resize();\r\n };\r\n\r\n ctrl.close = function () {\r\n clearResults();\r\n };\r\n\r\n ctrl.loaded = function () {\r\n $timeout(function () {\r\n productsGridService.resizeGrid('searchGrid', ctrl.device.size, !ctrl.api.update);\r\n });\r\n };\r\n\r\n ctrl.setCategory = function (item) {\r\n if (item.Selected) {\r\n ctrl.api.CategoriesSelected.push({ IDCategory: item.IDCategory });\r\n } else {\r\n _.pullAllBy(ctrl.api.CategoriesSelected, [{ IDCategory: item.IDCategory }], 'IDCategory');\r\n }\r\n ctrl.api.setSelectedFilters();\r\n updateSearch();\r\n };\r\n\r\n ctrl.setFacet = function (item, itemValue) {\r\n var facet = _.find(ctrl.api.FacetsSelected, { Id: item.Id });\r\n\r\n if (item.isColor) {\r\n itemValue.selected = !itemValue.selected;\r\n }\r\n if (itemValue.selected) {\r\n facet.Values.push(itemValue.Value);\r\n } else {\r\n _.pull(facet.Values, itemValue.Value);\r\n }\r\n ctrl.api.setSelectedFilters();\r\n updateSearch();\r\n };\r\n ctrl.setBrand = function (item) {\r\n selectFilter(item, ctrl.api.BrandsSelected, false);\r\n };\r\n ctrl.setReview = function (item) {\r\n selectFilter(item, ctrl.api.ReviewsSelected, true);\r\n };\r\n ctrl.setType = function (item) {\r\n selectFilter(item, ctrl.api.ProductTypesSelected, false);\r\n };\r\n\r\n ctrl.openItem = function (item) {\r\n $location.path(item.URL + '/es/' + ctrl.api.searchCtrl.searchStr.split(' ').join('+'));\r\n clearResults();\r\n console.log('redirection');\r\n };\r\n\r\n ctrl.updateSearchApi = function () {\r\n var $body = $(document.body);\r\n if (ctrl.api.total > 0) {\r\n $body.addClass('fixed-search');\r\n if (ctrl.device.mobile && ctrl.device.isTouch) {\r\n $body.css('top', '-' + ($('#header').height() - $('.auto-complete-search').height()) + 'px');\r\n resize();\r\n setTimeout(resize, 800);\r\n }\r\n } else {\r\n $body.removeClass('fixed-search').removeAttr('style');\r\n }\r\n };\r\n\r\n // Events\r\n\r\n $scope.$on('searchClose', function () {\r\n clearResults();\r\n });\r\n\r\n $scope.$on('searchUpdate', function () {\r\n if (ctrl.api.searchCtrl.searchStr === '') {\r\n clearResults();\r\n return;\r\n }\r\n if (ctrl.api.searchCtrl.searchStr.length < 3) return;\r\n ctrl.api.PriceRange = {};\r\n ctrl.api.CategoriesSelected = [];\r\n ctrl.api.BrandsSelected = [];\r\n ctrl.api.FacetsSelected = [];\r\n ctrl.api.ReviewsSelected = [];\r\n ctrl.api.ProductTypesSelected = [];\r\n ctrl.api.search = ctrl.api.searchCtrl.searchStr;\r\n ctrl.api.searchCtrl.searching = true;\r\n updateSearch();\r\n $element.addClass('active');\r\n });\r\n\r\n $scope.$on('topUpdate', resize);\r\n\r\n WindowEventsService.listen(true, 'resize', resize, 500);\r\n\r\n $scope.$on('$destroy', function () {\r\n WindowEventsService.listen(false, 'resize', resize);\r\n });\r\n\r\n // Functions\r\n\r\n function selectFilter(item, target, isReview) {\r\n if (isReview) {\r\n if (item.selected) {\r\n target.push(String(item.Name));\r\n } else {\r\n _.pull(target, String(item.Name));\r\n }\r\n } else if (item.selected) {\r\n target.push({ Id: item.Id });\r\n } else {\r\n _.pullAllBy(target, [{ Id: item.Id }], 'Id');\r\n }\r\n ctrl.api.setSelectedFilters();\r\n updateSearch();\r\n }\r\n function updateSearch() {\r\n ctrl.api.update = true;\r\n ctrl.api.page = 0;\r\n ctrl.api.nextPage();\r\n }\r\n\r\n function resize() {\r\n var element = $('#header'),\r\n // pos = element.offset().top + element.height(),\r\n pos = element.height(),\r\n height = 'calc(100vh - ' + pos + 'px)';\r\n\r\n pos = ctrl.device.desktop ? pos - 4 : pos;\r\n if (ctrl.device.mobile && ctrl.device.isTouch) {\r\n pos = $('#header').height();\r\n height = ($(document.body).height() - $('.auto-complete-search').height()) + 'px';\r\n }\r\n $element.css({\r\n top: pos,\r\n height: height\r\n });\r\n\r\n $timeout(function () {\r\n productsGridService.resizeGrid('searchGrid', ctrl.device.size, false);\r\n });\r\n\r\n }\r\n function clearResults() {\r\n ctrl.api.search = '';\r\n ctrl.api.total = 0;\r\n ctrl.api.searchCtrl.searchStr = '';\r\n ctrl.api.searchCtrl.searching = false;\r\n $element.removeClass('active');\r\n ctrl.updateSearchApi();\r\n }\r\n\r\n }]\r\n })\r\n\r\n /* @ngInject */\r\n .filter('matchstring', [\"$sce\", function ($sce) {\r\n return function (value, str) {\r\n if (!value) { return false; }\r\n if (!value.match || !value.replace) { value = value.toString(); }\r\n var matches, reg;\r\n\r\n var words = str.split(' '),\r\n tmp;\r\n _.each(words, function (word) {\r\n tmp = word.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n if (tmp.length > 2) {\r\n reg = new RegExp(tmp, 'ig');\r\n matches = value.match(reg);\r\n if (matches) {\r\n value = value.replace(reg, '##' + matches[0] + '#/#');\r\n }\r\n }\r\n });\r\n\r\n var open = new RegExp('##', 'g'),\r\n close = new RegExp('#/#', 'g');\r\n value = value.replace(open, '').replace(close, '');\r\n return $sce.trustAsHtml(value).valueOf();\r\n };\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.cart.confirmation', [])\r\n\r\n .directive('cartConfirmation', function () {\r\n return {\r\n restrict: 'A',\r\n controllerAs: 'cartCtrl',\r\n /* @ngInject */\r\n controller: [\"$rootScope\", function ($rootScope) {\r\n var ctrl = this;\r\n\r\n ctrl.$onInit = function () {\r\n $rootScope.$broadcast('userUpdate');\r\n };\r\n\r\n }]\r\n };\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.mini-cart', [])\r\n\r\n .directive('miniCart', function () {\r\n return {\r\n restrict: 'E',\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$element\", \"AppService\", \"RoutesService\", \"ModalService\", function ($scope, $element, AppService, RoutesService, ModalService) {\r\n var ctrl = this;\r\n\r\n // Translate\r\n var tplTranslate = {};\r\n $element.children('.translate').children().each(function () {\r\n var $this = $(this);\r\n tplTranslate[$this.attr('key')] = $this.html();\r\n });\r\n\r\n getCart();\r\n\r\n ctrl.emptyCart = function () {\r\n ModalService.show(\r\n '/Template/Cart/ModalClearCartConfirm',\r\n {},\r\n null,\r\n 'clearCartConfirmModalCtrl'\r\n );\r\n };\r\n\r\n ctrl.remove = function (line) {\r\n ModalService.show(\r\n '/Template/Cart/ModalDeleteConfirm',\r\n {\r\n action: function () {\r\n AppService.deleteLine(line.IDLine, line.Product.Designation, line.Product.IDPicture, tplTranslate.titleDeleteOk);\r\n }\r\n },\r\n null,\r\n 'deleteConfirmModalCtrl'\r\n );\r\n };\r\n\r\n $scope.$on('cartUpdate', function () {\r\n getCart();\r\n });\r\n\r\n function getCart() {\r\n AppService.getParams()\r\n .then(function (data) {\r\n ctrl.hasCart = data.HasCart;\r\n ctrl.cartLink = !ctrl.hasCart ? '' : '/' + RoutesService.getUrlByName('Cart');\r\n ctrl.count = 0;\r\n if (ctrl.hasCart) {\r\n ctrl.data = data.Cart;\r\n var count = 0;\r\n _.each(ctrl.data.Products, function (line) {\r\n count += line.Quantity;\r\n });\r\n ctrl.count = count;\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n }],\r\n controllerAs: 'miniCartCtrl'\r\n };\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('directive.steps', [])\r\n\r\n /* @ngInject */\r\n .directive('stepsCart', function () {\r\n return {\r\n restrict: 'E',\r\n bindToController: {\r\n data: ' 0 && !ctrl.payment) {\r\n var _routes = RoutesService.get();\r\n $location.path(_routes.CartPayment.url);\r\n }\r\n }\r\n }\r\n };\r\n this.toggleCart = function (ctrl) {\r\n if (!ctrl.showCart) {\r\n ctrl.showCartProducts = true;\r\n $timeout(function () {\r\n ctrl.showCart = true;\r\n }, 100);\r\n } else {\r\n ctrl.showCart = false;\r\n $timeout(function () {\r\n ctrl.showCartProducts = false;\r\n }, 350);\r\n }\r\n var time = new Date().getTime();\r\n var inter = setInterval(function () {\r\n $(window).trigger('scroll');\r\n var ntime = new Date().getTime();\r\n if (ntime > time + 700) {\r\n clearInterval(inter);\r\n }\r\n }, 50);\r\n };\r\n this.toggleUpdate = function (ctrl, model) {\r\n ctrl[model] = !ctrl[model];\r\n var time = new Date().getTime();\r\n var inter = setInterval(function () {\r\n $(window).trigger('scroll');\r\n var ntime = new Date().getTime();\r\n if (ntime > time + 700) {\r\n clearInterval(inter);\r\n }\r\n }, 50);\r\n };\r\n this.submitCode = function (ctrl) {\r\n ctrl.codeLoading = true;\r\n HttpService.post({\r\n url: '/Cart/UsePromoCode',\r\n data: {\r\n PromoCode: String(ctrl.formCode.data.code)\r\n }\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n ctrl.formCode.data.code = null;\r\n ctrl.openCode = false;\r\n _this.update(ctrl, response.results);\r\n toastr.success('', translate.messages.CodeOK, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n } else {\r\n var title;\r\n var message = '';\r\n if (response.status.Message.indexOf('identification') !== -1) {\r\n title = translate.messages.CodePersonal;\r\n } else if (response.status.Message.indexOf('a été entièrement utilisé') !== -1) {\r\n title = translate.messages.CodeAlreadyUsed;\r\n } else {\r\n switch (response.status.Message) {\r\n case 'Ce code est Invalide.':\r\n title = translate.messages.CodeInvalid;\r\n break;\r\n case 'Ce code promo a déjà été utilisé':\r\n title = translate.messages.CodeAlreadyUsed;\r\n break;\r\n default:\r\n title = translate.errors.ErrorHasOccurred;\r\n message = translate.errors.TryLater;\r\n }\r\n }\r\n\r\n toastr.warning(message, title, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n ctrl.codeLoading = false;\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n this.cancelCode = function (ctrl, code) {\r\n ctrl.cancelCodeLoading = true;\r\n HttpService.post({\r\n url: '/Cart/RemovePromoCode',\r\n data: {\r\n PromoCode: code\r\n }\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n _this.update(ctrl, response.results);\r\n toastr.success('', translate.messages.CancelCodeOK, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n ctrl.cancelCodeLoading = false;\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n this.addLoyaltyPoint = function (ctrl) {\r\n ctrl.loyaltyLoading = true;\r\n HttpService.post({\r\n url: '/Cart/UseLoyaltyPoint'\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n _this.update(ctrl, response.results);\r\n toastr.success('', translate.messages.AddCouponOK, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n } else {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n ctrl.loyaltyLoading = false;\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n this.cancelLoyaltyPoint = function (ctrl) {\r\n ctrl.cancelLoyaltyLoading = true;\r\n HttpService.post({\r\n url: '/Cart/RemoveLoyaltyPoint'\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n _this.update(ctrl, response.results);\r\n toastr.success('', translate.messages.CancelCouponOK, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n } else {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n ctrl.cancelLoyaltyLoading = false;\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n this.useCredit = function (ctrl, id) {\r\n ctrl.creditsLoading = true;\r\n HttpService.post({\r\n url: '/Cart/Credit/Use',\r\n data: {\r\n IDCredit: id\r\n }\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n _this.update(ctrl, response.results);\r\n toastr.success('', translate.messages.AddCreditOK, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n } else {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n ctrl.creditsLoading = false;\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n this.cancelCredit = function (ctrl, id) {\r\n ctrl.cancelCreditLoading = true;\r\n HttpService.post({\r\n url: '/Cart/Credit/Cancel',\r\n data: {\r\n IDCredit: id\r\n }\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n _this.update(ctrl, response.results);\r\n toastr.success('', translate.messages.CancelCreditOK, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n } else {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n ctrl.cancelCreditLoading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n this.cancelGiftCard = function (ctrl, code) {\r\n ctrl.cancelGiftCardLoading = true;\r\n HttpService.post({\r\n url: '/Cart/RemoveGiftCard',\r\n data: {\r\n PromoCode: code\r\n }\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n _this.update(ctrl, response.results);\r\n toastr.success('', translate.messages.CancelCodeOK, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n ctrl.cancelGiftCardLoading = false;\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n this.saveComment = function (comment) {\r\n commentCanceler.resolve('cancel');\r\n commentCanceler = $q.defer();\r\n return $http({\r\n method: 'POST',\r\n url: '/Cart/SetComment',\r\n headers: {\r\n 'Content-type': 'application/json',\r\n 'X-Requested-With': 'jsonHttpRequest'\r\n },\r\n data: {\r\n Comment: comment\r\n },\r\n timeout: commentCanceler.promise\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n this.saveGift = function (value, comment) {\r\n giftCanceler.resolve('cancel');\r\n giftCanceler = $q.defer();\r\n return $http({\r\n method: 'POST',\r\n url: '/Cart/SetIsGift',\r\n headers: {\r\n 'Content-type': 'application/json',\r\n 'X-Requested-With': 'jsonHttpRequest'\r\n },\r\n data: {\r\n IsGift: value,\r\n GiftComment: comment\r\n },\r\n timeout: giftCanceler.promise\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n this.getProduct = function (url) {\r\n return HttpService.get({\r\n url: url,\r\n cache: true\r\n })\r\n .then(function (response) {\r\n return response;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n this.stepsCartCtrl = null;\r\n this.stepLogHide = null;\r\n this.setStepsCartCtrl = function (ctrl) {\r\n _this.stepsCartCtrl = ctrl;\r\n };\r\n this.updateStepsCart = function (ctrl) {\r\n if (_this.stepLogHide === null) {\r\n _this.stepLogHide = ctrl.isLogged ? true : false;\r\n }\r\n _this.stepsCartCtrl.steps[1].hide = _this.stepLogHide;\r\n\r\n var hide = true;\r\n _.each(ctrl.cart.Products, function (line) {\r\n if (!line.Product.IsNumeric) {\r\n hide = false;\r\n return false;\r\n }\r\n });\r\n ctrl.isNumericCart = hide;\r\n _this.stepsCartCtrl.steps[2].hide = hide;\r\n\r\n if (ctrl.step !== 4) {\r\n _this.stepsCartCtrl.steps[3].hide = ctrl.cart.RestToPay === 0 ? true : false;\r\n }\r\n _this.stepsCartCtrl.update(ctrl.step);\r\n };\r\n\r\n return {\r\n update: this.update,\r\n toggleCart: this.toggleCart,\r\n toggleUpdate: this.toggleUpdate,\r\n submitCode: this.submitCode,\r\n cancelCode: this.cancelCode,\r\n addLoyaltyPoint: this.addLoyaltyPoint,\r\n cancelLoyaltyPoint: this.cancelLoyaltyPoint,\r\n useCredit: this.useCredit,\r\n cancelCredit: this.cancelCredit,\r\n cancelGiftCard: this.cancelGiftCard,\r\n saveComment: this.saveComment,\r\n saveGift: this.saveGift,\r\n getProduct: this.getProduct,\r\n setStepsCartCtrl: this.setStepsCartCtrl,\r\n updateStepsCart: this.updateStepsCart\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .factory('ShippingCacheService', [\"$cacheFactory\", function ($cacheFactory) {\r\n var cache = $cacheFactory('shippingCache');\r\n return {\r\n set: function (key, obj) {\r\n cache.put(key, obj);\r\n },\r\n get: function (key) {\r\n return cache.get(key);\r\n }\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .factory('ShippingService', [\"HttpService\", \"$http\", \"$q\", \"ShippingCacheService\", function (HttpService, $http, $q, ShippingCacheService) {\r\n var canceler = $q.defer();\r\n return {\r\n getList: function () {\r\n return HttpService.get({\r\n url: '/Shipping/List',\r\n cache: false\r\n })\r\n .then(function (response) {\r\n return response;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n },\r\n getPickUpPoints: function (key, gps) {\r\n\r\n canceler.resolve('cancel');\r\n canceler = $q.defer();\r\n\r\n return $http({\r\n method: 'POST',\r\n url: '/Shipping/PickUpPoint',\r\n headers: {\r\n 'Content-type': 'application/json',\r\n 'X-Requested-With': 'jsonHttpRequest'\r\n },\r\n data: {\r\n key: key,\r\n shippingCoordinate: gps\r\n },\r\n timeout: canceler.promise\r\n })\r\n .then(function (response) {\r\n if (response.data.status === 'OK') {\r\n ShippingCacheService.set(key + '|' + gps.Latitude + '|' + gps.Longitude, response.data.results);\r\n return response.data.results;\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n },\r\n cancelGetPickUpPoints: function () {\r\n if (canceler && canceler.resolve) {\r\n canceler.resolve('cancel');\r\n }\r\n },\r\n selectShipping: function (id, pickup) {\r\n return HttpService.post({\r\n url: '/Shipping/Select',\r\n data: {\r\n idShippingGridValue: id,\r\n idPickUpPoint: pickup\r\n }\r\n })\r\n .then(function (response) {\r\n return response;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .factory('PaymentService', [\"HttpService\", function (HttpService) {\r\n return {\r\n getList: function () {\r\n return HttpService.get({\r\n url: '/Payment/List',\r\n cache: false\r\n })\r\n .then(function (response) {\r\n return response;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n },\r\n selectPayment: function (item) {\r\n return HttpService.post({\r\n url: '/Payment/Select',\r\n data: {\r\n paymentMethod: {\r\n IDPaymentMethod: item.IDPaymentMethod,\r\n Key: item.Key,\r\n Designation: item.Designation,\r\n Description: item.Description,\r\n Selected: item.Selected\r\n }\r\n }\r\n })\r\n .then(function (response) {\r\n return response;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.cart.shipping', ['service.gmap'])\r\n\r\n .directive('cartShipping', function () {\r\n return {\r\n restrict: 'A',\r\n bindToController: {\r\n device: '<',\r\n step: '<'\r\n },\r\n controllerAs: 'cartCtrl',\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$rootScope\", \"$element\", \"$timeout\", \"$location\", \"$q\", \"AppService\", \"CartService\", \"HttpService\", \"ModalService\", \"RoutesService\", \"AccountService\", \"ShippingService\", \"ShippingCacheService\", \"GMaps\", \"angulargmContainer\", \"smoothScroll\", \"toastr\", function ($scope, $rootScope, $element, $timeout, $location, $q, AppService, CartService, HttpService, ModalService, RoutesService, AccountService, ShippingService, ShippingCacheService, GMaps, angulargmContainer, smoothScroll, toastr) {\r\n var ctrl = this;\r\n\r\n var mapListerner,\r\n markerClusterer;\r\n\r\n // Translate\r\n var tplTranslate = {};\r\n $element.children('.translate').children().each(function () {\r\n var $this = $(this);\r\n tplTranslate[$this.attr('key')] = $this.html();\r\n });\r\n\r\n ctrl.NextEnabled = false;\r\n ctrl.NextTooltip = tplTranslate.ShippingChoice;\r\n\r\n getCart();\r\n\r\n // Cart Aside\r\n ctrl.toggleCart = function () {\r\n CartService.toggleCart(ctrl);\r\n };\r\n ctrl.toggleUpdate = function (model) {\r\n CartService.toggleUpdate(ctrl, model);\r\n };\r\n ctrl.submitCode = function (event) {\r\n if (String(ctrl.formCode.data.code) === '') return;\r\n $(event.target).find('.form-control').blur();\r\n CartService.submitCode(ctrl);\r\n };\r\n ctrl.cancelCode = function (code) {\r\n CartService.cancelCode(ctrl, code);\r\n };\r\n ctrl.addLoyaltyPoint = function () {\r\n CartService.addLoyaltyPoint(ctrl);\r\n };\r\n ctrl.cancelLoyaltyPoint = function () {\r\n CartService.cancelLoyaltyPoint(ctrl);\r\n };\r\n ctrl.useCredit = function (id) {\r\n CartService.useCredit(ctrl, id);\r\n };\r\n ctrl.cancelCredit = function (id) {\r\n CartService.cancelCredit(ctrl, id);\r\n };\r\n ctrl.cancelGiftCard = function (code) {\r\n CartService.cancelGiftCard(ctrl, code);\r\n };\r\n // End Cart Aside\r\n\r\n ctrl.selectItem = function (item, autoSelect) {\r\n if (item.Selected && !autoSelect) return;\r\n\r\n autoSelect = autoSelect || false;\r\n\r\n ShippingService.cancelGetPickUpPoints();\r\n\r\n ctrl.NextEnabled = true;\r\n ctrl.NextTooltip = '';\r\n\r\n _.each(ctrl.shipping.shippingList, function (shipping) {\r\n shipping.Selected = false;\r\n shipping.showMap = false;\r\n shipping.showDriveMap = false;\r\n shipping.showMobilePhone = false;\r\n shipping.loading = false;\r\n $timeout(function () {\r\n shipping.gmap = '';\r\n }, 350);\r\n });\r\n item.Selected = true;\r\n ctrl.itemSelected = { item: item };\r\n checkEnabled();\r\n\r\n if (!autoSelect) selectShipping(item.IDShippingGridValue);\r\n\r\n if (item.PickUp) {\r\n ctrl.ShowPointsList = true;\r\n ctrl.ShowPointsMap = ctrl.device.mobile ? false : true;\r\n ctrl.pointInfos = null;\r\n item.btnAction = tplTranslate.ChoisirUnAutrePoint;\r\n\r\n var card = ctrl.shipping.userShippingCard;\r\n card.fullAddress = card.Address +\r\n (card.AddressLocality !== '' ? ' ' + card.AddressLocality : '') +\r\n ' ' + card.PostCode +\r\n ' ' + card.City +\r\n ' ' + card.Country.Designation;\r\n item.addressSearch = card.fullAddress;\r\n if (!autoSelect || !item.Address) {\r\n searchPickUpPoints(item, card.fullAddress, card);\r\n if (ctrl.mobileForm && !ctrl.mobileForm.$valid) {\r\n item.showMobilePhone = true;\r\n var $input = $('#mobilePhone_' + item.IDShippingGridValue);\r\n $input.focus();\r\n setTimeout(function () {\r\n $input.blur();\r\n }, 100);\r\n checkEnabled();\r\n }\r\n } else {\r\n ctrl.selectPickUpPoint(null, item, null, true);\r\n }\r\n } else if (item.Key !== 'ENLEVEMENT') {\r\n item.btnAction = tplTranslate.ChoisirUneAutreAdresse;\r\n }\r\n\r\n if (!autoSelect) {\r\n setTimeout(function () {\r\n smoothScroll(document.getElementById('shippingItem_' + item.IDShippingGridValue), { offset: 20 });\r\n }, 550);\r\n }\r\n };\r\n\r\n ctrl.setShowPointsList = function (value) {\r\n ctrl.ShowPointsList = value;\r\n };\r\n\r\n ctrl.newSearch = function (event) {\r\n if (ctrl.itemSelected.item.addressSearch === '') return;\r\n\r\n if (typeof event === 'undefined') {\r\n searchPickUpPoints(ctrl.itemSelected.item, ctrl.itemSelected.item.addressSearch);\r\n } else if (event.which === 13) {\r\n event.preventDefault();\r\n $(event.target).blur();\r\n searchPickUpPoints(ctrl.itemSelected.item, ctrl.itemSelected.item.addressSearch);\r\n }\r\n };\r\n\r\n ctrl.showPickUpPoint = function (item, point, marker) {\r\n point = point || _.find(item.pickUpPoints, { Id: marker.id });\r\n marker = marker || _.find(item.markers, { id: point.Id });\r\n\r\n if (ctrl.pickUpPointsSelected) {\r\n ctrl.pickUpPointsSelected.selected = false;\r\n }\r\n ctrl.pickUpPointsSelected = point;\r\n ctrl.pickUpPointsSelected.selected = true;\r\n\r\n scrollToPoint(marker.id);\r\n\r\n ctrl.itemSelected.item = item;\r\n ctrl.itemSelected.item.Address = point;\r\n ctrl.itemSelected.item.Address.Country = ctrl.itemSelected.item.Address.Country.toUpperCase();\r\n\r\n if (ctrl.markerSelected) {\r\n ctrl.markerSelected.selected = false;\r\n }\r\n ctrl.markerSelected = marker;\r\n ctrl.markerSelected.selected = true;\r\n $scope.$broadcast('gmMarkersUpdate', 'item.markers');\r\n\r\n if (point.OpeningHours.Monday.AM === undefined) {\r\n point.hasSchedule = true;\r\n _.each(_.filter(point.OpeningHours, function (o) {\r\n return angular.isObject(o);\r\n }), function (day) {\r\n if (day.OpeningAM === '0000' && day.ClosingAM === '0000' && day.OpeningPM === '0000' && day.ClosingPM === '0000') {\r\n day.AM = tplTranslate.Ferme;\r\n day.PM = '';\r\n } else if (day.OpeningPM === '0000' && day.ClosingPM === '0000' && Number(day.ClosingAM) > 1300) {\r\n day.AM = day.OpeningAM.slice(0, 2) + 'h' + day.OpeningAM.slice(2);\r\n day.PM = day.ClosingAM.slice(0, 2) + 'h' + day.ClosingAM.slice(2);\r\n } else {\r\n day.AM = day.OpeningAM.slice(0, 2) + 'h' + day.OpeningAM.slice(2) + ' - ' + day.ClosingAM.slice(0, 2) + 'h' + day.ClosingAM.slice(2);\r\n if (day.OpeningPM !== '0000' && day.ClosingPM !== '0000') {\r\n day.PM = day.OpeningPM.slice(0, 2) + 'h' + day.OpeningPM.slice(2) + ' - ' + day.ClosingPM.slice(0, 2) + 'h' + day.ClosingPM.slice(2);\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (ctrl.device.mobile) {\r\n ctrl.pointInfos = point;\r\n }\r\n\r\n var gmapPromise = angulargmContainer.getMapPromise('map_' + item.IDShippingGridValue);\r\n gmapPromise.then(function (map) {\r\n setTimeout(function () {\r\n\r\n google.maps.event.removeListener(mapListerner);\r\n\r\n map.panTo({ lat: marker.lat, lng: marker.lng });\r\n\r\n if (!ctrl.device.desktop) {\r\n var dif = ($('#map_' + item.IDShippingGridValue).height() / 2) - $('#pointInfos').outerHeight() - 45;\r\n map.panBy(0, dif);\r\n\r\n setTimeout(function () {\r\n mapListerner = map.addListener('bounds_changed', function () {\r\n ctrl.pointInfos = null;\r\n });\r\n }, 200);\r\n }\r\n\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n };\r\n\r\n ctrl.closePointInfo = function () {\r\n ctrl.pointInfos = null;\r\n };\r\n\r\n ctrl.selectPickUpPoint = function (event, item, point, autoSelect) {\r\n autoSelect = autoSelect || false;\r\n if (event !== null) event.stopPropagation();\r\n\r\n if (!autoSelect) {\r\n selectShipping(item.IDShippingGridValue, point.Id);\r\n setTimeout(function () {\r\n smoothScroll(document.getElementById('shippingItem_' + item.IDShippingGridValue), { offset: 20 });\r\n }, 550);\r\n }\r\n\r\n item.showMap = false;\r\n item.showMobilePhone = true;\r\n $timeout(function () {\r\n item.gmap = '';\r\n var $input = $('#mobilePhone_' + item.IDShippingGridValue);\r\n $input.focus();\r\n setTimeout(function () {\r\n $input.blur();\r\n if (!ctrl.mobileForm.$valid) {\r\n setTimeout(function () {\r\n $input.focus();\r\n }, 100);\r\n }\r\n }, 500);\r\n checkEnabled();\r\n }, 350);\r\n };\r\n\r\n ctrl.getMarkerOpts = function (item, marker) {\r\n if (marker.driveMarker) {\r\n return {\r\n icon: { url: '/img/shipping/drive-marker.png', labelOrigin: new google.maps.Point(15, 40) },\r\n label: { text: marker.name, fontWeight: 'bold' },\r\n zIndex: 1\r\n };\r\n }\r\n if (marker.userMarker) {\r\n return {\r\n icon: '/img/gmap/user-marker.png',\r\n zIndex: 1\r\n };\r\n }\r\n if (marker.selected) {\r\n return {\r\n title: null,\r\n icon: { url: '/img/shipping/' + _.camelCase(item.Key) + '-marker-active.png', labelOrigin: new google.maps.Point(20, 50) },\r\n label: { text: marker.name, fontWeight: 'bold' },\r\n zIndex: 3\r\n };\r\n }\r\n return {\r\n title: marker.name,\r\n icon: { url: '/img/shipping/' + _.camelCase(item.Key) + '-marker.png' },\r\n label: null,\r\n zIndex: 2\r\n };\r\n\r\n };\r\n\r\n ctrl.showDriveMap = function (item) {\r\n if (item.showDriveMap) {\r\n item.showDriveMap = false;\r\n $timeout(function () {\r\n item.gmap = '';\r\n }, 350);\r\n return;\r\n }\r\n item.gmap = '';\r\n item.loading = true;\r\n $timeout(function () {\r\n var address = item.Address.AddressLine1 +\r\n (item.Address.AddressLine2 !== '' ? ' ' + item.Address.AddressLine2 : '') +\r\n (item.Address.Apartment !== '' ? ' ' + item.Address.Apartment : '') +\r\n (item.Address.Building !== '' ? ' ' + item.Address.Building : '') +\r\n (item.Address.Complement !== '' && item.Address.Complement !== null ? ' ' + item.Address.Complement : '') +\r\n ' ' + item.Address.PostCode +\r\n ' ' + item.Address.City +\r\n ' ' + item.Address.Country;\r\n\r\n GMaps.getGeoCode(address)\r\n .then(function (gps) {\r\n GMaps.get()\r\n .then(function () {\r\n item.showDriveMap = true;\r\n item.markers = [{\r\n id: 0,\r\n name: 'Testoon Châtillon',\r\n lat: gps.Latitude,\r\n lng: gps.Longitude,\r\n driveMarker: true\r\n }];\r\n item.options = {\r\n map: {\r\n center: {\r\n lat: gps.Latitude,\r\n lng: gps.Longitude\r\n },\r\n zoom: 12,\r\n styles: [{'stylers': [{'saturation': -100}, {'lightness': 50}]}]\r\n }\r\n };\r\n item.gmap = 'gmap.tpl';\r\n item.loading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }, 400);\r\n };\r\n\r\n ctrl.changeShippingAddress = function (item) {\r\n if (item && item.PickUp) {\r\n item.Selected = false;\r\n ctrl.selectItem(item);\r\n } else {\r\n $rootScope.$broadcast('showPageLoader', true);\r\n AccountService.getShippingAddresses()\r\n .then(function (results) {\r\n AppService.getParams()\r\n .then(function (params) {\r\n var addresses = [\r\n {\r\n IDCard: params.Visitor.IDCard,\r\n FullName: params.Visitor.FullName,\r\n Address: params.Visitor.Address,\r\n AddressApartment: params.Visitor.AddressApartment,\r\n AddressBuilding: params.Visitor.AddressBuilding,\r\n AddressLocality: params.Visitor.AddressLocality,\r\n PostCode: params.Visitor.PostCode,\r\n City: params.Visitor.City,\r\n Country: {\r\n Designation: params.Visitor.Country.Designation\r\n },\r\n Phone: params.Visitor.Phone,\r\n MobilePhone: params.Visitor.MobilePhone\r\n }\r\n ];\r\n addresses = addresses.concat(_.filter(results.addresses, { IDCardType: 7 }));\r\n addresses = _.filter(addresses, function (address) {\r\n return address.IDCard !== params.Cart.IDShippingCard;\r\n });\r\n ModalService.show(\r\n '/Template/Cart/ModalSetShippingAddress',\r\n {\r\n device: ctrl.device,\r\n addresses: addresses,\r\n titles: results.titles,\r\n countries: results.countries,\r\n country: params.Visitor.Country,\r\n action: function (card) {\r\n setShippingAddress(card);\r\n },\r\n Phone: params.Visitor.Phone,\r\n MobilePhone: params.Visitor.MobilePhone\r\n },\r\n null,\r\n 'modalSetShippingAddressCtrl'\r\n );\r\n $rootScope.$broadcast('showPageLoader', false);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n };\r\n\r\n ctrl.toggleMobilePhone = function (event, item) {\r\n item.editMobile = true;\r\n $(event.target).closest('form').find('.form-control').focus();\r\n };\r\n\r\n\r\n ctrl.focusMobilePhone = function (item) {\r\n if (!item.editMobile) {\r\n item.editMobile = true;\r\n ctrl.targetMobilePhone = $('#mobilePhone_' + item.IDShippingGridValue);\r\n if (ctrl.mobileForm && ctrl.mobileForm.MobilePhone) {\r\n ctrl.mobileForm.MobilePhone.$showValidation();\r\n }\r\n }\r\n };\r\n ctrl.blurMobilePhone = function (item) {\r\n item.editMobile = false;\r\n };\r\n\r\n\r\n ctrl.changeMobilePhone = function () {\r\n $timeout(function () {\r\n if (ctrl.mobileForm.$valid) {\r\n ctrl.targetMobilePhone.blur();\r\n updateMobilePhone(); \r\n }\r\n checkEnabled();\r\n });\r\n };\r\n ctrl.submitMobilePhone = function (item) {\r\n item.editMobile = false;\r\n $timeout(function () {\r\n ctrl.mobileForm.MobilePhone.$showValidation();\r\n });\r\n updateMobilePhone();\r\n };\r\n\r\n ctrl.submitPickUpPoint = function () {\r\n $location.path(ctrl.nextStep);\r\n };\r\n\r\n ctrl.saveComment = function () {\r\n ctrl.commentLoading = true;\r\n CartService.saveComment(ctrl.cart.Comment)\r\n .then(function (response) {\r\n if (response && response.status === 'OK') {\r\n updateCart(response.results);\r\n var message = ctrl.cart.Comment === '' ? tplTranslate.CommentDeleted : tplTranslate.CommentSaved;\r\n toastr.success('', message, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n ctrl.commentLoading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n ctrl.convertToQuotation = function () {\r\n AppService.getParams()\r\n .then(function (params) {\r\n if (!params.IsLogged) {\r\n ModalService.show(\r\n '/Template/Cart/ModalConvertQuotationConnect',\r\n {\r\n action: function () {\r\n ctrl.convertToQuotation();\r\n }\r\n },\r\n null,\r\n 'convertQuotationConnectModalCtrl'\r\n );\r\n } else {\r\n $scope.$emit('showPageLoader', true);\r\n HttpService.post({\r\n url: 'Cart/ConvertToQuotation',\r\n data: {}\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n toastr.success('', translate.messages.ConvertToQuotationOK, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n if (!params.IsManagementWebCartTracking) {\r\n $rootScope.$broadcast('userUpdate');\r\n }\r\n $location.path(AccountService.getLinks().AccountQuotations);\r\n } else {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n ctrl.NextEnabled = false;\r\n $scope.$emit('showPageLoader', false);\r\n });\r\n });\r\n }\r\n });\r\n };\r\n\r\n // Functions\r\n $scope.$on('cartUpdate', setNextLink);\r\n\r\n ctrl.$onDestroy = function () {\r\n ShippingService.cancelGetPickUpPoints();\r\n };\r\n\r\n // Functions\r\n\r\n function setNextLink() {\r\n CartService.updateStepsCart(ctrl);\r\n\r\n var _routes = RoutesService.get();\r\n ctrl.nextStep = ctrl.cart.RestToPay === 0 ? '/' + _routes.CartValidation.url : '/' + _routes.CartPayment.url;\r\n }\r\n\r\n function checkAddress() {\r\n ctrl.loading = true;\r\n HttpService.get({\r\n url: '/AccountCheckAddress',\r\n cache: false\r\n })\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n getShippingList();\r\n } else {\r\n AppService.getParams()\r\n .then(function (params) {\r\n ModalService.show(\r\n '/Template/Cart/ModalSetUserAddress',\r\n {\r\n titles: response.titles,\r\n countries: response.countries,\r\n IDTitle: params.Visitor.Title.IDTitle || '',\r\n FirstName: params.Visitor.FirstName,\r\n LastName: params.Visitor.LastName,\r\n Address: params.Visitor.Address,\r\n AddressApartment: params.Visitor.AddressApartment,\r\n AddressBuilding: params.Visitor.AddressBuilding,\r\n AddressLocality: params.Visitor.AddressLocality,\r\n PostCode: params.Visitor.PostCode,\r\n City: params.Visitor.City,\r\n Country: (params.Visitor.Country && params.Visitor.Country.IDCountry && params.Visitor.Country.IDCountry !== 0) ? params.Visitor.Country : _.find(response.countries, { 'IDCountry': 1 }),\r\n Phone: params.Visitor.Phone,\r\n MobilePhone: params.Visitor.MobilePhone\r\n },\r\n null,\r\n 'modalSetUserAddressCtrl',\r\n null,\r\n ctrl.device,\r\n null,\r\n checkAddressOnClose\r\n );\r\n });\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n function checkAddressOnClose() {\r\n AppService.getParams(true)\r\n .then(function () {\r\n HttpService.get({\r\n url: '/AccountCheckAddress',\r\n cache: false\r\n })\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n getShippingList();\r\n } else {\r\n var _routes = RoutesService.get();\r\n $location.path('/' + _routes.Cart.url);\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n function getShippingList() {\r\n ShippingService.getList()\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n ctrl.shipping = response.results;\r\n _.each(ctrl.shipping.shippingList, function (item) {\r\n item.imgSrc = '/img/shipping/' + _.camelCase(item.Key) + '.png';\r\n if (item.Key === 'ENLEVEMENT' && item.TTCPrice === 0) {\r\n item.FinalPrice = 'gratis';\r\n } else if (ctrl.cart.PortOffert || item.TTCPrice === 0) {\r\n item.FinalPrice = 'free';\r\n }\r\n if (ctrl.cart.Shipping) {\r\n if (item.IDShippingGridValue === ctrl.cart.Shipping.IDShippingGridValue) ctrl.selectItem(item, true);\r\n }\r\n });\r\n if (!ctrl.shipping.shippingList.length) {\r\n ctrl.NextEnabled = false;\r\n }\r\n } else {\r\n console.error(response.status);\r\n }\r\n ctrl.loading = false;\r\n $rootScope.$broadcast('showPageLoader', false);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n function getCart() {\r\n AppService.getParams()\r\n .then(function (data) {\r\n updateCart(data, true);\r\n setNextLink();\r\n\r\n ctrl.originalComment = ctrl.cart.Comment;\r\n if (ctrl.cart.Comment !== '') ctrl.openComment = true;\r\n\r\n checkAddress();\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n function updateCart(data, noevent) {\r\n CartService.update(ctrl, data, noevent);\r\n }\r\n\r\n function loadClusterer() {\r\n var deferred = $q.defer();\r\n GMaps.getClusterer()\r\n .then(function () {\r\n deferred.resolve('ok');\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function searchPickUpPoints(item, address, card) {\r\n item.loading = true;\r\n address = _.replace(address, / /g, '+');\r\n GMaps.getGeoCode(address)\r\n .then(function (gps) {\r\n searchGpsPickUpPoints(item, gps);\r\n\r\n var $autocomplete = $('#autocompleteGmap_' + item.IDShippingGridValue);\r\n if (!$autocomplete.data('init')) {\r\n $autocomplete.data('init', true);\r\n /*\r\n var autocomplete = new google.maps.places.Autocomplete($autocomplete[0], {\r\n types: ['geocode'],\r\n componentRestrictions: { country: 'be' }\r\n });\r\n */\r\n var autocomplete = new google.maps.places.Autocomplete($autocomplete[0], {\r\n types: ['geocode'],\r\n componentRestrictions: { country: 'fr' }\r\n });\r\n\r\n google.maps.event.addListener(autocomplete, 'place_changed', function () {\r\n $scope.$apply(function () {\r\n item.addressSearch = $autocomplete.val();\r\n ctrl.newSearch();\r\n });\r\n });\r\n }\r\n\r\n if (window.location.hostname === 'localhost' || window.location.protocol === 'https:') {\r\n if (navigator.geolocation && !ctrl.geolocation) {\r\n ctrl.geolocation = true;\r\n ctrl.getGeolocation = function () {\r\n item.loading = true;\r\n\r\n var defer = $q.defer();\r\n defer.promise.then(function (position) {\r\n var pos = {\r\n lat: position.coords.latitude,\r\n lng: position.coords.longitude\r\n };\r\n GMaps.getGeoCodeByGps(pos)\r\n .then(function (response) {\r\n item.addressSearch = response.address;\r\n searchGpsPickUpPoints(item, response.gps);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }, function (data) {\r\n item.loading = false;\r\n });\r\n\r\n navigator.geolocation.getCurrentPosition(function (position) {\r\n defer.resolve(position);\r\n }, function (err) {\r\n defer.reject(err);\r\n });\r\n\r\n $timeout(function () {\r\n defer.reject('timed out');\r\n }, 5000);\r\n\r\n };\r\n }\r\n }\r\n })\r\n .catch(function (response) {\r\n if (response.status === 'ZERO_RESULTS') {\r\n if (card) {\r\n searchPickUpPoints(item, card.PostCode + ' ' + card.City + ' ' + card.Country.Designation);\r\n } else {\r\n searchPickUpPoints(item, '75000');\r\n }\r\n } else {\r\n console.error(response);\r\n }\r\n });\r\n }\r\n function searchGpsPickUpPoints(item, gps) {\r\n var cache = ShippingCacheService.get(item.key + '|' + gps.Latitude + '|' + gps.Longitude);\r\n if (cache) {\r\n setTimeout(function () {\r\n resultsPickUpPoints(item, gps, cache);\r\n }, 350);\r\n return;\r\n }\r\n\r\n var pos = {\r\n lat: gps.Latitude,\r\n lng: gps.Longitude\r\n };\r\n GMaps.getGeoCodeByGps(pos)\r\n .then(function (response) {\r\n ShippingService.getPickUpPoints(item.Key, response.gps)\r\n .then(function (data) {\r\n resultsPickUpPoints(item, gps, data);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n });\r\n\r\n }\r\n function resultsPickUpPoints(item, gps, data) {\r\n item.pickUpPoints = data;\r\n var bounds = new google.maps.LatLngBounds();\r\n item.markers = [];\r\n\r\n if (!item.pickUpPoints.length) {\r\n item.loading = false;\r\n return;\r\n }\r\n\r\n _.each(item.pickUpPoints, function (point) {\r\n point.Distance = point.Distance * 1000;\r\n if (point.Distance >= 1000) {\r\n var km = (point.Distance / 1000).toFixed(2);\r\n km = (km === Math.floor(km)) ? Math.floor(km) : km;\r\n point.DistanceKm = String(km).replace('.', ',');\r\n }\r\n point.selected = item.Address ? point.Id === item.Address.Id : false;\r\n item.markers.push({\r\n id: point.Id,\r\n name: point.Name,\r\n lat: point.Coordinate.Latitude,\r\n lng: point.Coordinate.Longitude,\r\n selected: point.selected\r\n });\r\n if (point.selected) {\r\n ctrl.pickUpPointsSelected = point;\r\n ctrl.markerSelected = _.find(item.markers, { id: point.Id });\r\n $timeout(function () {\r\n ctrl.showPickUpPoint(item, null, ctrl.markerSelected);\r\n }, 350);\r\n }\r\n bounds.extend(new google.maps.LatLng(point.Coordinate.Latitude, point.Coordinate.Longitude));\r\n });\r\n\r\n item.showMap = true;\r\n //\r\n item.options = {\r\n map: {\r\n center: bounds.getCenter(),\r\n styles: [{ 'stylers': [{ 'saturation': -100 }, { 'lightness': 50 }] }]\r\n }\r\n };\r\n\r\n item.gmap = 'gmap.tpl';\r\n\r\n var gmapPromise = angulargmContainer.getMapPromise('map_' + item.IDShippingGridValue);\r\n gmapPromise.then(function (map) {\r\n setTimeout(function () {\r\n google.maps.event.trigger(map, 'resize');\r\n map.fitBounds(bounds);\r\n\r\n loadClusterer()\r\n .then(function () {\r\n var markers = angulargmContainer.getMarkers('map_' + item.IDShippingGridValue);\r\n for (var i = 0; i < markers.length; i++) {\r\n markers[i].setMap(null);\r\n }\r\n angulargmContainer.clearMarkers('map_' + item.IDShippingGridValue);\r\n $scope.$broadcast('gmMarkersRedraw', 'item.markers');\r\n\r\n var options = {\r\n gridSize: 50,\r\n maxZoom: 15,\r\n styles: [\r\n {\r\n width: 53,\r\n height: 53,\r\n url: '/img/shipping/' + _.camelCase(item.Key) + '_m1.png',\r\n textColor: '#fff'\r\n },\r\n {\r\n width: 56,\r\n height: 56,\r\n url: '/img/shipping/' + _.camelCase(item.Key) + '_m2.png',\r\n textColor: '#fff'\r\n },\r\n {\r\n width: 66,\r\n height: 66,\r\n url: '/img/shipping/' + _.camelCase(item.Key) + '_m3.png',\r\n textColor: '#fff'\r\n },\r\n {\r\n width: 78,\r\n height: 78,\r\n url: '/img/shipping/' + _.camelCase(item.Key) + '_m4.png',\r\n textColor: '#fff'\r\n },\r\n {\r\n width: 90,\r\n height: 90,\r\n url: '/img/shipping/' + _.camelCase(item.Key) + '_m5.png',\r\n textColor: '#fff'\r\n }\r\n ]\r\n };\r\n if (markerClusterer) {\r\n markerClusterer.clearMarkers();\r\n }\r\n markers = angulargmContainer.getMarkers('map_' + item.IDShippingGridValue);\r\n markerClusterer = new MarkerClusterer(map, markers, options);\r\n setTimeout(function () {\r\n item.markers.push({\r\n id: '0',\r\n lat: gps.Latitude,\r\n lng: gps.Longitude,\r\n userMarker: true\r\n });\r\n bounds.extend(new google.maps.LatLng(gps.Latitude, gps.Longitude));\r\n map.fitBounds(bounds);\r\n if (item.markers.length === 1) {\r\n map.setZoom(5);\r\n }\r\n $scope.$broadcast('gmMarkersUpdate', 'item.markers');\r\n }, 500);\r\n });\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n //\r\n item.loading = false;\r\n }\r\n\r\n function scrollToPoint(id) {\r\n var $list = $('#pointsListInner'),\r\n $point = $('#point_' + id);\r\n\r\n setTimeout(function () {\r\n $list.animate({ scrollTop: $list.scrollTop() + $point.position().top }, 350);\r\n }, 400);\r\n }\r\n\r\n function setShippingAddress(card) {\r\n $rootScope.$broadcast('showPageLoader', true);\r\n HttpService.post({\r\n url: '/Shipping/SetShippingAddress',\r\n data: card.IDCard\r\n })\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n updateCart(response.results);\r\n getShippingList();\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n function selectShipping(id, pickup) {\r\n pickup = pickup || '';\r\n $rootScope.$broadcast('showPageLoader', true);\r\n ShippingService.selectShipping(id, pickup)\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n updateCart(response.results);\r\n }\r\n $rootScope.$broadcast('showPageLoader', false);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n function updateMobilePhone() {\r\n HttpService.post({\r\n url: '/AccountUpdateMobilePhone',\r\n data: {\r\n MobilePhone: _.replace(ctrl.shipping.userShippingCard.MobilePhone, / /g, '')\r\n }\r\n });\r\n }\r\n\r\n\r\n function checkEnabled() {\r\n ctrl.NextEnabled = true;\r\n ctrl.NextTooltip = '';\r\n if (ctrl.itemSelected.item.PickUp && ctrl.mobileForm && !ctrl.mobileForm.$valid) {\r\n ctrl.NextEnabled = false;\r\n ctrl.NextTooltip = tplTranslate.MobilePhoneRequired;\r\n }\r\n if (!ctrl.itemSelected.item.Address) {\r\n ctrl.NextEnabled = false;\r\n ctrl.NextTooltip = tplTranslate.NoPickupAdress;\r\n }\r\n }\r\n\r\n }]\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .controller('convertQuotationConnectModalCtrl', [\"data\", \"device\", \"options\", \"$location\", \"$uibModalInstance\", \"LogService\", \"RoutesService\", \"ModalService\", function (data, device, options, $location, $uibModalInstance, LogService, RoutesService, ModalService) {\r\n var ctrl = this;\r\n\r\n ctrl.register = function () {\r\n ModalService.close();\r\n LogService.redirect = {\r\n url: $location.path(),\r\n action: data.action\r\n };\r\n $location.path('/' + RoutesService.get().Login.url);\r\n };\r\n\r\n ctrl.connect = function () {\r\n LogService.redirect = {\r\n url: null,\r\n action: data.action\r\n };\r\n $uibModalInstance.closed.then(function () {\r\n ModalService.show(\r\n '/Template/Authentication/ModalAuthentication',\r\n null,\r\n null,\r\n 'loginModalCtrl'\r\n );\r\n });\r\n $uibModalInstance.close();\r\n };\r\n }])\r\n .controller('modalSetShippingAddressCtrl', [\"data\", \"device\", \"options\", \"$timeout\", \"HttpService\", \"AppService\", \"productsGridService\", \"ModalService\", \"toastr\", function (data, device, options, $timeout, HttpService, AppService, productsGridService, ModalService, toastr) {\r\n var ctrl = this;\r\n ctrl.data = data;\r\n\r\n ctrl.data.Function = '';\r\n $timeout(function () {\r\n ctrl.data.selectTitle = ctrl.data.IDTitle;\r\n ctrl.data.selectCountry = ctrl.data.country;\r\n setTimeout(function () {\r\n $('.modal').find('select.refresh').selectpicker('refresh');\r\n });\r\n });\r\n\r\n var messageTitle;\r\n\r\n ctrl.$onInit = function () {\r\n if (!ctrl.data.addresses.length) {\r\n ctrl.activeTab = 1;\r\n }\r\n ctrl.loaded = true;\r\n setTimeout(function () {\r\n $('.modal').find('.modal-body').find('.addresses').attr('id', 'tmpSetAddress');\r\n productsGridService.resizeGrid('tmpSetAddress', data.device.size, false);\r\n }, 100);\r\n };\r\n\r\n ctrl.successMessage = function (title) {\r\n messageTitle = title;\r\n };\r\n\r\n ctrl.showCreateAddress = function () {\r\n ctrl.activeTab = 1;\r\n $('.modal').animate({scrollTop: 0}, 350);\r\n };\r\n\r\n ctrl.select = function (id) {\r\n ctrl.data.action(id);\r\n ModalService.close();\r\n };\r\n\r\n ctrl.submit = function () {\r\n ctrl.loading = true;\r\n\r\n HttpService.post({\r\n url: '/AccountAddAddress',\r\n data: {\r\n Function: ctrl.data.Function,\r\n Company: ctrl.data.Company || '',\r\n IDTitle: ctrl.data.selectTitle || '',\r\n FirstName: ctrl.data.FirstName || '',\r\n LastName: ctrl.data.LastName || '',\r\n Address: ctrl.data.Address || '',\r\n EUTVANumber: ctrl.data.EUTVANumber || '',\r\n AddressApartment: ctrl.data.AddressApartment || '',\r\n AddressBuilding: ctrl.data.AddressBuilding || '',\r\n AddressLocality: ctrl.data.AddressLocality || '',\r\n PostCode: ctrl.data.PostCode || '',\r\n City: ctrl.data.City || '',\r\n IDCountry: ctrl.data.selectCountry.IDCountry || '',\r\n Phone: ctrl.data.Phone || '',\r\n MobilePhone: ctrl.data.MobilePhone || ''\r\n }\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n toastr.success('', messageTitle, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n ctrl.data.action(response.results);\r\n ModalService.close();\r\n } else {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n ctrl.loading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('modalSetUserAddressCtrl', [\"data\", \"device\", \"options\", \"$timeout\", \"HttpService\", \"AppService\", \"ModalService\", \"toastr\", function (data, device, options, $timeout, HttpService, AppService, ModalService, toastr) {\r\n var ctrl = this;\r\n ctrl.data = data;\r\n\r\n $timeout(function () {\r\n ctrl.data.selectTitle = ctrl.data.IDTitle;\r\n ctrl.data.selectCountry = ctrl.data.Country;\r\n setTimeout(function () {\r\n $('.modal').find('select.refresh').selectpicker('refresh');\r\n });\r\n });\r\n\r\n var messageTitle;\r\n\r\n ctrl.successMessage = function (title) {\r\n messageTitle = title;\r\n };\r\n\r\n ctrl.submit = function () {\r\n ctrl.loading = true;\r\n\r\n AppService.getParams()\r\n .then(function (params) {\r\n HttpService.post({\r\n url: '/AccountUpdateAddress',\r\n data: {\r\n IDCard: params.Visitor.IDCard,\r\n Company: ctrl.data.Company || '',\r\n IDTitle: ctrl.data.selectTitle || '',\r\n FirstName: ctrl.data.FirstName || '',\r\n LastName: ctrl.data.LastName || '',\r\n EUTVANumber: ctrl.data.EUTVANumber || '',\r\n Address: ctrl.data.Address || '',\r\n AddressApartment: ctrl.data.AddressApartment || '',\r\n AddressBuilding: ctrl.data.AddressBuilding || '',\r\n AddressLocality: ctrl.data.AddressLocality || '',\r\n PostCode: ctrl.data.PostCode || '',\r\n City: ctrl.data.City || '',\r\n IDCountry: ctrl.data.selectCountry.IDCountry || '',\r\n Phone: ctrl.data.Phone || '',\r\n MobilePhone: ctrl.data.MobilePhone || ''\r\n }\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n toastr.success('', messageTitle, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n ModalService.close();\r\n } else {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n ctrl.loading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n };\r\n\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.cart.testoonCodeVerification', [])\r\n\r\n .directive('testoonCodeVerification', function () {\r\n\r\n return {\r\n restrict: 'A',\r\n bindToController: {\r\n cartCtrl: '<',\r\n codeFormat: '@'\r\n },\r\n controllerAs: 'codeVerificationCtrl',\r\n\r\n controller: [\"HttpService\", function (HttpService) {\r\n var ctrl = this;\r\n var orig;\r\n\r\n ctrl.text = '';\r\n\r\n ctrl.$onInit = function () {\r\n orig = ctrl.cartCtrl.NextTooltip;\r\n ctrl.cartCtrl.validCode = false;\r\n };\r\n\r\n ctrl.codeVerification = function () {\r\n if (ctrl.form.$valid) {\r\n HttpService.post({\r\n url: 'Cart/CodeVerification?code=' + encodeURI(ctrl.text)\r\n })\r\n .then(function (results) {\r\n ctrl.cartCtrl.validCode = results === 'OK';\r\n });\r\n }\r\n else {\r\n ctrl.cartCtrl.validCode = false;\r\n }\r\n }\r\n }]\r\n }\r\n });\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.cart.testoonPartialShipping', [])\r\n\r\n .directive('testoonPartialShipping', function () {\r\n\r\n return {\r\n restrict: 'A',\r\n controllerAs: 'partialCtrl',\r\n /* @ngInject */\r\n controller: [\"HttpService\", \"AppService\", function (HttpService, AppService) {\r\n var ctrl = this;\r\n\r\n //ctrl.checked = data\r\n AppService.getParams()\r\n .then(function (data) {\r\n ctrl.checked = data.Cart.CheckBox1;\r\n });\r\n \r\n ctrl.check = function () {\r\n ajaxSetPartialShipping();\r\n };\r\n\r\n function ajaxSetPartialShipping(value) {\r\n HttpService.post({\r\n url: 'Cart/AllowPartialShipping/' + ctrl.checked\r\n });\r\n }\r\n }]\r\n }\r\n });\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.cart.validation', [])\r\n\r\n .directive('cartValidation', function () {\r\n return {\r\n restrict: 'A',\r\n bindToController: {\r\n device: '<',\r\n step: '<'\r\n },\r\n controllerAs: 'cartCtrl',\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$rootScope\", \"$element\", \"$location\", \"$templateCache\", \"AppService\", \"CartService\", \"AccountService\", \"HttpService\", \"ModalService\", \"RoutesService\", function ($scope, $rootScope, $element, $location, $templateCache, AppService, CartService, AccountService, HttpService, ModalService, RoutesService) {\r\n var ctrl = this;\r\n ctrl.NextEnabled = false;\r\n\r\n var _routes = RoutesService.get();\r\n ctrl.nextStep = '/' + _routes.CartPaymentAction.url;\r\n ctrl.linkShipping = '/' + _routes.CartShipping.url;\r\n ctrl.linkPayment = '/' + _routes.CartPayment.url;\r\n\r\n // Translate\r\n var tplTranslate = {};\r\n $element.children('.translate').children().each(function () {\r\n var $this = $(this);\r\n tplTranslate[$this.attr('key')] = $this.html();\r\n });\r\n\r\n ctrl.$onInit = function () {\r\n getValidationInfos(true);\r\n ctrl.nextStep = '/' + _routes.CartPaymentAction.url + (ctrl.device.mobile ? '?mobile=true' : '');\r\n };\r\n\r\n // Cart Aside\r\n ctrl.toggleCart = function () {\r\n CartService.toggleCart(ctrl);\r\n };\r\n ctrl.toggleUpdate = function (model) {\r\n CartService.toggleUpdate(ctrl, model);\r\n };\r\n ctrl.submitCode = function (event) {\r\n if (String(ctrl.formCode.data.code) === '') return;\r\n $(event.target).find('.form-control').blur();\r\n CartService.submitCode(ctrl);\r\n };\r\n ctrl.cancelCode = function (code) {\r\n CartService.cancelCode(ctrl, code);\r\n };\r\n ctrl.addLoyaltyPoint = function () {\r\n CartService.addLoyaltyPoint(ctrl);\r\n };\r\n ctrl.cancelLoyaltyPoint = function () {\r\n CartService.cancelLoyaltyPoint(ctrl);\r\n };\r\n ctrl.useCredit = function (id) {\r\n CartService.useCredit(ctrl, id);\r\n };\r\n ctrl.cancelCredit = function (id) {\r\n CartService.cancelCredit(ctrl, id);\r\n };\r\n ctrl.cancelGiftCard = function (code) {\r\n CartService.cancelGiftCard(ctrl, code);\r\n };\r\n // End Cart Aside\r\n\r\n ctrl.changeShippingAddress = function (item) {\r\n if (item.PickUp) {\r\n $location.path(ctrl.linkShipping);\r\n } else {\r\n $rootScope.$broadcast('showPageLoader', true);\r\n AccountService.getShippingAddresses()\r\n .then(function (results) {\r\n AppService.getParams()\r\n .then(function (params) {\r\n var addresses = [\r\n {\r\n IDCard: params.Visitor.IDCard,\r\n FullName: params.Visitor.FullName,\r\n Address: params.Visitor.Address,\r\n AddressApartment: params.Visitor.AddressApartment,\r\n AddressBuilding: params.Visitor.AddressBuilding,\r\n AddressLocality: params.Visitor.AddressLocality,\r\n PostCode: params.Visitor.PostCode,\r\n City: params.Visitor.City,\r\n Country: {\r\n Designation: params.Visitor.Country.Designation\r\n },\r\n Phone: params.Visitor.Phone,\r\n MobilePhone: params.Visitor.MobilePhone\r\n }\r\n ];\r\n addresses = addresses.concat(_.filter(results.addresses, { IDCardType: 7 }));\r\n addresses = _.filter(addresses, function (address) {\r\n return address.IDCard !== params.Cart.IDShippingCard;\r\n });\r\n ModalService.show(\r\n '/Template/Cart/ModalSetShippingAddress',\r\n {\r\n device: ctrl.device,\r\n addresses: addresses,\r\n titles: results.titles,\r\n countries: results.countries,\r\n country: params.Visitor.Country,\r\n action: function (card) {\r\n setShippingAddress(card);\r\n },\r\n Phone: params.Visitor.Phone,\r\n MobilePhone: params.Visitor.MobilePhone\r\n },\r\n null,\r\n 'modalSetShippingAddressCtrl'\r\n );\r\n $rootScope.$broadcast('showPageLoader', false);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n };\r\n ctrl.changeInvoiceAddress = function () {\r\n var unwatch = $scope.$on('invoiceUpdate', function () {\r\n unwatch();\r\n ModalService.close();\r\n getValidationInfos();\r\n });\r\n\r\n $templateCache.remove('/ModalAccountUpdate?view=ModalAccountUpdate');\r\n ModalService.show(\r\n '/ModalAccountUpdate?view=ModalAccountUpdate',\r\n {},\r\n null,\r\n 'modalAccountUpdateController',\r\n 'accountCtrl'\r\n );\r\n };\r\n\r\n ctrl.openCgv = function () {\r\n ModalService.show(\r\n '/Template/Modal/ModalCgv',\r\n {}\r\n );\r\n };\r\n\r\n ctrl.gotoPaymentPage = function () {\r\n if (ctrl.NextEnabled) {\r\n $rootScope.$broadcast('showPageLoader', true);\r\n }\r\n };\r\n\r\n // Functions\r\n\r\n $scope.$on('cartUpdate', function () {\r\n getCart();\r\n });\r\n\r\n $scope.$watch('cartCtrl.NextEnabled', function (value) {\r\n ctrl.NextTooltip = value ? '' : tplTranslate.AcceptCgv;\r\n });\r\n\r\n // Functions\r\n\r\n function getCart() {\r\n AppService.getParams()\r\n .then(function (data) {\r\n CartService.update(ctrl, data, true);\r\n CartService.updateStepsCart(ctrl);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n function getValidationInfos(loadCart) {\r\n AppService.getParams()\r\n .then(function (params) {\r\n ctrl.shipping = params.Cart.Shipping;\r\n ctrl.payment = params.Cart.PaymentMethod;\r\n\r\n if (loadCart) getCart();\r\n\r\n\r\n ctrl.invoiceAddress = {\r\n Name: params.Visitor.BillingCard != null ? params.Visitor.BillingCard.FullName : params.Visitor.FullName,\r\n AddressLine1: params.Visitor.BillingCard != null ? params.Visitor.BillingCard.Address : params.Visitor.Address,\r\n AddressLine2: params.Visitor.BillingCard != null ? params.Visitor.BillingCard.AddressLocality : params.Visitor.AddressLocality,\r\n Apartment: params.Visitor.BillingCard != null ? params.Visitor.BillingCard.AddressApartment : params.Visitor.AddressApartment,\r\n Building: params.Visitor.BillingCard != null ? params.Visitor.BillingCard.AddressBuilding : params.Visitor.AddressBuilding,\r\n Complement: null,\r\n PostCode: params.Visitor.BillingCard != null ? params.Visitor.BillingCard.PostCode : params.Visitor.PostCode,\r\n City: params.Visitor.BillingCard != null ? params.Visitor.BillingCard.City : params.Visitor.City,\r\n Country: params.Visitor.BillingCard != null ? params.Visitor.BillingCard.Country.Designation : params.Visitor.Country.Designation\r\n };\r\n \r\n \r\n if (ctrl.shipping) {\r\n ctrl.shippingAddress = {\r\n Name: ctrl.shipping.Address.Name,\r\n AddressLine1: ctrl.shipping.Address.AddressLine1,\r\n AddressLine2: ctrl.shipping.Address.AddressLine2,\r\n Apartment: ctrl.shipping.Address.Apartment,\r\n Building: ctrl.shipping.Address.Building,\r\n Complement: ctrl.shipping.Address.Complement,\r\n PostCode: ctrl.shipping.Address.PostCode,\r\n City: ctrl.shipping.Address.City,\r\n Country: ctrl.shipping.Address.Country\r\n };\r\n if (ctrl.shipping.Key !== 'ENLEVEMENT') {\r\n ctrl.shipping.btnAction = ctrl.shipping.PickUp ? tplTranslate.ChoisirUnAutrePoint : tplTranslate.ChoisirUneAutreAdresse;\r\n ctrl.shipping.titleShippingAddress = ctrl.shipping.PickUp ? tplTranslate.PointRetrait : tplTranslate.AdresseLivraison;\r\n } else {\r\n ctrl.shipping.btnAction = '';\r\n ctrl.shipping.titleShippingAddress = tplTranslate.EnlevementMagasin;\r\n }\r\n }\r\n\r\n ctrl.invoiceAddressIsEqual = _.isEqual(ctrl.shippingAddress, ctrl.invoiceAddress);\r\n ctrl.invoiceAddressIsEqual = ctrl.isNumericCart ? false : ctrl.invoiceAddressIsEqual;\r\n if (ctrl.shipping) ctrl.shipping.imgSrc = '/img/shipping/' + _.camelCase(ctrl.shipping.Key) + '.png';\r\n if (ctrl.payment) ctrl.payment.imgSrc = '/img/payment/' + _.camelCase(ctrl.payment.Key) + '.png';\r\n\r\n ctrl.active = true;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n function setShippingAddress(card) {\r\n $rootScope.$broadcast('showPageLoader', true);\r\n HttpService.post({\r\n url: '/Shipping/SetShippingAddress',\r\n data: card.IDCard\r\n })\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n CartService.update(ctrl, response.results);\r\n\r\n if (!ctrl.cart.Shipping) {\r\n $location.path('/' + _routes.CartShipping.url);\r\n return;\r\n }\r\n\r\n ctrl.shipping = ctrl.cart.Shipping;\r\n ctrl.shipping.btnAction = tplTranslate.ChoisirUneAutreAdresse;\r\n ctrl.shipping.titleShippingAddress = tplTranslate.AdresseLivraison;\r\n getValidationInfos(false);\r\n $rootScope.$broadcast('showPageLoader', false);\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n }]\r\n };\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.category.filters', ['rzModule'])\r\n\r\n .directive('filters', function () {\r\n return {\r\n restrict: 'E',\r\n scope: true,\r\n bindToController: {\r\n idCategory: '<',\r\n scroll: '<',\r\n device: '<'\r\n },\r\n controllerAs: 'filtersCtrl',\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$rootScope\", \"$timeout\", \"$location\", \"$document\", \"AppService\", \"CategoryFiltersCacheService\", \"CategoryService\", \"smoothScroll\", function ($scope, $rootScope, $timeout, $location, $document, AppService, CategoryFiltersCacheService, CategoryService, smoothScroll) {\r\n if (window.isBot || window.isCache) return;\r\n var ctrl = this;\r\n\r\n ctrl.search = '';\r\n ctrl.words = [];\r\n ctrl.selected = [];\r\n ctrl.filters = null;\r\n ctrl.BrandsSelected = [];\r\n ctrl.FacetsSelected = [];\r\n ctrl.ReviewsSelected = [];\r\n ctrl.ProductTypesSelected = [];\r\n\r\n ctrl.$onInit = function () {\r\n get();\r\n };\r\n\r\n ctrl.submitSearch = function (event) {\r\n if (ctrl.search === '') return;\r\n\r\n if (typeof event === 'undefined') {\r\n addWord(ctrl.search);\r\n } else if (event && event.which === 13) {\r\n event.preventDefault();\r\n $(event.target).blur();\r\n addWord(ctrl.search);\r\n }\r\n };\r\n ctrl.removeWord = function (word) {\r\n _.pull(ctrl.words, word);\r\n updateUrl();\r\n };\r\n\r\n ctrl.openDropdown = function (event) {\r\n var $button = $(event.currentTarget),\r\n $menu = $button.siblings('.dropdown-menu');\r\n if ($button.parent().hasClass('open')) {\r\n $menu.removeAttr('style');\r\n } else {\r\n if (ctrl.device.xxs) {\r\n $menu.css({\r\n left: $button.offset().left * -1 + 10,\r\n width: $(document.body).width() - 20\r\n });\r\n } else {\r\n $menu.removeClass('dropdown-menu-right').show();\r\n if ($menu.offset().left + $menu.width() > $(document.body).width()) {\r\n $menu.addClass('dropdown-menu-right');\r\n }\r\n $menu.removeAttr('style');\r\n }\r\n\r\n $timeout(function () {\r\n $rootScope.$broadcast('rzSliderForceRender');\r\n }, 10);\r\n\r\n var closeDropdown = function () {\r\n $menu.removeAttr('style');\r\n $document.off('click', closeDropdown);\r\n };\r\n\r\n $menu.find('.rzslider').removeClass('opened');\r\n $timeout(function () {\r\n $rootScope.$broadcast('rzSliderForceRender');\r\n $menu.find('.rzslider').addClass('opened');\r\n $document.on('click', closeDropdown);\r\n }, 500);\r\n\r\n }\r\n };\r\n\r\n ctrl.setFacet = function (item, itemValue, initCheck) {\r\n var facet = _.find(ctrl.FacetsSelected, { 'Id': item.Id });\r\n if (item.isColor) {\r\n itemValue.selected = !itemValue.selected;\r\n }\r\n if (itemValue.selected) {\r\n facet.Values.push(itemValue.Value);\r\n ctrl.selected.push({\r\n id: itemValue.ref,\r\n name: itemValue.selectedValue,\r\n value: itemValue.Value,\r\n type: item.Id,\r\n selectId: 'f' + item.Id\r\n });\r\n } else {\r\n _.pull(facet.Values, itemValue.Value);\r\n _.remove(ctrl.selected, function (elem) {\r\n return elem.selectId === 'f' + item.Id && elem.id === itemValue.ref;\r\n });\r\n }\r\n if (!initCheck) {\r\n updateUrl();\r\n }\r\n };\r\n ctrl.setBrand = function (item) {\r\n selectFilter(item, 'b', ctrl.BrandsSelected, false);\r\n };\r\n ctrl.setReview = function (item) {\r\n selectFilter(item, 'r', ctrl.ReviewsSelected, true);\r\n };\r\n ctrl.setType = function (item) {\r\n selectFilter(item, 't', ctrl.ProductTypesSelected, false);\r\n };\r\n\r\n ctrl.removeFilter = function (item) {\r\n switch (item.type) {\r\n case 'b':\r\n _.pullAllBy(ctrl.BrandsSelected, [{ Id: item.id }], 'Id');\r\n break;\r\n case 'r':\r\n _.pull(ctrl.ReviewsSelected, String(item.id));\r\n break;\r\n case 't':\r\n _.pullAllBy(ctrl.ProductTypesSelected, [{ Id: item.id }], 'Id');\r\n break;\r\n case 'p':\r\n ctrl.PriceRange = null;\r\n break;\r\n default:\r\n _.pull(_.find(ctrl.FacetsSelected, { Id: item.type }).Values, item.value);\r\n break;\r\n }\r\n _.remove(ctrl.selected, function (elem) {\r\n return elem.selectId === item.selectId && elem.id === item.id;\r\n });\r\n updateUrl();\r\n };\r\n\r\n ctrl.removeFilters = function () {\r\n ctrl.selected = [];\r\n ctrl.words = [];\r\n ctrl.BrandsSelected = [];\r\n ctrl.ReviewsSelected = [];\r\n ctrl.ProductTypesSelected = [];\r\n _.each(ctrl.FacetsSelected, function (item) {\r\n item.Values = [];\r\n });\r\n ctrl.PriceRange = null;\r\n updateUrl();\r\n };\r\n\r\n // Functions\r\n\r\n function addWord(str, initCheck) {\r\n initCheck = initCheck || false;\r\n ctrl.search = '';\r\n ctrl.words.push(str);\r\n if (!initCheck) {\r\n updateUrl();\r\n }\r\n }\r\n\r\n function selectFilter(item, type, target, isReview, initCheck) {\r\n initCheck = initCheck || false;\r\n if (isReview) {\r\n if (item.selected) {\r\n target.push(String(item.Name));\r\n ctrl.selected.push({\r\n id: item.Name,\r\n name: item.Name,\r\n type: type,\r\n selectId: type + item.Name,\r\n isReview: true\r\n });\r\n } else {\r\n _.pull(target, String(item.Name));\r\n _.pullAllBy(ctrl.selected, [{ selectId: type + item.Name }], 'selectId');\r\n }\r\n } else if (item.selected) {\r\n target.push({ Id: item.Id });\r\n ctrl.selected.push({\r\n id: item.Id,\r\n name: item.Name,\r\n type: type,\r\n selectId: type + item.Id,\r\n isReview: false\r\n });\r\n } else {\r\n _.pullAllBy(target, [{ Id: item.Id }], 'Id');\r\n _.pullAllBy(ctrl.selected, [{ selectId: type + item.Id }], 'selectId');\r\n }\r\n\r\n if (!initCheck) {\r\n updateUrl();\r\n }\r\n }\r\n\r\n function selectPrices(min, max) {\r\n ctrl.PriceRange = null;\r\n _.pullAllBy(ctrl.selected, [{ isPrices: true }], 'isPrices');\r\n ctrl.filters.prices.selectedMinPrice = min >= ctrl.filters.prices.minPrice ? min : ctrl.filters.prices.minPrice;\r\n ctrl.filters.prices.selectedMaxPrice = max <= ctrl.filters.prices.maxPrice ? max : ctrl.filters.prices.maxPrice;\r\n\r\n if (min !== ctrl.filters.prices.minPrice || max !== ctrl.filters.prices.maxPrice) {\r\n ctrl.PriceRange = {\r\n Gte: min,\r\n Lte: max\r\n };\r\n ctrl.selected.push({\r\n id: min + ',' + max,\r\n name: 'de ' + min + ' € à ' + max + ' €',\r\n type: 'p',\r\n selectId: min + ',' + max,\r\n isPrices: true\r\n });\r\n }\r\n $document.click();\r\n }\r\n\r\n function updateUrl() {\r\n var object = _.reduce(ctrl.selected, function (result, item) {\r\n (result['f' + item.type] || (result['f' + item.type] = [])).push(item.id);\r\n return result;\r\n }, {});\r\n\r\n var params = {};\r\n _.each(object, function (item, key) {\r\n params[key] = item.join(',');\r\n });\r\n\r\n if (ctrl.words.length) {\r\n params.fs = _.replace(_.deburr(ctrl.words.join(',')), / /g, '|');\r\n }\r\n\r\n $location.search(params).replace();\r\n }\r\n\r\n function get() {\r\n var gridCtrl = CategoryService.getGridCtrl();\r\n if (gridCtrl.api.filtered) {\r\n ctrl.noScroll = true;\r\n }\r\n\r\n var cache = CategoryFiltersCacheService.get('filters_' + ctrl.idCategory);\r\n if (cache) {\r\n getResults(_.cloneDeep(cache));\r\n return;\r\n }\r\n\r\n ctrl.loading = true;\r\n\r\n CategoryService.getFilters(String(ctrl.idCategory))\r\n .then(function (data) {\r\n ctrl.loading = false;\r\n CategoryFiltersCacheService.set('filters_' + ctrl.idCategory, _.cloneDeep(data));\r\n getResults(data);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n function getResults(data) {\r\n if (!data) return;\r\n if (!ctrl.FacetsSelected.length) {\r\n _.each(data.facets, function (item) {\r\n ctrl.FacetsSelected.push({ 'Id': item.Id, 'Name': item.Name, 'Key': item.Key, 'Values': [] });\r\n });\r\n }\r\n setDataFilters(data, true);\r\n }\r\n\r\n function set() {\r\n if (!ctrl.noScroll && ctrl.scroll && $('#topGridProducts').offset().top < 10) {\r\n smoothScroll(document.getElementById('topGridProducts'), { offset: 60 });\r\n }\r\n ctrl.noScroll = false;\r\n\r\n var gridCtrl = CategoryService.getGridCtrl();\r\n gridCtrl.api.items = [];\r\n gridCtrl.api.page = 1;\r\n gridCtrl.noresult = false;\r\n\r\n var facets = _.filter(ctrl.FacetsSelected, function (item) {\r\n return item.Values.length;\r\n });\r\n var brands = ctrl.BrandsSelected;\r\n var reviews = ctrl.ReviewsSelected;\r\n var types = ctrl.ProductTypesSelected;\r\n var search = !ctrl.words.length ? '' : ctrl.words.join(' ');\r\n var prices = ctrl.PriceRange || {};\r\n\r\n ctrl.removeAllEnabled = ctrl.selected.length + ctrl.words.length > 1;\r\n\r\n if (!facets.length && !brands.length && !reviews.length && !types.length && search === '' && _.isEmpty(prices)) {\r\n gridCtrl.nbProducts = gridCtrl.totalProducts;\r\n gridCtrl.api.maxPage = gridCtrl.maxPage;\r\n gridCtrl.api.busy = false;\r\n gridCtrl.api.filtered = false;\r\n\r\n ctrl.FacetsSelected = [];\r\n\r\n $timeout(function () {\r\n gridCtrl.loaded(true);\r\n });\r\n\r\n get();\r\n\r\n return;\r\n }\r\n\r\n $timeout(function () {\r\n $rootScope.$broadcast('showPageLoader', true);\r\n });\r\n\r\n gridCtrl.api.busy = true;\r\n gridCtrl.reload = true;\r\n gridCtrl.api.filtered = true;\r\n gridCtrl.api.filteredActive = false;\r\n\r\n gridCtrl.api.facets = facets;\r\n gridCtrl.api.brands = brands;\r\n gridCtrl.api.reviews = reviews;\r\n gridCtrl.api.types = types;\r\n gridCtrl.api.prices = prices;\r\n\r\n CategoryService.getProducts(1, true, gridCtrl.sort, facets, brands, reviews, types, prices, search, ctrl.idCategory, gridCtrl.nbPerPage)\r\n .then(function (data) {\r\n gridCtrl.api.items = gridCtrl.api.items.concat(data.products);\r\n gridCtrl.api.filteredActive = true;\r\n gridCtrl.api.busy = false;\r\n gridCtrl.reload = false;\r\n gridCtrl.nbProducts = data.total;\r\n gridCtrl.noresult = gridCtrl.nbProducts === 0 ? true : false;\r\n\r\n gridCtrl.api.maxPage = Math.ceil(gridCtrl.nbProducts / gridCtrl.nbPerPage) ? Math.ceil(gridCtrl.nbProducts / gridCtrl.nbPerPage) : 1;\r\n\r\n $timeout(function () {\r\n $rootScope.$broadcast('showPageLoader', false);\r\n });\r\n\r\n setDataFilters(data, false);\r\n\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n function setDataFilters(data, initCheck) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n ctrl.filters = ctrl.filters || {};\r\n ctrl.filters.brands = data.brands;\r\n ctrl.filters.facets = data.facets;\r\n ctrl.filters.reviews = data.reviews;\r\n ctrl.filters.types = data.types;\r\n ctrl.filters.products = data.products;\r\n ctrl.filters.total = data.total;\r\n if (!ctrl.filters.prices) {\r\n ctrl.filters.prices = data.prices;\r\n } else {\r\n ctrl.filters.prices.minPrice = data.prices.minPrice;\r\n ctrl.filters.prices.maxPrice = data.prices.maxPrice;\r\n }\r\n\r\n ctrl.filters.pricesActive = false;\r\n if (ctrl.filters.prices.minPrice !== ctrl.filters.prices.maxPrice) {\r\n ctrl.filters.prices.minPrice = Math.floor(ctrl.filters.prices.minPrice / 10) * 10;\r\n ctrl.filters.prices.maxPrice = Math.ceil(ctrl.filters.prices.maxPrice / 10) * 10;\r\n if (!ctrl.PriceRange) {\r\n ctrl.filters.prices.selectedMinPrice = ctrl.filters.prices.minPrice;\r\n ctrl.filters.prices.selectedMaxPrice = ctrl.filters.prices.maxPrice;\r\n }\r\n\r\n if (ctrl.filters.prices.selectedMinPrice < ctrl.filters.prices.minPrice) {\r\n ctrl.filters.prices.selectedMinPrice = ctrl.filters.prices.minPrice;\r\n }\r\n if (ctrl.filters.prices.selectedMaxPrice > ctrl.filters.prices.maxPrice) {\r\n ctrl.filters.prices.selectedMaxPrice = ctrl.filters.prices.maxPrice;\r\n }\r\n\r\n var startMin,\r\n startMax;\r\n ctrl.filters.prices.options = {\r\n floor: ctrl.filters.prices.minPrice,\r\n ceil: ctrl.filters.prices.maxPrice,\r\n step: 10,\r\n minRange: 10,\r\n translate: function (value) {\r\n return value + ' €';\r\n },\r\n onStart: function () {\r\n startMin = ctrl.filters.prices.selectedMinPrice;\r\n startMax = ctrl.filters.prices.selectedMaxPrice;\r\n },\r\n // eslint-disable-next-line\r\n onEnd: function (sliderId, min, max) {\r\n if (min !== startMin || max !== startMax) {\r\n selectPrices(min, max);\r\n updateUrl();\r\n }\r\n startMin = null;\r\n startMax = null;\r\n }\r\n };\r\n ctrl.filters.pricesActive = true;\r\n }\r\n\r\n if (ctrl.filters.facets.length || ctrl.filters.brands.length || ctrl.filters.reviews.length || ctrl.filters.types.length) {\r\n ctrl.filters.reviews = _.filter(ctrl.filters.reviews, function (item) {\r\n return item.Name > 0;\r\n });\r\n ctrl.filters.brands.selectedCount = 0;\r\n ctrl.filters.reviews.selectedCount = 0;\r\n ctrl.filters.types.selectedCount = 0;\r\n\r\n _.each(ctrl.filters.facets, function (item) {\r\n item.selectedCount = 0;\r\n _.each(item.Values, function (itemValue) {\r\n itemValue.checkValue = itemValue.Value;\r\n itemValue.selectedValue = itemValue.Value;\r\n itemValue.ref = _.camelCase(itemValue.Value);\r\n itemValue.selected = false;\r\n if (item.Name.indexOf('Couleur') !== -1) {\r\n item.isColor = true;\r\n itemValue.colorImg = '/img/colors/21x21/' + _.kebabCase(itemValue.Value) + '.png';\r\n }\r\n if (item.Type === 'Vrai/Faux') {\r\n itemValue.checkValue = parseInt(itemValue.Value) === 0 ? translate.messages.No : translate.messages.Yes;\r\n itemValue.selectedValue = parseInt(itemValue.Value) === 0 ? item.Name + translate.messages.Colon + ' ' + translate.messages.No : item.Name + translate.messages.Colon + ' ' + translate.messages.Yes;\r\n itemValue.ref = _.camelCase(itemValue.checkValue);\r\n }\r\n });\r\n });\r\n\r\n var locSearch = {};\r\n _.each($location.search(), function (value, key) {\r\n if (key.indexOf('f') === 0) {\r\n locSearch[key] = value;\r\n }\r\n });\r\n if (!_.isEmpty(locSearch)) {\r\n _.each(locSearch, function (value, key) {\r\n if (key === 'fb') {\r\n _.each(ctrl.filters.brands, function (item) {\r\n item.selected = _.includes(value.split(','), String(item.Id));\r\n if (item.selected) {\r\n ctrl.filters.brands.selectedCount += 1;\r\n if (initCheck) {\r\n selectFilter(item, 'b', ctrl.BrandsSelected, false, true);\r\n }\r\n }\r\n });\r\n } else if (key === 'fr') {\r\n _.each(ctrl.filters.reviews, function (item) {\r\n item.selected = _.includes(value.split(','), String(item.Name));\r\n if (item.selected) {\r\n ctrl.filters.reviews.selectedCount += 1;\r\n if (initCheck) {\r\n selectFilter(item, 'r', ctrl.ReviewsSelected, true, true);\r\n }\r\n }\r\n });\r\n } else if (key === 'ft') {\r\n _.each(ctrl.filters.types, function (item) {\r\n item.selected = _.includes(value.split(','), String(item.Id));\r\n if (item.selected) {\r\n ctrl.filters.types.selectedCount += 1;\r\n if (initCheck) {\r\n selectFilter(item, 't', ctrl.ProductTypesSelected, false, true);\r\n }\r\n }\r\n });\r\n } else if (key === 'fp') {\r\n if (initCheck) {\r\n var arr = value.split(',');\r\n selectPrices(Number(arr[0]), Number(arr[1]));\r\n }\r\n } else if (key !== 'fs' && key.indexOf('f') === 0) {\r\n var item = _.find(ctrl.filters.facets, { Id: parseInt(key.slice(1)) });\r\n _.each(item.Values, function (itemValue) {\r\n itemValue.selected = _.includes(value.split(','), String(itemValue.ref));\r\n if (itemValue.selected) {\r\n item.selectedCount += 1;\r\n if (initCheck) {\r\n itemValue.selected = item.isColor ? !itemValue.selected : itemValue.selected;\r\n ctrl.setFacet(item, itemValue, true);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n if (!locSearch.c && !locSearch.q && !locSearch.p && initCheck && ctrl.selected.length) {\r\n set();\r\n }\r\n }\r\n\r\n }\r\n\r\n if ($location.search().fs !== undefined) {\r\n ctrl.words = _.replace($location.search().fs, /\\|/g, ' ').split(',');\r\n }\r\n\r\n ctrl.active = true;\r\n\r\n $timeout.cancel(ctrl.timeout);\r\n $rootScope.$broadcast('showPageLoader', true);\r\n ctrl.timeout = $timeout(function () {\r\n $rootScope.$broadcast('showPageLoader', false);\r\n }, 400);\r\n\r\n // gestion colonnage\r\n // ///////////////////////////////////////////////////////////////////////////\r\n\r\n ctrl.nbCols = ctrl.filters.brands.length ? 1 : 0;\r\n ctrl.nbCols = ctrl.filters.types.length ? ctrl.nbCols + 1 : ctrl.nbCols;\r\n ctrl.nbCols = ctrl.filters.prices.length ? ctrl.nbCols + 1 : ctrl.nbCols;\r\n ctrl.nbCols = ctrl.filters.reviews.length ? ctrl.nbCols + 1 : ctrl.nbCols;\r\n ctrl.nbCols = ctrl.filters.pricesActive ? ctrl.nbCols + 1 : ctrl.nbCols;\r\n ctrl.nbCols += ctrl.filters.facets.length;\r\n\r\n console.log('ctrl.nbCols' + ctrl.nbCols);\r\n\r\n if (ctrl.device.size === 'xl' && ctrl.nbCols > 7) {\r\n\r\n\r\n ctrl.nbColsActive = true;\r\n ctrl.nbColsActiveXL = true;\r\n // number of lines XL\r\n // ctrl.nbColsActiveLinesXL = Math.ceil(ctrl.nbCols / 7);\r\n // ctrl.nbColsActiveLinesNumberXL = 'xl-lines' + ctrl.nbColsActiveLinesXL;\r\n\r\n } else if (ctrl.device.size === 'lg' && ctrl.nbCols > 5) {\r\n\r\n ctrl.nbColsActive = true;\r\n ctrl.nbColsActiveLG = true;\r\n // number of lines LG\r\n // ctrl.nbColsActiveLinesLG = Math.ceil(ctrl.nbCols / 5);\r\n // ctrl.nbColsActiveLinesNumberLG = 'lg-lines' + ctrl.nbColsActiveLinesLG;\r\n\r\n } else if (ctrl.device.size === 'md' && ctrl.nbCols > 4) {\r\n\r\n ctrl.nbColsActive = true;\r\n ctrl.nbColsActiveMD = true;\r\n // number of lines LG\r\n // ctrl.nbColsActiveLinesMD = Math.ceil(ctrl.nbCols / 4);\r\n // ctrl.nbColsActiveLinesNumberMD = 'md-lines' + ctrl.nbColsActiveLinesMD;\r\n } else {\r\n\r\n ctrl.nbColsActive = false;\r\n ctrl.nbColsActiveXL = false;\r\n ctrl.nbColsActiveLG = false;\r\n ctrl.nbColsActiveMD = false;\r\n // ctrl.nbColsActiveLinesNumberXL = 'xl-lines1';\r\n // ctrl.nbColsActiveLinesNumberSM = 'sm-lines1';\r\n\r\n }\r\n\r\n ctrl.setNbColsActive = function () {\r\n ctrl.nbColsActive = !ctrl.nbColsActive;\r\n };\r\n // fin gestion colonnage\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n }]\r\n };\r\n });\r\n\r\n})();\r\n","/* https://github.com/sroze/ngInfiniteScroll/ */\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('infinite-scroll', [])\r\n\r\n .value('THROTTLE_MILLISECONDS', null)\r\n\r\n /* @ngInject */\r\n .directive('infiniteScroll', [\"$rootScope\", \"$window\", \"$interval\", \"THROTTLE_MILLISECONDS\", function ($rootScope, $window, $interval, THROTTLE_MILLISECONDS) {\r\n var directive = {\r\n link: link,\r\n restrict: 'A',\r\n scope: {\r\n infiniteScroll: '&',\r\n infiniteScrollContainer: '=',\r\n infiniteScrollDistance: '=',\r\n infiniteScrollDisabled: '=',\r\n infiniteScrollUseDocumentBottom: '=',\r\n infiniteScrollListenForEvent: '@'\r\n }\r\n };\r\n return directive;\r\n\r\n function link(scope, elem, attrs) {\r\n var windowElement = angular.element($window);\r\n\r\n var scrollDistance = null;\r\n var scrollEnabled = null;\r\n var checkWhenEnabled = null;\r\n var container = null;\r\n var immediateCheck = true;\r\n var useDocumentBottom = false;\r\n var unregisterEventListener = null;\r\n var checkInterval = false;\r\n var watcher = null;\r\n\r\n function height(element) {\r\n var el = element[0] || element;\r\n\r\n if (isNaN(el.offsetHeight)) {\r\n return el.document.documentElement.clientHeight;\r\n }\r\n return el.offsetHeight;\r\n }\r\n\r\n function pageYOffset(element) {\r\n var el = element[0] || element;\r\n\r\n if (isNaN(window.pageYOffset)) {\r\n return el.document.documentElement.scrollTop;\r\n }\r\n return el.ownerDocument.defaultView.pageYOffset;\r\n }\r\n\r\n function offsetTop(element) {\r\n if (!(!element[0].getBoundingClientRect || element.css('none'))) {\r\n return element[0].getBoundingClientRect().top + pageYOffset(element);\r\n }\r\n return undefined;\r\n }\r\n\r\n // infinite-scroll specifies a function to call when the window,\r\n // or some other container specified by infinite-scroll-container,\r\n // is scrolled within a certain range from the bottom of the\r\n // document. It is recommended to use infinite-scroll-disabled\r\n // with a boolean that is set to true when the function is\r\n // called in order to throttle the function call.\r\n function defaultHandler() {\r\n\r\n var containerBottom;\r\n var elementBottom;\r\n if (container === windowElement) {\r\n containerBottom = height(container) + pageYOffset(container[0].document.documentElement);\r\n elementBottom = offsetTop(elem) + height(elem);\r\n } else {\r\n containerBottom = height(container);\r\n var containerTopOffset = 0;\r\n if (offsetTop(container) !== undefined) {\r\n containerTopOffset = offsetTop(container);\r\n }\r\n elementBottom = offsetTop(elem) - containerTopOffset + height(elem);\r\n }\r\n\r\n if (useDocumentBottom) {\r\n elementBottom = height((elem[0].ownerDocument || elem[0].document).documentElement);\r\n }\r\n\r\n var remaining = elementBottom - containerBottom;\r\n var shouldScroll = remaining <= height(container) * scrollDistance + 1;\r\n if (shouldScroll) {\r\n checkWhenEnabled = true;\r\n if (scrollEnabled) {\r\n if (scope.$$phase || $rootScope.$$phase) {\r\n scope.infiniteScroll();\r\n } else {\r\n scope.$apply(scope.infiniteScroll);\r\n }\r\n }\r\n } else {\r\n if (checkInterval) { $interval.cancel(checkInterval); }\r\n checkWhenEnabled = false;\r\n }\r\n }\r\n\r\n // The optional THROTTLE_MILLISECONDS configuration value specifies\r\n // a minimum time that should elapse between each call to the\r\n // handler. N.b. the first call the handler will be run\r\n // immediately, and the final call will always result in the\r\n // handler being called after the `wait` period elapses.\r\n // A slimmed down version of underscore's implementation.\r\n function throttle(func, wait) {\r\n var timeout = null;\r\n var previous = 0;\r\n\r\n function later() {\r\n previous = new Date().getTime();\r\n $interval.cancel(timeout);\r\n timeout = null;\r\n return func.call();\r\n }\r\n\r\n function throttled() {\r\n var now = new Date().getTime();\r\n var remaining = wait - (now - previous);\r\n if (remaining <= 0) {\r\n $interval.cancel(timeout);\r\n timeout = null;\r\n previous = now;\r\n func.call();\r\n } else if (!timeout) {\r\n timeout = $interval(later, remaining, 1);\r\n }\r\n }\r\n\r\n return throttled;\r\n }\r\n\r\n var handler = (THROTTLE_MILLISECONDS !== null) ? throttle(defaultHandler, THROTTLE_MILLISECONDS) : defaultHandler;\r\n\r\n function handleDestroy() {\r\n // container.off('scroll', handler);\r\n if (container !== null && watcher !== null) {\r\n watcher();\r\n }\r\n if (unregisterEventListener !== null) {\r\n unregisterEventListener();\r\n unregisterEventListener = null;\r\n }\r\n if (checkInterval) {\r\n $interval.cancel(checkInterval);\r\n }\r\n }\r\n\r\n scope.$on('$destroy', handleDestroy);\r\n\r\n // infinite-scroll-distance specifies how close to the bottom of the page\r\n // the window is allowed to be before we trigger a new scroll. The value\r\n // provided is multiplied by the container height; for example, to load\r\n // more when the bottom of the page is less than 3 container heights away,\r\n // specify a value of 3. Defaults to 0.\r\n function handleInfiniteScrollDistance(v) {\r\n scrollDistance = parseFloat(v) || 0;\r\n }\r\n\r\n scope.$watch('infiniteScrollDistance', handleInfiniteScrollDistance);\r\n // If I don't explicitly call the handler here, tests fail. Don't know why yet.\r\n handleInfiniteScrollDistance(scope.infiniteScrollDistance);\r\n\r\n // infinite-scroll-disabled specifies a boolean that will keep the\r\n // infnite scroll function from being called; this is useful for\r\n // debouncing or throttling the function call. If an infinite\r\n // scroll is triggered but this value evaluates to true, then\r\n // once it switches back to false the infinite scroll function\r\n // will be triggered again.\r\n function handleInfiniteScrollDisabled(v) {\r\n scrollEnabled = !v;\r\n if (scrollEnabled && checkWhenEnabled) {\r\n checkWhenEnabled = false;\r\n handler();\r\n }\r\n }\r\n\r\n scope.$watch('infiniteScrollDisabled', handleInfiniteScrollDisabled);\r\n // If I don't explicitly call the handler here, tests fail. Don't know why yet.\r\n handleInfiniteScrollDisabled(scope.infiniteScrollDisabled);\r\n\r\n // use the bottom of the document instead of the element's bottom.\r\n // This useful when the element does not have a height due to its\r\n // children being absolute positioned.\r\n function handleInfiniteScrollUseDocumentBottom(v) {\r\n useDocumentBottom = v;\r\n }\r\n\r\n scope.$watch('infiniteScrollUseDocumentBottom', handleInfiniteScrollUseDocumentBottom);\r\n handleInfiniteScrollUseDocumentBottom(scope.infiniteScrollUseDocumentBottom);\r\n\r\n // infinite-scroll-container sets the container which we want to be\r\n // infinte scrolled, instead of the whole window. Must be an\r\n // Angular or jQuery element, or, if jQuery is loaded,\r\n // a jQuery selector as a string.\r\n function changeContainer(newContainer) {\r\n if (container != null) {\r\n container.off('scroll', handler);\r\n }\r\n\r\n container = newContainer;\r\n if (newContainer != null) {\r\n container.on('scroll', handler);\r\n }\r\n }\r\n\r\n changeContainer(windowElement);\r\n\r\n if (scope.infiniteScrollListenForEvent) {\r\n unregisterEventListener = $rootScope.$on(scope.infiniteScrollListenForEvent, handler);\r\n }\r\n\r\n function handleInfiniteScrollContainer(newContainer) {\r\n // TODO: For some reason newContainer is sometimes null instead\r\n // of the empty array, which Angular is supposed to pass when the\r\n // element is not defined\r\n // (https://github.com/sroze/ngInfiniteScroll/pull/7#commitcomment-5748431).\r\n // So I leave both checks.\r\n if ((!(newContainer != null)) || newContainer.length === 0) {\r\n return;\r\n }\r\n\r\n var newerContainer;\r\n\r\n if (newContainer.nodeType && newContainer.nodeType === 1) {\r\n newerContainer = angular.element(newContainer);\r\n } else if (typeof newContainer.append === 'function') {\r\n newerContainer = angular.element(newContainer[newContainer.length - 1]);\r\n } else if (typeof newContainer === 'string') {\r\n newerContainer = angular.element(document.querySelector(newContainer));\r\n } else {\r\n newerContainer = newContainer;\r\n }\r\n\r\n if (newerContainer == null) {\r\n throw new Error('invalid infinite-scroll-container attribute.');\r\n }\r\n changeContainer(newerContainer);\r\n }\r\n\r\n scope.$watch('infiniteScrollContainer', handleInfiniteScrollContainer);\r\n handleInfiniteScrollContainer(scope.infiniteScrollContainer || []);\r\n\r\n // infinite-scroll-parent establishes this element's parent as the\r\n // container infinitely scrolled instead of the whole window.\r\n if (attrs.infiniteScrollParent != null) {\r\n changeContainer(angular.element(elem.parent()));\r\n }\r\n\r\n // infinte-scoll-immediate-check sets whether or not run the\r\n // expression passed on infinite-scroll for the first time when the\r\n // directive first loads, before any actual scroll.\r\n if (attrs.infiniteScrollImmediateCheck != null) {\r\n immediateCheck = scope.$eval(attrs.infiniteScrollImmediateCheck);\r\n }\r\n\r\n function intervalCheck() {\r\n if (immediateCheck) {\r\n handler();\r\n }\r\n return $interval.cancel(checkInterval);\r\n }\r\n\r\n checkInterval = $interval(intervalCheck);\r\n return checkInterval;\r\n }\r\n\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.category.vente-privee', ['rzModule'])\r\n\r\n /* @ngInject */\r\n .directive('isVentePrivee', [\"$location\", \"$rootScope\", \"AppService\", \"$timeout\", \"$cookies\", \"DateService\", function ($location, $rootScope, AppService, $timeout, $cookies, DateService) {\r\n return {\r\n restrict: 'A',\r\n link: function (scope, element) {\r\n\r\n scope.isVentePriveeLogged = 'hidden';\r\n scope.fromVentePrivee = 'false';\r\n \r\n\r\n AppService.getParams().then(function (params) {\r\n if (!params.IsLogged) { \r\n \r\n setCookiesVP();\r\n $location.path('/'); \r\n scope.isVentePriveeLogged = 'hidden';\r\n\r\n } else {\r\n scope.isVentePriveeLogged = '';\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n scope.$on('delogUpdate', function () { \r\n $location.path('/');\r\n scope.isVentePriveeLogged = 'hidden';\r\n });\r\n\r\n function setCookiesVP() {\r\n $cookies.put('cookiesVP', 'true', {\r\n path: '/',\r\n expires: DateService.tomorrow()\r\n });\r\n }\r\n\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.category', ['infinite-scroll'])\r\n\r\n /* @ngInject */\r\n .factory('InfiniteScrollApi', [\"$location\", \"CategoryService\", \"CategoryCacheService\", \"RoutesService\", function ($location, CategoryService, CategoryCacheService, RoutesService) {\r\n var api = function (ctrl) {\r\n this.ctrl = ctrl;\r\n this.items = [];\r\n this.busy = false;\r\n this.page = ctrl.currentPage;\r\n this.facets = [];\r\n this.search = '';\r\n };\r\n\r\n api.prototype.nextPage = function () {\r\n if ($location.path().indexOf('-c-') === -1) return;\r\n\r\n if (!preProcess(this)) return;\r\n\r\n postProcess(this);\r\n };\r\n\r\n api.prototype.nextSearchPage = function () {\r\n if (!preProcess(this) || (this.ctrl.api.page === 1 && !this.ctrl.infiniteScroll)) return;\r\n\r\n this.search = $location.search().q || '';\r\n if (!this.search) {\r\n var routeUrl = '/' + RoutesService.getUrlByName('Search') + '/';\r\n var search = $location.path().split(routeUrl)[1];\r\n if (search) {\r\n this.search = search.indexOf('/') === -1 ? search : search.split('/')[0];\r\n }\r\n }\r\n this.search = decodeURI(this.search.replace('+', ' '));\r\n\r\n postProcess(this);\r\n };\r\n\r\n function preProcess(_this) {\r\n if (_this.maxPage === 0) return false;\r\n if (_this.busy || _this.page === _this.maxPage) return false;\r\n if (_this.filtered && !_this.filteredActive) return false;\r\n if (_this.page % _this.ctrl.iScrollMaxPages === 0) return false;\r\n\r\n return true;\r\n }\r\n\r\n function postProcess(_this) {\r\n _this.busy = true;\r\n CategoryService.getProducts(++_this.page, _this.filtered, _this.sort, _this.facets, _this.brands, _this.reviews, _this.types, _this.prices, _this.search, _this.idCategory, _this.nbPerPage)\r\n .then(function (data) {\r\n if (data) {\r\n _this.items = _this.items.concat(data.products);\r\n CategoryCacheService.set($location.url(), _this.page, _this.items, data.total);\r\n _this.busy = false;\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n return api;\r\n }])\r\n\r\n /* @ngInject */\r\n .directive('categoryProducts', function () {\r\n\r\n return {\r\n restrict: 'A',\r\n scope: true,\r\n bindToController: {\r\n idCategory: '<',\r\n currentPage: '<',\r\n totalProducts: '<',\r\n nbPerPage: '<',\r\n maxPage: '<',\r\n sort: '@',\r\n sortTitle: '@',\r\n filtered: '@',\r\n iScrollMaxPages: '<',\r\n device: '<'\r\n },\r\n controllerAs: 'categoryCtrl',\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$element\", \"$rootScope\", \"$document\", \"$timeout\", \"$location\", \"InfiniteScrollApi\", \"productsGridService\", \"CategoryCacheService\", \"CategoryService\", \"SearchRoutingService\", \"RoutingService\", \"RoutesService\", function (\r\n $scope,\r\n $element,\r\n $rootScope,\r\n $document,\r\n $timeout,\r\n $location,\r\n InfiniteScrollApi,\r\n productsGridService,\r\n CategoryCacheService,\r\n CategoryService,\r\n SearchRoutingService,\r\n RoutingService,\r\n RoutesService\r\n ) {\r\n if (window.isBot || window.isCache) return;\r\n var ctrl = this;\r\n\r\n CategoryService.setGridCtrl(ctrl);\r\n\r\n ctrl.$onInit = function () {\r\n\r\n ctrl.api = new InfiniteScrollApi(ctrl);\r\n ctrl.api.filtered = ctrl.filtered !== undefined;\r\n\r\n ctrl.api.idCategory = ctrl.idCategory;\r\n ctrl.api.nbPerPage = ctrl.nbPerPage;\r\n ctrl.api.maxPage = ctrl.maxPage;\r\n ctrl.api.sort = ctrl.sort;\r\n\r\n var cache = ctrl.api.sort !== undefined ? CategoryCacheService.get(ctrl.idCategory + ctrl.api.sort) : CategoryCacheService.get(ctrl.idCategory);\r\n\r\n if (cache) {\r\n ctrl.api.items = cache[1];\r\n ctrl.api.page = cache[0];\r\n CategoryCacheService.reset();\r\n }\r\n\r\n if (!ctrl.api.filtered) {\r\n ctrl.nbProducts = ctrl.totalProducts;\r\n ctrl.paginationEnabled = true;\r\n }\r\n\r\n ctrl.iScrollPage = Math.floor(ctrl.currentPage / ctrl.iScrollMaxPages);\r\n ctrl.iScrollNbPerPage = ctrl.api.nbPerPage * ctrl.iScrollMaxPages;\r\n };\r\n\r\n $element.find('.onload').removeClass('hidden');\r\n\r\n $scope.$on('$locationChangeStart', function (event, next, current) {\r\n if (SearchRoutingService.skip) {\r\n SearchRoutingService.skip = false;\r\n return;\r\n }\r\n SearchRoutingService.skip = false;\r\n if (next === current) {\r\n return;\r\n }\r\n ctrl.api.busy = true;\r\n if (ctrl.api.sort !== undefined) {\r\n CategoryCacheService.set(ctrl.idCategory + ctrl.api.sort, ctrl.api.page, ctrl.api.items);\r\n } else {\r\n CategoryCacheService.set(ctrl.idCategory, ctrl.api.page, ctrl.api.items);\r\n }\r\n });\r\n\r\n ctrl.loaded = function (reload) {\r\n reload = reload || false;\r\n $timeout(function () {\r\n productsGridService.resizeGrid('productsGrid', ctrl.device.size, !reload);\r\n $rootScope.$emit('lazyImg:refresh');\r\n });\r\n };\r\n\r\n ctrl.openDropdown = function (event) {\r\n var $button = $(event.currentTarget),\r\n $menu = $button.siblings('.dropdown-menu');\r\n if ($button.parent().hasClass('open')) {\r\n $menu.removeAttr('style');\r\n } else if (ctrl.device.xxs) {\r\n $menu.css({\r\n left: $button.offset().left * -1 + 10,\r\n width: $(document.body).width() - 20\r\n });\r\n\r\n var closeDropdown = function () {\r\n $menu.removeAttr('style');\r\n $document.off('click', closeDropdown);\r\n };\r\n\r\n $timeout(function () {\r\n $document.on('click', closeDropdown);\r\n }, 500);\r\n }\r\n };\r\n\r\n ctrl.setSort = function (event, value) {\r\n event.preventDefault();\r\n ctrl.sort = value;\r\n ctrl.sortTitle = event.target.innerText;\r\n $location.path($(event.target).attr('href'));\r\n };\r\n\r\n ctrl.gotoPage = function () {\r\n var page = ((ctrl.iScrollPage - 1) * ctrl.iScrollMaxPages) + 1,\r\n routing = RoutingService.get(),\r\n routeUrl = '/' + RoutesService.getUrlByName('SortedCategoryPage'),\r\n url = routeUrl\r\n .replace('{categoryName}', routing.to.params.categoryName)\r\n .replace('{categoryId:int}', routing.to.params.categoryId.split('-')[0])\r\n .replace('-{page:int}', page === 1 ? '' : '-' + page)\r\n .replace('/{sortType:alpha}', ctrl.api.sort === '' ? '' : '/' + ctrl.api.sort);\r\n\r\n RoutingService.scrollCache[RoutingService.getPath(url)] = 0;\r\n $location.path(url);\r\n };\r\n\r\n ctrl.showPagination = function () {\r\n if (window.isBot || window.isCache) return false;\r\n if (ctrl.api.busy) return false;\r\n if (ctrl.api.maxPage === 1) return false;\r\n if (ctrl.api.maxPage <= ctrl.iScrollMaxPages) return false;\r\n if (ctrl.api.page % ctrl.iScrollMaxPages !== 0 && ctrl.api.page !== ctrl.api.maxPage) return false;\r\n\r\n return true;\r\n };\r\n\r\n ctrl.showBtnMore = function () {\r\n if (window.isBot || window.isCache) return false;\r\n if (ctrl.api.filtered && ctrl.api.items.length === 0) return false;\r\n if (ctrl.api.busy) return false;\r\n if (ctrl.api.page === ctrl.api.maxPage) return false;\r\n if (ctrl.api.page % ctrl.iScrollMaxPages === 0) return false;\r\n\r\n return true;\r\n };\r\n\r\n }]\r\n };\r\n\r\n });\r\n\r\n angular.module('infinite-scroll').value('THROTTLE_MILLISECONDS', 250);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.category.service', [])\r\n\r\n /* @ngInject */\r\n .factory('CategoryCacheService', [\"$cacheFactory\", function ($cacheFactory) {\r\n var cache = $cacheFactory('categoryCache');\r\n return {\r\n set: function (key, page, obj) {\r\n cache.put(key, [page, obj]);\r\n },\r\n get: function (key) {\r\n return cache.get(key);\r\n },\r\n reset: function () {\r\n cache.removeAll();\r\n }\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .factory('CategoryFiltersCacheService', [\"$cacheFactory\", function ($cacheFactory) {\r\n var cache = $cacheFactory('filtersCache');\r\n return {\r\n set: function (key, obj) {\r\n cache.put(key, obj);\r\n },\r\n get: function (key) {\r\n return cache.get(key);\r\n }\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .factory('CategoryService', [\"$location\", \"HttpService\", function ($location, HttpService) {\r\n var ctrl;\r\n return {\r\n setGridCtrl: function (value) {\r\n ctrl = value;\r\n },\r\n getGridCtrl: function () {\r\n return ctrl;\r\n },\r\n getFilters: getFilters,\r\n setProducts: setProducts,\r\n getProducts: getProducts\r\n };\r\n\r\n // Functions\r\n\r\n function getFilters(idCategory) {\r\n return HttpService.post({\r\n url: '/Search/Query',\r\n data: {\r\n QueryFullText: '',\r\n NbFrom: '0',\r\n NbSize: '0',\r\n FiltersSelected: [\r\n {\r\n FieldName: 'IDCatalogueTheme',\r\n FieldValue: String(idCategory)\r\n }\r\n ]\r\n }\r\n })\r\n .then(function (data) {\r\n return data;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n function setProducts(data) {\r\n var i,\r\n j,\r\n len = data.length,\r\n arr = [];\r\n for (i = 0; i < len; i++) {\r\n var obj = {},\r\n current = data[i];\r\n\r\n obj.IDProduct = current.IDProduct;\r\n obj.Designation = current.Designation;\r\n obj.Text1 = current.Text1;\r\n obj.URL = current.URL;\r\n obj.IDPicture = current.MainPicture ? current.MainPicture.IDPicture : current.IDPicture;\r\n obj.ReviewsInfo = {Count: current.ReviewsInfo.Count, Average: Math.round(current.ReviewsInfo.Average)};\r\n obj.Themes = current.Themes;\r\n obj.HTMLShortDescription = current.HTMLShortDescription;\r\n obj.Price = current.Price;\r\n obj.Availability = current.Availability.AvailabilityMessage;\r\n obj.URL = current.URL;\r\n obj.IsGroupingProduct = current.IsGroupingProduct;\r\n obj.IsCustomizable = current.IsCustomizable;\r\n obj.AllowAddToCart = current.AllowAddToCart;\r\n obj.Brand = current.Brand;\r\n obj.Date1 = current.Date1;\r\n for (j = 0; j < obj.Themes.length; j++) {\r\n var th = obj.Themes[j];\r\n if (th.KeyTheme === 'Comparateur') {\r\n obj.isComparable = true;\r\n }\r\n if (th.KeyTheme === 'WithOutPrice') {\r\n obj.isWithOutPrice = true;\r\n } \r\n \r\n }\r\n arr.push(obj);\r\n }\r\n return arr;\r\n }\r\n\r\n function getProducts(page, filtered, sort, facets, brands, reviews, types, prices, search, idCategory, nbPerPage) {\r\n if (!filtered) {\r\n var path = $location.path(),\r\n url;\r\n if (search === '') {\r\n url = sort !== '' ? path.split('/' + sort)[0] + '-' + page + '/' + sort : path + '-' + page;\r\n } else {\r\n path = path.split('/').length > 2 ? path.slice(0, path.lastIndexOf('/')) : path;\r\n url = path + '?q=' + search + '&p=' + page;\r\n }\r\n return HttpService.get({\r\n url: url,\r\n cache: true\r\n })\r\n .then(function (data) {\r\n data.products = setProducts(data.products);\r\n return data;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n var sortParam = null;\r\n if (sort !== '') {\r\n switch (sort) {\r\n case 'ALPHAASC':\r\n sortParam = { FieldName: 'ArtDesignation', SortType: 'asc' };\r\n break;\r\n case 'ALPHADESC':\r\n sortParam = { FieldName: 'ArtDesignation', SortType: 'desc' };\r\n break;\r\n case 'PRICEASC':\r\n sortParam = { FieldName: 'PrixTTC', SortType: 'asc' };\r\n break;\r\n case 'PRICEDESC':\r\n sortParam = { FieldName: 'PrixTTC', SortType: 'desc' };\r\n break;\r\n // no default\r\n }\r\n }\r\n return HttpService.post({\r\n url: '/Search/Query',\r\n data: {\r\n QueryFullText: search,\r\n NbFrom: (page - 1) * nbPerPage,\r\n NbSize: nbPerPage,\r\n FiltersSelected: [\r\n {\r\n FieldName: 'IDCatalogueTheme',\r\n FieldValue: String(idCategory)\r\n }\r\n ],\r\n FacetsSelected: facets,\r\n BrandsSelected: brands,\r\n ReviewsSelected: reviews,\r\n ProductTypesSelected: types,\r\n PriceRangeSelected: prices,\r\n Sort: sortParam\r\n }\r\n })\r\n .then(function (data) {\r\n data.products = setProducts(data.products);\r\n return data;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n }\r\n }])\r\n\r\n /* @ngInject */\r\n .factory('SearchRoutingService', function () {\r\n var skip = false;\r\n return this;\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.form', ['thatisuday.dropzone'])\r\n\r\n /* @ngInject */\r\n .factory('FormService', [\"HttpService\", \"AppService\", \"ModalService\", function (HttpService, AppService, ModalService) {\r\n return {\r\n emailChanged: function (ctrl) {\r\n if (ctrl.form.Email.$valid) {\r\n AppService.getParams()\r\n .then(function (params) {\r\n if (!params.IsLogged) {\r\n HttpService.post({\r\n url: '/TestMailExist',\r\n data: {\r\n Email: ctrl.formData.Email\r\n }\r\n })\r\n .then(function (response) {\r\n if (response.status === 'ERROR') {\r\n for (var fieldName in response.errors) {\r\n if (fieldName === 'Global' && response.errors[fieldName].Errors[0].ErrorMessage === 'AccountExist') {\r\n ModalService.show(\r\n '/Template/Authentication/ModalAuthentication',\r\n {\r\n mailRecognized: ctrl.formData.Email\r\n },\r\n null,\r\n 'loginModalCtrl'\r\n );\r\n }\r\n }\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('ContactController', [\"$scope\", \"$timeout\", \"HttpService\", \"AppService\", \"FormService\", \"smoothScroll\", \"RoutesService\", function ($scope, $timeout, HttpService, AppService, FormService, smoothScroll, RoutesService) {\r\n var ctrl = this,\r\n unwatch;\r\n\r\n ctrl.formData = {\r\n Attachments: [],\r\n errors: {}\r\n };\r\n\r\n $scope.$on('$destroy', function () {\r\n if (typeof unwatch !== 'undefined') {\r\n unwatch();\r\n }\r\n });\r\n\r\n ctrl.focus = function () {\r\n ctrl.formData.errors.Global = null;\r\n };\r\n\r\n ctrl.init = function (object) {\r\n\r\n ctrl.formData.CustomerPro = true;\r\n ctrl.formData.CustomerPro = object.CustomerPro === 'True' ? true : false;\r\n \r\n\r\n unwatch = $scope.$watch('formCtrl.formData.CustomerPro', function (value) {\r\n if (!value) {\r\n ctrl.formData.IDCompanyTitle = '';\r\n ctrl.formData.Company = '';\r\n $timeout(function () {\r\n $('#IDCompanyTitle').selectpicker('val', '');\r\n });\r\n }\r\n });\r\n };\r\n\r\n ctrl.dzOptions = {\r\n paramName: 'files',\r\n acceptedFiles: 'image/jpeg, images/jpg, image/png, image/gif, .pdf, .doc, .docx, .xls, .xlsx, .zip',\r\n uploadMultiple: true,\r\n renameFilename: function (name) {\r\n return new Date().getTime() + '_!_' + name;\r\n }\r\n };\r\n\r\n ctrl.dzCallbacks = {\r\n successmultiple: function (files) {\r\n _.each(files, function (file) {\r\n ctrl.formData.Attachments.push({\r\n Name: file.name,\r\n ServerName: file.serverName\r\n });\r\n });\r\n },\r\n removedfile: function (file) {\r\n _.remove(ctrl.formData.Attachments, { Name: file.Name });\r\n }\r\n };\r\n\r\n ctrl.emailChanged = function () {\r\n FormService.emailChanged(ctrl);\r\n };\r\n\r\n ctrl.submit = function () {\r\n\r\n $scope.$emit('showPageLoader', true);\r\n\r\n ctrl.formData.errors = {};\r\n\r\n _.replace(ctrl.formData.Phone, / /g, '');\r\n _.replace(ctrl.formData.MobilePhone, / /g, '');\r\n\r\n HttpService.post({\r\n url: '/' + RoutesService.getUrlByName('Contact'),\r\n data: ctrl.formData\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n smoothScroll(document.body);\r\n ctrl.messageSent = true;\r\n $timeout(function () {\r\n ctrl.messageSentOK = true;\r\n }, 350);\r\n } else {\r\n _.each(response.errors, function (error, key) {\r\n if (key === 'Global') {\r\n ctrl.formData.errors[key] = translate.errors[error.Errors[0].ErrorMessage];\r\n }\r\n });\r\n }\r\n $scope.$emit('showPageLoader', false);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n ctrl.toggleCustomerPro = function (event) {\r\n if (event.which === 13) {\r\n event.preventDefault();\r\n ctrl.formData.CustomerPro = !ctrl.formData.CustomerPro;\r\n }\r\n };\r\n\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('CatalogRequestController', [\"$scope\", \"$timeout\", \"HttpService\", \"AppService\", \"FormService\", \"smoothScroll\", \"RoutesService\", function ($scope, $timeout, HttpService, AppService, FormService, smoothScroll, RoutesService) {\r\n var ctrl = this,\r\n unwatch;\r\n\r\n ctrl.formData = {\r\n RememberMe: false,\r\n CustomerPro: false,\r\n errors: {},\r\n Address: ' ',\r\n AddressApartment: ' ',\r\n AddressBuilding: ' ',\r\n AddressLocality: ' '\r\n };\r\n\r\n $scope.$on('$destroy', function () {\r\n if (typeof unwatch !== 'undefined') {\r\n unwatch();\r\n }\r\n });\r\n\r\n $timeout(function () {\r\n ctrl.formData.Address = '';\r\n ctrl.formData.AddressApartment = '';\r\n ctrl.formData.AddressBuilding = '';\r\n ctrl.formData.AddressLocality = '';\r\n });\r\n\r\n ctrl.focus = function () {\r\n ctrl.formData.errors.Global = null;\r\n };\r\n\r\n ctrl.init = function (object) {\r\n ctrl.formData.CustomerPro = object.CustomerPro === 'True' ? true : false;\r\n\r\n unwatch = $scope.$watch('accountCtrl.formData.CustomerPro', function (value) {\r\n if (!value) {\r\n ctrl.formData.IDCompanyTitle = '';\r\n ctrl.formData.Company = '';\r\n $timeout(function () {\r\n $('#IDCompanyTitle').selectpicker('val', '');\r\n });\r\n }\r\n });\r\n };\r\n\r\n ctrl.emailChanged = function () {\r\n FormService.emailChanged(ctrl);\r\n };\r\n\r\n ctrl.submit = function (event) {\r\n event.preventDefault();\r\n\r\n $scope.$emit('showPageLoader', true);\r\n\r\n _.replace(ctrl.formData.Phone, / /g, '');\r\n _.replace(ctrl.formData.MobilePhone, / /g, '');\r\n\r\n ctrl.formData.errors = {};\r\n\r\n HttpService.post({\r\n url: '/' + RoutesService.getUrlByName('CatalogRequest'),\r\n data: ctrl.formData\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n smoothScroll(document.body);\r\n ctrl.messageSent = true;\r\n $timeout(function () {\r\n ctrl.messageSentOK = true;\r\n }, 350);\r\n } else {\r\n _.each(response.errors, function (error, key) {\r\n if (key === 'Global') {\r\n ctrl.formData.errors[key] = translate.errors[error.Errors[0].ErrorMessage];\r\n }\r\n });\r\n }\r\n $scope.$emit('showPageLoader', false);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n ctrl.toggleCustomerPro = function (event) {\r\n if (event.which === 13) {\r\n event.preventDefault();\r\n ctrl.formData.CustomerPro = !ctrl.formData.CustomerPro;\r\n }\r\n };\r\n\r\n }])\r\n\r\n\t/* @ngInject */\r\n .controller('QuoteController', [\"$scope\", \"$timeout\", \"$document\", \"HttpService\", \"AppService\", \"ModalService\", \"smoothScroll\", \"Routes\", \"DefaultLocalization\", function ($scope, $timeout, $document, HttpService, AppService, ModalService, smoothScroll, Routes, DefaultLocalization) {\r\n\r\n var ctrl = this,\r\n unwatch;\r\n\r\n ctrl.formData = {\r\n Attachments: [],\r\n errors: {},\r\n };\r\n\r\n ctrl.focus = function () {\r\n ctrl.formData.errors.Global = null;\r\n };\r\n\r\n ctrl.init = function (object) {\r\n ctrl.formData.CustomerPro = object.CustomerPro == 'True' ? true : false;\r\n\r\n $scope.$watch('accountCtrl.formData.CustomerPro', function (value) {\r\n if (!value) {\r\n ctrl.formData.IDCompanyTitle = '';\r\n ctrl.formData.Company = '';\r\n $('#IDCompanyTitle').selectpicker('val', '');\r\n }\r\n });\r\n };\r\n\r\n ctrl.dzOptions = {\r\n paramName: 'files',\r\n acceptedFiles: 'image/jpeg, images/jpg, image/png, image/gif, .pdf, .doc, .docx, .xls, .xlsx, .zip',\r\n uploadMultiple: true,\r\n renameFilename: function (name) {\r\n return new Date().getTime() + '_!_' + name;\r\n }\r\n };\r\n\r\n ctrl.dzCallbacks = {\r\n successmultiple: function (files, responseText) {\r\n _.each(files, function (file) {\r\n ctrl.formData.Attachments.push({\r\n Name: file.name,\r\n ServerName: file.serverName\r\n });\r\n });\r\n },\r\n removedfile: function (file) {\r\n _.remove(ctrl.formData.Attachments, { Name: file.Name });\r\n }\r\n };\r\n\r\n ctrl.emailChanged = function () {\r\n FormService.emailChanged(ctrl);\r\n };\r\n\r\n ctrl.submit = function () {\r\n\r\n $scope.$emit('showPageLoader', true);\r\n\t\t\r\n ctrl.formData.errors = {};\r\n\r\n _.replace(ctrl.formData.Phone, / /g, '');\r\n _.replace(ctrl.formData.MobilePhone, / /g, '');\r\n ctrl.formData.FolderTypeKey = \"DEMANDE DEVIS\";\r\n ctrl.formData.Object = \"DEMANDE DEVIS\";\r\n\r\n HttpService.post({\r\n url: Routes.filter(function (r) { return r.Name === 'Contact'; })[0][DefaultLocalization].NGRoute,\r\n data: ctrl.formData\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status == 'OK') {\r\n smoothScroll(document.body);\r\n ctrl.messageSent = true;\r\n $timeout(function () {\r\n ctrl.messageSentOK = true;\r\n }, 350);\r\n } else {\r\n _.each(response.errors, function (error, key) {\r\n if (key == \"Global\") {\r\n ctrl.formData.errors[key] = translate.errors[error.Errors[0].ErrorMessage];\r\n }\r\n });\r\n }\r\n $scope.$emit('showPageLoader', false);\r\n })\r\n .catch(function (response) {\r\n console.error(response);\r\n });\r\n })\r\n .catch(function (response) {\r\n console.error(response);\r\n });\r\n };\r\n\r\n ctrl.toggleCustomerPro = function (event) {\r\n if (event.which == 13) {\r\n event.preventDefault();\r\n ctrl.formData.CustomerPro = !ctrl.formData.CustomerPro;\r\n }\r\n };\r\n\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n\r\n angular\r\n .module('isFromVentePrivee', [])\r\n\r\n /* @ngInject */\r\n .directive('isFromVentePrivee', function () {\r\n return {\r\n restrict: 'A',\r\n controllerAs: 'isFromVentePriveeCtrl',\r\n\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$rootScope\", \"$cookies\", \"ModalService\", function ($scope, $rootScope, $cookies, ModalService) {\r\n var ctrl = this;\r\n\r\n ctrl.$onInit = function () {\r\n\r\n if ($cookies.get('cookiesVP')) {\r\n\r\n ModalService.show(\r\n '/Template/Authentication/ModalAuthenticationVentePrivee',\r\n null,\r\n null,\r\n 'loginModalCtrlVentePrivee'\r\n );\r\n \r\n };\r\n\r\n $cookies.remove('cookiesVP');\r\n console.log('remove cookieVP');\r\n\r\n };\r\n\r\n //$scope.$on('fromVentePrivee', function () {\r\n // console.log('popup popup popup popup');\r\n // alert('popup popup');\r\n //});\r\n\r\n //$scope.$on('fromVentePrivee22', function () {\r\n // console.log('22222222');\r\n // alert('popup 22222222 popup');\r\n //});\r\n\r\n\r\n\r\n }]\r\n };\r\n });\r\n\r\n})();\r\n\r\n\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.product.customization', [])\r\n /* @ngInject */\r\n .component('customization', {\r\n require: {\r\n productCtrl: '^^productDetail'\r\n },\r\n bindings: {\r\n model: '<',\r\n showTTCPrice: ' (+ ' + $filter('price')(option.AdditionalCostTTC, 'value') + ')';\r\n option.content = option.content.replace(/\"/g, '\\'');\r\n }\r\n if (!ctrl.showTTCPrice && option.AdditionalCostHT) {\r\n option.content = option.Designation + ' (+ ' + $filter('price')(option.AdditionalCostHT, 'value', 'ht') + ')';\r\n option.content = option.content.replace(/\"/g, '\\'');\r\n }\r\n });\r\n }\r\n }\r\n if (item.Group) {\r\n _.each(item.Group.Fields, function (field) {\r\n if (field.CustomizationType === 1 && field.Code.indexOf('Date') !== -1) {\r\n field.isDate = true;\r\n field.reqPlaceholder = field.Required ? ' *' : '';\r\n }\r\n if (field.CustomizationType === 3) {\r\n _.each(field.Items, function (option) {\r\n option.content = option.Designation;\r\n if (ctrl.showTTCPrice && option.AdditionalCostTTC) {\r\n option.content = option.Designation + ' (+ ' + $filter('price')(option.AdditionalCostTTC, 'value') + ')';\r\n option.content = option.content.replace(/\"/g, '\\'');\r\n }\r\n if (!ctrl.showTTCPrice && option.AdditionalCostHT) {\r\n option.content = option.Designation + ' (+ ' + $filter('price')(option.AdditionalCostHT, 'value', 'ht') + ')';\r\n option.content = option.content.replace(/\"/g, '\\'');\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n refreshSelects();\r\n\r\n ctrl.update();\r\n ctrl.init = true;\r\n });\r\n\r\n };\r\n\r\n ctrl.dateOptions = {\r\n showWeeks: false,\r\n minDate: new Date(),\r\n yearRows: 2\r\n };\r\n ctrl.dateFormat = 'dd/MM/yyyy';\r\n\r\n ctrl.successfile = function (file, field) {\r\n field.Value = file.name;\r\n field.Comment = file.serverName;\r\n ctrl.update();\r\n };\r\n ctrl.removedfile = function (field) {\r\n field.Value = '';\r\n field.Comment = '';\r\n ctrl.update();\r\n };\r\n\r\n ctrl.update = function () {\r\n ctrl.productCtrl.setCustomization(ctrl.model, ctrl.tooltip);\r\n };\r\n\r\n // Functions\r\n\r\n function refreshSelects() {\r\n setTimeout(function () {\r\n $element.find('select.refresh').each(function (index, el) {\r\n $(el).selectpicker('refresh');\r\n });\r\n });\r\n }\r\n\r\n }]\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.product-kit', [])\r\n\r\n .component('kitComponents', {\r\n templateUrl: '/Template/Product/KitComponents',\r\n require: {\r\n productCtrl: '^^productDetail'\r\n },\r\n bindings: {\r\n idKit: '@',\r\n device: '<'\r\n },\r\n controllerAs: 'kitCtrl',\r\n /* @ngInject */\r\n controller: [\"$rootScope\", \"$element\", \"productService\", \"HttpService\", function ($rootScope, $element, productService, HttpService) {\r\n var ctrl = this;\r\n\r\n ctrl.attributes = {};\r\n\r\n ctrl.$onInit = function () {\r\n getComponents(ctrl.idKit);\r\n };\r\n\r\n ctrl.changeAttribute = function (uniqueId) {\r\n var current = _.find(ctrl.Components, function (component) {\r\n return component.uniqueId === uniqueId;\r\n });\r\n\r\n var url = current.URL || current.Product.URL;\r\n _.each(ctrl.attributes[uniqueId], function (attr) {\r\n url = attr === '' ? url : url + '/' + attr;\r\n });\r\n\r\n if (_.includes(url, '?')) {\r\n url += '&checkVisibility=false';\r\n } else {\r\n url += '?checkVisibility=false';\r\n }\r\n\r\n current.showLoader = true;\r\n HttpService.get({\r\n url: url,\r\n cache: true\r\n })\r\n .then(function (response) {\r\n current.Product = response;\r\n current.isPrimary = !current.Product.IsGroupingProduct || (current.Product.IsGroupingProduct && current.Product.SelectedProduct !== null);\r\n current.currentModel = current.Product.SelectedProduct || current.Product;\r\n updateComponent(current);\r\n current.showLoader = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n ctrl.selectCustomComponent = function (component, element) {\r\n if (element && !element.Product.AllowAddToCart) return;\r\n component.Product = !element ? null : element.Product;\r\n component.currentModel = !element ? null : component.Product;\r\n component.AdditionalCost = !element ? null : element.AdditionalCost;\r\n updateComponent(component);\r\n };\r\n\r\n ctrl.hasTheme = function (themes, keyTheme) {\r\n var themeCount = themes.filter(function (el) {\r\n return el.KeyTheme === keyTheme;\r\n });\r\n return themeCount.length > 0;\r\n };\r\n\r\n // Functions\r\n\r\n function getComponents(id) {\r\n ctrl.showLoader = true;\r\n HttpService.post({\r\n url: '/Product/GetComponents',\r\n data: id\r\n })\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n ctrl.Components = [];\r\n var customGroups = {},\r\n i = 0,\r\n firstOptional = false;\r\n _.each(response.results, function (component) {\r\n if (!firstOptional && !component.Required) {\r\n firstOptional = true;\r\n component.firstOptional = true;\r\n } else {\r\n component.firstOptional = false;\r\n }\r\n\r\n if (!component.Type) { // Pack standard\r\n var qty = component.KitQuantity;\r\n\r\n component = {\r\n Product: component,\r\n Quantity: qty,\r\n firstOptional: firstOptional\r\n };\r\n } else { // Pack Personnalisable\r\n if (!customGroups[component.Id]) {\r\n customGroups[component.Id] = true;\r\n component.groupTitle = component.Designation;\r\n component.groupFirstElement = true;\r\n }\r\n if ((component.Type === 901 || component.Type === 903) && !component.Product) return; // Fallback personnalisation sans article\r\n if (component.Type === 902) { // Liste d'articles\r\n var productDefault = _.find(component.Elements, function (element) {\r\n return element.Product.IDProduct === component.IDProductDefault && element.Product.AllowAddToCart;\r\n });\r\n if (component.groupFirstElement && productDefault) { // Si produit par défaut\r\n ctrl.selectCustomComponent(component, productDefault);\r\n }\r\n }\r\n }\r\n\r\n // Si le composant est un article simple et est un élémentaire, on met l'élémentaire dans Product\r\n if (component.Type === 901 && component.Product.IsGroupingProduct && component.Product.SelectedProduct) {\r\n component.Product = component.Product.SelectedProduct;\r\n }\r\n\r\n if (!((component.Type === 901 || component.Type === 903) && !component.Product)) { // Si le composant a bien un article on l'ajoute à la liste du controlleur\r\n ctrl.Components.push(component);\r\n component.uniqueId = component.Product ? component.Product.IDProduct + '_' + i : component.Id + '_' + i;\r\n ctrl.attributes[component.uniqueId] = [];\r\n initComponent(component);\r\n }\r\n\r\n i++;\r\n });\r\n\r\n refreshSelects();\r\n\r\n $rootScope.$broadcast('updateProduct');\r\n $rootScope.$broadcast('updateComment', productService.getProduct()[ctrl.idKit].Comment);\r\n }\r\n ctrl.showLoader = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n function initComponent(component) {\r\n if (component.Type === 901 || component.Type === 902) { // Pack personnalisable - Article simple ou liste d'articles\r\n component.isPrimary = true;\r\n component.currentModel = component.Product;\r\n } else if (component.Type === 903) { // Pack personnalisable - Article décliné\r\n component.isPrimary = !component.Product ? false : !component.Product.IsGroupingProduct || (component.Product.IsGroupingProduct && component.Product.SelectedProduct !== null);\r\n component.currentModel = !component.Product ? null : component.Product.SelectedProduct || component.Product;\r\n component.Attributes = !component.Product ? null : component.Product.Attributes;\r\n\r\n if (component.isPrimary) {\r\n var i = 0;\r\n\r\n _.each(component.Attributes, function (attr) {\r\n var attrValueSelected = _.find(attr.Values, { 'Selected': true });\r\n\r\n if (attrValueSelected) {\r\n ctrl.attributes[component.uniqueId][i] = attrValueSelected.Key;\r\n }\r\n\r\n i++;\r\n });\r\n }\r\n } else if (!component.Type) { // Pack standard -Article simple ou décliné\r\n component.isPrimary = !component.Product.IsGroupingProduct || (component.Product.IsGroupingProduct && component.Product.SelectedProduct !== null);\r\n component.currentModel = component.Product.SelectedProduct || component.Product;\r\n }\r\n\r\n productService.setKitElement(ctrl.idKit, component);\r\n }\r\n\r\n function updateComponent(component) {\r\n productService.setKitElement(ctrl.idKit, component);\r\n $rootScope.$broadcast('updateProduct');\r\n $rootScope.$broadcast('updateComment', productService.getProduct()[ctrl.idKit].Comment);\r\n }\r\n\r\n function refreshSelects() {\r\n setTimeout(function () {\r\n $element.find('select.refresh').each(function (index, el) {\r\n $(el).selectpicker('refresh');\r\n });\r\n });\r\n }\r\n }]\r\n });\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.product.price', [])\r\n /* @ngInject */\r\n .directive('productPrice', function () {\r\n return {\r\n restrict: 'E',\r\n require: {\r\n productCtrl: '^^productDetail'\r\n },\r\n bindToController: {\r\n jsonPrice: '=',\r\n prices: '<',\r\n txtFirstRange: '@',\r\n txtRange: '@',\r\n txtLastRange: '@'\r\n },\r\n /* @ngInject */\r\n controller: [\"$timeout\", function ($timeout) {\r\n var ctrl = this;\r\n\r\n ctrl.$onInit = function () {\r\n $timeout(function () {\r\n var prices = [{\r\n qty: 1,\r\n range: [0],\r\n HasDiscount: ctrl.jsonPrice.HasDiscount,\r\n Discount: ctrl.jsonPrice.Discount,\r\n HTDiscountedPrice: ctrl.jsonPrice.HTDiscountedPrice,\r\n TTCDiscountedPrice: ctrl.jsonPrice.TTCDiscountedPrice,\r\n HTPrice: ctrl.jsonPrice.HTPrice,\r\n TTCPrice: ctrl.jsonPrice.TTCPrice\r\n }];\r\n if (ctrl.jsonPrice.DegressivePrice) {\r\n var i = 0;\r\n _.each(ctrl.jsonPrice.DegressivePrice, function (item, key) {\r\n\r\n prices[i].range.push(Number(key));\r\n if (i === 0) {\r\n prices[i].caption = ctrl.txtFirstRange.replace('{0}', String(key));\r\n } else {\r\n prices[i].caption = ctrl.txtRange.replace('{0}', String(prices[i].range[0])).replace('{1}', String(key - 1));\r\n }\r\n\r\n prices.push({\r\n qty: Number(key),\r\n range: [Number(key)],\r\n caption: ctrl.txtLastRange.replace('{0}', String(key)),\r\n HasDiscount: item.HasDiscount,\r\n Discount: item.Discount,\r\n HTDiscountedPrice: item.HTDiscountedPrice,\r\n TTCDiscountedPrice: item.TTCDiscountedPrice,\r\n HTPrice: item.HTPrice,\r\n TTCPrice: item.TTCPrice\r\n });\r\n\r\n i++;\r\n });\r\n }\r\n ctrl.prices = prices;\r\n ctrl.productCtrl.setPricesData(prices, ctrl.jsonPrice.EcoContribution);\r\n });\r\n };\r\n }]\r\n };\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.product-gallery', [])\r\n\r\n /* @ngInject */\r\n .directive('productGallery', [\"$rootScope\", \"$compile\", \"CdnService\", function ($rootScope, $compile, CdnService) {\r\n var directive = {\r\n restrict: 'A',\r\n link: link\r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs) {\r\n\r\n var $main = element.find('.main-picture'),\r\n $img = $main.find('.main-img'),\r\n $sub = element.find('.sub-pictures'),\r\n $video = element.find('.main-video');\r\n\r\n var openLightGallery = function () {\r\n var dynamicEl = [];\r\n $sub.find('a').not('.video').each(function () {\r\n var $this = $(this);\r\n dynamicEl.push({ thumb: $this.data('zoom-thumb-url'), src: $this.data('zoom-url') });\r\n });\r\n $sub\r\n .on('onCloseAfter.lg', function (event) {\r\n $(event.target).removeData('lightGallery');\r\n })\r\n .lightGallery({\r\n nextHtml: '',\r\n prevHtml: '',\r\n fullscreenHtml: '',\r\n closeHtml: '',\r\n dynamic: true,\r\n dynamicEl: dynamicEl,\r\n index: $main.data('index'),\r\n mode: 'lg-slide',\r\n thumbnail: navigator.userAgent.toLowerCase().match(/(iphone|ipod)/) ? false : true\r\n });\r\n };\r\n\r\n /* suppression du loader lorsque l'image est chargée */\r\n $img.on('load', function () {\r\n scope.$apply(function () {\r\n scope.productCtrl.galleryImgLoader = false;\r\n });\r\n });\r\n\r\n scope.$on('initZoom', function (event) {\r\n scope.productCtrl.galleryImgLoader = true;\r\n CdnService.get(attrs.zoomId, attrs.zoomSize)\r\n .then(function (res) {\r\n $main.children('.inner').zoom({\r\n url: res,\r\n touch: false,\r\n duration: 400,\r\n callback: function () {\r\n scope.$apply(function () {\r\n scope.productCtrl.galleryImgLoader = false;\r\n });\r\n }\r\n });\r\n })\r\n .catch(function (err) {\r\n console.error(err);\r\n });\r\n });\r\n\r\n /* détruit le plugin Zoom */\r\n scope.$on('$destroy', function (event) {\r\n $main.children('.inner').trigger('zoom.destroy');\r\n });\r\n\r\n /* clic sur les images secondaires */\r\n $sub.on('click', '.visual', function (event) {\r\n event.preventDefault();\r\n var $this = $(this);\r\n\r\n /* class active sur image sélectionnée */\r\n $sub.find('.visual').removeClass('active');\r\n $this.addClass('active');\r\n\r\n if ($this.hasClass('video')) {\r\n $main.addClass('hidden');\r\n $video.removeClass('hidden');\r\n var html = '';\r\n var el = $compile(html)(scope);\r\n $video.children('.inner').html(el);\r\n return;\r\n }\r\n\r\n $main.removeClass('hidden');\r\n $video.addClass('hidden').html('
        ');\r\n\r\n /* définition de l'index pour galerie plein écran */\r\n $main.data('index', $this.parent().index());\r\n\r\n /* ajoute le loader */\r\n scope.$apply(function () {\r\n scope.productCtrl.galleryImgLoader = true;\r\n });\r\n\r\n /* change les src de l'image principale et du Zoom */\r\n $img.attr('src', $this.data('size-url'));\r\n $main.find('.zoomImg').attr('src', $this.data('zoom-url'));\r\n });\r\n\r\n /* clic sur l'image principale - ouvre la galerie plein écran */\r\n $main.data('index', 0).click(function (event) {\r\n if (typeof $.fn.lightGallery === 'undefined') {\r\n /* chargement ajax du plugin Lightgallery */\r\n $.ajax({\r\n url: '/js/jquery.lightgallery.min.js',\r\n dataType: 'script',\r\n cache: true,\r\n success: function () {\r\n openLightGallery();\r\n }\r\n });\r\n } else {\r\n openLightGallery();\r\n }\r\n });\r\n }\r\n }]);\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.product-share', [])\r\n /* @ngInject */\r\n .directive('socialshare', function () {\r\n return {\r\n restrict: 'A',\r\n scope: true,\r\n bindToController: {\r\n socialshare: '@',\r\n socialshareUrl: '@',\r\n socialshareText: '@?',\r\n socialshareMedia: '@?',\r\n socialshareHashtags: '@?',\r\n socialshareEmail: '@?',\r\n modalTitle: '@',\r\n resultMessage: '@?'\r\n },\r\n /* @ngInject */\r\n controller: [\"$element\", \"$window\", \"ModalService\", function ($element, $window, ModalService) {\r\n var ctrl = this;\r\n\r\n var appId = '529315197405570';\r\n\r\n $element.on('click', function () {\r\n switch (ctrl.socialshare) {\r\n case 'facebook':\r\n facebookShare();\r\n break;\r\n case 'twitter':\r\n twitterShare();\r\n break;\r\n case 'googleplus':\r\n googleplusShare();\r\n break;\r\n case 'email':\r\n emailShare();\r\n break;\r\n // no default\r\n }\r\n });\r\n\r\n function facebookShare() {\r\n var winWidth = 673,\r\n winHeight = 413;\r\n\r\n var urlString = 'https://www.facebook.com/dialog/share?app_id=' + appId + '&display=popup';\r\n urlString += '&href=' + encodeURIComponent(ctrl.socialshareUrl);\r\n urlString += ctrl.socialshareText ? '&title=' + encodeURIComponent(ctrl.socialshareText) : '';\r\n urlString += ctrl.socialshareHashtags ? '&hashtag=' + encodeURIComponent(ctrl.socialshareHashtags) : '';\r\n urlString += '&picture=';\r\n if (ctrl.socialshareMedia) urlString += encodeURIComponent(ctrl.socialshareMedia);\r\n\r\n $window.open(\r\n urlString,\r\n 'Facebook', 'toolbar=0,status=0,resizable=yes,width=' + winWidth + ',height=' + winHeight +\r\n ',top=' + ($window.innerHeight - winHeight) / 2 + ',left=' + ($window.innerWidth - winWidth) / 2);\r\n }\r\n function twitterShare() {\r\n var winWidth = 673,\r\n winHeight = 487;\r\n\r\n var urlString = 'https://www.twitter.com/intent/tweet?';\r\n urlString += ctrl.socialshareText ? 'text=' + encodeURIComponent(ctrl.socialshareText) : '';\r\n urlString += ctrl.socialshareHashtags ? '&hashtags=' + encodeURIComponent(ctrl.socialshareHashtags) : '';\r\n urlString += '&url=' + encodeURIComponent(ctrl.socialshareUrl);\r\n\r\n $window.open(\r\n urlString,\r\n 'Twitter', 'toolbar=0,status=0,resizable=yes,width=' + winWidth + ',height=' + winHeight +\r\n ',top=' + ($window.innerHeight - winHeight) / 2 + ',left=' + ($window.innerWidth - winWidth) / 2);\r\n }\r\n function googleplusShare() {\r\n var winWidth = 400,\r\n winHeight = 640;\r\n\r\n $window.open(\r\n 'https://plus.google.com/share?url=' + encodeURIComponent(ctrl.socialshareUrl),\r\n 'Google+', 'toolbar=0,status=0,resizable=yes,width=' + winWidth + ',height=' + winHeight +\r\n ',top=' + ($window.innerHeight - winHeight) / 2 + ',left=' + ($window.innerWidth - winWidth) / 2);\r\n }\r\n function emailShare() {\r\n ModalService.show(\r\n '/Template/Modal/ModalSendByEMail',\r\n {\r\n ViewEmail: ctrl.socialshareEmail,\r\n Url: ctrl.socialshareUrl\r\n },\r\n null,\r\n 'modalSendByEMailCtrl',\r\n null,\r\n null,\r\n {\r\n modalTitle: ctrl.modalTitle,\r\n resultMessage: ctrl.resultMessage\r\n }\r\n );\r\n }\r\n\r\n }]\r\n };\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('show.hide', [])\r\n /* @ngInject */\r\n .directive('showHide', function () {\r\n var directive = {\r\n restrict: 'A',\r\n bindToController: {\r\n device: '<'\r\n },\r\n scope: true,\r\n controllerAs: 'showHideCtrl',\r\n\r\n /* @ngInject */\r\n link: [\"scope\", \"element\", function (scope, element) {\r\n scope.$watch('brands', function () {\r\n console.log(\"brand: \" + element[0].offsetHeight);\r\n ctrl.height = ctrl.prop('offsetHeight');\r\n });\r\n }],\r\n /* @ngInject */\r\n controller: [\"WindowEventsService\", function (WindowEventsService) {\r\n\r\n var ctrl = this; \r\n\r\n ctrl.$onInit = function () {\r\n resize();\r\n };\r\n\r\n ctrl.$onDestroy = function () {\r\n WindowEventsService.listen(false, 'resize', resize);\r\n };\r\n\r\n WindowEventsService.listen(true, 'resize', resize, 300);\r\n\r\n function resize() {\r\n if (ctrl.device.size == 'lg' || ctrl.device.size == 'xl') {\r\n ctrl.isActiveDiv = false;\r\n ctrl.isActiveDivLarge = true;\r\n } else {\r\n ctrl.isActiveDiv = true;\r\n ctrl.isActiveDivLarge = false;\r\n }\r\n ctrl.activeDiv = function (element) {\r\n ctrl.isActiveDiv = !ctrl.isActiveDiv;\r\n }\r\n ctrl.activeDivLarge = function (element) {\r\n ctrl.isActiveDivLarge = !ctrl.isActiveDivLarge;\r\n }\r\n }\r\n }]\r\n };\r\n return directive;\r\n });\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.product', [])\r\n\r\n /* @ngInject */\r\n .directive('productDetail', function () {\r\n return {\r\n restrict: 'E',\r\n scope: false,\r\n bindToController: {\r\n id: ' 15) {\r\n ctrl.lengthDescriptionActive = true;\r\n }\r\n\r\n var product = {\r\n idProduct: ctrl.id,\r\n isPrimary: ctrl.isPrimary,\r\n designation: ctrl.designation,\r\n img: ctrl.img\r\n };\r\n productService.setProduct(ctrl.idGroup, _.merge(productsData[ctrl.idGroup], product));\r\n\r\n if (!(ctrl.isKit && ctrl.showComponents)) {\r\n ctrl.addToCartActive = productService.getActive();\r\n } else {\r\n ctrl.addToCartActive = false;\r\n }\r\n\r\n if (ctrl.modalCtrl && ctrl.modalCtrl.quantity) {\r\n ctrl.modalCtrl.data.id = ctrl.id;\r\n ctrl.modalCtrl.productsData = ctrl.getProductsToAdd(ctrl.modalCtrl.quantity, ctrl.modalCtrl.quantity);\r\n ctrl.modalCtrl.addToCartActive = ctrl.addToCartActive;\r\n\r\n var str = ctrl.modalCtrl.data.url.split('-p-')[1];\r\n var currentAttrs = str.slice(str.indexOf('/'));\r\n if (currentAttrs === ctrl.modalCtrl.updateFromCart) {\r\n ctrl.modalCtrl.addToCartActive = false;\r\n }\r\n }\r\n\r\n AppService.getParams()\r\n .then(function (params) {\r\n ctrl.showTTCPrice = params.Visitor.CardType.ShowTTCPrice;\r\n ctrl.showEcoContribution = true;\r\n //ctrl.checked = data.Product.CheckBox1;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n isInWishList();\r\n };\r\n\r\n $scope.$on('updateProduct', function () {\r\n ctrl.addToCartActive = productService.getActive();\r\n ctrl.setPrice(ctrl.quantity);\r\n });\r\n\r\n $scope.$on('updateNbReviews', function (event, value) {\r\n ctrl.nbReviews = value;\r\n });\r\n\r\n // Functions\r\n\r\n ctrl.setPricesData = function (prices, eco) {\r\n ctrl.prices = prices;\r\n ctrl.eco = eco;\r\n ctrl.setPrice(ctrl.quantity);\r\n };\r\n\r\n ctrl.setPrice = function (qty) {\r\n var productData = productService.getProduct()[ctrl.idGroup];\r\n ctrl.costHT = 0;\r\n ctrl.costTTC = 0;\r\n\r\n _.each(productData.elements, function (component) {\r\n ctrl.costHT += component.costHT || 0;\r\n ctrl.costTTC += component.costTTC || 0;\r\n });\r\n\r\n _.each(ctrl.prices, function (price) {\r\n if (_.inRange(qty, price.range[0], price.range[1] || 10000)) {\r\n ctrl.Price = price;\r\n ctrl.Price.EcoContribution = ctrl.eco;\r\n productService.setProductPrice(ctrl.idGroup, ctrl.Price, ctrl.costTTC, ctrl.costHT, ctrl.showTTCPrice);\r\n return false;\r\n }\r\n });\r\n };\r\n\r\n ctrl.initZoom = function () {\r\n if (!ctrl.galleryZoomInit) {\r\n ctrl.galleryZoomInit = true;\r\n $scope.$broadcast('initZoom');\r\n }\r\n };\r\n\r\n /* changement de dimensions */\r\n ctrl.changeAttribute = function () {\r\n var url = ctrl.urlGroup;\r\n _.each(ctrl.attributes, function (attribute) {\r\n url = attribute === '' ? url : url + '/' + attribute;\r\n });\r\n\r\n if (ctrl.modalCtrl) {\r\n ctrl.modalCtrl.productsData = ctrl.getProductsToAdd(ctrl.modalCtrl.quantity, ctrl.modalCtrl.quantity);\r\n $scope.modalCtrl.showLoader = true;\r\n $scope.modalCtrl.data.url = url;\r\n\r\n var $body = $('.modal-quick-view .modal-body');\r\n $body.css({ 'height': $body.height() + 'px' });\r\n } else {\r\n $location.path(url).replace();\r\n }\r\n };\r\n\r\n /* modification input quantity */\r\n ctrl.setInputQuantity = function (qty) {\r\n ctrl.quantity = qty || 1;\r\n ctrl.setPrice(qty);\r\n };\r\n\r\n ctrl.setCustomization = function (model, tooltip) {\r\n var btnEnabled = true,\r\n selected;\r\n ctrl.costTTC = 0;\r\n ctrl.costHT = 0;\r\n _.each(model.Items, function (item) {\r\n if (!item.Group) {\r\n if (item.Field.Value && item.Field.Value !== '') {\r\n ctrl.costTTC += item.Field.AdditionalCostTTC;\r\n ctrl.costHT += item.Field.AdditionalCostHT;\r\n if (item.Field.CustomizationType === 3) {\r\n selected = _.find(item.Field.Items, { 'IDCustomizationListItem': parseInt(item.Field.Value) });\r\n ctrl.costTTC += selected.AdditionalCostTTC;\r\n ctrl.costHT += selected.AdditionalCostHT;\r\n }\r\n } else if (item.Field.Required) {\r\n btnEnabled = false;\r\n }\r\n }\r\n if (item.Group) {\r\n _.each(item.Group.Fields, function (field) {\r\n if (field.Value && field.Value !== '') {\r\n ctrl.costTTC += field.AdditionalCostTTC;\r\n ctrl.costHT += field.AdditionalCostHT;\r\n if (field.CustomizationType === 3) {\r\n selected = _.find(field.Items, { 'IDCustomizationListItem': parseInt(field.Value) });\r\n ctrl.costTTC += selected.AdditionalCostTTC;\r\n ctrl.costHT += selected.AdditionalCostHT;\r\n }\r\n } else if (field.Required) {\r\n btnEnabled = false;\r\n }\r\n });\r\n }\r\n });\r\n ctrl.setPrice(ctrl.quantity);\r\n if (!btnEnabled) {\r\n $scope.$broadcast('updateTooltip', tooltip);\r\n ctrl.addToCartActive = false;\r\n } else {\r\n $scope.$broadcast('updateTooltip');\r\n ctrl.addToCartActive = true;\r\n }\r\n if (!ctrl.allowAddToCart) {\r\n ctrl.addToCartActive = false;\r\n }\r\n productService.setProductCustomization(ctrl.idGroup, model);\r\n $scope.$broadcast('updateComment', productService.getProduct()[ctrl.idGroup].Comment);\r\n };\r\n\r\n /* ajout panier */\r\n ctrl.setQuantity = function (inc) {\r\n ctrl.quantity = inc;\r\n productService.setProductQuantity(ctrl.idGroup, inc);\r\n };\r\n ctrl.getProductsToAdd = function (qty, inc) {\r\n ctrl.quantity = qty;\r\n ctrl.setPrice(qty);\r\n ctrl.setQuantity(inc);\r\n return productService.getProductsData();\r\n };\r\n\r\n /*popup infos livraisons*/\r\n ctrl.openCmsLivraison = function () {\r\n ModalService.show(\r\n '/Template/Modal/ModalCms',\r\n {\r\n url: '/page-cms/delailivraison'\r\n },\r\n 'lg',\r\n null,\r\n null,\r\n null,\r\n {\r\n modalTitle: '',\r\n modalAutoScroll: false\r\n }\r\n );\r\n };\r\n\r\n ctrl.setActiveTab = function (nb) {\r\n ctrl.active = nb;\r\n };\r\n\r\n ctrl.wishlist = function (IdProduct, message) {\r\n if (!ctrl.isPrimary || ctrl.isInWishList) return;\r\n\r\n AppService.getParams()\r\n .then(function (params) {\r\n if (params.IsLogged) {\r\n HttpService\r\n .post({\r\n url: '/Product/AddWishList',\r\n data: IdProduct\r\n })\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n ctrl.isInWishList = true;\r\n toastr.success('', decodeURI(message), {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n if (!params.IsManagementWishlistTracking) {\r\n $rootScope.$broadcast('userUpdate');\r\n }\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n } else {\r\n ModalService.show(\r\n '/Template/Product/ModalWishListConnect', {\r\n action: function () {\r\n ctrl.wishlist(IdProduct, message);\r\n }\r\n },\r\n null,\r\n 'wishListConnectModalCtrl'\r\n );\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n ctrl.giftlist = function (logged) {\r\n console.info({ giftlist_logged: logged, id: ctrl.id });\r\n };\r\n\r\n ctrl.openCmsLoyalty = function () {\r\n ModalService.show(\r\n '/Template/Modal/ModalCms',\r\n {\r\n url: '/page-cms/programme-fidelite'\r\n },\r\n 'lg',\r\n null,\r\n null,\r\n null,\r\n {\r\n modalTitle: 'Points fidélité',\r\n modalAutoScroll: false\r\n }\r\n );\r\n };\r\n\r\n ctrl.openModalReviews = function (id) {\r\n ModalService.show(\r\n '/Template/Product/ModalReviews',\r\n {\r\n id: id\r\n },\r\n null,\r\n 'modalReviewsCtrl'\r\n );\r\n };\r\n\r\n // Functions\r\n function isInWishList() {\r\n productService.isInWishList(ctrl.id)\r\n .then(function (value) {\r\n ctrl.isInWishList = value;\r\n });\r\n }\r\n }]\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .controller('wishListConnectModalCtrl', [\"data\", \"device\", \"options\", \"$location\", \"$uibModalInstance\", \"LogService\", \"RoutesService\", \"ModalService\", function (data, device, options, $location, $uibModalInstance, LogService, RoutesService, ModalService) {\r\n var ctrl = this;\r\n\r\n ctrl.register = function () {\r\n ModalService.close();\r\n LogService.redirect = {\r\n url: $location.path(),\r\n action: data.action\r\n };\r\n $location.path('/' + RoutesService.get().Login.url);\r\n };\r\n\r\n ctrl.connect = function () {\r\n LogService.redirect = {\r\n url: null,\r\n action: data.action\r\n };\r\n $uibModalInstance.closed.then(function () {\r\n ModalService.show(\r\n '/Template/Authentication/ModalAuthentication',\r\n null,\r\n null,\r\n 'loginModalCtrl'\r\n );\r\n });\r\n $uibModalInstance.close();\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('modalQuestionCtrl', [\"data\", \"device\", \"options\", \"HttpService\", \"AppService\", \"ModalService\", \"toastr\", function (data, device, options, HttpService, AppService, ModalService, toastr) {\r\n var ctrl = this;\r\n\r\n ctrl.data = data;\r\n\r\n var messageTitle;\r\n\r\n ctrl.successMessage = function (title) {\r\n messageTitle = title;\r\n };\r\n\r\n AppService.getParams()\r\n .then(function (params) {\r\n if (params.IsLogged) {\r\n ctrl.data.Email = params.Visitor.Email;\r\n ctrl.data.FirstName = params.Visitor.FirstName;\r\n ctrl.data.LastName = params.Visitor.LastName;\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n ctrl.submit = function () {\r\n ctrl.loading = true;\r\n\r\n HttpService.post({\r\n url: '/Product/QuestionProduct',\r\n data: ctrl.data\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n ModalService.close();\r\n toastr.success('', messageTitle, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n } else {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n ctrl.loading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('modalDemoCtrl', [\"data\", \"device\", \"options\", \"HttpService\", \"AppService\", \"ModalService\", \"toastr\", \"productService\", function (data, device, options, HttpService, AppService, ModalService, toastr, productService) {\r\n var ctrl = this;\r\n\r\n ctrl.data = data;\r\n\r\n var messageTitle;\r\n\r\n ctrl.successMessage = function (title) {\r\n messageTitle = title;\r\n };\r\n\r\n AppService.getParams()\r\n .then(function (dataTmp) {\r\n if (dataTmp.IsLogged) {\r\n ctrl.data.Email = dataTmp.Visitor.Email;\r\n ctrl.data.FirstName = dataTmp.Visitor.FirstName;\r\n ctrl.data.LastName = dataTmp.Visitor.LastName;\r\n }\r\n })\r\n .catch(function (response) {\r\n console.error(response);\r\n });\r\n\r\n ctrl.submit = function () {\r\n ctrl.loading = true;\r\n ctrl.data.Object = 'DEMANDE DE DEMO';\r\n ctrl.data.IDProduct = productService.getProductsData()[0].idProduct;\r\n HttpService\r\n .post({\r\n url: '/Product/FormProduct',\r\n data: ctrl.data\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n ModalService.close();\r\n toastr.success('', messageTitle, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n } else {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n ctrl.loading = false;\r\n })\r\n .catch(function (resp) {\r\n console.error(resp);\r\n });\r\n })\r\n .catch(function (response) {\r\n console.error(response);\r\n });\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('modalRentalCtrl', [\"data\", \"device\", \"options\", \"HttpService\", \"AppService\", \"ModalService\", \"toastr\", \"productService\", function (data, device, options, HttpService, AppService, ModalService, toastr, productService) {\r\n var ctrl = this;\r\n\r\n ctrl.data = data;\r\n var messageTitle;\r\n\r\n ctrl.successMessage = function (title) {\r\n messageTitle = title;\r\n };\r\n\r\n AppService.getParams()\r\n .then(function (dataTmp) {\r\n if (dataTmp.IsLogged) {\r\n ctrl.data = {};\r\n ctrl.data.Email = dataTmp.Visitor.Email;\r\n ctrl.data.FirstName = dataTmp.Visitor.FirstName;\r\n ctrl.data.LastName = dataTmp.Visitor.LastName;\r\n ctrl.data.Company = dataTmp.Visitor.Company;\r\n ctrl.data.MobilePhone = dataTmp.Visitor.MobilePhone;\r\n ctrl.data.Phone = dataTmp.Visitor.Phone;\r\n ctrl.data.IDCountry = dataTmp.Visitor.Country.IDCountry;\r\n }\r\n })\r\n .catch(function (response) {\r\n console.error(response);\r\n });\r\n\r\n ctrl.submit = function () {\r\n ctrl.loading = true;\r\n ctrl.data.Object = 'DEMANDE DE LOCATION';\r\n ctrl.data.IDProduct = productService.getProductsData()[0].idProduct;\r\n HttpService\r\n .post({\r\n url: '/Product/FormProduct',\r\n data: ctrl.data\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n ModalService.close();\r\n toastr.success('', messageTitle, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n } else {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n ctrl.loading = false;\r\n })\r\n .catch(function (resp) {\r\n console.error(resp);\r\n });\r\n })\r\n .catch(function (response) {\r\n console.error(response);\r\n });\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('modalQuoteProductCtrl', [\"data\", \"device\", \"options\", \"HttpService\", \"AppService\", \"ModalService\", \"toastr\", \"productService\", function (data, device, options, HttpService, AppService, ModalService, toastr, productService) {\r\n var ctrl = this;\r\n\r\n ctrl.data = data;\r\n var messageTitle;\r\n\r\n ctrl.successMessage = function (title) {\r\n messageTitle = title;\r\n };\r\n\r\n AppService.getParams()\r\n .then(function (dataTmp) {\r\n if (dataTmp.IsLogged) {\r\n ctrl.data.Email = dataTmp.Visitor.Email;\r\n ctrl.data.FirstName = dataTmp.Visitor.FirstName;\r\n ctrl.data.LastName = dataTmp.Visitor.LastName;\r\n }\r\n })\r\n .catch(function (response) {\r\n console.error(response);\r\n });\r\n\r\n ctrl.submit = function () {\r\n ctrl.loading = true;\r\n ctrl.data.Object = 'DEMANDE DE DEVIS ARTICLE';\r\n ctrl.data.IDProduct = productService.getProductsData()[0].idProduct;\r\n HttpService\r\n .post({\r\n url: '/Product/FormProduct',\r\n data: ctrl.data\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n ModalService.close();\r\n toastr.success('', messageTitle, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n } else {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n ctrl.loading = false;\r\n })\r\n .catch(function (resp) {\r\n console.error(resp);\r\n });\r\n })\r\n .catch(function (response) {\r\n console.error(response);\r\n });\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('modalQuoteExpressCtrl', [\"data\", \"device\", \"options\", \"HttpService\", \"AppService\", \"ModalService\", \"toastr\", \"productService\", function (data, device, options, HttpService, AppService, ModalService, toastr, productService) {\r\n var ctrl = this;\r\n\r\n ctrl.data = data;\r\n var messageTitle;\r\n\r\n ctrl.successMessage = function (title) {\r\n messageTitle = title;\r\n };\r\n\r\n AppService.getParams()\r\n .then(function (dataTmp) {\r\n if (dataTmp.IsLogged) {\r\n ctrl.data = {};\r\n ctrl.data.Email = dataTmp.Visitor.Email;\r\n ctrl.data.FirstName = dataTmp.Visitor.FirstName;\r\n ctrl.data.LastName = dataTmp.Visitor.LastName;\r\n ctrl.data.Company = dataTmp.Visitor.Company;\r\n ctrl.data.MobilePhone = dataTmp.Visitor.MobilePhone;\r\n ctrl.data.Phone = dataTmp.Visitor.Phone;\r\n ctrl.data.IDCountry = dataTmp.Visitor.Country.IDCountry;\r\n }\r\n })\r\n .catch(function (response) {\r\n console.error(response);\r\n });\r\n\r\n ctrl.submit = function () {\r\n ctrl.loading = true;\r\n ctrl.data.Object = 'DEVIS EXPRESS';\r\n ctrl.data.IDProduct = productService.getProductsData()[0].idProduct;\r\n ctrl.data.Product = productService.getProductsData().map(function (p) {\r\n return {\r\n Comment: p.Comment,\r\n Elements: p.Elements,\r\n IDProduct: p.idProduct,\r\n Quantity: p.quantity\r\n };\r\n })[0];\r\n HttpService\r\n .post({\r\n url: '/Product/QuoteExpress',\r\n data: ctrl.data\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n ModalService.close();\r\n toastr.success('', messageTitle, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n } else {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n ctrl.loading = false;\r\n })\r\n .catch(function (resp) {\r\n console.error(resp);\r\n });\r\n })\r\n .catch(function (response) {\r\n console.error(response);\r\n });\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('modalSendToAFriendCtrl', [\"data\", \"device\", \"options\", \"HttpService\", \"AppService\", \"ModalService\", \"toastr\", function (data, device, options, HttpService, AppService, ModalService, toastr) {\r\n var ctrl = this;\r\n\r\n ctrl.data = data;\r\n\r\n AppService.getParams()\r\n .then(function (params) {\r\n if (params.IsLogged) {\r\n ctrl.data.FirstName = params.Visitor.FirstName;\r\n ctrl.data.Email = params.Visitor.Email;\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n ctrl.submit = function () {\r\n ctrl.loading = true;\r\n\r\n HttpService.post({\r\n url: '/Product/SendToAFriend',\r\n data: ctrl.data\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n ModalService.close();\r\n toastr.success('', translate.messages.MessageSent, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n } else {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n ctrl.loading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('modalAvailabilityAlertCtrl', [\"data\", \"device\", \"options\", \"ModalService\", \"AppService\", \"HttpService\", \"toastr\", function (data, device, options, ModalService, AppService, HttpService, toastr) {\r\n var ctrl = this;\r\n ctrl.data = data;\r\n ctrl.data.Email = '';\r\n\r\n var messageTitle,\r\n messageText;\r\n\r\n ctrl.successMessage = function (title, text) {\r\n messageTitle = title;\r\n messageText = text;\r\n };\r\n\r\n ctrl.submit = function () {\r\n ctrl.loading = true;\r\n HttpService.post({\r\n url: '/Product/AvailabilityAlert',\r\n data: ctrl.data\r\n })\r\n .then(function (response) {\r\n ctrl.loading = false;\r\n if (response.status === 'OK') {\r\n ModalService.close();\r\n toastr.success(messageText, messageTitle, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n } else {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('modalReviewsCtrl', [\"data\", \"device\", \"options\", \"HttpService\", function (data, device, options, HttpService) {\r\n var ctrl = this;\r\n ctrl.data = data;\r\n\r\n ctrl.showLoader = true;\r\n\r\n HttpService.get({\r\n url: '/Reviews/' + ctrl.data.id + '/0/100/RateDESC/0',\r\n cache: false\r\n })\r\n .then(function (response) {\r\n ctrl.data = response;\r\n ctrl.showLoader = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('modalQuickViewCtrl', [\"data\", \"device\", \"options\", \"$scope\", function (data, device, options, $scope) {\r\n var ctrl = this;\r\n ctrl.data = data;\r\n ctrl.device = device;\r\n ctrl.options = options;\r\n ctrl.showLoader = true;\r\n $scope.device = device;\r\n\r\n ctrl.onLoad = function () {\r\n ctrl.showLoader = false;\r\n setTimeout(function () {\r\n $('.modal-quick-view .modal-body').removeAttr('style');\r\n });\r\n };\r\n }]);\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.product.service', [])\r\n\r\n /* @ngInject */\r\n .factory('productService', [\"HttpService\", function (HttpService) {\r\n var products = {};\r\n return {\r\n setProduct: function (idGroup, product) {\r\n products = {};\r\n products[idGroup] = product;\r\n },\r\n setProductQuantity: function (idGroup, value) {\r\n products[idGroup].quantity = value;\r\n },\r\n setProductPrice: function (idGroup, price, costTTC, costHT, showTTCPrice) {\r\n products[idGroup].Price = price;\r\n products[idGroup].costTTC = costTTC;\r\n products[idGroup].costHT = costHT;\r\n products[idGroup].showTTCPrice = showTTCPrice;\r\n },\r\n setProductCustomization: function (idGroup, value) {\r\n products[idGroup].Customization = value;\r\n var customization = _.cloneDeep(value);\r\n _.each(customization.Items, function (item) {\r\n if (!item.Group) {\r\n item.Field.Comment = null;\r\n }\r\n if (item.Group) {\r\n _.each(item.Group.Fields, function (field) {\r\n field.Comment = null;\r\n });\r\n }\r\n });\r\n products[idGroup].Comment = md5(angular.toJson(customization));\r\n },\r\n setKitElement: function (idKit, component) {\r\n if (component.Type && component.Type === 901 && component.Type === 903 && !component.Required && !component.Product) return;\r\n var product = products[idKit];\r\n\r\n if (!product.elements) product.elements = {};\r\n if (!product.elements[component.uniqueId]) product.elements[component.uniqueId] = {};\r\n\r\n if (component.ProductPrices) {\r\n component.AdditionalCost = {\r\n TTCPrice: component.Product.SelectedProduct &&\r\n component.ProductPrices[component.Product.SelectedProduct.IDProduct]\r\n ? component.ProductPrices[component.Product.SelectedProduct.IDProduct].TTCPrice\r\n : 0,\r\n HTPrice: component.Product.SelectedProduct &&\r\n component.ProductPrices[component.Product.SelectedProduct.IDProduct]\r\n ? component.ProductPrices[component.Product.SelectedProduct.IDProduct].HTPrice\r\n : 0\r\n };\r\n }\r\n\r\n product.elements[component.uniqueId] = {\r\n idKitComponent: component.Id || 0,\r\n type: component.Type,\r\n idProduct: component.Product ? component.currentModel.IDProduct : 0,\r\n quantity: component.Quantity,\r\n isPrimary: component.isPrimary,\r\n allowAddToCart: component.currentModel ? component.currentModel.AllowAddToCart : false,\r\n required: component.Required || false,\r\n costTTC: component.AdditionalCost ? (component.AdditionalCost.TTCDiscountedPrice > 0 ? component.AdditionalCost.TTCDiscountedPrice : component.AdditionalCost.TTCPrice) : 0,\r\n costHT: component.AdditionalCost ? (component.AdditionalCost.HTDiscountedPrice > 0 ? component.AdditionalCost.HTDiscountedPrice : component.AdditionalCost.HTPrice) : 0\r\n };\r\n\r\n product.Elements = [];\r\n _.each(product.elements, function (element) {\r\n if (element.isPrimary && element.idProduct !== 0) {\r\n product.Elements.push({\r\n IDKitComponent: element.idKitComponent,\r\n IDProduct: element.idProduct,\r\n Quantity: element.quantity\r\n });\r\n }\r\n });\r\n product.Comment = md5(angular.toJson(product.Elements));\r\n },\r\n getProduct: function () {\r\n return products;\r\n },\r\n getProductsData: function () {\r\n var data = [];\r\n _.each(products, function (product) {\r\n data.push(product);\r\n });\r\n return data;\r\n },\r\n getProductCustomisation: function (idGroup) {\r\n return (products[idGroup] && products[idGroup].Customization) ? products[idGroup].Customization : null;\r\n },\r\n getActive: function () {\r\n var result = true;\r\n _.each(products, function (product) {\r\n if (!product.isPrimary || product.kitHasComponentRequired) {\r\n result = false;\r\n return false;\r\n }\r\n _.each(product.elements, function (component) {\r\n if (!component.type) {\r\n if (!component.allowAddToCart) {\r\n result = false;\r\n return false;\r\n }\r\n } else if (component.type === 901 || component.type === 903) {\r\n if (component.required && !component.allowAddToCart) {\r\n result = false;\r\n return false;\r\n }\r\n } else if (component.type === 902) {\r\n if (component.required && !component.allowAddToCart) {\r\n result = false;\r\n return false;\r\n }\r\n }\r\n });\r\n });\r\n return result;\r\n },\r\n isInWishList: function (id) {\r\n return HttpService\r\n .get({\r\n url: '/WishList/Products',\r\n cache: false\r\n })\r\n .then(function (response) {\r\n var result = false;\r\n _.each(response.results.Products, function (line) {\r\n if (line.Product.IDProduct === id) {\r\n result = true;\r\n return false;\r\n }\r\n });\r\n return result;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n };\r\n }]);\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n \t.module('app.product.reviews', [])\r\n\r\n \t.value('ReviewsConfig', {\r\n \t\tnb: 3\r\n \t})\r\n\r\n /* @ngInject */\r\n .factory('ReviewsService', [\"$http\", \"$cacheFactory\", function ($http, $cacheFactory) {\r\n \tvar reviewsCache = $cacheFactory('reviewsCache', { capacity: 100 });\r\n return {\r\n \taddReview: function (url, data) {\r\n \t\treturn $http({\r\n\t\t\t\t method: 'POST',\r\n\t\t\t\t\t\t url: url,\r\n\t\t\t\t\t\t headers: {\r\n\t\t\t\t\t\t 'Content-type': 'application/json',\r\n\t\t\t\t\t\t 'X-Requested-With': 'jsonHttpRequest'\r\n\t\t\t\t\t\t },\r\n\t\t\t\t data: data\r\n\t\t\t\t })\r\n .then(function (response) {\r\n return response.data;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n \t},\r\n getReviews: function (id, page, top, sort, note) {\r\n \treturn $http({\r\n method: 'GET',\r\n url: '/Reviews/' + id + '/' + page + '/' + top + '/' + sort + '/' + note,\r\n headers: {\r\n 'Content-type': 'application/json',\r\n 'X-Requested-With': 'jsonHttpRequest'\r\n },\r\n cache: reviewsCache\r\n })\r\n \t\t.then(function (response) {\r\n return response.data;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n },\r\n setRelevance: function (id, positive) {\r\n \tvar action = positive ? 'PositiveRelevance' : 'NegativeRelevance';\r\n \treturn $http({\r\n method: 'GET',\r\n url: '/Reviews/Add/' + action + '/' + id,\r\n headers: {\r\n 'Content-type': 'application/json',\r\n 'X-Requested-With': 'jsonHttpRequest'\r\n },\r\n cache: true\r\n })\r\n .then(function (response) {\r\n return response.data;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n },\r\n clearReviewsCache: function () {\r\n \treviewsCache.removeAll();\r\n }\r\n };\r\n }])\r\n\r\n .component('productReviews', {\r\n templateUrl: '/Template/Reviews/Reviews',\r\n bindings: {\r\n id: '=idProduct',\r\n message: '@'\r\n },\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$timeout\", \"$cacheFactory\", \"$cookies\", \"AppService\", \"ReviewsService\", \"ReviewsConfig\", \"toastr\", function ($scope, $timeout, $cacheFactory, $cookies, AppService, ReviewsService, ReviewsConfig, toastr) {\r\n var ctrl = this;\r\n\r\n ctrl.data = {};\r\n\r\n ctrl.itemsPerPage = ReviewsConfig.nb;\r\n ctrl.maxSize = 5;\r\n\r\n ctrl.$onInit = function () {\r\n ctrl.getReviews();\r\n };\r\n\r\n ctrl.setPage = function () {\r\n ctrl.getReviews(ctrl.currentPage, ctrl.data.Reviews.CurrentSort, ctrl.data.Reviews.CurrentFilter);\r\n };\r\n\r\n ctrl.setShowForm = function (value) {\r\n ctrl.showForm = value;\r\n if (!value) {\r\n ctrl.formAdd.$hideValidation();\r\n }\r\n };\r\n\r\n ctrl.addReview = function () {\r\n ctrl.showLoader = true;\r\n ctrl.formAdd.data.idProduct = ctrl.id;\r\n ReviewsService.addReview('/Reviews/Add', ctrl.formAdd.data)\r\n .then(function (response) {\r\n if (response.status == 'OK') {\r\n toastr.success('', ctrl.message, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n ctrl.formAdd.data = {\r\n score: 5\r\n };\r\n $timeout(function () {\r\n ctrl.formAdd.$resetValidation();\r\n });\r\n\r\n ctrl.showForm = false;\r\n $scope.$emit('updateNbReviews', ctrl.data.Count + 1);\r\n ctrl.getReviews(1, 'DateDESC', 0);\r\n } else {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n });\r\n }\r\n ctrl.showLoader = true;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n ctrl.getAveragePercent = function (w) {\r\n var n = (w * (ctrl.data.Average / 5)).toFixed(2);\r\n return {'clip': 'rect(0px, ' + n + 'px, 30px, 0px)'};\r\n };\r\n ctrl.getGradePercent = function (count) {\r\n return {'width': Math.floor(count / ctrl.data.Count * 100) + '%'};\r\n };\r\n\r\n ctrl.getReviews = function (page, sort, note) {\r\n page \t\t= page || 1;\r\n sort \t\t= sort || 'RateDESC';\r\n note \t\t= note || 0;\r\n\r\n ctrl.showLoader = true;\r\n ReviewsService.getReviews(ctrl.id, page, ReviewsConfig.nb, sort, note)\r\n .then(function (data) {\r\n ctrl.data = data;\r\n ctrl.showForm = ctrl.data.Count === 0 ? true : false;\r\n ctrl.currentPage = page;\r\n ctrl.showLoader = false;\r\n\r\n var cookies = $cookies.getObject('reviewsRelevance') || {};\r\n\r\n _.each(ctrl.data.Reviews.CurrentPageReviews, function (review) {\r\n review.Response = _.trim(review.Response);\r\n if (cookies[review.IDReview]) {\r\n review.inactive = true;\r\n }\r\n });\r\n\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n ctrl.setRelevance = function (review, positive) {\r\n\r\n if (review.inactive) return;\r\n\r\n var id = review.IDReview,\r\n cookies = $cookies.getObject('reviewsRelevance') || {};\r\n\r\n cookies[id] = true;\r\n\r\n var now = new Date(),\r\n exp = new Date(now.getFullYear() + 1, now.getMonth(), now.getDate());\r\n\r\n $cookies.putObject('reviewsRelevance', cookies, {\r\n path: '/',\r\n expires: exp\r\n });\r\n\r\n ctrl.showLoader = true;\r\n ReviewsService.setRelevance(id, positive)\r\n .then(function (data) {\r\n ReviewsService.clearReviewsCache();\r\n ctrl.getReviews(ctrl.currentPage, ctrl.data.Reviews.CurrentSort, ctrl.data.Reviews.CurrentFilter);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n };\r\n\r\n ctrl.setSort = function (sort) {\r\n ctrl.getReviews(0, sort, ctrl.data.Reviews.CurrentFilter);\r\n };\r\n\r\n ctrl.setFilter = function (filter, nb) {\r\n if (!nb) return;\r\n ctrl.getReviews(0, ctrl.data.Reviews.CurrentSort, filter);\r\n };\r\n\r\n ctrl.removeFilter = function () {\r\n ctrl.getReviews(0, ctrl.data.Reviews.CurrentSort, '');\r\n };\r\n\r\n }],\r\n controllerAs: 'reviewsCtrl'\r\n })\r\n\r\n .directive('reviewsLink', [\"ModalService\", function (ModalService) {\r\n return {\r\n restrict: 'A',\r\n scope: true,\r\n bindToController: true,\r\n controllerAs: 'ctrl',\r\n controller: function () {\r\n var ctrl = this;\r\n\r\n ctrl.openReview = function (id, designation) {\r\n ModalService.show(\r\n '/Reviews/' + id + '?view=ModalReviews',\r\n {\r\n designation: designation\r\n },\r\n 'lg'\r\n );\r\n };\r\n }\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('formReviewsController', [\"$rootScope\", \"$location\", \"AppService\", \"ReviewsService\", \"toastr\", function ($rootScope, $location, AppService, ReviewsService, toastr) {\r\n var ctrl = this;\r\n\r\n ctrl.init = function (id, url, token, message) {\r\n ctrl.id = id;\r\n ctrl.url = url;\r\n ctrl.token = token;\r\n ctrl.messageOK = message;\r\n };\r\n\r\n ctrl.addReview = function () {\r\n $rootScope.$broadcast('showPageLoader', true);\r\n ctrl.formAdd.data.IDProduct = ctrl.id;\r\n ctrl.formAdd.data.Token = ctrl.token;\r\n ReviewsService.addReview('/FormReviews/Add', ctrl.formAdd.data)\r\n .then(function (response) {\r\n if (response.status === 'OK') {\r\n toastr.success('', ctrl.messageOK, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n $location.path(ctrl.url);\r\n } else {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n $rootScope.$broadcast('showPageLoader', false);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.search', [])\r\n\r\n .directive('searchResultAdvice', function () {\r\n return {\r\n restrict: 'E',\r\n scope: true,\r\n bindToController: {\r\n search: '@'\r\n },\r\n controllerAs: 'searchCtrl',\r\n /* @ngInject */\r\n controller: [\"$element\", \"HttpService\", function ($element, HttpService) {\r\n var ctrl = this;\r\n\r\n ctrl.$onInit = function () {\r\n searchApi();\r\n };\r\n\r\n // Functions\r\n\r\n function searchApi() {\r\n HttpService.post({\r\n url: '/Search/SearchQuery',\r\n data: {\r\n QueryFullText: ctrl.search,\r\n NbFrom: '0',\r\n NbSize: '100',\r\n FiltersExcluded: [\r\n {\r\n FieldName: 'KeyWebAspect',\r\n FieldValue: 'Default'\r\n },\r\n {\r\n FieldName: 'KeyWebAspect',\r\n FieldValue: 'Financier'\r\n }\r\n ]\r\n }\r\n })\r\n .then(function (data) {\r\n ctrl.items = data;\r\n ctrl.count = data.length;\r\n if (ctrl.count > 0) {\r\n $element.removeClass('hidden');\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n }]\r\n };\r\n });\r\n})();\r\n","/*\r\n * angucomplete-alt v3.0.0\r\n * Autocomplete directive for AngularJS\r\n * This is a fork of Daryl Rowland's angucomplete with some extra features.\r\n * By Hidenari Nozaki\r\n * https://github.com/ghiden/angucomplete-alt\r\n */\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n\r\n .module('angucomplete-alt', [])\r\n\r\n .directive('angucompleteAlt', [\"$q\", \"$timeout\", function ($q, $timeout) {\r\n // keyboard events\r\n var KEY_DW = 40;\r\n var KEY_RT = 39;\r\n var KEY_UP = 38;\r\n var KEY_LF = 37;\r\n var KEY_ES = 27;\r\n var KEY_EN = 13;\r\n var KEY_TAB = 9;\r\n\r\n var MIN_LENGTH = 3;\r\n var MAX_LENGTH = 524288; // the default max length per the html maxlength attribute\r\n var PAUSE = 500;\r\n var BLUR_TIMEOUT = 200;\r\n\r\n // string constants\r\n var TEMPLATE_URL = 'autocomplete-template.html';\r\n\r\n function link(scope, elem, attrs) {\r\n var inputField = elem.find('input');\r\n var minlength = MIN_LENGTH;\r\n var searchTimer = null;\r\n var hideTimer;\r\n var validState = null;\r\n var httpCanceller = null;\r\n var httpCallInProgress = false;\r\n\r\n scope.currentIndex = null;\r\n scope.searching = false;\r\n\r\n scope.$on('angucomplete-alt:clearInput', function (event, elementId) {\r\n if (!elementId || elementId === scope.id) {\r\n scope.searchStr = null;\r\n callOrAssign();\r\n clearResults();\r\n }\r\n });\r\n\r\n scope.$on('angucomplete-alt:changeInput', function (event, elementId, newval) {\r\n if (!!elementId && elementId === scope.id) {\r\n handleInputChange(newval);\r\n }\r\n });\r\n\r\n scope.$on('angucomplete-alt:setFocus', function (event) {\r\n inputField.focus();\r\n });\r\n\r\n function handleInputChange(newval) {\r\n if (newval) {\r\n scope.searchStr = newval;\r\n scope.searchStrEs = newval.split(' ').join('+');\r\n }\r\n }\r\n\r\n function callOrAssign(value, str) {\r\n if (angular.isFunction(scope.selectedObject)) {\r\n scope.selectedObject(value, str);\r\n } else {\r\n scope.selectedObject = value;\r\n }\r\n }\r\n\r\n function setInputString(str) {\r\n callOrAssign({originalObject: str});\r\n\r\n if (scope.clearSelected) {\r\n scope.searchStr = null;\r\n }\r\n clearResults();\r\n }\r\n\r\n function keyupHandler(event) {\r\n var which = event.which;\r\n if (which === KEY_LF || which === KEY_RT) {\r\n // do nothing\r\n return;\r\n }\r\n\r\n if (which === KEY_UP || which === KEY_EN) {\r\n event.preventDefault();\r\n } else if (which === KEY_DW) {\r\n event.preventDefault();\r\n if (!scope.showDropdown && scope.searchStr && scope.searchStr.length >= minlength) {\r\n initResults();\r\n scope.searching = true;\r\n searchTimerComplete(scope.searchStr);\r\n }\r\n } else if (which === KEY_ES) {\r\n clearResults();\r\n scope.$apply(function () {\r\n inputField.val(scope.searchStr);\r\n });\r\n } else {\r\n if (minlength === 0 && !scope.searchStr) {\r\n return;\r\n }\r\n\r\n if (!scope.searchStr || scope.searchStr === '') {\r\n scope.showDropdown = false;\r\n } else if (scope.searchStr.length >= minlength) {\r\n initResults();\r\n\r\n if (searchTimer) {\r\n $timeout.cancel(searchTimer);\r\n }\r\n\r\n scope.searching = true;\r\n\r\n searchTimer = $timeout(function () {\r\n searchTimerComplete(scope.searchStr);\r\n }, scope.pause);\r\n }\r\n\r\n if (validState && validState !== scope.searchStr && !scope.clearSelected) {\r\n scope.$apply(function () {\r\n callOrAssign();\r\n });\r\n }\r\n }\r\n }\r\n\r\n function handleOverrideSuggestions(event) {\r\n if (scope.overrideSuggestions &&\r\n !(scope.selectedObject && scope.selectedObject[scope.matchField] === scope.searchStr)) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n\r\n // cancel search timer\r\n $timeout.cancel(searchTimer);\r\n // cancel http request\r\n cancelHttpRequest();\r\n\r\n setInputString(scope.searchStr);\r\n }\r\n }\r\n\r\n function updateInputField() {\r\n var current = scope.results[scope.currentIndex];\r\n inputField.val(current[scope.matchField]);\r\n }\r\n\r\n function keydownHandler(event) {\r\n var which = event.which;\r\n\r\n if (which === KEY_EN && scope.results) {\r\n if (scope.currentIndex >= 0 && scope.currentIndex < scope.results.length) {\r\n event.preventDefault();\r\n scope.selectResult(scope.results[scope.currentIndex]);\r\n } else {\r\n scope.goSearch(scope.searchStr);\r\n if (searchTimer) {\r\n $timeout.cancel(searchTimer);\r\n }\r\n scope.searching = false;\r\n inputField.blur();\r\n handleOverrideSuggestions(event);\r\n clearResults();\r\n cancelHttpRequest();\r\n }\r\n scope.$apply();\r\n } else if (which === KEY_DW && scope.results) {\r\n event.preventDefault();\r\n if ((scope.currentIndex + 1) < scope.results.length && scope.showDropdown) {\r\n scope.$apply(function () {\r\n scope.currentIndex ++;\r\n updateInputField();\r\n });\r\n }\r\n } else if (which === KEY_UP && scope.results) {\r\n event.preventDefault();\r\n if (scope.currentIndex >= 1) {\r\n scope.$apply(function () {\r\n scope.currentIndex --;\r\n updateInputField();\r\n });\r\n } else if (scope.currentIndex === 0) {\r\n scope.$apply(function () {\r\n scope.currentIndex = -1;\r\n inputField.val(scope.searchStr);\r\n });\r\n }\r\n } else if (which === KEY_TAB) {\r\n if (scope.results && scope.results.length > 0 && scope.showDropdown) {\r\n if (scope.currentIndex === -1 && scope.overrideSuggestions) {\r\n // intentionally not sending event so that it does not\r\n // prevent default tab behavior\r\n handleOverrideSuggestions();\r\n } else {\r\n if (scope.currentIndex === -1) {\r\n scope.currentIndex = 0;\r\n }\r\n scope.selectResult(scope.results[scope.currentIndex]);\r\n scope.$digest();\r\n }\r\n } else if (scope.searchStr && scope.searchStr.length > 0) {\r\n handleOverrideSuggestions();\r\n }\r\n } else if (which === KEY_ES) {\r\n // This is very specific to IE10/11 #272\r\n // without this, IE clears the input text\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n function httpSuccessCallbackGen(str) {\r\n return function (responseData, status, headers, config) {\r\n // normalize return object from promise\r\n if (!status && !headers && !config && responseData.data) {\r\n responseData = responseData.data;\r\n }\r\n scope.searching = false;\r\n processResults(scope.remoteUrlResponseFormatter(responseData, str), str);\r\n };\r\n }\r\n\r\n function httpErrorCallback(errorRes, status, headers, config) {\r\n scope.searching = httpCallInProgress;\r\n\r\n // normalize return obejct from promise\r\n if (!status && !headers && !config) {\r\n status = errorRes.status;\r\n }\r\n\r\n // cancelled/aborted\r\n if (status === 0 || status === -1) { return; }\r\n if (console && console.error) {\r\n console.error('http error');\r\n }\r\n }\r\n\r\n function cancelHttpRequest() {\r\n if (httpCanceller) {\r\n httpCanceller.resolve();\r\n }\r\n }\r\n\r\n function getRemoteResults(str) {\r\n\r\n scope.searchStrEs = str.split(' ').join('+').toLowerCase();\r\n\r\n cancelHttpRequest();\r\n\r\n httpCanceller = $q.defer();\r\n\r\n scope.remoteApiHandler(str, httpCanceller.promise)\r\n .then(httpSuccessCallbackGen(str))\r\n .catch(httpErrorCallback);\r\n }\r\n\r\n function clearResults() {\r\n scope.showDropdown = false;\r\n scope.results = [];\r\n if (scope.clearResults) {\r\n scope.clearResults();\r\n }\r\n }\r\n\r\n function initResults() {\r\n scope.showDropdown = true;\r\n scope.currentIndex = -1;\r\n scope.results = [];\r\n }\r\n\r\n function searchTimerComplete(str) {\r\n // Begin the search\r\n if (!str || str.length < minlength) {\r\n return;\r\n }\r\n getRemoteResults(str);\r\n }\r\n\r\n function processResults(responseData) {\r\n\r\n scope.results = responseData.results;\r\n\r\n if (responseData.results.length === 0) {\r\n scope.showDropdown = false;\r\n } else {\r\n scope.showDropdown = true;\r\n }\r\n }\r\n\r\n function showAll() {\r\n scope.searching = true;\r\n getRemoteResults('');\r\n }\r\n\r\n scope.onFocusHandler = function () {\r\n if (hideTimer) {\r\n $timeout.cancel(hideTimer);\r\n }\r\n if (scope.focusIn) {\r\n scope.focusIn();\r\n }\r\n };\r\n\r\n scope.hideResults = function () {\r\n hideTimer = $timeout(function () {\r\n clearResults();\r\n scope.showDropdown = false;\r\n scope.$apply(function () {\r\n if (scope.searchStr && scope.searchStr.length > 0) {\r\n inputField.val(scope.searchStr);\r\n }\r\n });\r\n }, BLUR_TIMEOUT);\r\n cancelHttpRequest();\r\n\r\n if (scope.focusOut) {\r\n scope.focusOut();\r\n }\r\n\r\n if (scope.overrideSuggestions) {\r\n if (scope.searchStr && scope.searchStr.length > 0 && scope.currentIndex === -1) {\r\n handleOverrideSuggestions();\r\n }\r\n }\r\n };\r\n\r\n scope.hoverRow = function (index) {\r\n scope.currentIndex = index;\r\n };\r\n\r\n scope.selectResult = function (result) {\r\n var str = scope.searchStr;\r\n if (scope.clearSelected) {\r\n scope.searchStr = null;\r\n } else {\r\n scope.searchStr = result[scope.matchField];\r\n }\r\n callOrAssign(result, str);\r\n clearResults();\r\n };\r\n\r\n scope.inputChangeHandler = function (str) {\r\n if (str.length < minlength) {\r\n cancelHttpRequest();\r\n clearResults();\r\n } else if (str.length === 0 && minlength === 0) {\r\n showAll();\r\n }\r\n\r\n if (scope.inputChanged) {\r\n str = scope.inputChanged(str);\r\n }\r\n return str;\r\n };\r\n\r\n scope.goSearch = function () {\r\n clearResults();\r\n scope.ctrl.goSearch(scope.searchStr);\r\n };\r\n\r\n // check min length\r\n if (scope.minlength && scope.minlength !== '') {\r\n minlength = parseInt(scope.minlength, 10);\r\n }\r\n\r\n // check pause time\r\n if (!scope.pause) {\r\n scope.pause = PAUSE;\r\n }\r\n\r\n // check clearSelected\r\n if (!scope.clearSelected) {\r\n scope.clearSelected = false;\r\n }\r\n\r\n // check override suggestions\r\n if (!scope.overrideSuggestions) {\r\n scope.overrideSuggestions = false;\r\n }\r\n\r\n scope.inputType = attrs.type ? attrs.type : 'text';\r\n\r\n // set max length (default to maxlength deault from html\r\n scope.maxlength = attrs.maxlength ? attrs.maxlength : MAX_LENGTH;\r\n\r\n // register events\r\n inputField.on('keydown', keydownHandler);\r\n inputField.on('keyup compositionend', keyupHandler);\r\n\r\n }\r\n\r\n return {\r\n restrict: 'EA',\r\n scope: {\r\n selectedObject: '=',\r\n remoteUrlResponseFormatter: '=',\r\n remoteApiHandler: '=',\r\n id: '@',\r\n type: '@',\r\n placeholder: '@',\r\n inputClass: '@',\r\n pause: '@',\r\n minlength: '@',\r\n clearSelected: '@',\r\n overrideSuggestions: '@',\r\n inputChanged: '=',\r\n focusOut: '&',\r\n focusIn: '&',\r\n fieldTabindex: '@',\r\n inputName: '@',\r\n clearResults: '=',\r\n matchField: '@',\r\n ctrl: '<'\r\n },\r\n templateUrl: function (element, attrs) {\r\n return attrs.templateUrl || TEMPLATE_URL;\r\n },\r\n compile: function () {\r\n return link;\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.autocomplete-select', ['angucomplete-alt'])\r\n\r\n .directive('autoCompleteSelect', function () {\r\n return {\r\n restrict: 'E',\r\n scope: true,\r\n bindToController: {\r\n device: '<',\r\n action: '&',\r\n txtAddToList: '@',\r\n txtViewAndChoose: '@'\r\n },\r\n controllerAs: 'searchCtrl',\r\n /* @ngInject */\r\n controller: [\"$element\", \"$window\", \"$http\", \"$timeout\", \"$sce\", \"WindowEventsService\", function ($element, $window, $http, $timeout, $sce, WindowEventsService) {\r\n var ctrl = this;\r\n\r\n ctrl.$onInit = function () {\r\n $timeout(function () {\r\n resize();\r\n }, 1000);\r\n };\r\n\r\n ctrl.searchAPI = function (userInputString, timeoutPromise) {\r\n return $http.post('/Search/AutoCompleteQuery', {\r\n QueryFullText: userInputString,\r\n CategoryId: '',\r\n NbFrom: '0',\r\n NbSize: '50',\r\n withCatalogs: false\r\n }, {timeout: timeoutPromise});\r\n };\r\n\r\n ctrl.getResponse = function (data, str) {\r\n ctrl.products = _.filter(data.results, { KeyWebAspect: 'Default' });\r\n\r\n _.each(ctrl.products, function (value, key) {\r\n ctrl.products[key].designationHtml = findMatchString(ctrl.products[key].Designation, str);\r\n });\r\n\r\n $timeout(function () {\r\n $element.find('.dropdown-menu, .scroll-container').scrollTop(0);\r\n $element.find('.dropdown-menu.with-img').trigger('scroll');\r\n }, 100);\r\n\r\n return data;\r\n };\r\n\r\n ctrl.clearResults = function () {\r\n ctrl.products = null;\r\n };\r\n\r\n ctrl.searchCallback = function (selected) {\r\n selected.IsElementary = false;\r\n ctrl.action({product: selected});\r\n };\r\n\r\n WindowEventsService.listen(true, 'scroll', resize, 500);\r\n\r\n ctrl.$onDestroy = function () {\r\n WindowEventsService.listen(false, 'scroll', resize);\r\n };\r\n\r\n // Functions\r\n\r\n function resize() {\r\n $timeout(function () {\r\n var maxHeight = Math.floor($element.offset().top + $element.height() - $($window).scrollTop()) + 10;\r\n $element.find('.products-menu').attr('style', 'max-height: calc(100vh - ' + maxHeight + 'px)');\r\n });\r\n }\r\n\r\n function findMatchString(value, str) {\r\n if (!value) { return; }\r\n if (!value.match || !value.replace) { value = value.toString(); }\r\n var matches, reg;\r\n\r\n var words = str.split(' '),\r\n tmp;\r\n _.each(words, function (word) {\r\n tmp = word.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n if (tmp.length > 2) {\r\n reg = new RegExp(tmp, 'ig');\r\n matches = value.match(reg);\r\n if (matches) {\r\n value = value.replace(reg, '##' + matches[0] + '#/#');\r\n }\r\n }\r\n });\r\n\r\n var open = new RegExp('##', 'g'),\r\n close = new RegExp('#/#', 'g');\r\n value = value.replace(open, '').replace(close, '');\r\n return $sce.trustAsHtml(value).valueOf();\r\n }\r\n\r\n }]\r\n };\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.comparator', [])\r\n\r\n /* @ngInject */\r\n .component('comparator', {\r\n bindings: {\r\n device: '<'\r\n },\r\n templateUrl: '/Template/Comparator/Comparator',\r\n /* @ngInject */\r\n controller: [\"$rootScope\", \"$timeout\", \"$location\", \"$element\", \"CompareService\", \"AppService\", \"$uibPosition\", \"WindowEventsService\", function ($rootScope, $timeout, $location, $element, CompareService, AppService, $uibPosition, WindowEventsService) {\r\n var ctrl = this,\r\n unwatch;\r\n ctrl.quantities = {};\r\n\r\n ctrl.$onInit = function () {\r\n WindowEventsService.listen(true, 'resize', resize, 500);\r\n resize();\r\n\r\n $timeout(function () {\r\n ctrl.count = CompareService.getNbProducts();\r\n if (typeof $location.search().open !== 'undefined') {\r\n toggle();\r\n }\r\n }, 3000);\r\n\r\n \r\n\r\n };\r\n\r\n\r\n ctrl.$onDestroy = function () {\r\n if (unwatch !== null) {\r\n unwatch();\r\n }\r\n };\r\n\r\n unwatch = $rootScope.$on('comparatorCheckboxUpdate', function () {\r\n ctrl.count = CompareService.getNbProducts();\r\n });\r\n\r\n ctrl.setQuantity = function(id, qty) {\r\n ctrl.quantities[id] = qty;\r\n };\r\n\r\n ctrl.empty = function(event) {\r\n event.stopPropagation();\r\n if (ctrl.opened) {\r\n toggle();\r\n }\r\n CompareService.empty();\r\n updateProductsData();\r\n $rootScope.$broadcast('comparatorUpdate');\r\n };\r\n\r\n ctrl.remove = function (id) {\r\n CompareService.remove(id);\r\n updateProductsData();\r\n $rootScope.$broadcast('comparatorUpdate');\r\n };\r\n\r\n ctrl.toggle = function () {\r\n if (ctrl.count < 2) return;\r\n toggle();\r\n };\r\n\r\n // Functions\r\n\r\n /*function scroll() {\r\n var scrolltop = $container.scrollTop();\r\n if (scrolltop > imgHeight) {\r\n $imgs.css({\r\n 'width': 0\r\n });\r\n } else if (scrolltop > 0) {\r\n $imgs.css({\r\n 'width': imgHeight - scrolltop\r\n });\r\n } else {\r\n $imgs.css({\r\n 'width': imgHeight\r\n });\r\n }\r\n }*/\r\n\r\n function updateProductsData() {\r\n ctrl.properties = {};\r\n ctrl.products = [];\r\n ctrl.resized = false;\r\n\r\n var products = CompareService.get().slice(0, ctrl.maxItems),\r\n len = products.length,\r\n i;\r\n\r\n //var products = CompareService.get(),\r\n // len = products.length,\r\n // i;\r\n\r\n ctrl.showLoader = true;\r\n ctrl.count = len;\r\n ctrl.tmpProducts = [];\r\n for (i = 0; i < len; i++) {\r\n CompareService.getProduct(products[i])\r\n .then(function (data) {\r\n ctrl.tmpProducts.push(data);\r\n if (ctrl.tmpProducts.length === ctrl.count) {\r\n setProperties();\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n }\r\n\r\n function setProperties() {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n\r\n var len2,\r\n i = 0,\r\n j;\r\n\r\n var tmp = {};\r\n\r\n _.each(ctrl.tmpProducts, function (product) {\r\n var props = product.Properties;\r\n len2 = props.length;\r\n for (j = 0; j < len2; j++) {\r\n var prop = props[j];\r\n if (prop.IsInTable) {\r\n if (!tmp[prop.Designation]) {\r\n tmp[prop.Designation] = [];\r\n for (var k = 0; k < ctrl.count; k++) {\r\n tmp[prop.Designation][k] = prop.PropertyType === 0 || prop.TextValue === translate.messages.Yes ? translate.messages.No : '';\r\n }\r\n }\r\n var value = prop.PropertyType === 0 ? (prop.NumericValue == 1 ? translate.messages.Yes : translate.messages.No) : prop.Value;\r\n value = prop.PropertyType === 6 ? prop.Value.split(' | ').join(', ') : value;\r\n tmp[prop.Designation][i] = value;\r\n }\r\n }\r\n i++;\r\n });\r\n\r\n\r\n ctrl.properties = tmp;\r\n ctrl.products = ctrl.tmpProducts;\r\n\r\n if (ctrl.opened) {\r\n if (ctrl.count < 2) {\r\n toggle();\r\n } else {\r\n $timeout(resizeProducts);\r\n }\r\n }\r\n\r\n $rootScope.$broadcast('comparatorUpdate');\r\n });\r\n }\r\n\r\n function resize() {\r\n switch (ctrl.device.size) {\r\n case 'xl':\r\n ctrl.maxItems = 6;\r\n break;\r\n case 'lg':\r\n ctrl.maxItems = 6;\r\n break;\r\n case 'md':\r\n ctrl.maxItems = 5;\r\n break;\r\n case 'sm':\r\n ctrl.maxItems = 4;\r\n break;\r\n case 'xs':\r\n ctrl.maxItems = 3;\r\n break;\r\n case 'xxs':\r\n ctrl.maxItems = 2;\r\n break;\r\n }\r\n CompareService.maxItems = ctrl.maxItems;\r\n updateProductsData();\r\n \r\n }\r\n\r\n function resizeProducts() {\r\n\r\n var wLegend = 150;\r\n var wItem = 0;\r\n\r\n $element.find('table').css('width', '').find('.value').css('width', '');\r\n\r\n if (ctrl.device.size == 'xl' || ctrl.device.size == 'lg' || ctrl.device.size == 'md' ) { \r\n if ((ctrl.count * 140 + wLegend) < $(window).width()) {\r\n wItem = Math.floor(($(window).width() - wLegend) / ctrl.count);\r\n $element.find('table').find('.value').width(wItem);\r\n console.log('wItem' + wItem);\r\n } else {\r\n $element.find('table').width(ctrl.count * 140 + wLegend);\r\n }\r\n }\r\n\r\n\r\n $element.find('.product').each(function () {\r\n $(this).find('.name').equalHeights();\r\n });\r\n\r\n ctrl.resized = true;\r\n ctrl.showLoader = false;\r\n $rootScope.$broadcast('lazyImg:refresh');\r\n }\r\n\r\n function toggle() {\r\n ctrl.opened = !ctrl.opened;\r\n\r\n CompareService.toggle(ctrl.opened);\r\n\r\n var $body = $(document.body);\r\n if (ctrl.opened) {\r\n var scrollbarPadding = $uibPosition.scrollbarPadding($body.addClass('modal-open'));\r\n if (scrollbarPadding.heightOverflow && scrollbarPadding.scrollbarWidth) {\r\n $body.addClass('modal-open').css({ paddingRight: scrollbarPadding.right + 'px' });\r\n }\r\n updateProductsData();\r\n } else {\r\n $body.removeClass('modal-open').css({ paddingRight: '0' });\r\n }\r\n }\r\n }]\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('compare.checkbox', [])\r\n\r\n /* @ngInject */\r\n .directive('compareCheckbox', function () {\r\n return {\r\n restrict: 'E',\r\n scope: true,\r\n bindToController: {\r\n id: '= 0 ||\r\n $window.location.href.indexOf(lang.enPreProd.url) >= 0) {\r\n return lang.enPreProd.url;\r\n }\r\n\r\n return lang.en.url;\r\n }\r\n\r\n return lang.enBeta.url;\r\n default:\r\n if ($window.location.href.indexOf(lang.frBeta.url) < 0 && $window.location.href.indexOf(lang.enBeta.url) < 0) {\r\n if ($window.location.href.indexOf(lang.frPreProd.url) >= 0 ||\r\n $window.location.href.indexOf(lang.enPreProd.url) >= 0) {\r\n return lang.frPreProd.url;\r\n }\r\n\r\n return lang.fr.url;\r\n }\r\n\r\n return lang.frBeta.url;\r\n }\r\n }\r\n\r\n function getDefaultLanguage() {\r\n if ($window.location.href.indexOf(lang.enBeta.url) >= 0\r\n || $window.location.href.indexOf(lang.enPreProd.url) >= 0\r\n || $window.location.href.indexOf(lang.en.url) >= 0) {\r\n return lang.en.value;\r\n }\r\n return lang.fr.value;\r\n }\r\n\r\n ctrl.$onInit = function () {\r\n ctrl.setMenuActive = function () {\r\n $rootScope.$broadcast('setMenuActive');\r\n ctrl.isMenuActive = !ctrl.isMenuActive;\r\n };\r\n\r\n var cookieSwitch = $cookies.get('cookieSwitch');\r\n ctrl.checked = !angular.isUndefined(cookieSwitch) ? cookieSwitch : true;\r\n if (ctrl.checked == 'false') ctrl.checked = false\r\n else ctrl.checked = true\r\n\r\n var cookieLanguage = $cookies.get('language');\r\n ctrl.language = !angular.isUndefined(cookieLanguage) ? cookieLanguage : getDefaultLanguage();\r\n refreshSelects();\r\n };\r\n\r\n // ng-class=\"mainNavCtrl.isMenuActive ? 'menuActive' : '' \"\r\n // headerMenuCtrl.setMenuActive()\r\n\r\n ctrl.setLanguage = function () {\r\n $window.location.href = getDefaultUrl();\r\n };\r\n\r\n ctrl.setSwitch = function () {\r\n setCookiesSwitch();\r\n };\r\n\r\n function refreshSelects() {\r\n setTimeout(function () {\r\n $element.find('select.refresh').each(function (index, el) {\r\n $(el).selectpicker('refresh');\r\n });\r\n });\r\n }\r\n }],\r\n controllerAs: 'headerMenuCtrl'\r\n };\r\n\r\n return directive;\r\n })\r\n\r\n .directive('mainNav', function () {\r\n var directive = {\r\n restrict: 'A',\r\n bindToController: {\r\n navMenuContext: '@',\r\n navMenuMetier: '@',\r\n dataColor: '<',\r\n device: '<'\r\n },\r\n controllerAs: 'mainNavCtrl',\r\n scope: true,\r\n\r\n /* @ngInject */\r\n controller: [\"$scope\", \"HttpService\", function ($scope, HttpService) {\r\n var ctrl = this;\r\n\r\n ctrl.$onInit = function () {\r\n\r\n ctrl.setIsScroll = true;\r\n\r\n\r\n // OUVRIR LE MENU PAR DEFAUT SUR le 1er noeud qui checkbox1 a true\r\n /* if (ctrl.checkbox) {\r\n $event.preventDefault();\r\n }*/\r\n\r\n // ON RECUPERE LA DEVICE TOUCH/NOTOUCH\r\n if (ctrl.device.size === 'xl' || ctrl.device.size === 'lg' || ctrl.device.size === 'md') {\r\n ctrl.isDeviceTouch = false;\r\n // console.log('TOUCH FALSE' + ctrl.isDeviceTouch);\r\n } else {\r\n ctrl.isDeviceTouch = true;\r\n // console.log('TOUCH TRUE');\r\n }\r\n\r\n // ON RECUPERE LA COULEUR DU NOEUD\r\n getColor();\r\n\r\n if (ctrl.device.size === 'xl' || ctrl.device.size === 'lg' || ctrl.device.size === 'md') {\r\n\r\n // gestion du scroll actif/inactif\r\n\r\n // ctrl.setIsScroll = function () {\r\n // $rootScope.$broadcast('setIsScroll');\r\n // //ctrl.isMenuActive = !ctrl.isMenuActive;\r\n // console.log('setIsScroll' + setIsScroll);\r\n // };\r\n // ctrl.isMenuScrollActive = false;\r\n\r\n if (ctrl.navMenuContext === 'Product') {\r\n ctrl.isMenuProductActive = true;\r\n ctrl.menuProductActiveClass = 'hidden';\r\n } else {\r\n ctrl.isMenuProductActive = false;\r\n ctrl.menuProductActiveClass = '';\r\n }\r\n\r\n\r\n if (ctrl.navMenuMetier === 'Metier') {\r\n\r\n ctrl.isMenuMetierActive = true;\r\n ctrl.menuMetierActiveClass = 'hidden';\r\n\r\n } else if (ctrl.navMenuMetier === 'Shop') {\r\n\r\n ctrl.isMenuShopActive = true;\r\n ctrl.menuShopActiveClass = 'hidden';\r\n\r\n } else {\r\n ctrl.isMenuMetierActive = false;\r\n ctrl.menuMetierActiveClass = '';\r\n ctrl.isMenuShopActive = false;\r\n ctrl.menuShopActiveClass = '';\r\n\r\n }\r\n\r\n }\r\n\r\n getTestoonContext();\r\n\r\n };\r\n\r\n $scope.$on('setMenuActive', function () {\r\n ctrl.isMenuActive = !ctrl.isMenuActive;\r\n\r\n });\r\n\r\n $scope.$on('setMenuBackActive', function () {\r\n ctrl.isMenuBackActive = !ctrl.isMenuBackActive;\r\n });\r\n\r\n $scope.$on('logUpdate', function () {\r\n getTestoonContext();\r\n });\r\n\r\n $scope.$on('delogUpdate', function () {\r\n // console.info('logout');\r\n getTestoonContext();\r\n });\r\n\r\n $scope.$on('logoutFromMenu', function () {\r\n // console.info('logout');\r\n getTestoonContext();\r\n });\r\n\r\n function getTestoonContext() {\r\n HttpService.get({\r\n url: '/GetTestoonContext',\r\n cache: false\r\n })\r\n .then(function (response) {\r\n\r\n ctrl.HasAccessPrivateShop = response.HasAccessPrivateShop ? 1 : 0;\r\n ctrl.HasAccessPrivateSale = response.HasAccessPrivateSale ? 1 : 0;\r\n ctrl.KeyCatalogue = response.KeyCatalogue;\r\n\r\n });\r\n }\r\n\r\n function getColor() {\r\n var items = $('#breadcrumb').children(),\r\n len = $('#breadcrumb').children().length - 1;\r\n\r\n while (len > 1) {\r\n var $item = $(items[len]);\r\n ctrl.menuColor = $item.data('color');\r\n len--;\r\n }\r\n }\r\n }]\r\n };\r\n\r\n return directive;\r\n })\r\n\r\n .directive('liMain', function () {\r\n\r\n return {\r\n\r\n restrict: 'A',\r\n bindToController: {\r\n idCategory: '<',\r\n hasParent: '<',\r\n checkbox: '<',\r\n device: '<',\r\n hasSons: '<'\r\n },\r\n scope: true,\r\n controllerAs: 'liNavCtrl',\r\n\r\n /* @ngInject */\r\n controller: [\"$element\", function ($element) {\r\n\r\n var ctrl = this;\r\n\r\n // cibler menu via idCategory => custom class active\r\n // cibler menu parent via dataParent => cibler le retour en mode mobile\r\n // menu coche1 ou hover, soit ascenceur ou colonnage\r\n\r\n ctrl.$onInit = function () {\r\n\r\n \r\n // declarer besoin à l'initialisation du DOM\r\n // OUVRIR LE MENU PAR DEFAUT SUR le 1er noeud qui checkbox1 a true\r\n if (ctrl.checkbox) {\r\n ctrl.liClass = 'activeClick';\r\n } else {\r\n ctrl.liClass = 'activeHover';\r\n }\r\n\r\n initMenu();\r\n };\r\n\r\n ctrl.liClass = '';\r\n\r\n ctrl.menuQuit = function () {\r\n\r\n if (ctrl.device.size === 'xxs' || ctrl.device.size === 'xs' || ctrl.device.size === 'sm') {\r\n var classe = ctrl.liClass === 'itemActive' ? ' ' : 'itemActive';\r\n updateClass(classe);\r\n }\r\n\r\n };\r\n\r\n ctrl.menuClick = function () {\r\n\r\n if (ctrl.device.size === 'lg' || ctrl.device.size === 'md') {\r\n\r\n if (!ctrl.checkbox) return;\r\n\r\n }\r\n\r\n if (ctrl.device.size === 'xxs' || ctrl.device.size === 'xs' || ctrl.device.size === 'sm') {\r\n\r\n var classe = ctrl.liClass === 'itemActiveIn' ? 'itemActiveOut' : 'itemActiveIn';\r\n // console.log('classe' + classe);\r\n updateClass(classe);\r\n\r\n }\r\n };\r\n\r\n ctrl.menuBackClick = function () {\r\n\r\n if (ctrl.device.size === 'lg' || ctrl.device.size === 'md') {\r\n if (!ctrl.checkbox) return;\r\n }\r\n\r\n if (ctrl.device.size === 'xxs' || ctrl.device.size === 'xs' || ctrl.device.size === 'sm') {\r\n // var classe = ctrl.liClass === 'itemActiveIn' ? 'itemActiveOut' : 'itemActiveIn';\r\n // console.log('classe' + classe );\r\n removeClass();\r\n }\r\n };\r\n\r\n ctrl.preventDefault = function ($event) {\r\n\r\n if (ctrl.checkbox) {\r\n $event.preventDefault();\r\n }\r\n\r\n if (ctrl.device.size === 'xxs' ||\r\n ctrl.device.size === 'xs' ||\r\n ctrl.device.size === 'sm' ||\r\n ctrl.checkbox === 'true') {\r\n\r\n $event.preventDefault();\r\n }\r\n };\r\n\r\n function initMenu() {\r\n if (ctrl.device.size === 'xxs' || ctrl.device.size === 'xs' || ctrl.device.size === 'sm') return;\r\n\r\n hoverintent($element[0],\r\n function () {\r\n updateClassMenu();\r\n // console.log('updateClass');\r\n // scope.expandMenu();\r\n },\r\n function () {\r\n removeClassMenu();\r\n // console.log('removeClass');\r\n // scope.reduceMenu();\r\n })\r\n .options(\r\n {\r\n timeout: 500,\r\n interval: 200\r\n }\r\n );\r\n }\r\n\r\n function updateClassMenu() {\r\n var $menu = $element.children('.ulLevel1');\r\n\r\n $menu.addClass('in');\r\n\r\n }\r\n\r\n function removeClassMenu() {\r\n var $menu = $element.children('.ulLevel1');\r\n\r\n $menu.removeClass('in');\r\n\r\n }\r\n\r\n function updateClass(categoryClass) {\r\n\r\n ctrl.liClassActive = categoryClass;\r\n ctrl.isBackActive = true;\r\n // $timeout(function () {\r\n // ctrl.liClassActive = categoryClass;\r\n // }, 800);\r\n\r\n }\r\n\r\n function removeClass(categoryClass) {\r\n\r\n ctrl.liClassActive = categoryClass;\r\n ctrl.isBackActive = false;\r\n // $timeout(function () {\r\n // ctrl.liClassActive = categoryClass;\r\n // }, 800);\r\n\r\n }\r\n\r\n }]\r\n\r\n };\r\n\r\n });\r\n\r\n})();\r\n\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.store-detail', [])\r\n\r\n .directive('store', function () {\r\n return {\r\n restrict: 'E',\r\n bindToController: {\r\n device: '<',\r\n name: '@',\r\n latitude: '<',\r\n longitude: '<',\r\n model: '<',\r\n daysModel: '@days',\r\n strOneTime: '@oneTime',\r\n strTwoTimes: '@twoTimes',\r\n strClosed: '@closed'\r\n },\r\n controllerAs: 'storeCtrl',\r\n /* @ngInject */\r\n controller: [\"$window\", \"GMaps\", \"StoresService\", function ($window, GMaps, StoresService) {\r\n var ctrl = this;\r\n\r\n ctrl.$onInit = function () {\r\n ctrl.OpeningHours = _.cloneDeep(ctrl.model);\r\n ctrl.days = ctrl.daysModel.split(',');\r\n ctrl.model = null;\r\n ctrl.daysModel = null;\r\n\r\n StoresService.getOpeningHours(ctrl, ctrl.days, ctrl.strOneTime, ctrl.strTwoTimes, ctrl.strClosed);\r\n\r\n ctrl.loading = true;\r\n GMaps.get()\r\n .then(setMap)\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n };\r\n\r\n ctrl.getMarkerOpts = function () {\r\n return {\r\n title: null,\r\n icon: { url: '/img/gmap/store-gmap-active.png', labelOrigin: new google.maps.Point(20, 70) },\r\n label: { text: ctrl.name, fontWeight: 'bold' },\r\n zIndex: 3\r\n };\r\n };\r\n\r\n ctrl.activeTab = function () {\r\n $window.dispatchEvent(new CustomEvent('resize'));\r\n };\r\n\r\n // Functions\r\n\r\n function setMap() {\r\n ctrl.markers = [];\r\n ctrl.markers.push({\r\n id: 0,\r\n lat: ctrl.latitude,\r\n lng: ctrl.longitude\r\n });\r\n\r\n ctrl.options = {\r\n map: {\r\n center: new google.maps.LatLng(ctrl.latitude, ctrl.longitude),\r\n zoom: 8,\r\n styles: [{'stylers': [{'saturation': -100}, {'lightness': 50}]}]\r\n }\r\n };\r\n\r\n ctrl.showMap = true;\r\n ctrl.loading = false;\r\n }\r\n\r\n }]\r\n };\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.stores-service', [])\r\n\r\n /* @ngInject */\r\n .factory('StoresService', [\"$filter\", function ($filter) {\r\n var address;\r\n\r\n return {\r\n setAddress: function (value) {\r\n address = value;\r\n },\r\n getAddress: function () {\r\n return address;\r\n },\r\n getOpeningHours: function (point, days, strOneTime, strTwoTimes, strClosed) {\r\n if (point.OpeningHours[0].Date) {\r\n var tmp = [];\r\n _.each(point.OpeningHours, function (day, i) {\r\n var obj = {\r\n day: days[i]\r\n };\r\n\r\n if (day.IsOpen) {\r\n var date, format, amStart, amEnd, pmStart, pmEnd;\r\n date = new Date(day.Date1Start.replace('T', ' ').replace(/-/g, '/'));\r\n format = !date.getMinutes() ? \"H'h'\" : \"H'h'mm\";\r\n amStart = $filter('date')(date, format);\r\n\r\n date = new Date(day.Date1End.replace('T', ' ').replace(/-/g, '/'));\r\n format = !date.getMinutes() ? \"H'h'\" : \"H'h'mm\";\r\n amEnd = $filter('date')(date, format);\r\n\r\n date = new Date(day.Date2Start.replace('T', ' ').replace(/-/g, '/'));\r\n if (date.getFullYear() < 2017) {\r\n format = !date.getMinutes() ? \"H'h'\" : \"H'h'mm\";\r\n pmStart = $filter('date')(date, format);\r\n\r\n date = new Date(day.Date2End.replace('T', ' ').replace(/-/g, '/'));\r\n format = !date.getMinutes() ? \"H'h'\" : \"H'h'mm\";\r\n pmEnd = $filter('date')(date, format);\r\n }\r\n\r\n obj.value = !pmStart ? $filter('format')(strOneTime, amStart, amEnd) : $filter('format')(strTwoTimes, amStart, amEnd, pmStart, pmEnd);\r\n obj.value = day.Exception ? obj.value + ' ' + day.Exception + '' : obj.value;\r\n } else {\r\n obj.value = day.Exception ? '' + day.Exception + '' : strClosed;\r\n }\r\n tmp.push(obj);\r\n });\r\n point.OpeningHours = tmp;\r\n }\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.stores', [])\r\n\r\n .directive('stores', function () {\r\n return {\r\n restrict: 'E',\r\n bindToController: {\r\n device: '<',\r\n modalCtrl: '= 1000) {\r\n var km = (point.Distance / 1000).toFixed(2);\r\n km = km === Math.floor(km) ? Math.floor(km) : km;\r\n km = km > 10 ? Math.floor(km) : km;\r\n point.DistanceKm = String(km).replace('.', ',');\r\n }\r\n if (minDist === -1 || point.Distance <= minDist) {\r\n minDist = point.Distance;\r\n nearPoint = point;\r\n }\r\n }\r\n ctrl.markers.push({\r\n id: point.IDCard,\r\n name: point.FullName,\r\n lat: point.Coordinate.Latitude,\r\n lng: point.Coordinate.Longitude,\r\n selected: false\r\n });\r\n bounds.extend(new google.maps.LatLng(point.Coordinate.Latitude, point.Coordinate.Longitude));\r\n });\r\n\r\n //\r\n ctrl.options = {\r\n map: {\r\n center: bounds.getCenter(),\r\n styles: [{ 'stylers': [{ 'saturation': -100 }, { 'lightness': 50 }] }]\r\n }\r\n };\r\n ctrl.showMap = true;\r\n\r\n var gmapPromise = angulargmContainer.getMapPromise('map');\r\n gmapPromise.then(function (map) {\r\n setTimeout(function () {\r\n google.maps.event.trigger(map, 'resize');\r\n map.fitBounds(bounds);\r\n\r\n var markers = angulargmContainer.getMarkers('map');\r\n for (var i = 0; i < markers.length; i++) {\r\n markers[i].setMap(null);\r\n }\r\n\r\n var options = {\r\n gridSize: 50,\r\n maxZoom: 15,\r\n styles: [\r\n {\r\n width: 53,\r\n height: 53,\r\n url: '/img/gmap/m1.png',\r\n textColor: '#ffffff'\r\n },\r\n {\r\n width: 56,\r\n height: 56,\r\n url: '/img/gmap/m2.png',\r\n textColor: '#ffffff'\r\n },\r\n {\r\n width: 66,\r\n height: 66,\r\n url: '/img/gmap/m3.png',\r\n textColor: '#ffffff'\r\n },\r\n {\r\n width: 78,\r\n height: 78,\r\n url: '/img/gmap/m4.png',\r\n textColor: '#ffffff'\r\n },\r\n {\r\n width: 90,\r\n height: 90,\r\n url: '/img/gmap/m5.png',\r\n textColor: '#ffffff'\r\n }\r\n ]\r\n };\r\n if (markerClusterer) {\r\n markerClusterer.clearMarkers();\r\n }\r\n markerClusterer = new MarkerClusterer(map, markers, options);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n //\r\n ctrl.loading = false;\r\n $rootScope.$broadcast('showPageLoader', false);\r\n\r\n var getAddress = StoresService.getAddress();\r\n if (getAddress) {\r\n $timeout(function () {\r\n ctrl.addressSearch = getAddress;\r\n ctrl.newSearch();\r\n StoresService.setAddress(null);\r\n });\r\n } else if (ctrl.searchLocation && nearPoint) {\r\n ctrl.showStore(nearPoint, null);\r\n }\r\n }\r\n\r\n function scrollToPoint(id) {\r\n var $list = $('#pointsListInner'),\r\n $point = $('#point_' + id);\r\n\r\n if ($point.length) {\r\n $list.animate({ scrollTop: $list.scrollTop() + $point.position().top }, 350);\r\n }\r\n }\r\n\r\n }]\r\n };\r\n });\r\n\r\n})();\r\n"]}