define(["lazyLoader","imageFetcher","layoutManager","browser","appSettings","require","css!./style"],function(lazyLoader,imageFetcher,layoutManager,browser,appSettings,require){"use strict";functionfillImage(elem,source,enableEffects){if(!elem)thrownewError("elem cannot be null");source||(source=elem.getAttribute("data-src")),source&&fillImageElement(elem,source,enableEffects)}functionfillImageElement(elem,source,enableEffects){imageFetcher.loadImage(elem,source).then(function(){enableFade&&!1!==enableEffects&&fadeIn(elem),elem.removeAttribute("data-src")})}functiongetVibrantInfoFromElement(elem,url){returnnewPromise(function(resolve,reject){require(["vibrant"],function(){if("IMG"===elem.tagName)returnvoidresolve(getVibrantInfo(elem,url));varimg=newImage;img.onload=function(){resolve(getVibrantInfo(img,url))},img.src=url})})}functiongetSettingsKey(url){varparts=url.split("://");url=parts[parts.length-1],url=url.substring(url.indexOf("/")+1),url=url.split("?")[0];return"vibrant31"+url}functiongetCachedVibrantInfo(url){returnappSettings.get(getSettingsKey(url))}functiongetVibrantInfo(img,url){varvalue=getCachedVibrantInfo(url);if(value)returnvalue;varvibrant=newVibrant(img),swatches=vibrant.swatches();returnvalue="",value+=getSwatchString(swatches.DarkVibrant),appSettings.set(getSettingsKey(url),value),value}functiongetSwatchString(swatch){returnswatch?swatch.getHex()+"|"+swatch.getBodyTextColor()+"|"+swatch.getTitleTextColor():"||"}functionfadeIn(elem){elem.classList.add("lazy-image-fadein")}functionlazyChildren(elem){lazyLoader.lazyChildren(elem,fillImage)}functiongetPrimaryImageAspectRatio(items){for(varvalues=[],i=0,length=items.length;i<length;i++){varratio=items[i].PrimaryImageAspectRatio||0;ratio&&(values[values.length]=ratio)}if(!values.length)returnnull;values.sort(function(a,b){returna-b});varresult,half=Math.floor(values.length/2);result=values.length%2?values[half]:(values[half-1]+values[half])/2;if(Math.abs(2/3-result)<=.15)return2/3;if(Math.abs(16/9-result)<=.2)return16/9;if(Math.abs(1-result)<=.15)return1;returnMath.abs(4/3-result)<=.15?4/3:result}functionfillImages(elems){for(vari=0,length=elems.length;i<length;i++){fillImage(elems[0])}}varself=(window.requestIdleCallback,{}),enableFade=!1;returnself.fillImages=fillImages,self.lazyImage=fillImage,self.lazyChildren=lazyChildren,self.getPrimaryImageAspectRatio=getPrimaryImageAspectRatio,self.getCachedVibrantInfo=getCachedVibrantInfo,self.getVibrantInfoFromElement=getVibrantInfoFromElement,self});