$(document).ready(function(){

  $.each($('.detail .picture'), function(index, value) {
    var initial_id = $(value).attr('id')
    var params     = initial_id.split('_');
    var id         = params[1];
    var size       = params[2];
    var url        = ['/pictures', id, size].join('/');
    $('#' + initial_id).load(url);
  });

  $('h2.category_type').click(function(){
    var $this = $(this);
    var list  = $this.siblings('ul');
    if (!list.hasClass('open')) {
      $('ul.open').slideToggle(function(){
        $(this).removeClass('open');
        list.slideToggle(function(){
          $(this).addClass('open');
        });
      });
    };
  });

  function resize_products_page() {
    var sidebar        = $('.sidebar');
    var products       = $('.products .products');
    var sidebar_height = sidebar.height();
    if (sidebar_height > products.height()) {
      products.height(sidebar.height());
    };
  };

  resize_products_page();

  function is_unsupported_browser() {
    return $.browser.msie && Number($.browser.version.substr(0,1)) < 7;
  }

  function unsupported_browser_notice(element) {
    element.slideDown();
    $('a.close', element).click(function() {
      $.cookie('display_unsupported', 'false');
      element.slideUp();
    });
  }

  if (is_unsupported_browser()) {
    var unsupported = $('.unsupported');
    if ($.cookie('display_unsupported') === null) {
      $.cookie('display_unsupported', 'true');
      unsupported_browser_notice(unsupported);
    } else if ($.cookie('display_unsupported') === 'true') {
      if ($.cookie('display_unsupported') === 'true') {
        unsupported_browser_notice(unsupported);
      };
    };
  }

  $('.' + window['subsection']).
    find('a').
      addClass('selected');

  if (window.section !== undefined) {

    if (window.section['product']) {

      var cart_item_id    = $('#cart_item_variant_id'),
          quantity_select = $('#cart_item_quantity'),
          size_select     = $('.size-select'),
          out_of_stock    = $('.out-of-stock'),
          quantity_bag    = $('.quantity-bag'),
          message_part    = "";

      function change_quantity_available(up_to) {
        var range = _.range(1, up_to + 1);
        $('option', quantity_select).remove();
        $(range).each(function(index) {
          quantity_select.append(
            '<option value="' + this + '">' + this + '</option>'
          );
        });
      };

      function show_quantity_bag() {
        out_of_stock.hide();
        quantity_bag.show();
      };

      function hide_quantity_bag() {
        quantity_bag.hide();
        out_of_stock.show();
      };

      function hide_size() {
        size_select.hide();
      }

      function set_notification_copy() {
        copy                 =  $("#cart_item_variant_id option:selected").
                                  text().
                                    replace('/', '-');
        copy                 =  "+" +
                                encodeURIComponent(copy) +
                                "+becomes+available.";
        link                 =  out_of_stock.find('a')
        out_of_stock_message =  link.attr('href');
        if (message_part === "") {
          message_part       =  out_of_stock_message.
                                  replace("+becomes+available.", "");
        };
        out_of_stock_message =  message_part + copy;
        link.attr('href', out_of_stock_message);
      }

      function on_change() {
        var selected  = $("#cart_item_variant_id").val();
        if (selected !== null) {
          var available = variants['options'][selected.toString()];
          change_quantity_available(available);
          if (available > 0) {
            show_quantity_bag();
          } else {
            set_notification_copy()
            hide_quantity_bag();
          };
        } else {
          set_notification_copy();
          hide_size();
          hide_quantity_bag();
        };
      }

      on_change();
      cart_item_id.change(on_change);

    };

  };

  if ($('.print')) {
    $('.print').click(function(){
      window.print();
    });
  }

  if ($('.addresses') && !$('.addresses').hasClass('complete')) {
    function shipping_same_events() {
      if (shipping_same.is(':checked')) {
        $('.address.shipping').hide();
        shipping_same.attr('checked', true);
      } else {
        $('.address.shipping').show();
        shipping_same.attr('checked', false);
      };
    }
    var address_billing  = $('.address.billing');
    var address_shipping = $('.address.shipping');
    var form             = address_billing.closest('form');
    var shipping_same    = $('#checkout_shipping_same_as_billing');
    shipping_same.change(shipping_same_events);
    shipping_same_events();
    form.submit(function(){
      if (shipping_same.is(':checked')) {
        address_billing.find('input, select').each(function(){
          if (!$(this).attr('id').match('_id')) {
            value          = $(this).val();
            shipping_input = $(this).attr('id').replace('billing', 'shipping');
            $('#' + shipping_input).val(value);
          };
        });
      };
    });
  };

});
