(function($){
  $(document).ready(function(){
    initHeadPromotion();
    initPromotions();
    initTeaserLists();
    initMarginalTeasers();
    initHotelSearchResults();
    initEventSearchResults();
    initMyViennaItems();
    initPersonalizationTeaser();
  });
  
  var Constants = {
    hiddenClass: 'hidden',
    hoverClass: 'hover'
  };
  
  function initHeadPromotion() {
    if (! $('#headerFeatured')[0] ) return;
    
    $('#headerFeatured').click(function() {
      var link = $(this).find('a');
      if ( link.length ) {
        link.triggerHandler('click');
        var target = link.attr('target');
        if (target != '_blank') { target = '_self'; }
        window.open(link.attr('href'), target);
        return false;
      }
    });
    
    $('#headerFeatured a').click(function(e) {
      e.stopPropagation();
    });
  }
  
  function initPromotions() {
    if (! $('.promotion .image').length ) return;
    
    var hoverClass = Constants.hoverClass;
    
    $('.promotion .image')
      .hover(
        function() {
          $(this).addClass(hoverClass);
        },
        
        function() {
          $(this).removeClass(hoverClass);
        }
      )
      .click(function() {
        var target = $(this).find('a').attr('target');
        if (target != '_blank') { target = '_self'; }
        window.open($(this).find('a').attr('href'), target);
        return false;
      });
  }
  
  function initTeaserLists() {
    if (! $('.teaserList')[0] ) return;
    
    var hoverClass = Constants.hoverClass;
    $('.teaserList li')
      .hover(
        function() {
          $(this).addClass(hoverClass);
        },
        
        function() {
          $(this).removeClass(hoverClass);
        }
      )
      .click(function() {
        var link = $(this).find('h3').children('a');
        var target = link.attr('target');
        if (target != '_blank') { target = '_self'; }
        window.open(link.attr('href'), target);
        return false;
      });
  }
  
  function initMarginalTeasers () {
      if (! $('.tip')[0] ) return;
      
      $('.tip').click(function() {
        var link = $(this).find('blockquote a');
        var target = link.attr('target');
        if (target != '_blank') { target = '_self'; }
        window.open(link.attr('href'), target);
        return false;
      });
  }
  
  function initHotelSearchResults () {
    if (! $('.hotelSearch .resultHotelInfo').length ) return;
    
    var hoverClass = Constants.hoverClass;
    $('.hotelSearch .resultHotelInfo')
      .hover(
        function() {
          $(this).addClass(hoverClass);
        },
        
        function() {
          $(this).removeClass(hoverClass);
        }
      )
      .click(function() {
        var link = $(this).find('h3').children('a');
        var target = link.attr('target');
        if (target != '_blank') { target = '_self'; }
        window.open(link.attr('href'), target);
        return false;
      });
  }
  
  function initEventSearchResults () {
    if (! $('.eventSearchresults .searchresult').length ) return;
    var searchresults = $('.eventSearchresults .searchresult');  
    var hoverClass = Constants.hoverClass;
    
    searchresults.hover(
      function() {
        $(this).addClass(hoverClass);
      },
      
      function() {
        $(this).removeClass(hoverClass);
      }
    ).click(function() {
      var link = $(this).find('a');
      var target = link.attr('target');
      if (target != '_blank') { target = '_self'; }
      window.open(link.attr('href'), target);
      return false;
    }).find('a').focus(function() {
      $(this).parents('.searchresult').addClass(hoverClass);
    }).blur(function() {
      $(this).parents('.searchresult').removeClass(hoverClass);
    });
    
    
  }
  
  function initMyViennaItems () {
    if (! $('.tripitems .tripitem .itemContent').length ) return;
    
    var hoverClass = Constants.hoverClass;
    $('.tripitems .tripitem .itemContent')
    .hover(
      function() { $(this).addClass(hoverClass); },
      function() { $(this).removeClass(hoverClass); }
    )
    .click(function() {
      var link = $(this).find('h3').children('a');
      var target = link.attr('target');
      if (target != '_blank') { target = '_self'; }
      window.open(link.attr('href'), target);
      return false;
    });
  }
  
  function initPersonalizationTeaser () {
    if (! $('#personalizationTeaser').length ) return;
    
    $('#personalizationTeaser').click(function() {
      var link = $(this).find('a');
      var target = link.attr('target');
      if (target != '_blank') { target = '_self'; }
      window.open(link.attr('href'), target);
      return false;
    });
  }
}(jQuery));
