https://qrco.de/bfQL0e

Submitted URL:
https://qrco.de/bfQL0e
Report Finished:

The outgoing links identified from the page

LinkText
https://cdn.qr-code-generator.com/account37697268/48823209_1.mp3?Expires=1727241372&Signature=U1KbmHyKdVhnfccJ8FxU32yARuBo3eeKaYj8Bf6vuZivHbevpjjbBtD4YLn1k3CVOlm9NmunrSzAPaDm1K2w-Ud95lsx93odDTbxx6zklgcWoNHOfV4~JtCCdp5jPfk4OE1DsZgp9JIhLZxVQniX1R2WKMXQUT5Hlx~OQZ~okgn3VwSv8U~454bW673BWG1cpB7vnyw-M3n~DDh4~j64yVrRcvJd1J4KK5bywYPbX18RSw8oTcy6F7a~ZzB6GIQotvKArao88BmI1V2W4nhAGDSe8T82zf0cm0seN099dAEEL6EmAYZLVk5-QXf8Gqbir8Wo0KLJxzTtGdmeDudqLw__&Key-Pair-Id=KKMPOJU8AYATR
http://www.thereluctant.comwww.thereluctant.com

JavaScript Variables · 14 found

Global JavaScript variables loaded on the window object of a page, are variables declared outside of functions and accessible from anywhere in the code within the current scope

NameType
onbeforetogglestring
documentPictureInPicturestring
onscrollendstring
YII_CSRF_TOKENstring
GLOBAL_CSRF_TOKENstring
$string
jQuerystring
appstring
SocialShareKitstring
angularstring

Console log messages · 0 found

Messages logged to the web console

HTML

The raw HTML body of the page

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" itemscope="" itemtype="http://qrco.de/bfQL0e?trackSharing=1"><head><style type="text/css">@charset "UTF-8";[ng\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}</style>
    <link rel="stylesheet" type="text/css" href="/css/build/pages/dmp3/template_normal.min.css?v=a4b96120de920e7fbd5ebfd0eb32701338a8a557">
<script type="text/javascript">
/*<![CDATA[*/
YII_CSRF_TOKEN='8225866e61aa90349310da646e19380d4d190780';
/*]]>*/
</script>
<title>Mp3 Page</title>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <meta name="robots" content="noindex, nofollow">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <link rel="shortcut icon" href="/img/favicon/favicon.ico" type="image/x-icon">
    <script type="text/javascript">
        window.GLOBAL_CSRF_TOKEN = '8225866e61aa90349310da646e19380d4d190780';
    </script>
            <link rel="apple-touch-icon" href="//s3.eu-central-1.amazonaws.com/qrcgappcdn/mp3-solution/header.png">
        <link rel="apple-touch-icon" sizes="76x76" href="//s3.eu-central-1.amazonaws.com/qrcgappcdn/mp3-solution/header.png">
        <link rel="apple-touch-icon" sizes="120x120" href="//s3.eu-central-1.amazonaws.com/qrcgappcdn/mp3-solution/header.png">
        <link rel="apple-touch-icon" sizes="152x152" href="//s3.eu-central-1.amazonaws.com/qrcgappcdn/mp3-solution/header.png">
        <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
    <!--Facebook meta-->
    <meta property="og:url" content="http://qrco.de/bfQL0e?trackSharing=1">
    <meta property="og:title" content="Stars">
    <meta property="og:description" content="The Reluctant">
    <meta property="og:image" content="http://s3.eu-central-1.amazonaws.com/qrcgappcdn/mp3-solution/header.png">
    <meta property="og:image:width" content="200">
    <meta property="og:image:height" content="200">
    <!-- Twitter Card data -->
    <meta name="twitter:card" content="summary">
    <meta name="twitter:url" content="http://qrco.de/bfQL0e?trackSharing=1">
    <meta name="twitter:title" content="Stars">
    <meta name="twitter:description" content="The Reluctant">
    <meta name="twitter:image" content="http://s3.eu-central-1.amazonaws.com/qrcgappcdn/mp3-solution/header.png">
    <meta name="twitter:image:width" content="200">
    <meta name="twitter:image:height" content="200">

    <!-- Schema.org markup for Google+ -->
    <meta itemprop="name" content="Stars">
    <meta itemprop="description" content="The Reluctant">
    <meta itemprop="image" content="http://s3.eu-central-1.amazonaws.com/qrcgappcdn/mp3-solution/header.png">

