function focusElement(formName, elemName) {
  var elem = document.forms[formName].elements[elemName];
  elem.focus();
  elem.select();
}

function isEmpty(elem) {
  var str = elem.value;
  var re = /./;
  if(!str.match(re)) {
	focusElement(elem.form.name, elem.name);
	return true;
  } else {
	return false;
  }
}

function isNotEmpty(elem) {
  return !isEmpty(elem);
}

function isNumber(elem) {
  var str = elem.value;
  var re = /^[-]?\d*\.?\d*$/;
  str = str.toString();
  if (!str.match(re)) {
	focusElement(elem.form.name, elem.name);
	return false;
  }
  return true;
}

function isValidUsername(elem) {
  var str = elem.value;
//  var re = /^[.0-9a-zA-Z_-]+$/;
//  var re = /^[a-z][0-9a-z]+$/;	2007.11.07 maeda
  var re = /^[a-z][.0-9a-z_-]+$/;
  if (!str.match(re)) {
	focusElement(elem.form.name, elem.name);
	return false;
  } else {
	return true;
  }
}

function isValidEmail(elem) {
  var str = elem.value;
  var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
  if (!str.match(re)) {
	focusElement(elem.form.name, elem.name);
	return false;
  } else {
	return true;
  }
}

function isValidPassword(elem) {
  var str = elem.value;
//  var re = /^[0-9a-zA-Z]{6,}$/;	2007.11.07 maeda
  var re = /^[0-9a-zA-Z_-]{6,}$/;
  if (!str.match(re)) {
	focusElement(elem.form.name, elem.name);
	return false;
  } else {
	return true;
  }
}

function focusNext(form, elemName, evt) {
  evt = evt ? evt : event;
  var charCode = evt.charCode ? evt.charCode : ( evt.which ? evt.which : evt.keyCode );
  if ((charCode == 13) || (charCode == 3)) {
        elem = new Object();
        elem = form.elements[elemName];
	elem.focus();
	return true;
  }
  return true;
}

function isValidPayment(payment, card_type, card_number, card_name, expiration_date) {
  if (payment.value == "Other") {
     return true;
  }

  if (card_type.value=="" || isEmpty (card_type) || isEmpty (card_number) || isEmpty (expiration_date)) {
	focusElement(card_number.form.name, card_number.name);
	return false;
  }
  if (!isNumber(card_number)) {
	focusElement(card_number.form.name, card_number.name);
	return false;
  }
  return true;
}

