(function ($) {
	
	// Init
	$.fn.App = function( options ) {

		/*
		================================================================================================
		CLICK EVENT
		================================================================================================
		*/	

		var clickEvent = (function() {
			if ('ontouchstart' in document.documentElement === true) {
				return 'click';
			} else {
				return 'click';
			}
		})();		

		$.fn.App.Init = function() {
			Init();
		}		
		
        
        /*
		================================================================================================
		ONLY RUN ON INIT
		================================================================================================
		*/	
        $('.search-field').keypress(function(e){
            if(e.which == 13) {
			
                var $word = $('.search-field').val();
                
                
                if($word) {                

                    var $Page	= [];
                    $Page.push({
                        this: $(this),
                        type: 'custom',
                        layout: 'search',
                        token: $word,
                        href: 'soeg/'+$word
                    });
                    $(document).FameWork.OpenPage($Page);
                    
                } else {
                    
                    // Notification				
                    var $Confirm	= [];
                    $Confirm.push({
                        title: 'Indtast søgeord',
                        type: 'alert'
                    });
                    $(document).FameWork.Confirmbox($Confirm);
                    
                }
            }
        });
        
        
        /*
		================================================================================================
		RUN EVERYTIME PAGE LOADS
		================================================================================================
		*/	
		function Init() {

			$('#support-activate').unbind(clickEvent).click(function() {							
				ActivateSupport();
			});
			$('#support-activate-name').keypress(function(e){
				if(e.which == 13) {
					ActivateSupport();
				}
			});
            
            
            Cart();
            InitTickets();

            
            /*
            ================================================================================================
            CHAT
            ================================================================================================
            */	

            if($(".chat").length>0) {


                if(!$('.chat').hasClass('auto-messages')) {
                    ImitateChatMessage();
                }

            }
            
            
            /*
            ================================================================================================
            COUNT UP
            ================================================================================================
            */			

            if($('.count-up').length>0) {
                $('.count-up').each(function(){ 

                    var $this = $(this),
                        $numb = parseInt($this.text()),
                        $delay = parseFloat($this.attr('data-delay')),
                        $delayMax = parseFloat($this.attr('data-delay-max')),
                        $max = parseInt($this.attr('data-max')),
                        $maxResult = $this.attr('data-max-result');





                    if(!$this.hasClass('activated')) {

                        $this.attr('data-numb',$numb);

                        // Load item into modal				
                        var $Options		= [];
                        $Options.push({
                            this: $this,
                            numb: $numb,
                            delay: $delay,
                            delayMax: $delayMax,
                            max: $max,
                            maxResult: $maxResult
                        });				

                        CountUp($Options);

                    }


                });
            }
            
            
            /*
            ================================================================================================
            CALENDAR
            ================================================================================================
            */	
            
            if($(".calendar").length>0) {

                $('.calendar').each(function(){			

                    if(!$(this).hasClass('activated')) {			
                        $(this).addClass('activated');
                        ComponentCalendar($(this));
                    }

                });

            }

            if($(".calendar-list").length>0) {

                $('.calendar-list').each(function(){			

                    if(!$(this).hasClass('activated')) {			
                        $(this).addClass('activated');
                        ComponentCalendarList($(this));
                    }

                });

            }
            
            
            /*
            ================================================================================================
            BOOK FLIP
            ================================================================================================
            */

            if($(".BookFlip").length>0) {

                if(!$(".BookFlip").hasClass('activated')) {

                    $(".BookFlip").addClass('activated');
                    
                    
                    BookFlipInit();
                    
                    
                    

                    var Page = (function() {

                    var config = {
                            $bookBlock : $( '#bb-bookblock' ),
                            $navNext : $( '#bb-nav-next' ),
                            $navPrev : $( '#bb-nav-prev' ),
                            $navFirst : $( '#bb-nav-first' ),
                            $navLast : $( '#bb-nav-last' )
                        },
                        init = function() {
                            config.$bookBlock.bookblock( {
                                speed : 1000,
                                shadowSides : 0.8,
                                shadowFlip : 0.4
                            } );
                            initEvents();
                        },
                        initEvents = function() {

                            var $slides = config.$bookBlock.children();

                            // add navigation events
                            config.$navNext.on( 'click touchstart', function() {
                                config.$bookBlock.bookblock( 'next' );
                                return false;
                            } );

                            config.$navPrev.on( 'click touchstart', function() {
                                config.$bookBlock.bookblock( 'prev' );
                                return false;
                            } );

                            config.$navFirst.on( 'click touchstart', function() {
                                config.$bookBlock.bookblock( 'first' );
                                return false;
                            } );

                            config.$navLast.on( 'click touchstart', function() {
                                config.$bookBlock.bookblock( 'last' );
                                return false;
                            } );

                            // add swipe events
                            $slides.on( {
                                'swipeleft' : function( event ) {
                                    config.$bookBlock.bookblock( 'next' );
                                    return false;
                                },
                                'swiperight' : function( event ) {
                                    config.$bookBlock.bookblock( 'prev' );
                                    return false;
                                }
                            } );

                            // add keyboard events
                            $( document ).keydown( function(e) {
                                var keyCode = e.keyCode || e.which,
                                    arrow = {
                                        left : 37,
                                        up : 38,
                                        right : 39,
                                        down : 40
                                    };

                                switch (keyCode) {
                                    case arrow.left:
                                        config.$bookBlock.bookblock( 'prev' );
                                        break;
                                    case arrow.right:
                                        config.$bookBlock.bookblock( 'next' );
                                        break;
                                }
                            } );
                        };

                        return { init : init };

                    })();
                    Page.init();

                }

            }
            
            
            
            /*
			================================================================================================
			QUIZ INIT
			================================================================================================
			*/	
            Quiz();
            


		}
		
		
		

		
		/*
		================================================================================================
		ACTIVATE SUPPORT
		================================================================================================
		*/	
		function ActivateSupport() {
			
			var $name = $("#support-activate-name").val();
				

			
			
			if(!$name) {

				// Notification				
				var $Confirm	= [];
				$Confirm.push({
					title: $("#language").attr('data-error-name'),
					type: 'alert'
				});
				$(document).FameWork.Confirmbox($Confirm);

			} else {

				// Notification				
				var $Modal	= [];
				$Modal.push({
					modal: 'contact',
					width: 700,
					height: 800,
					token: $name,
					title: 'Support'
				});
				$(document).FameWork.OpenModal($Modal);

			}
			
		}
        
        
        
        function CountUp($options) {

            var $this 			= $options[0].this;
            var $numb 			= $this.attr('data-numb');
            var $delay 			= parseFloat($options[0].delay);
            var $delayMax		= parseFloat($options[0].delayMax);
            var $max			= parseInt($options[0].max);
            var $maxResult		= $options[0].maxResult;

            $this.addClass('activated');

            var $time;

            if($delayMax) {
                $time = Math.floor(Math.random() * $delayMax) + $delay;	
            } else {
                $time = $delay;
            }

            setTimeout(
            function()  {
                $numb++;
                $this.text($numb);


                $this.attr('data-numb',$numb);

                if($numb>$max) {
                    $this.text($maxResult);		
                } else {
                    CountUp($options)
                }


            }, $time*1000);

        }
        
        
        
        /*
		================================================================================================
		CHAT MESSAGES
		================================================================================================
		*/	
        
        function ImitateChatMessage() {
		

            // is it already initiated?

            if($('.chat').length>0) {


                $('.chat').addClass('auto-messages');
                
                const messages = [
                    "Virkelig god pointe. Kan 100% relatere i mit tidligere forhold.",
                    "Hvad hvis man er alt for lige ud på første date?",
                    "Havde jeg ikke tænkt på &#128512;",
                    "Sådan Jakob! Spot on &#128151;",
                    "Kan vi snakke lidt om det lidt mere intime? Har nemlig en del spørgsmål jeg gerne vil høre dit synspunkt omkring Jakob &#128515;",
                    "Forhelved Jakob hvor er det dog fjollet, men giver så god mening! &#128514;",
                    "Ja at finde en Klovn i det cirkus vi kalder livet har du helt ret i ikke er noget problem for nogen af os &#128517;&#128517;",
                    "&#128514;&#128514;&#128514;"
                ];



                const random = Math.floor(Math.random() * messages.length);

                var $profile = Math.floor(Math.random() * 10) + 1;	

                var $rand = Math.floor(Math.random() * 3500) + 1000;

                var $maxMessages = 8;

                setTimeout(
                function() 
                {

                    if($('.chat').length>0) {

                        var $message = ' \
                        <li class="out"> \
                            <img src="assets/img/profile/'+$profile+'.jpg" class="profile-img"> \
                            <div class="message"> \
                                '+messages[random]+' \
                                <div class="timestamp">Lige nu</div> \
                            </div> \
                        </li> \
                        ';

                        $(".chat").append($message);

                        setTimeout(
                        function() 
                        {			
                            $(".chat").find("li:last").addClass('in');
                        }, 100);


                        if($('.chat li').length>=$maxMessages) {		
                            $('.chat li').first().remove();
                        }


                        ImitateChatMessage();

                    }


                }, $rand);

            }




        }
        
        
        
        
        /*
		================================================================================================
		CALENDAR
		================================================================================================
		*/	
        
        function ComponentCalendar($this) {

            d = new Date(),
                Day = d.getDate(),
                Month = d.getMonth(),
                CurrentMonth = d.getMonth()+1,
                Year = d.getFullYear(),
                CurrentYear = d.getFullYear();

            var monthsFull = ["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"];
            var months = ["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"];


            $this.append(' \
            <div class="calendar-header"> \
                <span class="month-title">'+monthsFull[Month + 1]+'</span> \
                <span class="year-title">'+Year+'</span> \
                <div class="prevMonth" style="display:none;"><i class="fal fa-chevron-left"></i></div> \
                <div class="nextMonth"><i class="fal fa-chevron-right"></i></div> \
            </div>');


            BuildCalendar($this,Year,Month+1);



        }

        function BuildCalendar($this,Year,Month) {

            var Occupied = [];
            // Occupied
            $('.calendar-occupied').each(function(){
                var $occupiedYear = parseInt($(this).attr('data-year')),
                    $occupiedMonth = parseInt($(this).attr('data-month')),
                    $occupiedDay = parseInt($(this).attr('data-day'));

                Occupied.push($occupiedYear+'-'+$occupiedMonth+'-'+$occupiedDay);

            });



            if((Month>CurrentMonth && Year==CurrentYear) || (Year>CurrentYear)) {
                $(".prevMonth").show();
            } else {
                $(".prevMonth").hide();
            }


            $this.find('ul.days').remove();

            d = new Date(),
                NextMonth = Month + 1,
                PrevMonth = Month - 1;


            var monthsFull = ["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"];
            var months = ["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"];

            $(".calendar-header .month-title").text(monthsFull[Month-1]);
            $(".calendar-header .year-title").text(Year);

            var daysInMonth = new Date(Year, Month, 0).getDate();

            var $cal = '';




            var x = 1;
            $cal += '<ul class="days">';
            var $today = '',
                $occupied = '';
            while (x <= daysInMonth) {

                $today = '';
                $occupied = '';

                if(x == Day && Month == CurrentMonth) {
                    $today = ' today';
                }

                if($.inArray(Year+'-'+Month+'-'+x, Occupied) !== -1) {
                    $occupied = ' occupied';
                }


                if((x < Day && Month <= CurrentMonth && Year <= CurrentYear) || (Month < CurrentMonth && Year < CurrentYear)) {
                    $today = ' outdated';
                }



                $cal += '<li class="day'+$today+$occupied+'" data-day="'+x+'" data-month="'+Month+'" data-year="'+Year+'">'+x+'</li>';

                x++;

            }
            $cal += '</ul>';

            $this.append($cal);


            // 
            $(".calendar .prevMonth").unbind(clickEvent).click(function(e) {


                if(Month==1) {
                    BuildCalendar($this,Year-1,12);
                } else {			
                    BuildCalendar($this,Year,PrevMonth);
                }

            });

            //
            $(".calendar .nextMonth").unbind(clickEvent).click(function(e) {


                if(Month==12) {

                    if(Year+1>CurrentYear) {

                        
                        var $Confirm	= [];
                        // Notification				
                        $Confirm.push({
                            title: 'Det er ikke muligt at booke så langt frem i tiden',
                            type: 'alert'
                        });
                        $(document).FameWork.Confirmbox($Confirm);	



                    } else {

                        BuildCalendar($this,Year+1,1);

                    }

                } else {			

                    if(NextMonth>(CurrentMonth+3)) {

                        var $Confirm	= [];
                        // Notification				
                        $Confirm.push({
                            title: 'Det er ikke muligt at booke så langt frem i tiden',
                            type: 'alert'
                        });
                        $(document).FameWork.Confirmbox($Confirm);	

                    } else {

                        BuildCalendar($this,Year,NextMonth);

                    }
                }


            });



            // Initialize close click-function
            $(".calendar .day").unbind(clickEvent).click(function(e) {

                /*
                var $day = $(this).attr('data-day'),
                    $month = $(this).attr('data-month'),
                    $year = $(this).attr('data-year');

                $(".selected-booking-date").text($day+'/'+$month+' - '+$year);

                var sliderInstance = document.querySelector('.swiper-container-booking').swiper;

                sliderInstance.slideNext();*/

                
                var $Confirm	= [];
                // Notification				
                $Confirm.push({
                    title: 'Ingen tilgængelige tider på valgte dato',
                    type: 'alert'
                });
                $(document).FameWork.Confirmbox($Confirm);	
                
                


            });

            // Initialize close click-function
            $(".booking-next").unbind(clickEvent).click(function(e) {

                var sliderInstance = document.querySelector('.swiper-container-booking').swiper;

                sliderInstance.slideNext();

            });

            // Initialize close click-function
            $(".calendar-back").unbind(clickEvent).click(function(e) {

                var sliderInstance = document.querySelector('.swiper-container-booking').swiper;

                sliderInstance.slidePrev();
    
            });


            // Initialize close click-function
            $(".booking-slide").unbind(clickEvent).click(function(e) {

                var sliderInstance = document.querySelector('.swiper-container-booking').swiper;
                var slide = parseInt($(this).attr('data-slide'));

                sliderInstance.slideTo(slide);

            });



        }
        
        
        
        /*
		================================================================================================
		CALENDAR LIST
		================================================================================================
		*/	
        
        
        
        function ComponentCalendarList($this) {
		


            d = new Date(),
                Day = d.getDate(),
                Month = d.getMonth()+1,
                Year = d.getFullYear();


            var monthsFull = ["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"];
            var months = ["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"];

            var y = 0;

            while (y < 2) {


                var $activeYear = '';
                var i = 1;
                var $monthsData = '';

                if(y==0) {

                    $activeYear = ' active';

                    $(months).each(function(){

                        // Current
                        var $active = '';

                        if((i)===Month) {
                            $active = ' active';
                        }

                        if((i)>=Month) {
                            $monthsData += '<div class="month-title'+$active+'" data-year="'+(d.getFullYear()+y)+'" data-month="'+i+'">'+months[i-1]+'</div>';
                        }
                        i++;
                    });
                } else {
                    $(months).each(function(){
                        $monthsData += '<div class="month-title" data-year="'+(d.getFullYear()+y)+'" data-month="'+i+'">'+months[i-1]+'</div>';
                        i++;
                    });
                }

                $this.append('<div class="year" data-year="'+(d.getFullYear()+y)+'"><span class="year-title'+$activeYear+'" data-year="'+(d.getFullYear()+y)+'">'+(d.getFullYear()+y)+'</span>'+$monthsData+'</div>');
                y++;
            }




            // Initialize close click-function
            $(".month-title").unbind(clickEvent).click(function(e) {

                // Month
                $(".month-title").removeClass('active');
                $(this).addClass('active');
                var $M = $(this).attr('data-month');

                // Year
                $('.year-title').removeClass('active');
                $(this).parents('.year').find('.year-title').addClass('active');
                var $Y = $(this).parents('.year').attr('data-year');

                $(".calendar-list-events .event").hide();
                $(".calendar-list-events").find(".event[data-year='"+$Y+"'][data-month='"+$M+"']").show();


                if($(".calendar-list-events .event:visible").length>0) {
                    $(".calendar-list-events-empty").hide();
                } else {
                    $(".calendar-list-events-empty").show();
                }

                
                // Notification				
                var $ScrollToElement	= [];
                $ScrollToElement.push({
                    target: "#onlive-events-header",
                    speed:250
                });
                $(document).FameWork.ScrollToElement($ScrollToElement);
                
                
                
                
                $(document).FameWork.ComponentMatchHeight();


            });


            $(".calendar-list-events").each(function(){

                $(this).find(".event[data-year='"+Year+"'][data-month='"+Month+"']").show();

                if($(".calendar-list-events .event:visible").length>0) {
                    $(".calendar-list-events-empty").hide();
                } else {
                    $(".calendar-list-events-empty").show();
                }

            });
            
            
            setTimeout(
            function()  {
                $(document).FameWork.ComponentMatchHeight();
            }, 5);

            

        }
        
        
        
        
        
        /*
		================================================================================================
		CART
		================================================================================================
		*/	
        function Cart() {
            $('.AddToCart').unbind(clickEvent).click(function() {							
                
                var $token      = $(this).attr('data-token');
                var $type       = $(this).attr('data-type');
                var $amount     = $(this).attr('data-amount');
               
                var $Product	= [];
				
				// Notification				
                $Product.push({
                    this: $(this),
                    token: $token,
                    type: $type,
                    amount: $amount
                });
                
                AddProductToCart($Product);
                
                $(this).append('<div class="button-loader"><div class="spin-icon"></div></div>');
                
                
                
            });
			
			$('.AddToCartBooks').unbind(clickEvent).click(function() {	

				//alert("TESTING");
                
                var $token      = $(this).attr('data-token');
                var $type       = $(this).attr('data-type');
                var $amount     = $(this).attr('data-amount');
               
                var $Book	= [];
				
				// Notification				
                $Book.push({
                    this: $(this),
                    token: $token,
                    type: $type,
                    amount: $amount
                });
                
                AddProductBooksToCart($Book);
                
                $(this).append('<div class="button-loader"><div class="spin-icon"></div></div>');
                
                
                
            });
        }
		
		    function AddProductBooksToCart($optionsbooks) {
            
            var $this 		= $optionsbooks[0].this;
            var $token 		= $optionsbooks[0].token;
            var $type 		= $optionsbooks[0].type;
            var $amount		= $optionsbooks[0].amount;
            
            // Define value
            var $Values = {
                'token': $token,
                'type': $type,
                'amount': $amount
            };
            var $Data = {
                'action':'AddToCartBooks',
                'values': $Values
            };	


            //$("#modal-loader").show();

            $.ajax({
                type: "POST",
                contentType:'application/json',
                dataType: 'json',
                async:true,
                url: 'engine/actions/cart.php',
                data: JSON.stringify($Data),			
                success: function (data) {

	
                    $this.find('.button-loader').remove();


                    if(data.error) {

                        // Notification				
                        //var $Confirm	= [];
                        //$Confirm.push({
                           // title: 'Du har allerede adgang til dette kursus. <a href="konto" class="open-page" data-layout="account" data-type="custom">Gå til konto</a>',
                           // type: 'alert'
                       // });
						
                        //$(document).FameWork.Confirmbox($Confirm);	
                        
                        
                    } else {

						//alert("NO ERRORS BOOKS");

                        $(".CartItemsCount").text(data.total);

                        // Notification				
                        var $Modal	= [];
                        $Modal.push({
                            modal: "cart",
                            width: "550",
                            title: "Indkøbskurv",
                            token: $token,
                            param: $type
                        });

                        $(document).FameWork.OpenModal($Modal);
                          
                    }

                }

            });
            
        }
        
        
        
        function AddProductToCart($options) {
            
            var $this 		= $options[0].this;
            var $token 		= $options[0].token;
            var $type 		= $options[0].type;
            var $amount		= $options[0].amount;
            
            // Define value
            var $Values = {
                'token': $token,
                'type': $type,
                'amount': $amount
            };
            var $Data = {
                'action':'AddToCart',
                'values': $Values
            };	


            //$("#modal-loader").show();

            $.ajax({
                type: "POST",
                contentType:'application/json',
                dataType: 'json',
                async:true,
                url: 'engine/actions/cart.php',
                data: JSON.stringify($Data),			
                success: function (data) {

					if($("#base").attr('data-author-id')=='1') {
							

							console.log('logfs');
							setTimeout(function() {

                            //fbq('track', 'AddToCart', {
                               // content_name: data.title, 
                               // content_category: 'Kurser',
                               // content_ids: [data.id],
                               // content_type: 'product',
                               // value: data.price,
                               // currency: 'DKK' 
                             // });

							  //snaptr('track', 'ADD_CART', { 'description': data.title, 'item_category' : 'Product', 'price' : data.price, 'item_ids' : [data.id]});
                            
							}, 1000);
                    }
                    
                    $this.find('.button-loader').remove();


                    if(data.error) {

                        // Notification				
                        var $Confirm	= [];
                        $Confirm.push({
                            title: 'Du har allerede adgang til dette kursus. <a href="konto" class="open-page" data-layout="account" data-type="custom">Gå til konto</a>',
                            type: 'alert'
                        });
                        $(document).FameWork.Confirmbox($Confirm);	
                        
                        
                    } else {

                        $(".CartItemsCount").text(data.total);

                        // Notification				
                        var $Modal	= [];
                        $Modal.push({
                            modal: "cart",
                            width: "550",
                            title: "Indkøbskurv",
                            token: $token,
                            param: $type
                        });

                        $(document).FameWork.OpenModal($Modal);
                        
                        
                  
                        
                        
                    }

                }

            });
            
        }
        
        
        $.fn.App.RemoveProductFromCart = function($token,$param) {
			RemoveProductFromCart($token,$param);
		}

		 $.fn.App.RemoveProductBookFromCart = function($token,$param) {
			RemoveProductFromCart($token,$param);
		}

		function RemoveProductBookFromCart($token,$param) {
            
            
            // Define value
            var $Values = {
                'token': $token,
                'type': $param
            };
            var $Data = {
                'action':'RemoveFromCartBook',
                'values': $Values
            };	
            
            $.ajax({
                type: "POST",
                contentType:'application/json',
                dataType: 'json',
                async:true,
                url: 'engine/actions/cart.php',
                data: JSON.stringify($Data),			
                success: function (data) {
                    
                    $(".CartItemsCount").text(data.total);

                    // Load Modal				
                    var $ModalData	= [];
                    $ModalData.push({
                        modal: 'cart'
                    });
                    $(document).FameWork.RefreshModal($ModalData);



                    $(document).FameWork.CloseConfirmbox();


                    // PopupIcon				
                    var $PopupIcon	= [];
                    $PopupIcon.push({
                        type: 'checkbox'
                    });
                    $(document).FameWork.ComponentIconPopup($PopupIcon);

                }

            });

            
        }
		
        function RemoveProductFromCart($token,$param) {
            
            
            // Define value
            var $Values = {
                'token': $token,
                'type': $param
            };
            var $Data = {
                'action':'RemoveFromCart',
                'values': $Values
            };	
            
            $.ajax({
                type: "POST",
                contentType:'application/json',
                dataType: 'json',
                async:true,
                url: 'engine/actions/cart.php',
                data: JSON.stringify($Data),			
                success: function (data) {
                    
                    $(".CartItemsCount").text(data.total);

                    // Load Modal				
                    var $ModalData	= [];
                    $ModalData.push({
                        modal: 'cart'
                    });
                    $(document).FameWork.RefreshModal($ModalData);



                    $(document).FameWork.CloseConfirmbox();


                    // PopupIcon				
                    var $PopupIcon	= [];
                    $PopupIcon.push({
                        type: 'checkbox'
                    });
                    $(document).FameWork.ComponentIconPopup($PopupIcon);

                }

            });

            
        }
        
        
        
        $.fn.App.RemoveCoupon = function($token) {
			RemoveCoupon($token);
		}
        function RemoveCoupon($token) {
            
            
            // Define value
            var $Values = {
                'token': $token
            };
            var $Data = {
                'action':'RemoveCoupon',
                'values': $Values
            };	
            
            $.ajax({
                type: "POST",
                contentType:'application/json',
                dataType: 'json',
                async:true,
                url: 'engine/actions/cart.php',
                data: JSON.stringify($Data),			
                success: function (data) {
                    
                    // Load Modal				
                    var $ModalData	= [];
                    $ModalData.push({
                        modal: 'cart'
                    });
                    $(document).FameWork.RefreshModal($ModalData);

                    $(document).FameWork.CloseConfirmbox();

                    // PopupIcon				
                    var $PopupIcon	= [];
                    $PopupIcon.push({
                        type: 'checkbox'
                    });
                    $(document).FameWork.ComponentIconPopup($PopupIcon);

                }

            });

            
        }
        
		
        
        
        
        /*
        ================================================================================================
        QUIZ
        ================================================================================================
        */


        $.fn.App.Quiz = function() {
            Quiz();
        }

        function Quiz() {

            if($('#quiz').length>0) {
                
                
                var ExplainerVideoPlayer = $("#quiz-course-explainer .video-player");
                var ExplainerVideoEl = ExplainerVideoPlayer.find('video');
                var ExplainerVideo;
                if(ExplainerVideoEl.length>0) {
                    ExplainerVideo = ExplainerVideoEl[0];
                    ExplainerVideo.pause();
                }
                


                /*
                ================================================================================================
                Lets make sure to only initialize the quiz once
                ================================================================================================
                */
                
                if(!$("#quiz").hasClass('initialized')) {

                    $("#quiz").addClass('initialized');

                    var $QuizToken = $("#quiz-data").attr('data-token');

                    /*
                    ================================================================================================
                    CHECK FOR PREVIOUS ANSWERS
                    ================================================================================================
                    */                    
                    
                    var $Values = {
                        'quiz_token': $QuizToken,
                    };

                    var $Data = {
                        'action':"check",
                        'values': $Values
                    };

                    $.ajax({
                        type: "POST",
                        dataType: "json",
                        async:true,
                        url: 'engine/actions/quiz.php',
                        data: JSON.stringify($Data),	
                        success: function (response) {	

                            if(response) {

                                var $i = 0;
                                var $index = 0;
                                var $totalQuestions = 0;


                                $("#quiz .swiper-slide").each(function(){			

                                    if($(this).attr('data-token')) {

                                        if($(this).attr('data-token')==response) {
                                            $index = $i;
                                        }

                                        $i++;
                                        $totalQuestions++;

                                    }

                                });

                                


                                if($totalQuestions==$index+1) {
                                    
                                    CalculatrQuizResult(false);
                                    
                                }
                                    
                                var sliderInstance = document.querySelector('.swiper-container-quiz').swiper;
                                sliderInstance.slideTo($index+2);


                                $("body,#page-main,#app,.swiper-slide").animate({ scrollTop: 0 }, 0);


                            }

                        }

                    });	

                    
                    /*
                    ================================================================================================
                    Initialize close click-function
                    ================================================================================================
                    */

                    $(".QuizStart").unbind(clickEvent).click(function(e) {

                        var sliderInstance = document.querySelector('.swiper-container-quiz').swiper;

                        sliderInstance.slideTo(1);
                        
                        

                    });

                    var $CanAnswer = true;


                    /*
                    ================================================================================================
                    QUIZ ANSWER
                    ================================================================================================
                    */
                    
                    $(".quiz-answers li").unbind(clickEvent).click(function(e) {

                        if($CanAnswer) {	

                            console.log("QuizAction: ANSWER");
                            

                            $CanAnswer = false;
                            var $this = $(this);
                            $this.siblings().removeClass('active');
                            $this.addClass('active');


                            var $QuestionToken = $this.attr('data-question-token');
                            var $AnswerToken = $this.attr('data-answer-token');




                            var $Values = {
                                'quiz_token': $QuizToken,
                                'question_token': $QuestionToken,
                                'answer_token': $AnswerToken
                            };

                            var $Data = {
                                'action':"answer",
                                'values': $Values
                            };

                            $.ajax({
                                type: "POST",
                                dataType: "json",
                                async:true,
                                url: 'engine/actions/quiz.php',
                                data: JSON.stringify($Data),	
                                success: function (response) {	


                                    // is this the last question?
                                    var $LastQuestion = false;

                                    $("#quiz .swiper-slide").each(function(){			

                                        if($(this).attr('data-token')) {

                                            if($(this).attr('data-token')==response) {
                                                $LastQuestion = true;
                                            } else {
                                                $LastQuestion = false;
                                            } 

                                        }

                                    });


                                    if($LastQuestion) {
                                        CalculatrQuizResult(true);
                                    }

                                    // Define Slider
                                    var sliderInstance = document.querySelector('.swiper-container-quiz').swiper;

                                    // Insert Selected Quiz
                                    $("#app").append('<div class="selected-quiz-answer">'+$this.text()+'</div>');

                                    // Selected Quiz Properties
                                    $(".selected-quiz-answer").css('top',$this.offset().top).css('left',$this.offset().left).css('width',$this.innerWidth()+1).addClass('go');

                                    setTimeout(
                                    function() 
                                    {
                                        if(!$LastQuestion) {
                                            $("body,#page-main,#app,.swiper-slide").animate({ scrollTop: 0 }, 0);
                                            $(".swiper-slide.swiper-slide-active").nextAll('.swiper-slide').animate({ scrollTop: 0 }, 0);
                                        }

                                        sliderInstance.slideNext();
                                    }, 450);

                                    setTimeout(
                                    function() 
                                    {
                                        $(".selected-quiz-answer").remove();
                                        $CanAnswer = true;
                                    }, 1000);



                                }

                            });	


                        }

                    });
					
					 /*
                    ================================================================================================
                    QUIZ RESET
                    ================================================================================================
                    */
                    
                    $(".quiz-reset li").unbind(clickEvent).click(function(e) {

                       
                            console.log("QuizAction: RESET");
							var sliderInstance = document.querySelector('.swiper-container-quiz').swiper;

							sliderInstance.slideTo(1);
                            

                    });


                    // Quiz Reset
                    $(".QuizReset").unbind(clickEvent).click(function(e) {

                        var $this 	= $(this);
                        var $token 	= $this.attr('data-token');

					

                        QuizReset($token);


                    });


                }

            }

            function QuizReset($token) {

                var $Values = {
                    'token': $token
                };

                var $Data = {
                    'action':"reset",
                    'values': $Values
                };


                var $Confirm	= [];
                // Notification				
                $Confirm.push({
                    title: '<i class="fal fa-spin fa-spinner"></i> Genstarter Test',
                    type: 'alert'
                });
                $(document).FameWork.Confirmbox($Confirm);	
                
				if($("#base").attr('data-author-id')=='1') {

					//fbq('trackCustom', 'resetquiz', {
											//content_name: 'resetquiz' 			     
					//}); 


					//snaptr('track', 'CUSTOM_EVENT_2', { 'description': 'resetquiz'});

				}

                $("#modal-loader").show();
                

                setTimeout(function() {

                    $.ajax({
                        type: "POST",
                        dataType: "json",
                        async:true,
                        url: 'engine/actions/quiz.php',
                        data: JSON.stringify($Data),	
                        success: function (response) {	

                            if(response) {
                                location.href = response;
                            }

                        }

                    });

                }, 3000);

            }


            function CalculatrQuizResult($clicked) {
                
                $("#quiz-result-media").find('.video-player').addClass('dont-play');
                

                var $QuizToken = $("#quiz-data").attr('data-token');

                var $Values = {
                    'token': $QuizToken
                };

                var $Data = {
                    'action':"result",
                    'values': $Values
                };

                $("body,#page-main,#app,.swiper-slide").animate({ scrollTop: 0 }, 0);
                $(".swiper-slide").animate({ scrollTop: 0 }, 0);			

                

                $.ajax({
                    type: "POST",
                    dataType: "json",
                    async:true,
                    url: 'engine/actions/quiz.php',
                    data: JSON.stringify($Data),	
                    success: function (response) {	

                        if(response) {
                            
                            $("#quiz-result").addClass('completed');
                            

                            var $QuizResultTimer = 0;
                            
                            if($clicked) {
                                $QuizResultTimer = 2000;
                                $(document).FameWork.UnmuteVideos($("#quiz-result"));
                            }

							if($("#base").attr('data-author-id')=='1') {
                            
								//fbq('trackCustom', 'endquiz', {
										//	content_name: 'endquiz' 			     
								//});  

								//snaptr('track', 'CUSTOM_EVENT_3', { 'description': 'endquiz'});

							}

                            $("#quiz-result-loader").show();


                            
                            setTimeout(
                            function() 
                            {			
  
                                
                                
                                /*
                                ======================================================
                                RESULT
                                ======================================================
                                */
                                
                                $("#quiz-result-loader").hide();
                                
                                if(response.result.media) {
                                    if(response.result.media_filetype==='video') {


                                        var VideoPlayer = $("#quiz-result-media").find('.video-player');
                                        var VideoEl = VideoPlayer.find('video');
                                        var Video = VideoEl[0];
                                        VideoEl.find('source').attr('src',response.result.media);
                                        Video.load();
                                        VideoPlayer.attr('data-src',response.result.media);

                                        //$(document).FameWork.ComponentVideoPlayer(); 


                                        var $PlayDelay = 0;
                                        if($clicked) {
                                            $(document).FameWork.UnmuteVideo(VideoPlayer);
                                            $PlayDelay = 500;
                                        } else {
                                            $(document).FameWork.MuteVideo(VideoPlayer);
                                        }


                                        setTimeout(
                                        function() 
                                        {			
                                            Video.play();
                                        }, $PlayDelay);






                                    } else if(response.result.media_filetype==='image') {
                                        $("#quiz-result-media").html(response.result.media);
                                    }
                                } else {
                                    $("#quiz-result-media").remove();                                
                                }

                                $("#quiz-result-title").text(response.result.title);
                                $("#quiz-result-description").html(response.result.description);
                                
                                
                                
                                /*
                                ======================================================
                                COURSE
                                ======================================================
                                */
                                
                                
                                // Savings?
                                var $SavingsHide = '';
                                if(response.Course.price_original == response.Course.price) {
                                    $SavingsHide = ' hidden';
                                }
                                
                                if(response.Course.review.total > 0) {
									
										var $Course = ' \
										<div class="spacing"></div> \
										<hr class="divider bg-white m-t m-b font-500 '+$SavingsHide+'" data-content="Du har låst op for en rabat!"> \
										<div class="box font-500 text-xs font-reset text-center '+$SavingsHide+'">Ved at udføre denne test har du opnået besparelse på <span class="label bg-green xs">'+response.Course.savings+'%</span> til '+response.Course.title+' online kursus</div> \
										<div class="spacing"></div> \
										<div class="row align-items-center"> \
											<div class="col-10 col-md-12"> \
												<div class="flex"> \
													<img src="'+response.Course.cover+'" class="fixed-h80 border-radius"> \
													<div class="padder-l"> \
														<div class="font-700 text-md">'+response.Course.title+'</div> \
														<div class="block m-b-sm"> \
															<div class="rating rating '+response.Course.review.icon_class+' ScrollTo hover" data-target="#reviews"></div><span class="text-xxs m-l-xxs font-500">'+response.Course.review.average+' <span class="opacity">· '+response.Course.review.total+' anmeldelser</span></span> \
														</div> \
														<span class="label">'+response.Course.CourseDurationSM+'</span> \
														<span class="label">'+response.Course.total_modules+' kapitler</span> \
														<span class="label">'+response.Course.total_lessons+' lektioner</span> \
													</div> \
												</div> \
											</div> \
										</div> \
										<p> \
											 '+response.Course.description+' \
										</p> \
										<div class="line m-t-lg m-b-sm"></div> \
										<ul class="icons-list"> \
											<li> \
												<i class="fal fa-thumbs-up"></i> \
												'+response.Course.positivePercentage+'% Positive anmeldelser ('+response.Course.review.total+') \
											</li> \
											<li> \
												<i class="fal fa-list"></i> \
												'+response.Course.total_lessons+' lektioner ('+response.Course.CourseDurationShort+') \
											</li> \
											<li> \
												<i class="fal fa-smile"></i> \
												Online og i dit eget tempo \
											</li> \
											<li> \
												<i class="fal fa-volume"></i> \
												Sprog: Dansk \
											</li> \
											<li> \
												<i class="fal fa-infinity"></i> \
												Ubegrænset adgang for altid \
											</li> \
											<li> \
												<i class="fal fa-file-certificate"></i> \
												Certifikat ved fuldendt kursus \
											</li> \
										</ul> \
										<div class="spacing"></div> \
										<a class="button button-lg w100 block text-center add-to-cart AddToCart" data-token="'+response.Course.token+'" data-type="courses"> \
											Køb adgang \
											<span> \
												<span class="line-through '+$SavingsHide+'">'+response.Course.price_original+'</span> \
												'+response.Course.price+' \
											</span> \
										</a> \
									';
									
								} else {
									
									var $Course = ' \
										<div class="spacing"></div> \
										<hr class="divider bg-white m-t m-b font-500 '+$SavingsHide+'" data-content="Du har låst op for en rabat!"> \
										<div class="box font-500 text-xs font-reset text-center '+$SavingsHide+'">Ved at udføre denne test har du opnået besparelse på <span class="label bg-green xs">'+response.Course.savings+'%</span> til '+response.Course.title+' online kursus</div> \
										<div class="spacing"></div> \
										<div class="row align-items-center"> \
											<div class="col-10 col-md-12"> \
												<div class="flex"> \
													<img src="'+response.Course.cover+'" class="fixed-h80 border-radius"> \
													<div class="padder-l"> \
														<div class="font-700 text-md">'+response.Course.title+'</div> \
														<span class="label">'+response.Course.CourseDurationSM+'</span> \
														<span class="label">'+response.Course.total_modules+' kapitler</span> \
														<span class="label">'+response.Course.total_lessons+' lektioner</span> \
													</div> \
												</div> \
											</div> \
										</div> \
										<p> \
											 '+response.Course.description+' \
										</p> \
										<div class="line m-t-lg m-b-sm"></div> \
										<ul class="icons-list"> \
											<li> \
												<i class="fal fa-list"></i> \
												'+response.Course.total_lessons+' lektioner ('+response.Course.CourseDurationShort+') \
											</li> \
											<li> \
												<i class="fal fa-smile"></i> \
												Online og i dit eget tempo \
											</li> \
											<li> \
												<i class="fal fa-volume"></i> \
												Sprog: Dansk \
											</li> \
											<li> \
												<i class="fal fa-infinity"></i> \
												Ubegrænset adgang for altid \
											</li> \
											<li> \
												<i class="fal fa-file-certificate"></i> \
												Certifikat ved fuldendt kursus \
											</li> \
										</ul> \
										<div class="spacing"></div> \
										<a class="button button-lg w100 block text-center add-to-cart AddToCart" data-token="'+response.Course.token+'" data-type="courses"> \
											Køb adgang \
											<span> \
												<span class="line-through '+$SavingsHide+'">'+response.Course.price_original+'</span> \
												'+response.Course.price+' \
											</span> \
										</a> \
									';
								
								}
                                
                                $(".quiz-result-course").html($Course);
                                
                                $("body,#page-main,#app,.swiper-slide").animate({ scrollTop: 0 }, 0);
                                
                                
                                $("#quiz-panel").addClass('in');
                                
                                Cart();
                                

                                
                                $("#quiz-result").unbind("scroll").bind("scroll", function(e) {
                                    

                                    // Video player
                                    /*if($("#quiz-result .video-player").length>0) {                
                                        $("#quiz-result .video-player").each(function(index, element){
                                            

                                            var VideoPlayer = $(this);
                                            var VideoEl = VideoPlayer.find('video');
                                            var Video = VideoEl[0];

                                            
                                            if (VideoPlayer.is_on_screen("#quiz-result")) {
                                                

                                                if(VideoPlayer.hasClass('paused')) {
                                                    Video.play();
                                                    VideoPlayer.removeClass('paused').addClass('playing');
                                                }   

                                            } else {
                                                if(VideoPlayer.hasClass('playing')) {
                                                    Video.pause();
                                                    VideoPlayer.removeClass('playing').addClass('paused');
                                                }  

                                            }

                                        });
                                    }*/
                                    
                                    var ResultVideoPlayer = $("#quiz-result-media .video-player");
                                    var ResultVideoEl = ResultVideoPlayer.find('video');
                                    var ResultVideo = ResultVideoEl[0];
                                    
                                    
                                    var ExplainerVideoPlayer = $("#quiz-course-explainer .video-player");
                                    var ExplainerVideoEl = ExplainerVideoPlayer.find('video');
                                    var ExplainerVideo = ExplainerVideoEl[0];
                                    

                                    var element = document.getElementById('quiz-result');
                                    if (element.scrollHeight - element.scrollTop === element.clientHeight)
                                    {
                                        // Play Explainer

                                        if(ExplainerVideoPlayer.hasClass('paused') && $("#quiz-result").hasClass('completed')) {
                                            ExplainerVideo.play();
                                            ExplainerVideoPlayer.removeClass('paused').addClass('playing');
                                        }   
                                        
                                        if(ResultVideoPlayer.hasClass('playing')) {
                                            ResultVideo.pause();
                                            ResultVideoPlayer.removeClass('playing').addClass('paused');
                                        }  
                                        
                                        
                                        
                                        
                                    } else {
                                        
                                        if(ExplainerVideoPlayer.hasClass('playing')) {
                                            ExplainerVideo.pause();
                                            ExplainerVideoPlayer.removeClass('playing').addClass('paused');
                                        }  
                                        
                                        if(ResultVideoPlayer.hasClass('paused')) {
                                            ResultVideo.play();
                                            ResultVideoPlayer.removeClass('paused').addClass('playing');
                                        }  
                                        
                                    }

                                    
                                });
                                
                                
                                
                                

                                
                             }, $QuizResultTimer);
                            

                            



                        }

                    }

                });


            }

        }
        
        
        
        
        
        
        
        
        
        /*
		================================================================================================
		TICKETS
		================================================================================================
		*/	

        function addZero(i) {
            if (i < 10) {i = "0" + i}
            return i;
        }
        
        function InitTickets() {

            if($('#tickets_fetch').length>0) {


                var months = ["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"];


                var $Data = {
                    'a':'check'
                };	


                $.ajax({
                    type: "POST",
                    contentType:'application/json',
                    dataType: 'json',
                    async:true,
                    url: 'engine/actions/tickets.php',
                    data: JSON.stringify($Data),			
                    success: function (data) {



                        if(data==='error')
                        {

                            $("#tickets-events").html('<div class="text-center m-t-xxl text-xs">Der er ingen tilgængelige shows pt.</div>');


                        } else {


                            var $html = '';



                            $.each(data.data, function( key, value ) {	



                                if(value.public && value.starts_at) {



                                    var StartTime = new Date(value.starts_at);
                                    var EndTime = new Date(value.ends_at);
                                    var Month = months[StartTime.getMonth()];
                                    var Day = StartTime.getDate();
                                    var Year = StartTime.getFullYear();


                                    if(new Date() <= StartTime) {

                                        value.name = value.name.replace(' - Jakob Olrik','');
                                        value.name = value.name.replace(' m. Jakob Olrik','');


                                        $html += ' \
                                        <li class="row flex line-height-1-4" data-startdate="'+StartTime+'"> \
                                            <div class="no-padder col-6 col-md-8"> \
                                                <div class="font-700">'+value.name+'</div> \
                                                <div class="hidden-lg-up text-sm text-o-xs"> \
                                                    '+Day+'. '+Month+' kl. '+StartTime.getHours()+':'+addZero(StartTime.getMinutes())+' - '+EndTime.getHours()+':'+addZero(EndTime.getMinutes())+' \
                                                </div> \
                                            </div> \
                                            <div class="no-padder col-4 hidden-md-down"> \
                                                '+Day+'. '+Month+' kl. '+StartTime.getHours()+':'+addZero(StartTime.getMinutes())+' - '+EndTime.getHours()+':'+addZero(EndTime.getMinutes())+' \
                                            </div> \
                                            <div class="no-padder col-2 text-right col-md-4"> \
                                                <a class="button button-xxs bg-blue text-white text-uc button-rounded-30 font-500 m-r-xs animated" href="'+value.public_url+'" target="_blank" rel="noopener noreferrer nofollow"> \
                                                    <div class="content-visible">Bestil</div> \
                                                    <div class="content-hover"><i class="fas fa-external-link text-white"></i></div> \
                                                </a> \
                                            </div> \
                                            <div class="line m-t m-b"></div> \
                                        </li> \
                                        ';


                                    }



                                }

                            });

                            // TEMP - Holstebro
                            var TempDate = new Date('2021-10-27T18:00:00.000Z');

                            if(new Date() <= TempDate) {

                                $html += ' \
                                <li class="row flex line-height-1-4" data-startdate="'+TempDate+'"> \
                                    <div class="no-padder col-6 col-md-8"> \
                                        <div class="font-700">Holstebro</div> \
                                        <div class="hidden-lg-up text-sm text-o-xs"> \
                                            28. oktober	 kl. 19:00 - 21:00 \
                                        </div> \
                                    </div> \
                                    <div class="no-padder col-4 hidden-md-down"> \
                                        28. oktober	 kl. 19:00 - 21:00 \
                                    </div> \
                                    <div class="no-padder col-2 text-right col-md-4"> \
                                        <a class="button button-xxs bg-blue text-white text-uc button-rounded-30 font-500 m-r-xs animated" href="https://musikteatret.dk/program/jacob-olrik/" target="_blank" rel="noopener noreferrer nofollow"> \
                                            <div class="content-visible">Bestil</div> \
                                            <div class="content-hover"><i class="fas fa-external-link text-white"></i></div> \
                                        </a> \
                                    </div> \
                                    <div class="line m-t m-b"></div> \
                                </li> \
                                ';

                            }



                            $("#tickets-events").html($html);


                            $("#tickets-events li").sort(function(a,b){
                                return new Date($(a).attr("data-startdate")) < new Date($(b).attr("data-startdate"));
                            }).each(function(){
                                $("#tickets-events").prepend(this);
                            });

                            $("#tickets-events").prepend(' \
                                <li class="row flex line-height-1-4"> \
                                    <div class="no-padder col-6 col-md-8"> \
                                        <div class="opacity font-500 text-xxs">Show</div> \
                                    </div> \
                                    <div class="no-padder col-4 hidden-md-down"> \
                                        <div class="opacity font-500 text-xxs">Dato</div> \
                                    </div> \
                                    <div class="no-padder col-2 col-md-4"> \
                                        <div class="opacity font-500 text-xxs">Bestil Billet</div> \
                                    </div> \
                                    <div class="line m-b"></div> \
                                </li> \
                            ');




                        }



                    }

                });

            }

        }
        
        
        
        
        
        
        
        
        
        
        
        
        
        
		
		
		/*
		================================================================================================
		MODAL FUNCTIONS
		================================================================================================
		*/	
		
		$.fn.App.ModalFunctions = function() {
			ModalFunctions();
		}
		
		function ModalFunctions() {
			$(document).FameWork.ComponentSwiper('.modal');
			
            
            if($(".modal[data-identifier='cart']").length>0) {
               if($("#cart-empty").length>0) {
                   $(".CartItemsCount").text('0');
               }
            } 
            
            
            /*
			================================================================================================
			QUIZ INIT
			================================================================================================
			*/	
            Quiz();
            
            /*
			================================================================================================
			CALENDAR
			================================================================================================
			*/	
            if($(".calendar").length>0) {

                $('.calendar').each(function(){			

                    if(!$(this).hasClass('activated')) {			
                        $(this).addClass('activated');
                        ComponentCalendar($(this));
                    }

                });

            }
            
			
			/*
			================================================================================================
			CONTACT FORM
			================================================================================================
			*/	
			
			$(document).on('submit','form#contact',function(e){
				
				e.stopPropagation();
				e.preventDefault();
				e.stopImmediatePropagation();
				
				var $this = $(this);
				
				// Inputs
				var $name 		= $this.find("input[name='n']").val(),
					$email 		= $this.find("input[name='e']").val(),
					$message 	= $this.find("textarea[name='m']").val(),
					$captcha	= grecaptcha.getResponse();
				
				
				var $Confirm	= [];
				
				if(!$name) {
					
					// Notification				
					$Confirm.push({
						title: $("#language").attr('data-error-name'),
						type: 'alert'
					});
					$(document).FameWork.Confirmbox($Confirm);	
					
				}
				else if(!$email) {
					
					// Notification				
					$Confirm.push({
						title: $("#language").attr('data-error-email'),
						type: 'alert'
					});
					$(document).FameWork.Confirmbox($Confirm);	
					
				}
				else if(!$message) {
					
					// Notification				
					$Confirm.push({
						title: $("#language").attr('data-error-input-message'),
						type: 'alert'
					});
					$(document).FameWork.Confirmbox($Confirm);	
					
				}
				else if(!$captcha) {
					
					// Notification				
					$Confirm.push({
						title: $("#language").attr('data-error-recaptcha'),
						type: 'alert',
						icon: 'robot'
					});
					$(document).FameWork.Confirmbox($Confirm);	
					
				} else {
				

					// Define value
					var $Values = {
						'n': $name,
						'e': $email,
						'm': $message,
						'captcha': $captcha
					};
					var $Data = {
						'action':'contact',
						'values': $Values
					};	


					$("#modal-loader").show();

					$.ajax({
						type: "POST",
						contentType:'application/json',
						dataType: 'json',
						async:true,
						url: 'engine/actions/contact.php',
						data: JSON.stringify($Data),			
						success: function (data) {


							if(data.response==='error') {

								$("#modal-loader").hide();

								// Notification				
								$Confirm.push({
									title: data.message,
									type: 'alert'
								});
								$(document).FameWork.Confirmbox($Confirm);					

							}

							else if(data.response==='success') {

								// PopupIcon				
								var $PopupIcon	= [];
								$PopupIcon.push({
									type: 'checkbox'
								});
								$(document).FameWork.ComponentIconPopup($PopupIcon);	

								// Notification				
								$Confirm.push({
									title: data.message,
									type: 'info',
									icon: 'mail'
								});
								$(document).FameWork.Confirmbox($Confirm);
								$(document).FameWork.CloseModal();	
								$("#contact-successful-hide").hide();
								$("#contact-successful-message").text(data.message2);

							}



						}

					});
					
				}
				
				
				
			});
			
            
            
            
            
            /*
			================================================================================================
			EDUCATION FORM
			================================================================================================
			*/	
			
			$(document).on('submit','form#education',function(e){
				
				e.stopPropagation();
				e.preventDefault();
				e.stopImmediatePropagation();
				
				var $this = $(this);
				
				// Inputs
				var $name 		= $this.find("input[name='n']").val(),
					$email 		= $this.find("input[name='e']").val(),
                    $phone 		= $this.find("input[name='p']").val(),
					$message 	= $this.find("textarea[name='m']").val(),
                    $type 		= $this.find("input[name='type']:checked").val(),
					$captcha	= grecaptcha.getResponse();
				

				
				var $Confirm	= [];
				
                if(!$type) {
					
					// Notification				
					$Confirm.push({
						title: "Vælg forløb",
						type: 'alert'
					});
					$(document).FameWork.Confirmbox($Confirm);	
					
				}
				else if(!$name) {
					
					// Notification				
					$Confirm.push({
						title: $("#language").attr('data-error-name'),
						type: 'alert'
					});
					$(document).FameWork.Confirmbox($Confirm);	
					
				}
				else if(!$email) {
					
					// Notification				
					$Confirm.push({
						title: $("#language").attr('data-error-email'),
						type: 'alert'
					});
					$(document).FameWork.Confirmbox($Confirm);	
					
				}
                else if(!$phone) {
					
					// Notification				
					$Confirm.push({
						title: "Indtast mobilnummer",
						type: 'alert'
					});
					$(document).FameWork.Confirmbox($Confirm);	
					
				}
				else if(!$message) {
					
					// Notification				
					$Confirm.push({
						title: "Indtast ansøgning",
						type: 'alert'
					});
					$(document).FameWork.Confirmbox($Confirm);	
					
				}
				else if(!$captcha) {
					
					// Notification				
					$Confirm.push({
						title: $("#language").attr('data-error-recaptcha'),
						type: 'alert',
						icon: 'robot'
					});
					$(document).FameWork.Confirmbox($Confirm);	
					
				} else {
				

					// Define value
					var $Values = {
						'n': $name,
						'e': $email,
                        'p': $phone,
						'm': $message,
                        'type': $type,
						'captcha': $captcha
					};
					var $Data = {
						'action':'education',
						'values': $Values
					};	


					$("#modal-loader").show();

					$.ajax({
						type: "POST",
						contentType:'application/json',
						dataType: 'json',
						async:true,
						url: 'engine/actions/education.php',
						data: JSON.stringify($Data),			
						success: function (data) {


							if(data.response==='error') {

								$("#modal-loader").hide();

								// Notification				
								$Confirm.push({
									title: data.message,
									type: 'alert'
								});
								$(document).FameWork.Confirmbox($Confirm);					

							}

							else if(data.response==='success') {

								// PopupIcon				
								var $PopupIcon	= [];
								$PopupIcon.push({
									type: 'checkbox'
								});
								$(document).FameWork.ComponentIconPopup($PopupIcon);	

								// Notification				
								$Confirm.push({
									title: data.message,
									type: 'info',
									icon: 'mail'
								});
								$(document).FameWork.Confirmbox($Confirm);
								$(document).FameWork.CloseModal();	

							}



						}

					});
					
				}
				
				
				
			});
            
			
            
            
            
            
            /*
			================================================================================================
			ADD COUPON
			================================================================================================
			*/	
			
			$(document).on('submit','form#add_coupon',function(e){
				
				e.stopPropagation();
				e.preventDefault();
				e.stopImmediatePropagation();
				
				var $this = $(this);
				
				// Inputs
				var $coupon		= $this.find("input[name='c']").val()				
				
				var $Confirm	= [];
				
				if(!$coupon) {
					
					// Notification				
					$Confirm.push({
						title: "Indtast rabatkode",
						type: 'alert'
					});
					$(document).FameWork.Confirmbox($Confirm);	

				} else {
				

					// Define value
					var $Values = {
						'c': $coupon
					};
					var $Data = {
						'action':'AddCoupon',
						'values': $Values
					};	


					$("#modal-loader").show();

					$.ajax({
						type: "POST",
						contentType:'application/json',
						dataType: 'json',
						async:true,
						url: 'engine/actions/cart.php',
						data: JSON.stringify($Data),			
						success: function (data) {


							if(data.response==='error') {

								$("#modal-loader").hide();

								// Notification				
								$Confirm.push({
									title: data.message,
									type: 'alert'
								});
								$(document).FameWork.Confirmbox($Confirm);					

							}

							else if(data.response==='success') {
                                
                                $("#modal-loader").hide();

								// PopupIcon				
								var $PopupIcon	= [];
								$PopupIcon.push({
									type: 'checkbox'
								});
								$(document).FameWork.ComponentIconPopup($PopupIcon);	

								// Notification				
								$Confirm.push({
									title: data.message,
									type: 'alert',
									icon: 'check'
								});
								$(document).FameWork.Confirmbox($Confirm);
								$(document).FameWork.CloseModal();	
                                
                                // Refresh Modal				
                                var $ModalData	= [];
                                $ModalData.push({
                                    modal: 'cart'
                                });
                                $(document).FameWork.RefreshModal($ModalData);

							}



						}

					});
					
				}
				
				
				
			});
            
            
            
            
            /*
			================================================================================================
			CHECKOUT FORM
			================================================================================================
			*/	
			
			$(document).on('submit','form#checkout',function(e){
				
				e.stopPropagation();
				e.preventDefault();
				e.stopImmediatePropagation();
				
				var $this = $(this);
				
				// Inputs
				var $name 		= $this.find("input[name='n']").val(),
					$email 		= $this.find("input[name='e']").val(),
					$password	= $this.find("input[name='p']").val(),
					$bookson	= $this.find("input[name='bookson']").val(),
					$address	= $this.find("input[name='address']").val(),
					$postal	= $this.find("input[name='postal']").val(),
					$city	= $this.find("input[name='city']").val(),
                    $errors     = 0;
				
				
				var $Confirm	= [];
                
                if($("#isloggedin-cart").length>0) {

					if($bookson > 0) {

					 if(!$address) {

                        // Notification				
                        $Confirm.push({
                            title: 'Indtast adresse',
                            type: 'alert'
                        });
                        $(document).FameWork.Confirmbox($Confirm);	
                        $errors++;

						}
						else if(!$postal) {

							// Notification				
							$Confirm.push({
								title: 'Indtast postnummer',
								type: 'alert'
							});
							$(document).FameWork.Confirmbox($Confirm);	
							$errors++;

						}
						else if(!$city) {

							// Notification				
							$Confirm.push({
								title: 'Indtast by',
								type: 'alert'
							});
							$(document).FameWork.Confirmbox($Confirm);	
							$errors++;

						}

					}

                    
                    if(!$this.find("input[name='accept_terms']").is(':checked')) {

                        // Notification				
                        $Confirm.push({
                            title: 'Godkend betingelser for at fortsætte',
                            type: 'alert'
                        });
                        $(document).FameWork.Confirmbox($Confirm);	
                        $errors++;

                    }                    
                    
                    
                } else {

                    if(!$name) {

                        // Notification				
                        $Confirm.push({
                            title: 'Indtast navn',
                            type: 'alert'
                        });
                        $(document).FameWork.Confirmbox($Confirm);	
                        $errors++;

                    }
                    else if(!$email) {

                        // Notification				
                        $Confirm.push({
                            title: 'Indtast email',
                            type: 'alert'
                        });
                        $(document).FameWork.Confirmbox($Confirm);	
                        $errors++;

                    }
                    else if(!$password) {

                        // Notification				
                        $Confirm.push({
                            title: 'Vælg en adgangskode',
                            type: 'alert'
                        });
                        $(document).FameWork.Confirmbox($Confirm);	
                        $errors++;

                    }
                    else if(!$this.find("input[name='accept_terms']").is(':checked')) {

                        // Notification				
                        $Confirm.push({
                            title: 'Godkend betingelser for at fortsætte',
                            type: 'alert'
                        });
                        $(document).FameWork.Confirmbox($Confirm);	
                        $errors++;

                    }

					if($bookson > 0) {

						 if(!$address) {

                        // Notification				
                        $Confirm.push({
                            title: 'Indtast adresse',
                            type: 'alert'
                        });
                        $(document).FameWork.Confirmbox($Confirm);	
                        $errors++;

						}
						else if(!$postal) {

							// Notification				
							$Confirm.push({
								title: 'Indtast postnummer',
								type: 'alert'
							});
							$(document).FameWork.Confirmbox($Confirm);	
							$errors++;

						}
						else if(!$city) {

							// Notification				
							$Confirm.push({
								title: 'Indtast by',
								type: 'alert'
							});
							$(document).FameWork.Confirmbox($Confirm);	
							$errors++;

						}

					}
                    
                }
					
				
                if($errors===0) {                
				

					// Define value
					var $Values = {
						'n': $name,
						'e': $email,
						'address': $address,
						'postal': $postal,
						'city': $city,
						'p': $password
					};
					var $Data = {
						'action':'checkout',
						'values': $Values
					};	


                    
                    
					$(".modal[data-identifier='cart'] #modal-loader").show();

					$.ajax({
						type: "POST",
						contentType:'application/json',
						dataType: 'json',
						async:true,
						url: 'engine/actions/cart.php',
						data: JSON.stringify($Data),			
						success: function (data) {


							if(data.response==='error') {

								$("#modal-loader").hide();

								// Notification				
								$Confirm.push({
									title: data.message,
									type: 'alert'
								});
								$(document).FameWork.Confirmbox($Confirm);					

							}

							else if(data.response==='success') {

								if($("#base").attr('data-author-id')=='1') {

									//fbq('track', 'InitiateCheckout',{});

									//snaptr('track', 'START_CHECKOUT', {});

								}

								

								setTimeout(
                                    function() 
                                    {
								window.location = $("#base").attr('data-home_path') + 'engine/actions/payment_redirect_handle.php?token='+data.token+'&time='+$.now()+'&websiteid='+$("#base").attr('data-author-id');				
								//window.location = $("#base").attr('data-home_path') + 'engine/actions/payment_redirect.php?token='+data.token+'&time='+$.now()+'&websiteid='+$("#base").attr('data-author-id');
									 }, 2500);
							}



						}

					});
					
				}
				
				
				
			});
            
           
            
            
            
            /*
			================================================================================================
			UPLOAD PROFILE IMAGE
			================================================================================================
			*/		
			
			if($(".modal").find('#UploadProfileImage').length>0) {
                
                
                
				$(".modal").find('#UploadProfileImage').unbind("click touchend").click(function() {
					$(".modal").find('#UploadProfileImageFile').click();
				});
				
				$(".modal").find('#UploadProfileImageFile').change(function(event) {
                    
                    var $thisModal = $(this).parents('.modal');
					
					var output = document.getElementById('image-preview');
					
					var fileExtension = ['jpeg', 'jpg', 'png', 'gif'];
					
					var $Confirm	= [];
					
					if ($.inArray($(this).val().split('.').pop().toLowerCase(), fileExtension) == -1) {
						// Notification				
						$Confirm.push({
							title: $("#language").attr('data-error-fileformat'),
							type: 'alert'
						});
						$(document).FameWork.Confirmbox($Confirm);
						
					}
					
					else if(this.files[0].size > 2000000) {
						
						// Notification				
						$Confirm.push({
							title: $("#language").attr('data-error-filesize'),
							type: 'alert'
						});
						$(document).FameWork.Confirmbox($Confirm);
						
						
					} else {

						$thisModal.find("#modal-loader").show();

						var FD = new FormData();

						var Image = $('#UploadProfileImageFile')[0].files[0];

						FD.append('image', Image);
						FD.append('action','profile.image');

						// Call content
						$.ajax({
							type: "POST",
							contentType: false,
							processData: false,
							dataType: "json",
							async:true,
							url: 'engine/actions/account.php',
							data: FD,
							success: function (data) {
								

								if(data.response==='success') {		
									


									if($("#account-image img").length>0) {
										$("#account-image img, #header-user-image img").attr('src',data.image);
									} else {
										$("#header-user-image").html('<img src="'+data.image+'" class="img-circle">')
                                        $("#account-image").html('<img src="'+data.image+'" class="img-circle xxl">')
									}
									
									
	

									// PopupIcon				
									var $PopupIcon	= [];
									$PopupIcon.push({
										type: 'checkbox'
									});
									$(document).FameWork.ComponentIconPopup($PopupIcon);
                                    $(document).FameWork.CloseModal();



								}
								else if(data.response==='error') {
                                    
                                   $thisModal.find("#modal-loader").hide();


									// Notification				
									var $Confirm	= [];
									$Confirm.push({
										title: data.message,
										type: 'alert'
									});
									$(document).FameWork.Confirmbox($Confirm);

								}

								$(document).FameWork.ClearConsole();

							}

						});	
												

					}
						
				});
			}
            
            
            
            /*
            ================================================================================================
            PROFILE IMAGE DELETE
            ================================================================================================
            */	

            $.fn.App.ProfileImageDelete = function() {
                ProfileImageDelete();
            }

            function ProfileImageDelete() {


                var $Data = {
                    'action':'profile.image.delete'
                };

                // Call content
                $.ajax({
                    type: "POST",
                    dataType: "json",
                    contentType: "application/json",
                    async:true,
                    url: 'engine/actions/account.php',
                    data: JSON.stringify($Data),
                    success: function (data) {

                        if(data.response==='success') {								

                            // PopupIcon				
                            var $PopupIcon	= [];
                            $PopupIcon.push({
                                type: 'checkbox'
                            });
                            $(document).FameWork.ComponentIconPopup($PopupIcon);

                            $(document).FameWork.CloseConfirmbox();
                            $(document).FameWork.CloseModal();

                            $("#account-image").html('<div class="img-circle initials bg-blue" data-content="'+data.initials+'"></div>');
                            $("#header-user-image").html('<div class="img-circle initials" data-content="'+data.initials+'"></div>');


                        }
                        else if(data.response==='error') {

                            $("#modal-loader").hide();

                            // Notification				
                            var $Confirm	= [];
                            $Confirm.push({
                                title: data.message,
                                type: 'alert'
                            });
                            $(document).FameWork.Confirmbox($Confirm);

                        }

                        $(document).FameWork.ClearConsole();

                    }

                });	

            }
            

            
		}
        
        
        
        
        
        
        
        
        
        


        $(document).FameWork();
        

		
		
	};	
	
	
	$(document).App();
    
    
    
    

	
}( jQuery ));


