angular.module("fluro").service("Instagram",function($http){return{get:function(id,clientId,cb){var URL="https://api.instagram.com/v1/users/"+id+"/media/recent/?access_token=15687785.5368243.6d75bd1e5c3c4de79a2b8fc9c7b4150b&client_id="+clientId+"&callback=JSON_CALLBACK";return console.log("Loading Instagram URL",URL),$http.jsonp(URL).success(function(res){return console.log("Retrieved",res),cb(res.data)})}}}),angular.module("fluro").directive("instagramUserFeed",function(){return{restrict:"EA",controller:function($scope,$attrs,Instagram){return $scope.images=[],Instagram.get($attrs.userId,$attrs.clientId,function(grams){return $scope.instagrams=grams})}}}),angular.module("fluro").directive("heroUnit",function(){return{restrict:"E",replace:!0,template:'<div class=hu><div class=hu-outer><div class=hu-inner ng-transclude></div></div><div class=hu-background ng-switch=background._type><fluro-video ng-params={autoplay:1} ng-model=background ng-switch-when=video></fluro-video><div class=img style="background-image: url({{$root.asset.imageUrl(background._id, 1200)}})" ng-switch-default><img ng-src="{{$root.asset.imageUrl(background._id, 1200)}}" preload-image></div></div></div>',transclude:!0,scope:{background:"="}}}),angular.module("fluro").directive("preloadImage",function(){return{restrict:"A",link:function(scope,element,attrs){var aspect=angular.isDefined(attrs.aspect)?scope.$parent.$eval(attrs.aspect):0;aspect||(aspect=0),scope.aspect=aspect,aspect?element.wrap('<div class="preload-image-outer aspect-ratio" style="padding-bottom:'+scope.aspect+'%"></div>'):element.wrap('<div class="preload-image-outer"></div>');var preloader=angular.element('<span class="image-preloader"><i class="fa fa-spinner fa-spin"/></span>');element.on("load",function(){element.removeClass("preload-hide"),element.addClass("preload-show"),preloader.remove()}),scope.$watch("ngSrc",function(){element.addClass("preload-hide"),element.parent().append(preloader)})}}}),angular.module("fluro").directive("stripeDonationForm",function($rootScope,FluroContent){return{restrict:"E",replace:!0,template:'<div class=stripe-donation-form><div ng-switch=status><div ng-switch-default><div class=form-group><div class=input-group><div class=input-group-addon>$</div><input type=number ng-model=initConfig.amount placeholder=Amount class="form-control"></div></div><a class="btn btn-primary" ng-click=charge($event)><span>{{initConfig.buttonText}}</span></a></div><div ng-switch-when=processing class=stripe-processing-message><div class=stripe-processing-spinner><i class="fa fa-spinner fa-spin"></i></div><div class=stripe-processing-message>Processing transaction</div></div><div ng-switch-when=error class=stripe-error-message><h4><i class="fa fa-exclamation"></i> Error processing transaction!</h4><div>Sorry but there was an error processing your transaction</div><pre class=stripe-error-raw>{{errorDetails | json}}</pre><a class="btn btn-default" ng-click=reset()><i class="fa fa-rotate-left"></i><span>Start Over</span></a></div><div ng-switch-when=success class=stripe-success-message><h4><i class="fa fa-check"></i>Success!</h4><div>Thank you, your transaction was made successfully</div><p><strong>Transaction ID:</strong> {{successDetails._id}}<br><strong>Amount:</strong> {{successDetails.amount / 100 | currency}} {{successDetails.currency}}</p><a class="btn btn-primary" ng-click=reset($event)><span>Done</span><i class="fa fa-check"></i></a></div></div></div>',scope:{image:"=",initConfig:"=config",integration:"="},link:function($scope,$element,$attributes){function getConfiguration(){function chargeCallback(token){function success(res){console.log("Success",res),$scope.successDetails=res,$scope.status="success"}function fail(res){console.log("Error",res),$scope.errorDetails=res,$scope.status="error"}console.log("Received Token",token),$scope.status="processing";var title="Donation",amount=100*$scope.initConfig.amount;config.title&&(title=config.title);var paymentDetails={token:token.id,currency:config.currency,title:title,amount:amount};console.log("Make payment",paymentDetails),FluroContent.endpoint("payment/"+$scope.integration._id+"/create").save(paymentDetails).$promise.then(success,fail)}var config;return config=$scope.initConfig?angular.copy($scope.initConfig):{},$scope.integration.publicDetails.sandbox?config.key=$scope.integration.publicDetails.testPublicKey:config.key=$scope.integration.publicDetails.livePublicKey,$scope.image&&$scope.image._id&&(config.image=$rootScope.asset.imageUrl($scope.image._id,128),console.log("Stripe Badge",config.image)),config.token=chargeCallback,config}if($scope.status="ready",!window.StripeCheckout)return void console.log("Stripe Checkout was not found please make sure to include https://checkout.stripe.com/checkout.js");$(window).on("popstate",function(){handler&&handler.close()});var handler,configuration;$scope.$watch("initConfig + image._id + integration",function(){if(!$scope.integration)return void console.log("No integration provided!");$scope.initConfig||($scope.initConfig={buttonText:"Donate",amount:20}),configuration=getConfiguration(),console.log("Update configuration",configuration),handler=StripeCheckout.configure(configuration)},!0),$scope.charge=function(event){if(console.log("Clicked charge"),event&&event.preventDefault(),!handler)return void console.log("HANDLER CONFIGURATION ERROR");if(!configuration)return void console.log("CONFIGURATION ERROR");var paymentDetails=angular.copy(configuration);paymentDetails.amount=100*$scope.initConfig.amount,console.log("Payment details",paymentDetails),handler.open(paymentDetails)},$scope.reset=function(){console.log("Reset"),$scope.initConfig.amount=0,$scope.status="ready",delete $scope.errorDetails,delete $scope.successDetails}}}}),angular.module("fluro").directive("menu",function(){return{restrict:"E",replace:!0,template:'<ul class="basic-menu basic-menu-{{trigger}}"><li ng-if="trigger != \'click\'" ng-repeat="menuItem in model" ng-class="{\'dropdown\':menuItem.items.length, \'open\':isExpanded(menuItem)}"><a ng-class="{\'hidden-xs\':menuItem.items.length}" class={{menuItem.class}} ui-sref={{getSref(menuItem)}} ui-sref-opts=menuItem.stateRefOptions ng-if="menuItem.type == \'state\'" ui-sref-active=active><span compile-html=menuItem.title></span> <span ng-if=menuItem.items.length class=caret></span> </a><a ng-class="{\'hidden-xs\':menuItem.items.length}" class={{menuItem.class}} ng-attr-target="{{(menuItem.target.length) ? menuItem.target : undefined}}" ng-href={{menuItem.url}} ng-if="menuItem.type != \'state\'"><span compile-html=menuItem.title></span> <span ng-if=menuItem.items.length class=caret></span> </a><a ng-click=isolateToggle(menuItem) class="visible-xs-block {{menuItem.class}}" ng-if=menuItem.items.length><span compile-html=menuItem.title></span><span class=caret></span></a><ul class=dropdown-menu ng-if=menuItem.items.length><li ng-repeat="subMenuItem in menuItem.items" ng-switch=subMenuItem.type><a ui-sref={{getSref(subMenuItem)}} ui-sref-opts=subMenuItem.stateRefOptions class={{menuItem.class}} ng-switch-when=state ui-sref-active=active><span compile-html=subMenuItem.title></span></a> <a ng-attr-target="{{(subMenuItem.target.length) ? subMenuItem.target : undefined}}" class={{menuItem.class}} ng-href={{subMenuItem.url}} ng-switch-default><span compile-html=subMenuItem.title></span></a></li></ul></li><li ng-if="trigger == \'click\'" ng-repeat="menuItem in model" ng-class="{\'dropdown\':menuItem.items.length, \'open\':isExpanded(menuItem)}"><a ui-sref={{getSref(menuItem)}} ui-sref-opts=menuItem.stateRefOptions ng-if="menuItem.type == \'state\' && !menuItem.items.length" class={{menuItem.class}} ui-sref-active=active><span compile-html=menuItem.title></span> <span ng-if=menuItem.items.length class=caret></span> </a><a ng-attr-target="{{(menuItem.target.length) ? menuItem.target : undefined}}" ng-href={{menuItem.url}} class={{menuItem.class}} ng-if="menuItem.type != \'state\' && !menuItem.items.length"><span compile-html=menuItem.title></span> <span ng-if=menuItem.items.length class=caret></span> </a><a ng-click=isolateToggle(menuItem) ng-if=menuItem.items.length class={{menuItem.class}}><span compile-html=menuItem.title></span> <span class=caret></span></a><ul class=dropdown-menu ng-if=menuItem.items.length><li ng-repeat="subMenuItem in menuItem.items" ng-switch=subMenuItem.type><a ui-sref={{getSref(subMenuItem)}} ui-sref-opts=subMenuItem.stateRefOptions ng-switch-when=state class={{menuItem.class}} ui-sref-active=active><span compile-html=subMenuItem.title></span> </a><a ng-attr-target="{{(subMenuItem.target.length) ? subMenuItem.target : undefined}}" class={{menuItem.class}} ng-href={{subMenuItem.url}} ng-switch-default><span compile-html=subMenuItem.title></span></a></li></ul></li></ul>',scope:{model:"=ngModel",trigger:"=?"},link:function(scope,element,attrs){scope.justified=!!angular.isDefined(attrs.justified)&&scope.$parent.$eval(attrs.justified)},controller:function($scope,$rootScope){$scope.trigger||($scope.trigger="hover"),$scope.expanded=[],$scope.getSref=function(menuItem){return menuItem.stateParams?menuItem.state+"("+JSON.stringify(menuItem.stateParams)+")":menuItem.state},$scope.isExpanded=function(menuItem){return _.contains($scope.expanded,menuItem)},$scope.expand=function(menuItem){if(!_.contains($scope.expanded,menuItem))return $scope.expanded.push(menuItem)},$scope.isolateToggle=function(menuItem){_.contains($scope.expanded,menuItem)?$scope.collapse(menuItem):$scope.expanded=[menuItem]},$scope.toggleExpanded=function(menuItem){$scope.isExpanded(menuItem)?$scope.collapse(menuItem):$scope.expand(menuItem)},$rootScope.$on("$stateChangeSuccess",function(){$scope.collapseAll()}),$scope.collapseAll=function(){$scope.expanded.length=0},$scope.collapse=function(menuItem){_.contains($scope.expanded,menuItem)&&_.pull($scope.expanded,menuItem)}}}});