$(document).ready(function(){

  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'),
          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 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 !== undefined) {
          var available = variants['options'][selected.toString()];
          change_quantity_available(available);
          if (available > 0) {
            show_quantity_bag();
          } else {
            set_notification_copy()
            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);
          };
        });
      };
    });
  };

});