/*
================================================================================================
OUT OF SCOPE FUNCTIONS
================================================================================================
*/	
function EnableCaptchaSubmit() {
	$("#CapthaButton").show();
}


function BookFlipInit() {
    
    /* Modernizr 2.6.2 (Custom Build) | MIT & BSD
     * Build: http://modernizr.com/download/#-csstransforms3d-csstransitions-shiv-cssclasses-prefixed-teststyles-testprop-testallprops-prefixes-domprefixes-load
     */
    ;window.Modernizr=function(a,b,c){function z(a){j.cssText=a}function A(a,b){return z(m.join(a+";")+(b||""))}function B(a,b){return typeof a===b}function C(a,b){return!!~(""+a).indexOf(b)}function D(a,b){for(var d in a){var e=a[d];if(!C(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function E(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:B(f,"function")?f.bind(d||b):f}return!1}function F(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+o.join(d+" ")+d).split(" ");return B(b,"string")||B(b,"undefined")?D(e,b):(e=(a+" "+p.join(d+" ")+d).split(" "),E(e,b,c))}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),n="Webkit Moz O ms",o=n.split(" "),p=n.toLowerCase().split(" "),q={},r={},s={},t=[],u=t.slice,v,w=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["&#173;",'<style id="s',h,'">',a,"</style>"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},x={}.hasOwnProperty,y;!B(x,"undefined")&&!B(x.call,"undefined")?y=function(a,b){return x.call(a,b)}:y=function(a,b){return b in a&&B(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=u.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(u.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(u.call(arguments)))};return e}),q.csstransforms3d=function(){var a=!!F("perspective");return a&&"webkitPerspective"in g.style&&w("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},q.csstransitions=function(){return F("transition")};for(var G in q)y(q,G)&&(v=G.toLowerCase(),e[v]=q[G](),t.push((e[v]?"":"no-")+v));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)y(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},z(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function p(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return r.shivMethods?n(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(r,b.frag)}function q(a){a||(a=b);var c=m(a);return r.shivCSS&&!f&&!c.hasCSS&&(c.hasCSS=!!k(a,"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}")),j||p(a,c),a}var c=a.html5||{},d=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,f,g="_html5shiv",h=0,i={},j;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=m,e._domPrefixes=p,e._cssomPrefixes=o,e.testProp=function(a){return D([a])},e.testAllProps=F,e.testStyles=w,e.prefixed=function(a,b,c){return b?F(a,b,c):F(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+t.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};



    /**
 * jquery.bookblock.min.js v2.0.1
 * http://www.codrops.com
 *
 * Licensed under the MIT license.
 * http://www.opensource.org/licenses/mit-license.php
 * 
 * Copyright 2013, Codrops
 * http://www.codrops.com
 */
(function(f,g,d){var c=f(g),e=g.Modernizr;e.addTest("csstransformspreserve3d",function(){var l=e.prefixed("transformStyle");var k="preserve-3d";var j;if(!l){return false}l=l.replace(/([A-Z])/g,function(n,m){return"-"+m.toLowerCase()}).replace(/^ms-/,"-ms-");e.testStyles("#modernizr{"+l+":"+k+";}",function(m,n){j=g.getComputedStyle?getComputedStyle(m,null).getPropertyValue(l):""});return(j===k)});var a=f.event,b,i;b=a.special.debouncedresize={setup:function(){f(this).on("resize",b.handler)},teardown:function(){f(this).off("resize",b.handler)},handler:function(n,j){var m=this,l=arguments,k=function(){n.type="debouncedresize";a.dispatch.apply(m,l)};if(i){clearTimeout(i)}j?k():i=setTimeout(k,b.threshold)},threshold:150};f.BookBlock=function(j,k){this.$el=f(k);this._init(j)};f.BookBlock.defaults={orientation:"vertical",direction:"ltr",speed:1000,easing:"ease-in-out",shadows:true,shadowSides:0.2,shadowFlip:0.1,circular:false,nextEl:"",prevEl:"",autoplay:false,interval:3000,onEndFlip:function(j,l,k){return false},onBeforeFlip:function(j){return false}};f.BookBlock.prototype={_init:function(j){this.options=f.extend(true,{},f.BookBlock.defaults,j);this.$el.addClass("bb-"+this.options.orientation);this.$items=this.$el.children(".bb-item").hide();this.itemsCount=this.$items.length;this.current=0;this.previous=-1;this.$current=this.$items.eq(this.current).show();this.elWidth=this.$el.width();var k={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",msTransition:"MSTransitionEnd",transition:"transitionend"};this.transEndEventName=k[e.prefixed("transition")]+".bookblock";this.support=e.csstransitions&&e.csstransforms3d&&e.csstransformspreserve3d;this._initEvents();if(this.options.autoplay){this.options.circular=true;this._startSlideshow()}},_initEvents:function(){var j=this;if(this.options.nextEl!==""){f(this.options.nextEl).on("click.bookblock touchstart.bookblock",function(){j._action("next");return false})}if(this.options.prevEl!==""){f(this.options.prevEl).on("click.bookblock touchstart.bookblock",function(){j._action("prev");return false})}c.on("debouncedresize",function(){j.elWidth=j.$el.width()})},_action:function(j,k){this._stopSlideshow();this._navigate(j,k)},_navigate:function(j,k){if(this.isAnimating){return false}this.options.onBeforeFlip(this.current);this.isAnimating=true;this.$current=this.$items.eq(this.current);if(k!==d){this.current=k}else{if(j==="next"&&this.options.direction==="ltr"||j==="prev"&&this.options.direction==="rtl"){if(!this.options.circular&&this.current===this.itemsCount-1){this.end=true}else{this.previous=this.current;this.current=this.current<this.itemsCount-1?this.current+1:0}}else{if(j==="prev"&&this.options.direction==="ltr"||j==="next"&&this.options.direction==="rtl"){if(!this.options.circular&&this.current===0){this.end=true}else{this.previous=this.current;this.current=this.current>0?this.current-1:this.itemsCount-1}}}}this.$nextItem=!this.options.circular&&this.end?this.$current:this.$items.eq(this.current);if(!this.support){this._layoutNoSupport(j)}else{this._layout(j)}},_layoutNoSupport:function(k){this.$items.hide();this.$nextItem.show();this.end=false;this.isAnimating=false;var j=k==="next"&&this.current===this.itemsCount-1||k==="prev"&&this.current===0;this.options.onEndFlip(this.previous,this.current,j)},_layout:function(l){var v=this,u=this._addSide("left",l),o=this._addSide("middle",l),j=this._addSide("right",l),r=u.find("div.bb-overlay"),t=o.find("div.bb-flipoverlay:first"),w=o.find("div.bb-flipoverlay:last"),s=j.find("div.bb-overlay"),k=this.end?400:this.options.speed;this.$items.hide();this.$el.prepend(u,o,j);o.css({transitionDuration:k+"ms",transitionTimingFunction:this.options.easing}).on(this.transEndEventName,function(y){if(f(y.target).hasClass("bb-page")){v.$el.children(".bb-page").remove();v.$nextItem.show();v.end=false;v.isAnimating=false;var x=l==="next"&&v.current===v.itemsCount-1||l==="prev"&&v.current===0;v.options.onEndFlip(v.previous,v.current,x)}});if(l==="prev"){o.addClass("bb-flip-initial")}if(this.options.shadows&&!this.end){var n=(l==="next")?{transition:"opacity "+this.options.speed/2+"ms linear "+this.options.speed/2+"ms"}:{transition:"opacity "+this.options.speed/2+"ms linear",opacity:this.options.shadowSides},q=(l==="next")?{transition:"opacity "+this.options.speed/2+"ms linear"}:{transition:"opacity "+this.options.speed/2+"ms linear "+this.options.speed/2+"ms",opacity:this.options.shadowFlip},m=(l==="next")?{transition:"opacity "+this.options.speed/2+"ms linear "+this.options.speed/2+"ms",opacity:this.options.shadowFlip}:{transition:"opacity "+this.options.speed/2+"ms linear"},p=(l==="next")?{transition:"opacity "+this.options.speed/2+"ms linear",opacity:this.options.shadowSides}:{transition:"opacity "+this.options.speed/2+"ms linear "+this.options.speed/2+"ms"};t.css(q);w.css(m);r.css(n);s.css(p)}setTimeout(function(){o.addClass(v.end?"bb-flip-"+l+"-end":"bb-flip-"+l);if(v.options.shadows&&!v.end){t.css({opacity:l==="next"?v.options.shadowFlip:0});w.css({opacity:l==="next"?0:v.options.shadowFlip});r.css({opacity:l==="next"?v.options.shadowSides:0});s.css({opacity:l==="next"?0:v.options.shadowSides})}},25)},_addSide:function(l,k){var j;switch(l){case"left":j=f('<div class="bb-page"><div class="bb-back"><div class="bb-outer"><div class="bb-content"><div class="bb-inner">'+(k==="next"?this.$current.html():this.$nextItem.html())+'</div></div><div class="bb-overlay"></div></div></div></div>').css("z-index",102);break;case"middle":j=f('<div class="bb-page"><div class="bb-front"><div class="bb-outer"><div class="bb-content"><div class="bb-inner">'+(k==="next"?this.$current.html():this.$nextItem.html())+'</div></div><div class="bb-flipoverlay"></div></div></div><div class="bb-back"><div class="bb-outer"><div class="bb-content" style="width:'+this.elWidth+'px"><div class="bb-inner">'+(k==="next"?this.$nextItem.html():this.$current.html())+'</div></div><div class="bb-flipoverlay"></div></div></div></div>').css("z-index",103);break;case"right":j=f('<div class="bb-page"><div class="bb-front"><div class="bb-outer"><div class="bb-content"><div class="bb-inner">'+(k==="next"?this.$nextItem.html():this.$current.html())+'</div></div><div class="bb-overlay"></div></div></div></div>').css("z-index",101);break}return j},_startSlideshow:function(){var j=this;this.slideshow=setTimeout(function(){j._navigate("next");if(j.options.autoplay){j._startSlideshow()}},this.options.interval)},_stopSlideshow:function(){if(this.options.autoplay){clearTimeout(this.slideshow);this.options.autoplay=false}},next:function(){this._action(this.options.direction==="ltr"?"next":"prev")},prev:function(){this._action(this.options.direction==="ltr"?"prev":"next")},jump:function(k){k-=1;if(k===this.current||k>=this.itemsCount||k<0){return false}var j;if(this.options.direction==="ltr"){j=k>this.current?"next":"prev"}else{j=k>this.current?"prev":"next"}this._action(j,k)},last:function(){this.jump(this.itemsCount)},first:function(){this.jump(1)},isActive:function(){return this.isAnimating},update:function(){var j=this.$items.eq(this.current);this.$items=this.$el.children(".bb-item");this.itemsCount=this.$items.length;this.current=j.index()},destroy:function(){if(this.options.autoplay){this._stopSlideshow()}this.$el.removeClass("bb-"+this.options.orientation);this.$items.show();if(this.options.nextEl!==""){f(this.options.nextEl).off(".bookblock")}if(this.options.prevEl!==""){f(this.options.prevEl).off(".bookblock")}c.off("debouncedresize")}};var h=function(j){if(g.console){g.console.error(j)}};f.fn.bookblock=function(k){if(typeof k==="string"){var j=Array.prototype.slice.call(arguments,1);this.each(function(){var l=f.data(this,"bookblock");if(!l){h("cannot call methods on bookblock prior to initialization; attempted to call method '"+k+"'");return}if(!f.isFunction(l[k])||k.charAt(0)==="_"){h("no such method '"+k+"' for bookblock instance");return}l[k].apply(l,j)})}else{this.each(function(){var l=f.data(this,"bookblock");if(l){l._init()}else{l=f.data(this,"bookblock",new f.BookBlock(k,this))}})}return this}})(jQuery,window);
    
}