</head>
<body ng-app="app" id="mp3-body" ng-controller="ComplexController" class="whiteTheme">
<div class="loading-welcome active welcome-screen" ng-style="{'background-color': view.code.welcome_extra.background || view.welcome_extra.background}" style="background-color: #ffffff">
    <div class="progress">
        <div class="loading-bar indeterminate" ng-style="{'background-color': view.code.color1 || view.color1}" style="background-color: rgb(255, 127, 114);"></div>
    </div>
    <div class="helper"></div>
    <img id="welcomeImg" imageonload="" ng-src="//s3.eu-central-1.amazonaws.com/qrcgappcdn/mp3-solution/welcome.png" ng-style="{
            'max-width': view.code.welcome_extra.zoom *2 || view.welcome_extra.zoom *2 + 'px',
            'max-height': view.code.welcome_extra.zoom *2 || view.welcome_extra.zoom *2 + 'px',
            'animation-iteration-count' :  view.showPreview == 'infinite' ? 'infinite' : '',
            'animation-direction' :  view.showPreview == 'infinite' ? 'alternate' : ''
            }" src="//s3.eu-central-1.amazonaws.com/qrcgappcdn/mp3-solution/welcome.png" style="max-width: 100px; max-height: 100px; display: inline; opacity: 0.862327;">
</div>
<div class="vcard-template style2" id="rootElement">
    <div class="bgd-shadow"></div>
    <div class="page-home page">

        <div class="header-container">
            <div class="dynamicTextColor">
                <div class="skewBackground" ng-style="getBackgroundColor()" style="background: rgb(255, 127, 114);"></div>
                <!-- ngIf: !loadDemo && view.code.downloadMp3 --><a class="download-mp3 dynamicTextColor ng-scope" ng-if="!loadDemo &amp;&amp; view.code.downloadMp3" href="https://cdn.qr-code-generator.com/account37697268/48823209_1.mp3?Expires=1727241372&amp;Signature=U1KbmHyKdVhnfccJ8FxU32yARuBo3eeKaYj8Bf6vuZivHbevpjjbBtD4YLn1k3CVOlm9NmunrSzAPaDm1K2w-Ud95lsx93odDTbxx6zklgcWoNHOfV4~JtCCdp5jPfk4OE1DsZgp9JIhLZxVQniX1R2WKMXQUT5Hlx~OQZ~okgn3VwSv8U~454bW673BWG1cpB7vnyw-M3n~DDh4~j64yVrRcvJd1J4KK5bywYPbX18RSw8oTcy6F7a~ZzB6GIQotvKArao88BmI1V2W4nhAGDSe8T82zf0cm0seN099dAEEL6EmAYZLVk5-QXf8Gqbir8Wo0KLJxzTtGdmeDudqLw__&amp;Key-Pair-Id=KKMPOJU8AYATR" download="AUD-20240121-WA0007.mp3" id="download-fab-button">
                    <i class="icon-download" ng-click=""></i>
                </a><!-- end ngIf: !loadDemo && view.code.downloadMp3 -->
                <!-- ngIf: loadDemo && view.code.downloadMp3 -->
                <span class="share-icon dynamicTextColor" id="share-fab-button" ng-click="!loadDemo ?  '' : callAction($event,'shareAction')">
                    <i class="icon-share" ng-click=""></i>
                </span>
            </div>
        </div>
        <div class="page-body ">
            <!-- ngIf: view.code.avatar --><div class="avatar-container avatar-square ng-scope" ng-if="view.code.avatar" ng-style="setAvatarExtra()" style="background: url(&quot;//s3.eu-central-1.amazonaws.com/qrcgappcdn/mp3-solution/header.png&quot;) 0% 0% / 100% rgb(255, 255, 255);"></div><!-- end ngIf: view.code.avatar -->
            <div id="card-body">
    <div class="card-title mb-10 ng-binding">
        Stars
    </div>
    <div class="channel-label ng-binding">
        The Reluctant
    </div>
    <div class="play-container">
        <div class="htmlAudioPlayer"><audio id="music" preload="true" data-time="354.404425"><source src="https://cdn.qr-code-generator.com/account37697268/48823209_1.mp3?Expires=1727241372&amp;Signature=U1KbmHyKdVhnfccJ8FxU32yARuBo3eeKaYj8Bf6vuZivHbevpjjbBtD4YLn1k3CVOlm9NmunrSzAPaDm1K2w-Ud95lsx93odDTbxx6zklgcWoNHOfV4~JtCCdp5jPfk4OE1DsZgp9JIhLZxVQniX1R2WKMXQUT5Hlx~OQZ~okgn3VwSv8U~454bW673BWG1cpB7vnyw-M3n~DDh4~j64yVrRcvJd1J4KK5bywYPbX18RSw8oTcy6F7a~ZzB6GIQotvKArao88BmI1V2W4nhAGDSe8T82zf0cm0seN099dAEEL6EmAYZLVk5-QXf8Gqbir8Wo0KLJxzTtGdmeDudqLw__&amp;Key-Pair-Id=KKMPOJU8AYATR" type="audio/mpeg"></audio></div>
        <div id="audioplayer">
            <i id="pButton" class="icon-play" style="background:#544f71;color:#fff;" ng-click="play($event)"></i>
            <div id="timeline">
                <div id="playhead" ng-style="{background: isColorLight(view.code.color2) ? 'rgba(0, 0, 0, 0.54)' : view.code.color2}" style="background: rgb(84, 79, 113); margin-left: 0px;"></div>
                <div id="playedBar" ng-style="{background: isColorLight(view.code.color2) ? 'rgba(0, 0, 0, 0.54)' : view.code.color2}" style="background: rgb(84, 79, 113); width: 0px;"></div>
                <div class="times">
                    <span class="pull-left ng-binding">00:00</span>
                    <span class="pull-right ng-binding">05:54</span>
                </div>
            </div>

        </div>
    </div>
    <div class="mt-30 ng-hide" ng-show="view.code.button.label">
        <a class="sh-button ng-binding" ng-style="{borderColor: isColorLight(view.code.color2) ? 'rgba(0, 0, 0, 0.54)' : view.code.color2, color: isColorLight(view.code.color2) ? 'rgba(0, 0, 0, 0.54)' : view.code.color2}" ng-click="callAction($event, 'callToAction')" style="border-color: rgb(84, 79, 113); color: rgb(84, 79, 113);">
            
        </a>
    </div>
    <div class="solution-website" ng-style="{position: view.code.button.label ? 'absolute' : 'relative'}" style="position: relative;">
        <a href="http://www.thereluctant.com" target="_blank" class="ng-binding">www.thereluctant.com</a>
    </div>
