(function ($) {
  var Cookie = {
    create: function (name,value,days) {
      if (days) {
          var date = new Date();
          date.setTime(date.getTime()+(days*24*60*60*1000));
          var expires = "; expires="+date.toGMTString();
      }
      else var expires = "";
      document.cookie = name+"="+value+expires+"; path=/";
    },

    read: function (name) {
      var nameEQ = name + "=";
      var ca = document.cookie.split(';');
      for(var i=0;i < ca.length;i++) {
          var c = ca[i];
          while (c.charAt(0)==' ') c = c.substring(1,c.length);
          if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length,c.length);
      }
      return null;
    },

    erase: function (name) {
      Cookie.create(name,"",-1);
    }
  };

  function handleClickOutsiteMCW(event) {
    var inPanel = $(event.target).parents('#mature_content_warning').length;
    if ($('#mature_content_warning:visible').length && !inPanel) {
      event.preventDefault();
      $('#mature_content_warning').fadeOut(200);
      $('body').unbind('click', handleClickOutsiteMCW); 
    }
  }

  $(document).ready(function () {
    /* Before and after Index
    ----------------------------------------------------------------------- */
    if ($('#mature_content_warning').length) {
      $('body').delegate('.ba_category', 'click', function (event) {
        var isMatureContent = $(this).attr('data-mature-content') == 'Yes',
            shouldRemember = Cookie.read('mcw_remember');
            
        if (isMatureContent && (shouldRemember === null || shouldRemember == 0)) {
          event.preventDefault();
          
          $('#mature_content_warning').fadeIn(200);
          $('#mature_content_warning form').attr('action', $(this).attr('href'));
          $.scrollTo('#mature_content_warning', 500);
          $('body').click(handleClickOutsiteMCW);
          
          if ($.browser.msie) {
            $('#mature_content_warning button.fancy').each(function () {
              $(this).children('span').css('width', $(this).outerWidth(true) - 14);
            });
          }
        } else if (isMatureContent && shouldRemember == 1) {
          window.location = $(this).attr('href');
        }
      });
      
      $('body').delegate('#mature_content_warning button', 'click', function (event) {
        event.preventDefault();
        var shouldRemember = $('#mature_content_warning .remember_me input:checked').length == 1;
        
        Cookie.create('mcw_remember', $(this).attr('rel'), shouldRemember ? 14 : -1);

        if ($(this).attr('rel') == 1) {
          window.location = $('#mature_content_warning form').attr('action');
        } else {
          $('#mature_content_warning').fadeOut(200);
          $('body').unbind('click', handleClickOutsiteMCW);
        }
      });
    }
  });  
})(jQuery);

