(function($) {
  // open external links in new window
  Drupal.behaviors.openInNewWindow = {
    attach: function(context) {
      // open external links in new window
      $("a[href^=http]", context).each(function() {
        if(this.href.indexOf(location.hostname) != 0 && this.href.indexOf('uitid.be') < 0  && this.href.indexOf('uitinvlaanderen.be') < 0) {
          $(this).click(function(){window.open(this.href);return false;});
        }
      });
    
      // open pdf files in new window
      $("a", context)
      .filter(
        function (index) {
          if ($(this).attr("href")) {
            var href = $(this).attr("href").toLowerCase();
            var hrefArray = href.split('.');
            var ext = hrefArray[hrefArray.length - 1];
            return  ext == 'pdf';
          }
        }
      )
      .each(function() {
        $(this).click(function(){window.open(this.href);return false;});
      });
    }
  }
  
  // Cnapi tracking
  Drupal.behaviors.cnapiTracking = {
    attach: function(context) {
      
      // ticket
      $('.reservation-link', context).click(function() {
        if (Drupal.settings.cdbid) {
          Drupal.cnapi_tracking.track('ticket', {'cdbid' : Drupal.settings.cdbid});
        }
        else {
          var cdbid = $(this).parents('.cnapi-ui-event-summary').attr('id').replace('cnapi-object-', '');
          Drupal.cnapi_tracking.track('ticket', {'cdbid' : cdbid});
        }
      });
      
      if (!Drupal.settings.cdbid) {
        return;
      }
      
      // stratenplan
      $('.map-link', context).click(function() {
        Drupal.cnapi_tracking.track('route', {'cdbid' : Drupal.settings.cdbid, 'type' : 'map'});
      });
      
      // routeplanner_lijn
      $('.delijn-link', context).click(function() {
        Drupal.cnapi_tracking.track('route', {'cdbid' : Drupal.settings.cdbid, 'type' : 'delijn'});
      });
      
      // routeplanner_mivb
      $('.mivb-link', context).click(function() {
        Drupal.cnapi_tracking.track('route', {'cdbid' : Drupal.settings.cdbid, 'type' : 'mivb'});
      });
      
      // routeplanner_nmbs
      $('.nmbs-link', context).click(function() {
        Drupal.cnapi_tracking.track('route', {'cdbid' : Drupal.settings.cdbid, 'type' : 'nmbs'});
      });
      
      // like
      $('.do-3-link, .like-link', context).click(function() {
        Drupal.cnapi_tracking.track('like', {'cdbid' : Drupal.settings.cdbid});
      });
      
      // attend
      $('.do-8-link, .goto-link', context).click(function() {
        Drupal.cnapi_tracking.track('attend', {'cdbid' : Drupal.settings.cdbid});
      });
      
      // facebook
      $('.facebook-share-link', context).click(function() {
        Drupal.cnapi_tracking.track('facebook', {'cdbid' : Drupal.settings.cdbid});
      });
      
      // twitter
      $('.twitter-share-link', context).click(function() {
        Drupal.cnapi_tracking.track('twitter', {'cdbid' : Drupal.settings.cdbid});
      });
      
      // meer_data
      $('.more-data-link', context).click(function() {
        Drupal.cnapi_tracking.track('moreinfo', {'cdbid' : Drupal.settings.cdbid, 'type' : 'more_data'});
      });
    }
  }
  
  // clear default values
  Drupal.behaviors.clearDefaults = {
    attach: function(context) {
      // default values for newsletter subscription fields
      $('.newsletter-form-small .form-item-mail input', context).val(Drupal.t('Your e-mail address')).addClass('cleardefault');
      
      // default values for newsletter subscription fields
      $('.form-item-dob .description', context).hide();
      if ($('.form-item-dob input', context).val() == '') {
        $('.form-item-dob input', context).val('dd/mm/jjjj').addClass('cleardefault');
      }
  
      var inputDefaults = {};
      $(".cleardefault", context).each(function() {
        var element = $(this);
        inputDefaults[element.attr("id")] = element.val();
      });
      $(".cleardefault", context).focus(function() {
        var element = $(this);
        if (element.val() == inputDefaults[element.attr("id")]) {
          element.val('');
        }
      });
      $(".cleardefault", context).blur(function() {
        var element = $(this);
        if (element.val() == '') {
          element.val(inputDefaults[element.attr("id")]);
        }
      });
      $(".cleardefault", context).parents("form").submit(function() {
        $(".cleardefault", $(this)).each(function() {
          var element = $(this);
          if (element.val() == inputDefaults[element.attr("id")]) {
            element.val('');
          }
        });
      });
    }
  } 
  
  // cycle slideshow homepage
  Drupal.behaviors.cycleSlideshowFront = {
    attach: function(context) { 
      $('#block-views-focus-block', context).each(function() { 
        $('#block-views-focus-block .item-list ul', context)
        .before('<div id="nav">') 
        .cycle({ 
          fx:     'fade', 
          speed:  'fast', 
          timeout: 0, 
          pager:  '#nav',
          random: 'true'
        });
      }); 
    }
  } 
  
  // cycle slideshow in de media
  Drupal.behaviors.cycleSlideshowMedia = {
    attach: function(context) { 
      $('#block-uiv-enrichments-media .item-list ul', context).each(function() {
        if ($('li', this).length > 1) { 
          $(this)
          .before('<div id="nav">') 
          .cycle({ 
            fx:     'fade', 
            speed:  'fast', 
            timeout: 7000, 
            pager:  '#nav'
          });
        }
      }); 
    }
  } 

  // foldout navigation
  Drupal.behaviors.foldoutNavigation = {
    attach: function(context) {
      $('.not-front #navigation ul.navigation-level-0 li').hover(
        function() {
          $('ul.navigation-level-1', this).show();
        }, function() {
          $('ul.navigation-level-1', this).hide();
        }
      );
    }
  } 
  
  // more/less items in actor playlist
  Drupal.behaviors.limitItemsActorPlayList = {
    attach: function(context) {
      $('ul.actor-playlist').each(function() {
        if ($('li', this).length > 9) {
          var much = $('li:gt(10)', this);
          much.hide();
          $(this).append('<li class="more-items"><a href="">Meer items</a></li>');
          var ul = $(this);
          $('.more-items a', ul).toggle(function() {
            $('.more-items a', ul).html('Minder items').addClass('close');
            much.show();
          }, function() {
            $('.more-items a', ul).html('Meer items').removeClass('close');
            much.hide();
          });
        }
      });
    }
  }
  
  // more/less items in filters
  Drupal.behaviors.limitItemsBrowseFilters = {
    attach: function(context) {
      $('ul.filter-level-0').each(function() {
        if ($('ul.filter-level-1 li.active', this).length == 0) {
          if ($('li', this).length > 6) {
            var much = $('li:gt(7)', this);
            much.hide();
            $(this).append('<li class="more-items"><a href="#">Meer items</a></li>');
            var ul = $(this);
            $('.more-items a', ul).toggle(function() {
              $('.more-items a', ul).html('Minder items').addClass('close');
              much.show();
            }, function() {
              $('.more-items a', ul).html('Meer items').removeClass('close');
              much.hide();
            });
          }
        }
      });
    }
  }
  
  // more/less items in user-activities
  Drupal.behaviors.limitItemsActivityList = {
    attach: function(context) {
      $('.page-user ul.user-activity-list').each(function() {
        if ($('li', this).length > 3) {
          var much = $('li:gt(4)', this);
          much.hide();
          $(this).append('<li class="more-items"><a href="#">Meer acties</a></li>');
          var ul = $(this);
          $('.more-items a', ul).toggle(function() {
            $('.more-items a', ul).html('Minder acties').addClass('close');
            much.show();
          }, function() {
            $('.more-items a', ul).html('Meer acties').removeClass('close');
            much.hide();
          });
        }
      });
    }
  }
  
  // more/less items in similar-users
  Drupal.behaviors.limitSimilarUserList = {
    attach: function(context) {
      $('.page-user #block-culturefeed-ui-similar-users ul.user-list').each(function() {
        if ($('li', this).length > 7) {
          var much = $('li:gt(8)', this);
          much.hide();
          $(this).append('<li class="more-items"><a href="#">Meer gelijkaardige gebruikers</a></li>');
          var ul = $(this);
          $('.more-items a', ul).toggle(function() {
            $('.more-items a', ul).html('Minder gelijkaardige gebruikers').addClass('close');
            much.show();
          }, function() {
            $('.more-items a', ul).html('Meer gelijkaardige gebruikers').removeClass('close');
            much.hide();
          });
        }
      });
    }
  }
  
  // hide items in random top list block
  Drupal.behaviors.limitTopListBlock = {
    attach: function(context) {
      $('.front #block-views-top-lists-block-random-toplist').each(function() {
        if ($('li', this).length > 6) {
          var much = $('li:gt(7)', this);
          much.hide();
        }
      });
    }
  }
  
  // show remove link on hovering recommendations
  Drupal.behaviors.showRemoveLink = {
    attach: function(context) {
      $('div.actions div', context).hover(
      function() {
        $(this).addClass('hover');
      },
      function() {
        $(this).removeClass('hover');
      });
    }
  }
  
  // show help for recommendations
  Drupal.behaviors.showRecommendationHelp = {
    attach: function(context) {
      $('#recommendations', context).each(function() {
        $(this).before('<div class="tooltip recommendations">Wat is dit?</div>');
      });
    }
  }
  
  // show tooltip for recommendations
  Drupal.behaviors.showRecommendationIntro = {
    attach: function(context) {
      $('.tooltip.recommendations', context).hover(
      function() {
        $(this).addClass('hover');
        $('#recommendations-intro').show();
      },
      function() {
        $(this).removeClass('hover');
        $('#recommendations-intro').hide();
      });
    }
  }

  // show hidden details
  Drupal.behaviors.showHiddenDetails = {
    attach: function(context) {
      $('div.more-items', context).each(function() {
        $(this).wrapInner('<a href="">Meer details</a>');
        $('a', this).click(function() {
          Drupal.cnapi_tracking.track('moreinfo', {'cdbid' : Drupal.settings.cdbid, 'moreinfo_type' : 'more_detail'});
        });
        $('a', this).toggle(function() {
          $(this).html('Minder details').addClass('close');
          $('.hidden').slideDown('fast');
        }, function() {
          $(this).html('Meer details').removeClass('close');
          $('.hidden').slideUp('fast');
        });
      });
    }
  }
  
  // insert favorite locations form in profile edit form
  Drupal.behaviors.insertFavoriteLocationsForm = {
    attach: function(context) {
      $('#block-uiv-user-actors', context).each(function() {
        $(this).insertAfter('.form-item-bioPrivacy');
      });
    }
  }
  
  // display privacy links as checkboxes
  Drupal.behaviors.changePrivacySettings = {
    attach: function(context) {
      $('.privacy-link', context).each(function() {
        var status = $(this).text().toLowerCase();
        $(this).addClass(status);
      });
    }
  }
  
  // add Feedback Link
  Drupal.behaviors.addFeedbackLink = {
    attach: function(context) {
      $('#footer-wrapper', context).each(function() {
        $(this).append('<div id="feedback"><a href="/over-uitid" title="Wat is UiTiD?">OVER UiTiD</a> | <a href="/feedback" title="Laat ons weten wat je van de nieuwe website vindt">STUUR FEEDBACK</a>');
      });
    }
  }

  // show custom datepicker in filters
  Drupal.behaviors.showDatePicker = {
    attach: function(context) {
      $('.sidebar #block-cnapi-browse-filters-when ul', context).each(function() {
        $(this).append('<li class="more-items"><a class="choose-custom-date" href="">Kies zelf data</a></li>');
        $('a.choose-custom-date', this).toggle(function() {
          $(this).addClass('close');
          $('#cnapi-browse-filter-when-form').slideDown('fast');
        }, function() {
          $(this).removeClass('close');
          $('#cnapi-browse-filter-when-form').slideUp('fast');
        });
      });
    }
  }
      
})(jQuery);

;

