function same_addresses_click ( checkbox ) {
  $('shipping_address_block').select('input,select').each(function ( e ) {
    if ( checkbox.checked ) {
      e.value = "";
    }
    e.disabled = checkbox.checked;
  })
  
  if ( checkbox.checked ) {
    $('shipping_address_block').addClassName("same_addresses");
    billing_country_change($('billing_country'));
  } else {
    $('shipping_address_block').removeClassName("same_addresses");
    shipping_country_change($('shipping_country'));
  }
}

function set_block_country ( block, country ) {
  if ( country == "US" ) {
    block.removeClassName("int");
    block.addClassName("us");
  } else {
    block.removeClassName("us");
    block.addClassName("int");
  }
}

function is_same_addresses () {
  if ( $('cart_same_addresses') ) {
    return $('cart_same_addresses').checked;
  } else {
    return $('wholesale_cart_same_addresses').checked;
  }
}

function billing_country_change ( select ) {
  set_block_country($(select).up('.block'), select.value);
  
  if ( is_same_addresses() ) {
    set_block_country($('shipping_method_block'), select.value);
    update_order_summary();
  }
}

function shipping_country_change ( select ) {
  set_block_country($(select).up('.block'), select.value);
  set_block_country($('shipping_method_block'), select.value);
  update_order_summary();
}

function shipping_method_change ( select ) {
  // Only called on wholesale page.
  if ( /^collect_/.test(select.value) ) {
    $('shipping_account_number').style.display = "block";
  } else {
    $('shipping_account_number').style.display = "none";
    $('wholesale_cart_shipping_account').value = "";
  }
  
  update_order_summary();
}

function update_order_summary () {
  var country, state, method, prefix, url;
  
  if ( $('cart_shipping_method_us') ) {
    prefix = "";
    url = '/cart/order_summary';
    
    if ( is_same_addresses() ) {
      country = $('billing_country').value;
      state = $('billing_state').value;
    } else {
      country = $('shipping_country').value;
      state = $('shipping_state').value;
    }
  } else {
    prefix = "wholesale_";
    url = '/wholesale/order_summary';
    country = 'US';
    
    if ( is_same_addresses() ) {
      state = $('billing_state').value;
    } else {
      state = $('shipping_state').value;
    }
  }
  
  if ( country == 'US' ) {
    method = $(prefix + 'cart_shipping_method_us').value;
  } else {
    method = $(prefix + 'cart_shipping_method_int').value;
  }
  
  new Ajax.Updater('order_summary_block', url, {
    parameters : {
      shipping_country : country,
      shipping_state : state,
      shipping_method : method
    }
  });
}

// labeling code for wholesale form
Event.observe(window, 'load', function() {
  setup_field_for_empty_detection('login_user');
  setup_field_for_empty_detection('login_pw');
});

function setup_field_for_empty_detection(id_or_elem) {
  var field = $(id_or_elem);
  var interval_id = null;
  if (!field) return;
  
  function cancel_autofill_check () {
    if ( interval_id ) {
      window.clearInterval(interval_id);
      interval_id = null;
    }
  }
  
  if (field.value == '') {
    field.addClassName('empty');
    
    // Deal with autofill.
    interval_id = window.setInterval(function () {
      if (field.value) {
        field.removeClassName('empty');
        cancel_autofill_check();
      }
    }, 100);
    
    window.setTimeout(cancel_autofill_check, 2000);
  }
  
  Event.observe(field, 'focus', function() {
    cancel_autofill_check();
    field.removeClassName('empty');
  });
  Event.observe(field, 'blur', function() {
    cancel_autofill_check();
    if (field.value == '')
      field.addClassName('empty');
    else
      field.removeClassName('empty');
  });
}

function signup_country_change(select) {
  var td = $('signup_state_control');
  if (select.value == 'US') {
    td.removeClassName('ca');
    td.removeClassName('int');
    td.addClassName('us');
  } else if (select.value == 'CA') {
    td.removeClassName('us');
    td.removeClassName('int');
    td.addClassName('ca');
  } else {
    td.removeClassName('us');
    td.removeClassName('ca');
    td.addClassName('int');
  }
}