</div><div id="redirectTo">
    <div class="fixed-blur-bgd">
        <div class="dialog-container">
            <div class="fab-body">
                <div class="event-title">
                    Open browser?                </div>
                <div class="dialog-body">
                    Continue? You will be directed to another website.                </div>
                <a class="event-slim-button ripplelink mt-10 pull-right" ng-style="{color: isColorLight(view.code.color2) ? 'black' : view.code.color2}" ng-click="dialogRedirectCallback(false)" style="color: rgb(84, 79, 113);">
                    No                </a>
                <a class="event-slim-button ripplelink mt-10 pull-right" ng-style="{color: isColorLight(view.code.color2) ? 'black' : view.code.color2}" ng-click="dialogRedirectCallback(true)" style="color: rgb(84, 79, 113);">
                    Yes                </a>
            </div>
        </div>
    </div>
</div>

<div id="gotIt">
    <div class="fixed-blur-bgd">
        <div class="dialog-container">
            <div class="fab-body">
                <div class="event-gotIt-button">
                </div>
                <div class="dialog-body pull-left ng-binding">
                    
                </div>
                <a class="text-regular-blue mt-20" ng-click="closeDialog()">
                    Got it                </a>
            </div>
        </div>
    </div>
</div>
<div class="fabs" id="shareFab">
    <div class="fixed-blur-bgd">
        <div class="chat">
            <div class="fab-body">
                <div class="icon-fab-close"></div>
                <div class="fab-header" ng-style="{'color': isColorLight(view.color2) ? 'black' : view.color2}">Share</div>
                <ul class="ssk-block ssk-md" data-url="https://qrco.de/bfQL0e?trackSharing=1" data-text="">
                    <li>
                        <i class="iconFab icon-fab-share-facebook"></i>
                        <a href="" class="ssk ssk-text ssk-facebook">Facebook</a>
                    </li>
                    <li>
                        <i class="iconFab icon-fab-share-x"></i>
                        <a href="" class="ssk ssk-text ssk-twitter">X</a>
                    </li>
                    <li>
                        <i class="iconFab icon-fab-share-whatsapp"></i>
                        <a href="whatsapp://send?text=https://qrco.de/bfQL0e?trackSharing=1" class="ssk ssk-whatsapp">Whatsapp</a>
                    </li>
                    <li>
                        <i class="iconFab icon-fab-share-email"></i>
                        <a href="mailto:?body=https://qrco.de/bfQL0e?trackSharing=1" target="_blank">Email</a>
                    </li>
                    <li>
                        <i class="iconFab icon-fab-share-message"></i>
                        <input id="shortUrl" value="https://qrco.de/bfQL0e" readonly="">
                        <button id="copyButton">Copy</button>
                        <div class="ifCopySucceed ng-hide" ng-show="ifCopySucceed">
                            Text copied to the clipboard.                        </div>
                    </li>
                </ul>
            </div>
        </div>
    </div>
</div>
        </div>
    </div>
