define(["polyfills","angular","jquery.tiny","angularElement"],function(e,n,i){function d(e,n){var i=e.getBoundingClientRect().top,d=e.getBoundingClientRect().bottom,t=e.getBoundingClientRect().height,r=window.innerHeight-(n||0),o=Math.round(.45*r),a=Math.round(.55*r),c=t>Math.round(.45*r);return t>0&&(i>=0&&d<=r||c&&(d>=a&&d<=r||i>=0&&i<=o||i<=0&&d>=r))}var t=n.module("ngAdView",[]);window.requirejs&&window.require&&require.defined&&require.defined("myWallet")&&(t=require("myWallet").register);var r;t.directive("ngAdContainer",function(){return{restrict:"A",scope:{},link:function(e,n,i){e.AdViews={},r=e.AdViews,e.$on("$destroy",function(){r=!1})}}}),t.factory("$adviewscroller",function(){var e,n={get:function(){return e},set:function(n){e=i(n)},reset:function(){e=i(window)}};return n.reset(),n}),t.directive("ngAdView",["$parse","$timeout","$adviewscroller",function(n,t,o){return{restrict:"A",scope:{viewid:"=?ngAdViewId",enabled:"<ngAdEnabled",aid:"<ngAdId",onViewed:"&ngAdOnViewed",onDistinctViewed:"&ngAdOnViewedById",onViewedOnce:"&ngAdOnViewedOnce",onInit:"&ngAdOnInit",childview:"=?ngAdViewChild"},link:function(t,a,c){var l,u,w,s=e.uniqid();r&&void 0!==t.aid&&(r[t.aid]?(s=r[t.aid].id,l=!r[t.aid].viewed):(r[t.aid]={id:s,viewed:!1},l=!0)),t.viewid=s;var f=o.get(),v=!f.data("hasScrollEnd")&&e.Object.isFunction(f.scrollEnd)?f.scrollEnd():null,g=f.data("hasScrollEnd")?"scrollend":"scrollstop",A=n(t.onViewed),h=n(t.onViewedOnce),V=n(t.onDistinctViewed),$=n(t.onInit),y=function(){if(!t.enabled&&void 0!=t.enabled)return!0;var n=t.$eval(c.ngAdView)||{},i=d(a[0],n.viewportoffset);if(!i&&t.childview)try{var r=t.childview.split(";");e.Array.forEach(r,function(t){var r=e.String.trim(t),o=a.cssSelect(r);if(i)return!1;e.forEach(o,function(t,r){return!e.Number.isNumber(e.Number.toNumber(r))||!(i=d(t,n.viewportoffset))&&void 0})})}catch(e){console.error(e)}i!=w&&(w=i,t.$applyAsync(function(){i?E():m()}))},b=function(){f.off(g,y),i(window).off("resizeEnd",y),r&&r[t.aid]&&delete r[t.aid],v&&v.destroy()},E=function(){A({$adId:s}),u||(u=!0,h({$adId:s})),l&&(V({$adId:s}),l=!1,r&&void 0!==t.aid&&r[t.aid]&&(r[t.aid].viewed=!0))},m=function(){};a.one("$destroy",b),t.$on("$destroy",b);var p;if($({$adId:s}),a.attr("ngAdEnabled")||c.ngAdEnabled)var I=t.$watch("enabled",function(e){setTimeout(function(){(void 0==e||e)&&(p||(f.on(g,y),i(window).on("resizeEnd",y),p=!0),y(),I())})});else f.on(g,y),i(window).on("resizeEnd",y),y()}}}])});