jQuery(document).ready( function($) {

    $('.heightEQ').heightEQ();

    /* Search box slideout */
    $('#search-site').click( function(e) {
        e.preventDefault();
        $('#search-site').toggleClass('on');
        $('#global-search').toggleClass('on');

        setTimeout( function() {
            $('#global-search').find('input[name="s"]').val('').focus();
        }, 500 );

        return false;
    });

    /* Slider Loader */
    if ( $('#slider').length ) {
        $('#slider').bxSlider({
            'auto'      : true,
            'controls'  : false,
            'mode'      : 'fade',
            'pager'     : true
        });
    }

    /* Testimonial Slider Loader */
    if ( $('#testimonial-slider').length ) {
        $('#testimonial-slider').bxSlider({
            'auto'          : true,
            'controls'      : false,
            'minSlides'     : 2,
            'maxSlides'     : 2,
            'slideWidth'    : 500,
            'slideMargin'   : 10,
            'pager'         : true,
            'autoHover'     : true,
        });
    }

    $('a.fancybox').fancybox({
        maxWidth    : 1200,
        maxHeight   : 800,
        width       : '90%',
        height      : '90%',
        scrolling   : 'hidden',
        padding     : 10,
        helpers     : {
            overlay : {
                locked  : false,
                css     : {
                    'background' : 'rgba(0,0,0,0.8)'
                }
            }
        }
    });

    $('a.video').fancybox({
        type        : 'iframe',
        maxWidth    : 800,
        maxHeight   : 480,
        width       : '90%',
        height      : '90%',
        scrolling   : 'hidden',
        helpers     : {
            overlay: {
                locked : false
            }
        }
    });

    $('a.fancybox-gallery').click( function(e) {
        e.preventDefault();

        if ( $(this).data('gallery') ) {
            $.fancybox.open(
                $(this).data('gallery'),
                {
                    scrolling   : 'hidden',
                    helpers     : {
                        overlay : {
                            locked : false
                        }
                    }
                }
            );
        }
    });

    if ( $('.hc-plans').length ) {

        $('.hc-plans').each( function() {

            var plans = $(this);

            plans.find('.hc-plans-toggle > a').click( function(e) {
                e.preventDefault();

                var showType = $(this).data('plan');

                plans.find('.hc-plans-toggle > a').removeClass('active');
                $(this).addClass('active');

                plans.find('[class*="toggle-"]').hide();
                plans.find('[class*="toggle-' + showType + '"]').show();

                return false;
            });

            $(plans).find('.hc-plans-toggle a:first-of-type').trigger('click');
        });
    }

    // Mobile Menu
    $('#nav-expand').click( function(e) {
        e.preventDefault();
        $('html').toggleClass('mobile-nav-menu-active');
        return false;
    });
    var catChildlink = $('#nav-wrapper .cats-nav li>a');
    //if ( $( "body" ).hasClass("wp-is-mobile")){
        catChildlink.each(function() {
            $(this).click(function(e) {
                var noChangeEl = $('.children.open li, .children.open li a');
                if (!$(e.target).is(noChangeEl)) {

                    var parent = $(this).parent();
                    var hasChildren = parent.find('.children');
                    if (parent.children().length > 1) {
                        e.preventDefault();
                        hasChildren.toggleClass('open');
                    }
                }
            });
        });
    //}
    var parentA = $('.children').parent().find('a:first');
    parentA.addClass('has-dropdown');



    //$('input[name=input_6]').val( '7998254' );

    // original form title in modal
    //var form_title = ( $('.request-info h4').length ) ? $('.request-info h4').text() : null;

    $('a.email-venue').click( function(e) {

        $('.request-info h4').text('Request Info');

        // How the form was sent
        var action_referrer = $(this).attr('data-action-referrer');
        var contact_name = $(this).attr('data-venue-name');
        $('#venue-contact').html( "<strong>" + contact_name + "</strong>" + ' will be happy to help' );
        $('.call-to-action').html( 'Please fill out the form below:' );

        // attach dynamic venue fields to gravity form; do add email to data attribute == spammers; grab the email during the gravity forms hook process
        var venue_id = $(this).attr('data-venue-id');

        var $form = $('#email-venue-form');
        $form.find('input[name=input_6]').val( venue_id );
        $form.find('input[name=input_7]').val( action_referrer );
        // Group Deal field - make it null since this is for contact only
        $form.find('input[name=input_8]').val( "" );


        var form_html = $form.html();

        $.fancybox.open(
            form_html,
            {
                scrolling   : 'hidden',
                helpers     : {
                    overlay : {
                        locked : false
                    }
                }
            }
        );

        e.preventDefault();

    });

    $('a.get-group-deal').click( function(e) {

        $('.request-info h4').text('Request Group Deal');

        var group_deal_title = base64_decode( $(this).attr('data-group-deal-title') );
        var group_deal_description = base64_decode( $(this).attr('data-group-deal-description') );
        var group_deal_full = group_deal_title + " - " + group_deal_description;
        $('#venue-contact').html( "<h2 style='font-size: 1.4em; color: #f68b1f; margin-bottom: 0.5em;'>" + group_deal_title + "</h2><br>" + group_deal_description );
        $('.call-to-action').html( 'Fill out the form below to claim this Group Deal' );

        // How the form was sent
        var action_referrer = $(this).attr('data-action-referrer');

        // attach dynamic venue fields to gravity form; do add email to data attribute == spammers; grab the email during the gravity forms hook process
        var venue_id = $(this).attr('data-venue-id');


        var $form = $('#email-venue-form');

        // data_venue_id field
        $form.find('input[name=input_6]').val( venue_id );

        // website action referrer field
        $form.find('input[name=input_7]').val( action_referrer );

        // Group Deal field
        $form.find('input[name=input_8]').val( group_deal_full );

        var form_html = $form.html();

        $.fancybox.open(
            form_html,
            {
                scrolling   : 'hidden',
                helpers     : {
                    overlay : {
                        locked : false
                    }
                }
            }
        );

        e.preventDefault();

    });

    if ( window.location.hash == '#get-group-deal' ) {
        $('html, body').animate({
            scrollTop: $('.group-deal').offset().top - 50
        }, 0 );
    }

    /* Trigger after everything on page has fully loaded */
    $(window).on( 'load resize scroll', function() {

        var windowPosition  = $(window).scrollTop();
        var topSpacing      = 20;
        var mobileBreak     = 640;

        $('.sticky').each( function() {

            if ( $(window).width() < mobileBreak ) {
                $(this).css( 'position', 'relative' );
                $(this).css( 'margin-top', '0' );
                $(this).css( 'margin-bottom', '0' );
                return false;
            }

            var parent          = $(this).parent();
            var parentHeight    = parent.innerHeight();
            var parentOffset    = parent.offset().top + windowPosition;
            var parentTop       = parentOffset + windowPosition;
            var parentBottom    = parentTop + parentHeight;

            $(this).css( 'position', 'relative' );
            $(this).css( 'margin-top', '0' );
            $(this).css( 'margin-bottom', '0' );

            var stickyPosition  = $(this).offset().top;
            var stickyOffset    = $(this).offset().top + windowPosition;

            if ( windowPosition >= ( stickyPosition - topSpacing ) ) {

                var topMargin       = ( windowPosition - stickyPosition + topSpacing );
                var stickyHeight    = $(this).outerHeight();
                var stickyTop       = stickyOffset + windowPosition + topSpacing;
                var stickyBottom    = stickyTop + stickyHeight + topMargin + topSpacing;

                if ( stickyHeight >= parentHeight ) {
                    return false;
                }

                if ( stickyBottom >= parentBottom ) {
                    $(this).css( 'margin-top', ( parentHeight - stickyHeight - ( topSpacing * 2 ) ) + 'px' );
                } else {
                    $(this).css( 'margin-top', topMargin + 'px' );
                }
            }
        });
    });

    if ( location.hash == '#get-group-deal' ) {
        activiateGroupDeal();
    }

    $('a.go-to-gd').click( function() {
        activiateGroupDeal();
    });

});