</div>
<script type="text/javascript" src="/public/lib/jquery/dist/jquery.min.js?v=a4b96120de920e7fbd5ebfd0eb32701338a8a557"></script>
<script type="text/javascript" src="/js/build/angular.rendering.min.js?v=a4b96120de920e7fbd5ebfd0eb32701338a8a557"></script>
<script type="text/javascript">
/*<![CDATA[*/


    /**
     * Angular connection
     */
    app.loadBasePreviewController();


    /**
     * Return escape value of param
     *
     * @param input - string
     * */
    app.filter('escape', function () {
        return function (input) {
            if (input) {
                return escape(input);
            } else
                return ' ';
        };
    });

    /**
     * Return domain of input
     * */
    app.filter('domain', function () {
        return function (input) {
            if (input) {
                if (input.indexOf('://') >= 0) {
                    return input.split('/')[2]
                }
                return input.split('/')[0]
            }
            return input;
        };
    });

    /**
     * The QR service for the app.
     * */
    app.service('qr', function () {
        /**
         * Scroll page from bottom to top
         * */
        this.scrollFromBottomtoTop = function (loadDemo) {
            setTimeout(function () {
                if (loadDemo == true) {
                    if ($('.solution-website').offset() != undefined) {
                        $("html, body").animate({
                            scrollTop: $('.solution-website').offset().top
                        }, 0)
                        ;$("html, body").animate({
                            scrollTop: 0
                        }, 1000);
                    }
                }
            }, 0)
        }
    });

    /**
     * Directive
     *
     * When image is loaded fadeout welcome screen
     * */
    app.directive('imageonload', ['qr', '$cookies', function (qr, $cookies) {
        return {
            restrict: 'A',
            link: function (scope, element, attrs) {
                element.bind('load', function () {
                    $("#welcomeImg").fadeIn(1000);
                    window.setTimeout(function () {
                        $(".loading-welcome.welcome-screen").fadeOut();
                        scope.welcomeScreenScrollWindow++;
                        if (scope.welcomeScreenScrollWindow == 1) {
                            qr.scrollFromBottomtoTop(scope.loadDemo)
                        }
                    }, 2000);
                });
                element.bind('error', function () {
                });
            }
        };
    }]);

    app.filter('secondsToDateTime', [function () {
        return function (seconds) {
            const date = new Date((seconds || 0) * 1000).toISOString();
            const showHours = seconds >= 3600;
            return date.slice(showHours? 11: 14, 19);
        };
    }]);

    //Override the base preview controller
    app.controller('ComplexController', function ($rootScope, $scope, $controller, $filter, previewService, $window, $sce) {
            $scope.oldUrl = false;
            $scope.welcomeScreenScrollWindow = 0;

            $scope.includeDesktopTemplate = false;
            $scope.includeMobileTemplate = false;

            var screenWidth = $window.innerWidth;

            if (screenWidth < 700) {
                $scope.includeMobileTemplate = true;
            } else {
                $scope.includeDesktopTemplate = true;
            }

            /**
             * Check if device is mobile
             * */
            $scope.mobilecheck = function () {
                var check = false;
                (function (a) {
                    if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) check = true;
                })(navigator.userAgent || navigator.vendor || window.opera);
                return check;
            };
            $scope.mobilecheck();


            /**
             * Set solid background for the header based on the title section height
             * */
            $scope.setSolidBgd = function () {
                if ($scope.view.code) {
                    var titleSectionHeight = 142;
                    setTimeout(function () {
                        if ($scope.view.code.teaser) {
                            titleSectionHeight = $('.event-content-container').parent().outerHeight() + 60 + 128
                        }
                        else
                            titleSectionHeight = $('.event-content-container').parent().outerHeight() + 60;
                        $('.solid-bgd').css({
                            'background-color': $scope.view.code.color1 ? $scope.view.code.color1 : '#447fb6',
                            'height': !$scope.view.code.avatar ? titleSectionHeight + 'px' : '420px'
                        })
                    }, 0);
                }
            };

            /**
             * Open the dialog popup
             * Event is for getting the current target element
             * Target:
             *      - shareAction: Button with got it information
             *      - channelAction: Button with got it information
             *
             * @param event - string
             * @param target - string
             * */
            $scope.callAction = function (event, target) {
                switch (target) {
                    case 'callToAction':
                        event.preventDefault();
                        if ($scope.loadDemo) {
                            $scope.gotItText = 'Name this optional button as you want and link to any website of your choice.';
                            $scope.toggleDialog('gotIt', $(event.currentTarget));
                        } else {
                            $scope.toggleDialog('redirectTo');
                        }
                        break;
                    case 'shareAction':
                        if ($scope.loadDemo) {
                            $scope.gotItText = 'Users can tap this button to share your page.';
                            $scope.toggleDialog('gotIt', $(event.currentTarget));
                            $('#gotIt .share-icon').css({'background': $scope.view.code.color1})
                        }
                        break;
                    case 'downloadAction':
                        if ($scope.loadDemo) {
                            $scope.gotItText = 'Users can tap this button to download your mp3.';
                            $scope.toggleDialog('gotIt', $(event.currentTarget));
                            $('#gotIt .download-mp3').css({'background': $scope.view.code.color1})
                        }
                        break;
                }
            };

            /**
             * Toggle dialog
             *
             * @param id - string
             * @param element - current target
             * */
            $scope.toggleDialog = function (id, element) {
                if (element) {
                    var elem = element.context.outerHTML;
                    $('#' + id + ' .dialog-container .event-gotIt-button').html(elem);
                }
                $($('#' + id).parent()).toggleClass('fabOnTop');
                $('#' + id + ' .dialog-container').toggleClass('is-visible');
                $('#prime.fab').toggleClass('disabledClick');
                $('#' + id + ' .fixed-blur-bgd').toggle();
            };

            /**
             * Callback of the dialog yes/no buttons
             * Can close the dialog or it can redirect to a url and close the dialog
             * If the url is not defined it will use the targetUrl from the callAction button
             *
             * @param proceed - string
             * @param url - current target
             * */
            $scope.dialogRedirectCallback = function (proceed, url) {
                if (proceed) {
                    if (url) {
                        $window.open(url, '_blank');
                    } else {
                        if ($scope.view.code.button.url.indexOf('http') < 0)
                            $window.open('//' + $scope.view.code.button.url, '_blank');
                        else
                            $window.open($scope.view.code.button.url, '_blank');
                    }
                    $scope.closeDialog();
                } else {
                    $scope.closeDialog();
                }
            };

            /**
             * Close dialog
             *
             * */
            $scope.closeDialog = function () {
                $('.dialog-container').removeClass('is-visible');
                $('#prime.fab').toggleClass('disabledClick');
                $('.event-gotIt-button').html('');
                $('.fixed-blur-bgd').hide();
            };


            /**
             * Set position of the fab Button
             *If we have only one fab you have to use bottom 5px!!! else use 75px as default
             * */
            $scope.setPosition = function () {
                if ($(window).innerWidth() < 667) {
                    var bottom = '5px',
                        right = '0px';
                    if ($(window).innerWidth() < 321)
                        right = '-25px';
                    return {
                        'position': 'fixed',
                        'bottom': bottom,
                        'right': right,
                        'width': '80px'
                    }
                }
                return '';
            };

            //Inherrit from basePreviewController
            angular.extend(this, $controller('BasePreviewController', {$scope: $scope}));

            $scope.loadDemo = parent && typeof parent.ImHere === "function";

            //Get the json data form the file
            json_data = {"form":[{"section_mp3":{"fold":false}},{"section_design":{"fold":false}},{"section_basic_info":{"fold":false}},{"section_welcome_screen":[]}],"code":{"color1":"#ff7f72","color2":"#544f71","mp3":{"name":"AUD-20240121-WA0007.mp3","type":"audio\/mpeg","size":14415793,"progress":100,"url":"https:\/\/cdn.qr-code-generator.com\/account37697268\/48823209_1.mp3?Expires=1727241372&Signature=U1KbmHyKdVhnfccJ8FxU32yARuBo3eeKaYj8Bf6vuZivHbevpjjbBtD4YLn1k3CVOlm9NmunrSzAPaDm1K2w-Ud95lsx93odDTbxx6zklgcWoNHOfV4~JtCCdp5jPfk4OE1DsZgp9JIhLZxVQniX1R2WKMXQUT5Hlx~OQZ~okgn3VwSv8U~454bW673BWG1cpB7vnyw-M3n~DDh4~j64yVrRcvJd1J4KK5bywYPbX18RSw8oTcy6F7a~ZzB6GIQotvKArao88BmI1V2W4nhAGDSe8T82zf0cm0seN099dAEEL6EmAYZLVk5-QXf8Gqbir8Wo0KLJxzTtGdmeDudqLw__&Key-Pair-Id=KKMPOJU8AYATR"},"title":"Stars","info":"The Reluctant","website":"www.thereluctant.com","avatar":"\/\/s3.eu-central-1.amazonaws.com\/qrcgappcdn\/mp3-solution\/header.png","avatar_extra":{"zoom":100,"background":"#ffffff"},"welcome_extra":{"zoom":50,"background":"#ffffff"},"button":{"url":""},"downloadMp3":true},"showPreview":0,"welcome_screen":"\/\/s3.eu-central-1.amazonaws.com\/qrcgappcdn\/mp3-solution\/welcome.png"};


            previewService.pushData(json_data);

            function setAvatarBackgroundImage() {
                if ($scope.view.code) {
                    if ($scope.view.code.avatar)
                        return {
                            'background': 'url(' + $scope.view.code.avatar + ')'
                        };
                    else return {
                        'height': '0px',
                        'background': 'none'
                    }
                }
            }

            /**
             * Set avatar background with extra options like zoom and background color
             * */
            $scope.setAvatarExtra = function () {
                var style = {};
                if ($scope.view.code) {
                    if ($scope.view.code.avatar)
                        style = {
                            'background': 'url(' + $scope.view.code.avatar + ')',
                            'background-size': '100%',
                            'background-color': '#ffffff'
                        };
                    else
                        style = {
                            'height': '0px',
                            'background': 'none'
                        };
                    if ($scope.view.code.avatar_extra) {
                        style['background-size'] = $scope.view.code.avatar_extra.zoom + '%';
                        style['background-color'] = $scope.view.code.avatar_extra.background;
                    }
                }
                return style;
            };

            /**
             * Watch avatarExtra values and set the css
             * */
            $scope.$watch('view.code.avatar_extra', function (newVal) {
                if (newVal) {
                    $('.avatar-container').css({
                        'background-size': newVal.zoom + '%!important',
                        'background-color': newVal.background,
                        'background-position': 'center center'
                    });
                }
            });

            function getBackgroundColor() {
                if ($scope.view.code) {
                    return {
                        "background": $scope.view.code.color1 || '#3866b8'
                    };
                }
            }


            /**
             * Get the URL of the MP3 file
             */
            $scope.getMP3Url = function () {
                if ($scope.view.code && $scope.view.code.mp3) {
                    return $sce.trustAsResourceUrl($scope.view.code.mp3.url);
                }
                else
                    return "//"
            };

            $scope.getBackgroundColor = getBackgroundColor;
            $scope.setAvatarBackgroundImage = setAvatarBackgroundImage;


            /**
             * Watch showPreview value
             *
             * @param p1 - new value
             * @param p2 - old value
             * */
            $scope.$watch("view.showPreview", function (p1, p2, p3) {
                if (p1 != undefined && p1 == 'infinite') {
                    setTimeout(function () {
                        $(".loading-welcome.welcome-screen").show();
                        $("#welcomeImg").fadeIn(1000);
                    }, 500)
                } else if (p1 == undefined && p2 != undefined && p2 == 'infinite') {
                    $("#welcomeImg").hide();
                    $(".loading-welcome").fadeOut();
                } else if ((p1 != undefined && p2 != undefined && p1 != p2) || (p1 != undefined && p1 != 0 && p2 == undefined && p1 != p2)) {
                    setTimeout(function () {
                        $(".loading-welcome.welcome-screen").show();
                        $("#welcomeImg").hide();
                        $("#welcomeImg").fadeIn(1000);
                        setTimeout(function () {
                            $(".loading-welcome").fadeOut();
                        }, 2000)
                    }, 500)
                }
            });

            /**
             * Convert hex color to rgbA
             *
             * @param hex - color
             * @param opacity - value between 0-1
             * */
            $scope.hexToRgbA = function (hex, opacity) {
                var c;
                if (/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)) {
                    c = hex.substring(1).split('');
                    if (c.length == 3) {
                        c = [c[0], c[0], c[1], c[1], c[2], c[2]];
                    }
                    c = '0x' + c.join('');
                    return 'rgba(' + [(c >> 16) & 255, (c >> 8) & 255, c & 255].join(',') + ',' + opacity + ')';
                }
            };

            /**
             * Set text color based on the background
             *
             * @param color - background color
             * */
            $scope.isColorLight = function (color) {
                var c;
                if (/^#([A-Fa-f0-9]{3}){1,2}$/.test(color)) {
                    c = color.substring(1).split('');
                    if (c.length == 3) {
                        c = [c[0], c[0], c[1], c[1], c[2], c[2]];
                    }
                    c = '0x' + c.join('');

                    var r = (c >> 16) & 255,
                        g = (c >> 8) & 255,
                        b = c & 255;
                    // Counting the perceptive luminance
                    // human eye favors green color...
                    var a = 1 - (0.240 * r + 0.470 * g + 0.150 * b) / 255;
                    return (a < 0.4);
                }
            };

            /**
             * Copy short ulr to clipboard
             *
             * @param elem - input element with the link
             * */
            $scope.ifCopySucceed = false;
            $scope.copyLinkToClipboard = function (elem) {
                var targetId = "_hiddenCopyText_";
                var isInput = elem.tagName === "INPUT" || elem.tagName === "TEXTAREA";
                var origSelectionStart, origSelectionEnd;
                if (isInput) {
                    // can just use the original source element for the selection and copy
                    target = elem;
                    origSelectionStart = elem.selectionStart;
                    origSelectionEnd = elem.selectionEnd;
                } else {
                    // must use a temporary form element for the selection and copy
                    target = document.getElementById(targetId);
                    if (!target) {
                        var target = document.createElement("textarea");
                        target.style.position = "absolute";
                        target.style.left = "-9999px";
                        target.style.top = "0";
                        target.id = targetId;
                        document.body.appendChild(target);
                    }
                    target.textContent = elem.textContent;
                }
                // select the content
                var currentFocus = document.activeElement;
                target.focus();
                target.setSelectionRange(0, target.value.length);

                // copy the selection
                var succeed;
                try {
                    succeed = document.execCommand("copy");
                } catch (e) {
                    succeed = false;
                }
                // restore original focus
                if (currentFocus && typeof currentFocus.focus === "function") {
                    currentFocus.focus();
                }

                if (isInput) {
                    // restore prior selection
                    elem.setSelectionRange(origSelectionStart, origSelectionEnd);
                } else {
                    // clear temporary content
                    target.textContent = "";
                }
                $scope.$apply(function () {
                    $scope.ifCopySucceed = succeed;
                });
                setTimeout(function () {
                    $scope.$apply(function () {
                        $scope.ifCopySucceed = false;
                    });
                }, 1500)
            };


            /**
             * Determine the mobile operating system.
             * This function returns one of 'iOS', 'Android', 'Windows Phone', or 'unknown'.
             *
             * @returns {String}
             */
            $scope.getMobileOperatingSystem = function () {
                var userAgent = navigator.userAgent || navigator.vendor || window.opera;

                // Windows Phone must come first because its UA also contains "Android"
                if (/windows phone/i.test(userAgent)) {
                    return "Windows Phone";
                }

                if (/android/i.test(userAgent)) {
                    return "Android";
                }

                // iOS detection from: http://stackoverflow.com/a/9039885/177710
                if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {
                    return "iOS";
                }

                return "unknown";
            };

            $scope.returnPlayColor = function () {
                if ($scope.view && $scope.view.code) {
                    var textColor = $scope.isColorLight($scope.view.code.color2) ? "#000" : "#fff";
                    var pauseColor = $scope.isColorLight($scope.view.code.color2) ? "#000" : $scope.view.code.color2;
                    if ($('#pButton').hasClass('icon-pause'))
                        return "background:none;" + "color:" + pauseColor + ";border: 1px solid " + pauseColor + ";";
                    else
                        return "background:" + $scope.view.code.color2 + ";color:" + textColor + ";";
                }
            };

            $scope.$watch('view.code.mp3.url', function (newVal, oldVal, scope) {
                if (newVal) {
                    if ($scope.view.code.downloadMp3 == undefined)
                        $scope.view.code.downloadMp3 = true;
                    var htmlAudioPlayer = $(".play-container .htmlAudioPlayer");
                    switch (scope.view.code.mp3.type) {
                        case 'audio/wav':
                            htmlAudioPlayer.html('<audio id="music" preload="true">' +
                                '<source src="' + $scope.getMP3Url() + '" type="audio/wav">' +
                                '</audio>');
                            break;
                        case 'audio/ogg':
                            htmlAudioPlayer.html('<audio id="music" preload="true">' +
                                '<source src="' + $scope.getMP3Url() + '" type="audio/ogg">' +
                                '</audio>');
                            break;
                        default:
                            htmlAudioPlayer.html('<audio id="music" preload="true">' +
                                '<source src="' + $scope.getMP3Url() + '" type="audio/mpeg">' +
                                '</audio>');
                    }
                    setTimeout(function () {
                        var music = undefined;
                        music = document.getElementById('music'); // id for audio element
                        $scope.$apply(function () {
                            $scope.currentMusic = music;
                        })
                        var duration = music.duration; // Duration of audio clip, calculated here for embedding purposes
                        var pButton = document.getElementById('pButton'); // play button
                        var playhead = document.getElementById('playhead'); // playhead
                        var playedBar = document.getElementById('playedBar'); // playhead
                        var timeline = document.getElementById('timeline'); // timeline


                        playhead.style.marginLeft = 0 + "px";
                        playedBar.style.width = 0 + "px";

                        // timeline width adjusted for playhead
                        var timelineWidth = timeline.offsetWidth - playhead.offsetWidth;

                        // play button event listenter
                        //pButton.addEventListener("click", play);

                        // timeupdate event listener
                        music.addEventListener("timeupdate", timeUpdate, false);

                        // makes timeline clickable
                        timeline.addEventListener("click", function (event) {
                            moveplayhead(event);
                            if (!isNaN(duration))
                                music.currentTime = parseFloat(duration * clickPercent(event));
                            $scope.$apply(function () {
                                $scope.duration = duration;
                                $scope.currentTime = music.currentTime;
                            });

                        }, false);

                        // returns click as decimal (.77) of the total timelineWidth
                        function clickPercent(event) {
                            return (event.clientX - getPosition(timeline)) / timelineWidth;
                        }

                        // makes playhead draggable
                        playhead.addEventListener('mousedown', mouseDown, false);
                        window.addEventListener('mouseup', mouseUp, false);

                        // Boolean value so that audio position is updated only when the playhead is released
                        var onplayhead = false;

                        // mouseDown EventListener
                        function mouseDown() {
                            onplayhead = true;
                            window.addEventListener('mousemove', moveplayhead, true);
                            music.removeEventListener('timeupdate', timeUpdate, false);
                        }

                        // mouseUp EventListener
                        // getting input from all mouse clicks
                        function mouseUp(event) {
                            if (onplayhead == true) {
                                moveplayhead(event);
                                window.removeEventListener('mousemove', moveplayhead, true);
                                // change current time
                                if (!isNaN(duration))
                                    music.currentTime = parseFloat(duration * clickPercent(event));
                                $scope.$apply(function () {
                                    $scope.currentTime = duration;
                                });
                                music.addEventListener('timeupdate', timeUpdate, false);
                            }
                            onplayhead = false;
                        }

                        // mousemove EventListener
                        // Moves playhead as user drags
                        function moveplayhead(event) {
                            var newMargLeft = event.clientX - getPosition(timeline);

                            if (newMargLeft >= 0 && newMargLeft <= timelineWidth) {
                                playhead.style.marginLeft = newMargLeft + "px";
                                playedBar.style.width = newMargLeft + "px";
                            }
                            if (newMargLeft < 0) {
                                playhead.style.marginLeft = "0px";
                                playedBar.style.width = "0px";
                            }
                            if (newMargLeft > timelineWidth) {
                                playhead.style.marginLeft = timelineWidth + "px";
                                playedBar.style.width = timelineWidth + "px";
                            }
                        }

                        // timeUpdate
                        // Synchronizes playhead position with current point in audio
                        function timeUpdate() {
                            var playPercent = timelineWidth * (music.currentTime / duration);
                            playhead.style.marginLeft = playPercent + "px";
                            playedBar.style.width = playPercent + "px";
                            $scope.$apply(function () {
                                $scope.currentTime = music.currentTime;
                            });
                            if (music.currentTime == duration) {
                                pButton.className = "";
                                pButton.className = "icon-play";
                                pButton.style = $scope.returnPlayColor();
                                $('.avatar-square').removeClass('playZoom');
                            }
                        }


                        // Gets audio file duration
                        music.addEventListener("canplaythrough", function () {
                            duration = music.duration;
                            $scope.$apply(function () {
                                $scope.duration = duration;
                            })
                        }, false);

                        // getPosition
                        // Returns elements left position relative to top-left of viewport
                        function getPosition(el) {
                            return el.getBoundingClientRect().left;
                        }

                        music.addEventListener('loadedmetadata', function () {
                            music.setAttribute('data-time', music.duration);
                            $scope.$apply(function () {
                                $scope.currentTime = "0.00";
                                $scope.duration = music.duration;
                            });
                        }, false);
                    }, 0)
                }
            })

            $scope.play = function (event) {
                // start music
                var pButton = event.currentTarget;
                if ($scope.currentMusic.paused) {
                    $('.avatar-square').addClass('playZoom');
                    $scope.currentMusic.play();
                    // remove play, add pause
                    pButton.className = "";
                    pButton.className = "icon-pause";
                } else { // pause music
                    $('.avatar-square').removeClass('playZoom');
                    $scope.currentMusic.pause();
                    // remove pause, add play
                    pButton.className = "";
                    pButton.className = "icon-play";
                }
            }
            $(document).ready(function () {
                /**
                 * To work, function 'copyLinkToClipboard' needs to be called from an event listener on the copy button
                 * */
                document.getElementById("copyButton").addEventListener("click", function () {
                    $scope.copyLinkToClipboard(document.getElementById("shortUrl"));
                });
                setTimeout(function () {
                    $scope.thumbnailWidth = $('.thumbnail-container').innerWidth();
                    $scope.thumbnailHeight = $('.thumbnail-container').innerHeight();
                }, 0)

            });
        }
    );

    if (parent && typeof parent.ImHere === "function") {
        parent.ImHere();
    } else {
        //Only load this on standalone pages not inframe working
        SocialShareKit.init();
    }

    /**
     * Toggle fab
     *
     * @param id - id of the fab
     */
    function toggleFab(id) {
        $(id + ' .prime').toggleClass('is-active');
        $(id + ' #prime').toggleClass('is-float');
        $($(id).parent()).toggleClass('fabOnTop');
        $('#prime.fab').toggleClass('disabledClick');
        $(id + ' .fixed-blur-bgd').toggle();
        $(id + ' .chat').toggleClass('is-visible');
    }


    $(document).ready(function () {

        $('#share-fab-button').click(function () {
            toggleFab('#shareFab');
        });

        /**
         * On window resize if width is bigger then tablet remove calendar and share mobile style
         * */
        $(window).resize(function () {
            if (window.innerWidth >= 667) {
                $('.follow-scroll.calendar-container').removeAttr('style');
                $('.follow-scroll.share-container').removeAttr('style');
            } else {
                var bottom = '5px',
                    right = '0px';
                if ($(window).innerWidth() < 321)
                    right = '-25px';
                $('.follow-scroll.share-container').css({
                    'position': 'fixed',
                    'bottom': bottom,
                    'right': right,
                    'width': '80px'
                });
            }
        });

        /**
         * Close fab from close icon
         * */
        $('#prime, .icon-fab-close').click(function () {
            var id = $($(this).closest('.fabs')).attr('id');
            toggleFab('#' + id);
        });

        /**
         * Close fab on blur bgd click
         * */
        $('.fixed-blur-bgd').click(function () {
            if (event.target == $(this)[0]) {
                $($("#prime.is-float").parent().parent()).removeClass('fabOnTop');
                $('.prime').removeClass('is-active');
                $('#prime').removeClass('is-float');
                $('#prime.fab').removeClass('disabledClick');
                $('.chat, .dialog-container').removeClass('is-visible');
                $(this).hide();
            }
        });


        /**
         * Ripple effect on element
         */
        var ink, d, x, y;
        $(".ripplelink").click(function (e) {
            if ($(this).find(".ink").length === 0) {
                $(this).prepend("<span class='ink'></span>");
            }

            ink = $(this).find(".ink");
            ink.removeClass("animate");

            if (!ink.height() && !ink.width()) {
                d = Math.max($(this).outerWidth(), $(this).outerHeight());
                ink.css({height: d, width: d});
            }

            x = e.pageX - $(this).offset().left - ink.width() / 2;
            y = e.pageY - $(this).offset().top - ink.height() / 2;

            ink.css({top: y + 'px', left: x + 'px'}).addClass("animate");
        });
    });

/*]]>*/
</script>




</body></html>