function check_card(number) {
  // remove non-numerics
  var v = "0123456789";
  var w = "";
  for (i=0; i < number.length; i++) {
    x = number.charAt(i);
    if (v.indexOf(x,0) != -1) { w += x; }
  }
  // TODO: american express is only 13 digits, but do we want to validate then
  if (w.length == 16) {
    if (!cardval(w)) {
      $('card_number').className = "invalid";
      $('order_cc_number').className = "invalid";
      $('card_messages').innerHTML = "<strong>Invalid Card Number:</strong> please re-check your digits.";
      setTimeout(Effect.Shake('card_messages', { duration: 5, distance: 5 }), 500);
      return false;
    } else {
      $('card_number').className = "valid";
      $('order_cc_number').className = "valid";
      $('card_messages').innerHTML = "";
      $('order_cc_expiration').focus();
    }
  }
}

function cardval(w) {
  // validate number
  j = w.length / 2;
  if (j < 6.5 || j > 8 || j == 7) { return false; }
  k = Math.floor(j);
  m = Math.ceil(j) - k;
  c = 0;
  for (i=0; i<k; i++) {
    a = w.charAt(i*2+m) * 2;
    c += a > 9 ? Math.floor(a/10 + a%10) : a;
  }
  for (i=0; i<k+m; i++) { c += w.charAt(i*2+1-m) * 1; }
  return (c%10 == 0);
}

function toggle_cc(value, display) {
	if (display == 'none') { 
		if (value == 'cc') {new Effect.SlideDown('card_info');}
	} else {
		if (value != 'cc') {
			new Effect.SlideUp('card_info');
			$('order_cc_number').value = '';
			$('order_cc_expiration_1i').value = '';
			$('order_cc_expiration_2i').value = '';
			$('order_cc_expiration_3i').value = '';
		}
	} 
}

function toggle_address(value, display) {
	if (display == 'none') { 
		if (value == 'delivery') {
		  new Effect.SlideDown('address_info');
		  new Effect.SlideDown('mini_map_wrapper');
		}
	} else {
		if (value == 'pickup') {
			new Effect.SlideUp('address_info');
			new Effect.SlideUp('mini_map_wrapper');
		}
	}
}

function populate_billing_address(checked) {
	if (checked == true) {
		$('order_billing_street').value = $('order_street').value;
		$('order_billing_city').value = $('order_city').value;
		$('order_billing_state').value = $('order_state').value;
		$('order_billing_zip').value = $('order_zip').value;
		
	} else {
		$('order_billing_street').value = "";
		$('order_billing_city').value = ""; 
		$('order_billing_state').value = ""; 
		$('order_billing_zip').value = ""; 
	}
	
}

function validate_form(field, value) {
  valid = false;
  if (value != "") {
    alert("valid");
  } else {
    alert("invalid");
    $('field').className = 'invalid';
  }
}