function activiateGroupDeal() {
    $ = jQuery;

    var input = $(document).find('input#input_4_8');

    if ( input.length ) {
        input.val( 'Yes' );
    }
}

function base64_decode( data ) {

  var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
  var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,
    ac = 0,
    dec = '',
    tmp_arr = [];

  if (!data) {
    return data;
  }

  data += '';

  do { // unpack four hexets into three octets using index points in b64
    h1 = b64.indexOf(data.charAt(i++));
    h2 = b64.indexOf(data.charAt(i++));
    h3 = b64.indexOf(data.charAt(i++));
    h4 = b64.indexOf(data.charAt(i++));

    bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;

    o1 = bits >> 16 & 0xff;
    o2 = bits >> 8 & 0xff;
    o3 = bits & 0xff;

    if (h3 == 64) {
      tmp_arr[ac++] = String.fromCharCode(o1);
    } else if (h4 == 64) {
      tmp_arr[ac++] = String.fromCharCode(o1, o2);
    } else {
      tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);
    }
  } while (i < data.length);

  dec = tmp_arr.join('');

  return dec.replace(/\0+$/, '');
}

jQuery( function($) {

    let $pmproAddCnt        = $('#pmpro_add_content');
    let $pmproAccountCnt    = $('#pmpro_account');

    if ( $pmproAddCnt.length && $pmproAccountCnt.length  ) {
        $pmproAccountCnt.prepend( $pmproAddCnt );
    }
});